From f1216076d7cb6a383682f423c9b5c14e152e484b Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Thu, 7 Sep 2017 00:51:59 -0600 Subject: [PATCH 001/182] Begin librfu decompilation --- asm/crt0.s | 2 +- asm/librfu.s | 454 ++++++------------------------------------- include/gba/io_reg.h | 6 + include/gba/macro.h | 10 + ld_script.txt | 1 + src/librfu.c | 217 +++++++++++++++++++++ sym_common.txt | 2 +- 7 files changed, 292 insertions(+), 400 deletions(-) create mode 100644 src/librfu.c diff --git a/asm/crt0.s b/asm/crt0.s index 14675fe4c3..3a3034a37a 100644 --- a/asm/crt0.s +++ b/asm/crt0.s @@ -115,7 +115,7 @@ IntrMain: @ 8000248 IntrMain_FoundIntr: strh r0, [r3, OFFSET_REG_IF - 0x200] bic r2, r2, r0 - ldr r0, =gUnknown_03007868 + ldr r0, =gRfuState ldr r0, [r0] ldrb r0, [r0, 0xA] mov r1, 0x8 diff --git a/asm/librfu.s b/asm/librfu.s index d8ca7538c2..2f0359f376 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,348 +4,6 @@ .text - thumb_func_start STWI_init_all -STWI_init_all: @ 82E2A18 - push {r4,lr} - adds r3, r0, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0x1 - bne _082E2A54 - adds r2, r3, 0 - adds r2, 0xE8 - str r2, [r1] - ldr r1, _082E2A40 - ldr r0, _082E2A44 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _082E2A48 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _082E2A4C - ldr r2, _082E2A50 - adds r0, r3, r2 - b _082E2A5E - .align 2, 0 -_082E2A40: .4byte 0x040000d4 -_082E2A44: .4byte IntrSIO32 -_082E2A48: .4byte 0x800004b0 -_082E2A4C: .4byte gUnknown_03007868 -_082E2A50: .4byte 0x00000a48 -_082E2A54: - ldr r0, _082E2AD8 - str r0, [r1] - ldr r1, _082E2ADC - adds r0, r3, 0 - adds r0, 0xE8 -_082E2A5E: - str r0, [r1] - adds r2, r1, 0 - ldr r1, [r2] - str r3, [r1, 0x28] - adds r0, r3, 0 - adds r0, 0x74 - str r0, [r1, 0x24] - ldrb r0, [r1, 0x14] - movs r4, 0 - movs r0, 0x1 - strb r0, [r1, 0x14] - ldr r0, [r2] - str r4, [r0] - strb r4, [r0, 0x4] - ldr r0, [r2] - strb r4, [r0, 0x5] - ldr r0, [r2] - strb r4, [r0, 0x7] - ldr r0, [r2] - strb r4, [r0, 0x8] - ldr r0, [r2] - strb r4, [r0, 0x9] - ldr r0, [r2] - str r4, [r0, 0xC] - ldrb r1, [r0, 0x10] - strb r4, [r0, 0x10] - ldr r0, [r2] - ldrh r1, [r0, 0x12] - movs r1, 0 - strh r4, [r0, 0x12] - strb r1, [r0, 0x15] - ldr r0, [r2] - adds r0, 0x2C - ldrb r2, [r0] - strb r1, [r0] - ldr r1, _082E2AE0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - ldr r2, _082E2AE4 - adds r0, r2, 0 - strh r0, [r1] - bl STWI_init_Callback_M - bl STWI_init_Callback_S - ldr r3, _082E2AE8 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _082E2AEC - ldrh r0, [r4] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_082E2AD8: .4byte IntrSIO32 -_082E2ADC: .4byte gUnknown_03007868 -_082E2AE0: .4byte 0x04000134 -_082E2AE4: .4byte 0x00005003 -_082E2AE8: .4byte 0x04000208 -_082E2AEC: .4byte 0x04000200 - thumb_func_end STWI_init_all - - thumb_func_start STWI_init_timer -STWI_init_timer: @ 82E2AF0 - push {r4,r5,lr} - ldr r2, _082E2B1C - str r2, [r0] - ldr r5, _082E2B20 - ldr r0, [r5] - movs r4, 0 - strb r1, [r0, 0xA] - ldr r3, _082E2B24 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _082E2B28 - ldr r1, [r5] - movs r0, 0x8 - ldrb r1, [r1, 0xA] - lsls r0, r1 - ldrh r1, [r4] - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_082E2B1C: .4byte STWI_intr_timer -_082E2B20: .4byte gUnknown_03007868 -_082E2B24: .4byte 0x04000208 -_082E2B28: .4byte 0x04000200 - thumb_func_end STWI_init_timer - - thumb_func_start AgbRFU_SoftReset -AgbRFU_SoftReset: @ 82E2B2C - push {r4,r5,lr} - ldr r5, _082E2BC4 - movs r1, 0x80 - lsls r1, 8 - adds r0, r1, 0 - strh r0, [r5] - ldr r2, _082E2BC8 - adds r0, r2, 0 - strh r0, [r5] - ldr r1, _082E2BCC - ldr r0, [r1] - ldrb r0, [r0, 0xA] - lsls r0, 2 - ldr r3, _082E2BD0 - adds r2, r0, r3 - ldr r4, _082E2BD4 - adds r3, r0, r4 - movs r0, 0 - strh r0, [r3] - strh r0, [r2] - movs r0, 0x83 - strh r0, [r3] - ldrh r0, [r2] - adds r4, r1, 0 - cmp r0, 0x11 - bhi _082E2B6C - ldr r0, _082E2BD8 - adds r1, r0, 0 -_082E2B64: - strh r1, [r5] - ldrh r0, [r2] - cmp r0, 0x11 - bls _082E2B64 -_082E2B6C: - movs r0, 0x3 - strh r0, [r3] - ldr r1, _082E2BC4 - ldr r2, _082E2BC8 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - ldr r3, _082E2BDC - adds r0, r3, 0 - strh r0, [r1] - ldr r0, [r4] - movs r2, 0 - str r2, [r0] - strb r2, [r0, 0x4] - ldr r0, [r4] - strb r2, [r0, 0x5] - ldr r0, [r4] - strb r2, [r0, 0x6] - ldr r0, [r4] - strb r2, [r0, 0x7] - ldr r0, [r4] - strb r2, [r0, 0x8] - ldr r0, [r4] - strb r2, [r0, 0x9] - ldr r0, [r4] - str r2, [r0, 0xC] - ldrb r1, [r0, 0x10] - strb r2, [r0, 0x10] - ldr r1, [r4] - ldrh r0, [r1, 0x12] - movs r3, 0 - strh r2, [r1, 0x12] - ldrb r0, [r1, 0x14] - movs r0, 0x1 - strb r0, [r1, 0x14] - ldr r0, [r4] - strb r3, [r0, 0x15] - ldr r0, [r4] - adds r0, 0x2C - ldrb r1, [r0] - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_082E2BC4: .4byte 0x04000134 -_082E2BC8: .4byte 0x000080a0 -_082E2BCC: .4byte gUnknown_03007868 -_082E2BD0: .4byte 0x04000100 -_082E2BD4: .4byte 0x04000102 -_082E2BD8: .4byte 0x000080a2 -_082E2BDC: .4byte 0x00005003 - thumb_func_end AgbRFU_SoftReset - - thumb_func_start STWI_set_MS_mode -STWI_set_MS_mode: @ 82E2BE0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _082E2BF0 - ldr r1, [r1] - ldrb r2, [r1, 0x14] - strb r0, [r1, 0x14] - bx lr - .align 2, 0 -_082E2BF0: .4byte gUnknown_03007868 - thumb_func_end STWI_set_MS_mode - - thumb_func_start STWI_read_status -STWI_read_status: @ 82E2BF4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _082E2C20 - cmp r0, 0x1 - bgt _082E2C0A - cmp r0, 0 - beq _082E2C14 - b _082E2C48 -_082E2C0A: - cmp r1, 0x2 - beq _082E2C2C - cmp r1, 0x3 - beq _082E2C3C - b _082E2C48 -_082E2C14: - ldr r0, _082E2C1C - ldr r0, [r0] - ldrh r0, [r0, 0x12] - b _082E2C4A - .align 2, 0 -_082E2C1C: .4byte gUnknown_03007868 -_082E2C20: - ldr r0, _082E2C28 - ldr r0, [r0] - ldrb r0, [r0, 0x14] - b _082E2C4A - .align 2, 0 -_082E2C28: .4byte gUnknown_03007868 -_082E2C2C: - ldr r0, _082E2C38 - ldr r0, [r0] - ldr r0, [r0] - lsls r0, 16 - lsrs r0, 16 - b _082E2C4A - .align 2, 0 -_082E2C38: .4byte gUnknown_03007868 -_082E2C3C: - ldr r0, _082E2C44 - ldr r0, [r0] - ldrb r0, [r0, 0x6] - b _082E2C4A - .align 2, 0 -_082E2C44: .4byte gUnknown_03007868 -_082E2C48: - ldr r0, _082E2C50 -_082E2C4A: - pop {r1} - bx r1 - .align 2, 0 -_082E2C50: .4byte 0x0000ffff - thumb_func_end STWI_read_status - - thumb_func_start STWI_init_Callback_M -STWI_init_Callback_M: @ 82E2C54 - push {lr} - movs r0, 0 - bl STWI_set_Callback_M - pop {r0} - bx r0 - thumb_func_end STWI_init_Callback_M - - thumb_func_start STWI_init_Callback_S -STWI_init_Callback_S: @ 82E2C60 - push {lr} - movs r0, 0 - bl STWI_set_Callback_S - pop {r0} - bx r0 - thumb_func_end STWI_init_Callback_S - - thumb_func_start STWI_set_Callback_M -STWI_set_Callback_M: @ 82E2C6C - ldr r1, _082E2C74 - ldr r1, [r1] - str r0, [r1, 0x18] - bx lr - .align 2, 0 -_082E2C74: .4byte gUnknown_03007868 - thumb_func_end STWI_set_Callback_M - - thumb_func_start STWI_set_Callback_S -STWI_set_Callback_S: @ 82E2C78 - ldr r1, _082E2C80 - ldr r1, [r1] - str r0, [r1, 0x1C] - bx lr - .align 2, 0 -_082E2C80: .4byte gUnknown_03007868 - thumb_func_end STWI_set_Callback_S - - thumb_func_start STWI_set_Callback_ID -STWI_set_Callback_ID: @ 82E2C84 - ldr r1, _082E2C8C - ldr r1, [r1] - str r0, [r1, 0x20] - bx lr - .align 2, 0 -_082E2C8C: .4byte gUnknown_03007868 - thumb_func_end STWI_set_Callback_ID - thumb_func_start STWI_poll_CommandEnd STWI_poll_CommandEnd: @ 82E2C90 push {lr} @@ -368,7 +26,7 @@ _082E2CAA: pop {r1} bx r1 .align 2, 0 -_082E2CB4: .4byte gUnknown_03007868 +_082E2CB4: .4byte gRfuState thumb_func_end STWI_poll_CommandEnd thumb_func_start STWI_send_ResetREQ @@ -388,7 +46,7 @@ _082E2CD2: pop {r0} bx r0 .align 2, 0 -_082E2CD8: .4byte gUnknown_03007868 +_082E2CD8: .4byte gRfuState thumb_func_end STWI_send_ResetREQ thumb_func_start STWI_send_LinkStatusREQ @@ -408,7 +66,7 @@ _082E2CF6: pop {r0} bx r0 .align 2, 0 -_082E2CFC: .4byte gUnknown_03007868 +_082E2CFC: .4byte gRfuState thumb_func_end STWI_send_LinkStatusREQ thumb_func_start STWI_send_VersionStatusREQ @@ -428,7 +86,7 @@ _082E2D1A: pop {r0} bx r0 .align 2, 0 -_082E2D20: .4byte gUnknown_03007868 +_082E2D20: .4byte gRfuState thumb_func_end STWI_send_VersionStatusREQ thumb_func_start STWI_send_SystemStatusREQ @@ -448,7 +106,7 @@ _082E2D3E: pop {r0} bx r0 .align 2, 0 -_082E2D44: .4byte gUnknown_03007868 +_082E2D44: .4byte gRfuState thumb_func_end STWI_send_SystemStatusREQ thumb_func_start STWI_send_SlotStatusREQ @@ -468,7 +126,7 @@ _082E2D62: pop {r0} bx r0 .align 2, 0 -_082E2D68: .4byte gUnknown_03007868 +_082E2D68: .4byte gRfuState thumb_func_end STWI_send_SlotStatusREQ thumb_func_start STWI_send_ConfigStatusREQ @@ -488,7 +146,7 @@ _082E2D86: pop {r0} bx r0 .align 2, 0 -_082E2D8C: .4byte gUnknown_03007868 +_082E2D8C: .4byte gRfuState thumb_func_end STWI_send_ConfigStatusREQ thumb_func_start STWI_send_GameConfigREQ @@ -536,7 +194,7 @@ _082E2DDC: pop {r0} bx r0 .align 2, 0 -_082E2DE4: .4byte gUnknown_03007868 +_082E2DE4: .4byte gRfuState thumb_func_end STWI_send_GameConfigREQ thumb_func_start STWI_send_SystemConfigREQ @@ -571,7 +229,7 @@ _082E2E1E: pop {r0} bx r0 .align 2, 0 -_082E2E24: .4byte gUnknown_03007868 +_082E2E24: .4byte gRfuState thumb_func_end STWI_send_SystemConfigREQ thumb_func_start STWI_send_SC_StartREQ @@ -591,7 +249,7 @@ _082E2E42: pop {r0} bx r0 .align 2, 0 -_082E2E48: .4byte gUnknown_03007868 +_082E2E48: .4byte gRfuState thumb_func_end STWI_send_SC_StartREQ thumb_func_start STWI_send_SC_PollingREQ @@ -611,7 +269,7 @@ _082E2E66: pop {r0} bx r0 .align 2, 0 -_082E2E6C: .4byte gUnknown_03007868 +_082E2E6C: .4byte gRfuState thumb_func_end STWI_send_SC_PollingREQ thumb_func_start STWI_send_SC_EndREQ @@ -631,7 +289,7 @@ _082E2E8A: pop {r0} bx r0 .align 2, 0 -_082E2E90: .4byte gUnknown_03007868 +_082E2E90: .4byte gRfuState thumb_func_end STWI_send_SC_EndREQ thumb_func_start STWI_send_SP_StartREQ @@ -651,7 +309,7 @@ _082E2EAE: pop {r0} bx r0 .align 2, 0 -_082E2EB4: .4byte gUnknown_03007868 +_082E2EB4: .4byte gRfuState thumb_func_end STWI_send_SP_StartREQ thumb_func_start STWI_send_SP_PollingREQ @@ -671,7 +329,7 @@ _082E2ED2: pop {r0} bx r0 .align 2, 0 -_082E2ED8: .4byte gUnknown_03007868 +_082E2ED8: .4byte gRfuState thumb_func_end STWI_send_SP_PollingREQ thumb_func_start STWI_send_SP_EndREQ @@ -691,7 +349,7 @@ _082E2EF6: pop {r0} bx r0 .align 2, 0 -_082E2EFC: .4byte gUnknown_03007868 +_082E2EFC: .4byte gRfuState thumb_func_end STWI_send_SP_EndREQ thumb_func_start STWI_send_CP_StartREQ @@ -717,7 +375,7 @@ _082E2F24: pop {r0} bx r0 .align 2, 0 -_082E2F2C: .4byte gUnknown_03007868 +_082E2F2C: .4byte gRfuState thumb_func_end STWI_send_CP_StartREQ thumb_func_start STWI_send_CP_PollingREQ @@ -737,7 +395,7 @@ _082E2F4A: pop {r0} bx r0 .align 2, 0 -_082E2F50: .4byte gUnknown_03007868 +_082E2F50: .4byte gRfuState thumb_func_end STWI_send_CP_PollingREQ thumb_func_start STWI_send_CP_EndREQ @@ -757,7 +415,7 @@ _082E2F6E: pop {r0} bx r0 .align 2, 0 -_082E2F74: .4byte gUnknown_03007868 +_082E2F74: .4byte gRfuState thumb_func_end STWI_send_CP_EndREQ thumb_func_start STWI_send_DataTxREQ @@ -796,7 +454,7 @@ _082E2FB6: pop {r0} bx r0 .align 2, 0 -_082E2FBC: .4byte gUnknown_03007868 +_082E2FBC: .4byte gRfuState thumb_func_end STWI_send_DataTxREQ thumb_func_start STWI_send_DataTxAndChangeREQ @@ -835,7 +493,7 @@ _082E2FFE: pop {r0} bx r0 .align 2, 0 -_082E3004: .4byte gUnknown_03007868 +_082E3004: .4byte gRfuState thumb_func_end STWI_send_DataTxAndChangeREQ thumb_func_start STWI_send_DataRxREQ @@ -855,7 +513,7 @@ _082E3022: pop {r0} bx r0 .align 2, 0 -_082E3028: .4byte gUnknown_03007868 +_082E3028: .4byte gRfuState thumb_func_end STWI_send_DataRxREQ thumb_func_start STWI_send_MS_ChangeREQ @@ -875,7 +533,7 @@ _082E3046: pop {r0} bx r0 .align 2, 0 -_082E304C: .4byte gUnknown_03007868 +_082E304C: .4byte gRfuState thumb_func_end STWI_send_MS_ChangeREQ thumb_func_start STWI_send_DataReadyAndChangeREQ @@ -897,7 +555,7 @@ STWI_send_DataReadyAndChangeREQ: @ 82E3050 strb r3, [r0, 0x4] b _082E3092 .align 2, 0 -_082E3074: .4byte gUnknown_03007868 +_082E3074: .4byte gRfuState _082E3078: ldr r2, _082E309C ldr r1, [r2] @@ -919,7 +577,7 @@ _082E3096: pop {r0} bx r0 .align 2, 0 -_082E309C: .4byte gUnknown_03007868 +_082E309C: .4byte gRfuState thumb_func_end STWI_send_DataReadyAndChangeREQ thumb_func_start STWI_send_DisconnectedAndChangeREQ @@ -954,7 +612,7 @@ _082E30D6: pop {r0} bx r0 .align 2, 0 -_082E30DC: .4byte gUnknown_03007868 +_082E30DC: .4byte gRfuState thumb_func_end STWI_send_DisconnectedAndChangeREQ thumb_func_start STWI_send_ResumeRetransmitAndChangeREQ @@ -974,7 +632,7 @@ _082E30FA: pop {r0} bx r0 .align 2, 0 -_082E3100: .4byte gUnknown_03007868 +_082E3100: .4byte gRfuState thumb_func_end STWI_send_ResumeRetransmitAndChangeREQ thumb_func_start STWI_send_DisconnectREQ @@ -1000,7 +658,7 @@ _082E3128: pop {r0} bx r0 .align 2, 0 -_082E3130: .4byte gUnknown_03007868 +_082E3130: .4byte gRfuState thumb_func_end STWI_send_DisconnectREQ thumb_func_start STWI_send_TestModeREQ @@ -1030,7 +688,7 @@ _082E3160: pop {r0} bx r0 .align 2, 0 -_082E3168: .4byte gUnknown_03007868 +_082E3168: .4byte gRfuState thumb_func_end STWI_send_TestModeREQ thumb_func_start STWI_send_CPR_StartREQ @@ -1063,7 +721,7 @@ _082E319E: pop {r0} bx r0 .align 2, 0 -_082E31A4: .4byte gUnknown_03007868 +_082E31A4: .4byte gRfuState thumb_func_end STWI_send_CPR_StartREQ thumb_func_start STWI_send_CPR_PollingREQ @@ -1083,7 +741,7 @@ _082E31C2: pop {r0} bx r0 .align 2, 0 -_082E31C8: .4byte gUnknown_03007868 +_082E31C8: .4byte gRfuState thumb_func_end STWI_send_CPR_PollingREQ thumb_func_start STWI_send_CPR_EndREQ @@ -1103,7 +761,7 @@ _082E31E6: pop {r0} bx r0 .align 2, 0 -_082E31EC: .4byte gUnknown_03007868 +_082E31EC: .4byte gRfuState thumb_func_end STWI_send_CPR_EndREQ thumb_func_start STWI_send_StopModeREQ @@ -1123,7 +781,7 @@ _082E320A: pop {r0} bx r0 .align 2, 0 -_082E3210: .4byte gUnknown_03007868 +_082E3210: .4byte gRfuState thumb_func_end STWI_send_StopModeREQ thumb_func_start STWI_intr_timer @@ -1140,7 +798,7 @@ STWI_intr_timer: @ 82E3214 beq _082E3248 b _082E3270 .align 2, 0 -_082E322C: .4byte gUnknown_03007868 +_082E322C: .4byte gRfuState _082E3230: cmp r0, 0x3 beq _082E3252 @@ -1203,7 +861,7 @@ STWI_set_timer: @ 82E3278 beq _082E32BE b _082E32FC .align 2, 0 -_082E32A8: .4byte gUnknown_03007868 +_082E32A8: .4byte gRfuState _082E32AC: .4byte 0x04000100 _082E32B0: .4byte 0x04000208 _082E32B4: @@ -1287,7 +945,7 @@ STWI_stop_timer: @ 82E3324 strh r1, [r0] bx lr .align 2, 0 -_082E3344: .4byte gUnknown_03007868 +_082E3344: .4byte gRfuState _082E3348: .4byte 0x04000100 _082E334C: .4byte 0x04000102 thumb_func_end STWI_stop_timer @@ -1316,7 +974,7 @@ STWI_init: @ 82E3350 b _082E33CE .align 2, 0 _082E337C: .4byte 0x04000208 -_082E3380: .4byte gUnknown_03007868 +_082E3380: .4byte gRfuState _082E3384: ldr r4, _082E33B0 ldr r2, [r4] @@ -1340,7 +998,7 @@ _082E3384: bl _call_via_r2 b _082E33CE .align 2, 0 -_082E33B0: .4byte gUnknown_03007868 +_082E33B0: .4byte gRfuState _082E33B4: ldrb r0, [r2, 0x14] cmp r0, 0 @@ -1450,7 +1108,7 @@ STWI_start_Command: @ 82E3428 pop {r1} bx r1 .align 2, 0 -_082E3480: .4byte gUnknown_03007868 +_082E3480: .4byte gRfuState _082E3484: .4byte 0x99660000 _082E3488: .4byte 0x04000120 _082E348C: .4byte 0x04000208 @@ -1473,7 +1131,7 @@ STWI_restart_Command: @ 82E349C bl STWI_start_Command b _082E3512 .align 2, 0 -_082E34B4: .4byte gUnknown_03007868 +_082E34B4: .4byte gRfuState _082E34B8: ldrb r0, [r2, 0x6] cmp r0, 0x27 @@ -1553,7 +1211,7 @@ STWI_reset_ClockCounter: @ 82E351C movs r0, 0 bx lr .align 2, 0 -_082E3548: .4byte gUnknown_03007868 +_082E3548: .4byte gRfuState _082E354C: .4byte 0x04000120 _082E3550: .4byte 0x00005003 thumb_func_end STWI_reset_ClockCounter @@ -1587,7 +1245,7 @@ _082E35A8: ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E35B4: .4byte gUnknown_03007868 +_082E35B4: .4byte gRfuState arm_func_end IntrSIO32 arm_func_start sio32intr_clock_master @@ -1761,7 +1419,7 @@ _082E3800: bl sub_82E3EA8 b _082E3840 .align 2, 0 -_082E382C: .4byte gUnknown_03007868 +_082E382C: .4byte gRfuState _082E3830: add r3, r5, 0x3 strh r3, [r4] @@ -2026,7 +1684,7 @@ _082E3BE4: bhi _082E3BE4 b _082E3C20 .align 2, 0 -_082E3BF4: .4byte gUnknown_03007868 +_082E3BF4: .4byte gRfuState _082E3BF8: .4byte 0x996601ee _082E3BFC: mov r2, 0xFF00 @@ -2086,7 +1744,7 @@ _082E3CA4: ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E3CB8: .4byte gUnknown_03007868 +_082E3CB8: .4byte gRfuState arm_func_end handshake_wait arm_func_start STWI_set_timer_in_RAM @@ -2142,7 +1800,7 @@ _082E3D5C: mov r3, 0x3 b _082E3D8C .align 2, 0 -_082E3D74: .4byte gUnknown_03007868 +_082E3D74: .4byte gRfuState _082E3D78: mvn r3, 0x850 sub r3, r3, 0x2 @@ -2191,7 +1849,7 @@ STWI_stop_timer_in_RAM: @ 82E3DCC ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E3E18: .4byte gUnknown_03007868 +_082E3E18: .4byte gRfuState arm_func_end STWI_stop_timer_in_RAM arm_func_start STWI_init_slave @@ -2231,7 +1889,7 @@ STWI_init_slave: @ 82E3E1C ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E3EA4: .4byte gUnknown_03007868 +_082E3EA4: .4byte gRfuState arm_func_end STWI_init_slave arm_func_start sub_82E3EA8 @@ -2838,7 +2496,7 @@ rfu_REQ_stopMode: @ 82E42C4 b _082E4362 .align 2, 0 _082E42E4: .4byte 0x04000208 -_082E42E8: .4byte gUnknown_03007868 +_082E42E8: .4byte gRfuState _082E42EC: bl AgbRFU_SoftReset bl rfu_STC_clearAPIVariables @@ -2878,7 +2536,7 @@ _082E432A: b _082E4362 .align 2, 0 _082E433C: .4byte 0x00008001 -_082E4340: .4byte gUnknown_03007868 +_082E4340: .4byte gRfuState _082E4344: .4byte 0x04000100 _082E4348: .4byte 0x0105ffff _082E434C: .4byte rfu_CB_stopMode @@ -3156,7 +2814,7 @@ rfu_CB_configGameData: @ 82E4500 movs r0, 0x1 b _082E4552 .align 2, 0 -_082E4544: .4byte gUnknown_03007868 +_082E4544: .4byte gRfuState _082E4548: .4byte gUnknown_03007890 _082E454C: adds r1, r6, 0 @@ -4225,7 +3883,7 @@ _082E4D18: b _082E4D88 .align 2, 0 _082E4D20: .4byte gUnknown_03007890 -_082E4D24: .4byte gUnknown_03007868 +_082E4D24: .4byte gRfuState _082E4D28: .4byte gUnknown_03007894 _082E4D2C: .4byte gUnknown_03007898 _082E4D30: @@ -5195,7 +4853,7 @@ _082E547E: pop {r1} bx r1 .align 2, 0 -_082E5484: .4byte gUnknown_03007868 +_082E5484: .4byte gRfuState thumb_func_end rfu_getMasterSlave thumb_func_start rfu_clearAllSlot @@ -6506,7 +6164,7 @@ _082E5E12: _082E5E34: .4byte gUnknown_03007898 _082E5E38: .4byte gUnknown_03007894 _082E5E3C: .4byte gUnknown_03007890 -_082E5E40: .4byte gUnknown_03007868 +_082E5E40: .4byte gRfuState _082E5E44: ldr r0, _082E5E54 bl STWI_set_Callback_M @@ -8564,7 +8222,7 @@ _082E6D88: b _082E6DD6 .align 2, 0 _082E6DB4: .4byte 0x04000200 -_082E6DB8: .4byte gUnknown_03007868 +_082E6DB8: .4byte gRfuState _082E6DBC: .4byte sub_82E6F88 _082E6DC0: .4byte 0x04000100 _082E6DC4: @@ -8612,7 +8270,7 @@ _082E6E08: .align 2, 0 _082E6E14: .4byte 0x04000208 _082E6E18: .4byte 0x04000200 -_082E6E1C: .4byte gUnknown_03007868 +_082E6E1C: .4byte gRfuState thumb_func_end sub_82E6D6C thumb_func_start sub_82E6E20 @@ -8663,7 +8321,7 @@ sub_82E6E20: @ 82E6E20 .align 2, 0 _082E6E78: .4byte 0x04000208 _082E6E7C: .4byte 0x04000200 -_082E6E80: .4byte gUnknown_03007868 +_082E6E80: .4byte gRfuState _082E6E84: .4byte 0x04000134 _082E6E88: .4byte gUnknown_030078A0 _082E6E8C: .4byte 0x05000003 diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 5234e5b6c2..2b21086e3f 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -137,6 +137,8 @@ #define REG_OFFSET_DMA3CNT_H 0xde #define REG_OFFSET_TMCNT 0x100 +#define REG_OFFSET_TMCNT_L 0x100 +#define REG_OFFSET_TMCNT_H 0x102 #define REG_OFFSET_TM0CNT 0x100 #define REG_OFFSET_TM0CNT_L 0x100 #define REG_OFFSET_TM0CNT_H 0x102 @@ -298,6 +300,8 @@ #define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H) #define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT) +#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L) +#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H) #define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT) #define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L) #define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H) @@ -458,6 +462,8 @@ #define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H) #define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4))) +#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4))) +#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4))) #define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT) #define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L) #define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H) diff --git a/include/gba/macro.h b/include/gba/macro.h index 0217898e84..7b6b98c067 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -86,4 +86,14 @@ dmaRegs[5]; \ } +#define IntrEnable(flags) \ +{ \ + u16 imeTemp; \ + \ + imeTemp = REG_IME; \ + REG_IME = 0; \ + REG_IE |= flags; \ + REG_IME = imeTemp; \ +} \ + #endif // GUARD_GBA_MACRO_H diff --git a/ld_script.txt b/ld_script.txt index d0ae744d1e..301f199f9b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -244,6 +244,7 @@ SECTIONS { src/agb_flash_1m.o(.text); src/agb_flash_mx.o(.text); src/siirtc.o(.text); + src/librfu.o(.text); asm/librfu.o(.text); asm/libagbsyscall.o(.text); tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); diff --git a/src/librfu.c b/src/librfu.c new file mode 100644 index 0000000000..2cf5d6dad2 --- /dev/null +++ b/src/librfu.c @@ -0,0 +1,217 @@ +#include "global.h" + +#include "main.h" + +typedef struct RfuStruct +{ + s32 unk_0; + u8 unk_4; + u8 unk_5; + u8 unk_6; + u8 unk_7; + u8 unk_8; + u8 unk_9; + u8 timerSelect; + u8 unk_b; + u32 unk_c; + vu8 unk_10; + u8 unk_11; + vu16 unk_12; + vu8 msMode; + u8 unk_15; + u8 unk_16; + u8 unk_17; + void * callbackM; + void * callbackS; + u32 callbackID; + void * unk_24; + void * unk_28; + vu8 unk_2c; + u8 padding[3]; +} RfuStruct; + +typedef struct RfuIntrStruct +{ + u8 unk28Data[0x74]; + u8 unk24Data[0x74]; + u8 block1[0x960]; + u8 block2[0x30]; +} RfuIntrStruct; + +typedef struct RfuState +{ + RfuStruct *rfuStruct; +} RfuState; + +extern IntrFunc IntrSIO32(); +extern struct RfuState gRfuState; +void STWI_init_Callback_M(); +void STWI_init_Callback_S(); +void STWI_set_Callback_M(void * callback); +void STWI_set_Callback_S(void * callback); +extern void STWI_intr_timer(); + +void STWI_init_all(RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) +{ + struct RfuStruct *rfuStructTemp; + struct RfuStruct **rfuStructPtr; + u16 ime_temp; + int ret; + + // If we're copying our interrupt into RAM, DMA it to block1 and use + // block2 for our RfuStruct, otherwise block1 holds the RfuStruct. + // interrupt usually is a pointer to gIntrTable[1] + if (copyInterruptToRam == TRUE) + { + *interrupt = (IntrFunc)(&interruptStruct->block1); + DmaCopy16(3, &IntrSIO32, (void*)(&interruptStruct->block1), 0x960); + + gRfuState.rfuStruct = (struct RfuStruct*)(&interruptStruct->block2); + } + else + { + *interrupt = (IntrFunc)&IntrSIO32; + gRfuState.rfuStruct = (struct RfuStruct*)(&interruptStruct->block1); + } + + rfuStructPtr = (struct RfuStruct**)&gRfuState.rfuStruct; + (*rfuStructPtr)->unk_28 = (void*)&interruptStruct->unk28Data; + (*rfuStructPtr)->unk_24 = (void*)(&interruptStruct->unk24Data); + (*rfuStructPtr)->msMode = 1; + + (*rfuStructPtr)->unk_0 = 0; + (*rfuStructPtr)->unk_4 = 0; + (*rfuStructPtr)->unk_5 = 0; + (*rfuStructPtr)->unk_7 = 0; + (*rfuStructPtr)->unk_8 = 0; + (*rfuStructPtr)->unk_9 = 0; + (*rfuStructPtr)->unk_c = 0; + (*rfuStructPtr)->unk_10 = 0; + + // Don't @ me + rfuStructTemp = *rfuStructPtr; + rfuStructTemp->unk_12 = 0; + rfuStructTemp->unk_15 = 0; + + (*rfuStructPtr)->unk_2c = 0; + + REG_RCNT = 0x100; //TODO: mystery bit? + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; + STWI_init_Callback_M(); + STWI_init_Callback_S(); + + IntrEnable(INTR_FLAG_SERIAL); +} + +void STWI_init_timer(IntrFunc *interrupt, int timerSelect) +{ + *interrupt = &STWI_intr_timer; + gRfuState.rfuStruct->timerSelect = timerSelect; + + IntrEnable(INTR_FLAG_TIMER0 << gRfuState.rfuStruct->timerSelect); +} + +void AgbRFU_SoftReset() +{ + struct RfuStruct **rfuStructPtr; + struct RfuStruct *rfuStructTemp; + + REG_RCNT = 0x8000; + REG_RCNT = 0x80A0; // all these bits are undocumented + + { + vu16 *timerL = ®_TMCNT_L(gRfuState.rfuStruct->timerSelect); + vu16 *timerH = ®_TMCNT_H(gRfuState.rfuStruct->timerSelect); + + *timerH = 0; + *timerL = 0; + *timerH = 0x83; + + while (*timerL <= 0x11) + { + REG_RCNT = 0x80A2; + } + + *timerH = 3; + } + REG_RCNT = 0x80A0; + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; + + rfuStructPtr = (struct RfuStruct**)&gRfuState.rfuStruct; + + (*rfuStructPtr)->unk_0 = 0; + (*rfuStructPtr)->unk_4 = 0; + (*rfuStructPtr)->unk_5 = 0; + (*rfuStructPtr)->unk_6 = 0; + (*rfuStructPtr)->unk_7 = 0; + (*rfuStructPtr)->unk_8 = 0; + (*rfuStructPtr)->unk_9 = 0; + (*rfuStructPtr)->unk_c = 0; + (*rfuStructPtr)->unk_10 = 0; + + // Yeah this is the second time, there's probably something in the struct that I'm missing + rfuStructTemp = *rfuStructPtr; + rfuStructTemp->unk_12 = 0; + rfuStructTemp->msMode = 1; + (*rfuStructPtr)->unk_15 = 0; + + (*rfuStructPtr)->unk_2c = 0; +} + +void STWI_set_MS_mode(u8 mode) +{ + gRfuState.rfuStruct->msMode = mode; +} + +u32 STWI_read_status(u8 index) +{ + int result; + switch(index) + { + case 0: + return gRfuState.rfuStruct->unk_12; + case 1: + return gRfuState.rfuStruct->msMode; + case 2: + // something got inlined here? + //TODO: figure this one out + result = (gRfuState.rfuStruct->unk_0); + __asm__("lsl r0, r0, #16"); + __asm__("lsr r0, r0, #16"); + break; + + case 3: + return gRfuState.rfuStruct->unk_6; + break; + default: + return 0xFFFF; + break; + } + return result; +} + +void STWI_init_Callback_M() +{ + STWI_set_Callback_M(0); +} + +void STWI_init_Callback_S() +{ + STWI_set_Callback_S(0); +} + +void STWI_set_Callback_M(void * callback) +{ + gRfuState.rfuStruct->callbackM = callback; +} + +void STWI_set_Callback_S(void * callback) +{ + gRfuState.rfuStruct->callbackS = callback; +} + +void STWI_set_Callback_ID(u32 id) +{ + gRfuState.rfuStruct->callbackID = id; +} + diff --git a/sym_common.txt b/sym_common.txt index dbf6c17a86..233466e1c7 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -448,7 +448,7 @@ gUnknown_03006370: @ 3006370 .include "agb_flash.o" -gUnknown_03007868: @ 3007868 +gRfuState: @ 3007868 .space 0x8 gUnknown_03007870: @ 3007870 From b420fb39624e10b364e17b593b1bf0d6e347a3ae Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Thu, 7 Sep 2017 03:59:39 -0600 Subject: [PATCH 002/182] Decompiled librfu to STWI_send_CP_EndREQ --- asm/librfu.s | 414 --------------------------------------------------- src/librfu.c | 230 +++++++++++++++++++++++++++- 2 files changed, 228 insertions(+), 416 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index 2f0359f376..28c00f01f5 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,420 +4,6 @@ .text - thumb_func_start STWI_poll_CommandEnd -STWI_poll_CommandEnd: @ 82E2C90 - push {lr} - ldr r0, _082E2CB4 - ldr r1, [r0] - adds r2, r1, 0 - adds r2, 0x2C - ldrb r1, [r2] - adds r3, r0, 0 - cmp r1, 0x1 - bne _082E2CAA - adds r1, r2, 0 -_082E2CA4: - ldrb r0, [r1] - cmp r0, 0x1 - beq _082E2CA4 -_082E2CAA: - ldr r0, [r3] - ldrh r0, [r0, 0x12] - pop {r1} - bx r1 - .align 2, 0 -_082E2CB4: .4byte gRfuState - thumb_func_end STWI_poll_CommandEnd - - thumb_func_start STWI_send_ResetREQ -STWI_send_ResetREQ: @ 82E2CB8 - push {lr} - movs r0, 0x10 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2CD2 - ldr r0, _082E2CD8 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2CD2: - pop {r0} - bx r0 - .align 2, 0 -_082E2CD8: .4byte gRfuState - thumb_func_end STWI_send_ResetREQ - - thumb_func_start STWI_send_LinkStatusREQ -STWI_send_LinkStatusREQ: @ 82E2CDC - push {lr} - movs r0, 0x11 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2CF6 - ldr r0, _082E2CFC - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2CF6: - pop {r0} - bx r0 - .align 2, 0 -_082E2CFC: .4byte gRfuState - thumb_func_end STWI_send_LinkStatusREQ - - thumb_func_start STWI_send_VersionStatusREQ -STWI_send_VersionStatusREQ: @ 82E2D00 - push {lr} - movs r0, 0x12 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2D1A - ldr r0, _082E2D20 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2D1A: - pop {r0} - bx r0 - .align 2, 0 -_082E2D20: .4byte gRfuState - thumb_func_end STWI_send_VersionStatusREQ - - thumb_func_start STWI_send_SystemStatusREQ -STWI_send_SystemStatusREQ: @ 82E2D24 - push {lr} - movs r0, 0x13 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2D3E - ldr r0, _082E2D44 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2D3E: - pop {r0} - bx r0 - .align 2, 0 -_082E2D44: .4byte gRfuState - thumb_func_end STWI_send_SystemStatusREQ - - thumb_func_start STWI_send_SlotStatusREQ -STWI_send_SlotStatusREQ: @ 82E2D48 - push {lr} - movs r0, 0x14 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2D62 - ldr r0, _082E2D68 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2D62: - pop {r0} - bx r0 - .align 2, 0 -_082E2D68: .4byte gRfuState - thumb_func_end STWI_send_SlotStatusREQ - - thumb_func_start STWI_send_ConfigStatusREQ -STWI_send_ConfigStatusREQ: @ 82E2D6C - push {lr} - movs r0, 0x15 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2D86 - ldr r0, _082E2D8C - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2D86: - pop {r0} - bx r0 - .align 2, 0 -_082E2D8C: .4byte gRfuState - thumb_func_end STWI_send_ConfigStatusREQ - - thumb_func_start STWI_send_GameConfigREQ -STWI_send_GameConfigREQ: @ 82E2D90 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x16 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E2DDC - ldr r2, _082E2DE4 - ldr r1, [r2] - movs r0, 0x6 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r1, [r0, 0x24] - adds r1, 0x4 - ldrh r0, [r4] - strh r0, [r1] - adds r1, 0x2 - adds r4, 0x2 - movs r2, 0xD -_082E2DBA: - ldrb r0, [r4] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _082E2DBA - movs r2, 0x7 -_082E2DCA: - ldrb r0, [r5] - strb r0, [r1] - adds r1, 0x1 - adds r5, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _082E2DCA - bl STWI_start_Command -_082E2DDC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_082E2DE4: .4byte gRfuState - thumb_func_end STWI_send_GameConfigREQ - - thumb_func_start STWI_send_SystemConfigREQ -STWI_send_SystemConfigREQ: @ 82E2DE8 - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r0, 0x17 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E2E1E - ldr r2, _082E2E24 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r0, [r0, 0x24] - adds r0, 0x4 - strb r4, [r0] - adds r0, 0x1 - strb r5, [r0] - adds r0, 0x1 - strh r6, [r0] - bl STWI_start_Command -_082E2E1E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_082E2E24: .4byte gRfuState - thumb_func_end STWI_send_SystemConfigREQ - - thumb_func_start STWI_send_SC_StartREQ -STWI_send_SC_StartREQ: @ 82E2E28 - push {lr} - movs r0, 0x19 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2E42 - ldr r0, _082E2E48 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2E42: - pop {r0} - bx r0 - .align 2, 0 -_082E2E48: .4byte gRfuState - thumb_func_end STWI_send_SC_StartREQ - - thumb_func_start STWI_send_SC_PollingREQ -STWI_send_SC_PollingREQ: @ 82E2E4C - push {lr} - movs r0, 0x1A - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2E66 - ldr r0, _082E2E6C - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2E66: - pop {r0} - bx r0 - .align 2, 0 -_082E2E6C: .4byte gRfuState - thumb_func_end STWI_send_SC_PollingREQ - - thumb_func_start STWI_send_SC_EndREQ -STWI_send_SC_EndREQ: @ 82E2E70 - push {lr} - movs r0, 0x1B - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2E8A - ldr r0, _082E2E90 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2E8A: - pop {r0} - bx r0 - .align 2, 0 -_082E2E90: .4byte gRfuState - thumb_func_end STWI_send_SC_EndREQ - - thumb_func_start STWI_send_SP_StartREQ -STWI_send_SP_StartREQ: @ 82E2E94 - push {lr} - movs r0, 0x1C - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2EAE - ldr r0, _082E2EB4 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2EAE: - pop {r0} - bx r0 - .align 2, 0 -_082E2EB4: .4byte gRfuState - thumb_func_end STWI_send_SP_StartREQ - - thumb_func_start STWI_send_SP_PollingREQ -STWI_send_SP_PollingREQ: @ 82E2EB8 - push {lr} - movs r0, 0x1D - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2ED2 - ldr r0, _082E2ED8 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2ED2: - pop {r0} - bx r0 - .align 2, 0 -_082E2ED8: .4byte gRfuState - thumb_func_end STWI_send_SP_PollingREQ - - thumb_func_start STWI_send_SP_EndREQ -STWI_send_SP_EndREQ: @ 82E2EDC - push {lr} - movs r0, 0x1E - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2EF6 - ldr r0, _082E2EFC - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2EF6: - pop {r0} - bx r0 - .align 2, 0 -_082E2EFC: .4byte gRfuState - thumb_func_end STWI_send_SP_EndREQ - - thumb_func_start STWI_send_CP_StartREQ -STWI_send_CP_StartREQ: @ 82E2F00 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x1F - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E2F24 - ldr r2, _082E2F2C - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r0, [r0, 0x24] - str r4, [r0, 0x4] - bl STWI_start_Command -_082E2F24: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_082E2F2C: .4byte gRfuState - thumb_func_end STWI_send_CP_StartREQ - - thumb_func_start STWI_send_CP_PollingREQ -STWI_send_CP_PollingREQ: @ 82E2F30 - push {lr} - movs r0, 0x20 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2F4A - ldr r0, _082E2F50 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2F4A: - pop {r0} - bx r0 - .align 2, 0 -_082E2F50: .4byte gRfuState - thumb_func_end STWI_send_CP_PollingREQ - - thumb_func_start STWI_send_CP_EndREQ -STWI_send_CP_EndREQ: @ 82E2F54 - push {lr} - movs r0, 0x21 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E2F6E - ldr r0, _082E2F74 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E2F6E: - pop {r0} - bx r0 - .align 2, 0 -_082E2F74: .4byte gRfuState - thumb_func_end STWI_send_CP_EndREQ - thumb_func_start STWI_send_DataTxREQ STWI_send_DataTxREQ: @ 82E2F78 push {r4-r6,lr} diff --git a/src/librfu.c b/src/librfu.c index 2cf5d6dad2..1b9846ece0 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -2,6 +2,28 @@ #include "main.h" +enum +{ + RFU_RESET = 0x10, + RFU_LINK_STATUS, + RFU_VERSION_STATUS, + RFU_SYSTEM_STATUS, + RFU_SLOT_STATUS, + RFU_CONFIG_STATUS, + RFU_GAME_CONFIG, + RFU_SYSTEM_CONFIG, + RFU_UNK18, + RFU_SC_START, + RFU_SC_POLLING, + RFU_SC_END, + RFU_SP_START, + RFU_SP_POLLING, + RFU_SP_END, + RFU_CP_START, + RFU_CP_POLLING, + RFU_CP_END +}; + typedef struct RfuStruct { s32 unk_0; @@ -24,7 +46,7 @@ typedef struct RfuStruct void * callbackM; void * callbackS; u32 callbackID; - void * unk_24; + u8 * unk_24; void * unk_28; vu8 unk_2c; u8 padding[3]; @@ -49,6 +71,8 @@ void STWI_init_Callback_M(); void STWI_init_Callback_S(); void STWI_set_Callback_M(void * callback); void STWI_set_Callback_S(void * callback); +u16 STWI_init(u8 request); +int STWI_start_Command(); extern void STWI_intr_timer(); void STWI_init_all(RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) @@ -76,7 +100,7 @@ void STWI_init_all(RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 co rfuStructPtr = (struct RfuStruct**)&gRfuState.rfuStruct; (*rfuStructPtr)->unk_28 = (void*)&interruptStruct->unk28Data; - (*rfuStructPtr)->unk_24 = (void*)(&interruptStruct->unk24Data); + (*rfuStructPtr)->unk_24 = (u8*)(&interruptStruct->unk24Data); (*rfuStructPtr)->msMode = 1; (*rfuStructPtr)->unk_0 = 0; @@ -215,3 +239,205 @@ void STWI_set_Callback_ID(u32 id) gRfuState.rfuStruct->callbackID = id; } +u16 STWI_poll_CommandEnd() +{ + while ( gRfuState.rfuStruct->unk_2c == TRUE ); + + return gRfuState.rfuStruct->unk_12; +} + +void STWI_send_ResetREQ() +{ + if (!STWI_init(RFU_RESET)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_LinkStatusREQ() +{ + if (!STWI_init(RFU_LINK_STATUS)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_VersionStatusREQ() +{ + if (!STWI_init(RFU_VERSION_STATUS)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SystemStatusREQ() +{ + if (!STWI_init(RFU_SYSTEM_STATUS)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SlotStatusREQ() +{ + if (!STWI_init(RFU_SLOT_STATUS)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_ConfigStatusREQ() +{ + if (!STWI_init(RFU_CONFIG_STATUS)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) +{ + u8 *v5; + int i; + + if (!STWI_init(RFU_GAME_CONFIG)) + { + gRfuState.rfuStruct->unk_4 = 6; //TODO: what is 6 + + //TODO: kinda gross but idk what's going on here + v5 = (u8*)gRfuState.rfuStruct->unk_24; + v5 += 4; + *(u16*)v5 = *(u16*)unk1; + + v5 += 2; + unk1 += 2; + i = 13; + do + { + *v5 = *unk1; + v5++; + unk1++; + i--; + } + while(i >= 0); + + i = 7; + do + { + *v5 = *data; + v5++; + data++; + i--; + } + while(i >= 0); + + STWI_start_Command(); + } +} + +void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) +{ + u8 *v5; + + if (!STWI_init(RFU_SYSTEM_CONFIG)) + { + gRfuState.rfuStruct->unk_4 = 1; //TODO: what is 1 + + //TODO: kinda weird but idk what's going on here + v5 = (u8*)gRfuState.rfuStruct->unk_24; + v5 += 4; + + *v5++ = unk3; + *v5++ = unk2; + *(u16*)v5 = unk1; + STWI_start_Command(); + } +} + +void STWI_send_SC_StartREQ() +{ + if (!STWI_init(RFU_SC_START)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SC_PollingREQ() +{ + if (!STWI_init(RFU_SC_POLLING)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SC_EndREQ() +{ + if (!STWI_init(RFU_SC_END)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SP_StartREQ() +{ + if (!STWI_init(RFU_SP_START)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SP_PollingREQ() +{ + if (!STWI_init(RFU_SP_POLLING)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_SP_EndREQ() +{ + if (!STWI_init(RFU_SP_END)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_CP_StartREQ(u16 unk1) +{ + if (!STWI_init(RFU_CP_START)) + { + gRfuState.rfuStruct->unk_4 = 1; + *(u32*)(gRfuState.rfuStruct->unk_24 + 4) = unk1; + STWI_start_Command(); + } +} + +void STWI_send_CP_PollingREQ() +{ + if (!STWI_init(RFU_CP_POLLING)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + +void STWI_send_CP_EndREQ() +{ + if (!STWI_init(RFU_CP_END)) + { + gRfuState.rfuStruct->unk_4 = 0; + STWI_start_Command(); + } +} + From f4a21e5789eac049f6b9788123448b77fa9d7c06 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 10 Sep 2017 12:04:48 -0600 Subject: [PATCH 003/182] Cleanup and formatting fixes from camthesaxman --- src/librfu.c | 606 ++++++++++++++++++++++++--------------------------- 1 file changed, 279 insertions(+), 327 deletions(-) diff --git a/src/librfu.c b/src/librfu.c index 1b9846ece0..8e450caa0c 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -1,443 +1,395 @@ #include "global.h" - #include "main.h" enum { - RFU_RESET = 0x10, - RFU_LINK_STATUS, - RFU_VERSION_STATUS, - RFU_SYSTEM_STATUS, - RFU_SLOT_STATUS, - RFU_CONFIG_STATUS, - RFU_GAME_CONFIG, - RFU_SYSTEM_CONFIG, - RFU_UNK18, - RFU_SC_START, - RFU_SC_POLLING, - RFU_SC_END, - RFU_SP_START, - RFU_SP_POLLING, - RFU_SP_END, - RFU_CP_START, - RFU_CP_POLLING, - RFU_CP_END + RFU_RESET = 0x10, + RFU_LINK_STATUS, + RFU_VERSION_STATUS, + RFU_SYSTEM_STATUS, + RFU_SLOT_STATUS, + RFU_CONFIG_STATUS, + RFU_GAME_CONFIG, + RFU_SYSTEM_CONFIG, + RFU_UNK18, + RFU_SC_START, + RFU_SC_POLLING, + RFU_SC_END, + RFU_SP_START, + RFU_SP_POLLING, + RFU_SP_END, + RFU_CP_START, + RFU_CP_POLLING, + RFU_CP_END }; -typedef struct RfuStruct +struct RfuStruct { - s32 unk_0; - u8 unk_4; - u8 unk_5; - u8 unk_6; - u8 unk_7; - u8 unk_8; - u8 unk_9; - u8 timerSelect; - u8 unk_b; - u32 unk_c; - vu8 unk_10; - u8 unk_11; - vu16 unk_12; - vu8 msMode; - u8 unk_15; - u8 unk_16; - u8 unk_17; - void * callbackM; - void * callbackS; - u32 callbackID; - u8 * unk_24; - void * unk_28; - vu8 unk_2c; - u8 padding[3]; -} RfuStruct; + vs32 unk_0; + u8 unk_4; + u8 unk_5; + u8 unk_6; + u8 unk_7; + u8 unk_8; + u8 unk_9; + u8 timerSelect; + u8 unk_b; + u32 unk_c; + vu8 unk_10; + u8 unk_11; + vu16 unk_12; + vu8 msMode; + u8 unk_15; + u8 unk_16; + u8 unk_17; + void *callbackM; + void *callbackS; + u32 callbackID; + u8 *unk_24; + void *unk_28; + vu8 unk_2c; + u8 padding[3]; +}; -typedef struct RfuIntrStruct +struct RfuIntrStruct { - u8 unk28Data[0x74]; - u8 unk24Data[0x74]; - u8 block1[0x960]; - u8 block2[0x30]; -} RfuIntrStruct; + u8 unk28Data[0x74]; + u8 unk24Data[0x74]; + u8 block1[0x960]; + u8 block2[0x30]; +}; -typedef struct RfuState -{ - RfuStruct *rfuStruct; -} RfuState; - -extern IntrFunc IntrSIO32(); -extern struct RfuState gRfuState; -void STWI_init_Callback_M(); -void STWI_init_Callback_S(); +extern IntrFunc IntrSIO32(void); +extern struct RfuStruct *gRfuState; +void STWI_init_Callback_M(void); +void STWI_init_Callback_S(void); void STWI_set_Callback_M(void * callback); void STWI_set_Callback_S(void * callback); u16 STWI_init(u8 request); -int STWI_start_Command(); -extern void STWI_intr_timer(); +int STWI_start_Command(void); +extern void STWI_intr_timer(void); -void STWI_init_all(RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) +void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) { - struct RfuStruct *rfuStructTemp; - struct RfuStruct **rfuStructPtr; - u16 ime_temp; - int ret; - - // If we're copying our interrupt into RAM, DMA it to block1 and use - // block2 for our RfuStruct, otherwise block1 holds the RfuStruct. - // interrupt usually is a pointer to gIntrTable[1] - if (copyInterruptToRam == TRUE) - { - *interrupt = (IntrFunc)(&interruptStruct->block1); - DmaCopy16(3, &IntrSIO32, (void*)(&interruptStruct->block1), 0x960); - - gRfuState.rfuStruct = (struct RfuStruct*)(&interruptStruct->block2); - } - else - { - *interrupt = (IntrFunc)&IntrSIO32; - gRfuState.rfuStruct = (struct RfuStruct*)(&interruptStruct->block1); - } - - rfuStructPtr = (struct RfuStruct**)&gRfuState.rfuStruct; - (*rfuStructPtr)->unk_28 = (void*)&interruptStruct->unk28Data; - (*rfuStructPtr)->unk_24 = (u8*)(&interruptStruct->unk24Data); - (*rfuStructPtr)->msMode = 1; - - (*rfuStructPtr)->unk_0 = 0; - (*rfuStructPtr)->unk_4 = 0; - (*rfuStructPtr)->unk_5 = 0; - (*rfuStructPtr)->unk_7 = 0; - (*rfuStructPtr)->unk_8 = 0; - (*rfuStructPtr)->unk_9 = 0; - (*rfuStructPtr)->unk_c = 0; - (*rfuStructPtr)->unk_10 = 0; - - // Don't @ me - rfuStructTemp = *rfuStructPtr; - rfuStructTemp->unk_12 = 0; - rfuStructTemp->unk_15 = 0; + // If we're copying our interrupt into RAM, DMA it to block1 and use + // block2 for our RfuStruct, otherwise block1 holds the RfuStruct. + // interrupt usually is a pointer to gIntrTable[1] + if (copyInterruptToRam == TRUE) + { + *interrupt = (IntrFunc)interruptStruct->block1; + DmaCopy16(3, &IntrSIO32, interruptStruct->block1, 0x960); + gRfuState = (struct RfuStruct*)interruptStruct->block2; + } + else + { + *interrupt = (IntrFunc)IntrSIO32; + gRfuState = (struct RfuStruct*)interruptStruct->block1; + } - (*rfuStructPtr)->unk_2c = 0; - - REG_RCNT = 0x100; //TODO: mystery bit? - REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; - STWI_init_Callback_M(); - STWI_init_Callback_S(); - - IntrEnable(INTR_FLAG_SERIAL); + gRfuState->unk_28 = interruptStruct->unk28Data; + gRfuState->unk_24 = interruptStruct->unk24Data; + gRfuState->msMode = 1; + gRfuState->unk_0 = 0; + gRfuState->unk_4 = 0; + gRfuState->unk_5 = 0; + gRfuState->unk_7 = 0; + gRfuState->unk_8 = 0; + gRfuState->unk_9 = 0; + gRfuState->unk_c = 0; + gRfuState->unk_10 = 0; + gRfuState->unk_12 = 0; + gRfuState->unk_15 = 0; + gRfuState->unk_2c = 0; + + REG_RCNT = 0x100; //TODO: mystery bit? + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; + STWI_init_Callback_M(); + STWI_init_Callback_S(); + + IntrEnable(INTR_FLAG_SERIAL); } void STWI_init_timer(IntrFunc *interrupt, int timerSelect) { - *interrupt = &STWI_intr_timer; - gRfuState.rfuStruct->timerSelect = timerSelect; - - IntrEnable(INTR_FLAG_TIMER0 << gRfuState.rfuStruct->timerSelect); + *interrupt = STWI_intr_timer; + gRfuState->timerSelect = timerSelect; + + IntrEnable(INTR_FLAG_TIMER0 << gRfuState->timerSelect); } -void AgbRFU_SoftReset() +void AgbRFU_SoftReset(void) { - struct RfuStruct **rfuStructPtr; - struct RfuStruct *rfuStructTemp; + vu16 *timerL; + vu16 *timerH; - REG_RCNT = 0x8000; - REG_RCNT = 0x80A0; // all these bits are undocumented - - { - vu16 *timerL = ®_TMCNT_L(gRfuState.rfuStruct->timerSelect); - vu16 *timerH = ®_TMCNT_H(gRfuState.rfuStruct->timerSelect); + REG_RCNT = 0x8000; + REG_RCNT = 0x80A0; // all these bits are undocumented + timerL = ®_TMCNT_L(gRfuState->timerSelect); + timerH = ®_TMCNT_H(gRfuState->timerSelect); + *timerH = 0; + *timerL = 0; + *timerH = 0x83; + while (*timerL <= 0x11) + REG_RCNT = 0x80A2; + *timerH = 3; + REG_RCNT = 0x80A0; + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; - *timerH = 0; - *timerL = 0; - *timerH = 0x83; - - while (*timerL <= 0x11) - { - REG_RCNT = 0x80A2; - } - - *timerH = 3; - } - REG_RCNT = 0x80A0; - REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; - - rfuStructPtr = (struct RfuStruct**)&gRfuState.rfuStruct; - - (*rfuStructPtr)->unk_0 = 0; - (*rfuStructPtr)->unk_4 = 0; - (*rfuStructPtr)->unk_5 = 0; - (*rfuStructPtr)->unk_6 = 0; - (*rfuStructPtr)->unk_7 = 0; - (*rfuStructPtr)->unk_8 = 0; - (*rfuStructPtr)->unk_9 = 0; - (*rfuStructPtr)->unk_c = 0; - (*rfuStructPtr)->unk_10 = 0; - - // Yeah this is the second time, there's probably something in the struct that I'm missing - rfuStructTemp = *rfuStructPtr; - rfuStructTemp->unk_12 = 0; - rfuStructTemp->msMode = 1; - (*rfuStructPtr)->unk_15 = 0; - - (*rfuStructPtr)->unk_2c = 0; + gRfuState->unk_0 = 0; + gRfuState->unk_4 = 0; + gRfuState->unk_5 = 0; + gRfuState->unk_6 = 0; + gRfuState->unk_7 = 0; + gRfuState->unk_8 = 0; + gRfuState->unk_9 = 0; + gRfuState->unk_c = 0; + gRfuState->unk_10 = 0; + gRfuState->unk_12 = 0; + gRfuState->msMode = 1; + gRfuState->unk_15 = 0; + gRfuState->unk_2c = 0; } void STWI_set_MS_mode(u8 mode) { - gRfuState.rfuStruct->msMode = mode; + gRfuState->msMode = mode; } -u32 STWI_read_status(u8 index) +u16 STWI_read_status(u8 index) { - int result; - switch(index) - { - case 0: - return gRfuState.rfuStruct->unk_12; - case 1: - return gRfuState.rfuStruct->msMode; - case 2: - // something got inlined here? - //TODO: figure this one out - result = (gRfuState.rfuStruct->unk_0); - __asm__("lsl r0, r0, #16"); - __asm__("lsr r0, r0, #16"); - break; - - case 3: - return gRfuState.rfuStruct->unk_6; - break; - default: - return 0xFFFF; - break; - } - return result; + switch (index) + { + case 0: + return gRfuState->unk_12; + case 1: + return gRfuState->msMode; + case 2: + return gRfuState->unk_0; + case 3: + return gRfuState->unk_6; + default: + return 0xFFFF; + } } -void STWI_init_Callback_M() +void STWI_init_Callback_M(void) { - STWI_set_Callback_M(0); + STWI_set_Callback_M(0); } -void STWI_init_Callback_S() +void STWI_init_Callback_S(void) { - STWI_set_Callback_S(0); + STWI_set_Callback_S(0); } -void STWI_set_Callback_M(void * callback) +void STWI_set_Callback_M(void *callback) { - gRfuState.rfuStruct->callbackM = callback; + gRfuState->callbackM = callback; } -void STWI_set_Callback_S(void * callback) +void STWI_set_Callback_S(void *callback) { - gRfuState.rfuStruct->callbackS = callback; + gRfuState->callbackS = callback; } void STWI_set_Callback_ID(u32 id) { - gRfuState.rfuStruct->callbackID = id; + gRfuState->callbackID = id; } -u16 STWI_poll_CommandEnd() +u16 STWI_poll_CommandEnd(void) { - while ( gRfuState.rfuStruct->unk_2c == TRUE ); - - return gRfuState.rfuStruct->unk_12; + while (gRfuState->unk_2c == TRUE) + ; + return gRfuState->unk_12; } -void STWI_send_ResetREQ() +void STWI_send_ResetREQ(void) { - if (!STWI_init(RFU_RESET)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_RESET)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_LinkStatusREQ() +void STWI_send_LinkStatusREQ(void) { - if (!STWI_init(RFU_LINK_STATUS)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_LINK_STATUS)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_VersionStatusREQ() +void STWI_send_VersionStatusREQ(void) { - if (!STWI_init(RFU_VERSION_STATUS)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_VERSION_STATUS)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SystemStatusREQ() +void STWI_send_SystemStatusREQ(void) { - if (!STWI_init(RFU_SYSTEM_STATUS)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SYSTEM_STATUS)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SlotStatusREQ() +void STWI_send_SlotStatusREQ(void) { - if (!STWI_init(RFU_SLOT_STATUS)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SLOT_STATUS)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_ConfigStatusREQ() +void STWI_send_ConfigStatusREQ(void) { - if (!STWI_init(RFU_CONFIG_STATUS)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_CONFIG_STATUS)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) { - u8 *v5; - int i; + u8 *v5; + int i; - if (!STWI_init(RFU_GAME_CONFIG)) - { - gRfuState.rfuStruct->unk_4 = 6; //TODO: what is 6 + if (!STWI_init(RFU_GAME_CONFIG)) + { + gRfuState->unk_4 = 6; //TODO: what is 6 - //TODO: kinda gross but idk what's going on here - v5 = (u8*)gRfuState.rfuStruct->unk_24; - v5 += 4; - *(u16*)v5 = *(u16*)unk1; + //TODO: kinda gross but idk what's going on here + v5 = (u8*)gRfuState->unk_24; + v5 += 4; + *(u16*)v5 = *(u16*)unk1; - v5 += 2; - unk1 += 2; - i = 13; - do - { - *v5 = *unk1; - v5++; - unk1++; - i--; - } - while(i >= 0); + v5 += 2; + unk1 += 2; - i = 7; - do - { - *v5 = *data; - v5++; - data++; - i--; - } - while(i >= 0); + for (i = 0; i < 14; i++) + { + *v5 = *unk1; + v5++; + unk1++; + } - STWI_start_Command(); - } + for (i = 0; i < 8; i++) + { + *v5 = *data; + v5++; + data++; + } + + STWI_start_Command(); + } } void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) { u8 *v5; - if (!STWI_init(RFU_SYSTEM_CONFIG)) - { - gRfuState.rfuStruct->unk_4 = 1; //TODO: what is 1 + if (!STWI_init(RFU_SYSTEM_CONFIG)) + { + gRfuState->unk_4 = 1; //TODO: what is 1 - //TODO: kinda weird but idk what's going on here - v5 = (u8*)gRfuState.rfuStruct->unk_24; - v5 += 4; + //TODO: kinda weird but idk what's going on here + v5 = (u8*)gRfuState->unk_24; + v5 += 4; - *v5++ = unk3; - *v5++ = unk2; - *(u16*)v5 = unk1; - STWI_start_Command(); - } + *v5++ = unk3; + *v5++ = unk2; + *(u16*)v5 = unk1; + STWI_start_Command(); + } } -void STWI_send_SC_StartREQ() +void STWI_send_SC_StartREQ(void) { - if (!STWI_init(RFU_SC_START)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SC_START)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SC_PollingREQ() +void STWI_send_SC_PollingREQ(void) { - if (!STWI_init(RFU_SC_POLLING)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SC_POLLING)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SC_EndREQ() +void STWI_send_SC_EndREQ(void) { - if (!STWI_init(RFU_SC_END)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SC_END)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SP_StartREQ() +void STWI_send_SP_StartREQ(void) { - if (!STWI_init(RFU_SP_START)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SP_START)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SP_PollingREQ() +void STWI_send_SP_PollingREQ(void) { - if (!STWI_init(RFU_SP_POLLING)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SP_POLLING)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_SP_EndREQ() +void STWI_send_SP_EndREQ(void) { - if (!STWI_init(RFU_SP_END)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_SP_END)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } void STWI_send_CP_StartREQ(u16 unk1) { - if (!STWI_init(RFU_CP_START)) - { - gRfuState.rfuStruct->unk_4 = 1; - *(u32*)(gRfuState.rfuStruct->unk_24 + 4) = unk1; - STWI_start_Command(); - } + if (!STWI_init(RFU_CP_START)) + { + gRfuState->unk_4 = 1; + *(u32*)(gRfuState->unk_24 + 4) = unk1; + STWI_start_Command(); + } } -void STWI_send_CP_PollingREQ() +void STWI_send_CP_PollingREQ(void) { - if (!STWI_init(RFU_CP_POLLING)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_CP_POLLING)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } -void STWI_send_CP_EndREQ() +void STWI_send_CP_EndREQ(void) { - if (!STWI_init(RFU_CP_END)) - { - gRfuState.rfuStruct->unk_4 = 0; - STWI_start_Command(); - } + if (!STWI_init(RFU_CP_END)) + { + gRfuState->unk_4 = 0; + STWI_start_Command(); + } } - From dac306c5e91ad8309bb0246d61204f8670e15955 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 10 Sep 2017 21:41:56 -0600 Subject: [PATCH 004/182] Decompiled librfu to STWI_send_DisconnectREQ --- asm/librfu.s | 243 --------------------------------------------------- src/librfu.c | 213 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 177 insertions(+), 279 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index 28c00f01f5..eb33c7768a 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,249 +4,6 @@ .text - thumb_func_start STWI_send_DataTxREQ -STWI_send_DataTxREQ: @ 82E2F78 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 24 - lsrs r5, r4, 24 - movs r0, 0x24 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E2FB6 - lsrs r2, r4, 26 - movs r0, 0x3 - ands r0, r5 - cmp r0, 0 - beq _082E2F98 - adds r2, 0x1 -_082E2F98: - ldr r1, _082E2FBC - ldr r0, [r1] - strb r2, [r0, 0x4] - ldr r0, [r1] - ldr r1, [r0, 0x24] - adds r1, 0x4 - ldrb r2, [r0, 0x4] - movs r0, 0x80 - lsls r0, 19 - orrs r2, r0 - adds r0, r6, 0 - bl CpuSet - bl STWI_start_Command -_082E2FB6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_082E2FBC: .4byte gRfuState - thumb_func_end STWI_send_DataTxREQ - - thumb_func_start STWI_send_DataTxAndChangeREQ -STWI_send_DataTxAndChangeREQ: @ 82E2FC0 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 24 - lsrs r5, r4, 24 - movs r0, 0x25 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E2FFE - lsrs r2, r4, 26 - movs r0, 0x3 - ands r0, r5 - cmp r0, 0 - beq _082E2FE0 - adds r2, 0x1 -_082E2FE0: - ldr r1, _082E3004 - ldr r0, [r1] - strb r2, [r0, 0x4] - ldr r0, [r1] - ldr r1, [r0, 0x24] - adds r1, 0x4 - ldrb r2, [r0, 0x4] - movs r0, 0x80 - lsls r0, 19 - orrs r2, r0 - adds r0, r6, 0 - bl CpuSet - bl STWI_start_Command -_082E2FFE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_082E3004: .4byte gRfuState - thumb_func_end STWI_send_DataTxAndChangeREQ - - thumb_func_start STWI_send_DataRxREQ -STWI_send_DataRxREQ: @ 82E3008 - push {lr} - movs r0, 0x26 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E3022 - ldr r0, _082E3028 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E3022: - pop {r0} - bx r0 - .align 2, 0 -_082E3028: .4byte gRfuState - thumb_func_end STWI_send_DataRxREQ - - thumb_func_start STWI_send_MS_ChangeREQ -STWI_send_MS_ChangeREQ: @ 82E302C - push {lr} - movs r0, 0x27 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E3046 - ldr r0, _082E304C - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E3046: - pop {r0} - bx r0 - .align 2, 0 -_082E304C: .4byte gRfuState - thumb_func_end STWI_send_MS_ChangeREQ - - thumb_func_start STWI_send_DataReadyAndChangeREQ -STWI_send_DataReadyAndChangeREQ: @ 82E3050 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - movs r0, 0x28 - bl STWI_init - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _082E3096 - cmp r4, 0 - bne _082E3078 - ldr r0, _082E3074 - ldr r0, [r0] - strb r3, [r0, 0x4] - b _082E3092 - .align 2, 0 -_082E3074: .4byte gRfuState -_082E3078: - ldr r2, _082E309C - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r0, [r0, 0x24] - adds r0, 0x4 - strb r5, [r0] - adds r0, 0x1 - strb r3, [r0] - adds r0, 0x1 - strb r3, [r0] - strb r3, [r0, 0x1] -_082E3092: - bl STWI_start_Command -_082E3096: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_082E309C: .4byte gRfuState - thumb_func_end STWI_send_DataReadyAndChangeREQ - - thumb_func_start STWI_send_DisconnectedAndChangeREQ -STWI_send_DisconnectedAndChangeREQ: @ 82E30A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0x29 - bl STWI_init - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _082E30D6 - ldr r2, _082E30DC - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r0, [r0, 0x24] - adds r0, 0x4 - strb r4, [r0] - adds r0, 0x1 - strb r5, [r0] - adds r0, 0x1 - strb r3, [r0] - strb r3, [r0, 0x1] - bl STWI_start_Command -_082E30D6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_082E30DC: .4byte gRfuState - thumb_func_end STWI_send_DisconnectedAndChangeREQ - - thumb_func_start STWI_send_ResumeRetransmitAndChangeREQ -STWI_send_ResumeRetransmitAndChangeREQ: @ 82E30E0 - push {lr} - movs r0, 0x37 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E30FA - ldr r0, _082E3100 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E30FA: - pop {r0} - bx r0 - .align 2, 0 -_082E3100: .4byte gRfuState - thumb_func_end STWI_send_ResumeRetransmitAndChangeREQ - - thumb_func_start STWI_send_DisconnectREQ -STWI_send_DisconnectREQ: @ 82E3104 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x30 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E3128 - ldr r2, _082E3130 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r0, [r0, 0x24] - str r4, [r0, 0x4] - bl STWI_start_Command -_082E3128: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_082E3130: .4byte gRfuState - thumb_func_end STWI_send_DisconnectREQ - thumb_func_start STWI_send_TestModeREQ STWI_send_TestModeREQ: @ 82E3134 push {r4,r5,lr} diff --git a/src/librfu.c b/src/librfu.c index 8e450caa0c..67b76b0d99 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -20,13 +20,41 @@ enum RFU_SP_END, RFU_CP_START, RFU_CP_POLLING, - RFU_CP_END + RFU_CP_END, + RFU_UNK22, + RFU_UNK23, + RFU_DATA_TX, + RFU_DATA_TX_AND_CHANGE, + RFU_DATA_RX, + RFU_MS_CHANGE, + RFU_DATA_READY_AND_CHANGE, + RFU_DISCONNECTED_AND_CHANGE, + RFU_UNK2A, + RFU_UNK2B, + RFU_UNK2C, + RFU_UNK2D, + RFU_UNK2E, + RFU_UNK2F, + RFU_DISCONNECT, + RFU_UNK31, + RFU_UNK32, + RFU_UNK33, + RFU_UNK34, + RFU_UNK35, + RFU_UNK36, + RFU_RESUME_RETRANSMIT_AND_CHANGE +}; + +struct RfuPacket +{ + u32 unk_0; + u32 data[0x1C]; }; struct RfuStruct { vs32 unk_0; - u8 unk_4; + u8 txParams; u8 unk_5; u8 unk_6; u8 unk_7; @@ -45,16 +73,16 @@ struct RfuStruct void *callbackM; void *callbackS; u32 callbackID; - u8 *unk_24; - void *unk_28; + struct RfuPacket *txPacket; + struct RfuPacket *rxPacket; vu8 unk_2c; u8 padding[3]; }; struct RfuIntrStruct { - u8 unk28Data[0x74]; - u8 unk24Data[0x74]; + u8 rxPacketAlloc[0x74]; + u8 txPacketAlloc[0x74]; u8 block1[0x960]; u8 block2[0x30]; }; @@ -86,11 +114,11 @@ void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, b gRfuState = (struct RfuStruct*)interruptStruct->block1; } - gRfuState->unk_28 = interruptStruct->unk28Data; - gRfuState->unk_24 = interruptStruct->unk24Data; + gRfuState->rxPacket = (struct RfuPacket*)interruptStruct->rxPacketAlloc; + gRfuState->txPacket = (struct RfuPacket*)interruptStruct->txPacketAlloc; gRfuState->msMode = 1; gRfuState->unk_0 = 0; - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; gRfuState->unk_5 = 0; gRfuState->unk_7 = 0; gRfuState->unk_8 = 0; @@ -136,7 +164,7 @@ void AgbRFU_SoftReset(void) REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; gRfuState->unk_0 = 0; - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; gRfuState->unk_5 = 0; gRfuState->unk_6 = 0; gRfuState->unk_7 = 0; @@ -208,7 +236,7 @@ void STWI_send_ResetREQ(void) { if (!STWI_init(RFU_RESET)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -217,7 +245,7 @@ void STWI_send_LinkStatusREQ(void) { if (!STWI_init(RFU_LINK_STATUS)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -226,7 +254,7 @@ void STWI_send_VersionStatusREQ(void) { if (!STWI_init(RFU_VERSION_STATUS)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -235,7 +263,7 @@ void STWI_send_SystemStatusREQ(void) { if (!STWI_init(RFU_SYSTEM_STATUS)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -244,7 +272,7 @@ void STWI_send_SlotStatusREQ(void) { if (!STWI_init(RFU_SLOT_STATUS)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -253,7 +281,7 @@ void STWI_send_ConfigStatusREQ(void) { if (!STWI_init(RFU_CONFIG_STATUS)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -265,15 +293,15 @@ void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) if (!STWI_init(RFU_GAME_CONFIG)) { - gRfuState->unk_4 = 6; //TODO: what is 6 + gRfuState->txParams = 6; - //TODO: kinda gross but idk what's going on here - v5 = (u8*)gRfuState->unk_24; - v5 += 4; + //TODO: kinda gross but it was probably written weird + v5 = (u8*)gRfuState->txPacket; + v5 += sizeof(u32); *(u16*)v5 = *(u16*)unk1; - v5 += 2; - unk1 += 2; + v5 += sizeof(u16); + unk1 += sizeof(u16); for (i = 0; i < 14; i++) { @@ -299,11 +327,11 @@ void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) if (!STWI_init(RFU_SYSTEM_CONFIG)) { - gRfuState->unk_4 = 1; //TODO: what is 1 + gRfuState->txParams = 1; - //TODO: kinda weird but idk what's going on here - v5 = (u8*)gRfuState->unk_24; - v5 += 4; + //TODO: kinda weird but I think it was written weird + v5 = (u8*)gRfuState->txPacket; + v5 += sizeof(u32); *v5++ = unk3; *v5++ = unk2; @@ -316,7 +344,7 @@ void STWI_send_SC_StartREQ(void) { if (!STWI_init(RFU_SC_START)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -325,7 +353,7 @@ void STWI_send_SC_PollingREQ(void) { if (!STWI_init(RFU_SC_POLLING)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -334,7 +362,7 @@ void STWI_send_SC_EndREQ(void) { if (!STWI_init(RFU_SC_END)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -343,7 +371,7 @@ void STWI_send_SP_StartREQ(void) { if (!STWI_init(RFU_SP_START)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -352,7 +380,7 @@ void STWI_send_SP_PollingREQ(void) { if (!STWI_init(RFU_SP_POLLING)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -361,7 +389,7 @@ void STWI_send_SP_EndREQ(void) { if (!STWI_init(RFU_SP_END)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -370,8 +398,8 @@ void STWI_send_CP_StartREQ(u16 unk1) { if (!STWI_init(RFU_CP_START)) { - gRfuState->unk_4 = 1; - *(u32*)(gRfuState->unk_24 + 4) = unk1; + gRfuState->txParams = 1; + gRfuState->txPacket->data[0] = unk1; STWI_start_Command(); } } @@ -380,7 +408,7 @@ void STWI_send_CP_PollingREQ(void) { if (!STWI_init(RFU_CP_POLLING)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; STWI_start_Command(); } } @@ -389,7 +417,120 @@ void STWI_send_CP_EndREQ(void) { if (!STWI_init(RFU_CP_END)) { - gRfuState->unk_4 = 0; + gRfuState->txParams = 0; + STWI_start_Command(); + } +} + +void STWI_send_DataTxREQ(void *in, u8 size) +{ + if (!STWI_init(RFU_DATA_TX)) + { + u8 txParams = (size / sizeof(u32)); + if (size & (sizeof(u32) - 1)) + txParams += 1; + + gRfuState->txParams = txParams; + CpuCopy32(in, gRfuState->txPacket->data, gRfuState->txParams * sizeof(u32)); + STWI_start_Command(); + } +} + +void STWI_send_DataTxAndChangeREQ(void *in, u8 size) +{ + if (!STWI_init(RFU_DATA_TX_AND_CHANGE)) + { + u8 txParams = (size / sizeof(u32)); + if (size & (sizeof(u32) - 1)) + txParams += 1; + + gRfuState->txParams = txParams; + CpuCopy32(in, gRfuState->txPacket->data, gRfuState->txParams * sizeof(u32)); + STWI_start_Command(); + } +} + +void STWI_send_DataRxREQ() +{ + if (!STWI_init(RFU_DATA_RX)) + { + gRfuState->txParams = 0; + STWI_start_Command(); + } +} + +void STWI_send_MS_ChangeREQ() +{ + if (!STWI_init(RFU_MS_CHANGE)) + { + gRfuState->txParams = 0; + STWI_start_Command(); + } +} + +void STWI_send_DataReadyAndChangeREQ(u8 unk) +{ + if (!STWI_init(RFU_DATA_READY_AND_CHANGE)) + { + if (!unk) + { + gRfuState->txParams = 0; + } + else + { + u8 *packetBytes; + + gRfuState->txParams = 1; + + packetBytes = (u8*)gRfuState->txPacket; + packetBytes += sizeof(u32); + + *packetBytes++ = unk; + *packetBytes++ = 0; + *packetBytes++ = 0; + *packetBytes = 0; + } + + STWI_start_Command(); + } +} + +void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1) +{ + if (!STWI_init(RFU_DISCONNECTED_AND_CHANGE)) + { + u8 *packetBytes; + + gRfuState->txParams = 1; + + packetBytes = (u8*)gRfuState->txPacket; + packetBytes += sizeof(u32); + + *packetBytes++ = unk0; + *packetBytes++ = unk1; + *packetBytes++ = 0; + *packetBytes = 0; + + STWI_start_Command(); + } +} + +void STWI_send_ResumeRetransmitAndChangeREQ() +{ + if (!STWI_init(RFU_RESUME_RETRANSMIT_AND_CHANGE)) + { + gRfuState->txParams = 0; + STWI_start_Command(); + } +} + +void STWI_send_DisconnectREQ(u8 unk) +{ + if (!STWI_init(RFU_DISCONNECT)) + { + gRfuState->txParams = 1; + gRfuState->txPacket->data[0] = unk; + STWI_start_Command(); } } From 9218c2ce16777bba33fea2b606c5805553d190de Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 10 Sep 2017 21:46:26 -0600 Subject: [PATCH 005/182] Decompile to STWI_send_TestModeREQ --- asm/librfu.s | 30 ------------------------------ src/librfu.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index eb33c7768a..a01d4e505c 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,36 +4,6 @@ .text - thumb_func_start STWI_send_TestModeREQ -STWI_send_TestModeREQ: @ 82E3134 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - movs r0, 0x31 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E3160 - ldr r2, _082E3168 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, [r2] - ldr r1, [r0, 0x24] - lsls r0, r4, 8 - orrs r0, r5 - str r0, [r1, 0x4] - bl STWI_start_Command -_082E3160: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_082E3168: .4byte gRfuState - thumb_func_end STWI_send_TestModeREQ - thumb_func_start STWI_send_CPR_StartREQ STWI_send_CPR_StartREQ: @ 82E316C push {r4-r6,lr} diff --git a/src/librfu.c b/src/librfu.c index 67b76b0d99..00dde830b5 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -36,7 +36,7 @@ enum RFU_UNK2E, RFU_UNK2F, RFU_DISCONNECT, - RFU_UNK31, + RFU_TEST_MODE, RFU_UNK32, RFU_UNK33, RFU_UNK34, @@ -534,3 +534,14 @@ void STWI_send_DisconnectREQ(u8 unk) STWI_start_Command(); } } + +void STWI_send_TestModeREQ(u8 unk0, u8 unk1) +{ + if (!STWI_init(RFU_TEST_MODE)) + { + gRfuState->txParams = 1; + gRfuState->txPacket->data[0] = unk0 | (unk1 << 8); + + STWI_start_Command(); + } +} From e26e1f1275a23e290322059bab1f80f89dac4f8a Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 10 Sep 2017 21:58:47 -0600 Subject: [PATCH 006/182] Use a union to differentiate between 8-bit and 32-bit operations on packets --- src/librfu.c | 72 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/src/librfu.c b/src/librfu.c index 00dde830b5..5cbe9eb492 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -45,12 +45,23 @@ enum RFU_RESUME_RETRANSMIT_AND_CHANGE }; -struct RfuPacket +struct RfuPacket8 { - u32 unk_0; + u8 data[0x74]; +}; + +struct RfuPacket32 +{ + u32 command; u32 data[0x1C]; }; +union RfuPacket +{ + struct RfuPacket32 rfuPacket32; + struct RfuPacket8 rfuPacket8; +}; + struct RfuStruct { vs32 unk_0; @@ -73,8 +84,8 @@ struct RfuStruct void *callbackM; void *callbackS; u32 callbackID; - struct RfuPacket *txPacket; - struct RfuPacket *rxPacket; + union RfuPacket *txPacket; + union RfuPacket *rxPacket; vu8 unk_2c; u8 padding[3]; }; @@ -114,8 +125,8 @@ void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, b gRfuState = (struct RfuStruct*)interruptStruct->block1; } - gRfuState->rxPacket = (struct RfuPacket*)interruptStruct->rxPacketAlloc; - gRfuState->txPacket = (struct RfuPacket*)interruptStruct->txPacketAlloc; + gRfuState->rxPacket = (union RfuPacket*)interruptStruct->rxPacketAlloc; + gRfuState->txPacket = (union RfuPacket*)interruptStruct->txPacketAlloc; gRfuState->msMode = 1; gRfuState->unk_0 = 0; gRfuState->txParams = 0; @@ -288,32 +299,32 @@ void STWI_send_ConfigStatusREQ(void) void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) { - u8 *v5; + u8 *packetBytes; int i; if (!STWI_init(RFU_GAME_CONFIG)) { gRfuState->txParams = 6; - //TODO: kinda gross but it was probably written weird - v5 = (u8*)gRfuState->txPacket; - v5 += sizeof(u32); - *(u16*)v5 = *(u16*)unk1; + //TODO: what is unk1 + packetBytes = gRfuState->txPacket->rfuPacket8.data; + packetBytes += sizeof(u32); + *(u16*)packetBytes = *(u16*)unk1; - v5 += sizeof(u16); + packetBytes += sizeof(u16); unk1 += sizeof(u16); for (i = 0; i < 14; i++) { - *v5 = *unk1; - v5++; + *packetBytes = *unk1; + packetBytes++; unk1++; } for (i = 0; i < 8; i++) { - *v5 = *data; - v5++; + *packetBytes = *data; + packetBytes++; data++; } @@ -323,19 +334,18 @@ void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) { - u8 *v5; - if (!STWI_init(RFU_SYSTEM_CONFIG)) { + u8 *packetBytes; + gRfuState->txParams = 1; - //TODO: kinda weird but I think it was written weird - v5 = (u8*)gRfuState->txPacket; - v5 += sizeof(u32); + packetBytes = gRfuState->txPacket->rfuPacket8.data; + packetBytes += sizeof(u32); - *v5++ = unk3; - *v5++ = unk2; - *(u16*)v5 = unk1; + *packetBytes++ = unk3; + *packetBytes++ = unk2; + *(u16*)packetBytes = unk1; STWI_start_Command(); } } @@ -399,7 +409,7 @@ void STWI_send_CP_StartREQ(u16 unk1) if (!STWI_init(RFU_CP_START)) { gRfuState->txParams = 1; - gRfuState->txPacket->data[0] = unk1; + gRfuState->txPacket->rfuPacket32.data[0] = unk1; STWI_start_Command(); } } @@ -431,7 +441,7 @@ void STWI_send_DataTxREQ(void *in, u8 size) txParams += 1; gRfuState->txParams = txParams; - CpuCopy32(in, gRfuState->txPacket->data, gRfuState->txParams * sizeof(u32)); + CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32)); STWI_start_Command(); } } @@ -445,7 +455,7 @@ void STWI_send_DataTxAndChangeREQ(void *in, u8 size) txParams += 1; gRfuState->txParams = txParams; - CpuCopy32(in, gRfuState->txPacket->data, gRfuState->txParams * sizeof(u32)); + CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32)); STWI_start_Command(); } } @@ -482,7 +492,7 @@ void STWI_send_DataReadyAndChangeREQ(u8 unk) gRfuState->txParams = 1; - packetBytes = (u8*)gRfuState->txPacket; + packetBytes = gRfuState->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); *packetBytes++ = unk; @@ -503,7 +513,7 @@ void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1) gRfuState->txParams = 1; - packetBytes = (u8*)gRfuState->txPacket; + packetBytes = gRfuState->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); *packetBytes++ = unk0; @@ -529,7 +539,7 @@ void STWI_send_DisconnectREQ(u8 unk) if (!STWI_init(RFU_DISCONNECT)) { gRfuState->txParams = 1; - gRfuState->txPacket->data[0] = unk; + gRfuState->txPacket->rfuPacket32.data[0] = unk; STWI_start_Command(); } @@ -540,7 +550,7 @@ void STWI_send_TestModeREQ(u8 unk0, u8 unk1) if (!STWI_init(RFU_TEST_MODE)) { gRfuState->txParams = 1; - gRfuState->txPacket->data[0] = unk0 | (unk1 << 8); + gRfuState->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8); STWI_start_Command(); } From ce08f34ed54b9e5af9a8d1d6cd780df7207c1dbb Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 10 Sep 2017 22:22:10 -0600 Subject: [PATCH 007/182] Finish with STWI_send_* --- asm/librfu.s | 93 ---------------------------------------------------- src/librfu.c | 59 ++++++++++++++++++++++++++++++--- 2 files changed, 55 insertions(+), 97 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index a01d4e505c..290c1b6c01 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,99 +4,6 @@ .text - thumb_func_start STWI_send_CPR_StartREQ -STWI_send_CPR_StartREQ: @ 82E316C - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - movs r0, 0x32 - bl STWI_init - lsls r0, 16 - cmp r0, 0 - bne _082E319E - ldr r2, _082E31A4 - ldr r1, [r2] - movs r0, 0x2 - strb r0, [r1, 0x4] - lsls r0, r5, 16 - orrs r0, r4 - ldr r1, [r2] - ldr r1, [r1, 0x24] - str r0, [r1, 0x4] - str r6, [r1, 0x8] - bl STWI_start_Command -_082E319E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_082E31A4: .4byte gRfuState - thumb_func_end STWI_send_CPR_StartREQ - - thumb_func_start STWI_send_CPR_PollingREQ -STWI_send_CPR_PollingREQ: @ 82E31A8 - push {lr} - movs r0, 0x33 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E31C2 - ldr r0, _082E31C8 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E31C2: - pop {r0} - bx r0 - .align 2, 0 -_082E31C8: .4byte gRfuState - thumb_func_end STWI_send_CPR_PollingREQ - - thumb_func_start STWI_send_CPR_EndREQ -STWI_send_CPR_EndREQ: @ 82E31CC - push {lr} - movs r0, 0x34 - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E31E6 - ldr r0, _082E31EC - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E31E6: - pop {r0} - bx r0 - .align 2, 0 -_082E31EC: .4byte gRfuState - thumb_func_end STWI_send_CPR_EndREQ - - thumb_func_start STWI_send_StopModeREQ -STWI_send_StopModeREQ: @ 82E31F0 - push {lr} - movs r0, 0x3D - bl STWI_init - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E320A - ldr r0, _082E3210 - ldr r0, [r0] - strb r1, [r0, 0x4] - bl STWI_start_Command -_082E320A: - pop {r0} - bx r0 - .align 2, 0 -_082E3210: .4byte gRfuState - thumb_func_end STWI_send_StopModeREQ - thumb_func_start STWI_intr_timer STWI_intr_timer: @ 82E3214 push {r4,lr} diff --git a/src/librfu.c b/src/librfu.c index 5cbe9eb492..dfb2f72219 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -37,12 +37,18 @@ enum RFU_UNK2F, RFU_DISCONNECT, RFU_TEST_MODE, - RFU_UNK32, - RFU_UNK33, - RFU_UNK34, + RFU_CPR_START, + RFU_CPR_POLLING, + RFU_CPR_END, RFU_UNK35, RFU_UNK36, - RFU_RESUME_RETRANSMIT_AND_CHANGE + RFU_RESUME_RETRANSMIT_AND_CHANGE, + RFU_UNK38, + RFU_UNK39, + RFU_UNK3A, + RFU_UNK3B, + RFU_UNK3C, + RFU_STOP_MODE, //3D }; struct RfuPacket8 @@ -555,3 +561,48 @@ void STWI_send_TestModeREQ(u8 unk0, u8 unk1) STWI_start_Command(); } } + +void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2) +{ + u32 *packetData; + u32 arg1; + + if (!STWI_init(RFU_CPR_START)) + { + gRfuState->txParams = 2; + + arg1 = unk1 | (unk0 << 16); + packetData = gRfuState->txPacket->rfuPacket32.data; + packetData[0] = arg1; + packetData[1] = unk2; + + STWI_start_Command(); + } +} + +void STWI_send_CPR_PollingREQ() +{ + if (!STWI_init(RFU_CPR_POLLING)) + { + gRfuState->txParams = 0; + STWI_start_Command(); + } +} + +void STWI_send_CPR_EndREQ() +{ + if (!STWI_init(RFU_CPR_END)) + { + gRfuState->txParams = 0; + STWI_start_Command(); + } +} + +void STWI_send_StopModeREQ() +{ + if (!STWI_init(RFU_STOP_MODE)) + { + gRfuState->txParams = 0; + STWI_start_Command(); + } +} From 3c51ecded9dee7c8d85642709d2e93af34274f39 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Mon, 11 Sep 2017 17:04:13 -0600 Subject: [PATCH 008/182] Decompile to STWI_init --- asm/librfu.s | 277 --------------------------------------------------- src/librfu.c | 143 +++++++++++++++++++++++--- 2 files changed, 128 insertions(+), 292 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index 290c1b6c01..491b4fb664 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,283 +4,6 @@ .text - thumb_func_start STWI_intr_timer -STWI_intr_timer: @ 82E3214 - push {r4,lr} - ldr r4, _082E322C - ldr r1, [r4] - ldr r0, [r1, 0xC] - cmp r0, 0x2 - beq _082E323A - cmp r0, 0x2 - bgt _082E3230 - cmp r0, 0x1 - beq _082E3248 - b _082E3270 - .align 2, 0 -_082E322C: .4byte gRfuState -_082E3230: - cmp r0, 0x3 - beq _082E3252 - cmp r0, 0x4 - beq _082E3248 - b _082E3270 -_082E323A: - ldrb r0, [r1, 0x10] - movs r0, 0x1 - strb r0, [r1, 0x10] - movs r0, 0x32 - bl STWI_set_timer - b _082E3270 -_082E3248: - bl STWI_stop_timer - bl STWI_restart_Command - b _082E3270 -_082E3252: - ldrb r0, [r1, 0x10] - movs r0, 0x1 - strb r0, [r1, 0x10] - bl STWI_stop_timer - bl STWI_reset_ClockCounter - ldr r0, [r4] - ldr r2, [r0, 0x18] - cmp r2, 0 - beq _082E3270 - movs r0, 0xFF - movs r1, 0 - bl _call_via_r2 -_082E3270: - pop {r4} - pop {r0} - bx r0 - thumb_func_end STWI_intr_timer - - thumb_func_start STWI_set_timer -STWI_set_timer: @ 82E3278 - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r5, r3, 0 - ldr r2, _082E32A8 - ldr r0, [r2] - ldrb r0, [r0, 0xA] - lsls r0, 2 - ldr r1, _082E32AC - adds r4, r0, r1 - adds r1, 0x2 - adds r7, r0, r1 - ldr r1, _082E32B0 - movs r0, 0 - strh r0, [r1] - adds r6, r2, 0 - cmp r3, 0x50 - beq _082E32D0 - cmp r3, 0x50 - bgt _082E32B4 - cmp r3, 0x32 - beq _082E32BE - b _082E32FC - .align 2, 0 -_082E32A8: .4byte gRfuState -_082E32AC: .4byte 0x04000100 -_082E32B0: .4byte 0x04000208 -_082E32B4: - cmp r5, 0x64 - beq _082E32E0 - cmp r5, 0x82 - beq _082E32F0 - b _082E32FC -_082E32BE: - ldr r1, _082E32CC - adds r0, r1, 0 - strh r0, [r4] - ldr r1, [r6] - movs r0, 0x1 - b _082E32FA - .align 2, 0 -_082E32CC: .4byte 0x0000fccb -_082E32D0: - ldr r1, _082E32DC - adds r0, r1, 0 - strh r0, [r4] - ldr r1, [r6] - movs r0, 0x2 - b _082E32FA - .align 2, 0 -_082E32DC: .4byte 0x0000fae0 -_082E32E0: - ldr r1, _082E32EC - adds r0, r1, 0 - strh r0, [r4] - ldr r1, [r6] - movs r0, 0x3 - b _082E32FA - .align 2, 0 -_082E32EC: .4byte 0x0000f996 -_082E32F0: - ldr r1, _082E3318 - adds r0, r1, 0 - strh r0, [r4] - ldr r1, [r6] - movs r0, 0x4 -_082E32FA: - str r0, [r1, 0xC] -_082E32FC: - movs r0, 0xC3 - strh r0, [r7] - ldr r2, _082E331C - ldr r1, [r6] - movs r0, 0x8 - ldrb r1, [r1, 0xA] - lsls r0, r1 - strh r0, [r2] - ldr r1, _082E3320 - movs r0, 0x1 - strh r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_082E3318: .4byte 0x0000f7ad -_082E331C: .4byte 0x04000202 -_082E3320: .4byte 0x04000208 - thumb_func_end STWI_set_timer - - thumb_func_start STWI_stop_timer -STWI_stop_timer: @ 82E3324 - ldr r2, _082E3344 - ldr r0, [r2] - movs r1, 0 - str r1, [r0, 0xC] - ldrb r0, [r0, 0xA] - lsls r0, 2 - ldr r3, _082E3348 - adds r0, r3 - strh r1, [r0] - ldr r0, [r2] - ldrb r0, [r0, 0xA] - lsls r0, 2 - ldr r2, _082E334C - adds r0, r2 - strh r1, [r0] - bx lr - .align 2, 0 -_082E3344: .4byte gRfuState -_082E3348: .4byte 0x04000100 -_082E334C: .4byte 0x04000102 - thumb_func_end STWI_stop_timer - - thumb_func_start STWI_init -STWI_init: @ 82E3350 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - ldr r0, _082E337C - ldrh r0, [r0] - cmp r0, 0 - bne _082E3384 - ldr r0, _082E3380 - ldr r1, [r0] - ldrh r0, [r1, 0x12] - movs r0, 0x6 - strh r0, [r1, 0x12] - ldr r2, [r1, 0x18] - cmp r2, 0 - beq _082E33CE - ldrh r1, [r1, 0x12] - adds r0, r5, 0 - bl _call_via_r2 - b _082E33CE - .align 2, 0 -_082E337C: .4byte 0x04000208 -_082E3380: .4byte gRfuState -_082E3384: - ldr r4, _082E33B0 - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x2C - ldrb r0, [r3] - cmp r0, 0x1 - bne _082E33B4 - ldrh r0, [r2, 0x12] - movs r1, 0 - movs r0, 0x2 - strh r0, [r2, 0x12] - ldrb r0, [r3] - strb r1, [r3] - ldr r0, [r4] - ldr r2, [r0, 0x18] - cmp r2, 0 - beq _082E33CE - ldrh r1, [r0, 0x12] - adds r0, r5, 0 - bl _call_via_r2 - b _082E33CE - .align 2, 0 -_082E33B0: .4byte gRfuState -_082E33B4: - ldrb r0, [r2, 0x14] - cmp r0, 0 - bne _082E33D2 - ldrh r0, [r2, 0x12] - movs r0, 0x4 - strh r0, [r2, 0x12] - ldr r3, [r2, 0x18] - cmp r3, 0 - beq _082E33CE - ldrh r1, [r2, 0x12] - adds r0, r5, 0 - bl _call_via_r3 -_082E33CE: - movs r0, 0x1 - b _082E341A -_082E33D2: - ldrb r0, [r3] - movs r1, 0 - movs r0, 0x1 - strb r0, [r3] - ldr r0, [r4] - strb r6, [r0, 0x6] - ldr r0, [r4] - str r1, [r0] - strb r1, [r0, 0x4] - ldr r0, [r4] - strb r1, [r0, 0x5] - ldr r0, [r4] - strb r1, [r0, 0x7] - ldr r0, [r4] - strb r1, [r0, 0x8] - ldr r0, [r4] - strb r1, [r0, 0x9] - ldr r0, [r4] - str r1, [r0, 0xC] - ldrb r2, [r0, 0x10] - strb r1, [r0, 0x10] - ldr r0, [r4] - ldrh r2, [r0, 0x12] - movs r2, 0 - strh r1, [r0, 0x12] - strb r2, [r0, 0x15] - ldr r1, _082E3420 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - ldr r2, _082E3424 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 -_082E341A: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_082E3420: .4byte 0x04000134 -_082E3424: .4byte 0x00005003 - thumb_func_end STWI_init - thumb_func_start STWI_start_Command STWI_start_Command: @ 82E3428 push {r4,r5,lr} diff --git a/src/librfu.c b/src/librfu.c index dfb2f72219..f1c35b1ec7 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -79,16 +79,16 @@ struct RfuStruct u8 unk_9; u8 timerSelect; u8 unk_b; - u32 unk_c; - vu8 unk_10; + int timerState; + vu8 timerActive; u8 unk_11; vu16 unk_12; vu8 msMode; u8 unk_15; u8 unk_16; u8 unk_17; - void *callbackM; - void *callbackS; + void (*callbackM)(); + void (*callbackS)(); u32 callbackID; union RfuPacket *txPacket; union RfuPacket *rxPacket; @@ -112,7 +112,11 @@ void STWI_set_Callback_M(void * callback); void STWI_set_Callback_S(void * callback); u16 STWI_init(u8 request); int STWI_start_Command(void); -extern void STWI_intr_timer(void); +void STWI_intr_timer(void); +void STWI_set_timer(u8 unk); +extern void STWI_stop_timer(void); +extern void STWI_restart_Command(void); +extern void STWI_reset_ClockCounter(void); void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) { @@ -140,8 +144,8 @@ void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, b gRfuState->unk_7 = 0; gRfuState->unk_8 = 0; gRfuState->unk_9 = 0; - gRfuState->unk_c = 0; - gRfuState->unk_10 = 0; + gRfuState->timerState = 0; + gRfuState->timerActive = 0; gRfuState->unk_12 = 0; gRfuState->unk_15 = 0; gRfuState->unk_2c = 0; @@ -187,8 +191,8 @@ void AgbRFU_SoftReset(void) gRfuState->unk_7 = 0; gRfuState->unk_8 = 0; gRfuState->unk_9 = 0; - gRfuState->unk_c = 0; - gRfuState->unk_10 = 0; + gRfuState->timerState = 0; + gRfuState->timerActive = 0; gRfuState->unk_12 = 0; gRfuState->msMode = 1; gRfuState->unk_15 = 0; @@ -466,7 +470,7 @@ void STWI_send_DataTxAndChangeREQ(void *in, u8 size) } } -void STWI_send_DataRxREQ() +void STWI_send_DataRxREQ(void) { if (!STWI_init(RFU_DATA_RX)) { @@ -475,7 +479,7 @@ void STWI_send_DataRxREQ() } } -void STWI_send_MS_ChangeREQ() +void STWI_send_MS_ChangeREQ(void) { if (!STWI_init(RFU_MS_CHANGE)) { @@ -531,7 +535,7 @@ void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1) } } -void STWI_send_ResumeRetransmitAndChangeREQ() +void STWI_send_ResumeRetransmitAndChangeREQ(void) { if (!STWI_init(RFU_RESUME_RETRANSMIT_AND_CHANGE)) { @@ -580,7 +584,7 @@ void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2) } } -void STWI_send_CPR_PollingREQ() +void STWI_send_CPR_PollingREQ(void) { if (!STWI_init(RFU_CPR_POLLING)) { @@ -589,7 +593,7 @@ void STWI_send_CPR_PollingREQ() } } -void STWI_send_CPR_EndREQ() +void STWI_send_CPR_EndREQ(void) { if (!STWI_init(RFU_CPR_END)) { @@ -598,7 +602,7 @@ void STWI_send_CPR_EndREQ() } } -void STWI_send_StopModeREQ() +void STWI_send_StopModeREQ(void) { if (!STWI_init(RFU_STOP_MODE)) { @@ -606,3 +610,112 @@ void STWI_send_StopModeREQ() STWI_start_Command(); } } + +void STWI_intr_timer(void) +{ + switch (gRfuState->timerState) + { + //TODO: Make an enum for these + case 2: + gRfuState->timerActive = 1; + STWI_set_timer(50); + break; + case 1: + case 4: + STWI_stop_timer(); + STWI_restart_Command(); + break; + case 3: + gRfuState->timerActive = 1; + STWI_stop_timer(); + STWI_reset_ClockCounter(); + if (gRfuState->callbackM) + gRfuState->callbackM(255, 0); + break; + } +} + +void STWI_set_timer(u8 unk) +{ + vu16 *timerL; + vu16 *timerH; + + timerL = ®_TMCNT_L(gRfuState->timerSelect); + timerH = ®_TMCNT_H(gRfuState->timerSelect); + REG_IME = 0; + switch (unk) + { + case 50: + *timerL = 0xFCCB; + gRfuState->timerState = 1; + break; + case 80: + *timerL = 0xFAE0; + gRfuState->timerState = 2; + break; + case 100: + *timerL = 0xF996; + gRfuState->timerState = 3; + break; + case 130: + *timerL = 0xF7AD; + gRfuState->timerState = 4; + break; + } + *timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK; + REG_IF = INTR_FLAG_TIMER0 << gRfuState->timerSelect; + REG_IME = 1; +} + +void STWI_stop_timer(void) +{ + gRfuState->timerState = 0; + + REG_TMCNT_L(gRfuState->timerSelect) = 0; + REG_TMCNT_H(gRfuState->timerSelect) = 0; +} + +u16 STWI_init(u8 request) +{ + if (!REG_IME) + { + gRfuState->unk_12 = 6; + if (gRfuState->callbackM) + gRfuState->callbackM(request, gRfuState->unk_12); + return TRUE; + } + else if (gRfuState->unk_2c == TRUE) + { + gRfuState->unk_12 = 2; + gRfuState->unk_2c = FALSE; + if (gRfuState->callbackM) + gRfuState->callbackM(request, gRfuState->unk_12); + return TRUE; + } + else if(!gRfuState->msMode) + { + gRfuState->unk_12 = 4; + if (gRfuState->callbackM) + gRfuState->callbackM(request, gRfuState->unk_12, gRfuState); + return TRUE; + } + else + { + gRfuState->unk_2c = TRUE; + gRfuState->unk_6 = request; + gRfuState->unk_0 = 0; + gRfuState->txParams = 0; + gRfuState->unk_5 = 0; + gRfuState->unk_7 = 0; + gRfuState->unk_8 = 0; + gRfuState->unk_9 = 0; + gRfuState->timerState = 0; + gRfuState->timerActive = 0; + gRfuState->unk_12 = 0; + gRfuState->unk_15 = 0; + + REG_RCNT = 0x100; + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; + return FALSE; + } +} From a8a6816f0e6e6c20aa1ae23bf8030153c147b075 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Mon, 11 Sep 2017 17:49:50 -0600 Subject: [PATCH 009/182] Decompile STWI_start_command --- asm/librfu.s | 56 ---------------------------------------------------- src/librfu.c | 30 ++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 60 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index 491b4fb664..10db8da19f 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,62 +4,6 @@ .text - thumb_func_start STWI_start_Command -STWI_start_Command: @ 82E3428 - push {r4,r5,lr} - ldr r5, _082E3480 - ldr r0, [r5] - ldr r3, [r0, 0x24] - ldrb r1, [r0, 0x4] - lsls r1, 8 - ldrb r0, [r0, 0x6] - ldr r2, _082E3484 - orrs r0, r2 - orrs r1, r0 - str r1, [r3] - ldr r2, _082E3488 - ldr r1, [r5] - ldr r0, [r1, 0x24] - ldr r0, [r0] - str r0, [r2] - movs r2, 0 - str r2, [r1] - movs r0, 0x1 - strb r0, [r1, 0x5] - ldr r4, _082E348C - ldrh r3, [r4] - strh r2, [r4] - ldr r2, _082E3490 - ldr r1, [r5] - movs r0, 0x8 - ldrb r1, [r1, 0xA] - lsls r0, r1 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r2] - strh r3, [r4] - ldr r1, _082E3494 - ldr r2, _082E3498 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_082E3480: .4byte gRfuState -_082E3484: .4byte 0x99660000 -_082E3488: .4byte 0x04000120 -_082E348C: .4byte 0x04000208 -_082E3490: .4byte 0x04000200 -_082E3494: .4byte 0x04000128 -_082E3498: .4byte 0x00005083 - thumb_func_end STWI_start_Command - thumb_func_start STWI_restart_Command STWI_restart_Command: @ 82E349C push {r4,lr} diff --git a/src/librfu.c b/src/librfu.c index f1c35b1ec7..37b76ec3e0 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -73,7 +73,7 @@ struct RfuStruct vs32 unk_0; u8 txParams; u8 unk_5; - u8 unk_6; + u8 activeCommand; u8 unk_7; u8 unk_8; u8 unk_9; @@ -187,7 +187,7 @@ void AgbRFU_SoftReset(void) gRfuState->unk_0 = 0; gRfuState->txParams = 0; gRfuState->unk_5 = 0; - gRfuState->unk_6 = 0; + gRfuState->activeCommand = 0; gRfuState->unk_7 = 0; gRfuState->unk_8 = 0; gRfuState->unk_9 = 0; @@ -215,7 +215,7 @@ u16 STWI_read_status(u8 index) case 2: return gRfuState->unk_0; case 3: - return gRfuState->unk_6; + return gRfuState->activeCommand; default: return 0xFFFF; } @@ -702,7 +702,7 @@ u16 STWI_init(u8 request) else { gRfuState->unk_2c = TRUE; - gRfuState->unk_6 = request; + gRfuState->activeCommand = request; gRfuState->unk_0 = 0; gRfuState->txParams = 0; gRfuState->unk_5 = 0; @@ -719,3 +719,25 @@ u16 STWI_init(u8 request) return FALSE; } } + +int STWI_start_Command() +{ + u16 imeTemp; + + // Yes, it matters that it's casted to a u32... + *(u32*)gRfuState->txPacket->rfuPacket8.data = 0x99660000 | (gRfuState->txParams << 8) | gRfuState->activeCommand; + REG_SIODATA32 = gRfuState->txPacket->rfuPacket32.command; + + gRfuState->unk_0 = 0; + gRfuState->unk_5 = 1; + + imeTemp = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_TIMER0 << gRfuState->timerSelect); + REG_IE |= INTR_FLAG_SERIAL; + REG_IME = imeTemp; + + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS; + + return 0; +} From dd316b28e017d24567a86e972d780a43d42cd140 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Tue, 12 Sep 2017 20:11:51 -0600 Subject: [PATCH 010/182] Decompile up to ARM functions in librfu, split ARM interrupt functions into their own .s --- asm/librfu.s | 790 ---------------------------------------------- asm/librfu_intr.s | 696 ++++++++++++++++++++++++++++++++++++++++ ld_script.txt | 1 + src/librfu.c | 49 ++- 4 files changed, 744 insertions(+), 792 deletions(-) create mode 100644 asm/librfu_intr.s diff --git a/asm/librfu.s b/asm/librfu.s index 10db8da19f..a6d4dc88dd 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -4,796 +4,6 @@ .text - thumb_func_start STWI_restart_Command -STWI_restart_Command: @ 82E349C - push {r4,lr} - ldr r4, _082E34B4 - ldr r2, [r4] - ldrb r0, [r2, 0x15] - adds r3, r4, 0 - cmp r0, 0x1 - bhi _082E34B8 - adds r0, 0x1 - strb r0, [r2, 0x15] - bl STWI_start_Command - b _082E3512 - .align 2, 0 -_082E34B4: .4byte gRfuState -_082E34B8: - ldrb r0, [r2, 0x6] - cmp r0, 0x27 - beq _082E34CA - cmp r0, 0x25 - beq _082E34CA - cmp r0, 0x35 - beq _082E34CA - cmp r0, 0x37 - bne _082E34EC -_082E34CA: - ldr r0, [r3] - ldrh r1, [r0, 0x12] - movs r2, 0 - movs r1, 0x1 - strh r1, [r0, 0x12] - adds r0, 0x2C - ldrb r1, [r0] - strb r2, [r0] - ldr r1, [r3] - ldr r2, [r1, 0x18] - cmp r2, 0 - beq _082E3512 - ldrb r0, [r1, 0x6] - ldrh r1, [r1, 0x12] - bl _call_via_r2 - b _082E3512 -_082E34EC: - ldrh r0, [r2, 0x12] - movs r1, 0 - movs r0, 0x1 - strh r0, [r2, 0x12] - adds r0, r2, 0 - adds r0, 0x2C - ldrb r2, [r0] - strb r1, [r0] - ldr r1, [r4] - ldr r2, [r1, 0x18] - cmp r2, 0 - beq _082E350C - ldrb r0, [r1, 0x6] - ldrh r1, [r1, 0x12] - bl _call_via_r2 -_082E350C: - ldr r1, [r4] - movs r0, 0x4 - str r0, [r1] -_082E3512: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end STWI_restart_Command - - thumb_func_start STWI_reset_ClockCounter -STWI_reset_ClockCounter: @ 82E351C - ldr r3, _082E3548 - ldr r1, [r3] - movs r0, 0x5 - str r0, [r1] - movs r2, 0 - strb r2, [r1, 0x4] - ldr r0, [r3] - strb r2, [r0, 0x5] - ldr r1, _082E354C - movs r0, 0x80 - lsls r0, 24 - str r0, [r1] - adds r1, 0x8 - strh r2, [r1] - ldr r2, _082E3550 - adds r0, r2, 0 - strh r0, [r1] - adds r2, 0x7F - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - bx lr - .align 2, 0 -_082E3548: .4byte gRfuState -_082E354C: .4byte 0x04000120 -_082E3550: .4byte 0x00005003 - thumb_func_end STWI_reset_ClockCounter - - arm_func_start IntrSIO32 -IntrSIO32: @ 82E3554 - mov r12, sp - stmdb sp!, {r11,r12,lr,pc} - ldr r3, _082E35B4 - ldr r0, [r3] - ldr r2, [r0] - sub r11, r12, 0x4 - cmp r2, 0xA - bne _082E3590 - ldr r0, [r0, 0x20] - cmp r0, 0 - ldmdbeq r11, {r11,sp,lr} - bxeq lr - bl sub_82E3EB0 - ldmdb r11, {r11,sp,lr} - bx lr -_082E3590: - ldrb r3, [r0, 0x14] - cmp r3, 0x1 - bne _082E35A8 - bl sio32intr_clock_master - ldmdb r11, {r11,sp,lr} - bx lr -_082E35A8: - bl sio32intr_clock_slave - ldmdb r11, {r11,sp,lr} - bx lr - .align 2, 0 -_082E35B4: .4byte gRfuState - arm_func_end IntrSIO32 - - arm_func_start sio32intr_clock_master -sio32intr_clock_master: @ 82E35B8 - mov r12, sp - stmdb sp!, {r4-r6,r11,r12,lr,pc} - mov r0, 0x50 - sub r11, r12, 0x4 - bl STWI_set_timer_in_RAM - mov r4, 0x120 - ldr r2, _082E382C - add r4, r4, 0x4000000 - ldr lr, [r4] - ldr r12, [r2] - ldr r3, [r12] - mov r6, r2 - cmp r3, 0 - bne _082E3638 - cmp lr, 0x80000000 - bne _082E36B8 - ldrb r2, [r12, 0x5] - ldrb r3, [r12, 0x4] - cmp r2, r3 - bhi _082E3628 - ldr r3, [r12, 0x24] - mov r1, r2 - ldr r2, [r3, r1, lsl 2] - str r2, [r4] - ldrb r3, [r12, 0x5] - add r3, r3, 0x1 - strb r3, [r12, 0x5] - b _082E3714 -_082E3628: - mov r3, 0x1 - str r3, [r12] - str lr, [r4] - b _082E3714 -_082E3638: - ldr r3, [r12] - cmp r3, 0x1 - bne _082E36C8 - mov r3, 0x99000000 - add r3, r3, 0x660000 - mov r5, 0x80000000 - and r2, lr, r5, asr 15 - cmp r2, r3 - bne _082E36B8 - mov r3, 0 - strb r3, [r12, 0x8] - ldr r1, [r6] - ldrb r0, [r1, 0x8] - ldr r2, [r1, 0x28] - str lr, [r2, r0, lsl 2] - ldrb r3, [r1, 0x8] - add r3, r3, 0x1 - strb r3, [r1, 0x8] - ldr r2, [r6] - strb lr, [r2, 0x9] - ldr r3, [r6] - mov r2, lr, lsr 8 - strb r2, [r3, 0x7] - ldr r1, [r6] - ldrb r2, [r1, 0x7] - ldrb r3, [r1, 0x8] - cmp r2, r3 - bcc _082E3700 - mov r3, 0x2 - str r3, [r1] - str r5, [r4] - b _082E3714 -_082E36B8: - bl STWI_stop_timer_in_RAM - mov r0, 0x82 - bl STWI_set_timer_in_RAM - b _082E3840 -_082E36C8: - ldr r3, [r12] - cmp r3, 0x2 - bne _082E3714 - ldrb r1, [r12, 0x8] - ldr r2, [r12, 0x28] - str lr, [r2, r1, lsl 2] - ldrb r3, [r12, 0x8] - add r3, r3, 0x1 - strb r3, [r12, 0x8] - ldr r1, [r6] - ldrb r2, [r1, 0x7] - ldrb r3, [r1, 0x8] - cmp r2, r3 - bcs _082E370C -_082E3700: - mov r3, 0x3 - str r3, [r1] - b _082E3714 -_082E370C: - mov r3, 0x80000000 - str r3, [r4] -_082E3714: - mov r0, 0x1 - bl handshake_wait - mov r0, r0, lsl 16 - cmp r0, 0x10000 - beq _082E3840 - mov r4, 0x128 - add r4, r4, 0x4000000 - mov r5, 0x5000 - add r3, r5, 0xB - strh r3, [r4] - mov r0, 0 - bl handshake_wait - mov r0, r0, lsl 16 - cmp r0, 0x10000 - beq _082E3840 - bl STWI_stop_timer_in_RAM - ldr r1, [r6] - ldr r0, [r1] - cmp r0, 0x3 - bne _082E3830 - ldrb r3, [r1, 0x9] - cmp r3, 0xA5 - cmpne r3, 0xA7 - beq _082E3788 - and r3, r3, 0xFF - cmp r3, 0xB5 - beq _082E3788 - cmp r3, 0xB7 - bne _082E37D0 -_082E3788: - mov r1, 0x120 - add r1, r1, 0x4000000 - mov r12, 0x128 - add r12, r12, 0x4000000 - ldr r0, [r6] - mov r3, 0 - strb r3, [r0, 0x14] - mov r2, 0x80000000 - str r2, [r1] - add r3, r3, 0x5000 - add r2, r3, 0x2 - strh r2, [r12] - add r3, r3, 0x82 - strh r3, [r12] - ldr r2, [r6] - mov r3, 0x5 - str r3, [r2] - b _082E3800 -_082E37D0: - cmp r3, 0xEE - bne _082E37F0 - add r3, r5, 0x3 - strh r3, [r4] - mov r2, 0x4 - str r2, [r1] - strh r0, [r1, 0x12] - b _082E3800 -_082E37F0: - add r3, r5, 0x3 - strh r3, [r4] - mov r2, 0x4 - str r2, [r1] -_082E3800: - ldr r2, [r6] - mov r3, 0 - strb r3, [r2, 0x2C] - ldr r0, [r6] - ldr r2, [r0, 0x18] - cmp r2, r3 - beq _082E3840 - ldrh r1, [r0, 0x12] - ldrb r0, [r0, 0x6] - bl sub_82E3EA8 - b _082E3840 - .align 2, 0 -_082E382C: .4byte gRfuState -_082E3830: - add r3, r5, 0x3 - strh r3, [r4] - add r2, r5, 0x83 - strh r2, [r4] -_082E3840: - ldmdb r11, {r4-r6,r11,sp,lr} - bx lr - arm_func_end sio32intr_clock_master - - arm_func_start sio32intr_clock_slave -sio32intr_clock_slave: @ 82E3848 - mov r12, sp - stmdb sp!, {r4-r6,r11,r12,lr,pc} - ldr r4, _082E3BF4 - mov r0, 0x64 - ldr r3, [r4] - mov r6, 0 - strb r6, [r3, 0x10] - sub r11, r12, 0x4 - bl STWI_set_timer_in_RAM - mov r0, r6 - bl handshake_wait - mov r0, r0, lsl 16 - cmp r0, 0x10000 - mov r5, r4 - beq _082E3C4C - mov r3, 0x128 - add r3, r3, 0x4000000 - mov r2, 0x5000 - add r2, r2, 0xA - strh r2, [r3] - mov lr, 0x120 - ldr r0, [r5] - add lr, lr, 0x4000000 - ldr r12, [lr] - ldr r3, [r0] - cmp r3, 0x5 - bne _082E3978 - ldr r3, [r0, 0x28] - mov r4, 0x1 - mov r0, 0x99000000 - str r12, [r3] - add r0, r0, 0x660000 - ldr r2, [r5] - mov r3, r0, lsr 16 - strb r4, [r2, 0x5] - cmp r3, r12, lsr 16 - bne _082E3AC4 - ldr r3, [r5] - mov r2, r12, lsr 8 - strb r2, [r3, 0x4] - ldr r2, [r5] - strb r12, [r2, 0x6] - ldr r1, [r5] - ldrb r3, [r1, 0x4] - cmp r3, r6 - bne _082E395C - ldrb r2, [r1, 0x6] - sub r3, r2, 0x27 - cmp r2, 0x36 - cmpne r3, 0x2 - bhi _082E3930 - add r3, r2, 0x80 - strb r3, [r1, 0x9] - ldr r2, [r5] - ldrb r3, [r2, 0x9] - ldr r1, [r2, 0x24] - add r3, r3, r0 - b _082E39E0 -_082E3930: - ldr r2, [r1, 0x24] - ldr r3, _082E3BF8 - str r3, [r2] - ldr r2, [r5] - ldrb r3, [r2, 0x6] - sub r3, r3, 0x10 - cmp r3, 0x2D - bhi _082E3A18 - ldr r3, [r2, 0x24] - str r4, [r3, 0x4] - b _082E3A24 -_082E395C: - mov r3, 0x80000000 - str r3, [lr] - strb r4, [r1, 0x5] - ldr r2, [r5] - add r3, r3, 0x80000006 - str r3, [r2] - b _082E3AD4 -_082E3978: - ldr r3, [r0] - cmp r3, 0x6 - bne _082E3A78 - ldrb r1, [r0, 0x5] - ldr r2, [r0, 0x28] - str r12, [r2, r1, lsl 2] - ldrb r3, [r0, 0x5] - add r3, r3, 0x1 - strb r3, [r0, 0x5] - ldr r1, [r5] - ldrb r2, [r1, 0x4] - ldrb r3, [r1, 0x5] - cmp r2, r3 - bcs _082E3A6C - ldrb r2, [r1, 0x6] - sub r3, r2, 0x28 - cmp r2, 0x36 - cmpne r3, 0x1 - bhi _082E39F0 - add r3, r2, 0x80 - strb r3, [r1, 0x9] - ldr r2, [r5] - ldrb r3, [r2, 0x9] - ldr r1, [r2, 0x24] - orr r3, r3, 0x99000000 - orr r3, r3, 0x660000 -_082E39E0: - str r3, [r1] - ldr r2, [r5] - strb r6, [r2, 0x7] - b _082E3A3C -_082E39F0: - ldr r2, [r1, 0x24] - ldr r3, _082E3BF8 - str r3, [r2] - ldr r2, [r5] - ldrb r3, [r2, 0x6] - sub r3, r3, 0x10 - cmp r3, 0x2D - ldrls r2, [r2, 0x24] - movls r3, 0x1 - bls _082E3A20 -_082E3A18: - ldr r2, [r2, 0x24] - mov r3, 0x2 -_082E3A20: - str r3, [r2, 0x4] -_082E3A24: - ldr r2, [r5] - mov r3, 0x1 - strb r3, [r2, 0x7] - ldr r1, [r5] - add r3, r3, 0x2 - strh r3, [r1, 0x12] -_082E3A3C: - ldr r0, [r5] - ldr r2, [r0, 0x24] - mov r3, 0x120 - ldr r1, [r2] - add r3, r3, 0x4000000 - str r1, [r3] - mov r2, 0x1 - strb r2, [r0, 0x8] - ldr r1, [r5] - mov r3, 0x7 - str r3, [r1] - b _082E3AD4 -_082E3A6C: - mov r3, 0x80000000 - str r3, [lr] - b _082E3AD4 -_082E3A78: - ldr r3, [r0] - cmp r3, 0x7 - bne _082E3AD4 - cmp r12, 0x80000000 - bne _082E3AC4 - ldrb r2, [r0, 0x7] - ldrb r3, [r0, 0x8] - cmp r2, r3 - movcc r3, 0x8 - strcc r3, [r0] - bcc _082E3AD4 - ldrb r1, [r0, 0x8] - ldr r3, [r0, 0x24] - ldr r2, [r3, r1, lsl 2] - str r2, [lr] - ldrb r3, [r0, 0x8] - add r3, r3, 0x1 - strb r3, [r0, 0x8] - b _082E3AD4 -_082E3AC4: - bl STWI_stop_timer_in_RAM - mov r0, 0x64 - bl STWI_set_timer_in_RAM - b _082E3C4C -_082E3AD4: - mov r0, 0x1 - bl handshake_wait - mov r0, r0, lsl 16 - cmp r0, 0x10000 - beq _082E3C4C - mov r6, r5 - ldr r3, [r6] - ldr r2, [r3] - cmp r2, 0x8 - bne _082E3B9C - mov r4, 0x128 - add r4, r4, 0x4000000 - mov r3, 0x5000 - add r3, r3, 0x2 - strh r3, [r4] - bl STWI_stop_timer_in_RAM - ldr r0, [r6] - ldrh r3, [r0, 0x12] - cmp r3, 0x3 - bne _082E3B48 - bl STWI_init_slave - ldr r3, [r6] - ldr r1, [r3, 0x1C] - cmp r1, 0 - beq _082E3C4C - mov r0, 0x1EC - add r0, r0, 0x2 - bl sub_82E3EAC - b _082E3C4C -_082E3B48: - mov r3, 0x120 - add r3, r3, 0x4000000 - mov r1, 0 - str r1, [r3] - mov r2, 0x5000 - strh r1, [r4] - add r2, r2, 0x3 - strh r2, [r4] - mov r3, 0x1 - strb r3, [r0, 0x14] - ldr r0, [r5] - ldr r2, [r0, 0x1C] - str r1, [r0] - cmp r2, r1 - beq _082E3C4C - ldrb r3, [r0, 0x4] - ldrb r0, [r0, 0x6] - mov r1, r2 - orr r0, r0, r3, lsl 8 - bl sub_82E3EAC - b _082E3C4C -_082E3B9C: - mov r3, 0x208 - add r3, r3, 0x4000000 - mov r2, 0 - strh r2, [r3] - mov r1, 0x100 - add r2, r1, 0x4000002 - ldrh r3, [r2] - tst r3, 0x80 - beq _082E3C20 - ldrh r3, [r2] - tst r3, 0x3 - bne _082E3BFC - mov r2, 0xFF00 - add r1, r1, 0x4000000 - ldrh r3, [r1] - add r2, r2, 0x9B - cmp r3, r2 - bls _082E3C20 -_082E3BE4: - ldrh r3, [r1] - cmp r3, r2 - bhi _082E3BE4 - b _082E3C20 - .align 2, 0 -_082E3BF4: .4byte gRfuState -_082E3BF8: .4byte 0x996601ee -_082E3BFC: - mov r2, 0xFF00 - add r1, r1, 0x4000000 - ldrh r3, [r1] - add r2, r2, 0xFE - cmp r3, r2 - bls _082E3C20 -_082E3C14: - ldrh r3, [r1] - cmp r3, r2 - bhi _082E3C14 -_082E3C20: - mov r1, 0x128 - add r1, r1, 0x4000000 - mov r0, 0x208 - add r0, r0, 0x4000000 - mov r3, 0x5000 - add r2, r3, 0x2 - strh r2, [r1] - add r3, r3, 0x82 - strh r3, [r1] - mov r2, 0x1 - strh r2, [r0] -_082E3C4C: - ldmdb r11, {r4-r6,r11,sp,lr} - bx lr - arm_func_end sio32intr_clock_slave - - arm_func_start handshake_wait -handshake_wait: @ 82E3C54 - mov r12, sp - stmdb sp!, {r11,r12,lr,pc} - mov r1, 0x128 - add r1, r1, 0x4000000 - mov r0, r0, lsl 16 - ldr r2, _082E3CB8 - sub r11, r12, 0x4 - mov lr, r0, lsr 14 - ldr r12, [r2] -_082E3C78: - ldrb r3, [r12, 0x10] - and r0, r3, 0xFF - cmp r0, 0x1 - beq _082E3CA4 - ldrh r3, [r1] - and r3, r3, 0x4 - cmp r3, lr - bne _082E3C78 - mov r0, 0 - ldmdb r11, {r11,sp,lr} - bx lr -_082E3CA4: - ldr r2, [r2] - mov r3, 0 - strb r3, [r2, 0x10] - ldmdb r11, {r11,sp,lr} - bx lr - .align 2, 0 -_082E3CB8: .4byte gRfuState - arm_func_end handshake_wait - - arm_func_start STWI_set_timer_in_RAM -STWI_set_timer_in_RAM: @ 82E3CBC - mov r12, sp - stmdb sp!, {r4,r5,r11,r12,lr,pc} - mov r1, 0x208 - add r1, r1, 0x4000000 - mov r3, 0 - sub r11, r12, 0x4 - ldr r12, _082E3D74 - and lr, r0, 0xFF - ldr r2, [r12] - cmp lr, 0x50 - ldrb r0, [r2, 0xA] - mov r4, r12 - mov r2, lr - strh r3, [r1] - mov r0, r0, lsl 2 - add r3, r3, 0x100 - add r1, r3, 0x4000000 - add r3, r3, 0x4000002 - add r5, r0, r3 - beq _082E3D44 - bgt _082E3D1C - cmp lr, 0x32 - beq _082E3D30 - b _082E3D90 -_082E3D1C: - cmp r2, 0x64 - beq _082E3D5C - cmp r2, 0x82 - beq _082E3D78 - b _082E3D90 -_082E3D30: - mvn r3, 0x334 - strh r3, [r0, r1] - ldr r2, [r4] - mov r3, 0x1 - b _082E3D8C -_082E3D44: - mov r3, 0xAE000000 - mov r3, r3, asr 20 - strh r3, [r0, r1] - ldr r2, [r4] - mov r3, 0x2 - b _082E3D8C -_082E3D5C: - mvn r3, 0x660 - sub r3, r3, 0x9 - strh r3, [r0, r1] - ldr r2, [r4] - mov r3, 0x3 - b _082E3D8C - .align 2, 0 -_082E3D74: .4byte gRfuState -_082E3D78: - mvn r3, 0x850 - sub r3, r3, 0x2 - strh r3, [r0, r1] - ldr r2, [r4] - mov r3, 0x4 -_082E3D8C: - str r3, [r2, 0xC] -_082E3D90: - mov r12, 0x200 - add r12, r12, 0x4000002 - mov r3, 0xC3 - strh r3, [r5] - mov r1, 0x208 - ldr r2, [r4] - add r1, r1, 0x4000000 - ldrb r0, [r2, 0xA] - sub r3, r3, 0xBB - mov r3, r3, lsl r0 - strh r3, [r12] - mov r2, 0x1 - strh r2, [r1] - ldmdb r11, {r4,r5,r11,sp,lr} - bx lr - arm_func_end STWI_set_timer_in_RAM - - arm_func_start STWI_stop_timer_in_RAM -STWI_stop_timer_in_RAM: @ 82E3DCC - mov r12, sp - stmdb sp!, {r11,r12,lr,pc} - mov r1, 0x100 - ldr lr, _082E3E18 - add r0, r1, 0x4000000 - ldr r2, [lr] - sub r11, r12, 0x4 - ldrb r3, [r2, 0xA] - mov r12, 0 - str r12, [r2, 0xC] - mov r3, r3, lsl 2 - strh r12, [r3, r0] - ldr r2, [lr] - ldrb r3, [r2, 0xA] - add r1, r1, 0x4000002 - mov r3, r3, lsl 2 - strh r12, [r3, r1] - ldmdb r11, {r11,sp,lr} - bx lr - .align 2, 0 -_082E3E18: .4byte gRfuState - arm_func_end STWI_stop_timer_in_RAM - - arm_func_start STWI_init_slave -STWI_init_slave: @ 82E3E1C - mov r12, sp - stmdb sp!, {r11,r12,lr,pc} - ldr r0, _082E3EA4 - ldr r2, [r0] - mov r3, 0x5 - str r3, [r2] - mov r1, 0 - strb r1, [r2, 0x14] - ldr r3, [r0] - strb r1, [r3, 0x4] - ldr r2, [r0] - strb r1, [r2, 0x5] - ldr r3, [r0] - strb r1, [r3, 0x6] - ldr r2, [r0] - strb r1, [r2, 0x7] - ldr r3, [r0] - strb r1, [r3, 0x8] - ldr r2, [r0] - strb r1, [r2, 0x9] - ldr r3, [r0] - str r1, [r3, 0xC] - sub r11, r12, 0x4 - strb r1, [r3, 0x10] - mov r2, 0x128 - ldr r12, [r0] - add r2, r2, 0x4000000 - strh r1, [r12, 0x12] - mov r3, 0x5000 - strb r1, [r12, 0x15] - add r3, r3, 0x82 - strh r3, [r2] - ldmdb r11, {r11,sp,lr} - bx lr - .align 2, 0 -_082E3EA4: .4byte gRfuState - arm_func_end STWI_init_slave - - arm_func_start sub_82E3EA8 -sub_82E3EA8: @ 82E3EA8 - bx r2 - arm_func_end sub_82E3EA8 - - arm_func_start sub_82E3EAC -sub_82E3EAC: @ 82E3EAC - bx r1 - arm_func_end sub_82E3EAC - - arm_func_start sub_82E3EB0 -sub_82E3EB0: @ 82E3EB0 - bx r0 - arm_func_end sub_82E3EB0 - thumb_func_start rfu_initializeAPI rfu_initializeAPI: @ 82E3EB4 push {r4-r7,lr} diff --git a/asm/librfu_intr.s b/asm/librfu_intr.s new file mode 100644 index 0000000000..7f375e419e --- /dev/null +++ b/asm/librfu_intr.s @@ -0,0 +1,696 @@ + .include "asm/macros.inc" + + .syntax unified + + .text + + arm_func_start IntrSIO32 +IntrSIO32: @ 82E3554 + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + ldr r3, _082E35B4 + ldr r0, [r3] + ldr r2, [r0] + sub r11, r12, 0x4 + cmp r2, 0xA + bne _082E3590 + ldr r0, [r0, 0x20] + cmp r0, 0 + ldmdbeq r11, {r11,sp,lr} + bxeq lr + bl sub_82E3EB0 + ldmdb r11, {r11,sp,lr} + bx lr +_082E3590: + ldrb r3, [r0, 0x14] + cmp r3, 0x1 + bne _082E35A8 + bl sio32intr_clock_master + ldmdb r11, {r11,sp,lr} + bx lr +_082E35A8: + bl sio32intr_clock_slave + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_082E35B4: .4byte gRfuState + arm_func_end IntrSIO32 + + arm_func_start sio32intr_clock_master +sio32intr_clock_master: @ 82E35B8 + mov r12, sp + stmdb sp!, {r4-r6,r11,r12,lr,pc} + mov r0, 0x50 + sub r11, r12, 0x4 + bl STWI_set_timer_in_RAM + mov r4, 0x120 + ldr r2, _082E382C + add r4, r4, 0x4000000 + ldr lr, [r4] + ldr r12, [r2] + ldr r3, [r12] + mov r6, r2 + cmp r3, 0 + bne _082E3638 + cmp lr, 0x80000000 + bne _082E36B8 + ldrb r2, [r12, 0x5] + ldrb r3, [r12, 0x4] + cmp r2, r3 + bhi _082E3628 + ldr r3, [r12, 0x24] + mov r1, r2 + ldr r2, [r3, r1, lsl 2] + str r2, [r4] + ldrb r3, [r12, 0x5] + add r3, r3, 0x1 + strb r3, [r12, 0x5] + b _082E3714 +_082E3628: + mov r3, 0x1 + str r3, [r12] + str lr, [r4] + b _082E3714 +_082E3638: + ldr r3, [r12] + cmp r3, 0x1 + bne _082E36C8 + mov r3, 0x99000000 + add r3, r3, 0x660000 + mov r5, 0x80000000 + and r2, lr, r5, asr 15 + cmp r2, r3 + bne _082E36B8 + mov r3, 0 + strb r3, [r12, 0x8] + ldr r1, [r6] + ldrb r0, [r1, 0x8] + ldr r2, [r1, 0x28] + str lr, [r2, r0, lsl 2] + ldrb r3, [r1, 0x8] + add r3, r3, 0x1 + strb r3, [r1, 0x8] + ldr r2, [r6] + strb lr, [r2, 0x9] + ldr r3, [r6] + mov r2, lr, lsr 8 + strb r2, [r3, 0x7] + ldr r1, [r6] + ldrb r2, [r1, 0x7] + ldrb r3, [r1, 0x8] + cmp r2, r3 + bcc _082E3700 + mov r3, 0x2 + str r3, [r1] + str r5, [r4] + b _082E3714 +_082E36B8: + bl STWI_stop_timer_in_RAM + mov r0, 0x82 + bl STWI_set_timer_in_RAM + b _082E3840 +_082E36C8: + ldr r3, [r12] + cmp r3, 0x2 + bne _082E3714 + ldrb r1, [r12, 0x8] + ldr r2, [r12, 0x28] + str lr, [r2, r1, lsl 2] + ldrb r3, [r12, 0x8] + add r3, r3, 0x1 + strb r3, [r12, 0x8] + ldr r1, [r6] + ldrb r2, [r1, 0x7] + ldrb r3, [r1, 0x8] + cmp r2, r3 + bcs _082E370C +_082E3700: + mov r3, 0x3 + str r3, [r1] + b _082E3714 +_082E370C: + mov r3, 0x80000000 + str r3, [r4] +_082E3714: + mov r0, 0x1 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + beq _082E3840 + mov r4, 0x128 + add r4, r4, 0x4000000 + mov r5, 0x5000 + add r3, r5, 0xB + strh r3, [r4] + mov r0, 0 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + beq _082E3840 + bl STWI_stop_timer_in_RAM + ldr r1, [r6] + ldr r0, [r1] + cmp r0, 0x3 + bne _082E3830 + ldrb r3, [r1, 0x9] + cmp r3, 0xA5 + cmpne r3, 0xA7 + beq _082E3788 + and r3, r3, 0xFF + cmp r3, 0xB5 + beq _082E3788 + cmp r3, 0xB7 + bne _082E37D0 +_082E3788: + mov r1, 0x120 + add r1, r1, 0x4000000 + mov r12, 0x128 + add r12, r12, 0x4000000 + ldr r0, [r6] + mov r3, 0 + strb r3, [r0, 0x14] + mov r2, 0x80000000 + str r2, [r1] + add r3, r3, 0x5000 + add r2, r3, 0x2 + strh r2, [r12] + add r3, r3, 0x82 + strh r3, [r12] + ldr r2, [r6] + mov r3, 0x5 + str r3, [r2] + b _082E3800 +_082E37D0: + cmp r3, 0xEE + bne _082E37F0 + add r3, r5, 0x3 + strh r3, [r4] + mov r2, 0x4 + str r2, [r1] + strh r0, [r1, 0x12] + b _082E3800 +_082E37F0: + add r3, r5, 0x3 + strh r3, [r4] + mov r2, 0x4 + str r2, [r1] +_082E3800: + ldr r2, [r6] + mov r3, 0 + strb r3, [r2, 0x2C] + ldr r0, [r6] + ldr r2, [r0, 0x18] + cmp r2, r3 + beq _082E3840 + ldrh r1, [r0, 0x12] + ldrb r0, [r0, 0x6] + bl sub_82E3EA8 + b _082E3840 + .align 2, 0 +_082E382C: .4byte gRfuState +_082E3830: + add r3, r5, 0x3 + strh r3, [r4] + add r2, r5, 0x83 + strh r2, [r4] +_082E3840: + ldmdb r11, {r4-r6,r11,sp,lr} + bx lr + arm_func_end sio32intr_clock_master + + arm_func_start sio32intr_clock_slave +sio32intr_clock_slave: @ 82E3848 + mov r12, sp + stmdb sp!, {r4-r6,r11,r12,lr,pc} + ldr r4, _082E3BF4 + mov r0, 0x64 + ldr r3, [r4] + mov r6, 0 + strb r6, [r3, 0x10] + sub r11, r12, 0x4 + bl STWI_set_timer_in_RAM + mov r0, r6 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + mov r5, r4 + beq _082E3C4C + mov r3, 0x128 + add r3, r3, 0x4000000 + mov r2, 0x5000 + add r2, r2, 0xA + strh r2, [r3] + mov lr, 0x120 + ldr r0, [r5] + add lr, lr, 0x4000000 + ldr r12, [lr] + ldr r3, [r0] + cmp r3, 0x5 + bne _082E3978 + ldr r3, [r0, 0x28] + mov r4, 0x1 + mov r0, 0x99000000 + str r12, [r3] + add r0, r0, 0x660000 + ldr r2, [r5] + mov r3, r0, lsr 16 + strb r4, [r2, 0x5] + cmp r3, r12, lsr 16 + bne _082E3AC4 + ldr r3, [r5] + mov r2, r12, lsr 8 + strb r2, [r3, 0x4] + ldr r2, [r5] + strb r12, [r2, 0x6] + ldr r1, [r5] + ldrb r3, [r1, 0x4] + cmp r3, r6 + bne _082E395C + ldrb r2, [r1, 0x6] + sub r3, r2, 0x27 + cmp r2, 0x36 + cmpne r3, 0x2 + bhi _082E3930 + add r3, r2, 0x80 + strb r3, [r1, 0x9] + ldr r2, [r5] + ldrb r3, [r2, 0x9] + ldr r1, [r2, 0x24] + add r3, r3, r0 + b _082E39E0 +_082E3930: + ldr r2, [r1, 0x24] + ldr r3, _082E3BF8 + str r3, [r2] + ldr r2, [r5] + ldrb r3, [r2, 0x6] + sub r3, r3, 0x10 + cmp r3, 0x2D + bhi _082E3A18 + ldr r3, [r2, 0x24] + str r4, [r3, 0x4] + b _082E3A24 +_082E395C: + mov r3, 0x80000000 + str r3, [lr] + strb r4, [r1, 0x5] + ldr r2, [r5] + add r3, r3, 0x80000006 + str r3, [r2] + b _082E3AD4 +_082E3978: + ldr r3, [r0] + cmp r3, 0x6 + bne _082E3A78 + ldrb r1, [r0, 0x5] + ldr r2, [r0, 0x28] + str r12, [r2, r1, lsl 2] + ldrb r3, [r0, 0x5] + add r3, r3, 0x1 + strb r3, [r0, 0x5] + ldr r1, [r5] + ldrb r2, [r1, 0x4] + ldrb r3, [r1, 0x5] + cmp r2, r3 + bcs _082E3A6C + ldrb r2, [r1, 0x6] + sub r3, r2, 0x28 + cmp r2, 0x36 + cmpne r3, 0x1 + bhi _082E39F0 + add r3, r2, 0x80 + strb r3, [r1, 0x9] + ldr r2, [r5] + ldrb r3, [r2, 0x9] + ldr r1, [r2, 0x24] + orr r3, r3, 0x99000000 + orr r3, r3, 0x660000 +_082E39E0: + str r3, [r1] + ldr r2, [r5] + strb r6, [r2, 0x7] + b _082E3A3C +_082E39F0: + ldr r2, [r1, 0x24] + ldr r3, _082E3BF8 + str r3, [r2] + ldr r2, [r5] + ldrb r3, [r2, 0x6] + sub r3, r3, 0x10 + cmp r3, 0x2D + ldrls r2, [r2, 0x24] + movls r3, 0x1 + bls _082E3A20 +_082E3A18: + ldr r2, [r2, 0x24] + mov r3, 0x2 +_082E3A20: + str r3, [r2, 0x4] +_082E3A24: + ldr r2, [r5] + mov r3, 0x1 + strb r3, [r2, 0x7] + ldr r1, [r5] + add r3, r3, 0x2 + strh r3, [r1, 0x12] +_082E3A3C: + ldr r0, [r5] + ldr r2, [r0, 0x24] + mov r3, 0x120 + ldr r1, [r2] + add r3, r3, 0x4000000 + str r1, [r3] + mov r2, 0x1 + strb r2, [r0, 0x8] + ldr r1, [r5] + mov r3, 0x7 + str r3, [r1] + b _082E3AD4 +_082E3A6C: + mov r3, 0x80000000 + str r3, [lr] + b _082E3AD4 +_082E3A78: + ldr r3, [r0] + cmp r3, 0x7 + bne _082E3AD4 + cmp r12, 0x80000000 + bne _082E3AC4 + ldrb r2, [r0, 0x7] + ldrb r3, [r0, 0x8] + cmp r2, r3 + movcc r3, 0x8 + strcc r3, [r0] + bcc _082E3AD4 + ldrb r1, [r0, 0x8] + ldr r3, [r0, 0x24] + ldr r2, [r3, r1, lsl 2] + str r2, [lr] + ldrb r3, [r0, 0x8] + add r3, r3, 0x1 + strb r3, [r0, 0x8] + b _082E3AD4 +_082E3AC4: + bl STWI_stop_timer_in_RAM + mov r0, 0x64 + bl STWI_set_timer_in_RAM + b _082E3C4C +_082E3AD4: + mov r0, 0x1 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + beq _082E3C4C + mov r6, r5 + ldr r3, [r6] + ldr r2, [r3] + cmp r2, 0x8 + bne _082E3B9C + mov r4, 0x128 + add r4, r4, 0x4000000 + mov r3, 0x5000 + add r3, r3, 0x2 + strh r3, [r4] + bl STWI_stop_timer_in_RAM + ldr r0, [r6] + ldrh r3, [r0, 0x12] + cmp r3, 0x3 + bne _082E3B48 + bl STWI_init_slave + ldr r3, [r6] + ldr r1, [r3, 0x1C] + cmp r1, 0 + beq _082E3C4C + mov r0, 0x1EC + add r0, r0, 0x2 + bl sub_82E3EAC + b _082E3C4C +_082E3B48: + mov r3, 0x120 + add r3, r3, 0x4000000 + mov r1, 0 + str r1, [r3] + mov r2, 0x5000 + strh r1, [r4] + add r2, r2, 0x3 + strh r2, [r4] + mov r3, 0x1 + strb r3, [r0, 0x14] + ldr r0, [r5] + ldr r2, [r0, 0x1C] + str r1, [r0] + cmp r2, r1 + beq _082E3C4C + ldrb r3, [r0, 0x4] + ldrb r0, [r0, 0x6] + mov r1, r2 + orr r0, r0, r3, lsl 8 + bl sub_82E3EAC + b _082E3C4C +_082E3B9C: + mov r3, 0x208 + add r3, r3, 0x4000000 + mov r2, 0 + strh r2, [r3] + mov r1, 0x100 + add r2, r1, 0x4000002 + ldrh r3, [r2] + tst r3, 0x80 + beq _082E3C20 + ldrh r3, [r2] + tst r3, 0x3 + bne _082E3BFC + mov r2, 0xFF00 + add r1, r1, 0x4000000 + ldrh r3, [r1] + add r2, r2, 0x9B + cmp r3, r2 + bls _082E3C20 +_082E3BE4: + ldrh r3, [r1] + cmp r3, r2 + bhi _082E3BE4 + b _082E3C20 + .align 2, 0 +_082E3BF4: .4byte gRfuState +_082E3BF8: .4byte 0x996601ee +_082E3BFC: + mov r2, 0xFF00 + add r1, r1, 0x4000000 + ldrh r3, [r1] + add r2, r2, 0xFE + cmp r3, r2 + bls _082E3C20 +_082E3C14: + ldrh r3, [r1] + cmp r3, r2 + bhi _082E3C14 +_082E3C20: + mov r1, 0x128 + add r1, r1, 0x4000000 + mov r0, 0x208 + add r0, r0, 0x4000000 + mov r3, 0x5000 + add r2, r3, 0x2 + strh r2, [r1] + add r3, r3, 0x82 + strh r3, [r1] + mov r2, 0x1 + strh r2, [r0] +_082E3C4C: + ldmdb r11, {r4-r6,r11,sp,lr} + bx lr + arm_func_end sio32intr_clock_slave + + arm_func_start handshake_wait +handshake_wait: @ 82E3C54 + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + mov r1, 0x128 + add r1, r1, 0x4000000 + mov r0, r0, lsl 16 + ldr r2, _082E3CB8 + sub r11, r12, 0x4 + mov lr, r0, lsr 14 + ldr r12, [r2] +_082E3C78: + ldrb r3, [r12, 0x10] + and r0, r3, 0xFF + cmp r0, 0x1 + beq _082E3CA4 + ldrh r3, [r1] + and r3, r3, 0x4 + cmp r3, lr + bne _082E3C78 + mov r0, 0 + ldmdb r11, {r11,sp,lr} + bx lr +_082E3CA4: + ldr r2, [r2] + mov r3, 0 + strb r3, [r2, 0x10] + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_082E3CB8: .4byte gRfuState + arm_func_end handshake_wait + + arm_func_start STWI_set_timer_in_RAM +STWI_set_timer_in_RAM: @ 82E3CBC + mov r12, sp + stmdb sp!, {r4,r5,r11,r12,lr,pc} + mov r1, 0x208 + add r1, r1, 0x4000000 + mov r3, 0 + sub r11, r12, 0x4 + ldr r12, _082E3D74 + and lr, r0, 0xFF + ldr r2, [r12] + cmp lr, 0x50 + ldrb r0, [r2, 0xA] + mov r4, r12 + mov r2, lr + strh r3, [r1] + mov r0, r0, lsl 2 + add r3, r3, 0x100 + add r1, r3, 0x4000000 + add r3, r3, 0x4000002 + add r5, r0, r3 + beq _082E3D44 + bgt _082E3D1C + cmp lr, 0x32 + beq _082E3D30 + b _082E3D90 +_082E3D1C: + cmp r2, 0x64 + beq _082E3D5C + cmp r2, 0x82 + beq _082E3D78 + b _082E3D90 +_082E3D30: + mvn r3, 0x334 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x1 + b _082E3D8C +_082E3D44: + mov r3, 0xAE000000 + mov r3, r3, asr 20 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x2 + b _082E3D8C +_082E3D5C: + mvn r3, 0x660 + sub r3, r3, 0x9 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x3 + b _082E3D8C + .align 2, 0 +_082E3D74: .4byte gRfuState +_082E3D78: + mvn r3, 0x850 + sub r3, r3, 0x2 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x4 +_082E3D8C: + str r3, [r2, 0xC] +_082E3D90: + mov r12, 0x200 + add r12, r12, 0x4000002 + mov r3, 0xC3 + strh r3, [r5] + mov r1, 0x208 + ldr r2, [r4] + add r1, r1, 0x4000000 + ldrb r0, [r2, 0xA] + sub r3, r3, 0xBB + mov r3, r3, lsl r0 + strh r3, [r12] + mov r2, 0x1 + strh r2, [r1] + ldmdb r11, {r4,r5,r11,sp,lr} + bx lr + arm_func_end STWI_set_timer_in_RAM + + arm_func_start STWI_stop_timer_in_RAM +STWI_stop_timer_in_RAM: @ 82E3DCC + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + mov r1, 0x100 + ldr lr, _082E3E18 + add r0, r1, 0x4000000 + ldr r2, [lr] + sub r11, r12, 0x4 + ldrb r3, [r2, 0xA] + mov r12, 0 + str r12, [r2, 0xC] + mov r3, r3, lsl 2 + strh r12, [r3, r0] + ldr r2, [lr] + ldrb r3, [r2, 0xA] + add r1, r1, 0x4000002 + mov r3, r3, lsl 2 + strh r12, [r3, r1] + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_082E3E18: .4byte gRfuState + arm_func_end STWI_stop_timer_in_RAM + + arm_func_start STWI_init_slave +STWI_init_slave: @ 82E3E1C + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + ldr r0, _082E3EA4 + ldr r2, [r0] + mov r3, 0x5 + str r3, [r2] + mov r1, 0 + strb r1, [r2, 0x14] + ldr r3, [r0] + strb r1, [r3, 0x4] + ldr r2, [r0] + strb r1, [r2, 0x5] + ldr r3, [r0] + strb r1, [r3, 0x6] + ldr r2, [r0] + strb r1, [r2, 0x7] + ldr r3, [r0] + strb r1, [r3, 0x8] + ldr r2, [r0] + strb r1, [r2, 0x9] + ldr r3, [r0] + str r1, [r3, 0xC] + sub r11, r12, 0x4 + strb r1, [r3, 0x10] + mov r2, 0x128 + ldr r12, [r0] + add r2, r2, 0x4000000 + strh r1, [r12, 0x12] + mov r3, 0x5000 + strb r1, [r12, 0x15] + add r3, r3, 0x82 + strh r3, [r2] + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_082E3EA4: .4byte gRfuState + arm_func_end STWI_init_slave + + arm_func_start sub_82E3EA8 +sub_82E3EA8: @ 82E3EA8 + bx r2 + arm_func_end sub_82E3EA8 + + arm_func_start sub_82E3EAC +sub_82E3EAC: @ 82E3EAC + bx r1 + arm_func_end sub_82E3EAC + + arm_func_start sub_82E3EB0 +sub_82E3EB0: @ 82E3EB0 + bx r0 + arm_func_end sub_82E3EB0 diff --git a/ld_script.txt b/ld_script.txt index 301f199f9b..450e9125f8 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -245,6 +245,7 @@ SECTIONS { src/agb_flash_mx.o(.text); src/siirtc.o(.text); src/librfu.o(.text); + asm/librfu_intr.o(.text); asm/librfu.o(.text); asm/libagbsyscall.o(.text); tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); diff --git a/src/librfu.c b/src/librfu.c index 37b76ec3e0..e647b91787 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -115,8 +115,8 @@ int STWI_start_Command(void); void STWI_intr_timer(void); void STWI_set_timer(u8 unk); extern void STWI_stop_timer(void); -extern void STWI_restart_Command(void); -extern void STWI_reset_ClockCounter(void); +int STWI_restart_Command(void); +int STWI_reset_ClockCounter(void); void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) { @@ -741,3 +741,48 @@ int STWI_start_Command() return 0; } + +int STWI_restart_Command(void) +{ + if (gRfuState->unk_15 <= 1) + { + gRfuState->unk_15++; + STWI_start_Command(); + } + else + { + if (gRfuState->activeCommand == RFU_MS_CHANGE || gRfuState->activeCommand == RFU_DATA_TX_AND_CHANGE || gRfuState->activeCommand == RFU_UNK35 || gRfuState->activeCommand == RFU_RESUME_RETRANSMIT_AND_CHANGE) + { + gRfuState->unk_12 = 1; + gRfuState->unk_2c = 0; + + if (gRfuState->callbackM) + gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12); + } + else + { + gRfuState->unk_12 = 1; + gRfuState->unk_2c = 0; + + if (gRfuState->callbackM) + gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12); + + gRfuState->unk_0 = 4; //TODO: what's 4 + } + } + + return 0; +} + +int STWI_reset_ClockCounter() +{ + gRfuState->unk_0 = 5; //TODO: what is 5 + gRfuState->txParams = 0; + gRfuState->unk_5 = 0; + REG_SIODATA32 = (1 << 31); + REG_SIOCNT = 0; + REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; + REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F; + + return 0; +} From b3c788f2ca9e3d0ab6e43617ed7fedfe605bc249 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 19 Sep 2017 21:01:12 +0200 Subject: [PATCH 011/182] begin work on battle4, organize battle headers --- asm/battle_2.s | 20 +- asm/battle_4.s | 1177 +------------------------------ data/battle_scripts_1.s | 10 +- include/battle.h | 58 +- include/calculate_base_damage.h | 6 + src/battle_3.c | 27 +- src/battle_4.c | 423 ++++++++++- 7 files changed, 523 insertions(+), 1198 deletions(-) create mode 100644 include/calculate_base_damage.h diff --git a/asm/battle_2.s b/asm/battle_2.s index 502f2bab86..3e1d67f4c3 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -8409,7 +8409,7 @@ bc_battle_begin_message: @ 803B120 strb r0, [r1] ldrb r1, [r1] movs r0, 0 - bl b_std_message + bl PrepareStringBattle ldr r1, =gBattleMainFunc ldr r0, =sub_803B180 str r0, [r1] @@ -8431,7 +8431,7 @@ bc_8013568: @ 803B158 str r0, [r1] movs r0, 0 movs r1, 0 - bl b_std_message + bl PrepareStringBattle _0803B170: pop {r0} bx r0 @@ -8473,7 +8473,7 @@ _0803B1BA: lsls r1, 24 lsrs r1, 24 movs r0, 0x1 - bl b_std_message + bl PrepareStringBattle ldr r1, =gBattleMainFunc ldr r0, =sub_803B25C str r0, [r1] @@ -8743,7 +8743,7 @@ _0803B3F6: lsls r1, 24 lsrs r1, 24 movs r0, 0x1 - bl b_std_message + bl PrepareStringBattle _0803B412: ldr r1, =gBattleMainFunc ldr r0, =sub_803B4C8 @@ -15698,8 +15698,8 @@ _0803F47A: bx r1 thumb_func_end get_battle_side_of_something - thumb_func_start sub_803F480 -sub_803F480: @ 803F480 + thumb_func_start PressurePPLose +PressurePPLose: @ 803F480 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 @@ -15795,7 +15795,7 @@ _0803F532: pop {r0} bx r0 .pool - thumb_func_end sub_803F480 + thumb_func_end PressurePPLose thumb_func_start sub_803F548 sub_803F548: @ 803F548 @@ -16300,8 +16300,8 @@ _0803F95E: bx r1 thumb_func_end sub_803F90C - thumb_func_start b_std_message -b_std_message: @ 803F964 + thumb_func_start PrepareStringBattle +PrepareStringBattle: @ 803F964 push {r4,lr} adds r2, r0, 0 lsls r2, 16 @@ -16317,7 +16317,7 @@ b_std_message: @ 803F964 pop {r0} bx r0 .pool - thumb_func_end b_std_message + thumb_func_end PrepareStringBattle thumb_func_start sub_803F988 sub_803F988: @ 803F988 diff --git a/asm/battle_4.s b/asm/battle_4.s index 075321c714..8300024e6e 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,1149 +5,6 @@ .text - - thumb_func_start atk00_attackcanceler -atk00_attackcanceler: @ 8045FFC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - beq _08046020 - ldr r1, =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - b _08046398 - .pool -_08046020: - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08046064 - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _08046064 - movs r0, 0x80 - lsls r0, 12 - orrs r1, r0 - str r1, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D8A4E - b _08046396 - .pool -_08046064: - bl AtkCanceller_UnableToUseMove - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08046072 - b _08046398 -_08046072: - ldr r0, =gBankTarget - ldrb r1, [r0] - str r2, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0804608A - b _08046398 -_0804608A: - ldr r4, =gBattleMons - ldr r0, =gCurrMovePos - ldrb r1, [r0] - ldr r3, =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r2, r0 - adds r1, r2 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - ldr r5, =gHitMarker - cmp r0, 0 - bne _08046108 - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xA5 - beq _08046108 - ldr r0, [r5] - ldr r1, =0x00800200 - ands r0, r1 - cmp r0, 0 - bne _08046108 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _08046108 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB07A - str r0, [r1] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - b _08046398 - .pool -_08046108: - ldr r0, [r5] - ldr r1, =0xff7fffff - ands r0, r1 - str r0, [r5] - movs r6, 0x80 - lsls r6, 18 - ands r0, r6 - cmp r0, 0 - bne _08046160 - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r1, r4, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _08046160 - bl IsPokeDisobedient - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08046160 - cmp r2, 0x2 - bne _08046150 - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - b _08046398 - .pool -_08046150: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08046398 - .pool -_08046160: - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - orrs r0, r1 - str r0, [r2] - ldr r2, =gProtectStructs - ldr r1, =gBankTarget - ldrb r3, [r1] - lsls r0, r3, 4 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 27 - mov r8, r1 - mov r9, r2 - cmp r0, 0 - bge _080461E8 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080461E8 - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r2, =0x00000115 - adds r1, r3, 0 - bl sub_803F480 - mov r0, r8 - ldrb r1, [r0] - lsls r1, 4 - add r1, r9 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB194 - b _08046396 - .pool -_080461E8: - movs r2, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r2, r0 - bge _0804622A - ldr r6, =gProtectStructs - ldr r1, =gBattleMoves - mov r12, r1 - adds r5, r0, 0 - ldr r7, =gTurnOrder -_080461FC: - adds r4, r2, r7 - ldrb r3, [r4] - lsls r0, r3, 4 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _08046224 - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r1, [r0, 0x8] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08046224 - b _08046350 -_08046224: - adds r2, 0x1 - cmp r2, r5 - blt _080461FC -_0804622A: - ldr r0, =gSpecialStatuses - mov r1, r8 - ldrb r2, [r1] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r3, [r1] - lsls r0, r3, 30 - cmp r0, 0 - bge _08046288 - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - strb r0, [r1] - ldr r4, =gLastUsedAbility - movs r0, 0x1F - strb r0, [r4] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB53E - str r0, [r1] - mov r1, r8 - ldrb r0, [r1] - ldrb r1, [r4] - bl RecordAbilityBattle - b _08046398 - .pool -_08046288: - lsls r0, r2, 4 - add r0, r9 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _08046296 - b _08046390 -_08046296: - ldr r1, =gBattleMoves - ldr r2, =gCurrentMove - ldrh r3, [r2] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - adds r4, r2, 0 - cmp r0, 0 - beq _08046390 - cmp r3, 0xAE - bne _080462D4 - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080462D4 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _08046390 -_080462D4: - ldrh r0, [r4] - bl sub_8052F48 - lsls r0, 24 - cmp r0, 0 - beq _080462FA - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _08046390 -_080462FA: - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl CancelMultiTurnMoves - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gUnknown_02024250 - ldr r3, =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, =gUnknown_02024258 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - b _08046390 - .pool -_08046350: - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r2, =0x00000121 - adds r1, r3, 0 - bl sub_803F480 - ldrb r1, [r4] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, =gBattleScripting - ldrb r0, [r4] - strb r0, [r1, 0x17] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB1AC - b _08046396 - .pool -_08046390: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_08046396: - str r0, [r1] -_08046398: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk00_attackcanceler - - thumb_func_start mcmd_jump_if_move_not_executed -mcmd_jump_if_move_not_executed: @ 80463AC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r1, =gBattlescriptCurrInstr - ldr r5, [r1] - adds r4, r5, r0 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0804640C - ldr r1, =gUnknown_02024250 - ldr r3, =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, =gUnknown_02024258 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldrb r4, [r5, 0x1] - ldrb r0, [r5, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r5, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r5, 0x4] - lsls r0, 24 - orrs r4, r0 - b _08046426 - .pool -_0804640C: - bl b_feature_update_destiny_bond - ldr r0, =gBankTarget - ldrb r1, [r0] - str r6, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0804642A -_08046426: - ldr r0, =gBattlescriptCurrInstr - str r4, [r0] -_0804642A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end mcmd_jump_if_move_not_executed - - thumb_func_start atk40_jump_if_move_affected_by_protect -atk40_jump_if_move_affected_by_protect: @ 804643C - push {lr} - ldr r1, =gProtectStructs - ldr r0, =gBankTarget - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0804649C - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804649C - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x5 - movs r1, 0 - bl mcmd_jump_if_move_not_executed - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - b _080464A4 - .pool -_0804649C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080464A4: - pop {r0} - bx r0 - .pool - thumb_func_end atk40_jump_if_move_affected_by_protect - - thumb_func_start sub_80464AC -sub_80464AC: @ 80464AC - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r4, 0 - ldr r1, =gProtectStructs - ldr r0, =gBankTarget - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _080464F8 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080464F8 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x7 - adds r1, r3, 0 - bl mcmd_jump_if_move_not_executed - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - movs r4, 0x1 -_080464F8: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80464AC - - thumb_func_start sub_8046518 -sub_8046518: @ 8046518 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r2, =gStatuses3 - ldr r3, =gBankTarget - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x18 - ands r1, r0 - adds r6, r2, 0 - cmp r1, 0 - beq _0804654A - ldr r1, =gDisableStructs - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, =gBankAttacker - ldrb r0, [r0, 0x15] - ldrb r1, [r1] - cmp r0, r1 - beq _08046634 -_0804654A: - ldr r0, =gHitMarker - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 9 - ands r1, r2 - adds r2, r0, 0 - cmp r1, 0 - bne _08046590 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08046590 -_0804656A: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08046634 - .pool -_08046590: - ldr r0, [r2] - ldr r1, =0xfffeffff - ands r0, r1 - str r0, [r2] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - bne _080465B2 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804656A -_080465B2: - ldr r0, [r2] - ldr r1, =0xfffdffff - ands r0, r1 - str r0, [r2] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - bne _080465D2 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r0, r1 - cmp r0, 0 - bne _0804656A -_080465D2: - ldr r0, [r2] - ldr r1, =0xfffbffff - ands r0, r1 - str r0, [r2] - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - lsls r4, r5, 1 - cmp r0, 0 - bne _08046622 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08046622 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08046622 - ldr r0, =gBattleMoves - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x98 - beq _08046634 -_08046622: - ldr r1, =gBattleMoves - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x11 - beq _08046634 - cmp r0, 0x4E - bne _08046654 -_08046634: - movs r0, 0x7 - adds r1, r5, 0 - bl mcmd_jump_if_move_not_executed - movs r0, 0x1 - b _08046656 - .pool -_08046654: - movs r0, 0 -_08046656: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8046518 - - thumb_func_start atk01_accuracycheck -atk01_accuracycheck: @ 8046660 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, =gBattlescriptCurrInstr - ldr r5, [r0] - ldrb r6, [r5, 0x5] - ldrb r1, [r5, 0x6] - lsls r1, 8 - orrs r6, r1 - adds r1, r6, 0x2 - lsls r1, 16 - lsrs r1, 16 - adds r7, r0, 0 - cmp r1, 0x1 - bhi _0804671C - ldr r2, =gStatuses3 - ldr r3, =gBankTarget - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x18 - ands r1, r0 - cmp r1, 0 - beq _080466D0 - ldr r0, =0x0000ffff - cmp r6, r0 - bne _080466D0 - ldr r1, =gDisableStructs - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, =gBankAttacker - ldrb r0, [r0, 0x15] - ldrb r1, [r1] - cmp r0, r1 - bne _080466D0 - adds r0, r5, 0x7 - str r0, [r7] - b _080469D2 - .pool -_080466D0: - ldrb r0, [r3] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08046700 - ldr r2, [r7] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r7] - b _080469D2 - .pool -_08046700: - movs r0, 0 - bl sub_80464AC - lsls r0, 24 - cmp r0, 0 - beq _0804670E - b _080469D2 -_0804670E: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x7 - str r0, [r1] - b _080469D2 - .pool -_0804671C: - cmp r6, 0 - bne _08046724 - ldr r0, =gCurrentMove - ldrh r6, [r0] -_08046724: - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08046744 - movs r1, 0x3F - mov r10, r1 - mov r2, r10 - ands r2, r0 - mov r10, r2 - b _08046752 - .pool -_08046744: - ldr r1, =gBattleMoves - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - mov r10, r0 -_08046752: - adds r0, r6, 0 - bl sub_80464AC - lsls r0, 24 - cmp r0, 0 - beq _08046760 - b _080469D2 -_08046760: - adds r0, r6, 0 - bl sub_8046518 - lsls r0, 24 - cmp r0, 0 - beq _0804676E - b _080469D2 -_0804676E: - ldr r3, =gBattleMons - ldr r0, =gBankTarget - ldrb r0, [r0] - movs r2, 0x58 - adds r4, r0, 0 - muls r4, r2 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _080467A8 - ldr r0, =gBankAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - ldrb r5, [r0, 0x1E] - b _080467BE - .pool -_080467A8: - ldr r0, =gBankAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - ldrb r0, [r0, 0x1E] - adds r0, 0x6 - adds r1, r4, r3 - ldrb r1, [r1, 0x1F] - subs r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 -_080467BE: - lsls r0, r5, 24 - cmp r0, 0 - bge _080467C6 - movs r5, 0 -_080467C6: - lsls r0, r5, 24 - asrs r0, 24 - cmp r0, 0xC - ble _080467D0 - movs r5, 0xC -_080467D0: - ldr r1, =gBattleMoves - lsls r4, r6, 1 - adds r0, r4, r6 - lsls r0, 2 - adds r7, r0, r1 - ldrb r3, [r7, 0x3] - mov r8, r3 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - str r4, [sp, 0x4] - cmp r0, 0 - bne _08046822 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08046822 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08046822 - ldrb r0, [r7] - cmp r0, 0x98 - bne _08046822 - movs r0, 0x32 - mov r8, r0 -_08046822: - ldr r1, =gAccuracyStageRatios - lsls r0, r5, 24 - asrs r0, 22 - adds r0, r1 - ldrb r1, [r0] - mov r4, r8 - muls r4, r1 - ldrb r1, [r0, 0x1] - adds r0, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r7, =gBattleMons - ldr r0, =gBankAttacker - ldrb r0, [r0] - movs r5, 0x58 - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0xE - bne _08046860 - lsls r0, r4, 6 - adds r0, r4 - lsls r0, 1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_08046860: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080468B8 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080468B8 - ldr r0, =gBankTarget - ldrb r0, [r0] - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x8 - bne _080468B8 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _080468B8 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_080468B8: - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r9, r2 - cmp r0, 0x37 - bne _080468E4 - mov r1, r10 - cmp r1, 0x8 - bhi _080468E4 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_080468E4: - ldr r2, =gBankTarget - mov r8, r2 - ldrb r2, [r2] - movs r7, 0x58 - adds r0, r2, 0 - muls r0, r7 - mov r3, r9 - adds r1, r0, r3 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08046928 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - ldrb r2, [r0, 0x1A] - b _08046944 - .pool -_08046928: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - ldrb r0, [r1] - muls r0, r7 - add r0, r9 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r2, r0, 24 -_08046944: - ldr r0, =gStringBank - ldr r1, =gBankTarget - ldrb r1, [r1] - strb r1, [r0] - cmp r5, 0x16 - bne _08046960 - movs r0, 0x64 - subs r0, r2 - muls r0, r4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_08046960: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - ble _080469CA - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080469C0 - ldr r1, =gBattleMoves - ldr r2, [sp, 0x4] - adds r0, r2, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x6] - cmp r0, 0x8 - beq _080469A2 - cmp r0, 0x20 - bne _080469C0 -_080469A2: - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _080469C4 - .pool -_080469C0: - ldr r1, =gBattleCommunication - movs r0, 0 -_080469C4: - strb r0, [r1, 0x6] - bl b_wonderguard_and_levitate -_080469CA: - movs r0, 0x7 - adds r1, r6, 0 - bl mcmd_jump_if_move_not_executed -_080469D2: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk01_accuracycheck - - thumb_func_start atk02_attackstring -atk02_attackstring: @ 80469E8 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _08046A20 - ldr r4, =gHitMarker - ldr r0, [r4] - movs r1, 0xC0 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - bne _08046A14 - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x4 - bl b_std_message - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 3 - orrs r0, r1 - str r0, [r4] -_08046A14: - ldr r0, =gBattlescriptCurrInstr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, =gBattleCommunication - strb r5, [r0, 0x7] -_08046A20: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk02_attackstring thumb_func_start atk03_ppreduce atk03_ppreduce: @ 8046A3C @@ -3519,7 +2376,7 @@ atk0B_healthbarupdate: @ 8047DE8 bne _08047E68 movs r0, 0x80 adds r1, r2, 0 - bl b_std_message + bl PrepareStringBattle b _08047EA2 .pool _08047E68: @@ -4022,7 +2879,7 @@ atk0D_critmessage: @ 80482BC ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0xD9 - bl b_std_message + bl PrepareStringBattle ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] @@ -4325,7 +3182,7 @@ _0804856E: adds r0, r3, 0 ldr r1, =gBankAttacker ldrb r1, [r1] - bl b_std_message + bl PrepareStringBattle _08048578: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] @@ -4354,7 +3211,7 @@ atk10_printstring: @ 8048590 orrs r0, r1 ldr r1, =gBankAttacker ldrb r1, [r1] - bl b_std_message + bl PrepareStringBattle ldr r0, [r4] adds r0, 0x3 str r0, [r4] @@ -4467,7 +3324,7 @@ atk13_printfromtable: @ 8048670 ldrh r0, [r1] ldr r1, =gBankAttacker ldrb r1, [r1] - bl b_std_message + bl PrepareStringBattle ldr r0, [r4] adds r0, 0x5 str r0, [r4] @@ -8175,7 +7032,7 @@ _0804A78E: mov r2, r8 ldrb r1, [r2] movs r0, 0xD - bl b_std_message + bl PrepareStringBattle ldr r0, [r6] ldrb r1, [r0, 0x10] movs r0, 0x64 @@ -14979,7 +13836,7 @@ _0804E224: ldr r0, =0x0000013f ldr r1, =gActiveBank ldrb r1, [r1] - bl b_std_message + bl PrepareStringBattle ldr r1, =gBattleScripting movs r0, 0x6 strb r0, [r1, 0x1F] @@ -19656,7 +18513,7 @@ _08050B48: cmp r0, 0x1 beq _08050B78 movs r0, 0 - bl sub_80464AC + bl JumpIfMoveAffectedByProtect lsls r0, 24 cmp r0, 0 beq _08050B78 @@ -23356,7 +22213,7 @@ atkA6_settypetorandomresistance: @ 8052B34 cmp r1, r0 beq _08052B7E ldrh r0, [r2] - bl sub_8052F48 + bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _08052C1C @@ -23825,8 +22682,8 @@ _08052F32: .pool thumb_func_end atkA8_copymovepermanently - thumb_func_start sub_8052F48 -sub_8052F48: @ 8052F48 + thumb_func_start IsTwoTurnsMove +IsTwoTurnsMove: @ 8052F48 push {lr} lsls r0, 16 lsrs r0, 16 @@ -23857,7 +22714,7 @@ _08052F7C: _08052F7E: pop {r1} bx r1 - thumb_func_end sub_8052F48 + thumb_func_end IsTwoTurnsMove thumb_func_start sub_8052F84 sub_8052F84: @ 8052F84 @@ -23986,7 +22843,7 @@ _08053036: cmp r1, 0xFD beq _08053076 adds r0, r1, 0 - bl sub_8052F48 + bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _08053084 @@ -24100,8 +22957,8 @@ atkAA_set_destinybond: @ 8053150 .pool thumb_func_end atkAA_set_destinybond - thumb_func_start b_feature_update_destiny_bond -b_feature_update_destiny_bond: @ 8053180 + thumb_func_start DestinyBondFlagUpdate +DestinyBondFlagUpdate: @ 8053180 push {r4,r5,lr} ldr r0, =gBankAttacker ldrb r0, [r0] @@ -24142,12 +22999,12 @@ _080531CA: pop {r0} bx r0 .pool - thumb_func_end b_feature_update_destiny_bond + thumb_func_end DestinyBondFlagUpdate thumb_func_start atkAB_DestinyBondFlagUpdate atkAB_DestinyBondFlagUpdate: @ 80531E0 push {lr} - bl b_feature_update_destiny_bond + bl DestinyBondFlagUpdate ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index ca599631c3..b3dafed162 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -9,7 +9,7 @@ gUnknown_082D86A8:: @ 82D86A8 gUnknown_082D8A30:: @ 82D8A30 .incbin "baserom.gba", 0x2d8a30, 0x1e -gUnknown_082D8A4E:: @ 82D8A4E +BattleScript_MoveEnd:: @ 82D8A4E .incbin "baserom.gba", 0x2d8a4e, 0x12 gUnknown_082D8A60:: @ 82D8A60 @@ -198,7 +198,7 @@ BattleScript_NoMovesLeft:: @ 82DB072 gUnknown_082DB076:: @ 82DB076 .incbin "baserom.gba", 0x2db076, 0x4 -gUnknown_082DB07A:: @ 82DB07A +BattleScript_NoPPForMove:: @ 82DB07A .incbin "baserom.gba", 0x2db07a, 0xf gUnknown_082DB089:: @ 82DB089 @@ -240,10 +240,10 @@ gUnknown_082DB185:: @ 82DB185 gUnknown_082DB18D:: @ 82DB18D .incbin "baserom.gba", 0x2db18d, 0x7 -gUnknown_082DB194:: @ 82DB194 +BattleScript_MagicCoatBounce:: @ 82DB194 .incbin "baserom.gba", 0x2db194, 0x18 -gUnknown_082DB1AC:: @ 82DB1AC +BattleScript_SnatchedMove:: @ 82DB1AC .incbin "baserom.gba", 0x2db1ac, 0x1b gUnknown_082DB1C7:: @ 82DB1C7 @@ -360,7 +360,7 @@ gUnknown_082DB4C1:: @ 82DB4C1 BattleScript_DroughtActivates:: @ 82DB52A .incbin "baserom.gba", 0x2db52a, 0x14 -gUnknown_082DB53E:: @ 82DB53E +BattleScript_TookAttack:: @ 82DB53E .incbin "baserom.gba", 0x2db53e, 0x14 gUnknown_082DB552:: @ 82DB552 diff --git a/include/battle.h b/include/battle.h index 4093f55d13..b04b8db8f2 100644 --- a/include/battle.h +++ b/include/battle.h @@ -204,10 +204,14 @@ #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 -// functions - -extern u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -extern u8 GetBankSide(u8 bank); +#define MOVE_TARGET_SELECTED 0x0 +#define MOVE_TARGET_DEPENDS 0x1 +#define MOVE_TARGET_USER 0x2 +#define MOVE_TARGET_RANDOM 0x4 +#define MOVE_TARGET_x10 0x10 +#define MOVE_TARGET_BOTH 0x8 +#define MOVE_TARGET_FOES_AND_ALLY 0x20 +#define MOVE_TARGET_OPPONENTS_FIELD 0x40 struct Trainer { @@ -636,6 +640,14 @@ extern struct BattleStruct* gBattleStruct; var2[offsetof(struct structName, offsetField)] = value; \ } +#define GET_MOVE_TYPE(move, type) \ +{ \ + if (gBattleStruct->dynamicMoveType) \ + type = gBattleStruct->dynamicMoveType & 0x3F; \ + else \ + type = gBattleMoves[move].type; \ +} + struct BattleScripting { u8 field_0; @@ -666,6 +678,44 @@ struct BattleScripting extern struct BattleScripting gBattleScripting; +// functions + +// battle_2 +void CancelMultiTurnMoves(u8 bank); +void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); +void PrepareStringBattle(u16 stringId, u8 bank); + +// battle_3 +void b_movescr_stack_push(const u8* bsPtr); +void b_movescr_stack_push_cursor(void); +u8 sub_803FB4C(void); // msg, can't select a move +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +bool8 AreAllMovesUnusable(void); +u8 IsImprisoned(u8 bank, u16 move); +u8 UpdateTurnCounters(void); +u8 TurnBasedEffects(void); +bool8 sub_8041364(void); +bool8 sub_8041728(void); +void b_clear_atk_up_if_hit_flag_unless_enraged(void); +u8 AtkCanceller_UnableToUseMove(void); +bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); +u8 CastformDataTypeChange(u8 bank); +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); +void b_call_bc_move_exec(const u8* BS_ptr); +void b_push_move_exec(const u8* BS_ptr); +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); +void sub_8045868(u8 bank); +void sub_80458B4(void); +u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 IsPokeDisobedient(void); + +// rom_80A5C6C +u8 GetBankSide(u8 bank); +u8 GetBankIdentity(u8 bank); +u8 GetBankByPlayerAI(u8 bank); + +// Move this somewhere else + #include "sprite.h" struct BattleSpritesGfx diff --git a/include/calculate_base_damage.h b/include/calculate_base_damage.h new file mode 100644 index 0000000000..e9146c1884 --- /dev/null +++ b/include/calculate_base_damage.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CALCULATE_BASE_DAMAGE_H +#define GUARD_CALCULATE_BASE_DAMAGE_H + +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef); + +#endif // GUARD_CALCULATE_BASE_DAMAGE_H diff --git a/src/battle_3.c b/src/battle_3.c index a2ddd1c2d9..283305d6cc 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -15,6 +15,7 @@ #include "battle_message.h" #include "battle_ai.h" #include "event_data.h" +#include "calculate_base_damage.h" extern const u8* gBattlescriptCurrInstr; extern const u8* gUnknown_02024220[BATTLE_BANKS_COUNT]; @@ -187,11 +188,8 @@ extern void SetMoveEffect(bool8 primary, u8 certainArg); extern bool8 UproarWakeUpCheck(u8 bank); extern void MarkBufferBankForExecution(u8 bank); extern u8 sub_803F90C(u8 bank); -extern u8 GetBankIdentity(u8); extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); -extern s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideFlags, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef); -extern u8 GetBankByPlayerAI(u8); extern u8 sub_806D864(u8); extern u8 sub_806D82C(u8); extern u8 weather_get_current(void); @@ -199,11 +197,6 @@ extern void sub_803E08C(void); extern void bc_move_exec_returning(void); extern s8 GetFlavourRelationByPersonality(u32 personality, u8 flavor); -u8 IsImprisoned(u8 bank, u16 move); -u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -u8 GetMoveTarget(u16 move, u8 useMoveTarget); -void b_push_move_exec(const u8* BS_ptr); - void b_movescr_stack_push(const u8* bsPtr) { BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = bsPtr; @@ -6237,7 +6230,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) switch (moveTarget) { - case 0: + case MOVE_TARGET_SELECTED: side = GetBankSide(gBankAttacker) ^ 1; if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBank = gSideTimers[side].followmeTarget; @@ -6258,19 +6251,19 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) } } break; - case 1: - case 8: - case 32: - case 64: + case MOVE_TARGET_DEPENDS: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_FOES_AND_ALLY: + case MOVE_TARGET_OPPONENTS_FIELD: targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); if (gAbsentBankFlags & gBitTable[targetBank]) targetBank ^= 2; break; - case 4: + case MOVE_TARGET_RANDOM: side = GetBankSide(gBankAttacker) ^ 1; if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBank = gSideTimers[side].followmeTarget; - else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4) + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { @@ -6292,8 +6285,8 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) else targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); break; - case 2: - case 16: + case MOVE_TARGET_USER: + case MOVE_TARGET_x10: targetBank = gBankAttacker; break; } diff --git a/src/battle_4.c b/src/battle_4.c index 92561251f5..e693162ccc 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -1,11 +1,141 @@ #include "global.h" #include "battle.h" #include "battle_move_effects.h" +#include "battle_message.h" +#include "battle_ai.h" #include "moves.h" #include "abilities.h" #include "item.h" #include "items.h" #include "hold_effects.h" +#include "util.h" +#include "pokemon.h" +#include "calculate_base_damage.h" +#include "rng.h" + +// variables + +extern u8 gCritMultiplier; +extern s32 gBattleMoveDamage; +extern u32 gStatuses3[BATTLE_BANKS_COUNT]; +extern u32 gBattleTypeFlags; +extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u8 gActiveBank; +extern u32 gBattleExecBuffer; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02024A76[BATTLE_BANKS_COUNT]; +extern u16 gCurrentMove; +extern u8 gLastUsedAbility; +extern u16 gBattleWeather; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbsentBankFlags; +extern u8 gMultiHitCounter; +extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gSideAffecting[2]; +extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gRandomTurnNumber; +extern u8 gBattleOutcome; +extern u8 gBattleTerrain; +extern u16 gTrainerBattleOpponent; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern const u8* gBattlescriptCurrInstr; +extern u8 gCurrMovePos; +extern u8 gFightStateTracker; +extern u32 gHitMarker; +extern u8 gBattleMoveFlags; +extern u8 gBattleCommunication[]; +extern u16 gUnknown_02024250[4]; +extern u16 gUnknown_02024258[4]; +extern u8 gStringBank; +extern u16 gDynamicBasePower; +extern u16 gLastUsedItem; +extern u16 gBattleMovePower; +extern s32 gHP_dealt; +extern s32 gTakenDmg[BATTLE_BANKS_COUNT]; +extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT]; +extern u8 gSentPokesToOpponent[2]; +extern u8 gBank1; +extern u16 gExpShareExp; +extern u8 gLeveledUpInBattle; +extern void (*gBattleMainFunc)(void); +extern u8 gPlayerPartyCount; +extern u16 gMoveToLearn; +extern u16 gRandomMove; +extern u8 gBankInMenu; +extern u8 gActionForBanks[4]; +extern u8 gCurrentMoveTurn; +extern u8 gBattleBufferB[4][0x200]; + +extern const struct BattleMove gBattleMoves[]; +extern const u16 gMissStrings[]; +extern const u8 gTrainerMoney[]; +extern const u8 gTypeEffectiveness[]; +extern const struct BaseStats gBaseStats[]; + +// functions + + +// BattleScripts +extern const u8 BattleScript_MoveEnd[]; +extern const u8 BattleScript_NoPPForMove[]; +extern const u8 BattleScript_MagicCoatBounce[]; +extern const u8 BattleScript_TookAttack[]; +extern const u8 BattleScript_SnatchedMove[]; +extern const u8 BattleScript_Pausex20[]; +extern const u8 BattleScript_SubstituteFade[]; +extern const u8 BattleScript_HangedOnMsg[]; +extern const u8 BattleScript_OneHitKOMsg[]; +extern const u8 BattleScript_EnduredMsg[]; +extern const u8 BattleScript_PSNPrevention[]; +extern const u8 BattleScript_BRNPrevention[]; +extern const u8 BattleScript_PRLZPrevention[]; +extern const u8 BattleScript_FlinchPrevention[]; +extern const u8 BattleScript_StatUp[]; +extern const u8 BattleScript_StatDown[]; +extern const u8 BattleScript_NoItemSteal[]; +extern const u8 BattleScript_ItemSteal[]; +extern const u8 BattleScript_RapidSpinAway[]; +extern const u8 BattleScript_TargetPRLZHeal[]; +extern const u8 BattleScript_KnockedOff[]; +extern const u8 BattleScript_LevelUp[]; +extern const u8 BattleScript_WrapFree[]; +extern const u8 BattleScript_LeechSeedFree[]; +extern const u8 BattleScript_SpikesFree[]; +extern const u8 BattleScript_ButItFailed[]; +extern const u8 BattleScript_ObliviousPreventsAttraction[]; +extern const u8 BattleScript_MistProtected[]; +extern const u8 BattleScript_AbilityNoStatLoss[]; +extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern const u8 BattleScript_TrainerBallBlock[]; +extern const u8 BattleScript_WallyBallThrow[]; +extern const u8 BattleScript_SuccessBallThrow[]; +extern const u8 BattleScript_ShakeBallThrow[]; + +// read via orr +#define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) +#define BSScriptRead8(ptr) (((u8)((ptr)[0]))) +#define BSScriptReadPtr(ptr) ((void *)BSScriptRead32(ptr)) + +// read via add +#define BS2ScriptRead32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr)) + +#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) + +#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special))) + +// this file's functions +bool8 IsTwoTurnsMove(u16 move); +void DestinyBondFlagUpdate(void); +u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. +void b_wonderguard_and_levitate(void); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -510,13 +640,13 @@ void (* const gBattleScriptingCommandsTable[])(void) = sub_8056EF8 }; -struct statFractions +struct StatFractions { u8 dividend; u8 divisor; }; -const struct statFractions gAccuracyStageRatios[] = +const struct StatFractions gAccuracyStageRatios[] = { { 33, 100}, // -6 { 36, 100}, // -5 @@ -599,3 +729,292 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000, 0x00000000 }; + +void atk00_attackcanceler(void) +{ + s32 i; + + if (gBattleOutcome) + { + gFightStateTracker = 0xC; + return; + } + if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + { + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattlescriptCurrInstr = BattleScript_MoveEnd; + return; + } + if (AtkCanceller_UnableToUseMove()) + return; + if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBankTarget, 0, 0, 0)) + return; + if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + gBattlescriptCurrInstr = BattleScript_NoPPForMove; + gBattleMoveFlags |= MOVESTATUS_MISSED; + return; + } + + gHitMarker &= ~(HITMARKER_x800000); + + if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + i = IsPokeDisobedient(); // why use the 'i' variable...? + switch (i) + { + case 0: + break; + case 2: + gHitMarker |= HITMARKER_OBEYS; + return; + default: + gBattleMoveFlags |= MOVESTATUS_MISSED; + return; + } + } + + gHitMarker |= HITMARKER_OBEYS; + + if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED) + { + PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT); + gProtectStructs[gBankTarget].bounceMove = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; + return; + } + + for (i = 0; i < gNoOfAllBanks; i++) + { + if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + { + PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gTurnOrder[i]].stealMove = 0; + gBattleScripting.bank = gTurnOrder[i]; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SnatchedMove; + return; + } + } + + if (gSpecialStatuses[gBankTarget].lightningRodRedirected) + { + gSpecialStatuses[gBankTarget].lightningRodRedirected = 0; + gLastUsedAbility = ABILITY_LIGHTNING_ROD; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_TookAttack; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else if (TARGET_PROTECT_AFFECTED + && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)) + && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)))) + { + CancelMultiTurnMoves(gBankAttacker); + gBattleMoveFlags |= MOVESTATUS_MISSED; + gUnknown_02024250[gBankTarget] = 0; + gUnknown_02024258[gBankTarget] = 0; + gBattleCommunication[6] = 1; + gBattlescriptCurrInstr++; + } + else + { + gBattlescriptCurrInstr++; + } +} + +void JumpIfMoveFailed(u8 adder, u16 move) +{ + const void* BS_ptr = gBattlescriptCurrInstr + adder; + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gUnknown_02024250[gBankTarget] = 0; + gUnknown_02024258[gBankTarget] = 0; + BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + DestinyBondFlagUpdate(); + if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move)) + return; + } + gBattlescriptCurrInstr = BS_ptr; +} + +void atk40_jump_if_move_affected_by_protect(void) +{ + if (TARGET_PROTECT_AFFECTED) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(5, 0); + gBattleCommunication[6] = 1; + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +bool8 JumpIfMoveAffectedByProtect(u16 move) +{ + bool8 affected = FALSE; + if (TARGET_PROTECT_AFFECTED) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + gBattleCommunication[6] = 1; + affected = TRUE; + } + return affected; +} + +bool8 AccuracyCalcHelper(u16 move) +{ + if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + + if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + + gHitMarker &= ~HITMARKER_IGNORE_ON_AIR; + + if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + + gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND; + + if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + + gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER; + + if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER) + || (gBattleMoves[move].effect == EFFECT_ALWAYS_HIT || gBattleMoves[move].effect == EFFECT_VITAL_THROW)) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + + return FALSE; +} + +void atk01_accuracycheck(void) +{ + u16 move = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + if (move == 0xFFFE || move == 0xFFFF) + { + if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) + gBattlescriptCurrInstr += 7; + else if (gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else if (!JumpIfMoveAffectedByProtect(0)) + gBattlescriptCurrInstr += 7; + } + else + { + u8 type, moveAcc, holdEffect, quality; + s8 buff; + u16 calc; + + if (move == 0) + move = gCurrentMove; + + GET_MOVE_TYPE(move, type); + + if (JumpIfMoveAffectedByProtect(move)) + return; + if (AccuracyCalcHelper(move)) + return; + + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + { + u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC]; + buff = acc; + } + else + { + u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC]; + buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION]; + } + + if (buff < 0) + buff = 0; + if (buff > 0xC) + buff = 0xC; + + moveAcc = gBattleMoves[move].accuracy; + // check Thunder on sunny weather + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER) + moveAcc = 50; + + calc = gAccuracyStageRatios[buff].dividend * moveAcc; + calc /= gAccuracyStageRatios[buff].divisor; + + if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES) + calc = (calc * 130) / 100; // 1.3 compound eyes boost + if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY) + calc = (calc * 80) / 100; // 1.2 sand veil loss + if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9) + calc = (calc * 80) / 100; // 1.2 hustle loss + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBankTarget].holdEffect; + quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (holdEffect == HOLD_EFFECT_EVASION_UP) + calc = (calc * (100 - quality)) / 100; + + // final calculation + if ((Random() % 100 + 1) > calc) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && + (gBattleMoves[move].target == MOVE_TARGET_BOTH || gBattleMoves[move].target == MOVE_TARGET_FOES_AND_ALLY)) + gBattleCommunication[6] = 2; + else + gBattleCommunication[6] = 0; + + b_wonderguard_and_levitate(); + } + JumpIfMoveFailed(7, move); + } +} + +void atk02_attackstring(void) +{ + if (gBattleExecBuffer) + return; + if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED))) + { + PrepareStringBattle(4, gBankAttacker); + gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED; + } + gBattlescriptCurrInstr++; + gBattleCommunication[MSG_DISPLAY] = 0; +} From b4875d82d50b0649c2289b9e470ca0a9ae23782d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 20 Sep 2017 00:28:00 +0200 Subject: [PATCH 012/182] more battle 4 --- asm/battle_2.s | 10 +- asm/battle_4.s | 2530 +--------------------------------- asm/battle_9.s | 14 +- asm/battle_frontier_1.s | 8 +- asm/rom3.s | 12 +- data/battle_scripts_1.s | 2 +- data/data2b.s | 2 +- include/battle.h | 31 +- include/battle_controllers.h | 11 + src/battle_3.c | 3 +- src/battle_4.c | 644 ++++++++- src/battle_ai.c | 3 - sym_ewram.txt | 2 +- 13 files changed, 763 insertions(+), 2509 deletions(-) create mode 100644 include/battle_controllers.h diff --git a/asm/battle_2.s b/asm/battle_2.s index 3e1d67f4c3..debf0eb030 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6492,7 +6492,7 @@ _0803A0AE: lsrs r0, 31 movs r1, 0 strb r0, [r3, 0x1D] - ldr r0, =gUnknown_02024212 + ldr r0, =gMultiHitCounter strb r1, [r0] ldr r0, =gBattleOutcome strb r1, [r0] @@ -13676,7 +13676,7 @@ _0803E110: strb r2, [r0] ldr r0, =gBattleMoveFlags strb r2, [r0] - ldr r0, =gUnknown_02024212 + ldr r0, =gMultiHitCounter strb r2, [r0] ldr r0, =gBattleCommunication strb r2, [r0, 0x6] @@ -15619,8 +15619,8 @@ bsC_8016D70: @ 803F300 .pool thumb_func_end bsC_8016D70 - thumb_func_start get_battle_side_of_something -get_battle_side_of_something: @ 803F3CC + thumb_func_start GetBattleBank +GetBattleBank: @ 803F3CC push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -15696,7 +15696,7 @@ _0803F472: _0803F47A: pop {r1} bx r1 - thumb_func_end get_battle_side_of_something + thumb_func_end GetBattleBank thumb_func_start PressurePPLose PressurePPLose: @ 803F480 diff --git a/asm/battle_4.s b/asm/battle_4.s index 8300024e6e..e1c02a2fb3 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -4,2420 +4,6 @@ .syntax unified .text - - - thumb_func_start atk03_ppreduce -atk03_ppreduce: @ 8046A3C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r6, 0x1 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _08046A54 - b _08046BEE -_08046A54: - ldr r1, =gSpecialStatuses - ldr r2, =gBankAttacker - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r4, r0, 31 - mov r9, r2 - cmp r4, 0 - bne _08046AF6 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - cmp r0, 0x20 - beq _08046AA6 - cmp r0, 0x20 - bgt _08046AA0 - cmp r0, 0x8 - beq _08046ABC - b _08046AD6 - .pool -_08046AA0: - cmp r0, 0x40 - beq _08046ABC - b _08046AD6 -_08046AA6: - str r4, [sp] - movs r0, 0x12 - adds r1, r3, 0 - movs r2, 0x2E - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0x1 - b _08046AF6 -_08046ABC: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x10 - movs r2, 0x2E - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - adds r6, r0 - b _08046AF6 -_08046AD6: - ldr r1, =gBankTarget - mov r2, r9 - ldrb r0, [r2] - ldrb r7, [r1] - cmp r0, r7 - beq _08046AF6 - ldr r2, =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2E - bne _08046AF6 - adds r6, 0x1 -_08046AF6: - ldr r0, =gHitMarker - ldr r4, [r0] - movs r0, 0xA0 - lsls r0, 4 - ands r4, r0 - cmp r4, 0 - bne _08046BDC - ldr r2, =gBattleMons - ldr r3, =gCurrMovePos - ldr r1, =gBankAttacker - ldrb r5, [r1] - movs r0, 0x58 - mov r8, r0 - mov r0, r8 - muls r0, r5 - ldrb r7, [r3] - adds r0, r7 - movs r7, 0x24 - adds r7, r2 - mov r12, r7 - add r0, r12 - ldrb r0, [r0] - mov r9, r1 - mov r10, r2 - adds r7, r3, 0 - cmp r0, 0 - beq _08046BDC - ldr r0, =gProtectStructs - lsls r1, r5, 4 - adds r1, r0 - ldrb r0, [r1, 0x2] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x2] - mov r1, r9 - ldrb r0, [r1] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldrb r1, [r7] - adds r0, r1 - mov r1, r12 - adds r2, r0, r1 - ldrb r0, [r2] - cmp r0, r6 - ble _08046B70 - subs r0, r6 - strb r0, [r2] - b _08046B72 - .pool -_08046B70: - strb r4, [r2] -_08046B72: - mov r2, r9 - ldrb r3, [r2] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - mov r1, r10 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08046BDC - ldr r1, =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - ldrb r0, [r7] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08046BDC - ldr r0, =gActiveBank - strb r3, [r0] - ldrb r1, [r7] - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - mov r2, r9 - ldrb r0, [r2] - muls r0, r4 - mov r2, r10 - adds r2, 0x24 - adds r0, r2 - ldrb r7, [r7] - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetAttributes - mov r7, r9 - ldrb r0, [r7] - bl MarkBufferBankForExecution -_08046BDC: - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffff7ff - ands r0, r1 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08046BEE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk03_ppreduce - - thumb_func_start atk04_critcalc -atk04_critcalc: @ 8046C18 - push {r4-r7,lr} - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - cmp r0, 0xAF - bne _08046C48 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - b _08046C50 - .pool -_08046C48: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 -_08046C50: - ldr r1, =gStringBank - ldr r3, =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r4, =gBattleMons - ldrb r1, [r3] - movs r0, 0x58 - adds r7, r1, 0 - muls r7, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r7, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - negs r0, r0 - asrs r5, r0, 31 - movs r0, 0x2 - ands r5, r0 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - mov r12, r3 - cmp r1, 0x2B - bne _08046C90 - adds r5, 0x1 -_08046C90: - adds r0, r5, 0 - cmp r1, 0x4B - bne _08046C98 - adds r0, 0x1 -_08046C98: - cmp r1, 0xC8 - bne _08046C9E - adds r0, 0x1 -_08046C9E: - adds r2, r0, 0 - cmp r1, 0xD1 - bne _08046CA6 - adds r2, 0x1 -_08046CA6: - movs r1, 0 - cmp r6, 0x3F - bne _08046CB6 - adds r0, r7, r4 - ldrh r0, [r0] - cmp r0, 0x71 - bne _08046CB6 - movs r1, 0x1 -_08046CB6: - lsls r5, r1, 1 - movs r3, 0 - cmp r6, 0x42 - bne _08046CD0 - mov r0, r12 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x53 - bne _08046CD0 - movs r3, 0x1 -_08046CD0: - lsls r1, r3, 1 - cmp r6, 0x29 - bne _08046CF0 - adds r0, r5, 0x1 - adds r0, r2, r0 - b _08046CF2 - .pool -_08046CF0: - adds r0, r2, r5 -_08046CF2: - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - adds r5, r0, 0 - cmp r5, 0x4 - bls _08046D00 - movs r5, 0x4 -_08046D00: - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - ldrb r4, [r0] - cmp r4, 0x4 - beq _08046D70 - cmp r4, 0x4B - beq _08046D70 - ldr r1, =gStatuses3 - mov r2, r12 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _08046D70 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - bne _08046D70 - bl Random - ldr r2, =gCriticalHitChance - lsls r1, r5, 1 - adds r1, r2 - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08046D70 - ldr r1, =gCritMultiplier - movs r0, 0x2 - b _08046D74 - .pool -_08046D70: - ldr r1, =gCritMultiplier - movs r0, 0x1 -_08046D74: - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk04_critcalc - - thumb_func_start atk05_damagecalc1 -atk05_damagecalc1: @ 8046D8C - push {r4-r7,lr} - sub sp, 0x10 - ldr r4, =gSideAffecting - ldr r5, =gBankTarget - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldr r6, =gBankAttacker - ldrb r0, [r6] - movs r4, 0x58 - muls r0, r4 - ldr r2, =gBattleMons - adds r0, r2 - ldrb r1, [r5] - muls r1, r4 - adds r1, r2 - ldr r7, =gCurrentMove - ldrh r2, [r7] - ldr r4, =gDynamicBasePower - ldrh r4, [r4] - str r4, [sp] - ldr r4, =gBattleStruct - ldr r4, [r4] - ldrb r4, [r4, 0x13] - str r4, [sp, 0x4] - ldrb r4, [r6] - str r4, [sp, 0x8] - ldrb r4, [r5] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldr r4, =gBattleMoveDamage - ldr r1, =gCritMultiplier - ldrb r1, [r1] - muls r1, r0 - ldr r0, =gBattleScripting - ldrb r0, [r0, 0xE] - adds r3, r1, 0 - muls r3, r0 - str r3, [r4] - ldr r1, =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _08046E10 - ldr r2, =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0xD - bne _08046E10 - lsls r0, r3, 1 - str r0, [r4] -_08046E10: - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _08046E32 - ldr r4, =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_08046E32: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk05_damagecalc1 - - thumb_func_start AI_CalcDmg -AI_CalcDmg: @ 8046E7C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r4, =gSideAffecting - adds r0, r5, 0 - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x58 - adds r0, r7, 0 - muls r0, r1 - ldr r2, =gBattleMons - adds r0, r2 - muls r1, r5 - adds r1, r2 - ldr r2, =gCurrentMove - mov r8, r2 - ldrh r2, [r2] - ldr r6, =gDynamicBasePower - ldrh r4, [r6] - str r4, [sp] - ldr r4, =gBattleStruct - ldr r4, [r4] - ldrb r4, [r4, 0x13] - str r4, [sp, 0x4] - str r7, [sp, 0x8] - str r5, [sp, 0xC] - bl CalculateBaseDamage - ldr r4, =gBattleMoveDamage - movs r1, 0 - strh r1, [r6] - ldr r1, =gCritMultiplier - ldrb r1, [r1] - muls r1, r0 - ldr r0, =gBattleScripting - ldrb r0, [r0, 0xE] - adds r3, r1, 0 - muls r3, r0 - str r3, [r4] - ldr r1, =gStatuses3 - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _08046F0A - ldr r2, =gBattleMoves - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0xD - bne _08046F0A - lsls r0, r3, 1 - str r0, [r4] -_08046F0A: - ldr r0, =gProtectStructs - lsls r1, r7, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - cmp r0, 0 - bge _08046F28 - ldr r4, =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_08046F28: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end AI_CalcDmg - - thumb_func_start battle_attack_damage_modulate_by_effectivity -battle_attack_damage_modulate_by_effectivity: @ 8046F60 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, =gBattleMoveDamage - ldr r0, [r5] - muls r0, r4 - movs r1, 0xA - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _08046F80 - cmp r4, 0 - beq _08046F80 - movs r0, 0x1 - str r0, [r5] -_08046F80: - cmp r4, 0x5 - beq _08046FB0 - cmp r4, 0x5 - bgt _08046F94 - cmp r4, 0 - beq _08046F9A - b _08047032 - .pool -_08046F94: - cmp r4, 0x14 - beq _08046FF0 - b _08047032 -_08046F9A: - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0xFB - ands r0, r1 - movs r1, 0xFD - ands r0, r1 - b _08047030 - .pool -_08046FB0: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08047032 - ldr r2, =gBattleMoveFlags - ldrb r1, [r2] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08047032 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08046FEC - movs r0, 0xFD - ands r0, r1 - b _08047030 - .pool -_08046FEC: - movs r0, 0x4 - b _0804702E -_08046FF0: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08047032 - ldr r2, =gBattleMoveFlags - ldrb r1, [r2] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08047032 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0804702C - movs r0, 0xFB - ands r0, r1 - b _08047030 - .pool -_0804702C: - movs r0, 0x2 -_0804702E: - orrs r0, r1 -_08047030: - strb r0, [r2] -_08047032: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end battle_attack_damage_modulate_by_effectivity - - thumb_func_start atk06_typecalc -atk06_typecalc: @ 8047038 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0 - ldr r1, =gCurrentMove - ldrh r0, [r1] - cmp r0, 0xA5 - bne _0804704C - b _08047260 -_0804704C: - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08047068 - movs r1, 0x3F - mov r8, r1 - ands r1, r0 - mov r8, r1 - b _08047078 - .pool -_08047068: - ldr r2, =gBattleMoves - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r8, r0 -_08047078: - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, r8 - beq _0804709A - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r8 - bne _080470B0 -_0804709A: - ldr r4, =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - str r0, [r4] - movs r1, 0xA - str r3, [sp, 0x4] - bl __divsi3 - str r0, [r4] - ldr r3, [sp, 0x4] -_080470B0: - ldr r2, =gBankTarget - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r2, 0 - cmp r0, 0x1A - bne _08047128 - mov r1, r8 - cmp r1, 0x4 - bne _08047128 - ldr r3, =gLastUsedAbility - strb r0, [r3] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x9 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gUnknown_02024250 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, =gUnknown_02024258 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r0, =gBattleCommunication - mov r1, r8 - strb r1, [r0, 0x6] - ldrb r0, [r4] - ldrb r1, [r3] - bl RecordAbilityBattle - b _080471C4 - .pool -_08047128: - ldr r1, =gUnknown_0831ACE8 - adds r0, r3, r1 - ldrb r0, [r0] - adds r2, r1, 0 - b _080471A4 - .pool -_08047138: - adds r3, 0x3 - b _080471A0 -_0804713C: - ldr r5, =gUnknown_0831ACE8 - adds r0, r3, r5 - ldrb r0, [r0] - cmp r0, r8 - bne _08047198 - adds r1, r3, 0x1 - adds r1, r5 - ldr r2, =gBattleMons - ldr r7, =gBankTarget - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - adds r0, r2 - adds r0, 0x21 - ldrb r4, [r1] - ldrb r0, [r0] - cmp r4, r0 - bne _08047172 - adds r0, r3, 0x2 - adds r0, r5 - ldrb r0, [r0] - str r2, [sp] - str r3, [sp, 0x4] - bl battle_attack_damage_modulate_by_effectivity - ldr r3, [sp, 0x4] - ldr r2, [sp] -_08047172: - ldrb r0, [r7] - muls r0, r6 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r4, r1 - bne _08047198 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r4 - beq _08047198 - adds r0, r3, 0x2 - adds r0, r5 - ldrb r0, [r0] - str r3, [sp, 0x4] - bl battle_attack_damage_modulate_by_effectivity - ldr r3, [sp, 0x4] -_08047198: - adds r3, 0x3 - ldr r5, =gBattleMons - ldr r4, =gBankTarget - ldr r2, =gUnknown_0831ACE8 -_080471A0: - adds r0, r3, r2 - ldrb r0, [r0] -_080471A4: - cmp r0, 0xFF - beq _080471C4 - cmp r0, 0xFE - bne _0804713C - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r1, r5, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _08047138 -_080471C4: - ldr r2, =gBattleMons - ldr r5, =gBankTarget - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x19 - bne _08047242 - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r7, =gCurrentMove - ldrh r1, [r7] - bl move_weather_interaction - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08047242 - ldr r1, =gBattleMoveFlags - mov r8, r1 - ldrb r4, [r1] - ands r0, r4 - cmp r0, 0 - beq _08047200 - movs r0, 0x6 - ands r0, r4 - cmp r0, 0x6 - bne _08047242 -_08047200: - ldr r2, =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08047242 - ldr r3, =gLastUsedAbility - strb r6, [r3] - movs r0, 0x1 - orrs r0, r4 - mov r1, r8 - strb r0, [r1] - ldr r1, =gUnknown_02024250 - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, =gUnknown_02024258 - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r1, =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - ldrb r0, [r5] - ldrb r1, [r3] - bl RecordAbilityBattle -_08047242: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08047260 - ldr r2, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 4 - adds r1, r2 - ldrb r0, [r1, 0x1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x1] -_08047260: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk06_typecalc - - thumb_func_start b_wonderguard_and_levitate -b_wonderguard_and_levitate: @ 80472A8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r5, 0 - ldr r0, =gCurrentMove - ldrh r1, [r0] - mov r9, r0 - cmp r1, 0xA5 - bne _080472C0 - b _08047508 -_080472C0: - ldr r2, =gBattleMoves - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080472D2 - b _08047508 -_080472D2: - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _080472F4 - movs r1, 0x3F - mov r12, r1 - mov r2, r12 - ands r2, r0 - mov r12, r2 - b _080472F8 - .pool -_080472F4: - ldrb r1, [r1, 0x2] - mov r12, r1 -_080472F8: - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r1, [r0] - adds r7, r2, 0 - mov r8, r3 - cmp r1, 0x1A - bne _0804733C - mov r0, r12 - cmp r0, 0x4 - bne _0804733C - ldr r0, =gLastUsedAbility - strb r1, [r0] - ldr r0, =gBattleCommunication - mov r1, r12 - strb r1, [r0, 0x6] - ldrb r0, [r3] - movs r1, 0x1A - bl RecordAbilityBattle - b _08047508 - .pool -_0804733C: - ldr r1, =gUnknown_0831ACE8 - adds r0, r5, r1 - ldrb r0, [r0] - adds r4, r1, 0 - b _0804748E - .pool -_0804734C: - adds r0, r5, r4 - ldrb r0, [r0] - cmp r0, r12 - beq _08047356 - b _08047488 -_08047356: - adds r2, r5, 0x1 - adds r3, r2, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r3] - adds r3, r2, 0 - ldrb r0, [r0] - cmp r1, r0 - bne _08047396 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08047396 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r2, [r0] - lsls r2, 4 - adds r2, r1 - ldrb r0, [r2, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1] -_08047396: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _080473DC - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _080473DC - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080473DC - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r2, [r0] - lsls r2, 4 - adds r2, r1 - ldrb r0, [r2, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1] -_080473DC: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _08047400 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x14 - bne _08047400 - movs r0, 0x1 - orrs r6, r0 -_08047400: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0804742E - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0804742E - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0804742E - movs r0, 0x1 - orrs r6, r0 -_0804742E: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _08047456 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _08047456 - movs r0, 0x2 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_08047456: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _08047488 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _08047488 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _08047488 - movs r0, 0x2 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_08047488: - adds r5, 0x3 - adds r0, r5, r4 - ldrb r0, [r0] -_0804748E: - cmp r0, 0xFF - beq _080474B2 - cmp r0, 0xFE - beq _08047498 - b _0804734C -_08047498: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _08047488 -_080474B2: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r4, [r0] - cmp r4, 0x19 - bne _08047508 - ldr r0, =gBankAttacker - ldrb r0, [r0] - mov r2, r9 - ldrh r1, [r2] - bl move_weather_interaction - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08047508 - movs r0, 0x3 - ands r6, r0 - cmp r6, 0x1 - beq _08047508 - ldr r2, =gBattleMoves - mov r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08047508 - ldr r0, =gLastUsedAbility - strb r4, [r0] - ldr r1, =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x19 - bl RecordAbilityBattle -_08047508: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end b_wonderguard_and_levitate - - thumb_func_start b_attack_effectivity_adapt -b_attack_effectivity_adapt: @ 804752C - push {r4-r7,lr} - adds r6, r2, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r7, =gBattleMoveDamage - ldr r0, [r7] - muls r0, r4 - movs r1, 0xA - bl __divsi3 - str r0, [r7] - cmp r0, 0 - bne _08047552 - cmp r4, 0 - beq _08047552 - movs r0, 0x1 - str r0, [r7] -_08047552: - cmp r4, 0x5 - beq _0804757A - cmp r4, 0x5 - bgt _08047564 - cmp r4, 0 - beq _0804756A - b _080475DE - .pool -_08047564: - cmp r4, 0x14 - beq _080475AC - b _080475DE -_0804756A: - ldrb r0, [r6] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0xFB - ands r0, r1 - movs r1, 0xFD - ands r0, r1 - b _080475DC -_0804757A: - ldr r0, =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _080475DE - ldrb r1, [r6] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080475DE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080475A8 - movs r0, 0xFD - ands r0, r1 - b _080475DC - .pool -_080475A8: - movs r0, 0x4 - b _080475DA -_080475AC: - ldr r0, =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _080475DE - ldrb r1, [r6] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080475DE - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080475D8 - movs r0, 0xFB - ands r0, r1 - b _080475DC - .pool -_080475D8: - movs r0, 0x2 -_080475DA: - orrs r0, r1 -_080475DC: - strb r0, [r6] -_080475DE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end b_attack_effectivity_adapt - - thumb_func_start TypeCalc -TypeCalc: @ 80475E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x4] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - movs r0, 0 - mov r8, r0 - mov r0, sp - mov r1, r8 - strb r1, [r0] - mov r2, r10 - cmp r2, 0xA5 - bne _08047616 - movs r0, 0 - b _0804779E -_08047616: - ldr r1, =gBattleMoves - mov r3, r10 - lsls r2, r3, 1 - adds r0, r2, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - str r0, [sp, 0x8] - ldr r1, =gBattleMons - movs r0, 0x58 - ldr r3, [sp, 0x4] - muls r0, r3 - adds r3, r0, r1 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - str r2, [sp, 0xC] - adds r5, r1, 0 - ldr r1, [sp, 0x8] - cmp r0, r1 - beq _0804764A - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - bne _0804765C -_0804764A: - ldr r4, =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - str r0, [r4] - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0804765C: - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - bne _08047690 - ldr r3, [sp, 0x8] - cmp r3, 0x4 - bne _08047690 - movs r1, 0x9 - mov r0, sp - ldrb r0, [r0] - orrs r0, r1 - mov r1, sp - strb r0, [r1] - b _08047740 - .pool -_08047690: - ldr r1, =gUnknown_0831ACE8 - mov r2, r8 - adds r0, r2, r1 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xFF - beq _08047740 - cmp r0, 0xFE - bne _080476B6 - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - b _0804772E - .pool -_080476B0: - movs r0, 0x3 - add r8, r0 - b _08047718 -_080476B6: - ldr r7, =gUnknown_0831ACE8 - mov r1, r8 - adds r0, r1, r7 - ldrb r0, [r0] - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _08047710 - adds r1, 0x1 - adds r1, r7 - ldr r2, =gBattleMons - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r5, r0, r2 - adds r6, r5, 0 - adds r6, 0x21 - ldrb r4, [r1] - ldrb r0, [r6] - cmp r4, r0 - bne _080476F0 - mov r0, r8 - adds r0, 0x2 - adds r0, r7 - ldrb r0, [r0] - mov r1, r10 - mov r2, sp - bl b_attack_effectivity_adapt -_080476F0: - adds r0, r5, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r4, r0 - bne _08047710 - ldrb r0, [r6] - cmp r0, r4 - beq _08047710 - mov r0, r8 - adds r0, 0x2 - adds r0, r7 - ldrb r0, [r0] - mov r1, r10 - mov r2, sp - bl b_attack_effectivity_adapt -_08047710: - movs r1, 0x3 - add r8, r1 - ldr r5, =gBattleMons - ldr r2, =gUnknown_0831ACE8 -_08047718: - mov r3, r8 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08047740 - cmp r0, 0xFE - bne _080476B6 - movs r0, 0x58 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 -_0804772E: - adds r1, r5, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _080476B0 -_08047740: - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x19 - bne _0804779A - mov r0, sp - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0804779A - ldr r0, [sp, 0x4] - mov r1, r10 - bl move_weather_interaction - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _0804779A - mov r0, sp - ldrb r3, [r0] - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08047782 - movs r0, 0x6 - ands r0, r3 - cmp r0, 0x6 - bne _0804779A -_08047782: - ldr r0, =gBattleMoves - ldr r1, [sp, 0xC] - add r1, r10 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0804779A - mov r0, sp - movs r1, 0x1 - orrs r1, r3 - strb r1, [r0] -_0804779A: - mov r0, sp - ldrb r0, [r0] -_0804779E: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end TypeCalc - - thumb_func_start ai_rate_move -ai_rate_move: @ 80477BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r7, 0 - mov r0, sp - strb r7, [r0] - ldr r2, =gBaseStats - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - mov r9, r1 - ldrb r0, [r0, 0x7] - mov r8, r0 - cmp r6, 0xA5 - bne _080477FC - movs r0, 0 - b _080478A0 - .pool -_080477FC: - ldr r2, =gBattleMoves - lsls r1, r6, 1 - adds r0, r1, r6 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r10, r0 - str r1, [sp, 0x8] - ldr r3, [sp, 0x4] - cmp r3, 0x1A - bne _08047824 - cmp r0, 0x4 - bne _08047824 - movs r1, 0x9 - mov r0, sp - strb r1, [r0] - b _0804786A - .pool -_08047824: - ldr r0, =gUnknown_0831ACE8 - adds r1, r7, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _0804786A - adds r4, r1, 0 -_08047830: - ldrb r0, [r4] - cmp r0, 0xFE - beq _0804785C - cmp r0, r10 - bne _0804785C - ldrb r5, [r4, 0x1] - cmp r5, r9 - bne _0804784A - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - mov r2, sp - bl b_attack_effectivity_adapt -_0804784A: - cmp r5, r8 - bne _0804785C - cmp r9, r8 - beq _0804785C - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - mov r2, sp - bl b_attack_effectivity_adapt -_0804785C: - adds r4, 0x3 - adds r7, 0x3 - ldr r1, =gUnknown_0831ACE8 - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08047830 -_0804786A: - ldr r3, [sp, 0x4] - cmp r3, 0x19 - bne _0804789C - mov r0, sp - ldrb r2, [r0] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _08047884 - movs r0, 0x6 - ands r0, r2 - cmp r0, 0x6 - bne _0804789C -_08047884: - ldr r0, =gBattleMoves - ldr r3, [sp, 0x8] - adds r1, r3, r6 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0804789C - mov r0, sp - movs r1, 0x8 - orrs r1, r2 - strb r1, [r0] -_0804789C: - mov r0, sp - ldrb r0, [r0] -_080478A0: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end ai_rate_move - - thumb_func_start sub_80478B8 -sub_80478B8: @ 80478B8 - push {r4,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _080478EA - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _080478EA - movs r0, 0x1 - str r0, [r4] -_080478EA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80478B8 - - thumb_func_start atk07_dmg_adjustment -atk07_dmg_adjustment: @ 80478F4 - push {r4-r7,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _08047926 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _08047926 - movs r0, 0x1 - str r0, [r4] -_08047926: - ldr r7, =gBattleMons - ldr r6, =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0804795C - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _08047976 - .pool -_0804795C: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_08047976: - ldr r1, =gStringBank - ldr r5, =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _080479B4 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _080479B4 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_080479B4: - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r5, r2, 0 - cmp r1, 0 - bne _08047A84 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x65 - beq _08047A06 - ldr r0, =gProtectStructs - lsls r1, r4, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _08047A06 - ldr r0, =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08047A84 -_08047A06: - ldrb r0, [r3] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r1, [r0, 0x28] - ldr r2, =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _08047A84 - subs r0, r1, 0x1 - str r0, [r2] - ldr r1, =gProtectStructs - ldrb r3, [r3] - lsls r0, r3, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _08047A5C - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08047A84 - .pool -_08047A5C: - ldr r0, =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08047A84 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gLastUsedItem - adds r0, r3, 0 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_08047A84: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk07_dmg_adjustment - - thumb_func_start atk08_dmg_adjustment2 -atk08_dmg_adjustment2: @ 8047AA4 - push {r4-r7,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _08047AD6 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _08047AD6 - movs r0, 0x1 - str r0, [r4] -_08047AD6: - ldr r7, =gBattleMons - ldr r6, =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08047B0C - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _08047B26 - .pool -_08047B0C: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_08047B26: - ldr r1, =gStringBank - ldr r5, =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _08047B64 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _08047B64 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_08047B64: - ldr r4, =gBattleMons - ldr r6, =gBankTarget - ldrb r2, [r6] - movs r7, 0x58 - adds r3, r2, 0 - muls r3, r7 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _08047C10 - ldr r5, =gProtectStructs - lsls r0, r2, 4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - blt _08047BA2 - ldr r0, =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08047C10 -_08047BA2: - adds r0, r3, r4 - ldrh r1, [r0, 0x28] - ldr r2, =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _08047C10 - subs r0, r1, 0x1 - str r0, [r2] - ldrb r3, [r6] - lsls r0, r3, 4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _08047BE8 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08047C10 - .pool -_08047BE8: - ldr r0, =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08047C10 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gLastUsedItem - adds r0, r3, 0 - muls r0, r7 - adds r0, r4 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_08047C10: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk08_dmg_adjustment2 - - thumb_func_start atk09_attackanimation -atk09_attackanimation: @ 8047C30 - push {r4-r7,lr} - sub sp, 0x10 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _08047C3E - b _08047DB6 -_08047C3E: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - ldr r5, =gCurrentMove - cmp r0, 0 - beq _08047C8C - ldrh r0, [r5] - cmp r0, 0x90 - beq _08047C8C - cmp r0, 0xA4 - beq _08047C8C - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =gUnknown_082DABB9 - str r0, [r4] - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x18] - adds r0, 0x1 - strb r0, [r1, 0x18] - ldrb r0, [r1, 0x19] - adds r0, 0x1 - strb r0, [r1, 0x19] - b _08047DB6 - .pool -_08047C8C: - ldr r2, =gBattleMoves - ldrh r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08047CB2 - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08047CB2 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08047CBA -_08047CB2: - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x19] - cmp r0, 0 - bne _08047D88 -_08047CBA: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08047DA8 - ldr r1, =gActiveBank - ldr r3, =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r7, r3, 0 - mov r12, r2 - cmp r1, 0 - beq _08047D18 - ldr r0, =gUnknown_02024212 - ldrb r6, [r0] - b _08047D42 - .pool -_08047D18: - ldr r3, =gUnknown_02024212 - ldrb r0, [r3] - cmp r0, 0x1 - bls _08047D40 - mov r1, r12 - adds r0, r4, r1 - ldrh r2, [r0, 0x28] - ldr r0, =gBattleMoveDamage - ldr r1, [r0] - movs r6, 0x1 - adds r4, r0, 0 - cmp r2, r1 - ble _08047D44 - ldrb r6, [r3] - b _08047D44 - .pool -_08047D40: - ldrb r6, [r3] -_08047D42: - ldr r4, =gBattleMoveDamage -_08047D44: - ldrh r1, [r5] - ldr r5, =gBattleScripting - ldrb r2, [r5, 0x18] - ldr r0, =gBattleMovePower - ldrh r3, [r0] - ldr r0, [r4] - str r0, [sp] - ldrb r4, [r7] - movs r0, 0x58 - muls r0, r4 - add r0, r12 - adds r0, 0x2B - ldrb r0, [r0] - str r0, [sp, 0x4] - ldrb r4, [r7] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r4, =gDisableStructs - adds r0, r4 - str r0, [sp, 0x8] - str r6, [sp, 0xC] - movs r0, 0 - bl dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes - ldrb r0, [r5, 0x18] - adds r0, 0x1 - strb r0, [r5, 0x18] - ldrb r0, [r5, 0x19] - adds r0, 0x1 - strb r0, [r5, 0x19] - ldrb r0, [r7] - bl MarkBufferBankForExecution -_08047D88: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08047DB6 - .pool -_08047DA8: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =gUnknown_082DABB9 - str r0, [r4] -_08047DB6: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk09_attackanimation - - thumb_func_start atk0A_waitanimation -atk0A_waitanimation: @ 8047DC8 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08047DDA - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08047DDA: - pop {r0} - bx r0 - .pool - thumb_func_end atk0A_waitanimation - - thumb_func_start atk0B_healthbarupdate -atk0B_healthbarupdate: @ 8047DE8 - push {r4,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08047EAA - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08047EA2 - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl get_battle_side_of_something - ldr r2, =gActiveBank - strb r0, [r2] - ldr r1, =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _08047E68 - ldr r0, =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - beq _08047E68 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - bne _08047E68 - movs r0, 0x80 - adds r1, r2, 0 - bl PrepareStringBattle - b _08047EA2 - .pool -_08047E68: - ldr r0, =gBattleMoveDamage - ldr r0, [r0] - ldr r1, =0x00002710 - cmp r0, r1 - bgt _08047E76 - lsls r0, 16 - lsrs r1, r0, 16 -_08047E76: - movs r0, 0 - bl dp01_build_cmdbuf_x18_0_aa_health_bar_update - ldr r4, =gActiveBank - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08047EA2 - ldr r0, =gBattleMoveDamage - ldr r0, [r0] - cmp r0, 0 - ble _08047EA2 - ldr r0, =gBattleResults - ldrb r1, [r0, 0x5] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x5] -_08047EA2: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08047EAA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk0B_healthbarupdate thumb_func_start atk0C_datahpupdate atk0C_datahpupdate: @ 8047EC4 @@ -2463,7 +49,7 @@ _08047F12: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r7, =gActiveBank strb r0, [r7] ldr r1, =gBattleMons @@ -2831,7 +417,7 @@ _08048274: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gActiveBank strb r0, [r1] ldr r2, =gSpecialStatuses @@ -5554,7 +3140,7 @@ atk18_status_effect_clear: @ 8049AE0 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r2, =gActiveBank strb r0, [r2] ldr r3, =gBattleCommunication @@ -5612,7 +3198,7 @@ atk19_faint_pokemon: @ 8049B5C cmp r1, 0 beq _08049BE0 ldrb r0, [r2, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r5, =gActiveBank strb r0, [r5] ldr r2, =gHitMarker @@ -5917,7 +3503,7 @@ atk1A_faint_animation: @ 8049E40 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -5945,7 +3531,7 @@ atk1B_faint_effects_clear: @ 8049E7C ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleTypeFlags @@ -6002,7 +3588,7 @@ atk1C_jumpifstatus: @ 8049F04 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r0, 24 ldr r2, [r5] @@ -6061,7 +3647,7 @@ atk1D_jumpifstatus2: @ 8049F7C ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r0, 24 ldr r2, [r5] @@ -6184,7 +3770,7 @@ _0804A054: .pool _0804A08C: ldrb r0, [r2, 0x1] - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gBattleMons @@ -6282,7 +3868,7 @@ atk20_jumpifstat: @ 804A154 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r0, 24 ldr r2, =gBattleMons @@ -6399,7 +3985,7 @@ atk21_jumpifstatus3: @ 804A24C ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r5, =gActiveBank strb r0, [r5] ldr r2, [r4] @@ -6465,7 +4051,7 @@ atk22_jumpiftype: @ 804A2D0 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r0, 24 ldr r3, [r4] @@ -6521,7 +4107,7 @@ atk23_getexp: @ 804A32C ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gBank1 strb r0, [r1] ldr r2, =gUnknown_020243FE @@ -7884,7 +5470,7 @@ atk25_move_values_cleanup: @ 804AF70 thumb_func_start atk26_set_multihit atk26_set_multihit: @ 804AF88 - ldr r3, =gUnknown_02024212 + ldr r3, =gMultiHitCounter ldr r2, =gBattlescriptCurrInstr ldr r0, [r2] ldrb r1, [r0, 0x1] @@ -7898,7 +5484,7 @@ atk26_set_multihit: @ 804AF88 thumb_func_start atk27_decrement_multihit atk27_decrement_multihit: @ 804AFA0 push {lr} - ldr r1, =gUnknown_02024212 + ldr r1, =gMultiHitCounter ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -8795,7 +6381,7 @@ _0804B624: ldr r0, =gBattleMoveDamage ldrh r1, [r0] movs r0, 0 - bl dp01_build_cmdbuf_x18_0_aa_health_bar_update + bl EmitHealthBarUpdate ldr r0, =gActiveBank ldrb r0, [r0] bl MarkBufferBankForExecution @@ -8916,7 +6502,7 @@ atk42_jumpiftype2: @ 804B728 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r0, 24 ldr r3, [r4] @@ -9018,7 +6604,7 @@ atk45_playanimation: @ 804B7EC ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r6, =gActiveBank strb r0, [r6] ldr r2, [r5] @@ -9064,7 +6650,7 @@ _0804B848: beq _0804B868 adds r0, r2, 0x7 bl b_movescr_stack_push - ldr r0, =gUnknown_082DABB9 + ldr r0, =BattleScript_Pausex20 b _0804B8A8 .pool _0804B868: @@ -9109,7 +6695,7 @@ atk46_playanimation2: @ 804B8B0 ldr r6, =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r7, =gActiveBank strb r0, [r7] ldr r2, [r6] @@ -9270,7 +6856,7 @@ atk48_playstatchangeanimation: @ 804B9D8 ldr r0, [r5] ldrb r0, [r0, 0x1] str r3, [sp] - bl get_battle_side_of_something + bl GetBattleBank ldr r2, =gActiveBank strb r0, [r2] ldr r0, [r5] @@ -10687,7 +8273,7 @@ _0804C678: b _0804C76A .pool _0804C688: - ldr r1, =gUnknown_0831ACE8 + ldr r1, =gTypeEffectiveness adds r0, r5, r1 ldrb r0, [r0] adds r6, r1, 0 @@ -10825,7 +8411,7 @@ _0804C76A: ldrb r0, [r0] ldr r7, =gCurrentMove ldrh r1, [r7] - bl move_weather_interaction + bl AttacksThisTurn lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 @@ -10940,7 +8526,7 @@ atk4C_copy_poke_data: @ 804C894 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldr r3, =gBattlePartyID @@ -10989,7 +8575,7 @@ _0804C912: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldr r6, =gBattleMons @@ -11205,7 +8791,7 @@ atk4E_switchin_anim: @ 804CAE8 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r6, =gActiveBank strb r0, [r6] ldrb r0, [r6] @@ -11287,7 +8873,7 @@ atk4F_jump_if_cannot_switch: @ 804CBB0 ldrb r1, [r0, 0x1] movs r0, 0x7F ands r0, r1 - bl get_battle_side_of_something + bl GetBattleBank ldr r3, =gActiveBank strb r0, [r3] ldr r2, [r4] @@ -12492,7 +10078,7 @@ _0804D658: _0804D664: movs r0, 0x7F ands r0, r1 - bl get_battle_side_of_something + bl GetBattleBank lsls r0, 24 lsrs r7, r0, 24 ldr r1, =gSpecialStatuses @@ -12693,7 +10279,7 @@ _0804D82C: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r5, =gActiveBank strb r0, [r5] ldr r0, [r4] @@ -12993,7 +10579,7 @@ atk52_switch_in_effects: @ 804DAAC mov r9, r0 ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldrb r0, [r4] @@ -13397,7 +10983,7 @@ atk56_fainting_cry: @ 804DE50 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -13442,7 +11028,7 @@ atk58_return_to_ball: @ 804DEB8 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -14143,7 +11729,7 @@ atk5C_hitanimation: @ 804E508 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r2, =gActiveBank strb r0, [r2] ldr r0, =gBattleMoveFlags @@ -14435,7 +12021,7 @@ atk5E_8025A70: @ 804E764 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r6, =gActiveBank strb r0, [r6] ldr r5, =gBattleCommunication @@ -14583,7 +12169,7 @@ atk61_8025BA4: @ 804E898 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gActiveBank strb r0, [r1] ldrb r0, [r1] @@ -14664,7 +12250,7 @@ atk62_08025C6C: @ 804E960 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -14732,7 +12318,7 @@ atk64_statusanimation: @ 804E9F4 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldr r1, =gStatuses3 @@ -14791,7 +12377,7 @@ atk65_status2animation: @ 804EA84 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r5, =gActiveBank strb r0, [r5] ldr r1, [r4] @@ -14862,7 +12448,7 @@ atk66_chosenstatusanimation: @ 804EB2C ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r5, =gActiveBank strb r0, [r5] ldr r4, [r4] @@ -15219,7 +12805,7 @@ atk6A_removeitem: @ 804EE58 ldr r6, =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r5, =gActiveBank strb r0, [r5] ldr r1, =gBattleStruct @@ -15989,7 +13575,7 @@ atk6F_set_visible: @ 804F50C ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -16012,7 +13598,7 @@ atk70_record_ability: @ 804F540 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gActiveBank strb r0, [r1] ldrb r0, [r1] @@ -16109,7 +13695,7 @@ atk73_hp_thresholds: @ 804F5F8 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gActiveBank strb r0, [r1] movs r1, 0x1 @@ -16191,7 +13777,7 @@ atk74_hp_thresholds2: @ 804F6A4 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank adds r4, r0, 0 ldr r0, =gActiveBank strb r4, [r0] @@ -16303,7 +13889,7 @@ atk76_various: @ 804F7AC ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gActiveBank strb r0, [r1] ldr r0, [r4] @@ -17108,7 +14694,7 @@ _0804FF14: str r0, [r2] ldr r1, =0x00007fff movs r0, 0 - bl dp01_build_cmdbuf_x18_0_aa_health_bar_update + bl EmitHealthBarUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, =gBattlescriptCurrInstr @@ -19051,12 +16637,12 @@ atk8D_setmultihit_counter: @ 8050FF0 ldrb r1, [r0, 0x1] cmp r1, 0 beq _0805100C - ldr r0, =gUnknown_02024212 + ldr r0, =gMultiHitCounter strb r1, [r0] b _08051026 .pool _0805100C: - ldr r4, =gUnknown_02024212 + ldr r4, =gMultiHitCounter bl Random movs r5, 0x3 ands r0, r5 @@ -20717,7 +18303,7 @@ atk98_status_icon_update: @ 8051E48 ldrb r0, [r1, 0x1] cmp r0, 0x4 beq _08051EA0 - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldr r3, =gBattleMons @@ -22309,7 +19895,7 @@ _08052C24: bhi _08052C24 lsls r0, r4, 1 adds r4, r0, r4 - ldr r6, =gUnknown_0831ACE8 + ldr r6, =gTypeEffectiveness adds r3, r4, r6 ldr r1, =gUnknown_02024258 ldr r2, =gBankAttacker @@ -22357,7 +19943,7 @@ _08052C80: mov r8, r0 ldr r1, =gBattlescriptCurrInstr mov r12, r1 - ldr r3, =gUnknown_0831ACE8 + ldr r3, =gTypeEffectiveness adds r0, r4, 0x1 adds r0, r3 mov r9, r0 @@ -22743,8 +20329,8 @@ _08052FA8: bx r1 thumb_func_end sub_8052F84 - thumb_func_start move_weather_interaction -move_weather_interaction: @ 8052FAC + thumb_func_start AttacksThisTurn +AttacksThisTurn: @ 8052FAC push {lr} lsls r1, 16 lsrs r2, r1, 16 @@ -22797,7 +20383,7 @@ _08053010: _08053012: pop {r1} bx r1 - thumb_func_end move_weather_interaction + thumb_func_end AttacksThisTurn thumb_func_start atkA9_sleeptalk_choose_move atkA9_sleeptalk_choose_move: @ 8053018 @@ -24489,7 +22075,7 @@ atkBA_jumpifnopursuitswitchdmg: @ 8053EC8 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, =gUnknown_02024212 + ldr r0, =gMultiHitCounter ldrb r0, [r0] cmp r0, 0x1 bne _08053EF8 @@ -25886,7 +23472,7 @@ _08054AF4: str r0, [r2] ldr r1, =0x00007fff movs r0, 0 - bl dp01_build_cmdbuf_x18_0_aa_health_bar_update + bl EmitHealthBarUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, =gBattlescriptCurrInstr @@ -27698,7 +25284,7 @@ atkE2_switchout_abilities: @ 8055A78 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r4, =gActiveBank strb r0, [r4] ldr r3, =gBattleMons @@ -27752,7 +25338,7 @@ atkE3_jumpiffainted: @ 8055AF4 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl get_battle_side_of_something + bl GetBattleBank ldr r1, =gActiveBank strb r0, [r1] ldr r2, =gBattleMons diff --git a/asm/battle_9.s b/asm/battle_9.s index f1811e1afc..401584bce6 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -114,7 +114,7 @@ _08062CBA: ldrh r1, [r4] mov r3, r9 ldrb r2, [r3] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -246,7 +246,7 @@ _08062DE0: beq _08062E1E ldrh r1, [r5] ldrb r2, [r7] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -741,7 +741,7 @@ _0806320A: ldrh r1, [r5] mov r3, r8 ldrb r2, [r3] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -815,7 +815,7 @@ _080632AE: ldrh r1, [r5] mov r3, r8 ldrb r2, [r3] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -1126,7 +1126,7 @@ _08063564: adds r0, r1 ldrh r0, [r0] adds r1, r4, 0 - bl ai_rate_move + bl AI_TypeCalc ldr r1, [sp] ands r1, r0 cmp r1, 0 @@ -1161,7 +1161,7 @@ _080635A2: beq _080635DE ldrh r1, [r5] ldrb r2, [r7] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -1688,7 +1688,7 @@ sub_8063A08: @ 8063A08 lsrs r2, 24 mov r8, r2 movs r7, 0 - ldr r0, =gUnknown_0831ACE8 + ldr r0, =gTypeEffectiveness mov r10, r0 ldrb r0, [r0] cmp r0, 0xFF diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 135918627a..e2b6469a0a 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -2599,10 +2599,10 @@ _0818FFFC: b _081900A4 .pool _0819002C: - ldr r0, =gUnknown_0831ACE8 + ldr r0, =gTypeEffectiveness adds r1, r6, r0 ldrb r0, [r1] - ldr r7, =gUnknown_0831ACE8 + ldr r7, =gTypeEffectiveness cmp r0, 0xFF beq _081900A4 adds r4, r1, 0 @@ -2657,7 +2657,7 @@ _08190088: _08190096: adds r4, 0x3 adds r6, 0x3 - ldr r1, =gUnknown_0831ACE8 + ldr r1, =gTypeEffectiveness adds r0, r6, r1 ldrb r0, [r0] cmp r0, 0xFF @@ -10109,7 +10109,7 @@ _08194074: lsls r0, r4, 1 add r0, r10 ldrh r0, [r0] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r5, r0, 24 movs r0, 0x6 diff --git a/asm/rom3.s b/asm/rom3.s index c3a7308366..d039db7f21 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2465,8 +2465,8 @@ _08033AF2: .pool thumb_func_end sub_8033AC4 - thumb_func_start dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes -dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes: @ 8033B0C + thumb_func_start EmitMoveAnimation +EmitMoveAnimation: @ 8033B0C push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -2568,7 +2568,7 @@ _08033BB6: pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes + thumb_func_end EmitMoveAnimation thumb_func_start dp01_build_cmdbuf_x10_TODO dp01_build_cmdbuf_x10_TODO: @ 8033BE4 @@ -2938,8 +2938,8 @@ dp01_build_cmdbuf_x17_17_17_17: @ 8033EDC .pool thumb_func_end dp01_build_cmdbuf_x17_17_17_17 - thumb_func_start dp01_build_cmdbuf_x18_0_aa_health_bar_update -dp01_build_cmdbuf_x18_0_aa_health_bar_update: @ 8033EFC + thumb_func_start EmitHealthBarUpdate +EmitHealthBarUpdate: @ 8033EFC push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -2965,7 +2965,7 @@ dp01_build_cmdbuf_x18_0_aa_health_bar_update: @ 8033EFC pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x18_0_aa_health_bar_update + thumb_func_end EmitHealthBarUpdate thumb_func_start dp01_build_cmdbuf_x19_a_bb dp01_build_cmdbuf_x19_a_bb: @ 8033F34 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b3dafed162..aab0de4e35 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -90,7 +90,7 @@ gUnknown_082DAB11:: @ 82DAB11 gUnknown_082DAB15:: @ 82DAB15 .incbin "baserom.gba", 0x2dab15, 0xa4 -gUnknown_082DABB9:: @ 82DABB9 +BattleScript_Pausex20:: @ 82DABB9 .incbin "baserom.gba", 0x2dabb9, 0x4 gUnknown_082DABBD:: @ 82DABBD diff --git a/data/data2b.s b/data/data2b.s index 1499c51fec..5df0bdf549 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -202,7 +202,7 @@ gUnknown_0831ACA0:: @ 831ACA0 gUnknown_0831ACE0:: @ 831ACE0 .incbin "baserom.gba", 0x31ace0, 0x8 -gUnknown_0831ACE8:: @ 831ACE8 +gTypeEffectiveness:: @ 831ACE8 .incbin "baserom.gba", 0x31ace8, 0x150 @ 831AE38 diff --git a/include/battle.h b/include/battle.h index b04b8db8f2..f9615b8899 100644 --- a/include/battle.h +++ b/include/battle.h @@ -213,6 +213,19 @@ #define MOVE_TARGET_FOES_AND_ALLY 0x20 #define MOVE_TARGET_OPPONENTS_FIELD 0x40 +#define TYPE_MUL_NO_EFFECT 0 +#define TYPE_MUL_NOT_EFFECTIVE 5 +#define TYPE_MUL_NORMAL 10 +#define TYPE_MUL_SUPER_EFFECTIVE 20 + +#define BS_GET_TARGET 0 +#define BS_GET_ATTACKER 1 +#define BS_GET_EFFECT_BANK 2 +#define BS_GET_SCRIPTING_BANK 10 +#define BS_GET_OPPONENT1 12 +#define BS_GET_PLAYER2 13 +#define BS_GET_OPPONENT2 14 + struct Trainer { /*0x00*/ u8 partyFlags; @@ -640,14 +653,16 @@ extern struct BattleStruct* gBattleStruct; var2[offsetof(struct structName, offsetField)] = value; \ } -#define GET_MOVE_TYPE(move, type) \ +#define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ - type = gBattleStruct->dynamicMoveType & 0x3F; \ + typeArg = gBattleStruct->dynamicMoveType & 0x3F; \ else \ - type = gBattleMoves[move].type; \ + typeArg = gBattleMoves[move].type; \ } +#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & 1)) + struct BattleScripting { u8 field_0; @@ -671,8 +686,8 @@ struct BattleScripting u8 field_15; u8 field_16; u8 bank; - u8 field_18; - u8 field_19; + u8 animTurn; + u8 animTargetsHit; u8 statChanger; }; @@ -684,6 +699,7 @@ extern struct BattleScripting gBattleScripting; void CancelMultiTurnMoves(u8 bank); void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); void PrepareStringBattle(u16 stringId, u8 bank); +u8 GetBattleBank(u8 caseId); // battle_3 void b_movescr_stack_push(const u8* bsPtr); @@ -709,6 +725,11 @@ void sub_80458B4(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsPokeDisobedient(void); +// battle_4 +void AI_CalcDmg(u8 bankAtk, u8 bankDef); +u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); +u8 AI_TypeCalc(u16 move, u16 species, u8 ability); + // rom_80A5C6C u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); diff --git a/include/battle_controllers.h b/include/battle_controllers.h new file mode 100644 index 0000000000..5723cf9dac --- /dev/null +++ b/include/battle_controllers.h @@ -0,0 +1,11 @@ +#ifndef GUARD_BATTLE_CONTROLLERS_H +#define GUARD_BATTLE_CONTROLLERS_H + +// rom3.s, emitters +void EmitSetAttributes(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); +void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); +void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); + +void MarkBufferBankForExecution(u8 bank); + +#endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/src/battle_3.c b/src/battle_3.c index 283305d6cc..4f0997aa06 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -14,6 +14,7 @@ #include "string_util.h" #include "battle_message.h" #include "battle_ai.h" +#include "battle_controllers.h" #include "event_data.h" #include "calculate_base_damage.h" @@ -183,10 +184,8 @@ extern u8 b_first_side(u8, u8, u8); extern void sub_803CEDC(u8, u8); extern void b_call_bc_move_exec(const u8 *); extern void BattleTurnPassed(void); -extern void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); extern void SetMoveEffect(bool8 primary, u8 certainArg); extern bool8 UproarWakeUpCheck(u8 bank); -extern void MarkBufferBankForExecution(u8 bank); extern u8 sub_803F90C(u8 bank); extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); diff --git a/src/battle_4.c b/src/battle_4.c index e693162ccc..be7f712c6b 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -12,6 +12,8 @@ #include "pokemon.h" #include "calculate_base_damage.h" #include "rng.h" +#include "battle_controllers.h" +#include "species.h" // variables @@ -135,7 +137,7 @@ extern const u8 BattleScript_ShakeBallThrow[]; bool8 IsTwoTurnsMove(u16 move); void DestinyBondFlagUpdate(void); u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. -void b_wonderguard_and_levitate(void); +static void CheckWonderGuardAndLevitate(void); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -1000,7 +1002,7 @@ void atk01_accuracycheck(void) else gBattleCommunication[6] = 0; - b_wonderguard_and_levitate(); + CheckWonderGuardAndLevitate(); } JumpIfMoveFailed(7, move); } @@ -1018,3 +1020,641 @@ void atk02_attackstring(void) gBattlescriptCurrInstr++; gBattleCommunication[MSG_DISPLAY] = 0; } + +void atk03_ppreduce(void) +{ + s32 to_deduct = 1; + + if (gBattleExecBuffer) + return; + + if (!gSpecialStatuses[gBankAttacker].flag20) + { + switch (gBattleMoves[gCurrentMove].target) + { + case MOVE_TARGET_FOES_AND_ALLY: + to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); + break; + case MOVE_TARGET_BOTH: + case MOVE_TARGET_OPPONENTS_FIELD: + to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0); + break; + default: + if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE) + to_deduct++; + break; + } + } + + if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos]) + { + gProtectStructs[gBankAttacker].notFirstStrike = 1; + + if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct) + gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct; + else + gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0; + + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) + && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos])) + { + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); + MarkBufferBankForExecution(gBankAttacker); + } + } + + gHitMarker &= ~(HITMARKER_NO_PPDEDUCT); + gBattlescriptCurrInstr++; +} + +void atk04_critcalc(void) +{ + u8 holdEffect; + u16 item, critChance; + + item = gBattleMons[gBankAttacker].item; + + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gBankAttacker].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + + gStringBank = gBankAttacker; + + critChance = 2 * ((gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0) + + (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) + + (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) + + (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) + + (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) + + (holdEffect == HOLD_EFFECT_SCOPE_LENS) + + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) + + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD); + + if (critChance > 4) + critChance = 4; + + if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR) + && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT) + && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) + && !(Random() % gCriticalHitChance[critChance])) + gCritMultiplier = 2; + else + gCritMultiplier = 1; + + gBattlescriptCurrInstr++; +} + +void atk05_damagecalc1(void) +{ + u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + sideStatus, gDynamicBasePower, + gBattleStruct->dynamicMoveType, gBankAttacker, gBankTarget); + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.dmgMultiplier; + + if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + + gBattlescriptCurrInstr++; +} + +void AI_CalcDmg(u8 bankAtk, u8 bankDef) +{ + u16 sideStatus = gSideAffecting[GET_BANK_SIDE(bankDef)]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[bankAtk], &gBattleMons[bankDef], gCurrentMove, + sideStatus, gDynamicBasePower, + gBattleStruct->dynamicMoveType, bankAtk, bankDef); + gDynamicBasePower = 0; + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.dmgMultiplier; + + if (gStatuses3[bankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[bankAtk].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; +} + +void ModulateDmgByType(u8 multiplier) +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + + switch (multiplier) + { + case TYPE_MUL_NO_EFFECT: + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE; + break; + case TYPE_MUL_NOT_EFFECTIVE: + if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) + gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE; + else + gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + break; + case TYPE_MUL_SUPER_EFFECTIVE: + if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) + gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + else + gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE; + } + break; + } +} + +#define TYPE_FORESIGHT 0xFE +#define TYPE_ENDTABLE 0xFF + +void atk06_typecalc(void) +{ + s32 i = 0; + u8 moveType; + + if (gCurrentMove == MOVE_STRUGGLE) + { + gBattlescriptCurrInstr++; + return; + } + + GET_MOVE_TYPE(gCurrentMove, moveType); + + // check stab + if (gBattleMons[gBankAttacker].type1 == moveType || gBattleMons[gBankAttacker].type2 == moveType) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gUnknown_02024250[gBankTarget] = 0; + gUnknown_02024258[gBankTarget] = 0; + gBattleCommunication[6] = moveType; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + else if (gTypeEffectiveness[i] == moveType) + { + // check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + // check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + } + i += 3; + } + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 + && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gUnknown_02024250[gBankTarget] = 0; + gUnknown_02024258[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; + + gBattlescriptCurrInstr++; +} + +static void CheckWonderGuardAndLevitate(void) +{ + u8 flags = 0; + s32 i = 0; + u8 moveType; + + if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) + return; + + GET_MOVE_TYPE(gCurrentMove, moveType); + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + gLastUsedAbility = ABILITY_LEVITATE; + gBattleCommunication[6] = moveType; + RecordAbilityBattle(gBankTarget, ABILITY_LEVITATE); + return; + } + + while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + if (gTypeEffectiveness[i] == moveType) + { + // check no effect + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gProtectStructs[gBankAttacker].notEffective = 1; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && + gTypeEffectiveness[i + 2] == TYPE_MUL_NO_EFFECT) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gProtectStructs[gBankAttacker].notEffective = 1; + } + + // check super effective + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 20) + flags |= 1; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE) + flags |= 1; + + // check not very effective + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 5) + flags |= 2; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == TYPE_MUL_NOT_EFFECTIVE) + flags |= 2; + } + i += 3; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2) + { + if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, ABILITY_WONDER_GUARD); + } + } +} + +void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as ModulateDmgByType except different arguments +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + + switch (multiplier) + { + case TYPE_MUL_NO_EFFECT: + *flags |= MOVESTATUS_NOTAFFECTED; + *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + *flags &= ~MOVESTATUS_SUPEREFFECTIVE; + break; + case TYPE_MUL_NOT_EFFECTIVE: + if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT)) + { + if (*flags & MOVESTATUS_SUPEREFFECTIVE) + *flags &= ~MOVESTATUS_SUPEREFFECTIVE; + else + *flags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + break; + case TYPE_MUL_SUPER_EFFECTIVE: + if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT)) + { + if (*flags & MOVESTATUS_NOTVERYEFFECTIVE) + *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + else + *flags |= MOVESTATUS_SUPEREFFECTIVE; + } + break; + } +} + +u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef) +{ + s32 i = 0; + u8 flags = 0; + u8 moveType; + + if (move == MOVE_STRUGGLE) + return 0; + + moveType = gBattleMoves[move].type; + + // check stab + if (gBattleMons[bankAtk].type1 == moveType || gBattleMons[bankAtk].type2 == moveType) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[bankDef].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[bankDef].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == moveType) + { + // check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[bankDef].type1) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + // check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[bankDef].type2 && + gBattleMons[bankDef].type1 != gBattleMons[bankDef].type2) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + } + i += 3; + } + } + + if (gBattleMons[bankDef].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED) + && AttacksThisTurn(bankAtk, move) == 2 + && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[move].power) + { + flags |= MOVESTATUS_MISSED; + } + return flags; +} + +u8 AI_TypeCalc(u16 move, u16 species, u8 ability) +{ + s32 i = 0; + u8 flags = 0; + u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2; + u8 moveType; + + if (move == MOVE_STRUGGLE) + return 0; + + moveType = gBattleMoves[move].type; + + if (ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED; + } + else + { + while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + i += 3; + continue; + } + if (gTypeEffectiveness[i] == moveType) + { + // check type1 + if (gTypeEffectiveness[i + 1] == type1) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + // check type2 + if (gTypeEffectiveness[i + 1] == type2 && type1 != type2) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + } + i += 3; + } + } + if (ability == ABILITY_WONDER_GUARD + && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[move].power) + flags |= MOVESTATUS_NOTAFFECTED; + return flags; +} + +// Multiplies the damage by a random factor between 85% to 100% inclusive +static inline void ApplyRandomDmgMultiplier(void) +{ + u16 rand = Random(); + u16 randPercent = 100 - (rand % 16); + + if (gBattleMoveDamage != 0) + { + gBattleMoveDamage *= randPercent; + gBattleMoveDamage /= 100; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } +} + +void Unused_ApplyRandomDmgMultiplier(void) +{ + ApplyRandomDmgMultiplier(); +} + +void atk07_dmg_adjustment(void) +{ + u8 holdEffect, quality; + + ApplyRandomDmgMultiplier(); + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemEffectBattle(gBankTarget, holdEffect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + } + else if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect. +{ + u8 holdEffect, quality; + + ApplyRandomDmgMultiplier(); + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemEffectBattle(gBankTarget, holdEffect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (!gProtectStructs[gBankTarget].endured && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + } + else if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +void atk09_attackanimation(void) +{ + if (gBattleExecBuffer) + return; + + if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + gBattleScripting.animTurn++; + gBattleScripting.animTargetsHit++; + } + else + { + if ((gBattleMoves[gCurrentMove].target & MOVE_TARGET_BOTH + || gBattleMoves[gCurrentMove].target & MOVE_TARGET_FOES_AND_ALLY + || gBattleMoves[gCurrentMove].target & MOVE_TARGET_DEPENDS) + && gBattleScripting.animTargetsHit) + { + gBattlescriptCurrInstr++; + return; + } + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + u8 multihit; + + gActiveBank = gBankAttacker; + + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + multihit = gMultiHitCounter; + else if (gMultiHitCounter != 0 && gMultiHitCounter != 1) + { + if (gBattleMons[gBankTarget].hp <= gBattleMoveDamage) + multihit = 1; + else + multihit = gMultiHitCounter; + } + else + multihit = gMultiHitCounter; + + EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker], multihit); + gBattleScripting.animTurn += 1; + gBattleScripting.animTargetsHit += 1; + MarkBufferBankForExecution(gBankAttacker); + gBattlescriptCurrInstr++; + } + else + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } + } +} + +void atk0A_waitanimation(void) +{ + if (gBattleExecBuffer == 0) + gBattlescriptCurrInstr++; +} + +void atk0B_healthbarupdate(void) +{ + register s16 healthValue asm("r1"); + + if (gBattleExecBuffer) + return; + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + goto END; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + PrepareStringBattle(0x80, gActiveBank); + goto END; + } + + healthValue = 10000; + if (healthValue <= gBattleMoveDamage) + healthValue = gBattleMoveDamage; + + EmitHealthBarUpdate(0, healthValue); + MarkBufferBankForExecution(gActiveBank); + + if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0) + gBattleResults.unk5_0 = 1; + + END: + gBattlescriptCurrInstr += 2; +} diff --git a/src/battle_ai.c b/src/battle_ai.c index 3b696b84e0..75b5eb2edb 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -73,10 +73,7 @@ extern const struct BaseStats gBaseStats[]; extern const u32 gBitTable[]; extern u8 * const gBattleAI_ScriptsTable[]; -extern u8 GetBankIdentity(u8); extern u8 b_first_side(u8, u8, u8); -extern u8 GetBankByPlayerAI(u8); -extern void TypeCalc(u16 move, u8 bankAtk, u8 bankDef); extern void AI_CalcDmg(u8, u8); extern u8 CheckMoveLimitations(); diff --git a/sym_ewram.txt b/sym_ewram.txt index a675fa4e2d..8eb395b0f2 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -376,7 +376,7 @@ gAbsentBankFlags: @ 2024210 gCritMultiplier: @ 2024211 .space 0x1 -gUnknown_02024212: @ 2024212 +gMultiHitCounter: @ 2024212 .space 0x2 gBattlescriptCurrInstr: @ 2024214 From 28da80e19af3270b827e98c2e7c69c0199d14d05 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 20 Sep 2017 12:56:45 +0200 Subject: [PATCH 013/182] battle 4 up to SetMoveEffect --- asm/battle_2.s | 6 +- asm/battle_4.s | 1004 +--------------------------------- asm/rom3.s | 12 +- data/battle_message.s | 2 +- data/battle_scripts_1.s | 8 +- include/battle.h | 1 + include/battle_controllers.h | 2 + include/songs.h | 4 +- src/battle_4.c | 401 +++++++++++++- sym_ewram.txt | 4 +- 10 files changed, 410 insertions(+), 1034 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index debf0eb030..7567daa4b0 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6510,7 +6510,7 @@ _0803A0AE: ldr r0, [r0, 0xC] adds r0, 0x20 strb r2, [r0] - ldr r5, =gUnknown_0202432C + ldr r5, =gPauseCounterBattle ldr r6, =gBattleMoveDamage ldr r7, =gUnknown_020243FC ldr r0, =gUnknown_03005D54 @@ -14058,14 +14058,14 @@ _0803E480: cmp r0, 0x1F bne _0803E4CE adds r0, r2, 0 - bl sub_8048728 + bl BankGetTurnOrder lsls r0, 24 lsrs r0, 24 ldr r3, [sp] cmp r0, r3 bcs _0803E4CE ldrb r0, [r4] - bl sub_8048728 + bl BankGetTurnOrder lsls r0, 24 lsrs r0, 24 str r0, [sp] diff --git a/asm/battle_4.s b/asm/battle_4.s index e1c02a2fb3..1494620919 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,998 +5,6 @@ .text - thumb_func_start atk0C_datahpupdate -atk0C_datahpupdate: @ 8047EC4 - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _08047ED2 - b _080482A2 -_08047ED2: - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x13] - cmp r1, 0 - beq _08047EF4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08047EF4 - movs r6, 0x3F - ands r6, r1 - b _08047F04 - .pool -_08047EF4: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r6, [r0, 0x2] -_08047F04: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08047F12 - b _08048274 -_08047F12: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r7, =gActiveBank - strb r0, [r7] - ldr r1, =gBattleMons - ldrb r2, [r7] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _08048028 - ldr r0, =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r4, r1, r0 - ldrb r1, [r4, 0xA] - mov r12, r0 - cmp r1, 0 - beq _08048028 - ldr r0, =gHitMarker - ldr r3, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r3, r0 - cmp r3, 0 - bne _08048028 - adds r5, r1, 0 - ldr r6, =gBattleMoveDamage - ldr r4, [r6] - cmp r5, r4 - blt _08047FBC - ldr r0, =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _08047F76 - str r4, [r1] -_08047F76: - ldrb r0, [r7] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - ldr r2, [r6] - ldrb r0, [r1, 0xA] - subs r0, r2 - strb r0, [r1, 0xA] - ldr r1, =gUnknown_020241F4 - ldr r0, [r6] - str r0, [r1] - b _08047FEC - .pool -_08047FBC: - ldr r0, =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _08047FD0 - str r5, [r1] -_08047FD0: - ldr r2, =gUnknown_020241F4 - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xA] - str r0, [r2] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - strb r3, [r0, 0xA] -_08047FEC: - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _08048000 - b _0804829A -_08048000: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - bl b_movescr_stack_push_cursor - ldr r0, =gUnknown_082DB6FB - str r0, [r4] - b _080482A2 - .pool -_08048028: - ldr r0, =gHitMarker - ldr r2, [r0] - ldr r1, =0xfffffeff - ands r2, r1 - str r2, [r0] - ldr r1, =gBattleMoveDamage - ldr r5, [r1] - mov r12, r0 - adds r7, r1, 0 - cmp r5, 0 - bge _0804807C - ldr r4, =gBattleMons - ldr r2, =gActiveBank - ldrb r0, [r2] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - adds r1, r4 - ldrh r0, [r1, 0x28] - subs r0, r5 - strh r0, [r1, 0x28] - ldrb r0, [r2] - muls r0, r3 - adds r1, r0, r4 - ldrh r3, [r1, 0x2C] - ldrh r0, [r1, 0x28] - adds r5, r2, 0 - cmp r0, r3 - bhi _08048064 - b _0804823A -_08048064: - strh r3, [r1, 0x28] - b _0804823A - .pool -_0804807C: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _08048098 - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - mov r0, r12 - str r2, [r0] - ldr r5, =gActiveBank - b _080480E0 - .pool -_08048098: - ldr r0, =gTakenDmg - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - adds r0, r5 - str r0, [r1] - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - adds r5, r2, 0 - cmp r0, 0 - bne _080480D4 - ldr r1, =gTakenDmgBanks - ldrb r0, [r5] - adds r0, r1 - ldr r1, =gBankAttacker - b _080480DC - .pool -_080480D4: - ldr r1, =gTakenDmgBanks - ldrb r0, [r5] - adds r0, r1 - ldr r1, =gBankTarget -_080480DC: - ldrb r1, [r1] - strb r1, [r0] -_080480E0: - ldr r4, =gBattleMons - ldrb r0, [r5] - movs r3, 0x58 - muls r0, r3 - adds r2, r0, r4 - ldrh r0, [r2, 0x28] - ldr r1, [r7] - cmp r0, r1 - ble _08048110 - subs r0, r1 - strh r0, [r2, 0x28] - ldr r0, =gUnknown_020241F4 - str r1, [r0] - adds r7, r0, 0 - b _08048120 - .pool -_08048110: - ldr r2, =gUnknown_020241F4 - str r0, [r2] - ldrb r0, [r5] - muls r0, r3 - adds r0, r4 - movs r1, 0 - strh r1, [r0, 0x28] - adds r7, r2, 0 -_08048120: - ldr r2, =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0x4 - adds r3, r0, r1 - ldr r0, [r3] - adds r4, r2, 0 - cmp r0, 0 - bne _08048148 - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _08048148 - ldr r0, [r7] - str r0, [r3] -_08048148: - cmp r6, 0x8 - bhi _080481D0 - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _080481CC - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xDC - beq _080481CC - ldr r3, =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r1, r3, 0x4 - adds r0, r1 - ldr r2, [r7] - str r2, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x8 - adds r0, r1 - str r2, [r0] - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080481AC - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, =gBankAttacker - b _080481B4 - .pool -_080481AC: - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, =gBankTarget -_080481B4: - ldrb r1, [r2] - strb r1, [r0, 0xC] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r2] - strb r1, [r0, 0x10] - b _0804823A - .pool -_080481CC: - cmp r6, 0x8 - bls _0804823A -_080481D0: - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0804823A - ldr r3, =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r2, [r7] - str r2, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - str r2, [r0] - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08048220 - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, =gBankAttacker - b _08048228 - .pool -_08048220: - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, =gBankTarget -_08048228: - ldrb r1, [r2] - strb r1, [r0, 0xD] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r2] - strb r1, [r0, 0x11] -_0804823A: - mov r1, r12 - ldr r0, [r1] - ldr r1, =0xffefffff - ands r0, r1 - mov r1, r12 - str r0, [r1] - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - ldr r1, =gBattleMons + 0x28 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2A - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution - b _0804829A - .pool -_08048274: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gActiveBank - strb r0, [r1] - ldr r2, =gSpecialStatuses - ldrb r1, [r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r1, r0, r2 - ldr r0, [r1] - cmp r0, 0 - bne _0804829A - ldr r0, =0x0000ffff - str r0, [r1] -_0804829A: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_080482A2: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk0C_datahpupdate - - thumb_func_start atk0D_critmessage -atk0D_critmessage: @ 80482BC - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _080482F2 - ldr r0, =gCritMultiplier - ldrb r0, [r0] - cmp r0, 0x2 - bne _080482EA - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080482EA - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0xD9 - bl PrepareStringBattle - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] -_080482EA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080482F2: - pop {r0} - bx r0 - .pool - thumb_func_end atk0D_critmessage - - thumb_func_start atk0E_effectiveness_sound -atk0E_effectiveness_sound: @ 8048310 - push {r4,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _080483D0 - ldr r4, =gActiveBank - ldr r0, =gBankTarget - ldrb r0, [r0] - strb r0, [r4] - ldr r1, =gBattleMoveFlags - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _080483C8 - movs r0, 0xFE - ands r0, r2 - cmp r0, 0x10 - beq _08048382 - cmp r0, 0x10 - bgt _0804835E - cmp r0, 0x4 - beq _08048372 - cmp r0, 0x4 - bgt _08048358 - cmp r0, 0x2 - beq _0804836C - b _08048382 - .pool -_08048358: - cmp r0, 0x8 - beq _080483C8 - b _08048382 -_0804835E: - cmp r0, 0x40 - beq _08048382 - cmp r0, 0x40 - bgt _08048382 - cmp r0, 0x20 - beq _080483C8 - b _08048382 -_0804836C: - movs r0, 0 - movs r1, 0xE - b _08048376 -_08048372: - movs r0, 0 - movs r1, 0xC -_08048376: - bl dp01_build_cmdbuf_x2B_aa_0 - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _080483C8 -_08048382: - ldrb r1, [r1] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08048392 - movs r0, 0 - movs r1, 0xE - b _0804839E -_08048392: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080483B0 - movs r0, 0 - movs r1, 0xC -_0804839E: - bl dp01_build_cmdbuf_x2B_aa_0 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - b _080483C8 - .pool -_080483B0: - movs r0, 0x28 - ands r0, r1 - cmp r0, 0 - bne _080483C8 - movs r0, 0 - movs r1, 0xD - bl dp01_build_cmdbuf_x2B_aa_0 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_080483C8: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080483D0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk0E_effectiveness_sound - - thumb_func_start atk0F_resultmessage -atk0F_resultmessage: @ 80483E0 - push {r4-r7,lr} - movs r3, 0 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _080483EE - b _08048580 -_080483EE: - ldr r1, =gBattleMoveFlags - ldrb r2, [r1] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r2 - adds r6, r1, 0 - ldr r7, =gBattleCommunication - cmp r0, 0 - beq _0804842C - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0804840E - ldrb r0, [r7, 0x6] - cmp r0, 0x2 - bls _0804842C -_0804840E: - ldr r1, =gUnknown_085CC834 - ldrb r0, [r7, 0x6] - lsls r0, 1 - adds r0, r1 - ldrh r3, [r0] - strb r4, [r7, 0x7] - b _0804856A - .pool -_0804842C: - movs r0, 0x1 - strb r0, [r7, 0x7] - ldrb r5, [r6] - movs r0, 0xFE - ands r0, r5 - cmp r0, 0x10 - beq _08048470 - cmp r0, 0x10 - bgt _08048452 - cmp r0, 0x4 - beq _0804846C - cmp r0, 0x4 - bgt _0804844C - cmp r0, 0x2 - beq _08048468 - b _080484B8 -_0804844C: - cmp r0, 0x8 - beq _080484C4 - b _080484B8 -_08048452: - cmp r0, 0x40 - beq _08048474 - cmp r0, 0x40 - bgt _08048462 - cmp r0, 0x20 - bne _08048460 - b _08048564 -_08048460: - b _080484B8 -_08048462: - cmp r0, 0x80 - beq _08048478 - b _080484B8 -_08048468: - movs r3, 0xDE - b _0804856E -_0804846C: - movs r3, 0xDD - b _0804856E -_08048470: - movs r3, 0xDA - b _0804856E -_08048474: - movs r3, 0x99 - b _0804856E -_08048478: - ldr r4, =gLastUsedItem - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - ldr r1, =gStringBank - ldrb r0, [r3] - strb r0, [r1] - movs r0, 0x3F - ands r0, r5 - strb r0, [r6] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB816 - b _0804857E - .pool -_080484B8: - adds r2, r6, 0 - ldrb r5, [r2] - movs r0, 0x8 - ands r0, r5 - cmp r0, 0 - beq _080484C8 -_080484C4: - movs r3, 0x1B - b _0804856E -_080484C8: - movs r0, 0x10 - ands r0, r5 - cmp r0, 0 - beq _080484F0 - movs r0, 0xEF - ands r0, r5 - movs r1, 0xFD - ands r0, r1 - movs r1, 0xFB - ands r0, r1 - strb r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB1CE - b _0804857E - .pool -_080484F0: - movs r0, 0x40 - ands r0, r5 - cmp r0, 0 - beq _08048510 - movs r0, 0x3F - ands r0, r5 - strb r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB1C7 - b _0804857E - .pool -_08048510: - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _08048558 - ldr r4, =gLastUsedItem - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - ldr r1, =gStringBank - ldrb r0, [r3] - strb r0, [r1] - movs r0, 0x3F - ands r0, r5 - strb r0, [r6] - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB816 - b _0804857E - .pool -_08048558: - movs r0, 0x20 - ands r0, r5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08048568 -_08048564: - movs r3, 0xE5 - b _0804856E -_08048568: - strb r0, [r7, 0x7] -_0804856A: - cmp r3, 0 - beq _08048578 -_0804856E: - adds r0, r3, 0 - ldr r1, =gBankAttacker - ldrb r1, [r1] - bl PrepareStringBattle -_08048578: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0804857E: - str r0, [r1] -_08048580: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk0F_resultmessage - - thumb_func_start atk10_printstring -atk10_printstring: @ 8048590 - push {r4,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _080485BA - ldr r4, =gBattlescriptCurrInstr - ldr r1, [r4] - ldrb r0, [r1, 0x1] - ldrb r1, [r1, 0x2] - lsls r1, 8 - orrs r0, r1 - ldr r1, =gBankAttacker - ldrb r1, [r1] - bl PrepareStringBattle - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] -_080485BA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk10_printstring - - thumb_func_start atk11_printstring_playeronly -atk11_printstring_playeronly: @ 80485D0 - push {r4,r5,lr} - ldr r5, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl dp01_build_cmdbuf_x11_TODO - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk11_printstring_playeronly - - thumb_func_start atk12_waitmessage -atk12_waitmessage: @ 8048614 - push {r4-r6,lr} - ldr r0, =gBattleExecBuffer - ldr r4, [r0] - cmp r4, 0 - bne _08048662 - ldr r6, =gBattleCommunication - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _0804863C - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] - b _08048662 - .pool -_0804863C: - ldr r5, =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r3, =gUnknown_0202432C - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bcc _08048662 - movs r1, 0 - strh r4, [r3] - adds r0, r2, 0x3 - str r0, [r5] - strb r1, [r6, 0x7] -_08048662: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk12_waitmessage - - thumb_func_start atk13_printfromtable -atk13_printfromtable: @ 8048670 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _080486AE - ldr r4, =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - ldr r5, =gBattleCommunication - ldrb r0, [r5, 0x5] - lsls r0, 1 - adds r1, r0 - ldrh r0, [r1] - ldr r1, =gBankAttacker - ldrb r1, [r1] - bl PrepareStringBattle - ldr r0, [r4] - adds r0, 0x5 - str r0, [r4] - movs r0, 0x1 - strb r0, [r5, 0x7] -_080486AE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk13_printfromtable - - thumb_func_start atk14_printfromtable_playeronly -atk14_printfromtable_playeronly: @ 80486C4 - push {r4-r6,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804870E - ldr r5, =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - ldr r6, =gBattleCommunication - ldrb r0, [r6, 0x5] - lsls r0, 1 - adds r1, r0 - ldr r4, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldrh r1, [r1] - movs r0, 0 - bl dp01_build_cmdbuf_x11_TODO - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x5 - str r0, [r5] - movs r0, 0x1 - strb r0, [r6, 0x7] -_0804870E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk14_printfromtable_playeronly - - thumb_func_start sub_8048728 -sub_8048728: @ 8048728 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r0, =gNoOfAllBanks - ldrb r3, [r0] - cmp r1, r3 - bge _0804874E - ldr r4, =gTurnOrder - ldrb r0, [r4] - cmp r0, r2 - beq _0804874E -_08048740: - adds r1, 0x1 - cmp r1, r3 - bge _0804874E - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _08048740 -_0804874E: - lsls r0, r1, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8048728 thumb_func_start SetMoveEffect SetMoveEffect: @ 8048760 @@ -2078,7 +1086,7 @@ _080490F0: .pool _08049114: adds r0, r2, 0 - bl sub_8048728 + bl BankGetTurnOrder ldr r1, =gUnknown_02024082 lsls r0, 24 lsrs r0, 24 @@ -2348,7 +1356,7 @@ _08049362: .pool _08049390: ldr r1, =gBattleMoveDamage - ldr r0, =gUnknown_020241F4 + ldr r0, =gHpDealt ldr r0, [r0] cmp r0, 0 bge _0804939C @@ -2831,7 +1839,7 @@ _08049808: .pool _08049820: ldr r4, =gBattleMoveDamage - ldr r0, =gUnknown_020241F4 + ldr r0, =gHpDealt ldr r0, [r0] movs r1, 0x3 bl __divsi3 @@ -6325,7 +5333,7 @@ atk39_pause: @ 804B5A0 ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 - ldr r3, =gUnknown_0202432C + ldr r3, =gPauseCounterBattle ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] @@ -10938,7 +9946,7 @@ atk54_effectiveness_sound: @ 804DDD8 lsls r0, 8 orrs r1, r0 movs r0, 0 - bl dp01_build_cmdbuf_x2B_aa_0 + bl EmitEffectivenessSound ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] @@ -15935,7 +14943,7 @@ _080509D0: atk88_negativedamage: @ 80509E8 push {lr} ldr r2, =gBattleMoveDamage - ldr r0, =gUnknown_020241F4 + ldr r0, =gHpDealt ldr r0, [r0] lsrs r1, r0, 31 adds r0, r1 diff --git a/asm/rom3.s b/asm/rom3.s index d039db7f21..f6b6f2d037 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2687,8 +2687,8 @@ _08033C88: .pool thumb_func_end dp01_build_cmdbuf_x10_TODO - thumb_func_start dp01_build_cmdbuf_x11_TODO -dp01_build_cmdbuf_x11_TODO: @ 8033CFC + thumb_func_start EmitPrintStringPlayerOnly +EmitPrintStringPlayerOnly: @ 8033CFC push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2784,7 +2784,7 @@ _08033D7C: pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x11_TODO + thumb_func_end EmitPrintStringPlayerOnly thumb_func_start dp01_build_cmdbuf_x12_a_bb dp01_build_cmdbuf_x12_a_bb: @ 8033DE4 @@ -3467,8 +3467,8 @@ dp01_build_cmdbuf_x2A_2A_2A_2A: @ 80342B4 .pool thumb_func_end dp01_build_cmdbuf_x2A_2A_2A_2A - thumb_func_start dp01_build_cmdbuf_x2B_aa_0 -dp01_build_cmdbuf_x2B_aa_0: @ 80342D4 + thumb_func_start EmitEffectivenessSound +EmitEffectivenessSound: @ 80342D4 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -3489,7 +3489,7 @@ dp01_build_cmdbuf_x2B_aa_0: @ 80342D4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x2B_aa_0 + thumb_func_end EmitEffectivenessSound thumb_func_start sub_8034300 sub_8034300: @ 8034300 diff --git a/data/battle_message.s b/data/battle_message.s index 93a921b5e7..df63806401 100644 --- a/data/battle_message.s +++ b/data/battle_message.s @@ -596,7 +596,7 @@ gUnknown_085CC23E:: @ 85CC23E gUnknown_085CC270:: @ 85CC270 .incbin "baserom.gba", 0x5cc270, 0x5c4 -gUnknown_085CC834:: @ 85CC834 +gMissStringIds:: @ 85CC834 .incbin "baserom.gba", 0x5cc834, 0x14e gUnknown_085CC982:: @ 85CC982 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index aab0de4e35..23ef731d1e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -246,10 +246,10 @@ BattleScript_MagicCoatBounce:: @ 82DB194 BattleScript_SnatchedMove:: @ 82DB1AC .incbin "baserom.gba", 0x2db1ac, 0x1b -gUnknown_082DB1C7:: @ 82DB1C7 +BattleScript_EnduredMsg:: @ 82DB1C7 .incbin "baserom.gba", 0x2db1c7, 0x7 -gUnknown_082DB1CE:: @ 82DB1CE +BattleScript_OneHitKOMsg:: @ 82DB1CE .incbin "baserom.gba", 0x2db1ce, 0x7 gUnknown_082DB1D5:: @ 82DB1D5 @@ -450,7 +450,7 @@ gUnknown_082DB6D9:: @ 82DB6D9 gUnknown_082DB6F0:: @ 82DB6F0 .incbin "baserom.gba", 0x2db6f0, 0xb -gUnknown_082DB6FB:: @ 82DB6FB +BattleScript_SubstituteFade:: @ 82DB6FB .incbin "baserom.gba", 0x2db6fb, 0xb BattleScript_BerryCurePrlzEnd2:: @ 82DB706 @@ -516,7 +516,7 @@ BattleScript_ItemHealHP_Ret:: @ 82DB7F7 gUnknown_082DB812:: @ 82DB812 .incbin "baserom.gba", 0x2db812, 0x4 -gUnknown_082DB816:: @ 82DB816 +BattleScript_HangedOnMsg:: @ 82DB816 .incbin "baserom.gba", 0x2db816, 0xe BattleScript_BerryConfuseHealEnd2:: @ 82DB824 diff --git a/include/battle.h b/include/battle.h index f9615b8899..6550a66d3c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -729,6 +729,7 @@ u8 IsPokeDisobedient(void); void AI_CalcDmg(u8 bankAtk, u8 bankDef); u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 species, u8 ability); +u8 BankGetTurnOrder(u8 bank); // rom_80A5C6C u8 GetBankSide(u8 bank); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 5723cf9dac..b23649192e 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -5,6 +5,8 @@ void EmitSetAttributes(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); +void EmitEffectivenessSound(u8 bufferId, u16 songId); +void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); void MarkBufferBankForExecution(u8 bank); diff --git a/include/songs.h b/include/songs.h index afd26d683e..028c163d66 100644 --- a/include/songs.h +++ b/include/songs.h @@ -15,8 +15,8 @@ enum /*0x09*/ SE_KAIDAN, /*0x0A*/ SE_DANSA, /*0x0B*/ SE_JITENSYA, - /*0x0C*/ SE_KOUKA_L, - /*0x0D*/ SE_KOUKA_M, + /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because + /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move /*0x0E*/ SE_KOUKA_H, /*0x0F*/ SE_BOWA2, /*0x10*/ SE_POKE_DEAD, diff --git a/src/battle_4.c b/src/battle_4.c index be7f712c6b..5d867289b9 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -14,6 +14,7 @@ #include "rng.h" #include "battle_controllers.h" #include "species.h" +#include "songs.h" // variables @@ -58,7 +59,7 @@ extern u8 gStringBank; extern u16 gDynamicBasePower; extern u16 gLastUsedItem; extern u16 gBattleMovePower; -extern s32 gHP_dealt; +extern s32 gHpDealt; extern s32 gTakenDmg[BATTLE_BANKS_COUNT]; extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT]; extern u8 gSentPokesToOpponent[2]; @@ -75,7 +76,7 @@ extern u8 gCurrentMoveTurn; extern u8 gBattleBufferB[4][0x200]; extern const struct BattleMove gBattleMoves[]; -extern const u16 gMissStrings[]; +extern const u16 gMissStringIds[]; extern const u8 gTrainerMoney[]; extern const u8 gTypeEffectiveness[]; extern const struct BaseStats gBaseStats[]; @@ -1630,31 +1631,395 @@ void atk0A_waitanimation(void) void atk0B_healthbarupdate(void) { - register s16 healthValue asm("r1"); + if (gBattleExecBuffer) + return; + + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + PrepareStringBattle(0x80, gActiveBank); + } + else + { + s16 healthValue; + + s32 currDmg = gBattleMoveDamage; + s32 maxPossibleDmgValue = 10000; // not present in R/S, ensures that huge damage values don't change sign + + if (currDmg <= maxPossibleDmgValue) + healthValue = currDmg; + else + healthValue = maxPossibleDmgValue; + + EmitHealthBarUpdate(0, healthValue); + MarkBufferBankForExecution(gActiveBank); + + if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0) + gBattleResults.unk5_0 = 1; + } + } + + gBattlescriptCurrInstr += 2; +} + +void atk0C_datahpupdate(void) +{ + u32 moveType; if (gBattleExecBuffer) return; - if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) - goto END; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleStruct->dynamicMoveType == 0) + moveType = gBattleMoves[gCurrentMove].type; + else if (!(gBattleStruct->dynamicMoveType & 0x40)) + moveType = gBattleStruct->dynamicMoveType & 0x3F; + else + moveType = gBattleMoves[gCurrentMove].type; - if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - PrepareStringBattle(0x80, gActiveBank); - goto END; + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage) + { + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage; + gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage; + gHpDealt = gBattleMoveDamage; + } + else + { + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP; + gHpDealt = gDisableStructs[gActiveBank].substituteHP; + gDisableStructs[gActiveBank].substituteHP = 0; + } + // check substitute fading + if (gDisableStructs[gActiveBank].substituteHP == 0) + { + gBattlescriptCurrInstr += 2; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SubstituteFade; + return; + } + } + else + { + gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE); + if (gBattleMoveDamage < 0) // hp goes up + { + gBattleMons[gActiveBank].hp -= gBattleMoveDamage; + if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP) + gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP; + + } + else // hp goes down + { + if (gHitMarker & HITMARKER_x20) + { + gHitMarker &= ~(HITMARKER_x20); + } + else + { + gTakenDmg[gActiveBank] += gBattleMoveDamage; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + gTakenDmgBanks[gActiveBank] = gBankAttacker; + else + gTakenDmgBanks[gActiveBank] = gBankTarget; + } + + if (gBattleMons[gActiveBank].hp > gBattleMoveDamage) + { + gBattleMons[gActiveBank].hp -= gBattleMoveDamage; + gHpDealt = gBattleMoveDamage; + } + else + { + gHpDealt = gBattleMons[gActiveBank].hp; + gBattleMons[gActiveBank].hp = 0; + } + + if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000)) + gSpecialStatuses[gActiveBank].moveturnLostHP = gHpDealt; + + if (moveType <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + { + gProtectStructs[gActiveBank].physicalDmg = gHpDealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHpDealt; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + { + gProtectStructs[gActiveBank].physicalBank = gBankAttacker; + gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker; + } + else + { + gProtectStructs[gActiveBank].physicalBank = gBankTarget; + gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget; + } + } + else if (moveType > 8 && !(gHitMarker & HITMARKER_x100000)) + { + gProtectStructs[gActiveBank].specialDmg = gHpDealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHpDealt; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + { + gProtectStructs[gActiveBank].specialBank = gBankAttacker; + gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker; + } + else + { + gProtectStructs[gActiveBank].specialBank = gBankTarget; + gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget; + } + } + } + gHitMarker &= ~(HITMARKER_x100000); + EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + MarkBufferBankForExecution(gActiveBank); + } + } + else + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF; + } + gBattlescriptCurrInstr += 2; +} + +void atk0D_critmessage(void) +{ + if (gBattleExecBuffer == 0) + { + if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + PrepareStringBattle(0xD9, gBankAttacker); + gBattleCommunication[MSG_DISPLAY] = 1; + } + gBattlescriptCurrInstr++; + } +} + +void atk0E_effectiveness_sound(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = gBankTarget; + if (!(gBattleMoveFlags & MOVESTATUS_MISSED)) + { + switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED))) + { + case MOVESTATUS_SUPEREFFECTIVE: + EmitEffectivenessSound(0, SE_KOUKA_H); + MarkBufferBankForExecution(gActiveBank); + break; + case MOVESTATUS_NOTVERYEFFECTIVE: + EmitEffectivenessSound(0, SE_KOUKA_L); + MarkBufferBankForExecution(gActiveBank); + break; + case MOVESTATUS_NOTAFFECTED: + case MOVESTATUS_FAILED: + // no sound + break; + case MOVESTATUS_ENDURED: + case MOVESTATUS_ONEHITKO: + case MOVESTATUS_HUNGON: + default: + if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) + { + EmitEffectivenessSound(0, SE_KOUKA_H); + MarkBufferBankForExecution(gActiveBank); + } + else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) + { + EmitEffectivenessSound(0, SE_KOUKA_L); + MarkBufferBankForExecution(gActiveBank); + } + else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))) + { + EmitEffectivenessSound(0, SE_KOUKA_M); + MarkBufferBankForExecution(gActiveBank); + } + break; + } + } + gBattlescriptCurrInstr++; +} + +void atk0F_resultmessage(void) +{ + u32 stringId = 0; + + if (gBattleExecBuffer) + return; + + if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2)) + { + stringId = gMissStringIds[gBattleCommunication[6]]; + gBattleCommunication[MSG_DISPLAY] = 1; + } + else + { + gBattleCommunication[MSG_DISPLAY] = 1; + switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED))) + { + case MOVESTATUS_SUPEREFFECTIVE: + stringId = 0xDE; + break; + case MOVESTATUS_NOTVERYEFFECTIVE: + stringId = 0xDD; + break; + case MOVESTATUS_ONEHITKO: + stringId = 0xDA; + break; + case MOVESTATUS_ENDURED: + stringId = 0x99; + break; + case MOVESTATUS_FAILED: + stringId = 0xE5; + break; + case MOVESTATUS_NOTAFFECTED: + stringId = 0x1B; + break; + case MOVESTATUS_HUNGON: + gLastUsedItem = gBattleMons[gBankTarget].item; + gStringBank = gBankTarget; + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + default: + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + { + stringId = 0x1B; + } + else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO) + { + gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO); + gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE); + gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_ENDURED) + { + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_EnduredMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_HUNGON) + { + gLastUsedItem = gBattleMons[gBankTarget].item; + gStringBank = gBankTarget; + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_FAILED) + { + stringId = 0xE5; + } + else + { + gBattleCommunication[MSG_DISPLAY] = 0; + } + } } - healthValue = 10000; - if (healthValue <= gBattleMoveDamage) - healthValue = gBattleMoveDamage; + if (stringId) + PrepareStringBattle(stringId, gBankAttacker); - EmitHealthBarUpdate(0, healthValue); + gBattlescriptCurrInstr++; +} + +void atk10_printstring(void) +{ + if (gBattleExecBuffer == 0) + { + u16 var = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + PrepareStringBattle(var, gBankAttacker); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +void atk11_printstring_playeronly(void) +{ + gActiveBank = gBankAttacker; + + EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); MarkBufferBankForExecution(gActiveBank); - if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0) - gBattleResults.unk5_0 = 1; - - END: - gBattlescriptCurrInstr += 2; + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; +} + +void atk12_waitmessage(void) +{ + if (gBattleExecBuffer == 0) + { + if (!gBattleCommunication[MSG_DISPLAY]) + { + gBattlescriptCurrInstr += 3; + } + else + { + u16 toWait = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= toWait) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + } +} + +void atk13_printfromtable(void) +{ + if (gBattleExecBuffer == 0) + { + u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + + PrepareStringBattle(*(u16*)ptr, gBankAttacker); + + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +void atk14_printfromtable_playeronly(void) +{ + if (gBattleExecBuffer == 0) + { + u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + + gActiveBank = gBankAttacker; + EmitPrintStringPlayerOnly(0, *(u16*)ptr); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +u8 BankGetTurnOrder(u8 bank) +{ + s32 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == bank) + break; + } + return i; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 8eb395b0f2..fe6ccdcbdb 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -343,7 +343,7 @@ gRandomMove: @ 20241EE gBattleMoveDamage: @ 20241F0 .space 0x4 -gUnknown_020241F4: @ 20241F4 +gHpDealt: @ 20241F4 .space 0x4 gTakenDmg: @ 20241F8 @@ -442,7 +442,7 @@ gStatuses3: @ 20242AC gDisableStructs: @ 20242BC .space 0x70 -gUnknown_0202432C: @ 202432C +gPauseCounterBattle: @ 202432C .space 0x2 gUnknown_0202432E: @ 202432E From c2f1e2fe5355800f2941b4788925649142a9ebdf Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 20 Sep 2017 15:07:24 -0400 Subject: [PATCH 014/182] decompiled up to sub_81C0510 --- asm/pokemon_summary_screen.s | 1410 ---------------------------------- include/battle.h | 2 + ld_script.txt | 1 + src/pokemon_summary_screen.c | 730 ++++++++++++++++++ 4 files changed, 733 insertions(+), 1410 deletions(-) create mode 100755 src/pokemon_summary_screen.c diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 3fb4124774..a97751aa9e 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,1416 +5,6 @@ .text - thumb_func_start sub_81BF8EC -sub_81BF8EC: @ 81BF8EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r4, =gUnknown_0203CF1C - ldr r0, =0x000040f8 - bl AllocZeroed - str r0, [r4] - ldr r1, =0x000040bc - adds r0, r1 - strb r7, [r0] - ldr r0, [r4] - mov r2, r8 - str r2, [r0] - adds r1, 0x2 - adds r0, r1 - strb r5, [r0] - ldr r0, [r4] - ldr r2, =0x000040bf - adds r0, r2 - strb r6, [r0] - ldr r1, [r4] - ldr r0, [sp, 0x18] - str r0, [r1, 0x4] - cmp r7, 0x2 - bne _081BF94C - subs r2, 0x2 - adds r1, r2 - movs r0, 0x1 - b _081BF952 - .pool -_081BF94C: - ldr r0, =0x000040bd - adds r1, r0 - movs r0, 0 -_081BF952: - strb r0, [r1] - cmp r7, 0x1 - beq _081BF9A0 - cmp r7, 0x1 - bgt _081BF96C - cmp r7, 0 - beq _081BF97C - ldr r2, =gUnknown_0203CF1C - b _081BF9EE - .pool -_081BF96C: - cmp r7, 0x2 - beq _081BF97C - cmp r7, 0x3 - beq _081BF9D0 - ldr r2, =gUnknown_0203CF1C - b _081BF9EE - .pool -_081BF97C: - ldr r2, =gUnknown_0203CF1C - ldr r0, [r2] - ldr r1, =0x000040c1 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r1, =0x000040c2 - adds r0, r1 - movs r1, 0x3 - b _081BF9EC - .pool -_081BF9A0: - ldr r2, =gUnknown_0203CF1C - ldr r0, [r2] - ldr r1, =0x000040c1 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r1, =0x000040c2 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - ldr r0, [r2] - ldr r1, =0x000040c8 - adds r0, r1 - strb r7, [r0] - b _081BF9EE - .pool -_081BF9D0: - ldr r2, =gUnknown_0203CF1C - ldr r0, [r2] - ldr r1, =0x000040c1 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r2] - ldr r1, =0x000040c2 - adds r0, r1 - strb r7, [r0] - ldr r0, [r2] - adds r1, 0x1 - adds r0, r1 - movs r1, 0x1 -_081BF9EC: - strb r1, [r0] -_081BF9EE: - ldr r0, [r2] - ldr r2, =0x000040c1 - adds r1, r0, r2 - ldrb r1, [r1] - subs r2, 0x1 - adds r0, r2 - strb r1, [r0] - movs r0, 0xFF - bl sub_81C488C - ldr r0, =gBattleSpritesGfx - ldr r0, [r0] - cmp r0, 0 - bne _081BFA12 - movs r0, 0 - movs r1, 0 - bl sub_806F2AC -_081BFA12: - ldr r0, =sub_81BFAE4 - bl SetMainCallback2 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81BF8EC - - thumb_func_start sub_81BFA38 -sub_81BFA38: @ 81BFA38 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - mov r8, r0 - adds r4, r1, 0 - adds r5, r2, 0 - ldr r6, [sp, 0x18] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - str r3, [sp] - movs r0, 0x3 - mov r1, r8 - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_81BF8EC - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c4 - adds r0, r1 - strh r6, [r0] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81BFA38 - - thumb_func_start sub_81BFA80 -sub_81BFA80: @ 81BFA80 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - str r4, [sp] - bl sub_81BF8EC - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040ef - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81BFA80 - - thumb_func_start sub_81BFAB4 -sub_81BFAB4: @ 81BFAB4 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl do_scheduled_bg_tilemap_copies_to_vram - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_81BFAB4 - - thumb_func_start sub_81BFAD0 -sub_81BFAD0: @ 81BFAD0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81BFAD0 - - thumb_func_start sub_81BFAE4 -sub_81BFAE4: @ 81BFAE4 - push {lr} -_081BFAE6: - bl sub_81221EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081BFB0A - bl sub_81BFB10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081BFB0A - bl sub_81221AC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081BFAE6 -_081BFB0A: - pop {r0} - bx r0 - thumb_func_end sub_81BFAE4 - - thumb_func_start sub_81BFB10 -sub_81BFB10: @ 81BFB10 - push {r4,lr} - sub sp, 0x4 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x18 - bls _081BFB24 - b _081BFE00 -_081BFB24: - lsls r0, 2 - ldr r1, =_081BFB38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081BFB38: - .4byte _081BFB9C - .4byte _081BFBAA - .4byte _081BFBBC - .4byte _081BFBD0 - .4byte _081BFBE4 - .4byte _081BFBEA - .4byte _081BFC04 - .4byte _081BFC20 - .4byte _081BFC26 - .4byte _081BFC38 - .4byte _081BFC58 - .4byte _081BFC7C - .4byte _081BFC82 - .4byte _081BFC94 - .4byte _081BFCAC - .4byte _081BFCC0 - .4byte _081BFCD8 - .4byte _081BFCF8 - .4byte _081BFD34 - .4byte _081BFD50 - .4byte _081BFD60 - .4byte _081BFD74 - .4byte _081BFD7A - .4byte _081BFDB0 - .4byte _081BFDCC -_081BFB9C: - bl SetVBlankHBlankCallbacksToNull - bl sub_8121DA0 - bl clear_scheduled_bg_copies_to_vram - b _081BFDE6 -_081BFBAA: - bl remove_some_task - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFBBC: - bl ResetPaletteFade - ldr r2, =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - b _081BFDE4 - .pool -_081BFBD0: - bl ResetSpriteData - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFBE4: - bl FreeAllSpritePalettes - b _081BFDE6 -_081BFBEA: - bl sub_81BFE24 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040f0 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _081BFDE6 - .pool -_081BFC04: - bl sub_81BFEB0 - lsls r0, 24 - cmp r0, 0 - bne _081BFC10 - b _081BFE18 -_081BFC10: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFC20: - bl sub_81C2554 - b _081BFDE6 -_081BFC26: - bl sub_81C1BA0 - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFC38: - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0xC - bl sub_81C0098 - ldr r0, [r4] - ldr r1, =0x000040f0 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _081BFDE6 - .pool -_081BFC58: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C00F0 - lsls r0, 24 - cmp r0, 0 - bne _081BFC6A - b _081BFE18 -_081BFC6A: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFC7C: - bl sub_81C25E8 - b _081BFDE6 -_081BFC82: - bl sub_81C286C - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFC94: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - bl sub_81C2D9C - b _081BFDE6 - .pool -_081BFCAC: - bl sub_81C0348 - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFCC0: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - bl sub_81C2AFC - b _081BFDE6 - .pool -_081BFCD8: - bl sub_81C4190 - bl sub_81C42C8 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040f0 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _081BFDE6 - .pool -_081BFCF8: - ldr r4, =gUnknown_0203CF1C - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xC - ldr r2, =0x000040f0 - adds r1, r2 - bl sub_81C45F4 - ldr r1, [r4] - ldr r2, =0x000040d3 - adds r1, r2 - strb r0, [r1] - ldr r1, [r4] - adds r2, r1, r2 - ldrb r0, [r2] - cmp r0, 0xFF - bne _081BFD1C - b _081BFE18 -_081BFD1C: - ldr r0, =0x000040f0 - adds r1, r0 - movs r0, 0 - strh r0, [r1] - b _081BFDE6 - .pool -_081BFD34: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C4984 - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFD50: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C4A08 - b _081BFDE6 - .pool -_081BFD60: - bl sub_81C4A88 - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFD74: - bl sub_81C4280 - b _081BFDE6 -_081BFD7A: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040bc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _081BFDA0 - ldr r0, =sub_81C0510 - movs r1, 0 - bl CreateTask - b _081BFDE6 - .pool -_081BFDA0: - ldr r0, =sub_81C171C - movs r1, 0 - bl CreateTask - b _081BFDE6 - .pool -_081BFDB0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _081BFDEE - .pool -_081BFDCC: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 -_081BFDE4: - strb r0, [r2, 0x8] -_081BFDE6: - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 -_081BFDEE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081BFE18 - .pool -_081BFE00: - ldr r0, =sub_81BFAD0 - bl SetVBlankCallback - ldr r0, =sub_81BFAB4 - bl SetMainCallback2 - movs r0, 0x1 - b _081BFE1A - .pool -_081BFE18: - movs r0, 0 -_081BFE1A: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81BFB10 - - thumb_func_start sub_81BFE24 -sub_81BFE24: @ 81BFE24 - push {r4,lr} - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_0861CBB4 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r4, =gUnknown_0203CF1C - ldr r1, [r4] - ldr r0, =0x000020bc - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, =0x000010bc - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r1, [r4] - adds r1, 0xBC - movs r0, 0x3 - bl SetBgTilemapBuffer - bl sub_8121E10 - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x3 - bl schedule_bg_copy_tilemap_to_vram - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81BFE24 - - thumb_func_start sub_81BFEB0 -sub_81BFEB0: @ 81BFEB0 - push {r4,lr} - sub sp, 0x4 - ldr r1, =gUnknown_0203CF1C - ldr r0, [r1] - ldr r2, =0x000040f0 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0xC - bls _081BFEC8 - b _081C008C -_081BFEC8: - lsls r0, 2 - ldr r1, =_081BFEE0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081BFEE0: - .4byte _081BFF14 - .4byte _081BFF30 - .4byte _081BFF60 - .4byte _081BFF78 - .4byte _081BFF90 - .4byte _081BFFA8 - .4byte _081BFFC0 - .4byte _081BFFF0 - .4byte _081BFFFC - .4byte _081C0018 - .4byte _081C0024 - .4byte _081C0040 - .4byte _081C0064 -_081BFF14: - bl reset_temp_tile_data_buffers - ldr r1, =gUnknown_08D97D0C - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - b _081C0046 - .pool -_081BFF30: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081BFF3E - b _081C008C -_081BFF3E: - ldr r0, =gUnknown_08D9862C - ldr r4, =gUnknown_0203CF1C - ldr r1, [r4] - adds r1, 0xBC - bl LZDecompressWram - ldr r1, [r4] - ldr r2, =0x000040f0 - adds r1, r2 - b _081C004E - .pool -_081BFF60: - ldr r0, =gUnknown_08D98CC8 - ldr r1, [r4] - ldr r2, =0x000008bc - adds r1, r2 - bl LZDecompressWram - ldr r1, [r4] - b _081C004A - .pool -_081BFF78: - ldr r0, =gUnknown_08D987FC - ldr r1, [r4] - ldr r2, =0x000018bc - adds r1, r2 - bl LZDecompressWram - ldr r1, [r4] - b _081C004A - .pool -_081BFF90: - ldr r0, =gUnknown_08D9898C - ldr r1, [r4] - ldr r2, =0x000028bc - adds r1, r2 - bl LZDecompressWram - ldr r1, [r4] - b _081C004A - .pool -_081BFFA8: - ldr r0, =gUnknown_08D98B28 - ldr r1, [r4] - ldr r2, =0x000038bc - adds r1, r2 - bl LZDecompressWram - ldr r1, [r4] - b _081C004A - .pool -_081BFFC0: - ldr r0, =gUnknown_08D9853C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadCompressedPalette - ldr r0, =gUnknown_08D85620 - movs r1, 0x81 - movs r2, 0x1E - bl LoadPalette - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040f0 - adds r1, r2 - b _081C004E - .pool -_081BFFF0: - ldr r0, =gUnknown_0861CFBC - bl LoadCompressedObjectPic - b _081C0046 - .pool -_081BFFFC: - ldr r0, =gUnknown_0861D074 - bl LoadCompressedObjectPic - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040f0 - adds r1, r2 - b _081C004E - .pool -_081C0018: - ldr r0, =gUnknown_0861D0F8 - bl LoadCompressedObjectPic - b _081C0046 - .pool -_081C0024: - ldr r0, =gUnknown_0861D100 - bl LoadCompressedObjectPalette - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040f0 - adds r1, r2 - b _081C004E - .pool -_081C0040: - ldr r0, =gUnknown_0861D07C - bl LoadCompressedObjectPalette -_081C0046: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] -_081C004A: - ldr r0, =0x000040f0 - adds r1, r0 -_081C004E: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _081C008C - .pool -_081C0064: - ldr r0, =gUnknown_08D97B84 - movs r1, 0xE8 - lsls r1, 1 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040f0 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - movs r0, 0x1 - b _081C008E - .pool -_081C008C: - movs r0, 0 -_081C008E: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81BFEB0 - - thumb_func_start sub_81C0098 -sub_81C0098: @ 81C0098 - push {r4,lr} - adds r3, r0, 0 - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bd - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _081C00D0 - ldr r2, [r1] - ldr r4, =0x000040be - adds r0, r1, r4 - ldrb r1, [r0] - movs r0, 0x64 - muls r1, r0 - adds r1, r2 - adds r0, r3, 0 - movs r2, 0x64 - bl memcpy - b _081C00E6 - .pool -_081C00D0: - ldr r0, [r1] - ldr r2, =0x000040be - adds r1, r2 - ldrb r2, [r1] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - adds r0, r1 - adds r1, r3, 0 - bl sub_8069004 -_081C00E6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0098 - - thumb_func_start sub_81C00F0 -sub_81C00F0: @ 81C00F0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - ldr r0, =gUnknown_0203CF1C - ldr r7, [r0] - adds r6, r7, 0 - adds r6, 0x70 - ldr r1, =0x000040f0 - adds r0, r7, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x1 - beq _081C0198 - cmp r0, 0x1 - bgt _081C0120 - cmp r0, 0 - beq _081C012C - b _081C0314 - .pool -_081C0120: - cmp r0, 0x2 - beq _081C01DC - cmp r0, 0x3 - bne _081C012A - b _081C02A8 -_081C012A: - b _081C0314 -_081C012C: - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - strh r0, [r6] - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - strh r0, [r6, 0x2] - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [r6, 0x10] - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - strb r0, [r6, 0x5] - adds r0, r5, 0 - movs r1, 0x2E - bl GetMonData - strb r0, [r6, 0x8] - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - strh r0, [r6, 0x2E] - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - str r0, [r6, 0xC] - adds r0, r5, 0 - movs r1, 0x4 - bl GetMonData - adds r1, r7, 0 - adds r1, 0xA5 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - beq _081C018C - movs r0, 0x1 - strb r0, [r6, 0x4] - b _081C0322 -_081C018C: - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - strb r0, [r6, 0x4] - b _081C0322 -_081C0198: - movs r4, 0 - movs r0, 0x8C - adds r0, r7 - mov r8, r0 - movs r1, 0xA4 - adds r1, r7 - mov r9, r1 - adds r6, r7, 0 - adds r6, 0x84 -_081C01AA: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r5, 0 - bl GetMonData - strh r0, [r6] - adds r1, r4, 0 - adds r1, 0x11 - adds r0, r5, 0 - bl GetMonData - mov r2, r8 - adds r1, r2, r4 - strb r0, [r1] - adds r6, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - bls _081C01AA - adds r0, r5, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1] - b _081C0322 -_081C01DC: - ldr r1, [r7] - ldr r0, =gPlayerParty - cmp r1, r0 - beq _081C01F8 - ldr r2, =0x000040bc - adds r0, r7, r2 - ldrb r0, [r0] - cmp r0, 0x2 - beq _081C01F8 - ldr r1, =0x000040ef - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _081C0254 -_081C01F8: - adds r0, r5, 0 - bl GetNature - adds r1, r6, 0 - adds r1, 0x33 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r6, 0x22] - adds r0, r5, 0 - movs r1, 0x3B - bl GetMonData - strh r0, [r6, 0x24] - adds r0, r5, 0 - movs r1, 0x3C - bl GetMonData - strh r0, [r6, 0x26] - adds r0, r5, 0 - movs r1, 0x3E - bl GetMonData - strh r0, [r6, 0x28] - adds r0, r5, 0 - movs r1, 0x3F - bl GetMonData - strh r0, [r6, 0x2A] - adds r0, r5, 0 - movs r1, 0x3D - b _081C02A0 - .pool -_081C0254: - adds r0, r5, 0 - bl GetNature - adds r1, r7, 0 - adds r1, 0xA3 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r6, 0x22] - adds r0, r5, 0 - movs r1, 0x54 - bl GetMonData - strh r0, [r6, 0x24] - adds r0, r5, 0 - movs r1, 0x55 - bl GetMonData - strh r0, [r6, 0x26] - adds r0, r5, 0 - movs r1, 0x57 - bl GetMonData - strh r0, [r6, 0x28] - adds r0, r5, 0 - movs r1, 0x58 - bl GetMonData - strh r0, [r6, 0x2A] - adds r0, r5, 0 - movs r1, 0x56 -_081C02A0: - bl GetMonData - strh r0, [r6, 0x2C] - b _081C0322 -_081C02A8: - adds r4, r7, 0 - adds r4, 0xA6 - adds r0, r5, 0 - movs r1, 0x7 - adds r2, r4, 0 - bl GetMonData - adds r0, r5, 0 - movs r1, 0x3 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ConvertInternationalString - adds r0, r5, 0 - bl sub_81B205C - strb r0, [r6, 0x7] - adds r0, r5, 0 - movs r1, 0x31 - bl GetMonData - adds r1, r7, 0 - adds r1, 0xA2 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x1 - bl GetMonData - str r0, [r6, 0x48] - adds r0, r5, 0 - movs r1, 0x23 - bl GetMonData - strb r0, [r6, 0x9] - adds r0, r5, 0 - movs r1, 0x24 - bl GetMonData - strb r0, [r6, 0xA] - adds r0, r5, 0 - movs r1, 0x25 - bl GetMonData - strb r0, [r6, 0xB] - adds r0, r5, 0 - movs r1, 0x20 - bl GetMonData - strh r0, [r6, 0x30] - b _081C0322 -_081C0314: - adds r0, r5, 0 - movs r1, 0x52 - bl GetMonData - strb r0, [r6, 0x6] - movs r0, 0x1 - b _081C0332 -_081C0322: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040f0 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 -_081C0332: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81C00F0 - - thumb_func_start sub_81C0348 -sub_81C0348: @ 81C0348 - push {r4-r6,lr} - ldr r6, =gUnknown_0203CF1C - ldr r2, [r6] - ldr r1, =0x000040c0 - adds r0, r2, r1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _081C037C - movs r0, 0 - movs r1, 0xFF - bl sub_81C1DA4 - movs r0, 0 - movs r1, 0xFF - movs r2, 0 - bl sub_81C1EFC - b _081C03D8 - .pool -_081C037C: - ldr r1, =0x000040c6 - adds r0, r2, r1 - ldrb r1, [r0] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x84 - adds r0, r1 - ldrh r0, [r0] - bl sub_81C240C - ldr r0, [r6] - ldr r5, =0x000020bc - adds r0, r5 - movs r1, 0x3 - movs r2, 0 - bl sub_81C2194 - ldr r0, [r6] - ldr r4, =0x000030bc - adds r0, r4 - movs r1, 0x1 - movs r2, 0 - bl sub_81C2194 - ldr r1, [r6] - adds r1, r4 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r6] - adds r1, r5 - movs r0, 0x2 - bl SetBgTilemapBuffer - movs r1, 0x80 - lsls r1, 9 - movs r0, 0x2 - movs r2, 0x1 - bl ChangeBgX - movs r0, 0x13 - bl ClearWindowTilemap - movs r0, 0xD - bl ClearWindowTilemap -_081C03D8: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x77 - ldrb r0, [r0] - cmp r0, 0 - bne _081C0400 - movs r0, 0 - movs r1, 0xFF - bl sub_81C2074 - b _081C0416 - .pool -_081C0400: - ldr r2, =0x000040c0 - adds r0, r1, r2 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _081C0416 - movs r0, 0xD - bl PutWindowTilemap -_081C0416: - bl sub_81C2524 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C2228 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0348 - - thumb_func_start sub_81C0434 -sub_81C0434: @ 81C0434 - push {lr} - bl FreeAllWindowBuffers - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - bl Free - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0434 - - thumb_func_start sub_81C044C -sub_81C044C: @ 81C044C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81C0484 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C044C - - thumb_func_start sub_81C0484 -sub_81C0484: @ 81C0484 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_81221EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C04EC - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081C04EC - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r0, [r0, 0x4] - bl SetMainCallback2 - ldr r1, =gUnknown_0203CF20 - ldr r0, [r4] - ldr r2, =0x000040be - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - bl sub_81C4898 - bl ResetSpriteData - bl FreeAllSpritePalettes - bl StopCryAndClearCrySongs - ldr r0, =gMPlay_BGM - ldr r1, =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r0, =gBattleSpritesGfx - ldr r0, [r0] - cmp r0, 0 - bne _081C04E2 - movs r0, 0 - bl sub_806F47C -_081C04E2: - bl sub_81C0434 - adds r0, r5, 0 - bl DestroyTask -_081C04EC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0484 - - thumb_func_start sub_81C0510 -sub_81C0510: @ 81C0510 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81221EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C05FE - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _081C05FE - ldr r5, =gMain - ldrh r1, [r5, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081C0550 - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - bl sub_81C0604 - b _081C05FE - .pool -_081C0550: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _081C0562 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C0604 - b _081C05FE -_081C0562: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _081C0576 - bl GetLRKeysState - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C0582 -_081C0576: - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - bl sub_81C0A8C - b _081C05FE -_081C0582: - ldrh r1, [r5, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _081C0598 - bl GetLRKeysState - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _081C05A2 -_081C0598: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C0A8C - b _081C05FE -_081C05A2: - ldrh r1, [r5, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081C05E6 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081C05FE - cmp r0, 0 - bne _081C05D8 - bl sub_81C48F0 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_81C044C - b _081C05FE - .pool -_081C05D8: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_81C0E48 - b _081C05FE -_081C05E6: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C05FE - bl sub_81C48F0 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_81C044C -_081C05FE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81C0510 - thumb_func_start sub_81C0604 sub_81C0604: @ 81C0604 push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index 51f9298cc7..a681ca946c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -186,6 +186,8 @@ #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY ((WEATHER_HAIL)) +#include "global.h" + u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); u8 GetBankSide(u8 bank); diff --git a/ld_script.txt b/ld_script.txt index d6b3953fed..bd0aae460a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -260,6 +260,7 @@ SECTIONS { asm/fldeff_groundshake.o(.text); asm/fossil_specials.o(.text); asm/berry_fix_program.o(.text); + src/pokemon_summary_screen.o(.text); asm/pokemon_summary_screen.o(.text); asm/pokenav.o(.text); asm/rayquaza_scene.o(.text); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c new file mode 100755 index 0000000000..12fd52dfbf --- /dev/null +++ b/src/pokemon_summary_screen.c @@ -0,0 +1,730 @@ +#include "battle.h" +#include "decompress.h" +#include "global.h" +#include "m4a.h" +#include "main.h" +#include "malloc.h" +#include "palette.h" +#include "pokemon.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "task.h" +#include "window.h" + +extern struct unkSummaryStruct* gUnknown_0203CF1C; +extern struct BgTemplate gUnknown_0861CBB4; +extern u8 gUnknown_0203CF20; +extern struct MusicPlayerInfo gMPlay_BGM; + +extern void sub_806F2AC(u8 a, u8 b); +void sub_81C488C(u8 a); +extern void do_scheduled_bg_tilemap_copies_to_vram(void); +extern u8 sub_81221EC(); +extern u8 sub_81221AC(); +extern void SetVBlankHBlankCallbacksToNull(); +extern void sub_8121DA0(); +extern void clear_scheduled_bg_copies_to_vram(); +extern void remove_some_task(); +extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable); +extern void ShowBg(u8 a); +extern void SetGpuReg(u8 regOffset, u16 value); +extern void schedule_bg_copy_tilemap_to_vram(u8 a); +extern void InitBgsFromTemplates(u8 bgMode, struct BgTemplate *templates, u8 numTemplates); +extern void SetBgTilemapBuffer(u8 bg, void *tilemap); +extern u8 gUnknown_08D9862C; +extern u8 gUnknown_08D98CC8; +extern u8 gUnknown_08D987FC; +extern u8 gUnknown_08D9898C; +extern u8 gUnknown_08D98B28; +extern u8 gUnknown_08D9853C; +extern u8 gUnknown_08D85620; +extern struct CompressedSpriteSheet gUnknown_0861CFBC; +extern struct CompressedSpriteSheet gUnknown_0861D074; +extern struct CompressedSpriteSheet gUnknown_0861D0F8; +extern struct CompressedSpritePalette gUnknown_0861D100; +extern struct CompressedSpritePalette gUnknown_0861D07C; +extern u8 gUnknown_08D97B84; +extern u8 gUnknown_08D97D0C; +extern void reset_temp_tile_data_buffers(); +extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d); +extern u8 free_temp_tile_data_buffers_if_possible(); +extern void sub_8069004(struct BoxPokemon* a, void* b); + +extern u32 ChangeBgX(u8 bg, u32 value, u8 op); + +void sub_81BFAE4(void); +void sub_81BFE24(); +u8 sub_81BFEB0(); +void sub_81C2554(); +void sub_81C1BA0(); +void sub_81C0098(struct Pokemon* a); +u8 sub_81C00F0(struct Pokemon* a); +void sub_81C25E8(); +void sub_81C286C(); +void sub_81C2D9C(u8 a); +void sub_81C0348(); +void sub_81C2AFC(u8 a); +void sub_81C4190(); +void sub_81C42C8(); +u8 sub_81C45F4(void* a, u16* b); +void sub_81C4984(); +void sub_81C4A08(); +void sub_81C4A88(); +void sub_81C4280(); +void sub_81C0510(u8 taskId); +void sub_81C171C(u8 taskId); +void sub_8121E10(); +u8 sub_81B205C(struct Pokemon* a); +void sub_81C1DA4(u8 a, u8 b); +void sub_81C1EFC(u8 a, u8 b, u8 c); +void sub_81C240C(u16 a); +void sub_81C2194(void* a, u8 b, u8 c); +void sub_81C2074(u8 a, u8 b); +void sub_81C2524(); +void sub_81C2228(struct Pokemon* poke); +void sub_81C0484(u8 taskId); +void sub_81C4898(); +void sub_806F47C(u8 a); +u8 GetLRKeysState(); +void sub_81C0604(u8 taskId, s8 a); +void sub_81C0A8C(u8 taskId, s8 a); +void sub_81C48F0(); +void sub_81C0E48(u8 taskId); +void sub_81C0704(u8 taskId); + + +u8 sub_81BFB10(); +u8 sub_81B1250(); + +union unkUnion{ + struct Pokemon mons[6]; + struct BoxPokemon boxMons[6]; +}; + +u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, int d); + +struct pokeSummary{ + u16 species; // 0x0 + u16 species2; // 0x2 + u8 isEgg; // 0x4 + u8 level; // 0x5 + u8 ribbons; // 0x6 + u8 unk7; // 0x7 + u8 altability; // 0x8 + u8 metLocation; // 0x9 + u8 metLevel; // 0xA + u8 metGame; // 0xB + u32 pid; // 0xC + u32 exp; // 0x10 + u16 moves[4]; // 0x14 + u8 pp[4]; // 0x1C + u16 currentHP; // 0x20 + u16 maxHP; // 0x22 + u16 atk; // 0x24 + u16 def; // 0x26 + u16 spatk; // 0x28 + u16 spdef; // 0x2A + u16 speed; // 0x2C + u16 item; // 0x2E + u16 friendship; // 0x30 + u8 OTGender; // 0x32 + u8 nature; // 0x33 + u8 ppBonuses; // 0x34 + u8 sanity; // 0x35 + u8 OTName[8]; // 0x36 + u8 unk3E[9]; // 0x3E + u32 OTID; // 0x48 +}; + +struct unkSummaryStruct{ + union unkUnion* unk0; + void* unk4; + void* unk8; + struct Pokemon currentPoke; + struct pokeSummary summary; + u8 unkTilemap0[0x800]; + u8 unkTilemap0_1[0x800]; + u8 unkTilemap1[0x800]; + u8 unkTilemap1_1[0x800]; + u8 unkTilemap2[0x800]; + u8 unkTilemap2_1[0x800]; + u8 unkTilemap3[0x800]; + u8 unkTilemap3_1[0x800]; + u8 unk40BC; + u8 unk40BD; + u8 unk40BE; + u8 unk40BF; + u8 unk40C0; + u8 unk40C1; + u8 unk40C2; + u8 unk40C3; + u16 unk40C4; + u8 unk40C6; + u8 unk_filler3; + u8 unk40C8; + u8 unk_filler2[0xA]; + u8 unk40D3; + u8 unk_filler5[0x1B]; + u8 unk40EF; + s16 unk40F0; + u8 unk_filler4[6]; +}; + +void sub_81BF8EC(u8 a, void* b, u8 c, u8 d, void* e) +{ + u8 byte; + gUnknown_0203CF1C = AllocZeroed(0x40F8); + gUnknown_0203CF1C->unk40BC = a; + gUnknown_0203CF1C->unk0 = b; + gUnknown_0203CF1C->unk40BE = c; + gUnknown_0203CF1C->unk40BF = d; + gUnknown_0203CF1C->unk4 = e; + if (a == 2) + gUnknown_0203CF1C->unk40BD = 1; + else + gUnknown_0203CF1C->unk40BD = 0; + switch (a) + { + case 0: + case 2: + gUnknown_0203CF1C->unk40C1 = 0; + gUnknown_0203CF1C->unk40C2 = 3; + break; + case 1: + gUnknown_0203CF1C->unk40C1 = 0; + gUnknown_0203CF1C->unk40C2 = 3; + gUnknown_0203CF1C->unk40C8 = 1; + break; + case 3: + gUnknown_0203CF1C->unk40C1 = 2; + gUnknown_0203CF1C->unk40C2 = 3; + gUnknown_0203CF1C->unk40C3 = 1; + break; + } + byte = gUnknown_0203CF1C->unk40C1; + gUnknown_0203CF1C->unk40C0 = byte; + sub_81C488C(0xFF); + if (gBattleSpritesGfx == 0) + sub_806F2AC(0, 0); + SetMainCallback2(sub_81BFAE4); +} + +void sub_81BFA38(void* a, u8 b, u8 c, void* d, u16 e) +{ + sub_81BF8EC(3, a, b, c, d); + gUnknown_0203CF1C->unk40C4 = e; +} + +void sub_81BFA80(u8 a, void* b, u8 c, u8 d, void* e) +{ + sub_81BF8EC(a, b, c, d, e); + gUnknown_0203CF1C->unk40EF = 1; +} + +void sub_81BFAB4(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +void sub_81BFAD0(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_81BFAE4() +{ + while(1) + { + if (sub_81221EC() == 1 || sub_81BFB10() == 1 || sub_81221AC() == 1) + break; + } +} + +u8 sub_81BFB10() +{ + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + sub_8121DA0(); + clear_scheduled_bg_copies_to_vram(); + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = 1; + gMain.state++; + break; + case 3: + ResetSpriteData(); + gMain.state++; + break; + case 4: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 5: + sub_81BFE24(); + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + break; + case 6: + if (sub_81BFEB0() != 0) + gMain.state++; + break; + case 7: + sub_81C2554(); + gMain.state++; + break; + case 8: + sub_81C1BA0(); + gMain.state++; + break; + case 9: + sub_81C0098(&gUnknown_0203CF1C->currentPoke); + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + break; + case 10: + if(sub_81C00F0(&gUnknown_0203CF1C->currentPoke) != 0) + gMain.state++; + break; + case 11: + sub_81C25E8(); + gMain.state++; + break; + case 12: + sub_81C286C(); + gMain.state++; + break; + case 13: + sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + gMain.state++; + break; + case 14: + sub_81C0348(); + gMain.state++; + break; + case 15: + sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + gMain.state++; + break; + case 16: + sub_81C4190(); + sub_81C42C8(); + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + break; + case 17: + gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &gUnknown_0203CF1C->unk40F0); + if (gUnknown_0203CF1C->unk40D3 != 0xFF) + { + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + } + break; + case 18: + sub_81C4984(&gUnknown_0203CF1C->currentPoke); + gMain.state++; + break; + case 19: + sub_81C4A08(&gUnknown_0203CF1C->currentPoke); + gMain.state++; + break; + case 20: + sub_81C4A88(); + gMain.state++; + break; + case 21: + sub_81C4280(); + gMain.state++; + break; + case 22: + if (gUnknown_0203CF1C->unk40BC != 3) + CreateTask(sub_81C0510, 0); + else + CreateTask(sub_81C171C, 0); + gMain.state++; + break; + case 23: + BlendPalettes(-1, 16, 0); + gMain.state++; + break; + case 24: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + gMain.state++; + break; + default: + SetVBlankCallback(sub_81BFAD0); + SetMainCallback2(sub_81BFAB4); + return 1; + } + return 0; +} + +void sub_81BFE24() +{ + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, &gUnknown_0861CBB4, 4); + SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap2); + SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap1); + SetBgTilemapBuffer(3, &gUnknown_0203CF1C->unkTilemap0); + sub_8121E10(); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + schedule_bg_copy_tilemap_to_vram(3); + SetGpuReg(0, 0x1040); + SetGpuReg(0x50, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); +} + +u8 sub_81BFEB0() +{ + switch (gUnknown_0203CF1C->unk40F0) + { + case 0: + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0); + gUnknown_0203CF1C->unk40F0++; + break; + case 1: + if (free_temp_tile_data_buffers_if_possible() != 1) + { + LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->unkTilemap0); + gUnknown_0203CF1C->unk40F0++; + } + break; + case 2: + LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->unkTilemap0_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 3: + LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->unkTilemap1_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 4: + LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->unkTilemap2_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 5: + LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->unkTilemap3_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 6: + LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100); + LoadPalette(&gUnknown_08D85620, 0x81, 0x1E); + gUnknown_0203CF1C->unk40F0++; + break; + case 7: + LoadCompressedObjectPic(&gUnknown_0861CFBC); + gUnknown_0203CF1C->unk40F0++; + break; + case 8: + LoadCompressedObjectPic(&gUnknown_0861D074); + gUnknown_0203CF1C->unk40F0++; + break; + case 9: + LoadCompressedObjectPic(&gUnknown_0861D0F8); + gUnknown_0203CF1C->unk40F0++; + break; + case 10: + LoadCompressedObjectPalette(&gUnknown_0861D100); + gUnknown_0203CF1C->unk40F0++; + break; + case 11: + LoadCompressedObjectPalette(&gUnknown_0861D07C); + gUnknown_0203CF1C->unk40F0++; + break; + case 12: + LoadCompressedPalette(&gUnknown_08D97B84, 0x1D0, 0x60); + gUnknown_0203CF1C->unk40F0 = 0; + return 1; + } + return 0; +} + +#ifdef NONMATCHING +void sub_81C0098(struct Pokemon* poke) +{ + if (gUnknown_0203CF1C->unk40BD == 0) + { + struct Pokemon* src = &gUnknown_0203CF1C->unk0->mons[gUnknown_0203CF1C->unk40BE]; + *poke = *src; + } + else + sub_8069004(&gUnknown_0203CF1C->unk0->boxMons[gUnknown_0203CF1C->unk40BE], poke); +} +#else +__attribute__((naked)) +void sub_81C0098(struct Pokemon* poke) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + adds r3, r0, 0\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r1, [r0]\n\ + ldr r2, =0x000040bd\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _081C00D0\n\ + ldr r2, [r1]\n\ + ldr r4, =0x000040be\n\ + adds r0, r1, r4\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + adds r1, r2\n\ + adds r0, r3, 0\n\ + movs r2, 0x64\n\ + bl memcpy\n\ + b _081C00E6\n\ + .pool\n\ +_081C00D0:\n\ + ldr r0, [r1]\n\ + ldr r2, =0x000040be\n\ + adds r1, r2\n\ + ldrb r2, [r1]\n\ + lsls r1, r2, 2\n\ + adds r1, r2\n\ + lsls r1, 4\n\ + adds r0, r1\n\ + adds r1, r3, 0\n\ + bl sub_8069004\n\ +_081C00E6:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided\n"); +} +#endif + +u8 sub_81C00F0(struct Pokemon* a) +{ + u32 i; + struct pokeSummary* sum = &gUnknown_0203CF1C->summary; + switch (gUnknown_0203CF1C->unk40F0) + { + + case 0: + sum->species = GetMonData(a, MON_DATA_SPECIES); + sum->species2 = GetMonData(a, MON_DATA_SPECIES2); + sum->exp = GetMonData(a, MON_DATA_EXP); + sum->level = GetMonData(a, MON_DATA_LEVEL); + sum->altability = GetMonData(a, MON_DATA_ALT_ABILITY); + sum->item = GetMonData(a, MON_DATA_HELD_ITEM); + sum->pid = GetMonData(a, MON_DATA_PERSONALITY); + sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1); + if (sum->sanity != 0) + sum->isEgg = 1; + else + sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); + break; + case 1: + for (i = 0; i < 4; i++) + { + sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i); + sum->pp[i] = GetMonData(a, MON_DATA_PP1+i); + } + sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); + break; + case 2: + if ((struct Pokemon*)gUnknown_0203CF1C->unk0 == gPlayerParty || gUnknown_0203CF1C->unk40BC == 2 || gUnknown_0203CF1C->unk40EF == 1) + { + sum->nature = GetNature(a); + sum->currentHP = GetMonData(a, MON_DATA_HP); + sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); + sum->atk = GetMonData(a, MON_DATA_ATK); + sum->def = GetMonData(a, MON_DATA_DEF); + sum->spatk = GetMonData(a, MON_DATA_SPATK); + sum->spdef = GetMonData(a, MON_DATA_SPDEF); + sum->speed = GetMonData(a, MON_DATA_SPD); + } + else + { + sum->nature = GetNature(a); + sum->currentHP = GetMonData(a, MON_DATA_HP); + sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); + sum->atk = GetMonData(a, MON_DATA_ATK2); + sum->def = GetMonData(a, MON_DATA_DEF2); + sum->spatk = GetMonData(a, MON_DATA_SPATK2); + sum->spdef = GetMonData(a, MON_DATA_SPDEF2); + sum->speed = GetMonData(a, MON_DATA_SPD2); + } + break; + case 3: + GetMonData(a, MON_DATA_OT_NAME, &sum->OTName); + ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE)); + sum->unk7 = sub_81B205C(a); + sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER); + sum->OTID = GetMonData(a, MON_DATA_OT_ID); + sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION); + sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL); + sum->metGame = GetMonData(a, MON_DATA_MET_GAME); + sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP); + break; + default: + sum->ribbons = GetMonData(a, MON_DATA_RIBBON_COUNT); + return 1; + } + gUnknown_0203CF1C->unk40F0++; + return 0; +} + +void sub_81C0348() +{ + u8 a = gUnknown_0203CF1C->unk40C0 - 2; + if (a > 1) + { + sub_81C1DA4(0, 255); + sub_81C1EFC(0, 255, 0); + } + else + { + sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0); + SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3); + SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap2); + ChangeBgX(2, 0x10000, 1); + ClearWindowTilemap(0x13); + ClearWindowTilemap(0xD); + } + if (gUnknown_0203CF1C->summary.unk7 == 0) + sub_81C2074(0, 0xFF); + else + { + u8 b = gUnknown_0203CF1C->unk40C0 - 2; + if (b > 1) + PutWindowTilemap(0xD); + } + sub_81C2524(); + sub_81C2228(&gUnknown_0203CF1C->currentPoke); +} + +void sub_81C0434() +{ + FreeAllWindowBuffers(); + Free(gUnknown_0203CF1C); +} + +void sub_81C044C(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_81C0484; +} + +void sub_81C0484(u8 taskId) +{ + if (sub_81221EC() != 1 && gPaletteFade.active == 0) + { + SetMainCallback2(gUnknown_0203CF1C->unk4); + gUnknown_0203CF20 = gUnknown_0203CF1C->unk40BE; + sub_81C4898(); + ResetSpriteData(); + FreeAllSpritePalettes(); + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + if (gBattleSpritesGfx == 0) + sub_806F47C(0); + sub_81C0434(); + DestroyTask(taskId); + } +} + +void sub_81C0510(u8 taskId) +{ + if (sub_81221EC() != 1 && gPaletteFade.active == 0) + { + if (gMain.newKeys & DPAD_UP) + sub_81C0604(taskId, -1); + else if (gMain.newKeys & DPAD_DOWN) + { + sub_81C0604(taskId, 1); + } + else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1) + sub_81C0A8C(taskId, -1); + else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2) + sub_81C0A8C(taskId, 1); + else if (gMain.newKeys & A_BUTTON) + { + if (gUnknown_0203CF1C->unk40C0 != 1) + { + if (gUnknown_0203CF1C->unk40C0 == 0) + { + sub_81C48F0(); + PlaySE(5); + sub_81C044C(taskId); + } + else + { + PlaySE(5); + sub_81C0E48(taskId); + } + } + } + else if (gMain.newKeys & B_BUTTON) + { + sub_81C48F0(); + PlaySE(5); + sub_81C044C(taskId); + } + } +} + +/* void sub_81C0604(u8 taskId, s8 a) +{ + s8 r4; + s8 r4_2; + if (gUnknown_0203CF1C->unk40C3 == 0) + { + if (gUnknown_0203CF1C->unk40BD == 1) + { + if(gUnknown_0203CF1C->unk40C0 != 0) + { + r4 = 2 * (a != 2); + } + else if (a == 1) + r4 = 1; + else + r4 = 3; + r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, r4); + } + else if (sub_81B1250() == 1) + { + r4_2 = sub_81C09B4(a); + } + else + r4_2 = sub_81C08F8(a); + if (r4_2 != -1) + { + PlaySE(5); + if (gUnknown_0203CF1C->summary.unk7 != 0) + { + sub_81C4204(2, 1); + ClearWindowTilemap(0xD); + schedule_bg_copy_tilemap_to_vram(0); + sub_81C2074(0, 2); + } + gUnknown_0203CF1C->unk40BE = r4_2; + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_81C0704; + } + } +} */ \ No newline at end of file From 0c7555e237e44e0c0056946822e861ec022fcefe Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 20 Sep 2017 22:54:26 +0200 Subject: [PATCH 015/182] SetMoveEffect functionally equivalent and close --- asm/battle_2.s | 36 +- asm/battle_4.s | 80 ++--- data/battle_message.s | 2 +- data/battle_scripts_1.s | 28 +- include/battle.h | 37 ++- src/battle_4.c | 717 +++++++++++++++++++++++++++++++++++++++- sym_ewram.txt | 6 +- 7 files changed, 813 insertions(+), 93 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 7567daa4b0..ad449bfdf1 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6358,7 +6358,7 @@ sub_8039F40: @ 8039F40 ldr r5, =gDisableStructs movs r4, 0 ldr r7, =gUnknown_02024240 - ldr r6, =gUnknown_02024268 + ldr r6, =gLockedMoves _08039F70: ldr r0, =gStatuses3 adds r0, r4, r0 @@ -6498,7 +6498,7 @@ _0803A0AE: strb r1, [r0] ldr r0, =gBattleExecBuffer str r1, [r0] - ldr r0, =gUnknown_0202432E + ldr r0, =gPaydayMoney movs r2, 0 strh r1, [r0] ldr r1, =gBattleResources @@ -12752,7 +12752,7 @@ _0803D7A0: bcc _0803D71C _0803D7AE: bl b_clear_atk_up_if_hit_flag_unless_enraged - ldr r1, =gUnknown_02024082 + ldr r1, =gCurrentMoveTurn movs r0, 0 strb r0, [r1] ldr r1, =gFightStateTracker @@ -12800,7 +12800,7 @@ _0803D828: ldr r5, =gBattleStruct ldr r0, [r5] adds r0, 0x4B - ldr r4, =gUnknown_02024082 + ldr r4, =gCurrentMoveTurn ldrb r1, [r4] strb r1, [r0] ldr r1, =gUnknown_0831BC0C @@ -13642,7 +13642,7 @@ sub_803E0B8: @ 803E0B8 str r0, [sp] ldr r6, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -13747,7 +13747,7 @@ _0803E1BC: _0803E1E2: ldr r3, =gCurrentMove ldr r2, =gUnknown_020241EC - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] @@ -14450,7 +14450,7 @@ bs2_8016374: @ 803E868 push {r4,lr} ldr r3, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -14515,7 +14515,7 @@ sub_803E90C: @ 803E90C ldr r4, =gBankAttacker ldr r2, =gBankTarget ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -15052,7 +15052,7 @@ _0803EE06: _0803EE12: cmp r7, 0 beq _0803EE24 - ldr r1, =gUnknown_02024082 + ldr r1, =gCurrentMoveTurn ldr r0, =gNoOfAllBanks ldrb r0, [r0] strb r0, [r1] @@ -15076,7 +15076,7 @@ sub_803EE48: @ 803EE48 push {r4-r6,lr} ldr r4, =gBankAttacker ldr r1, =gTurnOrder - ldr r5, =gUnknown_02024082 + ldr r5, =gCurrentMoveTurn ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] @@ -15214,7 +15214,7 @@ _0803EF98: sub_803EFA8: @ 803EFA8 ldr r2, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -15239,7 +15239,7 @@ sub_803EFA8: @ 803EFA8 bs5_8016AC0: @ 803EFF0 ldr r2, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -15272,7 +15272,7 @@ sub_803F050: @ 803F050 push {r4-r6,lr} ldr r3, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -15359,7 +15359,7 @@ sub_803F120: @ 803F120 push {r4,lr} ldr r2, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -15445,7 +15445,7 @@ bs8_exit_by_flight: @ 803F1F0 push {r4,lr} ldr r2, =gBankAttacker ldr r1, =gTurnOrder - ldr r4, =gUnknown_02024082 + ldr r4, =gCurrentMoveTurn ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -15468,7 +15468,7 @@ bs8_exit_by_flight: @ 803F1F0 bs9_8016C9C: @ 803F22C ldr r3, =gBankAttacker ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -15529,7 +15529,7 @@ _0803F2C0: thumb_func_start bsD_proceed bsD_proceed: @ 803F2CC - ldr r1, =gUnknown_02024082 + ldr r1, =gCurrentMoveTurn ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -15552,7 +15552,7 @@ bsD_proceed: @ 803F2CC bsC_8016D70: @ 803F300 push {r4-r6,lr} ldr r1, =gTurnOrder - ldr r2, =gUnknown_02024082 + ldr r2, =gCurrentMoveTurn ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] diff --git a/asm/battle_4.s b/asm/battle_4.s index 1494620919..667b93ec81 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -329,7 +329,7 @@ _08048A1A: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB5E9 + ldr r0, =BattleScript_PSNPrevention str r0, [r4] ldr r2, =gHitMarker ldr r1, [r2] @@ -453,7 +453,7 @@ _08048B16: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB5D1 + ldr r0, =BattleScript_BRNPrevention str r0, [r4] ldr r2, =gHitMarker ldr r1, [r2] @@ -500,7 +500,7 @@ _08048B8A: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB5D1 + ldr r0, =BattleScript_BRNPrevention b _08048D72 .pool _08048BA4: @@ -645,7 +645,7 @@ _08048CA2: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB5DD + ldr r0, =BattleScript_PRLZPrevention str r0, [r4] ldr r2, =gHitMarker ldr r1, [r2] @@ -730,7 +730,7 @@ _08048D66: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB5E9 + ldr r0, =BattleScript_PSNPrevention _08048D72: str r0, [r4] ldr r1, =gBattleCommunication @@ -1080,14 +1080,14 @@ _080490F0: movs r1, 0x27 bl RecordAbilityBattle ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB603 + ldr r0, =BattleScript_FlinchPrevention str r0, [r1] bl _080499B2 .pool _08049114: adds r0, r2, 0 bl BankGetTurnOrder - ldr r1, =gUnknown_02024082 + ldr r1, =gCurrentMoveTurn lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] @@ -1132,7 +1132,7 @@ _08049178: lsls r0, 5 orrs r1, r0 str r1, [r2] - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -1172,7 +1172,7 @@ _080491D8: ands r1, r0 cmp r1, 0 bne _08049210 - ldr r4, =gUnknown_0202432E + ldr r4, =gPaydayMoney ldrh r3, [r4] ldr r2, =gBattleMons ldrb r1, [r5] @@ -1245,7 +1245,7 @@ _0804927C: lsls r1, 5 orrs r0, r1 str r0, [r2] - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves mov r2, r9 ldrb r0, [r2] lsls r0, 1 @@ -1326,7 +1326,7 @@ _080492E0: ldr r0, [r0] str r0, [r4] strb r5, [r2, 0x5] - ldr r3, =gUnknown_085CC982 + ldr r3, =gTrappingMoves ldrh r0, [r3] ldrh r4, [r6] cmp r0, r4 @@ -1390,7 +1390,7 @@ _080493D4: movs r0, 0x10 adds r2, r7, 0 movs r3, 0 - bl sub_8050A1C + bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 @@ -1407,7 +1407,7 @@ _080493F2: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082D8CD4 + ldr r0, =BattleScript_StatUp b _080499B0 .pool _0804941C: @@ -1420,7 +1420,7 @@ _0804941C: lsrs r1, 24 adds r2, r7, 0 movs r3, 0 - bl sub_8050A1C + bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 @@ -1437,7 +1437,7 @@ _0804943C: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082D8D65 + ldr r0, =BattleScript_StatDown b _080499B0 .pool _08049468: @@ -1449,7 +1449,7 @@ _08049468: movs r0, 0x20 adds r2, r7, 0 movs r3, 0 - bl sub_8050A1C + bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 @@ -1466,7 +1466,7 @@ _08049486: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082D8CD4 + ldr r0, =BattleScript_StatUp b _080499B0 .pool _080494B0: @@ -1479,7 +1479,7 @@ _080494B0: lsrs r1, 24 adds r2, r7, 0 movs r3, 0 - bl sub_8050A1C + bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 @@ -1496,7 +1496,7 @@ _080494D0: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082D8D65 + ldr r0, =BattleScript_StatDown b _080499B0 .pool _080494FC: @@ -1522,7 +1522,7 @@ _080494FC: adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x19] - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -1618,7 +1618,7 @@ _080495D4: bne _0804963C bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB682 + ldr r0, =BattleScript_NoItemSteal str r0, [r1] ldr r1, =gLastUsedAbility ldrb r0, [r7] @@ -1718,7 +1718,7 @@ _0804967C: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB422 + ldr r0, =BattleScript_ItemSteal str r0, [r4] ldrb r0, [r7] ldr r1, [r5] @@ -1778,7 +1778,7 @@ _08049778: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DAF27 + ldr r0, =BattleScript_AllStatsUp b _080499B0 .pool _08049790: @@ -1786,7 +1786,7 @@ _08049790: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DAFC3 + ldr r0, =BattleScript_RapidSpinAway b _080499B0 .pool _080497A8: @@ -1826,7 +1826,7 @@ _080497C2: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB361 + ldr r0, =BattleScript_TargetPRLZHeal b _080499B0 .pool _08049808: @@ -1834,7 +1834,7 @@ _08049808: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB117 + ldr r0, =BattleScript_AtkDefDown b _080499B0 .pool _08049820: @@ -1881,7 +1881,7 @@ _08049880: lsls r0, 5 orrs r1, r0 str r1, [r2] - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves mov r2, r9 ldrb r0, [r2] lsls r0, 1 @@ -1971,7 +1971,7 @@ _08049900: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB168 + ldr r0, =BattleScript_KnockedOff str r0, [r4] mov r1, r9 ldrb r0, [r1] @@ -2002,7 +2002,7 @@ _080499A4: ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push - ldr r0, =gUnknown_082DB1D5 + ldr r0, =BattleScript_SAtkDown2 _080499B0: str r0, [r4] _080499B2: @@ -13531,7 +13531,7 @@ atk77_setprotect: @ 804FD8C movs r1, 0 strb r1, [r0, 0x8] _0804FDBC: - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r1, [r0] ldr r0, =gNoOfAllBanks ldrb r0, [r0] @@ -14965,8 +14965,8 @@ _08050A04: .pool thumb_func_end atk88_negativedamage - thumb_func_start sub_8050A1C -sub_8050A1C: @ 8050A1C + thumb_func_start ChangeStatBuffs +ChangeStatBuffs: @ 8050A1C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -15477,7 +15477,7 @@ _08050E80: pop {r1} bx r1 .pool - thumb_func_end sub_8050A1C + thumb_func_end ChangeStatBuffs thumb_func_start atk89_statbuffchange atk89_statbuffchange: @ 8050EA0 @@ -15503,7 +15503,7 @@ atk89_statbuffchange: @ 8050EA0 movs r1, 0xF ands r1, r4 ldrb r2, [r2, 0x1] - bl sub_8050A1C + bl ChangeStatBuffs lsls r0, 24 cmp r0, 0 bne _08050EDC @@ -15576,7 +15576,7 @@ atk8B_setbide: @ 8050F40 lsls r1, 5 orrs r0, r1 str r0, [r2] - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -16365,7 +16365,7 @@ atk91_givepaydaymoney: @ 80515C8 ands r0, r1 cmp r0, 0 bne _08051650 - ldr r1, =gUnknown_0202432E + ldr r1, =gPaydayMoney ldrh r0, [r1] cmp r0, 0 beq _08051650 @@ -20500,7 +20500,7 @@ _08053948: ldr r0, [r1] orrs r0, r7 str r0, [r1] - ldr r1, =gUnknown_02024268 + ldr r1, =gLockedMoves ldrb r0, [r6] lsls r0, 1 adds r0, r1 @@ -24092,7 +24092,7 @@ atkDF_setmagiccoat: @ 805589C movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r1, [r0] ldr r0, =gNoOfAllBanks ldrb r0, [r0] @@ -24147,7 +24147,7 @@ atkE0_setstealstatchange: @ 8055920 movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r0, =gUnknown_02024082 + ldr r0, =gCurrentMoveTurn ldrb r1, [r0] ldr r0, =gNoOfAllBanks ldrb r0, [r0] @@ -26577,7 +26577,7 @@ atkF7_802BF54: @ 8056EDC ldr r1, =gFightStateTracker movs r0, 0xC strb r0, [r1] - ldr r1, =gUnknown_02024082 + ldr r1, =gCurrentMoveTurn ldr r0, =gNoOfAllBanks ldrb r0, [r0] strb r0, [r1] diff --git a/data/battle_message.s b/data/battle_message.s index df63806401..c48b40b736 100644 --- a/data/battle_message.s +++ b/data/battle_message.s @@ -599,7 +599,7 @@ gUnknown_085CC270:: @ 85CC270 gMissStringIds:: @ 85CC834 .incbin "baserom.gba", 0x5cc834, 0x14e -gUnknown_085CC982:: @ 85CC982 +gTrappingMoves:: @ 85CC982 .incbin "baserom.gba", 0x5cc982, 0xe gUnknown_085CC990:: @ 85CC990 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 23ef731d1e..7a013c51c7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -15,10 +15,10 @@ BattleScript_MoveEnd:: @ 82D8A4E gUnknown_082D8A60:: @ 82D8A60 .incbin "baserom.gba", 0x2d8a60, 0x274 -gUnknown_082D8CD4:: @ 82D8CD4 +BattleScript_StatUp:: @ 82D8CD4 .incbin "baserom.gba", 0x2d8cd4, 0x91 -gUnknown_082D8D65:: @ 82D8D65 +BattleScript_StatDown:: @ 82D8D65 .incbin "baserom.gba", 0x2d8d65, 0x6fd BattleScript_MoveUsedMustRecharge:: @ 82D9462 @@ -174,10 +174,10 @@ gUnknown_082DAF05:: @ 82DAF05 gUnknown_082DAF20:: @ 82DAF20 .incbin "baserom.gba", 0x2daf20, 0x7 -gUnknown_082DAF27:: @ 82DAF27 +BattleScript_AllStatsUp:: @ 82DAF27 .incbin "baserom.gba", 0x2daf27, 0x9c -gUnknown_082DAFC3:: @ 82DAFC3 +BattleScript_RapidSpinAway:: @ 82DAFC3 .incbin "baserom.gba", 0x2dafc3, 0x2 gUnknown_082DAFC5:: @ 82DAFC5 @@ -222,10 +222,10 @@ BattleScript_WishComesTrue:: @ 82DB0B7 BattleScript_IngrainTurnHeal:: @ 82DB0EE .incbin "baserom.gba", 0x2db0ee, 0x29 -gUnknown_082DB117:: @ 82DB117 +BattleScript_AtkDefDown:: @ 82DB117 .incbin "baserom.gba", 0x2db117, 0x51 -gUnknown_082DB168:: @ 82DB168 +BattleScript_KnockedOff:: @ 82DB168 .incbin "baserom.gba", 0x2db168, 0xe BattleScript_MoveUsedIsImprisoned:: @ 82DB176 @@ -252,7 +252,7 @@ BattleScript_EnduredMsg:: @ 82DB1C7 BattleScript_OneHitKOMsg:: @ 82DB1CE .incbin "baserom.gba", 0x2db1ce, 0x7 -gUnknown_082DB1D5:: @ 82DB1D5 +BattleScript_SAtkDown2:: @ 82DB1D5 .incbin "baserom.gba", 0x2db1d5, 0x2a gUnknown_082DB1FF:: @ 82DB1FF @@ -321,13 +321,13 @@ BattleScript_NightmareTurnDmg:: @ 82DB33F BattleScript_CurseTurnDmg:: @ 82DB350 .incbin "baserom.gba", 0x2db350, 0x11 -gUnknown_082DB361:: @ 82DB361 +BattleScript_TargetPRLZHeal:: @ 82DB361 .incbin "baserom.gba", 0x2db361, 0x17 BattleScript_YawnMakesAsleep:: @ 82DB378 .incbin "baserom.gba", 0x2db378, 0xaa -gUnknown_082DB422:: @ 82DB422 +BattleScript_ItemSteal:: @ 82DB422 .incbin "baserom.gba", 0x2db422, 0xe BattleScript_DrizzleActivates:: @ 82DB430 @@ -390,19 +390,19 @@ BattleScript_FlashFireBoost:: @ 82DB5A8 gUnknown_082DB5C7:: @ 82DB5C7 .incbin "baserom.gba", 0x2db5c7, 0xa -gUnknown_082DB5D1:: @ 82DB5D1 +BattleScript_BRNPrevention:: @ 82DB5D1 .incbin "baserom.gba", 0x2db5d1, 0xc -gUnknown_082DB5DD:: @ 82DB5DD +BattleScript_PRLZPrevention:: @ 82DB5DD .incbin "baserom.gba", 0x2db5dd, 0xc -gUnknown_082DB5E9:: @ 82DB5E9 +BattleScript_PSNPrevention:: @ 82DB5E9 .incbin "baserom.gba", 0x2db5e9, 0xc gUnknown_082DB5F5:: @ 82DB5F5 .incbin "baserom.gba", 0x2db5f5, 0xe -gUnknown_082DB603:: @ 82DB603 +BattleScript_FlinchPrevention:: @ 82DB603 .incbin "baserom.gba", 0x2db603, 0x1c BattleScript_SoundproofProtected:: @ 82DB61F @@ -429,7 +429,7 @@ BattleScript_ApplySecondaryEffect:: @ 82DB67C BattleScript_SynchronizeActivates:: @ 82DB67F .incbin "baserom.gba", 0x2db67f, 0x3 -gUnknown_082DB682:: @ 82DB682 +BattleScript_NoItemSteal:: @ 82DB682 .incbin "baserom.gba", 0x2db682, 0xa gUnknown_082DB68C:: @ 82DB68C diff --git a/include/battle.h b/include/battle.h index 6550a66d3c..56b74aa624 100644 --- a/include/battle.h +++ b/include/battle.h @@ -376,7 +376,7 @@ struct WishFutureKnock u8 wishCounter[BATTLE_BANKS_COUNT]; u8 wishUserID[BATTLE_BANKS_COUNT]; u8 weatherDuration; - u16 knockedOffPokes; + u8 knockedOffPokes[2]; }; extern struct WishFutureKnock gWishFutureKnock; @@ -627,10 +627,10 @@ struct BattleStruct u8 field_B5; u8 field_B6; u8 field_B7; - u16 usedHeldItems[4]; + u16 usedHeldItems[BATTLE_BANKS_COUNT]; u8 field_C0[8]; - u16 choicedMove[4]; - u8 field_D0[8]; + u16 choicedMove[BATTLE_BANKS_COUNT]; + u16 field_D0[BATTLE_BANKS_COUNT]; u8 intimidateBank; u8 fillerD9[0xDA-0xD9]; u8 field_DA; @@ -663,6 +663,35 @@ extern struct BattleStruct* gBattleStruct; #define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & 1)) +#define MOVE_EFFECT_SLEEP 0x1 +#define MOVE_EFFECT_POISON 0x2 +#define MOVE_EFFECT_BURN 0x3 +#define MOVE_EFFECT_FREEZE 0x4 +#define MOVE_EFFECT_PARALYSIS 0x5 +#define MOVE_EFFECT_TOXIC 0x6 +#define MOVE_EFFECT_CONFUSION 0x7 +#define MOVE_EFFECT_FLINCH 0x8 +#define MOVE_EFFECT_TRI_ATTACK 0x9 +#define MOVE_EFFECT_UPROAR 0xA +#define MOVE_EFFECT_PAYDAY 0xB +#define MOVE_EFFECT_CHARGING 0xC +#define MOVE_EFFECT_WRAP 0xD +#define MOVE_EFFECT_RECOIL_25 0xE +#define MOVE_EFFECT_RECHARGE 0x1D +#define MOVE_EFFECT_RAGE 0x1E +#define MOVE_EFFECT_STEAL_ITEM 0x1F +#define MOVE_EFFECT_PREVENT_ESCAPE 0x20 +#define MOVE_EFFECT_NIGHTMARE 0x21 +#define MOVE_EFFECT_ALL_STATS_UP 0x22 +#define MOVE_EFFECT_RAPIDSPIN 0x23 +#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 +#define MOVE_EFFECT_ATK_DEF_DOWN 0x25 +#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 +#define MOVE_EFFECT_THRASH 0x35 +#define MOVE_EFFECT_KNOCK_OFF 0x36 +#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B +#define MOVE_EFFECT_AFFECTS_USER 0x40 + struct BattleScripting { u8 field_0; diff --git a/src/battle_4.c b/src/battle_4.c index 5d867289b9..a51da55bff 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -71,15 +71,17 @@ extern u8 gPlayerPartyCount; extern u16 gMoveToLearn; extern u16 gRandomMove; extern u8 gBankInMenu; -extern u8 gActionForBanks[4]; +extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; extern u8 gCurrentMoveTurn; -extern u8 gBattleBufferB[4][0x200]; +extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; +extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern const struct BattleMove gBattleMoves[]; -extern const u16 gMissStringIds[]; -extern const u8 gTrainerMoney[]; -extern const u8 gTypeEffectiveness[]; extern const struct BaseStats gBaseStats[]; +extern const u8 gTypeEffectiveness[]; +extern const u16 gMissStringIds[]; +extern const u16 gTrappingMoves[]; +extern const u8 gTrainerMoney[]; // functions @@ -106,6 +108,9 @@ extern const u8 BattleScript_ItemSteal[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_KnockedOff[]; +extern const u8 BattleScript_AllStatsUp[]; +extern const u8 BattleScript_AtkDefDown[]; +extern const u8 BattleScript_SAtkDown2[]; extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_WrapFree[]; extern const u8 BattleScript_LeechSeedFree[]; @@ -139,6 +144,7 @@ bool8 IsTwoTurnsMove(u16 move); void DestinyBondFlagUpdate(void); u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static void CheckWonderGuardAndLevitate(void); +u8 ChangeStatBuffs(s8, u8 statId, u8, const u8* BS_ptr); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -672,14 +678,14 @@ const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2}; const u32 gStatusFlagsForMoveEffects[] = { 0x00000000, - 0x00000007, - 0x00000008, - 0x00000010, - 0x00000020, - 0x00000040, - 0x00000080, - 0x00000007, - 0x00000008, + STATUS_SLEEP, + STATUS_POISON, + STATUS_BURN, + STATUS_FREEZE, + STATUS_PARALYSIS, + STATUS_TOXIC_POISON, + STATUS2_CONFUSION, + STATUS2_FLINCHED, 0x00000000, 0x00000070, 0x00000000, @@ -733,6 +739,8 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; +extern const u8* gMoveEffectBS_Ptrs[]; + void atk00_attackcanceler(void) { s32 i; @@ -2023,3 +2031,686 @@ u8 BankGetTurnOrder(u8 bank) } return i; } + +#define INCREMENT_RESET_RETURN \ +{ \ + gBattlescriptCurrInstr++; \ + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; \ + return; \ +} + +#define RESET_RETURN \ +{ \ + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; \ + return; \ +} + +void SetMoveEffect(bool8 primary, u8 certain) +{ + bool32 statusChanged = FALSE; + u8 affectsUser = 0; // 0x40 otherwise + bool32 noSunCanFreeze = TRUE; + + if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_AFFECTS_USER) + { + gEffectBank = gBankAttacker; // bank that effects get applied on + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_AFFECTS_USER); + affectsUser = MOVE_EFFECT_AFFECTS_USER; + gBattleScripting.bank = gBankTarget; // theoretically the attacker + } + else + { + gEffectBank = gBankTarget; + gBattleScripting.bank = gBankAttacker; + } + + if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) + INCREMENT_RESET_RETURN + + if (gSideAffecting[GET_BANK_SIDE(gEffectBank)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) + INCREMENT_RESET_RETURN + + if (gBattleMons[gEffectBank].hp == 0 + && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_PAYDAY + && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_STEAL_ITEM) + INCREMENT_RESET_RETURN + + if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER) + INCREMENT_RESET_RETURN + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change + { + switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case STATUS_SLEEP: + // check active uproar + if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF) + { + for (gActiveBank = 0; + gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); + gActiveBank++) + {} + } + else + gActiveBank = gNoOfAllBanks; + + if (gBattleMons[gEffectBank].status1) + break; + if (gActiveBank != gNoOfAllBanks) + break; + if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) + break; + if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) + break; + + CancelMultiTurnMoves(gEffectBank); + statusChanged = TRUE; + break; + case STATUS_POISON: + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY + && (primary == TRUE || certain == 0x80)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + RESET_RETURN + } + if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON + || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) + && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + RESET_RETURN + } + if (gBattleMons[gEffectBank].type1 == TYPE_POISON) + break; + if (gBattleMons[gEffectBank].type2 == TYPE_POISON) + break; + if (gBattleMons[gEffectBank].type1 == TYPE_STEEL) + break; + if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) + break; + if (gBattleMons[gEffectBank].status1) + break; + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) + break; + + statusChanged = TRUE; + break; + case STATUS_BURN: + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL + && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_WATER_VEIL; + RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + RESET_RETURN + } + if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE + || gBattleMons[gEffectBank].type2 == TYPE_FIRE) + && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + RESET_RETURN + } + if (gBattleMons[gEffectBank].type1 == TYPE_FIRE) + break; + if (gBattleMons[gEffectBank].type2 == TYPE_FIRE) + break; + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL) + break; + if (gBattleMons[gEffectBank].status1) + break; + + statusChanged = TRUE; + break; + case STATUS_FREEZE: + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) + noSunCanFreeze = FALSE; + if (gBattleMons[gEffectBank].type1 == TYPE_ICE) + break; + if (gBattleMons[gEffectBank].type2 == TYPE_ICE) + break; + if (gBattleMons[gEffectBank].status1) + break; + if (noSunCanFreeze == 0) + break; + if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR) + break; + + CancelMultiTurnMoves(gEffectBank); + statusChanged = TRUE; + break; + case STATUS_PARALYSIS: + if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER) + { + if (primary == TRUE || certain == 0x80) + { + gLastUsedAbility = ABILITY_LIMBER; + RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PRLZPrevention; + + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + RESET_RETURN + } + else + break; + } + if (gBattleMons[gEffectBank].status1) + break; + + statusChanged = TRUE; + break; + case STATUS_TOXIC_POISON: + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + RESET_RETURN + } + if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON + || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) + && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (primary == TRUE || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + RESET_RETURN + } + if (gBattleMons[gEffectBank].status1) + break; + if (gBattleMons[gEffectBank].type1 != TYPE_POISON + && gBattleMons[gEffectBank].type2 != TYPE_POISON + && gBattleMons[gEffectBank].type1 != TYPE_STEEL + && gBattleMons[gEffectBank].type2 != TYPE_STEEL) + { + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) + break; + + // It's redundant, because at this point we know the status1 value is 0. + gBattleMons[gEffectBank].status1 &= ~(STATUS_TOXIC_POISON); + gBattleMons[gEffectBank].status1 &= ~(STATUS_POISON); + statusChanged = TRUE; + break; + } + else + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + } + break; + } + if (statusChanged == TRUE) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + + if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); + else + gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + + gActiveBank = gEffectBank; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + MarkBufferBankForExecution(gActiveBank); + + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + + // for synchronize + + if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_POISON + || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_TOXIC + || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_PARALYSIS + || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN) + { + u8* synchronizeEffect = &gBattleStruct->synchronizeMoveEffect; + *synchronizeEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; + } + return; + } + else if (statusChanged == FALSE) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattlescriptCurrInstr++; + return; + } + } + else + { + if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + gBattlescriptCurrInstr++; + } + else + { + u8 side; + u32 statusFlag = + switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case MOVE_EFFECT_CONFUSION: + if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO + || gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + } + break; + case MOVE_EFFECT_FLINCH: + if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS) + { + if (primary == 1 || certain == 0x80) + { + gLastUsedAbility = ABILITY_INNER_FOCUS; + RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; + RESET_RETURN + } + else + { + gBattlescriptCurrInstr++; + break; + } + } + else + { + if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) + gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + INCREMENT_RESET_RETURN + } + break; + case MOVE_EFFECT_UPROAR: + if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gEffectBank] = gCurrentMove; + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + } + break; + case MOVE_EFFECT_PAYDAY: + if (GET_BANK_SIDE(gBankAttacker) == SIDE_PLAYER) + { + u16 PayDay = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBankAttacker].level * 5); + if (PayDay > gPaydayMoney) + gPaydayMoney = 0xFFFF; + } + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case MOVE_EFFECT_TRI_ATTACK: + if (gBattleMons[gEffectBank].status1) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3; + SetMoveEffect(FALSE, 0); + } + break; + case MOVE_EFFECT_CHARGING: + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gEffectBank] = gCurrentMove; + gProtectStructs[gEffectBank].chargingTurn = 1; + gBattlescriptCurrInstr++; + break; + case MOVE_EFFECT_WRAP: + if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; + + *(gBattleStruct->wrappedMove + gEffectBank * 2 + 0) = gCurrentMove; + *(gBattleStruct->wrappedMove + gEffectBank * 2 + 1) = gCurrentMove >> 8; + *(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker; + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + + for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; gBattleCommunication[MULTISTRING_CHOOSER] <= 4; gBattleCommunication[MULTISTRING_CHOOSER]++) + { + if (gCurrentMove == gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]]) + break; + } + } + break; + case MOVE_EFFECT_RECOIL_25: // 25% recoil + gBattleMoveDamage = (gHpDealt) / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 15 ... 21: // stat + 1 + if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, affectsUser, 0)) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case 22 ... 28: // stat - 1 + if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, affectsUser, 0)) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case 39 ... 45: // stat + 2 + if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, affectsUser, 0)) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case 46 ... 52: // stat - 2 + if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, affectsUser, 0)) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case MOVE_EFFECT_RECHARGE: + gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE; + gDisableStructs[gEffectBank].rechargeCounter = 2; + gLockedMoves[gEffectBank] = gCurrentMove; + gBattlescriptCurrInstr++; + break; + case MOVE_EFFECT_RAGE: + gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE; + gBattlescriptCurrInstr++; + break; + case MOVE_EFFECT_STEAL_ITEM: + { + if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + gBattlescriptCurrInstr++; + break; + } + + side = GetBankSide(gBankAttacker); + if (GetBankSide(gBankAttacker) == SIDE_OPPONENT + && !(gBattleTypeFlags & + (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_SECRET_BASE))) + { + gBattlescriptCurrInstr++; + break; + } + if (!(gBattleTypeFlags & + (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_SECRET_BASE)) + && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]])) + { + gBattlescriptCurrInstr++; + break; + } + if (gBattleMons[gBankTarget].item + && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) + { + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + + gLastUsedAbility = gBattleMons[gBankTarget].ability; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + + break; + } + if (gBattleMons[gBankAttacker].item) + { + gBattlescriptCurrInstr++; + break; + } + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + gBattlescriptCurrInstr++; + break; + } + if (gBattleMons[gBankTarget].item > 0x78 + && gBattleMons[gBankTarget].item < (0x79 + 12)) + { + gBattlescriptCurrInstr++; + break; + } + if (gBattleMons[gBankTarget].item == 0) + { + gBattlescriptCurrInstr++; + break; + } + + *(u16*)((u8*)((gBattleStruct->field_D0) + gBankAttacker * 2)) = gLastUsedItem = gBattleMons[gBankTarget].item; + gBattleMons[gBankTarget].item = 0; + + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBufferBankForExecution(gBankAttacker); + + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_ItemSteal; + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0; + } + break; + case MOVE_EFFECT_PREVENT_ESCAPE: + gBattleMons[gBankTarget].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker; + gBattlescriptCurrInstr++; + break; + case MOVE_EFFECT_NIGHTMARE: + gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE; + gBattlescriptCurrInstr++; + break; + case MOVE_EFFECT_ALL_STATS_UP: + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AllStatsUp; + break; + case MOVE_EFFECT_RAPIDSPIN: + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; + break; + case MOVE_EFFECT_REMOVE_PARALYSIS: // Smelling salts + if (!(gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS)) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); + + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; + } + break; + case MOVE_EFFECT_ATK_DEF_DOWN: // SuperPower + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AtkDefDown; + break; + case MOVE_EFFECT_RECOIL_33_PARALYSIS: // Volt Tackle + gBattleMoveDamage = gHpDealt / 3; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case MOVE_EFFECT_THRASH: + if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE) + { + gBattlescriptCurrInstr++; + } + else + { + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gEffectBank] = gCurrentMove; + gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA); + } + break; + case MOVE_EFFECT_KNOCK_OFF: + if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD) + { + if (gBattleMons[gEffectBank].item == 0) + { + gBattlescriptCurrInstr++; + } + else + { + gLastUsedAbility = ABILITY_STICKY_HOLD; + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); + } + break; + } + if (gBattleMons[gEffectBank].item == 0) + { + gBattlescriptCurrInstr++; + } + else + { + side = GetBankSide(gEffectBank); + + gLastUsedItem = gBattleMons[gEffectBank].item; + gBattleMons[gEffectBank].item = 0; + gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_KnockedOff; + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 1) = 0; + } + break; + default: + gBattlescriptCurrInstr++; + break; + case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SAtkDown2; + break; + } + } + } + + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index fe6ccdcbdb..e1238a0cfe 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -313,7 +313,7 @@ gUnknown_0202407A: @ 202407A gTurnOrder: @ 202407E .space 0x4 -gUnknown_02024082: @ 2024082 +gCurrentMoveTurn: @ 2024082 .space 0x1 gFightStateTracker: @ 2024083 @@ -406,7 +406,7 @@ gUnknown_02024258: @ 2024258 gUnknown_02024260: @ 2024260 .space 0x8 -gUnknown_02024268: @ 2024268 +gLockedMoves: @ 2024268 .space 0x8 gUnknown_02024270: @ 2024270 @@ -445,7 +445,7 @@ gDisableStructs: @ 20242BC gPauseCounterBattle: @ 202432C .space 0x2 -gUnknown_0202432E: @ 202432E +gPaydayMoney: @ 202432E .space 0x2 gUnknown_02024330: @ 2024330 From cf26b0e125aef07052b333139c33a6bbe1088f96 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 20 Sep 2017 22:55:37 +0200 Subject: [PATCH 016/182] forgot save lol --- src/battle_4.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/battle_4.c b/src/battle_4.c index a51da55bff..6e71a6a570 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -2351,7 +2351,6 @@ void SetMoveEffect(bool8 primary, u8 certain) else { u8 side; - u32 statusFlag = switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { case MOVE_EFFECT_CONFUSION: From 70e0a357be6cc1947f9cbbce9101dd3860eb2828 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 20 Sep 2017 21:25:48 -0400 Subject: [PATCH 017/182] why are these functions bullying me --- asm/pokemon_summary_screen.s | 116 ------------------ src/pokemon_summary_screen.c | 220 ++++++++++++++++++++++++++++++++++- 2 files changed, 214 insertions(+), 122 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index a97751aa9e..44abdb2dfc 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,122 +5,6 @@ .text - thumb_func_start sub_81C0604 -sub_81C0604: @ 81C0604 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - adds r4, r5, 0 - ldr r1, =gUnknown_0203CF1C - ldr r3, [r1] - ldr r2, =0x000040c3 - adds r0, r3, r2 - ldrb r0, [r0] - adds r6, r1, 0 - cmp r0, 0 - bne _081C06EE - ldr r1, =0x000040bd - adds r0, r3, r1 - ldrb r2, [r0] - cmp r2, 0x1 - bne _081C0678 - adds r1, 0x3 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _081C0654 - lsls r1, r5, 24 - asrs r1, 24 - movs r4, 0x2 - eors r1, r2 - negs r0, r1 - orrs r0, r1 - asrs r0, 31 - ands r4, r0 - b _081C065C - .pool -_081C0654: - movs r4, 0x3 - cmp r5, 0x1 - bne _081C065C - movs r4, 0x1 -_081C065C: - ldr r2, [r6] - ldr r0, [r2] - ldr r3, =0x000040be - adds r1, r2, r3 - ldrb r1, [r1] - adds r3, 0x1 - adds r2, r3 - ldrb r2, [r2] - adds r3, r4, 0 - bl sub_80D214C - b _081C0696 - .pool -_081C0678: - bl sub_81B1250 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C068E - lsls r0, r5, 24 - asrs r0, 24 - bl sub_81C09B4 - b _081C0696 -_081C068E: - lsls r0, r4, 24 - asrs r0, 24 - bl sub_81C08F8 -_081C0696: - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _081C06EE - movs r0, 0x5 - bl PlaySE - ldr r5, =gUnknown_0203CF1C - ldr r0, [r5] - adds r0, 0x77 - ldrb r0, [r0] - cmp r0, 0 - beq _081C06D4 - movs r0, 0x2 - movs r1, 0x1 - bl sub_81C4204 - movs r0, 0xD - bl ClearWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0 - movs r1, 0x2 - bl sub_81C2074 -_081C06D4: - ldr r0, [r5] - ldr r1, =0x000040be - adds r0, r1 - movs r2, 0 - strb r4, [r0] - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x8] - ldr r1, =sub_81C0704 - str r1, [r0] -_081C06EE: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0604 - thumb_func_start sub_81C0704 sub_81C0704: @ 81C0704 push {r4-r6,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 12fd52dfbf..399900a998 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -92,7 +92,10 @@ void sub_81C0A8C(u8 taskId, s8 a); void sub_81C48F0(); void sub_81C0E48(u8 taskId); void sub_81C0704(u8 taskId); - +s8 sub_81C09B4(s8 a); +s8 sub_81C08F8(s8 a); +void sub_81C4204(u8 a, u8 b); +void sub_81C20F0(u8 taskId); u8 sub_81BFB10(); u8 sub_81B1250(); @@ -165,7 +168,8 @@ struct unkSummaryStruct{ u8 unk40C8; u8 unk_filler2[0xA]; u8 unk40D3; - u8 unk_filler5[0x1B]; + u8 unk40D4; + u8 unk_filler5[0x1A]; u8 unk40EF; s16 unk40F0; u8 unk_filler4[6]; @@ -688,20 +692,23 @@ void sub_81C0510(u8 taskId) } } -/* void sub_81C0604(u8 taskId, s8 a) +#ifdef NONMATCHING +void sub_81C0604(u8 taskId, s8 a) { - s8 r4; s8 r4_2; + int r4; + + if (gUnknown_0203CF1C->unk40C3 == 0) { if (gUnknown_0203CF1C->unk40BD == 1) { if(gUnknown_0203CF1C->unk40C0 != 0) { - r4 = 2 * (a != 2); + r4 = (a ^ 1) ? 2 : 0; } else if (a == 1) - r4 = 1; + r4 = a; else r4 = 3; r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, r4); @@ -727,4 +734,205 @@ void sub_81C0510(u8 taskId) gTasks[taskId].func = sub_81C0704; } } +} +#else +__attribute__((naked)) +void sub_81C0604(u8 taskId, s8 a) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + lsls r1, 24\n\ + lsrs r5, r1, 24\n\ + adds r4, r5, 0\n\ + ldr r1, =gUnknown_0203CF1C\n\ + ldr r3, [r1]\n\ + ldr r2, =0x000040c3\n\ + adds r0, r3, r2\n\ + ldrb r0, [r0]\n\ + adds r6, r1, 0\n\ + cmp r0, 0\n\ + bne _081C06EE\n\ + ldr r1, =0x000040bd\n\ + adds r0, r3, r1\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x1\n\ + bne _081C0678\n\ + adds r1, 0x3\n\ + adds r0, r3, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _081C0654\n\ + lsls r1, r5, 24\n\ + asrs r1, 24\n\ + movs r4, 0x2\n\ + eors r1, r2\n\ + negs r0, r1\n\ + orrs r0, r1\n\ + asrs r0, 31\n\ + ands r4, r0\n\ + b _081C065C\n\ + .pool\n\ +_081C0654:\n\ + movs r4, 0x3\n\ + cmp r5, 0x1\n\ + bne _081C065C\n\ + movs r4, 0x1\n\ +_081C065C:\n\ + ldr r2, [r6]\n\ + ldr r0, [r2]\n\ + ldr r3, =0x000040be\n\ + adds r1, r2, r3\n\ + ldrb r1, [r1]\n\ + adds r3, 0x1\n\ + adds r2, r3\n\ + ldrb r2, [r2]\n\ + adds r3, r4, 0\n\ + bl sub_80D214C\n\ + b _081C0696\n\ + .pool\n\ +_081C0678:\n\ + bl sub_81B1250\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _081C068E\n\ + lsls r0, r5, 24\n\ + asrs r0, 24\n\ + bl sub_81C09B4\n\ + b _081C0696\n\ +_081C068E:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + bl sub_81C08F8\n\ +_081C0696:\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + beq _081C06EE\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + ldr r5, =gUnknown_0203CF1C\n\ + ldr r0, [r5]\n\ + adds r0, 0x77\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _081C06D4\n\ + movs r0, 0x2\n\ + movs r1, 0x1\n\ + bl sub_81C4204\n\ + movs r0, 0xD\n\ + bl ClearWindowTilemap\n\ + movs r0, 0\n\ + bl schedule_bg_copy_tilemap_to_vram\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl sub_81C2074\n\ +_081C06D4:\n\ + ldr r0, [r5]\n\ + ldr r1, =0x000040be\n\ + adds r0, r1\n\ + movs r2, 0\n\ + strb r4, [r0]\n\ + ldr r1, =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r2, [r0, 0x8]\n\ + ldr r1, =sub_81C0704\n\ + str r1, [r0]\n\ +_081C06EE:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided\n"); +} +#endif + +/* void sub_81C0704(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + StopCryAndClearCrySongs(); + data[0]++; + break; + case 1: + sub_81C4898(); + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3]); + data[0]++; + break; + case 2: + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]); + data[0]++; + break; + case 3: + sub_81C0098(&gUnknown_0203CF1C->currentPoke); + gUnknown_0203CF1C->unk40F0 = 0; + data[0]++; + break; + case 4: + if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke)) + data[0]++; + break; + case 5: + sub_81C49E0(&gUnknown_0203CF1C->currentPoke); + data[0]++; + break; + case 6: + sub_81C4A08(&gUnknown_0203CF1C->currentPoke); + data[0]++; + break; + case 7: + if (gUnknown_0203CF1C->summary.unk7) + sub_81C2074(10, -2); + sub_81C2228(&gUnknown_0203CF1C->currentPoke); + data[1] = 0; + data[0]++; + break; + case 8: + gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &data[1]); + if (gUnknown_0203CF1C->unk40D3 != 0xFF) + { + gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1; + sub_81C0E24(); + data[1] = 0; + data[0]++; + } + break; + case 9: + sub_81C4280(); + data[0]++; + break; + case 10: + sub_81C25E8(); + data[0]++; + break; + case 11: + sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + sub_81C2524(); + data[0]++; + break; + case 12: + gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0; + data[0]++; + break; + case 13: + if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) + { + TaskFunc *func; + data[0] = 0; + func = &gTasks[taskId].func; + *func = sub_81C0510; + } + } } */ \ No newline at end of file From 15212c4f8d80b4e15b20d0594d890fe1e803bc0e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Sep 2017 23:43:13 -0400 Subject: [PATCH 018/182] Font6Func --- asm/unk_text_util_2.s | 523 ------------------------------------------ include/text.h | 52 +++-- ld_script.txt | 1 + src/text.c | 12 +- src/unk_text_util_2.c | 200 ++++++++++++++++ 5 files changed, 241 insertions(+), 547 deletions(-) create mode 100644 src/unk_text_util_2.c diff --git a/asm/unk_text_util_2.s b/asm/unk_text_util_2.s index 7f1a5ef70e..c1ab255949 100755 --- a/asm/unk_text_util_2.s +++ b/asm/unk_text_util_2.s @@ -5,529 +5,6 @@ .text - thumb_func_start Font6Func -@ int Font6Func(struct TextPrinter *x) -Font6Func: @ 81BA250 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r6, 0 - adds r4, 0x14 - ldrb r0, [r6, 0x1C] - cmp r0, 0x6 - bls _081BA260 - b _081BA660 -_081BA260: - lsls r0, 2 - ldr r1, =_081BA270 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081BA270: - .4byte _081BA28C - .4byte _081BA554 - .4byte _081BA566 - .4byte _081BA590 - .4byte _081BA5C8 - .4byte _081BA63C - .4byte _081BA64E -_081BA28C: - ldr r2, =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _081BA2A6 - ldrb r1, [r4] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081BA2A6 - movs r0, 0 - strb r0, [r6, 0x1E] -_081BA2A6: - ldrb r1, [r6, 0x1E] - cmp r1, 0 - beq _081BA2E8 - ldrb r0, [r6, 0x1D] - cmp r0, 0 - beq _081BA2E8 - subs r0, r1, 0x1 - strb r0, [r6, 0x1E] - ldr r0, =gTextFlags - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081BA2C4 - b _081BA50E -_081BA2C4: - ldrh r1, [r2, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _081BA2D0 - b _081BA50E -_081BA2D0: - ldrb r0, [r4] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r4] - movs r0, 0 - strb r0, [r6, 0x1E] - b _081BA50E - .pool -_081BA2E8: - ldr r2, =gTextFlags - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _081BA2FC - movs r0, 0x3 - b _081BA2FE - .pool -_081BA2FC: - ldrb r0, [r6, 0x1D] -_081BA2FE: - strb r0, [r6, 0x1E] - ldr r0, [r6] - ldrb r3, [r0] - adds r0, 0x1 - str r0, [r6] - adds r0, r3, 0 - subs r0, 0xF8 - cmp r0, 0x7 - bls _081BA312 - b _081BA52E -_081BA312: - lsls r0, 2 - ldr r1, =_081BA320 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081BA320: - .4byte _081BA524 - .4byte _081BA512 - .4byte _081BA504 - .4byte _081BA500 - .4byte _081BA36E - .4byte _081BA368 - .4byte _081BA340 - .4byte _081BA660 -_081BA340: - ldrb r0, [r6, 0x6] - strb r0, [r6, 0x8] - ldrb r1, [r6, 0x5] - ldr r0, =gFonts - ldr r2, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r6, 0xB] - ldrb r0, [r0, 0x5] - adds r1, r0 - ldrb r0, [r6, 0x9] - adds r0, r1 - strb r0, [r6, 0x9] -_081BA35E: - movs r0, 0x2 - b _081BA662 - .pool -_081BA368: - ldr r0, [r6] - adds r0, 0x1 - b _081BA4C4 -_081BA36E: - ldr r0, [r6] - ldrb r3, [r0] - adds r0, 0x1 - str r0, [r6] - subs r0, r3, 0x1 - cmp r0, 0xF - bls _081BA37E - b _081BA52E -_081BA37E: - lsls r0, 2 - ldr r1, =_081BA38C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081BA38C: - .4byte _081BA3CC - .4byte _081BA3EE - .4byte _081BA412 - .4byte _081BA42C - .4byte _081BA478 - .4byte _081BA47E - .4byte _081BA35E - .4byte _081BA498 - .4byte _081BA4A8 - .4byte _081BA4BC - .4byte _081BA4C0 - .4byte _081BA4C8 - .4byte _081BA4D2 - .4byte _081BA4DE - .4byte _081BA4EE - .4byte _081BA4C0 -_081BA3CC: - ldr r2, [r6] - ldrb r1, [r2] - lsls r1, 4 - ldrb r3, [r6, 0xC] - movs r0, 0xF - ands r0, r3 - orrs r0, r1 - strb r0, [r6, 0xC] - adds r2, 0x1 - str r2, [r6] - lsls r0, 24 - lsrs r0, 28 - ldrb r2, [r6, 0xD] - lsls r1, r2, 28 - lsrs r1, 28 - lsrs r2, 4 - b _081BA472 -_081BA3EE: - ldr r1, [r6] - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - ldrb r3, [r6, 0xD] - movs r2, 0x10 - negs r2, r2 - ands r2, r3 - orrs r2, r0 - strb r2, [r6, 0xD] - adds r1, 0x1 - str r1, [r6] - ldrb r0, [r6, 0xC] - lsrs r0, 4 - lsls r1, r2, 28 - lsrs r1, 28 - lsrs r2, 4 - b _081BA472 -_081BA412: - ldr r1, [r6] - ldrb r0, [r1] - lsls r0, 4 - ldrb r3, [r6, 0xD] - movs r2, 0xF - ands r2, r3 - orrs r2, r0 - strb r2, [r6, 0xD] - adds r1, 0x1 - str r1, [r6] - ldrb r0, [r6, 0xC] - lsrs r0, 4 - b _081BA46A -_081BA42C: - ldr r3, [r6] - ldrb r1, [r3] - lsls r1, 4 - ldrb r4, [r6, 0xC] - movs r2, 0xF - adds r0, r2, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r6, 0xC] - adds r5, r3, 0x1 - str r5, [r6] - ldrb r3, [r3, 0x1] - adds r1, r2, 0 - ands r1, r3 - ldrb r4, [r6, 0xD] - movs r3, 0x10 - negs r3, r3 - ands r3, r4 - orrs r3, r1 - strb r3, [r6, 0xD] - adds r4, r5, 0x1 - str r4, [r6] - ldrb r1, [r5, 0x1] - lsls r1, 4 - ands r2, r3 - orrs r2, r1 - strb r2, [r6, 0xD] - adds r4, 0x1 - str r4, [r6] - lsls r0, 24 - lsrs r0, 28 -_081BA46A: - lsls r1, r2, 28 - lsrs r1, 28 - lsls r2, 24 - lsrs r2, 28 -_081BA472: - bl GenerateFontHalfRowLookupTable - b _081BA35E -_081BA478: - ldr r0, [r6] - adds r0, 0x1 - b _081BA4C4 -_081BA47E: - ldr r0, [r6] - ldrb r0, [r0] - movs r1, 0xF - ands r1, r0 - ldrb r2, [r4] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - ldr r0, [r6] - adds r0, 0x1 - b _081BA4C4 -_081BA498: - ldr r0, [r6] - ldrb r1, [r0] - strb r1, [r6, 0x1E] - adds r0, 0x1 - str r0, [r6] - movs r0, 0x6 - strb r0, [r6, 0x1C] - b _081BA35E -_081BA4A8: - movs r0, 0x1 - strb r0, [r6, 0x1C] - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _081BA50E - movs r0, 0 - strb r0, [r4, 0x2] - b _081BA50E -_081BA4BC: - movs r0, 0x5 - b _081BA64A -_081BA4C0: - ldr r0, [r6] - adds r0, 0x2 -_081BA4C4: - str r0, [r6] - b _081BA35E -_081BA4C8: - ldr r1, [r6] - adds r0, r1, 0x1 - str r0, [r6] - ldrb r3, [r1, 0x1] - b _081BA52E -_081BA4D2: - ldr r1, [r6] - ldrb r0, [r1] - ldrb r2, [r6, 0x6] - adds r0, r2 - strb r0, [r6, 0x8] - b _081BA4E8 -_081BA4DE: - ldr r1, [r6] - ldrb r0, [r1] - ldrb r2, [r6, 0x7] - adds r0, r2 - strb r0, [r6, 0x9] -_081BA4E8: - adds r1, 0x1 - str r1, [r6] - b _081BA35E -_081BA4EE: - ldrb r0, [r6, 0x4] - ldrb r2, [r6, 0xD] - lsls r2, 28 - lsrs r1, r2, 4 - orrs r1, r2 - lsrs r1, 24 - bl FillWindowPixelBuffer - b _081BA35E -_081BA500: - movs r0, 0x2 - b _081BA506 -_081BA504: - movs r0, 0x3 -_081BA506: - strb r0, [r6, 0x1C] - adds r0, r6, 0 - bl TextPrinterInitDownArrowCounters -_081BA50E: - movs r0, 0x3 - b _081BA662 -_081BA512: - ldr r0, [r6] - ldrb r3, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - orrs r3, r1 - adds r0, 0x1 - str r0, [r6] - b _081BA52E -_081BA524: - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] - movs r0, 0 - b _081BA662 -_081BA52E: - adds r0, r3, 0 - bl DecompressGlyphFont6 - adds r0, r6, 0 - bl CopyGlyphToWindow - ldr r0, =gUnknown_03002F90 - adds r0, 0x80 - ldrb r1, [r6, 0xA] - ldrb r0, [r0] - adds r1, r0 - ldrb r0, [r6, 0x8] - adds r0, r1 - strb r0, [r6, 0x8] - movs r0, 0 - b _081BA662 - .pool -_081BA554: - adds r0, r6, 0 - bl TextPrinterWait - lsls r0, 16 - cmp r0, 0 - beq _081BA50E - movs r0, 0 - strb r0, [r6, 0x1C] - b _081BA50E -_081BA566: - adds r0, r6, 0 - bl TextPrinterWaitWithDownArrow - lsls r0, 16 - cmp r0, 0 - beq _081BA50E - ldrb r0, [r6, 0x4] - ldrb r2, [r6, 0xD] - lsls r2, 28 - lsrs r1, r2, 4 - orrs r1, r2 - lsrs r1, 24 - bl FillWindowPixelBuffer - ldrb r0, [r6, 0x6] - movs r1, 0 - strb r0, [r6, 0x8] - ldrb r0, [r6, 0x7] - strb r0, [r6, 0x9] - strb r1, [r6, 0x1C] - b _081BA50E -_081BA590: - adds r0, r6, 0 - bl TextPrinterWaitWithDownArrow - lsls r0, 16 - cmp r0, 0 - beq _081BA50E - adds r0, r6, 0 - bl TextPrinterClearDownArrow - ldrb r1, [r6, 0x5] - ldr r0, =gFonts - ldr r2, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r6, 0xB] - ldrb r0, [r0, 0x5] - adds r1, r0 - strb r1, [r6, 0x1F] - ldrb r0, [r6, 0x6] - strb r0, [r6, 0x8] - movs r0, 0x4 - strb r0, [r6, 0x1C] - b _081BA50E - .pool -_081BA5C8: - ldrb r2, [r6, 0x1F] - cmp r2, 0 - beq _081BA638 - ldr r4, =gUnknown_08616124 - ldr r5, =gSaveBlock2Ptr - ldr r0, [r5] - ldrb r0, [r0, 0x14] - lsls r1, r0, 29 - lsrs r0, r1, 29 - adds r0, r4 - ldrb r0, [r0] - cmp r2, r0 - bcs _081BA604 - ldrb r0, [r6, 0x4] - ldrb r1, [r6, 0xD] - lsls r1, 28 - lsrs r3, r1, 4 - orrs r3, r1 - lsrs r3, 24 - movs r1, 0 - bl ScrollWindow - movs r0, 0 - strb r0, [r6, 0x1F] - b _081BA62E - .pool -_081BA604: - ldrb r0, [r6, 0x4] - lsrs r1, 29 - adds r1, r4 - ldrb r2, [r1] - ldrb r1, [r6, 0xD] - lsls r1, 28 - lsrs r3, r1, 4 - orrs r3, r1 - lsrs r3, 24 - movs r1, 0 - bl ScrollWindow - ldr r0, [r5] - ldrb r0, [r0, 0x14] - lsls r0, 29 - lsrs r0, 29 - adds r0, r4 - ldrb r1, [r6, 0x1F] - ldrb r0, [r0] - subs r1, r0 - strb r1, [r6, 0x1F] -_081BA62E: - ldrb r0, [r6, 0x4] - movs r1, 0x2 - bl CopyWindowToVram - b _081BA50E -_081BA638: - strb r2, [r6, 0x1C] - b _081BA50E -_081BA63C: - bl IsSEPlaying - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _081BA64A - b _081BA50E -_081BA64A: - strb r0, [r6, 0x1C] - b _081BA50E -_081BA64E: - ldrb r0, [r6, 0x1E] - adds r1, r0, 0 - cmp r1, 0 - beq _081BA65C - subs r0, 0x1 - strb r0, [r6, 0x1E] - b _081BA50E -_081BA65C: - strb r1, [r6, 0x1C] - b _081BA50E -_081BA660: - movs r0, 0x1 -_081BA662: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end Font6Func - thumb_func_start DecompressGlyphFont6 DecompressGlyphFont6: @ 81BA668 push {r4,r5,lr} diff --git a/include/text.h b/include/text.h index c61f6cc983..a7a79da7ac 100644 --- a/include/text.h +++ b/include/text.h @@ -78,6 +78,22 @@ #define NUM_TEXT_PRINTERS 32 +struct TextPrinterSubStruct +{ + u8 font_type:4; // 0x14 + u8 font_type_upper:1; + u8 font_type_5:3; + u8 field_1:5; + u8 field_1_upmid:2; + u8 field_1_top:1; + u8 frames_visible_counter; + u8 field_3; + u8 field_4; // 0x18 + u8 field_5; + u8 field_6; + u8 active; +}; + struct TextPrinter { struct TextSubPrinter { // TODO: Better name @@ -99,20 +115,7 @@ struct TextPrinter void (*callback)(struct TextSubPrinter *, u16); // 0x10 union { - struct TextPrinterSubStruct - { - u8 font_type:4; // 0x14 - u8 font_type_upper:4; - u8 field_1:5; - u8 field_1_upmid:2; - u8 field_1_top:1; - u8 frames_visible_counter; - u8 field_3; - u8 field_4; // 0x18 - u8 field_5; - u8 field_6; - u8 active; - } sub; + struct TextPrinterSubStruct sub; u8 sub_fields[8]; } sub_union; @@ -138,6 +141,8 @@ struct FontInfo u8 shadowColor:4; }; +extern const struct FontInfo *gFonts; + struct GlyphWidthFunc{ u32 font_id; u32 (*func)(u16 glyphId, bool32 isJapanese); @@ -149,11 +154,26 @@ struct KeypadIcon { u8 height; }; +typedef struct { + u8 flag_0:1; + u8 flag_1:1; + u8 flag_2:1; +} TextFlags; + +extern TextFlags gTextFlags; + extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +u8 gUnknown_03002F84; +u8 gUnknown_03002F90[0x20]; +u8 gUnknown_03002FB0[0x20]; +u8 gUnknown_03002FD0[0x20]; +u8 gUnknown_03002FF0[0x20]; +u8 gGlyphDimensions[0x2]; + void SetFontsPointer(const struct FontInfo *fonts); void DeactivateAllTextPrinters (void); u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); @@ -182,8 +202,8 @@ void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter); void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter); void TextPrinterClearDownArrow(struct TextPrinter *textPrinter); bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter); -bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); -bool8 TextPrinterWait(struct TextPrinter *textPrinter); +bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); +bool16 TextPrinterWait(struct TextPrinter *textPrinter); void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex); u16 RenderText(struct TextPrinter *textPrinter); u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing); diff --git a/ld_script.txt b/ld_script.txt index 177f368889..bafc672857 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -253,6 +253,7 @@ SECTIONS { asm/item_icon.o(.text); asm/party_menu.o(.text); asm/battle_tent.o(.text); + src/unk_text_util_2.o(.text); asm/unk_text_util_2.o(.text); src/multiboot.o(.text); asm/unk_81BAD84.o(.text); diff --git a/src/text.c b/src/text.c index aa4e201c02..fe1c5df249 100644 --- a/src/text.c +++ b/src/text.c @@ -32,11 +32,7 @@ u8 gUnknown_03002FB0[0x20]; u8 gUnknown_03002FD0[0x20]; u8 gUnknown_03002FF0[0x20]; u8 gGlyphDimensions[0x2]; -struct { - u8 flag_0:1; - u8 flag_1:1; - u8 flag_2:1; -} gTextFlags; +TextFlags gTextFlags; const u8 gFontHalfRowOffsets[] = { 0x00, 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x03, 0x06, 0x07, 0x08, 0x06, 0x00, 0x01, 0x02, 0x00, @@ -1973,7 +1969,7 @@ bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter) } } -bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) +bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) { bool8 result = FALSE; if (gTextFlags.flag_2 != 0) @@ -1992,9 +1988,9 @@ bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) return result; } -bool8 TextPrinterWait(struct TextPrinter *textPrinter) +bool16 TextPrinterWait(struct TextPrinter *textPrinter) { - bool8 result = FALSE; + bool16 result = FALSE; if (gTextFlags.flag_2 != 0) { result = TextPrinterWaitAutoMode(textPrinter); diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c new file mode 100644 index 0000000000..23f3ca1b6c --- /dev/null +++ b/src/unk_text_util_2.c @@ -0,0 +1,200 @@ +#include "global.h" +#include "main.h" +#include "window.h" +#include "text.h" +#include "sound.h" + +extern const u8 gUnknown_08616124[]; + +void DecompressGlyphFont6(u16); + +u16 Font6Func(struct TextPrinter *textPrinter) +{ + u16 char_; + struct TextPrinterSubStruct *sub; + + sub = &textPrinter->sub_union.sub; + switch (textPrinter->state) + { + case 0: + if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper) + { + textPrinter->delayCounter = 0; + } + if (textPrinter->delayCounter && textPrinter->text_speed) + { + textPrinter->delayCounter --; + if (gTextFlags.flag_0 && gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub->font_type_upper = TRUE; + textPrinter->delayCounter = 0; + } + return 3; + } + if (gTextFlags.flag_2) + { + textPrinter->delayCounter = 3; + } + else + { + textPrinter->delayCounter = textPrinter->text_speed; + } + char_ = *textPrinter->subPrinter.current_text_offset ++; + switch (char_) + { + case EOS: + return 1; + case CHAR_NEWLINE: + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing; + return 2; + case PLACEHOLDER_BEGIN: + textPrinter->subPrinter.current_text_offset ++; + return 2; + case EXT_CTRL_CODE_BEGIN: + char_ = *textPrinter->subPrinter.current_text_offset ++; + switch (char_) + { + case 1: + textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset ++; + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 2: + textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset ++; + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 3: + textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset ++; + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 4: + textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset; + textPrinter->subPrinter.bgColor = *++ textPrinter->subPrinter.current_text_offset; + textPrinter->subPrinter.shadowColor = *++ textPrinter->subPrinter.current_text_offset; + textPrinter->subPrinter.current_text_offset ++; + + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 5: + textPrinter->subPrinter.current_text_offset ++; + return 2; + case 6: + sub->font_type = *textPrinter->subPrinter.current_text_offset; + textPrinter->subPrinter.current_text_offset ++; + return 2; + case 7: + return 2; + case 8: + textPrinter->delayCounter = *textPrinter->subPrinter.current_text_offset ++; + textPrinter->state = 6; + return 2; + case 9: + textPrinter->state = 1; + if (gTextFlags.flag_2) + { + sub->frames_visible_counter = 0; + } + return 3; + case 10: + textPrinter->state = 5; + return 3; + case 11: + case 16: + textPrinter->subPrinter.current_text_offset += 2; + return 2; + case 12: + char_ = *++textPrinter->subPrinter.current_text_offset; + break; + case 13: + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.current_text_offset ++; + return 2; + case 14: + textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.current_text_offset ++; + return 2; + case 15: + FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4)); + return 2; + } + break; + case CHAR_PROMPT_CLEAR: + textPrinter->state = 2; + TextPrinterInitDownArrowCounters(textPrinter); + return 3; + case CHAR_PROMPT_SCROLL: + textPrinter->state = 3; + TextPrinterInitDownArrowCounters(textPrinter); + return 3; + case 0xF9: + char_ = *textPrinter->subPrinter.current_text_offset ++ | 0x100; + break; + case 0xF8: + textPrinter->subPrinter.current_text_offset ++; + return 0; + } + DecompressGlyphFont6(char_); + CopyGlyphToWindow(textPrinter); + textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80] + textPrinter->subPrinter.letterSpacing; + return 0; + case 1: + if (TextPrinterWait(textPrinter)) + { + textPrinter->state = 0; + } + return 3; + case 2: + if (TextPrinterWaitWithDownArrow(textPrinter)) + { + FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4)); + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->subPrinter.currentY = textPrinter->subPrinter.y; + textPrinter->state = 0; + } + return 3; + case 3: + if (TextPrinterWaitWithDownArrow(textPrinter)) + { + TextPrinterClearDownArrow(textPrinter); + textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing; + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->state = 4; + } + return 3; + case 4: + if (textPrinter->scrollDistance) + { + if (textPrinter->scrollDistance < gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed]) + { + ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4)); + textPrinter->scrollDistance = 0; + } + else + { + ScrollWindow(textPrinter->subPrinter.windowId, 0, gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4)); + textPrinter->scrollDistance -= gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed]; + } + CopyWindowToVram(textPrinter->subPrinter.windowId, 2); + } + else + { + textPrinter->state = 0; + } + return 3; + case 5: + if (!IsSEPlaying()) + { + textPrinter->state = 0; + } + return 3; + case 6: + if (textPrinter->delayCounter) + { + textPrinter->delayCounter --; + } + else + { + textPrinter->state = 0; + } + return 3; + } + return 1; +} From aa64f61b84d6b52f4073cf9acef1a927cd9010e6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 Sep 2017 00:01:07 -0400 Subject: [PATCH 019/182] Finish decomp of unk_text_util_2 --- asm/unk_text_util_2.s | 60 ------------------------------------------- ld_script.txt | 1 - src/unk_text_util_2.c | 21 ++++++++++++++- 3 files changed, 20 insertions(+), 62 deletions(-) delete mode 100755 asm/unk_text_util_2.s diff --git a/asm/unk_text_util_2.s b/asm/unk_text_util_2.s deleted file mode 100755 index c1ab255949..0000000000 --- a/asm/unk_text_util_2.s +++ /dev/null @@ -1,60 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start DecompressGlyphFont6 -DecompressGlyphFont6: @ 81BA668 - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 19 - lsls r2, 9 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - lsrs r1, 11 - ldr r0, =gFont6BrailleGlyphs - adds r1, r0 - adds r5, r2, r1 - ldr r4, =gUnknown_03002F90 - adds r0, r5, 0 - adds r1, r4, 0 - bl DecompressGlyphTile - adds r0, r5, 0 - adds r0, 0x10 - adds r1, r4, 0 - adds r1, 0x20 - bl DecompressGlyphTile - movs r1, 0x80 - lsls r1, 1 - adds r0, r5, r1 - adds r1, r4, 0 - adds r1, 0x40 - bl DecompressGlyphTile - movs r1, 0x88 - lsls r1, 1 - adds r0, r5, r1 - adds r1, r4, 0 - adds r1, 0x60 - bl DecompressGlyphTile - adds r0, r4, 0 - adds r0, 0x80 - movs r1, 0x10 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DecompressGlyphFont6 - - thumb_func_start GetGlyphWidthFont6 -GetGlyphWidthFont6: @ 81BA6CC - movs r0, 0x10 - bx lr - thumb_func_end GetGlyphWidthFont6 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index bafc672857..aee6ae59ac 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -254,7 +254,6 @@ SECTIONS { asm/party_menu.o(.text); asm/battle_tent.o(.text); src/unk_text_util_2.o(.text); - asm/unk_text_util_2.o(.text); src/multiboot.o(.text); asm/unk_81BAD84.o(.text); asm/battle_controller_player_partner.o(.text); diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c index 23f3ca1b6c..d9bd9d98d2 100644 --- a/src/unk_text_util_2.c +++ b/src/unk_text_util_2.c @@ -5,8 +5,9 @@ #include "sound.h" extern const u8 gUnknown_08616124[]; +extern const u16 gFont6BrailleGlyphs[]; -void DecompressGlyphFont6(u16); +static void DecompressGlyphFont6(u16); u16 Font6Func(struct TextPrinter *textPrinter) { @@ -198,3 +199,21 @@ u16 Font6Func(struct TextPrinter *textPrinter) } return 1; } + +static void DecompressGlyphFont6(u16 glyph) +{ + const u16 *glyphs; + + glyphs = gFont6BrailleGlyphs + 0x100 * (glyph / 8) + 0x10 * (glyph % 8); + DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90); + DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20)); + DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40)); + DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90 + 0x60)); + gUnknown_03002F90[0x80] = 0x10; + gUnknown_03002F90[0x81] = 0x10; +} + +u8 GetGlyphWidthFont6(void) +{ + return 0x10; +} From ee277bff16c6d118bf9a4af4a27f0b9619d1fb4b Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Fri, 22 Sep 2017 15:17:59 -0400 Subject: [PATCH 020/182] decompiled up to sub_81C0A50 --- asm/pokemon_summary_screen.s | 410 ------------------------ src/pokemon_summary_screen.c | 599 ++++++++++++++++++++++++----------- 2 files changed, 415 insertions(+), 594 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 44abdb2dfc..e337c8b27a 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,416 +5,6 @@ .text - thumb_func_start sub_81C0704 -sub_81C0704: @ 81C0704 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r4, r1, 3 - ldr r6, =gTasks + 0x8 - adds r5, r4, r6 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0xC - bls _081C071E - b _081C08BC -_081C071E: - lsls r0, 2 - ldr r1, =_081C0730 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C0730: - .4byte _081C0764 - .4byte _081C076A - .4byte _081C0780 - .4byte _081C07A8 - .4byte _081C07C8 - .4byte _081C07E0 - .4byte _081C07F0 - .4byte _081C0800 - .4byte _081C0828 - .4byte _081C086C - .4byte _081C0872 - .4byte _081C0878 - .4byte _081C0894 -_081C0764: - bl StopCryAndClearCrySongs - b _081C08EC -_081C076A: - bl sub_81C4898 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040d3 - b _081C0786 - .pool -_081C0780: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040d4 -_081C0786: - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - bl DestroySpriteAndFreeResources - b _081C08EC - .pool -_081C07A8: - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0xC - bl sub_81C0098 - ldr r0, [r4] - ldr r1, =0x000040f0 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _081C08EC - .pool -_081C07C8: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C00F0 - lsls r0, 24 - cmp r0, 0 - bne _081C07DA - b _081C08F2 -_081C07DA: - b _081C08EC - .pool -_081C07E0: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C49E0 - b _081C08EC - .pool -_081C07F0: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - bl sub_81C4A08 - b _081C08EC - .pool -_081C0800: - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0x77 - ldrb r0, [r0] - cmp r0, 0 - beq _081C0816 - movs r1, 0x2 - negs r1, r1 - movs r0, 0xA - bl sub_81C2074 -_081C0816: - ldr r0, [r4] - adds r0, 0xC - bl sub_81C2228 - movs r0, 0 - strh r0, [r5, 0x2] - b _081C08EC - .pool -_081C0828: - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0xC - adds r1, r5, 0x2 - bl sub_81C45F4 - ldr r1, [r4] - ldr r2, =0x000040d3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xFF - beq _081C08F2 - ldr r2, =gSprites - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x32] - bl sub_81C0E24 - movs r0, 0 - strh r0, [r5, 0x2] - b _081C08EC - .pool -_081C086C: - bl sub_81C4280 - b _081C08EC -_081C0872: - bl sub_81C25E8 - b _081C08EC -_081C0878: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - bl sub_81C2D9C - bl sub_81C2524 - b _081C08EC - .pool -_081C0894: - ldr r2, =gSprites - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040d3 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x32] - b _081C08EC - .pool -_081C08BC: - bl sub_81221EC - lsls r0, 24 - cmp r0, 0 - bne _081C08F2 - ldr r0, =sub_81C20F0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _081C08F2 - strh r0, [r5] - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r4, r0 - ldr r1, =sub_81C0510 - str r1, [r0] - b _081C08F2 - .pool -_081C08EC: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_081C08F2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81C0704 - - thumb_func_start sub_81C08F8 -sub_81C08F8: @ 81C08F8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gUnknown_0203CF1C - ldr r2, [r1] - ldr r7, [r2] - ldr r3, =0x000040c0 - adds r0, r2, r3 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - bne _081C0960 - lsls r0, r4, 24 - asrs r3, r0, 24 - movs r1, 0x1 - negs r1, r1 - adds r6, r0, 0 - cmp r3, r1 - bne _081C0928 - ldr r1, =0x000040be - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _081C0988 -_081C0928: - asrs r0, r6, 24 - cmp r0, 0x1 - bne _081C0940 - ldr r0, [r5] - ldr r2, =0x000040be - adds r1, r0, r2 - ldr r3, =0x000040bf - adds r0, r3 - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcs _081C0988 -_081C0940: - ldr r0, [r5] - ldr r1, =0x000040be - adds r0, r1 - ldrb r0, [r0] - adds r0, r4 - lsls r0, 24 - asrs r0, 24 - b _081C09AE - .pool -_081C0960: - ldr r3, =0x000040be - adds r0, r2, r3 - ldrb r5, [r0] - lsls r6, r4, 24 -_081C0968: - lsls r0, r5, 24 - asrs r0, 24 - asrs r1, r6, 24 - adds r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - blt _081C0988 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040bf - adds r0, r1 - ldrb r0, [r0] - cmp r4, r0 - ble _081C099C -_081C0988: - movs r0, 0x1 - negs r0, r0 - b _081C09AE - .pool -_081C099C: - movs r0, 0x64 - muls r0, r4 - adds r0, r7, r0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _081C0968 - adds r0, r4, 0 -_081C09AE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81C08F8 - - thumb_func_start sub_81C09B4 -sub_81C09B4: @ 81C09B4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - ldr r6, =gUnknown_0203CF1C - ldr r0, [r6] - ldr r1, [r0] - mov r8, r1 - movs r5, 0 - movs r2, 0 - ldr r3, =gUnknown_0861CC1C - movs r1, 0 - ldrsb r1, [r3, r1] - ldr r4, =0x000040be - adds r0, r4 - ldrb r0, [r0] - cmp r1, r0 - beq _081C09FC - adds r7, r3, 0 - adds r3, r4, 0 -_081C09E0: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x5 - bhi _081C09FC - adds r0, r2, r7 - movs r1, 0 - ldrsb r1, [r0, r1] - ldr r0, [r6] - adds r0, r3 - ldrb r0, [r0] - cmp r1, r0 - bne _081C09E0 - adds r5, r2, 0 -_081C09FC: - mov r0, r12 - lsls r6, r0, 24 - ldr r7, =gUnknown_0861CC1C -_081C0A02: - lsls r0, r5, 24 - asrs r0, 24 - asrs r1, r6, 24 - adds r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, r5, 24 - lsrs r0, r1, 24 - cmp r0, 0x5 - bhi _081C0A40 - asrs r0, r1, 24 - adds r0, r7 - movs r4, 0 - ldrsb r4, [r0, r4] - movs r0, 0x64 - muls r0, r4 - add r0, r8 - bl sub_81C0A50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C0A02 - adds r0, r4, 0 - b _081C0A44 - .pool -_081C0A40: - movs r0, 0x1 - negs r0, r0 -_081C0A44: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81C09B4 - - thumb_func_start sub_81C0A50 -sub_81C0A50: @ 81C0A50 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081C0A84 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040be - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _081C0A78 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _081C0A84 -_081C0A78: - movs r0, 0x1 - b _081C0A86 - .pool -_081C0A84: - movs r0, 0 -_081C0A86: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81C0A50 - thumb_func_start sub_81C0A8C sub_81C0A8C: @ 81C0A8C push {r4-r7,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 399900a998..77d1d1b28d 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -6,6 +6,7 @@ #include "malloc.h" #include "palette.h" #include "pokemon.h" +#include "songs.h" #include "sound.h" #include "sprite.h" #include "string_util.h" @@ -16,6 +17,7 @@ extern struct unkSummaryStruct* gUnknown_0203CF1C; extern struct BgTemplate gUnknown_0861CBB4; extern u8 gUnknown_0203CF20; extern struct MusicPlayerInfo gMPlay_BGM; +extern s8 gUnknown_0861CC1C[]; extern void sub_806F2AC(u8 a, u8 b); void sub_81C488C(u8 a); @@ -80,7 +82,7 @@ void sub_81C1DA4(u8 a, u8 b); void sub_81C1EFC(u8 a, u8 b, u8 c); void sub_81C240C(u16 a); void sub_81C2194(void* a, u8 b, u8 c); -void sub_81C2074(u8 a, u8 b); +void sub_81C2074(u16 a, s16 b); void sub_81C2524(); void sub_81C2228(struct Pokemon* poke); void sub_81C0484(u8 taskId); @@ -96,6 +98,7 @@ s8 sub_81C09B4(s8 a); s8 sub_81C08F8(s8 a); void sub_81C4204(u8 a, u8 b); void sub_81C20F0(u8 taskId); +u8 sub_81C0A50(struct Pokemon* mon); u8 sub_81BFB10(); u8 sub_81B1250(); @@ -105,7 +108,7 @@ union unkUnion{ struct BoxPokemon boxMons[6]; }; -u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, int d); +u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, u8 d); struct pokeSummary{ u16 species; // 0x0 @@ -462,62 +465,19 @@ u8 sub_81BFEB0() return 0; } -#ifdef NONMATCHING void sub_81C0098(struct Pokemon* poke) { if (gUnknown_0203CF1C->unk40BD == 0) { - struct Pokemon* src = &gUnknown_0203CF1C->unk0->mons[gUnknown_0203CF1C->unk40BE]; - *poke = *src; + struct Pokemon *pokeMons = gUnknown_0203CF1C->unk0->mons; + *poke = pokeMons[gUnknown_0203CF1C->unk40BE]; } else - sub_8069004(&gUnknown_0203CF1C->unk0->boxMons[gUnknown_0203CF1C->unk40BE], poke); + { + struct BoxPokemon *boxMons = gUnknown_0203CF1C->unk0->boxMons; + sub_8069004(&boxMons[gUnknown_0203CF1C->unk40BE], poke); + } } -#else -__attribute__((naked)) -void sub_81C0098(struct Pokemon* poke) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - adds r3, r0, 0\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r1, [r0]\n\ - ldr r2, =0x000040bd\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _081C00D0\n\ - ldr r2, [r1]\n\ - ldr r4, =0x000040be\n\ - adds r0, r1, r4\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - adds r1, r2\n\ - adds r0, r3, 0\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - b _081C00E6\n\ - .pool\n\ -_081C00D0:\n\ - ldr r0, [r1]\n\ - ldr r2, =0x000040be\n\ - adds r1, r2\n\ - ldrb r2, [r1]\n\ - lsls r1, r2, 2\n\ - adds r1, r2\n\ - lsls r1, 4\n\ - adds r0, r1\n\ - adds r1, r3, 0\n\ - bl sub_8069004\n\ -_081C00E6:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif u8 sub_81C00F0(struct Pokemon* a) { @@ -692,36 +652,42 @@ void sub_81C0510(u8 taskId) } } -#ifdef NONMATCHING void sub_81C0604(u8 taskId, s8 a) { s8 r4_2; - int r4; - - + if (gUnknown_0203CF1C->unk40C3 == 0) { if (gUnknown_0203CF1C->unk40BD == 1) { - if(gUnknown_0203CF1C->unk40C0 != 0) + if (gUnknown_0203CF1C->unk40C0 != 0) { - r4 = (a ^ 1) ? 2 : 0; + if (a == 1) + a = 0; + else + a = 2; } - else if (a == 1) - r4 = a; else - r4 = 3; - r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, r4); + { + if (a == 1) + a = 1; + else + a = 3; + } + r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, a); } else if (sub_81B1250() == 1) { r4_2 = sub_81C09B4(a); } else + { r4_2 = sub_81C08F8(a); + } + if (r4_2 != -1) { - PlaySE(5); + PlaySE(SE_SELECT); if (gUnknown_0203CF1C->summary.unk7 != 0) { sub_81C4204(2, 1); @@ -735,128 +701,9 @@ void sub_81C0604(u8 taskId, s8 a) } } } -#else -__attribute__((naked)) -void sub_81C0604(u8 taskId, s8 a) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - adds r4, r5, 0\n\ - ldr r1, =gUnknown_0203CF1C\n\ - ldr r3, [r1]\n\ - ldr r2, =0x000040c3\n\ - adds r0, r3, r2\n\ - ldrb r0, [r0]\n\ - adds r6, r1, 0\n\ - cmp r0, 0\n\ - bne _081C06EE\n\ - ldr r1, =0x000040bd\n\ - adds r0, r3, r1\n\ - ldrb r2, [r0]\n\ - cmp r2, 0x1\n\ - bne _081C0678\n\ - adds r1, 0x3\n\ - adds r0, r3, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _081C0654\n\ - lsls r1, r5, 24\n\ - asrs r1, 24\n\ - movs r4, 0x2\n\ - eors r1, r2\n\ - negs r0, r1\n\ - orrs r0, r1\n\ - asrs r0, 31\n\ - ands r4, r0\n\ - b _081C065C\n\ - .pool\n\ -_081C0654:\n\ - movs r4, 0x3\n\ - cmp r5, 0x1\n\ - bne _081C065C\n\ - movs r4, 0x1\n\ -_081C065C:\n\ - ldr r2, [r6]\n\ - ldr r0, [r2]\n\ - ldr r3, =0x000040be\n\ - adds r1, r2, r3\n\ - ldrb r1, [r1]\n\ - adds r3, 0x1\n\ - adds r2, r3\n\ - ldrb r2, [r2]\n\ - adds r3, r4, 0\n\ - bl sub_80D214C\n\ - b _081C0696\n\ - .pool\n\ -_081C0678:\n\ - bl sub_81B1250\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _081C068E\n\ - lsls r0, r5, 24\n\ - asrs r0, 24\n\ - bl sub_81C09B4\n\ - b _081C0696\n\ -_081C068E:\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - bl sub_81C08F8\n\ -_081C0696:\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - beq _081C06EE\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - ldr r5, =gUnknown_0203CF1C\n\ - ldr r0, [r5]\n\ - adds r0, 0x77\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _081C06D4\n\ - movs r0, 0x2\n\ - movs r1, 0x1\n\ - bl sub_81C4204\n\ - movs r0, 0xD\n\ - bl ClearWindowTilemap\n\ - movs r0, 0\n\ - bl schedule_bg_copy_tilemap_to_vram\n\ - movs r0, 0\n\ - movs r1, 0x2\n\ - bl sub_81C2074\n\ -_081C06D4:\n\ - ldr r0, [r5]\n\ - ldr r1, =0x000040be\n\ - adds r0, r1\n\ - movs r2, 0\n\ - strb r4, [r0]\n\ - ldr r1, =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r2, [r0, 0x8]\n\ - ldr r1, =sub_81C0704\n\ - str r1, [r0]\n\ -_081C06EE:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif -/* void sub_81C0704(u8 taskId) +#ifdef NONMATCHING +void sub_81C0704(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -935,4 +782,388 @@ _081C06EE:\n\ *func = sub_81C0510; } } -} */ \ No newline at end of file +} +#else +__attribute__((naked)) +void sub_81C0704(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r4, r1, 3\n\ + ldr r6, =gTasks + 0x8\n\ + adds r5, r4, r6\n\ + movs r1, 0\n\ + ldrsh r0, [r5, r1]\n\ + cmp r0, 0xC\n\ + bls _081C071E\n\ + b _081C08BC\n\ +_081C071E:\n\ + lsls r0, 2\n\ + ldr r1, =_081C0730\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .pool\n\ + .align 2, 0\n\ +_081C0730:\n\ + .4byte _081C0764\n\ + .4byte _081C076A\n\ + .4byte _081C0780\n\ + .4byte _081C07A8\n\ + .4byte _081C07C8\n\ + .4byte _081C07E0\n\ + .4byte _081C07F0\n\ + .4byte _081C0800\n\ + .4byte _081C0828\n\ + .4byte _081C086C\n\ + .4byte _081C0872\n\ + .4byte _081C0878\n\ + .4byte _081C0894\n\ +_081C0764:\n\ + bl StopCryAndClearCrySongs\n\ + b _081C08EC\n\ +_081C076A:\n\ + bl sub_81C4898\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + ldr r1, =0x000040d3\n\ + b _081C0786\n\ + .pool\n\ +_081C0780:\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + ldr r1, =0x000040d4\n\ +_081C0786:\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, =gSprites\n\ + adds r0, r1\n\ + bl DestroySpriteAndFreeResources\n\ + b _081C08EC\n\ + .pool\n\ +_081C07A8:\n\ + ldr r4, =gUnknown_0203CF1C\n\ + ldr r0, [r4]\n\ + adds r0, 0xC\n\ + bl sub_81C0098\n\ + ldr r0, [r4]\n\ + ldr r1, =0x000040f0\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0]\n\ + b _081C08EC\n\ + .pool\n\ +_081C07C8:\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + adds r0, 0xC\n\ + bl sub_81C00F0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _081C07DA\n\ + b _081C08F2\n\ +_081C07DA:\n\ + b _081C08EC\n\ + .pool\n\ +_081C07E0:\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + adds r0, 0xC\n\ + bl sub_81C49E0\n\ + b _081C08EC\n\ + .pool\n\ +_081C07F0:\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + adds r0, 0xC\n\ + bl sub_81C4A08\n\ + b _081C08EC\n\ + .pool\n\ +_081C0800:\n\ + ldr r4, =gUnknown_0203CF1C\n\ + ldr r0, [r4]\n\ + adds r0, 0x77\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _081C0816\n\ + movs r1, 0x2\n\ + negs r1, r1\n\ + movs r0, 0xA\n\ + bl sub_81C2074\n\ +_081C0816:\n\ + ldr r0, [r4]\n\ + adds r0, 0xC\n\ + bl sub_81C2228\n\ + movs r0, 0\n\ + strh r0, [r5, 0x2]\n\ + b _081C08EC\n\ + .pool\n\ +_081C0828:\n\ + ldr r4, =gUnknown_0203CF1C\n\ + ldr r0, [r4]\n\ + adds r0, 0xC\n\ + adds r1, r5, 0x2\n\ + bl sub_81C45F4\n\ + ldr r1, [r4]\n\ + ldr r2, =0x000040d3\n\ + adds r1, r2\n\ + strb r0, [r1]\n\ + ldr r0, [r4]\n\ + adds r1, r0, r2\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFF\n\ + beq _081C08F2\n\ + ldr r2, =gSprites\n\ + adds r1, r0, 0\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x32]\n\ + bl sub_81C0E24\n\ + movs r0, 0\n\ + strh r0, [r5, 0x2]\n\ + b _081C08EC\n\ + .pool\n\ +_081C086C:\n\ + bl sub_81C4280\n\ + b _081C08EC\n\ +_081C0872:\n\ + bl sub_81C25E8\n\ + b _081C08EC\n\ +_081C0878:\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + ldr r1, =0x000040c0\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_81C2D9C\n\ + bl sub_81C2524\n\ + b _081C08EC\n\ + .pool\n\ +_081C0894:\n\ + ldr r2, =gSprites\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + ldr r1, =0x000040d3\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0\n\ + strh r1, [r0, 0x32]\n\ + b _081C08EC\n\ + .pool\n\ +_081C08BC:\n\ + bl sub_81221EC\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _081C08F2\n\ + ldr r0, =sub_81C20F0\n\ + bl FuncIsActiveTask\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + bne _081C08F2\n\ + strh r0, [r5]\n\ + adds r0, r6, 0\n\ + subs r0, 0x8\n\ + adds r0, r4, r0\n\ + ldr r1, =sub_81C0510\n\ + str r1, [r0]\n\ + b _081C08F2\n\ + .pool\n\ +_081C08EC:\n\ + ldrh r0, [r5]\n\ + adds r0, 0x1\n\ + strh r0, [r5]\n\ +_081C08F2:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +#ifdef NONMATCHING +s8 sub_81C08F8(s8 a) +{ + union unkUnion* r7 = gUnknown_0203CF1C->unk0; + if (gUnknown_0203CF1C->unk40C0 == 0) + { + if (a != -1 || gUnknown_0203CF1C->unk40BE != 0) + { + if (a != 1 || gUnknown_0203CF1C->unk40BE < gUnknown_0203CF1C->unk40BF) + { + return gUnknown_0203CF1C->unk40BE + a; + } + } + return -1; + } + else + { + s8 r5r4 = gUnknown_0203CF1C->unk40BE; + while(1) + { + r5r4 += a; + if (r5r4 < 0 || r5r4 > gUnknown_0203CF1C->unk40BF) + return -1; + else if (GetMonData(&r7->mons[r5r4], MON_DATA_IS_EGG) == 0) + return r5r4; + } + } +} +#else +__attribute__((naked)) +s8 sub_81C08F8(s8 a) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r1, =gUnknown_0203CF1C\n\ + ldr r2, [r1]\n\ + ldr r7, [r2]\n\ + ldr r3, =0x000040c0\n\ + adds r0, r2, r3\n\ + ldrb r0, [r0]\n\ + adds r5, r1, 0\n\ + cmp r0, 0\n\ + bne _081C0960\n\ + lsls r0, r4, 24\n\ + asrs r3, r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r6, r0, 0\n\ + cmp r3, r1\n\ + bne _081C0928\n\ + ldr r1, =0x000040be\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _081C0988\n\ +_081C0928:\n\ + asrs r0, r6, 24\n\ + cmp r0, 0x1\n\ + bne _081C0940\n\ + ldr r0, [r5]\n\ + ldr r2, =0x000040be\n\ + adds r1, r0, r2\n\ + ldr r3, =0x000040bf\n\ + adds r0, r3\n\ + ldrb r1, [r1]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bcs _081C0988\n\ +_081C0940:\n\ + ldr r0, [r5]\n\ + ldr r1, =0x000040be\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + adds r0, r4\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + b _081C09AE\n\ + .pool\n\ +_081C0960:\n\ + ldr r3, =0x000040be\n\ + adds r0, r2, r3\n\ + ldrb r5, [r0]\n\ + lsls r6, r4, 24\n\ +_081C0968:\n\ + lsls r0, r5, 24\n\ + asrs r0, 24\n\ + asrs r1, r6, 24\n\ + adds r0, r1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + asrs r4, r0, 24\n\ + cmp r4, 0\n\ + blt _081C0988\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + ldr r1, =0x000040bf\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + ble _081C099C\n\ +_081C0988:\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _081C09AE\n\ + .pool\n\ +_081C099C:\n\ + movs r0, 0x64\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _081C0968\n\ + adds r0, r4, 0\n\ +_081C09AE:\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif + +s8 sub_81C09B4(s8 a) +{ + union unkUnion* r8 = gUnknown_0203CF1C->unk0; + s8 r5 = 0; + u8 i = 0; + if (gUnknown_0861CC1C[0] != gUnknown_0203CF1C->unk40BE) + { + while(1) + { + i += 1; + if (i > 5) + break; + if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->unk40BE) + { + r5 = i; + break; + } + } + } + while(1) + { + int b; + s8* c = &gUnknown_0861CC1C[0]; + r5 += a; + if ((u8)(r5) > 5) + { + return -1; + } + else + { + b = c[r5]; + if (sub_81C0A50(&r8->mons[c[r5]]) == 1) + return b; + } + } +} + +u8 sub_81C0A50(struct Pokemon* mon) +{ + if (GetMonData(mon, MON_DATA_SPECIES) == 0) + { + return 0; + } + else if (gUnknown_0203CF1C->unk40BE != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) + return 1; + else + return 0; +} \ No newline at end of file From d5afb0c6e9566a62ca6d597aeabc173b2c3e7fa5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 22 Sep 2017 21:33:49 +0200 Subject: [PATCH 021/182] up to x48 and troubles --- asm/battle_2.s | 26 +- asm/battle_4.s | 5876 +-------------------- asm/battle_5.s | 12 +- asm/battle_7.s | 6 +- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 2 +- asm/battle_controller_player.s | 4 +- asm/battle_controller_player_partner.s | 2 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 2 +- asm/battle_controller_safari.s | 2 +- asm/battle_controller_wally.s | 2 +- asm/rom3.s | 18 +- data/battle_scripts_1.s | 12 +- include/battle.h | 144 +- include/battle_controllers.h | 3 + include/pokemon.h | 3 + src/battle_3.c | 92 +- src/battle_4.c | 1890 ++++++- sym_common.txt | 2 +- sym_ewram.txt | 4 +- 22 files changed, 2013 insertions(+), 6095 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index ad449bfdf1..47db7e0824 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6513,7 +6513,7 @@ _0803A0AE: ldr r5, =gPauseCounterBattle ldr r6, =gBattleMoveDamage ldr r7, =gUnknown_020243FC - ldr r0, =gUnknown_03005D54 + ldr r0, =gLeveledUpInBattle mov r8, r0 ldr r1, =gAbsentBankFlags mov r9, r1 @@ -7256,8 +7256,8 @@ _0803A6B4: .pool thumb_func_end sub_803A284 - thumb_func_start sub_803A75C -sub_803A75C: @ 803A75C + thumb_func_start UndoEffectsAfterFainting +UndoEffectsAfterFainting: @ 803A75C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7786,7 +7786,7 @@ _0803AB6C: pop {r0} bx r0 .pool - thumb_func_end sub_803A75C + thumb_func_end UndoEffectsAfterFainting thumb_func_start bc_8012FAC bc_8012FAC: @ 803ABC0 @@ -12891,7 +12891,7 @@ _0803D920: ands r2, r0 cmp r2, 0 beq _0803D95C - bl sub_805EA60 + bl BattleMusicStop ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAA87 str r0, [r1] @@ -12912,7 +12912,7 @@ _0803D95C: beq _0803D968 b _0803DA9E _0803D968: - bl sub_805EA60 + bl BattleMusicStop ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DA92D str r0, [r1] @@ -13371,7 +13371,7 @@ sub_803DE40: @ 803DE40 cmp r0, 0 bne _0803DE86 bl ResetSpriteData - ldr r0, =gUnknown_03005D54 + ldr r0, =gLeveledUpInBattle ldrb r0, [r0] cmp r0, 0 beq _0803DE62 @@ -13409,7 +13409,7 @@ _0803DEA2: thumb_func_start bc_evolution_cutscene bc_evolution_cutscene: @ 803DEB4 push {r4-r6,lr} - ldr r0, =gUnknown_03005D54 + ldr r0, =gLeveledUpInBattle ldrb r1, [r0] adds r3, r0, 0 cmp r1, 0 @@ -13454,7 +13454,7 @@ _0803DEC2: .pool _0803DF20: adds r6, 0x1 - ldr r3, =gUnknown_03005D54 + ldr r3, =gLeveledUpInBattle cmp r6, 0x5 ble _0803DEC2 ldrb r0, [r3] @@ -16323,7 +16323,7 @@ PrepareStringBattle: @ 803F964 sub_803F988: @ 803F988 push {r4-r6,lr} movs r3, 0 - ldr r0, =gUnknown_020243FE + ldr r0, =gSentPokesToOpponent strb r3, [r0] strb r3, [r0, 0x1] movs r1, 0 @@ -16351,7 +16351,7 @@ _0803F9B6: ldrb r0, [r2] cmp r1, r0 bge _0803F9D6 - ldr r5, =gUnknown_020243FE + ldr r5, =gSentPokesToOpponent movs r4, 0x2 _0803F9C4: adds r0, r1, 0 @@ -16389,7 +16389,7 @@ sub_803F9EC: @ 803F9EC lsls r0, 24 lsrs r0, 25 mov r12, r0 - ldr r1, =gUnknown_020243FE + ldr r1, =gSentPokesToOpponent adds r0, r1 strb r4, [r0] adds r5, r4, 0 @@ -16453,7 +16453,7 @@ _0803FA8C: ldrb r0, [r5] cmp r3, r0 bge _0803FAC2 - ldr r0, =gUnknown_020243FE + ldr r0, =gSentPokesToOpponent mov r12, r0 movs r7, 0x2 ldr r6, =gBitTable diff --git a/asm/battle_4.s b/asm/battle_4.s index 667b93ec81..ddde05c1d5 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -6,5848 +6,6 @@ .text - thumb_func_start SetMoveEffect -SetMoveEffect: @ 8048760 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - movs r0, 0 - mov r10, r0 - movs r7, 0 - movs r1, 0x1 - str r1, [sp, 0x4] - ldr r1, =gBattleCommunication - ldrb r3, [r1, 0x3] - movs r0, 0x40 - ands r0, r3 - cmp r0, 0 - beq _080487B8 - ldr r2, =gEffectBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0xBF - ands r0, r3 - adds r3, r1, 0 - strb r0, [r3, 0x3] - movs r7, 0x40 - ldr r1, =gBattleScripting - ldr r0, =gBankTarget - b _080487C4 - .pool -_080487B8: - ldr r2, =gEffectBank - ldr r0, =gBankTarget - ldrb r0, [r0] - strb r0, [r2] - ldr r1, =gBattleScripting - ldr r0, =gBankAttacker -_080487C4: - ldrb r0, [r0] - strb r0, [r1, 0x17] - mov r9, r2 - ldr r2, =gBattleMons - mov r4, r9 - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x13 - bne _08048828 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - bne _08048828 - cmp r5, 0 - bne _08048828 - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x3] - cmp r0, 0x9 - bhi _08048828 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r2, =gBattleCommunication - strb r5, [r2, 0x3] - bl _080499B8 - .pool -_08048828: - mov r3, r9 - ldrb r0, [r3] - bl GetBankIdentity - ldr r2, =gSideAffecting - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08048880 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - bne _08048880 - cmp r5, 0 - bne _08048880 - ldr r0, =gBattleCommunication - ldrb r1, [r0, 0x3] - cmp r1, 0x7 - bhi _08048880 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r4, =gBattleCommunication - strb r5, [r4, 0x3] - bl _080499B8 - .pool -_08048880: - ldr r3, =gBattleMons - ldr r2, =gEffectBank - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r4, [r0, 0x28] - mov r9, r2 - mov r8, r3 - cmp r4, 0 - bne _080488C4 - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x3] - cmp r0, 0xB - beq _080488C4 - cmp r0, 0x1F - beq _080488C4 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r2, =gBattleCommunication - strb r4, [r2, 0x3] - bl _080499B8 - .pool -_080488C4: - mov r3, r9 - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - mov r1, r8 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _080488FC - cmp r7, 0x40 - beq _080488FC - ldr r0, =gBattlescriptCurrInstr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - movs r0, 0 - ldr r4, =gBattleCommunication - strb r0, [r4, 0x3] - bl _080499B8 - .pool -_080488FC: - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x3] - cmp r0, 0x6 - bls _08048906 - b _08048F40 -_08048906: - ldr r1, =gStatusFlagsForMoveEffects - ldr r2, =gBattleCommunication - ldrb r0, [r2, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x10 - bne _08048918 - b _08048AFC -_08048918: - cmp r0, 0x10 - bhi _08048930 - cmp r0, 0x7 - beq _0804894A - cmp r0, 0x8 - beq _08048A00 - b _08048DF4 - .pool -_08048930: - cmp r0, 0x40 - bne _08048936 - b _08048C84 -_08048936: - cmp r0, 0x40 - bhi _08048942 - cmp r0, 0x20 - bne _08048940 - b _08048BEA -_08048940: - b _08048DF4 -_08048942: - cmp r0, 0x80 - bne _08048948 - b _08048D02 -_08048948: - b _08048DF4 -_0804894A: - mov r3, r9 - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - beq _080489AC - ldr r0, =gActiveBank - movs r1, 0 - strb r1, [r0] - ldr r1, =gNoOfAllBanks - ldrb r3, [r1] - adds r7, r0, 0 - mov r12, r1 - cmp r3, 0 - beq _080489B8 - mov r4, r8 - ldr r0, [r4, 0x50] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - bne _080489B8 - adds r1, r7, 0 - mov r6, r8 - adds r6, 0x50 - movs r5, 0x58 - movs r4, 0x70 -_08048984: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r3 - bcs _080489B8 - ldrb r0, [r7] - muls r0, r5 - adds r0, r6 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08048984 - b _080489B8 - .pool -_080489AC: - ldr r0, =gActiveBank - ldr r2, =gNoOfAllBanks - ldrb r1, [r2] - strb r1, [r0] - adds r7, r0, 0 - mov r12, r2 -_080489B8: - mov r0, r9 - ldrb r2, [r0] - movs r0, 0x58 - adds r1, r2, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080489D0 - b _08048DF4 -_080489D0: - ldrb r0, [r7] - mov r3, r12 - ldrb r3, [r3] - cmp r0, r3 - beq _080489DC - b _08048DF4 -_080489DC: - mov r4, r8 - adds r0, r1, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - bne _080489EA - b _08048DF4 -_080489EA: - cmp r0, 0xF - bne _080489F0 - b _08048DF4 -_080489F0: - adds r0, r2, 0 - bl CancelMultiTurnMoves - b _08048DE4 - .pool -_08048A00: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x11 - bne _08048A70 - cmp r5, 0x1 - beq _08048A1A - cmp r6, 0x80 - bne _08048A70 -_08048A1A: - ldr r0, =gLastUsedAbility - strb r1, [r0] - mov r3, r9 - ldrb r0, [r3] - movs r1, 0x11 - bl RecordAbilityBattle - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_PSNPrevention - str r0, [r4] - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - bne _08048A46 - b _08048D20 -_08048A46: - movs r0, 0x1 - ldr r4, =gBattleCommunication - strb r0, [r4, 0x5] -_08048A4C: - ldr r0, =0xffffdfff - ands r1, r0 - str r1, [r2] - bl _080499B2 - .pool -_08048A70: - mov r2, r9 - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0x3 - beq _08048A94 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08048A94 - cmp r1, 0x8 - beq _08048A94 - cmp r0, 0x8 - bne _08048AAE -_08048A94: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08048AAE - cmp r5, 0x1 - bne _08048AA8 - b _08048D66 -_08048AA8: - cmp r6, 0x80 - bne _08048AAE - b _08048D66 -_08048AAE: - mov r3, r9 - ldrb r1, [r3] - movs r0, 0x58 - muls r1, r0 - mov r4, r8 - adds r3, r1, r4 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r4, [r0] - cmp r4, 0x3 - bne _08048AC6 - b _08048DF4 -_08048AC6: - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _08048AD0 - b _08048DF4 -_08048AD0: - cmp r4, 0x8 - bne _08048AD6 - b _08048DF4 -_08048AD6: - cmp r0, 0x8 - bne _08048ADC - b _08048DF4 -_08048ADC: - mov r0, r8 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _08048AEA - b _08048DF4 -_08048AEA: - adds r0, r3, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x11 - bne _08048AF6 - b _08048DF4 -_08048AF6: - b _08048DE4 - .pool -_08048AFC: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x29 - bne _08048B54 - cmp r5, 0x1 - beq _08048B16 - cmp r6, 0x80 - bne _08048B54 -_08048B16: - ldr r0, =gLastUsedAbility - strb r1, [r0] - mov r3, r9 - ldrb r0, [r3] - movs r1, 0x29 - bl RecordAbilityBattle - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_BRNPrevention - str r0, [r4] - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08048B42 - b _08048A46 -_08048B42: - b _08048D20 - .pool -_08048B54: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - mov r3, r8 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xA - beq _08048B74 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xA - bne _08048BA4 -_08048B74: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08048BA4 - cmp r5, 0x1 - beq _08048B8A - cmp r6, 0x80 - bne _08048BA4 -_08048B8A: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_BRNPrevention - b _08048D72 - .pool -_08048BA4: - mov r4, r9 - ldrb r0, [r4] - movs r1, 0x58 - adds r2, r0, 0 - muls r2, r1 - mov r0, r8 - adds r1, r2, r0 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xA - bne _08048BBE - b _08048DF4 -_08048BBE: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xA - bne _08048BCA - b _08048DF4 -_08048BCA: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x29 - bne _08048BD6 - b _08048DF4 -_08048BD6: - mov r0, r8 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _08048BE4 - b _08048DF4 -_08048BE4: - movs r1, 0x1 - mov r10, r1 - b _08048DF4 -_08048BEA: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08048C26 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08048C26 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08048C26 - movs r2, 0 - str r2, [sp, 0x4] -_08048C26: - ldr r4, =gBattleMons - ldr r0, =gEffectBank - ldrb r3, [r0] - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r1, r2, r4 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xF - bne _08048C40 - b _08048DF4 -_08048C40: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xF - bne _08048C4C - b _08048DF4 -_08048C4C: - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _08048C5A - b _08048DF4 -_08048C5A: - ldr r4, [sp, 0x4] - cmp r4, 0 - bne _08048C62 - b _08048DF4 -_08048C62: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x28 - bne _08048C6E - b _08048DF4 -_08048C6E: - adds r0, r3, 0 - bl CancelMultiTurnMoves - b _08048DE4 - .pool -_08048C84: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r1, r0 - mov r3, r8 - adds r0, r1, r3 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x7 - bne _08048CF4 - cmp r5, 0x1 - beq _08048CA2 - cmp r6, 0x80 - beq _08048CA2 - b _08048DF4 -_08048CA2: - ldr r0, =gLastUsedAbility - strb r2, [r0] - mov r4, r9 - ldrb r0, [r4] - movs r1, 0x7 - bl RecordAbilityBattle - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_PRLZPrevention - str r0, [r4] - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08048CE8 - movs r0, 0x1 - ldr r3, =gBattleCommunication - strb r0, [r3, 0x5] - b _08048A4C - .pool -_08048CE8: - ldr r4, =gBattleCommunication - strb r0, [r4, 0x5] - bl _080499B2 - .pool -_08048CF4: - mov r0, r8 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08048DF4 - b _08048DE4 -_08048D02: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x11 - bne _08048D2C - cmp r5, 0x1 - bne _08048D1A - b _08048A1A -_08048D1A: - cmp r6, 0x80 - bne _08048D2C - b _08048A1A -_08048D20: - ldr r1, =gBattleCommunication - strb r0, [r1, 0x5] - bl _080499B2 - .pool -_08048D2C: - mov r2, r9 - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0x3 - beq _08048D50 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08048D50 - cmp r1, 0x8 - beq _08048D50 - cmp r0, 0x8 - bne _08048D94 -_08048D50: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08048D94 - cmp r5, 0x1 - beq _08048D66 - cmp r6, 0x80 - bne _08048D94 -_08048D66: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_PSNPrevention -_08048D72: - str r0, [r4] - ldr r1, =gBattleCommunication - movs r2, 0 - movs r0, 0x2 - strb r0, [r1, 0x5] - strb r2, [r1, 0x3] - bl _080499B8 - .pool -_08048D94: - mov r3, r9 - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - mov r2, r8 - adds r2, 0x4C - adds r5, r0, r2 - ldr r4, [r5] - cmp r4, 0 - bne _08048DF4 - mov r3, r8 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r3, [r0] - cmp r3, 0x3 - beq _08048DEA - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08048DEA - cmp r3, 0x8 - beq _08048DEA - cmp r0, 0x8 - beq _08048DEA - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x11 - beq _08048DF4 - mov r4, r9 - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r6 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x9 - negs r2, r2 - ands r0, r2 - str r0, [r1] -_08048DE4: - movs r0, 0x1 - mov r10, r0 - b _08048DF4 -_08048DEA: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_08048DF4: - mov r1, r10 - cmp r1, 0x1 - beq _08048DFC - b _08048F1C -_08048DFC: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gStatusFlagsForMoveEffects - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - cmp r3, 0x7 - bne _08048E50 - bl Random - ldr r2, =gBattleMons - ldr r1, =gEffectBank - ldrb r3, [r1] - movs r1, 0x58 - muls r3, r1 - adds r2, 0x4C - adds r3, r2 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - b _08048E64 - .pool -_08048E50: - ldr r2, =gBattleMons - ldr r0, =gEffectBank - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r2, 0x4C - adds r1, r2 - ldr r0, [r1] - orrs r0, r3 - str r0, [r1] -_08048E64: - ldr r2, =gBattlescriptCurrInstr - ldr r1, =gMoveEffectBS_Ptrs - ldr r5, =gBattleCommunication - ldrb r0, [r5, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r4, =gActiveBank - ldr r1, =gEffectBank - ldrb r0, [r1] - strb r0, [r4] - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - ldr r1, =gBattleMons + 0x4C - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08048ED8 - movs r0, 0x1 - strb r0, [r5, 0x5] - ldr r0, =0xffffdfff - ands r1, r0 - str r1, [r2] - b _08048EDA - .pool -_08048ED8: - strb r0, [r5, 0x5] -_08048EDA: - ldr r0, =gBattleCommunication - ldrb r2, [r0, 0x3] - cmp r2, 0x2 - beq _08048EF2 - cmp r2, 0x6 - beq _08048EF2 - cmp r2, 0x5 - beq _08048EF2 - cmp r2, 0x3 - beq _08048EF2 - bl _080499B8 -_08048EF2: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB2 - ldr r2, =gBattleCommunication - ldrb r1, [r2, 0x3] - strb r1, [r0] - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 7 - orrs r0, r1 - str r0, [r2] - bl _080499B8 - .pool -_08048F1C: - mov r3, r10 - cmp r3, 0 - beq _08048F26 - bl _080499B8 -_08048F26: - ldr r0, =gBattleCommunication - strb r3, [r0, 0x3] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bl _080499B8 - .pool -_08048F40: - mov r4, r9 - ldrb r1, [r4] - movs r0, 0x58 - muls r1, r0 - mov r0, r8 - adds r0, 0x50 - adds r1, r0 - ldr r2, =gStatusFlagsForMoveEffects - ldr r0, =gBattleCommunication - ldrb r3, [r0, 0x3] - lsls r0, r3, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08048F66 - bl _08049994 -_08048F66: - subs r0, r3, 0x7 - cmp r0, 0x34 - bls _08048F70 - bl _080499B2 -_08048F70: - lsls r0, 2 - ldr r1, =_08048F88 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08048F88: - .4byte _0804905C - .4byte _080490D0 - .4byte _08049244 - .4byte _0804915C - .4byte _080491D8 - .4byte _0804927C - .4byte _080492C4 - .4byte _08049390 - .4byte _080493D4 - .4byte _080493D4 - .4byte _080493D4 - .4byte _080493D4 - .4byte _080493D4 - .4byte _080493D4 - .4byte _080493D4 - .4byte _0804941C - .4byte _0804941C - .4byte _0804941C - .4byte _0804941C - .4byte _0804941C - .4byte _0804941C - .4byte _0804941C - .4byte _080494FC - .4byte _08049544 - .4byte _08049564 - .4byte _08049720 - .4byte _0804975C - .4byte _08049778 - .4byte _08049790 - .4byte _080497A8 - .4byte _08049808 - .4byte _08049820 - .4byte _08049468 - .4byte _08049468 - .4byte _08049468 - .4byte _08049468 - .4byte _08049468 - .4byte _08049468 - .4byte _08049468 - .4byte _080494B0 - .4byte _080494B0 - .4byte _080494B0 - .4byte _080494B0 - .4byte _080494B0 - .4byte _080494B0 - .4byte _080494B0 - .4byte _08049864 - .4byte _080498C0 - .4byte _080499B2 - .4byte _080499B2 - .4byte _080499B2 - .4byte _080499B2 - .4byte _080499A4 -_0804905C: - mov r1, r9 - ldrb r0, [r1] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - mov r2, r8 - adds r0, r1, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x14 - bne _08049076 - bl _08049994 -_08049076: - mov r4, r8 - adds r4, 0x50 - adds r0, r1, r4 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0804908A - bl _08049994 -_0804908A: - bl Random - mov r3, r9 - ldrb r1, [r3] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - adds r1, 0x2 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gMoveEffectBS_Ptrs - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _080499B0 - .pool -_080490D0: - mov r4, r9 - ldrb r2, [r4] - movs r4, 0x58 - adds r0, r2, 0 - muls r0, r4 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x27 - bne _08049114 - cmp r5, 0x1 - beq _080490F0 - cmp r6, 0x80 - beq _080490F0 - bl _08049994 -_080490F0: - ldr r0, =gLastUsedAbility - strb r1, [r0] - mov r1, r9 - ldrb r0, [r1] - movs r1, 0x27 - bl RecordAbilityBattle - ldr r1, =gBattlescriptCurrInstr - ldr r0, =BattleScript_FlinchPrevention - str r0, [r1] - bl _080499B2 - .pool -_08049114: - adds r0, r2, 0 - bl BankGetTurnOrder - ldr r1, =gCurrentMoveTurn - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bhi _0804912A - bl _08049994 -_0804912A: - mov r2, r9 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r4 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r1, =gStatusFlagsForMoveEffects - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] - bl _08049994 - .pool -_0804915C: - mov r3, r9 - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - mov r4, r8 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0x70 - ands r0, r1 - cmp r0, 0 - beq _08049178 - bl _08049994 -_08049178: - movs r0, 0x80 - lsls r0, 5 - orrs r1, r0 - str r1, [r2] - ldr r1, =gLockedMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - bl Random - mov r2, r9 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - lsls r1, 4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gMoveEffectBS_Ptrs - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _080499B0 - .pool -_080491D8: - ldr r5, =gBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _08049210 - ldr r4, =gPaydayMoney - ldrh r3, [r4] - ldr r2, =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, r3, r0 - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r3, r0 - bls _08049210 - ldr r3, =0x0000ffff - adds r0, r3, 0 - strh r0, [r4] -_08049210: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gMoveEffectBS_Ptrs - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _080499B0 - .pool -_08049244: - mov r4, r9 - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - mov r1, r8 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0804925A - b _08049994 -_0804925A: - bl Random - ldr r4, =gBattleCommunication - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x3 - strb r0, [r4, 0x3] - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - b _080499B2 - .pool -_0804927C: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - ldr r1, =gLockedMoves - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - ldr r0, =gProtectStructs - ldrb r1, [r2] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x1] - b _08049994 - .pool -_080492C4: - mov r3, r9 - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - mov r4, r8 - adds r4, 0x50 - adds r0, r4 - ldr r5, [r0] - movs r0, 0xE0 - lsls r0, 8 - ands r5, r0 - cmp r5, 0 - beq _080492E0 - b _08049994 -_080492E0: - bl Random - mov r2, r9 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r6 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x3 - lsls r1, 13 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - mov r3, r9 - ldrb r1, [r3] - ldr r2, =gBattleStruct - ldr r0, [r2] - lsls r1, 1 - adds r1, r0 - ldr r6, =gCurrentMove - ldrh r0, [r6] - strb r0, [r1, 0x4] - ldrb r1, [r3] - ldr r0, [r2] - lsls r1, 1 - adds r1, r0 - ldrh r0, [r6] - lsrs r0, 8 - strb r0, [r1, 0x5] - ldrb r1, [r3] - ldr r0, [r2] - adds r1, r0 - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r1, 0x14] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gMoveEffectBS_Ptrs - ldr r2, =gBattleCommunication - ldrb r0, [r2, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4] - strb r5, [r2, 0x5] - ldr r3, =gTrappingMoves - ldrh r0, [r3] - ldrh r4, [r6] - cmp r0, r4 - bne _0804934E - b _080499B2 -_0804934E: - adds r1, r2, 0 - adds r2, r6, 0 -_08049352: - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _08049362 - b _080499B2 -_08049362: - ldrb r0, [r1, 0x5] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - ldrh r4, [r2] - cmp r0, r4 - bne _08049352 - b _080499B2 - .pool -_08049390: - ldr r1, =gBattleMoveDamage - ldr r0, =gHpDealt - ldr r0, [r0] - cmp r0, 0 - bge _0804939C - adds r0, 0x3 -_0804939C: - asrs r0, 2 - str r0, [r1] - cmp r0, 0 - bne _080493A8 - movs r0, 0x1 - str r0, [r1] -_080493A8: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gMoveEffectBS_Ptrs - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _080499B0 - .pool -_080493D4: - ldr r4, =gBattleCommunication - ldrb r1, [r4, 0x3] - adds r1, 0xF2 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x10 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080493F2 - b _08049994 -_080493F2: - ldr r2, =gBattleScripting - ldrb r1, [r4, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_StatUp - b _080499B0 - .pool -_0804941C: - movs r0, 0x70 - negs r0, r0 - ldr r4, =gBattleCommunication - ldrb r1, [r4, 0x3] - adds r1, 0xEB - lsls r1, 24 - lsrs r1, 24 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _0804943C - b _08049994 -_0804943C: - ldr r2, =gBattleScripting - ldrb r1, [r4, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_StatDown - b _080499B0 - .pool -_08049468: - ldr r4, =gBattleCommunication - ldrb r1, [r4, 0x3] - adds r1, 0xDA - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x20 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08049486 - b _08049994 -_08049486: - ldr r2, =gBattleScripting - ldrb r1, [r4, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_StatUp - b _080499B0 - .pool -_080494B0: - movs r0, 0x60 - negs r0, r0 - ldr r4, =gBattleCommunication - ldrb r1, [r4, 0x3] - adds r1, 0xD3 - lsls r1, 24 - lsrs r1, 24 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080494D0 - b _08049994 -_080494D0: - ldr r2, =gBattleScripting - ldrb r1, [r4, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_StatDown - b _080499B0 - .pool -_080494FC: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r2] - ldr r2, =gDisableStructs - mov r3, r9 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x19] - ldr r1, =gLockedMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - b _08049994 - .pool -_08049544: - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 16 -_0804955A: - orrs r0, r1 - str r0, [r2] - b _08049994 - .pool -_08049564: - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 19 - ands r0, r1 - cmp r0, 0 - beq _08049574 - b _08049994 -_08049574: - ldr r6, =gBankAttacker - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080495A8 - ldr r0, [r5] - ldr r1, =0x0a3f0902 - ands r0, r1 - cmp r0, 0 - bne _080495D4 - b _08049994 - .pool -_080495A8: - ldr r0, [r5] - ldr r1, =0x0a3f0902 - ands r0, r1 - cmp r0, 0 - bne _080495D4 - ldr r0, =gWishFutureKnock - adds r0, 0x29 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r3, =gBitTable - ldr r2, =gBattlePartyID - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080495D4 - b _08049994 -_080495D4: - ldr r2, =gBattleMons - ldr r1, =gBankTarget - ldrb r0, [r1] - movs r5, 0x58 - muls r0, r5 - adds r4, r0, r2 - ldrh r0, [r4, 0x2E] - adds r7, r1, 0 - mov r8, r2 - cmp r0, 0 - beq _0804963C - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3C - bne _0804963C - bl b_movescr_stack_push_cursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =BattleScript_NoItemSteal - str r0, [r1] - ldr r1, =gLastUsedAbility - ldrb r0, [r7] - muls r0, r5 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldrb r1, [r1] - bl RecordAbilityBattle - b _080499B2 - .pool -_0804963C: - ldr r4, =gBankAttacker - mov r10, r4 - ldrb r2, [r4] - movs r0, 0x58 - mov r9, r0 - mov r0, r9 - muls r0, r2 - add r0, r8 - ldrh r4, [r0, 0x2E] - cmp r4, 0 - beq _08049654 - b _08049994 -_08049654: - ldrb r0, [r7] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - ldrh r3, [r0, 0x2E] - adds r1, r3, 0 - cmp r1, 0xAF - bne _08049668 - b _08049994 -_08049668: - adds r0, r3, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bhi _08049676 - b _08049994 -_08049676: - cmp r1, 0 - bne _0804967C - b _08049994 -_0804967C: - ldr r5, =gBattleStruct - lsls r0, r2, 1 - adds r0, 0xD0 - ldr r1, [r5] - adds r1, r0 - ldr r2, =gLastUsedItem - strh r3, [r1] - strh r3, [r2] - ldrb r0, [r7] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - add r0, r8 - movs r6, 0 - strh r4, [r0, 0x2E] - ldr r4, =gActiveBank - mov r1, r10 - ldrb r0, [r1] - strb r0, [r4] - str r2, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - mov r2, r10 - ldrb r0, [r2] - bl MarkBufferBankForExecution - ldrb r0, [r7] - strb r0, [r4] - ldrb r0, [r7] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - mov r1, r8 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_ItemSteal - str r0, [r4] - ldrb r0, [r7] - ldr r1, [r5] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r6, [r0] - ldrb r0, [r7] - ldr r1, [r5] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r6, [r0] - b _080499B2 - .pool -_08049720: - ldr r3, =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 19 - orrs r0, r1 - str r0, [r2] - ldr r2, =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, =gBankAttacker - ldrb r1, [r1] - strb r1, [r0, 0x14] - b _08049994 - .pool -_0804975C: - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 20 - b _0804955A - .pool -_08049778: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_AllStatsUp - b _080499B0 - .pool -_08049790: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_RapidSpinAway - b _080499B0 - .pool -_080497A8: - ldr r6, =gBankTarget - ldrb r0, [r6] - movs r2, 0x58 - muls r0, r2 - mov r1, r8 - adds r1, 0x4C - adds r5, r0, r1 - ldr r4, [r5] - movs r0, 0x40 - ands r0, r4 - cmp r0, 0 - bne _080497C2 - b _08049994 -_080497C2: - movs r0, 0x41 - negs r0, r0 - ands r4, r0 - str r4, [r5] - ldr r4, =gActiveBank - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r4] - muls r0, r2 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_TargetPRLZHeal - b _080499B0 - .pool -_08049808: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_AtkDefDown - b _080499B0 - .pool -_08049820: - ldr r4, =gBattleMoveDamage - ldr r0, =gHpDealt - ldr r0, [r0] - movs r1, 0x3 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _08049836 - movs r0, 0x1 - str r0, [r4] -_08049836: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, =gMoveEffectBS_Ptrs - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _080499B0 - .pool -_08049864: - mov r4, r9 - ldrb r0, [r4] - movs r5, 0x58 - muls r0, r5 - mov r4, r8 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0xC0 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08049880 - b _08049994 -_08049880: - movs r0, 0x80 - lsls r0, 5 - orrs r1, r0 - str r1, [r2] - ldr r1, =gLockedMoves - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - bl Random - mov r3, r9 - ldrb r1, [r3] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x1 - ands r1, r0 - adds r1, 0x2 - lsls r1, 10 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - b _080499B2 - .pool -_080498C0: - mov r4, r9 - ldrb r3, [r4] - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - mov r2, r8 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x3C - bne _08049900 - ldrh r0, [r1, 0x2E] - cmp r0, 0 - beq _08049994 - ldr r0, =gLastUsedAbility - strb r2, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB63F - str r0, [r1] - ldrb r0, [r4] - movs r1, 0x3C - bl RecordAbilityBattle - b _080499B2 - .pool -_08049900: - ldrh r0, [r1, 0x2E] - cmp r0, 0 - beq _08049994 - adds r0, r3, 0 - bl GetBankSide - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gLastUsedItem - mov r3, r9 - ldrb r0, [r3] - muls r0, r5 - add r0, r8 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - ldrb r0, [r3] - muls r0, r5 - add r0, r8 - movs r5, 0 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r2, =gWishFutureKnock - adds r2, 0x29 - adds r2, r4, r2 - ldr r3, =gBitTable - ldr r1, =gBattlePartyID - mov r4, r9 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_KnockedOff - str r0, [r4] - mov r1, r9 - ldrb r0, [r1] - ldr r2, =gBattleStruct - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r5, [r0] - mov r3, r9 - ldrb r0, [r3] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r5, [r0] - b _080499B2 - .pool -_08049994: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _080499B2 - .pool -_080499A4: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, =BattleScript_SAtkDown2 -_080499B0: - str r0, [r4] -_080499B2: - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x3] -_080499B8: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end SetMoveEffect - - thumb_func_start atk15_seteffectwithchancetarget -atk15_seteffectwithchancetarget: @ 80499D4 - push {r4,lr} - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x20 - bne _08049A10 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsls r4, r0, 1 - b _08049A20 - .pool -_08049A10: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r4, [r0, 0x5] -_08049A20: - ldr r3, =gBattleCommunication - ldrb r2, [r3, 0x3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _08049A50 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08049A50 - movs r0, 0x7F - ands r0, r2 - strb r0, [r3, 0x3] - b _08049A7E - .pool -_08049A50: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcs _08049A9A - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _08049A9A - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08049A9A - cmp r4, 0x63 - bls _08049A90 -_08049A7E: - movs r0, 0 - movs r1, 0x80 - bl SetMoveEffect - b _08049AA2 - .pool -_08049A90: - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - b _08049AA2 -_08049A9A: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08049AA2: - ldr r0, =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x3] - ldr r0, =gBattleScripting - strb r1, [r0, 0x16] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk15_seteffectwithchancetarget - - thumb_func_start atk16_seteffectprimary -atk16_seteffectprimary: @ 8049AC0 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl SetMoveEffect - pop {r0} - bx r0 - thumb_func_end atk16_seteffectprimary - - thumb_func_start atk17_seteffectsecondary -atk17_seteffectsecondary: @ 8049AD0 - push {lr} - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - pop {r0} - bx r0 - thumb_func_end atk17_seteffectsecondary - - thumb_func_start atk18_status_effect_clear -atk18_status_effect_clear: @ 8049AE0 - push {lr} - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r2, =gActiveBank - strb r0, [r2] - ldr r3, =gBattleCommunication - ldrb r0, [r3, 0x3] - cmp r0, 0x6 - bhi _08049B14 - ldr r1, =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x4C - b _08049B1E - .pool -_08049B14: - ldr r1, =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 -_08049B1E: - adds r2, r1 - ldr r1, =gStatusFlagsForMoveEffects - ldrb r0, [r3, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - ldr r0, =gBattleCommunication - movs r2, 0 - strb r2, [r0, 0x3] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - ldr r0, =gBattleScripting - strb r2, [r0, 0x16] - pop {r0} - bx r0 - .pool - thumb_func_end atk18_status_effect_clear - - thumb_func_start atk19_faint_pokemon -atk19_faint_pokemon: @ 8049B5C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r0, =gBattlescriptCurrInstr - ldr r2, [r0] - ldrb r1, [r2, 0x2] - adds r6, r0, 0 - cmp r1, 0 - beq _08049BE0 - ldrb r0, [r2, 0x1] - bl GetBattleBank - ldr r5, =gActiveBank - strb r0, [r5] - ldr r2, =gHitMarker - ldr r1, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - ands r0, r1 - cmp r0, 0 - bne _08049B94 - b _08049E2C -_08049B94: - ldr r1, [r6] - ldrb r4, [r1, 0x3] - ldrb r0, [r1, 0x4] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x5] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x6] - lsls r0, 24 - orrs r4, r0 - bl b_movescr_stack_pop_cursor - str r4, [r6] - ldrb r0, [r5] - bl GetBankSide - ldr r1, =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r2, [r0] - ldr r1, =0x0000fdff - ands r1, r2 - strh r1, [r0] - b _08049E32 - .pool -_08049BE0: - ldrb r0, [r2, 0x1] - cmp r0, 0x1 - bne _08049C08 - ldr r1, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gBankTarget - ldrb r0, [r0] - mov r9, r0 - ldr r4, =gUnknown_082DA7AA - b _08049C18 - .pool -_08049C08: - ldr r1, =gActiveBank - ldr r0, =gBankTarget - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gBankAttacker - ldrb r0, [r0] - mov r9, r0 - ldr r4, =gUnknown_082DA7B7 -_08049C18: - mov r8, r1 - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - mov r7, r8 - ldrb r3, [r7] - lsls r0, r3, 2 - adds r0, r2 - ldr r2, [r0] - ands r1, r2 - cmp r1, 0 - beq _08049C32 - b _08049E2C -_08049C32: - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08049C42 - b _08049E2C -_08049C42: - ldr r5, =gHitMarker - lsls r1, r2, 28 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - ldr r0, [r6] - adds r0, 0x7 - bl b_movescr_stack_push - str r4, [r6] - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08049CA4 - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r5] - ldr r1, =gBattleResults - ldrb r0, [r1] - cmp r0, 0xFE - bhi _08049C78 - adds r0, 0x1 - strb r0, [r1] -_08049C78: - ldrb r0, [r7] - bl sub_80570F4 - b _08049CCE - .pool -_08049CA4: - ldr r4, =gBattleResults - ldrb r0, [r4, 0x1] - cmp r0, 0xFE - bhi _08049CB0 - adds r0, 0x1 - strb r0, [r4, 0x1] -_08049CB0: - ldr r1, =gBattlePartyID - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x20] -_08049CCE: - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049D0C - ldr r6, =gBattleMons - ldr r0, =gBankAttacker - ldrb r0, [r0] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08049D0C - movs r0, 0x41 - negs r0, r0 - ands r1, r0 - str r1, [r2] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - bl b_movescr_stack_push - ldr r1, =gBattleMoveDamage - mov r0, r9 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x28] - str r0, [r1] - ldr r0, =gUnknown_082DAE3E - str r0, [r4] -_08049D0C: - ldr r1, =gStatuses3 - ldr r6, =gBankTarget - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 7 - ands r0, r1 - cmp r0, 0 - bne _08049D24 - b _08049E32 -_08049D24: - ldr r0, =gHitMarker - ldr r5, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r5, r0 - cmp r5, 0 - beq _08049D34 - b _08049E32 -_08049D34: - ldr r3, =gBankAttacker - mov r8, r3 - ldrb r0, [r3] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r6] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _08049E32 - ldr r0, =gBattleMons - mov r9, r0 - mov r2, r8 - ldrb r1, [r2] - movs r7, 0x58 - adds r2, r1, 0 - muls r2, r7 - adds r0, r2, r0 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08049E32 - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xA5 - beq _08049E32 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, r1, r0 - adds r0, 0x80 - ldrb r4, [r0] - adds r0, r4, r2 - mov r6, r9 - adds r6, 0x24 - adds r0, r6 - strb r5, [r0] - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - bl b_movescr_stack_push - ldr r0, =gUnknown_082DB18D - str r0, [r5] - ldr r5, =gActiveBank - mov r3, r8 - ldrb r0, [r3] - strb r0, [r5] - adds r1, r4, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - lsls r4, 1 - mov r2, r8 - ldrb r0, [r2] - muls r0, r7 - adds r0, r4, r0 - mov r2, r9 - adds r2, 0xC - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - mov r3, r8 - ldrb r0, [r3] - muls r0, r7 - adds r4, r0 - adds r4, r2 - ldrh r0, [r4] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - b _08049E32 - .pool -_08049E2C: - ldr r0, [r6] - adds r0, 0x7 - str r0, [r6] -_08049E32: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk19_faint_pokemon - - thumb_func_start atk1A_faint_animation -atk1A_faint_animation: @ 8049E40 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08049E6A - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x0A_A_A_A - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_08049E6A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk1A_faint_animation - - thumb_func_start atk1B_faint_effects_clear -atk1B_faint_effects_clear: @ 8049E7C - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _08049EE8 - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _08049EB4 - ldr r2, =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08049EDC -_08049EB4: - ldr r1, =gBattleMons - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - str r5, [r0] - ldrb r0, [r4] - muls r0, r2 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08049EDC: - bl sub_803A75C - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08049EE8: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk1B_faint_effects_clear - - thumb_func_start atk1C_jumpifstatus -atk1C_jumpifstatus: @ 8049F04 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - ldrb r4, [r2, 0x2] - ldrb r1, [r2, 0x3] - lsls r1, 8 - adds r4, r1 - ldrb r1, [r2, 0x4] - lsls r1, 16 - adds r4, r1 - ldrb r1, [r2, 0x5] - lsls r1, 24 - adds r4, r1 - ldrb r3, [r2, 0x6] - ldrb r1, [r2, 0x7] - lsls r1, 8 - adds r3, r1 - ldrb r1, [r2, 0x8] - lsls r1, 16 - adds r3, r1 - ldrb r1, [r2, 0x9] - lsls r1, 24 - adds r3, r1 - ldr r2, =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08049F68 - adds r0, r1, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08049F68 - str r3, [r5] - b _08049F70 - .pool -_08049F68: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] -_08049F70: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk1C_jumpifstatus - - thumb_func_start atk1D_jumpifstatus2 -atk1D_jumpifstatus2: @ 8049F7C - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - ldrb r4, [r2, 0x2] - ldrb r1, [r2, 0x3] - lsls r1, 8 - adds r4, r1 - ldrb r1, [r2, 0x4] - lsls r1, 16 - adds r4, r1 - ldrb r1, [r2, 0x5] - lsls r1, 24 - adds r4, r1 - ldrb r3, [r2, 0x6] - ldrb r1, [r2, 0x7] - lsls r1, 8 - adds r3, r1 - ldrb r1, [r2, 0x8] - lsls r1, 16 - adds r3, r1 - ldrb r1, [r2, 0x9] - lsls r1, 24 - adds r3, r1 - ldr r2, =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08049FE0 - adds r0, r1, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08049FE0 - str r3, [r5] - b _08049FE8 - .pool -_08049FE0: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] -_08049FE8: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk1D_jumpifstatus2 - - thumb_func_start atk1E_jumpifability -atk1E_jumpifability: @ 8049FF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r6, =gBattlescriptCurrInstr - ldr r2, [r6] - ldrb r5, [r2, 0x2] - mov r8, r5 - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 - adds r7, r1, r0 - ldrb r0, [r2, 0x1] - cmp r0, 0x8 - bne _0804A054 - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xD - adds r2, r5, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0804A0C8 - ldr r1, =gLastUsedAbility - strb r5, [r1] - str r7, [r6] - subs r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - ldrb r1, [r1] - b _0804A0B0 - .pool -_0804A054: - cmp r0, 0x9 - bne _0804A08C - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r2, r5, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0804A0C8 - ldr r1, =gLastUsedAbility - strb r5, [r1] - str r7, [r6] - subs r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - ldrb r1, [r1] - b _0804A0B0 - .pool -_0804A08C: - ldrb r0, [r2, 0x1] - bl GetBattleBank - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, r8 - bne _0804A0C8 - ldr r0, =gLastUsedAbility - strb r1, [r0] - str r7, [r6] - ldrb r1, [r0] - adds r0, r4, 0 -_0804A0B0: - bl RecordAbilityBattle - ldr r0, =gBattleScripting - strb r4, [r0, 0x15] - b _0804A0CE - .pool -_0804A0C8: - ldr r0, [r6] - adds r0, 0x7 - str r0, [r6] -_0804A0CE: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk1E_jumpifability - - thumb_func_start atk1F_jumpifsideaffecting -atk1F_jumpifsideaffecting: @ 804A0DC - push {r4-r6,lr} - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r4, [r0, 0x1] - cmp r4, 0x1 - bne _0804A0FC - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - b _0804A106 - .pool -_0804A0FC: - ldr r0, =gBankTarget - ldrb r0, [r0] - bl GetBankIdentity - movs r4, 0x1 -_0804A106: - ands r4, r0 - ldr r6, =gBattlescriptCurrInstr - ldr r3, [r6] - ldrb r2, [r3, 0x2] - ldrb r0, [r3, 0x3] - lsls r0, 8 - orrs r2, r0 - ldrb r1, [r3, 0x4] - ldrb r0, [r3, 0x5] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x7] - lsls r0, 24 - adds r5, r1, r0 - ldr r1, =gSideAffecting - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0804A148 - str r5, [r6] - b _0804A14E - .pool -_0804A148: - adds r0, r3, 0 - adds r0, 0x8 - str r0, [r6] -_0804A14E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk1F_jumpifsideaffecting - - thumb_func_start atk20_jumpifstat -atk20_jumpifstat: @ 804A154 - push {r4,r5,lr} - movs r5, 0 - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gBattleMons - ldr r3, [r4] - movs r1, 0x58 - muls r0, r1 - ldrb r1, [r3, 0x3] - adds r0, r1 - adds r2, 0x18 - adds r0, r2 - ldrb r2, [r0] - ldrb r0, [r3, 0x2] - cmp r0, 0x5 - bhi _0804A212 - lsls r0, 2 - ldr r1, =_0804A194 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804A194: - .4byte _0804A1AC - .4byte _0804A1BC - .4byte _0804A1CC - .4byte _0804A1DC - .4byte _0804A1EC - .4byte _0804A200 -_0804A1AC: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bne _0804A212 - b _0804A20C - .pool -_0804A1BC: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - beq _0804A212 - b _0804A20C - .pool -_0804A1CC: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bls _0804A212 - b _0804A20C - .pool -_0804A1DC: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bcs _0804A212 - b _0804A20C - .pool -_0804A1EC: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - ands r2, r0 - cmp r2, 0 - beq _0804A212 - b _0804A20C - .pool -_0804A200: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - ands r2, r0 - cmp r2, 0 - bne _0804A212 -_0804A20C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0804A212: - cmp r5, 0 - beq _0804A238 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - b _0804A240 - .pool -_0804A238: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x9 - str r0, [r1] -_0804A240: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk20_jumpifstat - - thumb_func_start atk21_jumpifstatus3 -atk21_jumpifstatus3: @ 804A24C - push {r4-r6,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r5, =gActiveBank - strb r0, [r5] - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - adds r6, r1, r0 - ldrb r1, [r2, 0x7] - ldrb r0, [r2, 0x8] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x9] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0xA] - lsls r0, 24 - adds r3, r1, r0 - ldrb r0, [r2, 0x6] - cmp r0, 0 - beq _0804A2AC - ldr r0, =gStatuses3 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - ands r0, r6 - cmp r0, 0 - bne _0804A2C4 - b _0804A2BC - .pool -_0804A2AC: - ldr r0, =gStatuses3 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - ands r0, r6 - cmp r0, 0 - beq _0804A2C4 -_0804A2BC: - str r3, [r4] - b _0804A2CA - .pool -_0804A2C4: - adds r0, r2, 0 - adds r0, 0xB - str r0, [r4] -_0804A2CA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk21_jumpifstatus3 - - thumb_func_start atk22_jumpiftype -atk22_jumpiftype: @ 804A2D0 - push {r4-r6,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldrb r5, [r3, 0x2] - ldrb r2, [r3, 0x3] - ldrb r1, [r3, 0x4] - lsls r1, 8 - adds r2, r1 - ldrb r1, [r3, 0x5] - lsls r1, 16 - adds r2, r1 - ldrb r1, [r3, 0x6] - lsls r1, 24 - adds r6, r2, r1 - ldr r2, =gBattleMons - movs r1, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r5 - beq _0804A314 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r5 - bne _0804A320 -_0804A314: - str r6, [r4] - b _0804A324 - .pool -_0804A320: - adds r0, r3, 0x7 - str r0, [r4] -_0804A324: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk22_jumpiftype - - thumb_func_start atk23_getexp -atk23_getexp: @ 804A32C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x50 - mov r9, r0 - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gBank1 - strb r0, [r1] - ldr r2, =gUnknown_020243FE - movs r1, 0x2 - ands r1, r0 - lsls r1, 24 - lsrs r1, 25 - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x1C] - cmp r0, 0x6 - bls _0804A368 - bl _0804ACB2 -_0804A368: - lsls r0, 2 - ldr r1, =_0804A38C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804A38C: - .4byte _0804A3A8 - .4byte _0804A414 - .4byte _0804A52E - .4byte _0804A850 - .4byte _0804A954 - .4byte _0804AC40 - .4byte _0804AC88 -_0804A3A8: - ldr r4, =gBank1 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804A3BC - bl _0804AC7C -_0804A3BC: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x063f0982 - ands r0, r1 - cmp r0, 0 - beq _0804A3CC - bl _0804AC7C -_0804A3CC: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1C] - adds r0, 0x1 - strb r0, [r1, 0x1C] - ldr r0, =gBattleStruct - ldr r2, [r0] - adds r2, 0xDF - ldr r3, =gBitTable - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - bl _0804ACB2 - .pool -_0804A414: - movs r5, 0 - movs r7, 0 -_0804A418: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804A486 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0804A486 - ldr r0, =gBitTable - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _0804A44C - adds r5, 0x1 -_0804A44C: - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0804A478 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x00003226 - adds r0, r2 - ldrb r4, [r0] - b _0804A480 - .pool -_0804A478: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 -_0804A480: - cmp r4, 0x19 - bne _0804A486 - adds r6, 0x1 -_0804A486: - adds r7, 0x1 - cmp r7, 0x5 - ble _0804A418 - ldr r3, =gBaseStats - ldr r2, =gBattleMons - ldr r0, =gBank1 - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x9] - adds r1, 0x2A - ldrb r0, [r1] - muls r0, r2 - movs r1, 0x7 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r6, 0 - beq _0804A4FC - lsrs r4, r0, 17 - adds r0, r4, 0 - adds r1, r5, 0 - bl __divsi3 - mov r1, r9 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _0804A4D2 - movs r0, 0x1 - strh r0, [r1] -_0804A4D2: - ldr r5, =gUnknown_02024402 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - strh r0, [r5] - lsls r0, 16 - cmp r0, 0 - bne _0804A516 - movs r0, 0x1 - strh r0, [r5] - b _0804A516 - .pool -_0804A4FC: - adds r0, r1, 0 - adds r1, r5, 0 - bl __divsi3 - mov r2, r9 - strh r0, [r2] - lsls r0, 16 - cmp r0, 0 - bne _0804A512 - movs r0, 0x1 - strh r0, [r2] -_0804A512: - ldr r0, =gUnknown_02024402 - strh r6, [r0] -_0804A516: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1C] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1, 0x1C] - ldr r1, =gBattleStruct - ldr r0, [r1] - strb r2, [r0, 0x10] - ldr r0, [r1] - adds r0, 0x53 - mov r4, r8 - strb r4, [r0] -_0804A52E: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0804A538 - b _0804ACB2 -_0804A538: - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0804A57C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003226 - adds r0, r1 - ldrb r4, [r0] - b _0804A584 - .pool -_0804A57C: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 -_0804A584: - ldr r5, =gBattleStruct - cmp r4, 0x19 - beq _0804A5AC - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x53 - ldrb r0, [r1] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - bne _0804A5AC - lsrs r0, 1 - strb r0, [r1] - ldr r1, =gBattleScripting - b _0804A5D0 - .pool -_0804A5AC: - ldr r0, [r5] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - bne _0804A5E8 - ldr r1, [r5] - adds r1, 0x53 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldr r1, =gBattleScripting - movs r2, 0 -_0804A5D0: - movs r0, 0x5 - strb r0, [r1, 0x1C] - ldr r0, =gBattleMoveDamage - str r2, [r0] - b _0804ACB2 - .pool -_0804A5E8: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0804A616 - ldr r0, =gBattleMons - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0804A616 - ldr r0, [r5] - ldrb r0, [r0, 0x12] - cmp r0, 0 - bne _0804A616 - bl sub_805EA60 - ldr r0, =0x00000161 - bl PlayBGM - ldr r1, [r5] - ldrb r0, [r1, 0x12] - adds r0, 0x1 - strb r0, [r1, 0x12] -_0804A616: - ldr r5, =gBattleStruct - ldr r0, [r5] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0804A630 - b _0804A824 -_0804A630: - ldr r0, [r5] - adds r0, 0x53 - ldrb r0, [r0] - movs r3, 0x1 - ands r3, r0 - cmp r3, 0 - beq _0804A664 - ldr r1, =gBattleMoveDamage - mov r2, r9 - ldrh r0, [r2] - str r0, [r1] - mov r9, r1 - b _0804A66A - .pool -_0804A664: - ldr r0, =gBattleMoveDamage - str r3, [r0] - mov r9, r0 -_0804A66A: - cmp r4, 0x19 - bne _0804A67A - ldr r0, =gUnknown_02024402 - ldrh r1, [r0] - mov r2, r9 - ldr r0, [r2] - adds r0, r1 - str r0, [r2] -_0804A67A: - cmp r4, 0x28 - bne _0804A68E - mov r4, r9 - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] -_0804A68E: - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0804A6AA - ldr r4, =gBattleMoveDamage - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] -_0804A6AA: - ldr r4, =gBattleStruct - ldr r0, [r4] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - bl IsTradedMon - lsls r0, 24 - cmp r0, 0 - beq _0804A714 - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _0804A6F8 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - cmp r0, 0x2 - bls _0804A6F8 - ldr r7, =0x00000149 - ldr r0, =gBattleMoveDamage - mov r9, r0 - b _0804A71A - .pool -_0804A6F8: - ldr r4, =gBattleMoveDamage - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - movs r7, 0xA5 - lsls r7, 1 - mov r9, r4 - b _0804A71A - .pool -_0804A714: - ldr r7, =0x00000149 - ldr r1, =gBattleMoveDamage - mov r9, r1 -_0804A71A: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0804A786 - ldr r0, =gBattlePartyID - ldr r1, =gBattleStruct - ldr r4, [r1] - ldrh r0, [r0, 0x4] - adds r5, r1, 0 - ldr r3, =gBitTable - ldr r2, =gAbsentBankFlags - ldrb r1, [r4, 0x10] - cmp r0, r1 - bne _0804A76C - ldrb r1, [r2] - ldr r0, [r3, 0x8] - ands r1, r0 - cmp r1, 0 - bne _0804A76C - adds r1, r4, 0 - adds r1, 0x8F - movs r0, 0x2 - strb r0, [r1] - b _0804A78E - .pool -_0804A76C: - ldrb r2, [r2] - ldr r0, [r3] - ands r2, r0 - cmp r2, 0 - bne _0804A77E - ldr r0, [r5] - adds r0, 0x8F - strb r2, [r0] - b _0804A78E -_0804A77E: - ldr r0, [r5] - adds r0, 0x8F - movs r1, 0x2 - b _0804A78C -_0804A786: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x8F -_0804A78C: - strb r1, [r0] -_0804A78E: - ldr r1, =gBattleTextBuff1 - movs r2, 0 - mov r12, r2 - movs r3, 0xFD - strb r3, [r1] - movs r5, 0x4 - strb r5, [r1, 0x1] - ldr r6, =gBattleStruct - ldr r2, [r6] - movs r4, 0x8F - adds r4, r2 - mov r8, r4 - ldrb r0, [r4] - strb r0, [r1, 0x2] - ldrb r0, [r2, 0x10] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattleTextBuff2 - strb r3, [r1] - mov r0, r12 - strb r0, [r1, 0x1] - strb r7, [r1, 0x2] - movs r4, 0xFF - lsls r4, 8 - ands r7, r4 - asrs r0, r7, 8 - strb r0, [r1, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x4] - ldr r1, =gBattleTextBuff3 - strb r3, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - mov r0, r9 - ldr r2, [r0] - strb r2, [r1, 0x4] - adds r0, r2, 0 - ands r0, r4 - asrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - lsls r0, 16 - ands r0, r2 - asrs r0, 16 - strb r0, [r1, 0x6] - lsrs r2, 24 - strb r2, [r1, 0x7] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x8] - mov r2, r8 - ldrb r1, [r2] - movs r0, 0xD - bl PrepareStringBattle - ldr r0, [r6] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r3, =gBattleMons - ldr r1, =gBank1 - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r1, r3 - ldrh r1, [r1] - bl MonGainEVs -_0804A824: - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, 0x53 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - b _0804A92A - .pool -_0804A850: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - beq _0804A85A - b _0804ACB2 -_0804A85A: - ldr r1, =gBattleBufferB - ldr r7, =gBattleStruct - ldr r0, [r7] - adds r0, 0x8F - ldrb r0, [r0] - lsls r0, 9 - adds r0, r1 - strb r2, [r0] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - movs r6, 0x64 - muls r0, r6 - ldr r5, =gPlayerParty - adds r0, r5 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0804A92A - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _0804A92A - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3A - bl GetMonData - ldr r4, =gBattleResources - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3B - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x2] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3C - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x4] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3D - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x6] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3E - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x8] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3F - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0xA] - ldr r4, =gActiveBank - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x8F - ldrb r0, [r0] - strb r0, [r4] - ldrb r1, [r1, 0x10] - ldr r0, =gBattleMoveDamage - ldrh r2, [r0] - movs r0, 0 - bl dp01_build_cmdbuf_x19_a_bb - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804A92A: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1C] - adds r0, 0x1 - strb r0, [r1, 0x1C] - b _0804ACB2 - .pool -_0804A954: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0804A95E - b _0804ACB2 -_0804A95E: - ldr r1, =gActiveBank - ldr r0, =gBattleStruct - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x8F - ldrb r0, [r0] - strb r0, [r1] - ldr r3, =gBattleBufferB - ldrb r2, [r1] - lsls r1, r2, 9 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0x21 - beq _0804A97C - b _0804AC28 -_0804A97C: - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0xB - beq _0804A988 - b _0804AC28 -_0804A988: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0804A9B2 - ldr r0, =gBattlePartyID - lsls r1, r2, 1 - adds r1, r0 - ldrh r0, [r1] - ldrb r4, [r4, 0x10] - cmp r0, r4 - bne _0804A9B2 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - adds r1, r2, 0 - bl sub_805E990 -_0804A9B2: - ldr r1, =gBattleTextBuff1 - movs r3, 0xFD - strb r3, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r6, =gActiveBank - ldrb r0, [r6] - strb r0, [r1, 0x2] - ldr r4, =gBattleStruct - mov r9, r4 - ldr r2, [r4] - ldrb r0, [r2, 0x10] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r4, =gBattleTextBuff2 - strb r3, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - movs r0, 0x3 - strb r0, [r4, 0x3] - ldrb r0, [r2, 0x10] - movs r1, 0x64 - mov r8, r1 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldr r7, =gPlayerParty - adds r0, r7 - movs r1, 0x38 - bl GetMonData - strb r0, [r4, 0x4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x5] - bl b_movescr_stack_push_cursor - ldr r2, =gUnknown_03005D54 - ldr r1, =gBitTable - mov r4, r9 - ldr r5, [r4] - ldrb r0, [r5, 0x10] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DABBD - str r0, [r1] - ldr r4, =gBattleMoveDamage - ldr r2, =gBattleBufferB - ldrb r1, [r6] - lsls r1, 9 - adds r0, r2, 0x2 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x3 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - str r3, [r4] - ldrb r0, [r5, 0x10] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0 - bl AdjustFriendship - ldr r1, =gBattlePartyID - mov r2, r9 - ldr r0, [r2] - ldrb r2, [r0, 0x10] - ldrh r0, [r1] - cmp r0, r2 - bne _0804AB1E - ldr r4, =gBattleMons - ldrh r0, [r4, 0x28] - cmp r0, 0 - beq _0804AB1E - mov r0, r8 - muls r0, r2 - adds r0, r7 - movs r1, 0x38 - bl GetMonData - adds r1, r4, 0 - adds r1, 0x2A - strb r0, [r1] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x39 - bl GetMonData - strh r0, [r4, 0x28] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3A - bl GetMonData - strh r0, [r4, 0x2C] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3B - bl GetMonData - strh r0, [r4, 0x2] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3C - bl GetMonData - strh r0, [r4, 0x4] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3E - bl GetMonData - strh r0, [r4, 0x8] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3F - bl GetMonData - strh r0, [r4, 0xA] -_0804AB1E: - ldr r0, =gBattlePartyID - ldr r7, =gBattleStruct - ldr r1, [r7] - ldrb r2, [r1, 0x10] - ldrh r0, [r0, 0x4] - cmp r0, r2 - beq _0804AB2E - b _0804AC2E -_0804AB2E: - ldr r6, =gBattleMons - movs r4, 0xD8 - adds r4, r6 - mov r8, r4 - ldrh r0, [r4] - cmp r0, 0 - beq _0804AC2E - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804AC2E - movs r5, 0x64 - adds r0, r2, 0 - muls r0, r5 - ldr r4, =gPlayerParty - adds r0, r4 - movs r1, 0x38 - bl GetMonData - adds r1, r6, 0 - adds r1, 0xDA - strb r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - mov r1, r8 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3A - bl GetMonData - adds r1, r6, 0 - adds r1, 0xDC - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3B - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB2 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3C - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB4 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3D - bl GetMonData - movs r2, 0xB6 - adds r2, r6 - mov r8, r2 - strh r0, [r2] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3D - bl GetMonData - mov r1, r8 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3E - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB8 - strh r0, [r1] - b _0804AC2E - .pool -_0804AC28: - ldr r1, =gBattleMoveDamage - movs r0, 0 - str r0, [r1] -_0804AC2E: - ldr r1, =gBattleScripting - movs r0, 0x5 - strb r0, [r1, 0x1C] - b _0804ACB2 - .pool -_0804AC40: - ldr r0, =gBattleMoveDamage - ldr r0, [r0] - cmp r0, 0 - beq _0804AC58 - ldr r1, =gBattleScripting - movs r0, 0x3 - strb r0, [r1, 0x1C] - b _0804ACB2 - .pool -_0804AC58: - ldr r2, =gBattleStruct - ldr r1, [r2] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, [r2] - ldrb r0, [r0, 0x10] - cmp r0, 0x5 - bhi _0804AC7C - ldr r1, =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0x1C] - b _0804ACB2 - .pool -_0804AC7C: - ldr r1, =gBattleScripting - movs r0, 0x6 - strb r0, [r1, 0x1C] - b _0804ACB2 - .pool -_0804AC88: - ldr r0, =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _0804ACB2 - ldr r4, =gBattleMons - ldr r2, =gBank1 - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - adds r0, r4 - movs r3, 0 - strh r5, [r0, 0x2E] - ldrb r0, [r2] - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - strb r3, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0804ACB2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk23_getexp - - thumb_func_start atk24 -atk24: @ 804ACD0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0804ACE2 - b _0804AF22 -_0804ACE2: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _0804AD48 - ldr r0, =gPartnerTrainerId - ldrh r1, [r0] - ldr r0, =0x00000c03 - cmp r1, r0 - bne _0804AD48 - movs r5, 0 -_0804ACFC: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804AD2C - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804AD2C - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_0804AD2C: - adds r5, 0x1 - cmp r5, 0x2 - ble _0804ACFC - b _0804ADA8 - .pool -_0804AD48: - movs r5, 0 -_0804AD4A: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804ADA2 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804ADA2 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0804AD94 - ldr r0, =gBattleStruct - ldr r0, [r0] - movs r1, 0xA8 - lsls r1, 2 - adds r0, r1 - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0804ADA2 -_0804AD94: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_0804ADA2: - adds r5, 0x1 - cmp r5, 0x5 - ble _0804AD4A -_0804ADA8: - cmp r6, 0 - bne _0804ADB6 - ldr r0, =gBattleOutcome - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_0804ADB6: - movs r6, 0 - movs r5, 0 -_0804ADBA: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804AE10 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804AE10 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0804AE02 - ldr r0, =gBattleStruct - ldr r0, [r0] - ldr r1, =0x000002a1 - adds r0, r1 - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0804AE10 -_0804AE02: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_0804AE10: - adds r5, 0x1 - cmp r5, 0x5 - ble _0804ADBA - ldr r2, =gBattleOutcome - cmp r6, 0 - bne _0804AE24 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_0804AE24: - ldrb r0, [r2] - cmp r0, 0 - bne _0804AF1A - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r2, =0x02000002 - ands r1, r2 - mov r8, r0 - cmp r1, 0 - beq _0804AF1A - movs r3, 0 - movs r5, 0 - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - mov r12, r0 - ldr r7, =gBattlescriptCurrInstr - cmp r3, r1 - bge _0804AE70 - ldr r0, =gHitMarker - movs r6, 0x80 - lsls r6, 21 - ldr r4, [r0] - adds r2, r1, 0 - ldr r1, =gSpecialStatuses -_0804AE54: - adds r0, r6, 0 - lsls r0, r5 - ands r0, r4 - cmp r0, 0 - beq _0804AE68 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804AE68 - adds r3, 0x1 -_0804AE68: - adds r1, 0x28 - adds r5, 0x2 - cmp r5, r2 - blt _0804AE54 -_0804AE70: - movs r2, 0 - movs r5, 0x1 - mov r4, r12 - ldrb r1, [r4] - cmp r5, r1 - bge _0804AEAA - ldr r0, =gHitMarker - movs r4, 0x80 - lsls r4, 21 - mov r12, r4 - ldr r6, [r0] - ldr r0, =gSpecialStatuses - adds r4, r1, 0 - adds r1, r0, 0 - adds r1, 0x14 -_0804AE8E: - mov r0, r12 - lsls r0, r5 - ands r0, r6 - cmp r0, 0 - beq _0804AEA2 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804AEA2 - adds r2, 0x1 -_0804AEA2: - adds r1, 0x28 - adds r5, 0x2 - cmp r5, r4 - blt _0804AE8E -_0804AEAA: - mov r1, r8 - ldr r0, [r1] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804AEF0 - adds r0, r2, r3 - cmp r0, 0x1 - bgt _0804AEF8 - b _0804AF12 - .pool -_0804AEF0: - cmp r2, 0 - beq _0804AF12 - cmp r3, 0 - beq _0804AF12 -_0804AEF8: - ldr r2, [r7] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r7] - b _0804AF22 -_0804AF12: - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - b _0804AF22 -_0804AF1A: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0804AF22: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk24 - - thumb_func_start sub_804AF30 -sub_804AF30: @ 804AF30 - ldr r1, =gBattleMoveFlags - movs r0, 0 - strb r0, [r1] - ldr r0, =gBattleScripting - movs r2, 0 - movs r1, 0x1 - strb r1, [r0, 0xE] - ldr r0, =gCritMultiplier - strb r1, [r0] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x3] - strb r2, [r0, 0x6] - ldr r2, =gHitMarker - ldr r0, [r2] - subs r1, 0x42 - ands r0, r1 - ldr r1, =0xffffbfff - ands r0, r1 - str r0, [r2] - bx lr - .pool - thumb_func_end sub_804AF30 - - thumb_func_start atk25_move_values_cleanup -atk25_move_values_cleanup: @ 804AF70 - push {lr} - bl sub_804AF30 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk25_move_values_cleanup - - thumb_func_start atk26_set_multihit -atk26_set_multihit: @ 804AF88 - ldr r3, =gMultiHitCounter - ldr r2, =gBattlescriptCurrInstr - ldr r0, [r2] - ldrb r1, [r0, 0x1] - strb r1, [r3] - adds r0, 0x2 - str r0, [r2] - bx lr - .pool - thumb_func_end atk26_set_multihit - - thumb_func_start atk27_decrement_multihit -atk27_decrement_multihit: @ 804AFA0 - push {lr} - ldr r1, =gMultiHitCounter - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _0804AFC4 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0804AFDE - .pool -_0804AFC4: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r3] -_0804AFDE: - pop {r0} - bx r0 - .pool - thumb_func_end atk27_decrement_multihit - - thumb_func_start atk28_goto -atk28_goto: @ 804AFE8 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - bx lr - .pool - thumb_func_end atk28_goto - - thumb_func_start atk29_jumpifbyte -atk29_jumpifbyte: @ 804B008 - push {r4-r6,lr} - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r2, [r1, 0x7] - ldrb r0, [r1, 0x8] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x9] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xA] - lsls r0, 24 - adds r2, r0 - adds r1, 0xB - str r1, [r3] - cmp r6, 0x5 - bhi _0804B0A0 - lsls r0, r6, 2 - ldr r1, =_0804B054 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804B054: - .4byte _0804B06C - .4byte _0804B074 - .4byte _0804B07C - .4byte _0804B084 - .4byte _0804B08C - .4byte _0804B096 -_0804B06C: - ldrb r0, [r5] - cmp r0, r4 - bne _0804B0A0 - b _0804B09E -_0804B074: - ldrb r0, [r5] - cmp r0, r4 - beq _0804B0A0 - b _0804B09E -_0804B07C: - ldrb r0, [r5] - cmp r0, r4 - bls _0804B0A0 - b _0804B09E -_0804B084: - ldrb r0, [r5] - cmp r0, r4 - bcs _0804B0A0 - b _0804B09E -_0804B08C: - ldrb r0, [r5] - ands r4, r0 - cmp r4, 0 - beq _0804B0A0 - b _0804B09E -_0804B096: - ldrb r0, [r5] - ands r4, r0 - cmp r4, 0 - bne _0804B0A0 -_0804B09E: - str r2, [r3] -_0804B0A0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk29_jumpifbyte - - thumb_func_start atk2A_jumpifhalfword -atk2A_jumpifhalfword: @ 804B0A8 - push {r4-r6,lr} - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r0, [r1, 0x7] - lsls r0, 8 - orrs r4, r0 - ldrb r2, [r1, 0x8] - ldrb r0, [r1, 0x9] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xA] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xB] - lsls r0, 24 - adds r2, r0 - adds r1, 0xC - str r1, [r3] - cmp r6, 0x5 - bhi _0804B148 - lsls r0, r6, 2 - ldr r1, =_0804B0FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804B0FC: - .4byte _0804B114 - .4byte _0804B11C - .4byte _0804B124 - .4byte _0804B12C - .4byte _0804B134 - .4byte _0804B13E -_0804B114: - ldrh r0, [r5] - cmp r0, r4 - bne _0804B148 - b _0804B146 -_0804B11C: - ldrh r0, [r5] - cmp r0, r4 - beq _0804B148 - b _0804B146 -_0804B124: - ldrh r0, [r5] - cmp r0, r4 - bls _0804B148 - b _0804B146 -_0804B12C: - ldrh r0, [r5] - cmp r0, r4 - bcs _0804B148 - b _0804B146 -_0804B134: - ldrh r0, [r5] - ands r4, r0 - cmp r4, 0 - beq _0804B148 - b _0804B146 -_0804B13E: - ldrh r0, [r5] - ands r4, r0 - cmp r4, 0 - bne _0804B148 -_0804B146: - str r2, [r3] -_0804B148: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk2A_jumpifhalfword - - thumb_func_start atk2B_jumpifword -atk2B_jumpifword: @ 804B150 - push {r4-r6,lr} - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r0, [r1, 0x7] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x8] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x9] - lsls r0, 24 - orrs r4, r0 - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - adds r2, r0 - adds r1, 0xE - str r1, [r3] - cmp r6, 0x5 - bhi _0804B1FC - lsls r0, r6, 2 - ldr r1, =_0804B1B0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804B1B0: - .4byte _0804B1C8 - .4byte _0804B1D0 - .4byte _0804B1D8 - .4byte _0804B1E0 - .4byte _0804B1E8 - .4byte _0804B1F2 -_0804B1C8: - ldr r0, [r5] - cmp r0, r4 - bne _0804B1FC - b _0804B1FA -_0804B1D0: - ldr r0, [r5] - cmp r0, r4 - beq _0804B1FC - b _0804B1FA -_0804B1D8: - ldr r0, [r5] - cmp r0, r4 - bls _0804B1FC - b _0804B1FA -_0804B1E0: - ldr r0, [r5] - cmp r0, r4 - bcs _0804B1FC - b _0804B1FA -_0804B1E8: - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - beq _0804B1FC - b _0804B1FA -_0804B1F2: - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - bne _0804B1FC -_0804B1FA: - str r2, [r3] -_0804B1FC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk2B_jumpifword - - thumb_func_start atk2C_jumpifarrayequal -atk2C_jumpifarrayequal: @ 804B204 - push {r4-r7,lr} - ldr r2, =gBattlescriptCurrInstr - ldr r3, [r2] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r5, r1, r0 - ldrb r1, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x8] - lsls r0, 24 - adds r4, r1, r0 - ldrb r6, [r3, 0x9] - ldrb r1, [r3, 0xA] - ldrb r0, [r3, 0xB] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0xC] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0xD] - lsls r0, 24 - adds r1, r0 - mov r12, r1 - movs r1, 0 - cmp r1, r6 - bcs _0804B27C - ldrb r0, [r5] - ldrb r7, [r4] - cmp r0, r7 - beq _0804B260 - adds r0, r3, 0 - b _0804B278 - .pool -_0804B260: - adds r5, 0x1 - adds r4, 0x1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcs _0804B27C - ldrb r0, [r5] - ldrb r3, [r4] - cmp r0, r3 - beq _0804B260 - ldr r0, [r2] -_0804B278: - adds r0, 0xE - str r0, [r2] -_0804B27C: - cmp r1, r6 - bne _0804B284 - mov r7, r12 - str r7, [r2] -_0804B284: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk2C_jumpifarrayequal - - thumb_func_start atk2D_jumpifarraynotequal -atk2D_jumpifarraynotequal: @ 804B28C - push {r4-r7,lr} - movs r7, 0 - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r5, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r4, r2, r0 - ldrb r6, [r1, 0x9] - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - adds r2, r0 - mov r12, r2 - movs r1, 0 - cmp r7, r6 - bcs _0804B2F6 -_0804B2DA: - ldrb r0, [r5] - ldrb r2, [r4] - cmp r0, r2 - bne _0804B2E8 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_0804B2E8: - adds r5, 0x1 - adds r4, 0x1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcc _0804B2DA -_0804B2F6: - cmp r7, r6 - beq _0804B304 - mov r0, r12 - b _0804B308 - .pool -_0804B304: - ldr r0, [r3] - adds r0, 0xE -_0804B308: - str r0, [r3] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk2D_jumpifarraynotequal - - thumb_func_start atk2E_setbyte -atk2E_setbyte: @ 804B310 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r2, 0x5] - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .pool - thumb_func_end atk2E_setbyte - - thumb_func_start atk2F_addbyte -atk2F_addbyte: @ 804B338 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r2, 0x5] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .pool - thumb_func_end atk2F_addbyte - - thumb_func_start atk30_subbyte -atk30_subbyte: @ 804B364 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r1] - ldrb r2, [r2, 0x5] - subs r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .pool - thumb_func_end atk30_subbyte - - thumb_func_start atk31_copyarray -atk31_copyarray: @ 804B390 - push {r4-r6,lr} - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r6, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x9] - movs r2, 0 - cmp r2, r4 - bge _0804B3D4 -_0804B3C6: - adds r0, r6, r2 - adds r1, r5, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r4 - blt _0804B3C6 -_0804B3D4: - ldr r0, [r3] - adds r0, 0xA - str r0, [r3] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk31_copyarray - - thumb_func_start atk32_copyarray_withindex -atk32_copyarray_withindex: @ 804B3E4 - push {r4-r7,lr} - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r7, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r6, r2, r0 - ldrb r2, [r1, 0x9] - ldrb r0, [r1, 0xA] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xB] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0xD] - movs r2, 0 - cmp r2, r4 - bge _0804B440 -_0804B42E: - adds r0, r7, r2 - ldrb r1, [r5] - adds r1, r2, r1 - adds r1, r6, r1 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r4 - blt _0804B42E -_0804B440: - ldr r0, [r3] - adds r0, 0xE - str r0, [r3] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk32_copyarray_withindex - - thumb_func_start atk33_orbyte -atk33_orbyte: @ 804B450 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r1] - ldrb r2, [r2, 0x5] - orrs r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .pool - thumb_func_end atk33_orbyte - - thumb_func_start atk34_orhalfword -atk34_orhalfword: @ 804B47C - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r3, [r4] - ldrb r2, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r2, r0 - ldrb r1, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2] - orrs r1, r0 - strh r1, [r2] - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk34_orhalfword - - thumb_func_start atk35_orword -atk35_orword: @ 804B4B4 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r3, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r3, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r3, r0 - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - ldr r0, [r4] - adds r0, 0x9 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk35_orword - - thumb_func_start atk36_bicbyte -atk36_bicbyte: @ 804B4F8 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r2, [r2, 0x5] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .pool - thumb_func_end atk36_bicbyte - - thumb_func_start atk37_bichalfword -atk37_bichalfword: @ 804B524 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r3, [r4] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r2, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - orrs r2, r0 - ldrh r0, [r1] - bics r0, r2 - strh r0, [r1] - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk37_bichalfword - - thumb_func_start atk38_bicword -atk38_bicword: @ 804B55C - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r3, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r3, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r3, r0 - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - ldr r0, [r4] - adds r0, 0x9 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk38_bicword - - thumb_func_start atk39_pause -atk39_pause: @ 804B5A0 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r4, [r0] - cmp r4, 0 - bne _0804B5CC - ldr r5, =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r3, =gPauseCounterBattle - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bcc _0804B5CC - strh r4, [r3] - adds r0, r2, 0x3 - str r0, [r5] -_0804B5CC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk39_pause - - thumb_func_start atk3A_waitstate -atk3A_waitstate: @ 804B5E0 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804B5F2 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0804B5F2: - pop {r0} - bx r0 - .pool - thumb_func_end atk3A_waitstate - - thumb_func_start atk3B_healthbar_update -atk3B_healthbar_update: @ 804B600 - push {lr} - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0804B620 - ldr r0, =gActiveBank - ldr r1, =gBankTarget - b _0804B624 - .pool -_0804B620: - ldr r0, =gActiveBank - ldr r1, =gBankAttacker -_0804B624: - ldrb r1, [r1] - strb r1, [r0] - ldr r0, =gBattleMoveDamage - ldrh r1, [r0] - movs r0, 0 - bl EmitHealthBarUpdate - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk3B_healthbar_update - - thumb_func_start atk3C_return -atk3C_return: @ 804B658 - push {lr} - bl b_movescr_stack_pop_cursor - pop {r0} - bx r0 - thumb_func_end atk3C_return - - thumb_func_start atk3D_end -atk3D_end: @ 804B664 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0804B67C - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl sub_81A5718 -_0804B67C: - ldr r0, =gBattleMoveFlags - movs r1, 0 - strb r1, [r0] - ldr r0, =gActiveBank - strb r1, [r0] - ldr r1, =gFightStateTracker - movs r0, 0xB - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk3D_end - - thumb_func_start atk3E_end2 -atk3E_end2: @ 804B6A4 - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xB - strb r0, [r1] - bx lr - .pool - thumb_func_end atk3E_end2 - - thumb_func_start atk3F_end3 -atk3F_end3: @ 804B6BC - push {lr} - bl b_movescr_stack_pop_cursor - ldr r3, =gBattleResources - ldr r0, [r3] - ldr r0, [r0, 0xC] - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0 - beq _0804B6D6 - subs r0, 0x1 - strb r0, [r1] -_0804B6D6: - ldr r2, =gBattleMainFunc - ldr r0, [r3] - ldr r1, [r0, 0xC] - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - pop {r0} - bx r0 - .pool - thumb_func_end atk3F_end3 - - thumb_func_start atk41_call -atk41_call: @ 804B6F8 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x5 - bl b_movescr_stack_push - ldr r2, [r4] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk41_call - - thumb_func_start atk42_jumpiftype2 -atk42_jumpiftype2: @ 804B728 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldr r2, =gBattleMons - movs r1, 0x58 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r2, [r3, 0x2] - ldrb r1, [r1] - cmp r2, r1 - beq _0804B756 - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - bne _0804B778 -_0804B756: - ldrb r1, [r3, 0x3] - ldrb r0, [r3, 0x4] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r3, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0804B77C - .pool -_0804B778: - adds r0, r3, 0x7 - str r0, [r4] -_0804B77C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk42_jumpiftype2 - - thumb_func_start atk43_jumpifabilitypresent -atk43_jumpifabilitypresent: @ 804B784 - push {r4,lr} - sub sp, 0x4 - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r2, [r0, 0x1] - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0804B7C0 - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0804B7C6 - .pool -_0804B7C0: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_0804B7C6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk43_jumpifabilitypresent - - thumb_func_start atk44 -atk44: @ 804B7D0 - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x54 - movs r1, 0x1 - strb r1, [r0] - bx lr - .pool - thumb_func_end atk44 - - thumb_func_start atk45_playanimation -atk45_playanimation: @ 804B7EC - push {r4-r6,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r6, =gActiveBank - strb r0, [r6] - ldr r2, [r5] - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 - adds r3, r1, r0 - ldrb r4, [r2, 0x2] - adds r0, r4, 0 - cmp r0, 0x1 - beq _0804B822 - cmp r0, 0x11 - beq _0804B822 - cmp r0, 0x2 - bne _0804B848 -_0804B822: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x2] - ldrh r2, [r3] - movs r0, 0 - bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - b _0804B8AA - .pool -_0804B848: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804B868 - adds r0, r2, 0x7 - bl b_movescr_stack_push - ldr r0, =BattleScript_Pausex20 - b _0804B8A8 - .pool -_0804B868: - adds r0, r4, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _0804B894 - ldr r1, =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _0804B894 - adds r0, r2, 0x7 - b _0804B8A8 - .pool -_0804B894: - ldrb r1, [r2, 0x2] - ldrh r2, [r3] - movs r0, 0 - bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim - ldrb r0, [r6] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x7 -_0804B8A8: - str r0, [r5] -_0804B8AA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk45_playanimation - - thumb_func_start atk46_playanimation2 -atk46_playanimation2: @ 804B8B0 - push {r4-r7,lr} - ldr r6, =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r7, =gActiveBank - strb r0, [r7] - ldr r2, [r6] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - adds r3, r1, r0 - ldrb r1, [r2, 0x6] - ldrb r0, [r2, 0x7] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x9] - lsls r0, 24 - adds r4, r1, r0 - ldrb r5, [r3] - adds r0, r5, 0 - cmp r0, 0x1 - beq _0804B8FA - cmp r0, 0x11 - beq _0804B8FA - cmp r0, 0x2 - bne _0804B920 -_0804B8FA: - ldrb r1, [r3] - ldrh r2, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] - b _0804B976 - .pool -_0804B920: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804B934 - adds r0, r2, 0 - b _0804B972 - .pool -_0804B934: - adds r0, r5, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _0804B960 - ldr r1, =gStatuses3 - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _0804B960 - adds r0, r2, 0 - b _0804B972 - .pool -_0804B960: - ldrb r1, [r3] - ldrh r2, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r0, [r6] -_0804B972: - adds r0, 0xA - str r0, [r6] -_0804B976: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk46_playanimation2 - - thumb_func_start atk47_setgraphicalstatchangevalues -atk47_setgraphicalstatchangevalues: @ 804B97C - push {r4,lr} - movs r3, 0 - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1A] - movs r2, 0xF0 - ands r2, r0 - adds r4, r1, 0 - cmp r2, 0x20 - beq _0804B9AA - cmp r2, 0x20 - bgt _0804B99C - cmp r2, 0x10 - beq _0804B9A6 - b _0804B9B4 - .pool -_0804B99C: - cmp r2, 0x90 - beq _0804B9AE - cmp r2, 0xA0 - beq _0804B9B2 - b _0804B9B4 -_0804B9A6: - movs r3, 0xF - b _0804B9B4 -_0804B9AA: - movs r3, 0x27 - b _0804B9B4 -_0804B9AE: - movs r3, 0x16 - b _0804B9B4 -_0804B9B2: - movs r3, 0x2E -_0804B9B4: - ldrb r1, [r4, 0x1A] - movs r0, 0xF - ands r0, r1 - adds r0, r3, r0 - subs r0, 0x1 - movs r1, 0 - strb r0, [r4, 0x10] - strb r1, [r4, 0x11] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk47_setgraphicalstatchangevalues - thumb_func_start atk48_playstatchangeanimation atk48_playstatchangeanimation: @ 804B9D8 push {r4-r7,lr} @@ -6061,7 +219,7 @@ _0804BB6C: movs r1, 0x1 mov r2, r8 str r3, [sp] - bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim + bl EmitBattleAnimation ldr r0, =gActiveBank ldrb r0, [r0] bl MarkBufferBankForExecution @@ -6198,7 +356,7 @@ _0804BCAC: str r0, [r5] ldr r0, =gBattleScripting strb r4, [r0, 0x14] - bl sub_804AF30 + bl MoveValuesCleanUp ldr r2, =gUnknown_082D86A8 mov r0, r8 ldrh r1, [r0] @@ -6210,7 +368,7 @@ _0804BCAC: lsls r0, 2 adds r0, r2 ldr r0, [r0] - bl b_movescr_stack_push + bl BattleScriptPush ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB87D bl _0804C5B8 @@ -6360,7 +518,7 @@ _0804BE14: _0804BE26: adds r0, r2, 0x1 strb r0, [r1, 0x19] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAE0D str r0, [r1] @@ -6440,7 +598,7 @@ _0804BEBA: bl EmitSetAttributes ldrb r0, [r4] bl MarkBufferBankForExecution - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB282 str r0, [r1] @@ -9718,7 +3876,7 @@ _0804DBC8: ldr r0, =gBattleScripting ldrb r1, [r4] strb r1, [r0, 0x17] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor mov r7, r9 ldr r0, [r7] ldrb r0, [r0, 0x1] @@ -15079,7 +9237,7 @@ _08050AA8: .pool _08050B10: mov r0, r8 - bl b_movescr_stack_push + bl BattleScriptPush ldr r1, =gBattleScripting ldr r6, =gActiveBank ldrb r0, [r6] @@ -15159,7 +9317,7 @@ _08050B94: .pool _08050BD4: mov r0, r8 - bl b_movescr_stack_push + bl BattleScriptPush ldr r1, =gBattleScripting ldr r2, =gActiveBank ldrb r0, [r2] @@ -15208,7 +9366,7 @@ _08050C2C: cmp r5, 0x1 bne _08050B68 mov r0, r8 - bl b_movescr_stack_push + bl BattleScriptPush ldr r1, =gBattleScripting ldr r3, =gActiveBank ldrb r0, [r3] @@ -15248,7 +9406,7 @@ _08050C8C: b _08050B68 _08050CAE: mov r0, r8 - bl b_movescr_stack_push + bl BattleScriptPush ldr r1, =gBattleScripting ldr r2, =gActiveBank ldrb r0, [r2] @@ -16403,7 +10561,7 @@ atk91_givepaydaymoney: @ 80515C8 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 - bl b_movescr_stack_push + bl BattleScriptPush ldr r0, =gUnknown_082DB307 str r0, [r4] b _08051658 @@ -21438,7 +15596,7 @@ atkBE_breakfree: @ 805417C strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAFC5 b _080542BA @@ -21464,7 +15622,7 @@ _08054210: negs r2, r2 ands r0, r2 str r0, [r1] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAFD6 b _080542BA @@ -21501,7 +15659,7 @@ _08054250: lsls r1, 2 adds r1, r2 strb r4, [r1, 0xA] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAFDD b _080542BA @@ -22608,7 +16766,7 @@ atkCC_callterrainattack: @ 8054BEC lsls r0, 2 adds r0, r3 ldr r0, [r0] - bl b_movescr_stack_push + bl BattleScriptPush ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 @@ -23039,7 +17197,7 @@ _08054FDC: cmp r0, 0x3C bne _08055010 ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB63F + ldr r0, =BattleScript_StickyHoldOnKnockOff str r0, [r1] ldr r1, =gLastUsedAbility ldrb r0, [r7] @@ -24725,7 +18883,7 @@ _08055E2C: ldrb r2, [r0] movs r0, 0 movs r1, 0 - bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim + bl EmitBattleAnimation ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, =gBattlescriptCurrInstr diff --git a/asm/battle_5.s b/asm/battle_5.s index 3db603531f..9c35a8913b 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -183,8 +183,8 @@ _080570D0: .pool thumb_func_end sub_8057028 - thumb_func_start sub_80570F4 -sub_80570F4: @ 80570F4 + thumb_func_start AdjustFriendshipOnBattleFaint +AdjustFriendshipOnBattleFaint: @ 80570F4 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -285,7 +285,7 @@ _080571CE: pop {r0} bx r0 .pool - thumb_func_end sub_80570F4 + thumb_func_end AdjustFriendshipOnBattleFaint thumb_func_start sub_80571DC sub_80571DC: @ 80571DC @@ -414,7 +414,7 @@ _0805729A: ldr r1, =0xf7ffffff ands r0, r1 str r0, [r2] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor movs r0, 0x1 mov r2, r10 strb r0, [r2, 0x5] @@ -474,7 +474,7 @@ _08057354: ldr r1, =0xf7ffffff ands r0, r1 str r0, [r2] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r0, =gBattleCommunication strb r4, [r0, 0x5] ldr r1, =gBattlescriptCurrInstr @@ -523,7 +523,7 @@ _080573D4: negs r1, r1 ands r0, r1 str r0, [r4] - bl b_movescr_stack_push_cursor + bl BattleScriptPushCursor ldr r1, =gBattlescriptCurrInstr ldr r0, =BattleScript_MoveUsedUnfroze str r0, [r1] diff --git a/asm/battle_7.s b/asm/battle_7.s index fd8c3b4a54..10fabc389a 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -2937,8 +2937,8 @@ _0805EA5A: bx r0 thumb_func_end sub_805E990 - thumb_func_start sub_805EA60 -sub_805EA60: @ 805EA60 + thumb_func_start BattleMusicStop +BattleMusicStop: @ 805EA60 push {r4-r6,lr} movs r0, 0 bl GetBankByPlayerAI @@ -2977,7 +2977,7 @@ _0805EAA2: pop {r0} bx r0 .pool - thumb_func_end sub_805EA60 + thumb_func_end BattleMusicStop thumb_func_start sub_805EAB4 sub_805EAB4: @ 805EAB4 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index d28823a8b3..e8975a7aa4 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5565,7 +5565,7 @@ sub_806743C: @ 806743C ldrb r0, [r0] cmp r0, 0 beq _08067478 - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 8812282797..e02a967d0e 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4874,7 +4874,7 @@ sub_814D9D8: @ 814D9D8 ldrb r0, [r0] cmp r0, 0 beq _0814DA14 - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 639ef0ce61..1bfa3ff122 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -6015,7 +6015,7 @@ sub_8062630: @ 8062630 ldrb r0, [r0] cmp r0, 0 beq _0806266C - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 0e9318dc94..d9d5c5e6a2 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -8913,7 +8913,7 @@ _0805C3BC: sub_805C3EC: @ 805C3EC push {lr} sub sp, 0x4 - bl sub_805EA60 + bl BattleMusicStop movs r0, 0x1 negs r0, r0 movs r1, 0 @@ -9595,7 +9595,7 @@ sub_805C9B0: @ 805C9B0 ldrb r0, [r0] cmp r0, 0 beq _0805C9EC - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 6b5a14f956..f77dc2c337 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -5661,7 +5661,7 @@ sub_81BE03C: @ 81BE03C ldrb r0, [r0] cmp r0, 0 beq _081BE078 - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index dc7fe7de55..6f047a4ef7 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -5304,7 +5304,7 @@ sub_818936C: @ 818936C ldrb r0, [r0] cmp r0, 0 beq _081893A8 - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index b2769671c5..7b0cd6d41b 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -5455,7 +5455,7 @@ sub_818C994: @ 818C994 ldrb r0, [r0] cmp r0, 0 beq _0818C9D0 - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index 1aff72176d..13111e08d5 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -1161,7 +1161,7 @@ dp01t_34_6_move_anim_start_t3: @ 8159CC4 ldrb r0, [r0] cmp r0, 0 beq _08159D00 - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index ddb97f9276..6f59c41042 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -4150,7 +4150,7 @@ sub_816A840: @ 816A840 ldrb r0, [r0] cmp r0, 0 beq _0816A87C - bl sub_805EA60 + bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 diff --git a/asm/rom3.s b/asm/rom3.s index f6b6f2d037..84dec85e5c 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2355,8 +2355,8 @@ dp01_build_cmdbuf_x09_9_9_9: @ 8033A24 .pool thumb_func_end dp01_build_cmdbuf_x09_9_9_9 - thumb_func_start dp01_build_cmdbuf_x0A_A_A_A -dp01_build_cmdbuf_x0A_A_A_A: @ 8033A44 + thumb_func_start EmitFaintAnimation +EmitFaintAnimation: @ 8033A44 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2371,7 +2371,7 @@ dp01_build_cmdbuf_x0A_A_A_A: @ 8033A44 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x0A_A_A_A + thumb_func_end EmitFaintAnimation thumb_func_start dp01_build_cmdbuf_x0B_B_B_B dp01_build_cmdbuf_x0B_B_B_B: @ 8033A64 @@ -2967,8 +2967,8 @@ EmitHealthBarUpdate: @ 8033EFC .pool thumb_func_end EmitHealthBarUpdate - thumb_func_start dp01_build_cmdbuf_x19_a_bb -dp01_build_cmdbuf_x19_a_bb: @ 8033F34 + thumb_func_start EmitExpUpdate +EmitExpUpdate: @ 8033F34 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -2993,7 +2993,7 @@ dp01_build_cmdbuf_x19_a_bb: @ 8033F34 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x19_a_bb + thumb_func_end EmitExpUpdate thumb_func_start dp01_build_cmdbuf_x1A_aaaa_bbbb dp01_build_cmdbuf_x1A_aaaa_bbbb: @ 8033F68 @@ -3661,8 +3661,8 @@ dp01_build_cmdbuf_x33_a_33_33: @ 8034414 .pool thumb_func_end dp01_build_cmdbuf_x33_a_33_33 - thumb_func_start dp01_build_cmdbuf_x34_a_bb_aka_battle_anim -dp01_build_cmdbuf_x34_a_bb_aka_battle_anim: @ 8034438 + thumb_func_start EmitBattleAnimation +EmitBattleAnimation: @ 8034438 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -3682,7 +3682,7 @@ dp01_build_cmdbuf_x34_a_bb_aka_battle_anim: @ 8034438 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x34_a_bb_aka_battle_anim + thumb_func_end EmitBattleAnimation thumb_func_start sub_8034464 sub_8034464: @ 8034464 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 7a013c51c7..0d94d31b01 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -33,10 +33,10 @@ gUnknown_082D9EFB:: @ 82D9EFB gUnknown_082D9F1C:: @ 82D9F1C .incbin "baserom.gba", 0x2d9f1c, 0x88e -gUnknown_082DA7AA:: @ 82DA7AA +BattleScript_FaintAttacker:: @ 82DA7AA .incbin "baserom.gba", 0x2da7aa, 0xd -gUnknown_082DA7B7:: @ 82DA7B7 +BattleScript_FaintTarget:: @ 82DA7B7 .incbin "baserom.gba", 0x2da7b7, 0xd gUnknown_082DA7C4:: @ 82DA7C4 @@ -93,7 +93,7 @@ gUnknown_082DAB15:: @ 82DAB15 BattleScript_Pausex20:: @ 82DABB9 .incbin "baserom.gba", 0x2dabb9, 0x4 -gUnknown_082DABBD:: @ 82DABBD +BattleScript_LevelUp:: @ 82DABBD .incbin "baserom.gba", 0x2dabbd, 0x6f gUnknown_082DAC2C:: @ 82DAC2C @@ -156,7 +156,7 @@ gUnknown_082DAE2A:: @ 82DAE2A BattleScript_EncoredNoMore:: @ 82DAE37 .incbin "baserom.gba", 0x2dae37, 0x7 -gUnknown_082DAE3E:: @ 82DAE3E +BattleScript_DestinyBondTakesLife:: @ 82DAE3E .incbin "baserom.gba", 0x2dae3e, 0x1b gUnknown_082DAE59:: @ 82DAE59 @@ -237,7 +237,7 @@ gUnknown_082DB181:: @ 82DB181 gUnknown_082DB185:: @ 82DB185 .incbin "baserom.gba", 0x2db185, 0x8 -gUnknown_082DB18D:: @ 82DB18D +BattleScript_GrudgeTakesPp:: @ 82DB18D .incbin "baserom.gba", 0x2db18d, 0x7 BattleScript_MagicCoatBounce:: @ 82DB194 @@ -411,7 +411,7 @@ BattleScript_SoundproofProtected:: @ 82DB61F gUnknown_082DB62F:: @ 82DB62F .incbin "baserom.gba", 0x2db62f, 0x10 -gUnknown_082DB63F:: @ 82DB63F +BattleScript_StickyHoldOnKnockOff:: @ 82DB63F .incbin "baserom.gba", 0x2db63f, 0xe BattleScript_ColorChangeActivates:: @ 82DB64D diff --git a/include/battle.h b/include/battle.h index 56b74aa624..920a600600 100644 --- a/include/battle.h +++ b/include/battle.h @@ -218,13 +218,23 @@ #define TYPE_MUL_NORMAL 10 #define TYPE_MUL_SUPER_EFFECTIVE 20 -#define BS_GET_TARGET 0 -#define BS_GET_ATTACKER 1 -#define BS_GET_EFFECT_BANK 2 -#define BS_GET_SCRIPTING_BANK 10 -#define BS_GET_OPPONENT1 12 -#define BS_GET_PLAYER2 13 -#define BS_GET_OPPONENT2 14 +#define BS_GET_TARGET 0 +#define BS_GET_ATTACKER 1 +#define BS_GET_EFFECT_BANK 2 +#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability +#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability +#define BS_GET_SCRIPTING_BANK 10 +#define BS_GET_OPPONENT1 12 +#define BS_GET_PLAYER2 13 +#define BS_GET_OPPONENT2 14 + +// for battle script commands +#define CMP_EQUAL 0x0 +#define CMP_NOT_EQUAL 0x1 +#define CMP_GREATER_THAN 0x2 +#define CMP_LESS_THAN 0x3 +#define CMP_COMMON_BITS 0x4 +#define CMP_NO_COMMON_BITS 0x5 struct Trainer { @@ -422,13 +432,23 @@ struct BattleCallbacksStack u8 size; }; +struct StatsArray +{ + u16 hp; + u16 atk; + u16 def; + u16 spd; + u16 spAtk; + u16 spDef; +}; + struct BattleResources { struct SecretBaseRecord* secretBase; struct UnknownFlags *flags; struct BattleScriptsStack* battleScriptsStack; struct BattleCallbacksStack* battleCallbackStack; - void* statsBeforeLvlUp; + struct StatsArray* statsBeforeLvlUp; struct AI_ThinkingStruct *ai; struct BattleHistory *battleHistory; struct BattleScriptsStack *AI_ScriptsStack; @@ -438,6 +458,7 @@ extern struct BattleResources* gBattleResources; #define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack) #define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack) +#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp) struct BattleResults { @@ -536,14 +557,10 @@ struct BattleStruct u8 field_4D; u8 field_4E; u8 field_4F; - u8 field_50; - u8 field_51; + u16 expValue; u8 field_52; - u8 field_53; - u8 field_54; - u8 field_55; - u8 field_56; - u8 field_57; + u8 sentInPokes; + u8 field_54[4]; u8 field_58; u8 field_59; u8 field_5A; @@ -642,6 +659,11 @@ struct BattleStruct u8 field_1A1; u8 filler1A2; u8 atkCancellerTracker; + u8 field_1A4[240]; + u8 field_294[4]; + u8 field_298[8]; + u8 field_2A0; + u8 field_2A1; }; extern struct BattleStruct* gBattleStruct; @@ -677,6 +699,20 @@ extern struct BattleStruct* gBattleStruct; #define MOVE_EFFECT_CHARGING 0xC #define MOVE_EFFECT_WRAP 0xD #define MOVE_EFFECT_RECOIL_25 0xE +#define MOVE_EFFECT_ATK_PLUS_1 0xF +#define MOVE_EFFECT_DEF_PLUS_1 0x10 +#define MOVE_EFFECT_SPD_PLUS_1 0x11 +#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12 +#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13 +#define MOVE_EFFECT_ACC_PLUS_1 0x14 +#define MOVE_EFFECT_EVS_PLUS_1 0x15 +#define MOVE_EFFECT_ATK_MINUS_1 0x16 +#define MOVE_EFFECT_DEF_MINUS_1 0x17 +#define MOVE_EFFECT_SPD_MINUS_1 0x18 +#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19 +#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A +#define MOVE_EFFECT_ACC_MINUS_1 0x1B +#define MOVE_EFFECT_EVS_MINUS_1 0x1C #define MOVE_EFFECT_RECHARGE 0x1D #define MOVE_EFFECT_RAGE 0x1E #define MOVE_EFFECT_STEAL_ITEM 0x1F @@ -687,10 +723,73 @@ extern struct BattleStruct* gBattleStruct; #define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 #define MOVE_EFFECT_ATK_DEF_DOWN 0x25 #define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 +#define MOVE_EFFECT_ATK_PLUS_2 0x27 +#define MOVE_EFFECT_DEF_PLUS_2 0x28 +#define MOVE_EFFECT_SPD_PLUS_2 0x29 +#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A +#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B +#define MOVE_EFFECT_ACC_PLUS_2 0x2C +#define MOVE_EFFECT_EVS_PLUS_2 0x2D +#define MOVE_EFFECT_ATK_MINUS_2 0x2E +#define MOVE_EFFECT_DEF_MINUS_2 0x2F +#define MOVE_EFFECT_SPD_MINUS_2 0x30 +#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31 +#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32 +#define MOVE_EFFECT_ACC_MINUS_2 0x33 +#define MOVE_EFFECT_EVS_MINUS_2 0x34 #define MOVE_EFFECT_THRASH 0x35 #define MOVE_EFFECT_KNOCK_OFF 0x36 +#define MOVE_EFFECT_NOTHING_37 0x37 +#define MOVE_EFFECT_NOTHING_38 0x38 +#define MOVE_EFFECT_NOTHING_39 0x39 +#define MOVE_EFFECT_NOTHING_3A 0x3A #define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B +#define MOVE_EFFECT_NOTHING_3C 0x3C +#define MOVE_EFFECT_NOTHING_3D 0x3D +#define MOVE_EFFECT_NOTHING_3E 0x3E +#define MOVE_EFFECT_NOTHING_3F 0x3F #define MOVE_EFFECT_AFFECTS_USER 0x40 +#define MOVE_EFFECT_CERTAIN 0x80 + +// battle animations ids + +#define B_ANIM_CASTFORM_CHANGE 0x0 +#define B_ANIM_STATS_CHANGE 0x1 +#define B_ANIM_SUBSTITUTE_FADE 0x2 +#define B_ANIM_SUBSTITUTE_APPEAR 0x3 +#define B_ANIM_x4 0x4 +#define B_ANIM_ITEM_KNOCKOFF 0x5 +#define B_ANIM_TURN_TRAP 0x6 +#define B_ANIM_ITEM_EFFECT 0x7 +#define B_ANIM_SMOKEBALL_ESCAPE 0x8 +#define B_ANIM_HANGED_ON 0x9 +#define B_ANIM_RAIN_CONTINUES 0xA +#define B_ANIM_SUN_CONTINUES 0xB +#define B_ANIM_SANDSTORM_CONTINUES 0xC +#define B_ANIM_HAIL_CONTINUES 0xD +#define B_ANIM_LEECH_SEED_DRAIN 0xE +#define B_ANIM_MON_HIT 0xF +#define B_ANIM_ITEM_STEAL 0x10 +#define B_ANIM_SNATCH_MOVE 0x11 +#define B_ANIM_FUTURE_SIGHT_HIT 0x12 +#define B_ANIM_x13 0x13 +#define B_ANIM_x14 0x14 +#define B_ANIM_INGRAIN_HEAL 0x15 +#define B_ANIM_WISH_HEAL 0x16 +#define B_ANIM_x17 0x17 +#define B_ANIM_x18 0x18 +#define B_ANIM_x19 0x19 +#define B_ANIM_x1A 0x1A +#define B_ANIM_x1B 0x1B +#define B_ANIM_x1C 0x1C +#define B_ANIM_x1D 0x1D + +#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 +#define GET_STAT_BUFF_VALUE(n)((n & 0xF0) >> 4) // 0x10, 0x20, 0x40 +#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit + +#define SET_STAT_BUFF_ID(n)((n & 0xF)) +#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) struct BattleScripting { @@ -718,6 +817,8 @@ struct BattleScripting u8 animTurn; u8 animTargetsHit; u8 statChanger; + u8 field_1B; + u8 atk23_state; }; extern struct BattleScripting gBattleScripting; @@ -729,10 +830,12 @@ void CancelMultiTurnMoves(u8 bank); void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); void PrepareStringBattle(u16 stringId, u8 bank); u8 GetBattleBank(u8 caseId); +void UndoEffectsAfterFainting(void); // battle_3 -void b_movescr_stack_push(const u8* bsPtr); -void b_movescr_stack_push_cursor(void); +void BattleScriptPush(const u8* bsPtr); +void BattleScriptPushCursor(void); +void BattleScriptPop(void); u8 sub_803FB4C(void); // msg, can't select a move u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); @@ -760,6 +863,13 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 species, u8 ability); u8 BankGetTurnOrder(u8 bank); +// battle_5 +void AdjustFriendshipOnBattleFaint(u8 bank); + +// battle 7 +void BattleMusicStop(void); +void sub_805E990(struct Pokemon* mon, u8 bank); + // rom_80A5C6C u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index b23649192e..bfa1bd507a 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -7,6 +7,9 @@ void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); void EmitEffectivenessSound(u8 bufferId, u16 songId); void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); +void EmitFaintAnimation(u8 bufferId); +void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); +void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); void MarkBufferBankForExecution(u8 bank); diff --git a/include/pokemon.h b/include/pokemon.h index 9d01c051eb..674e6dbf4e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -620,6 +620,9 @@ bool8 IsPokeSpriteNotFlipped(u16 species); bool8 IsMonShiny(struct Pokemon *mon); bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); +void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); +bool8 IsTradedMon(struct Pokemon *mon); + #include "sprite.h" void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); diff --git a/src/battle_3.c b/src/battle_3.c index 4f0997aa06..1b62e3bb84 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -196,17 +196,17 @@ extern void sub_803E08C(void); extern void bc_move_exec_returning(void); extern s8 GetFlavourRelationByPersonality(u32 personality, u8 flavor); -void b_movescr_stack_push(const u8* bsPtr) +void BattleScriptPush(const u8* bsPtr) { BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = bsPtr; } -void b_movescr_stack_push_cursor(void) +void BattleScriptPushCursor(void) { BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr; } -void b_movescr_stack_pop_cursor(void) +void BattleScriptPop(void) { gBattlescriptCurrInstr = BATTLESCRIPTS_STACK->ptr[--BATTLESCRIPTS_STACK->size]; } @@ -1206,7 +1206,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 1; gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; effect = 2; @@ -1234,7 +1234,7 @@ u8 AtkCanceller_UnableToUseMove(void) else { gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 0; gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; effect = 2; @@ -1262,7 +1262,7 @@ u8 AtkCanceller_UnableToUseMove(void) else // unfreeze { gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } @@ -1349,7 +1349,7 @@ u8 AtkCanceller_UnableToUseMove(void) if (Random() & 1) { gBattleCommunication[MULTISTRING_CHOOSER] = 0; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); } else // confusion dmg { @@ -1363,7 +1363,7 @@ u8 AtkCanceller_UnableToUseMove(void) } else // snapped out of confusion { - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; } effect = 1; @@ -1387,10 +1387,10 @@ u8 AtkCanceller_UnableToUseMove(void) { gBattleScripting.bank = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); if (Random() & 1) - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); else { - b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack); + BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gProtectStructs[gBankAttacker].loveImmobility = 1; CancelMultiTurnMoves(gBankAttacker); @@ -1432,7 +1432,7 @@ u8 AtkCanceller_UnableToUseMove(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) { gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 1; } @@ -1969,7 +1969,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleTextBuff1[1] = 3; gBattleTextBuff1[2] = moveType; gBattleTextBuff1[3] = 0xFF; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; effect++; } @@ -1985,7 +1985,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; effect++; } @@ -2006,7 +2006,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) gBattleCommunication[MOVE_EFFECT_BYTE] += 2; gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; @@ -2021,7 +2021,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && (Random() % 3) == 0) { gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; @@ -2036,7 +2036,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && (Random() % 3) == 0) { gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; @@ -2051,7 +2051,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && (Random() % 3) == 0) { gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; @@ -2073,7 +2073,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) { gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; effect++; } @@ -2155,7 +2155,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[i].status2 &= ~(STATUS2_INFATUATION); break; } - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = gUnknown_082DB68C; gBattleScripting.bank = i; gActiveBank = i; @@ -2197,7 +2197,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleStruct->synchronizeMoveEffect = 2; gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + 0x40; gBattleScripting.bank = gBankTarget; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; @@ -2212,7 +2212,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleStruct->synchronizeMoveEffect = 2; gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect; gBattleScripting.bank = gBankAttacker; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; @@ -2303,7 +2303,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = gUnknown_082DB4C1; gBattleStruct->intimidateBank = i; effect++; @@ -3592,7 +3592,7 @@ _0804330E:\n\ strb r3, [r1, 0x2]\n\ movs r0, 0xFF\n\ strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_ColorChangeActivates\n\ str r0, [r1]\n\ @@ -3668,7 +3668,7 @@ _080433CA:\n\ bne _080433D8\n\ str r2, [r1]\n\ _080433D8:\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_RoughSkinActivates\n\ str r0, [r1]\n\ @@ -3763,7 +3763,7 @@ _080434BC:\n\ ldrb r0, [r1, 0x3]\n\ adds r0, 0x40\n\ strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ @@ -3849,7 +3849,7 @@ _08043598:\n\ ldr r1, =gBattleCommunication\n\ movs r0, 0x42\n\ strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ @@ -3935,7 +3935,7 @@ _08043674:\n\ ldr r1, =gBattleCommunication\n\ movs r0, 0x45\n\ strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ @@ -4021,7 +4021,7 @@ _08043750:\n\ ldr r1, =gBattleCommunication\n\ movs r0, 0x43\n\ strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ @@ -4183,7 +4183,7 @@ _080438B6:\n\ ldr r0, [r2]\n\ orrs r0, r1\n\ str r0, [r2]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_CuteCharmActivates\n\ str r0, [r1]\n\ @@ -4484,7 +4484,7 @@ _08043BF8:\n\ _08043BFA:\n\ str r0, [r2]\n\ _08043BFC:\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =gUnknown_082DB68C\n\ str r0, [r1]\n\ @@ -4607,7 +4607,7 @@ _08043CF8:\n\ ldr r0, =gBankTarget\n\ ldrb r0, [r0]\n\ strb r0, [r1, 0x17]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_SynchronizeActivates\n\ str r0, [r1]\n\ @@ -4662,7 +4662,7 @@ _08043D7C:\n\ ldr r0, =gBankAttacker\n\ ldrb r0, [r0]\n\ strb r0, [r1, 0x17]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =BattleScript_SynchronizeActivates\n\ str r0, [r1]\n\ @@ -5380,7 +5380,7 @@ _080443B4:\n\ ldr r1, =0xfff7ffff\n\ ands r0, r1\n\ str r0, [r2]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, =gBattlescriptCurrInstr\n\ ldr r0, =gUnknown_082DB4C1\n\ str r0, [r1]\n\ @@ -5465,7 +5465,7 @@ void b_call_bc_move_exec(const u8* BS_ptr) void b_push_move_exec(const u8* BS_ptr) { - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BS_ptr; BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc; gBattleMainFunc = sub_803E08C; @@ -6029,7 +6029,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_PARALYSIS) { gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureParRet; effect = ITEM_STATUS_CHANGE; } @@ -6038,7 +6038,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_PSN_ANY) { gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; effect = ITEM_STATUS_CHANGE; } @@ -6047,7 +6047,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_BURN) { gBattleMons[bank].status1 &= ~(STATUS_BURN); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; effect = ITEM_STATUS_CHANGE; } @@ -6056,7 +6056,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_FREEZE) { gBattleMons[bank].status1 &= ~(STATUS_FREEZE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; effect = ITEM_STATUS_CHANGE; } @@ -6066,7 +6066,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; effect = ITEM_STATUS_CHANGE; } @@ -6075,7 +6075,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status2 & STATUS2_CONFUSION) { gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; effect = ITEM_EFFECT_OTHER; } @@ -6085,7 +6085,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 0; gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; effect = ITEM_EFFECT_OTHER; @@ -6121,7 +6121,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } gBattleMons[bank].status1 = 0; gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 0; gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; effect = ITEM_STATUS_CHANGE; @@ -6140,7 +6140,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleScripting.bank = bank; gStringBank = bank; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; return effect; // unnecessary return } @@ -6170,9 +6170,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) && gBattleMons[gBankTarget].hp) { gBattleCommunication[MOVE_EFFECT_BYTE] = 8; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); SetMoveEffect(0, 0); - b_movescr_stack_pop_cursor(); + BattleScriptPop(); } break; case HOLD_EFFECT_SHELL_BELL: @@ -6190,7 +6190,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; gSpecialStatuses[gBankTarget].moveturnLostHP = 0; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; effect++; } diff --git a/src/battle_4.c b/src/battle_4.c index 6e71a6a570..8e0be22c21 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -15,6 +15,8 @@ #include "battle_controllers.h" #include "species.h" #include "songs.h" +#include "text.h" +#include "sound.h" // variables @@ -75,6 +77,7 @@ extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; extern u8 gCurrentMoveTurn; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; +extern u16 gPartnerTrainerId; extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; @@ -84,7 +87,7 @@ extern const u16 gTrappingMoves[]; extern const u8 gTrainerMoney[]; // functions - +extern void sub_81A5718(u8 bank); // battle frontier 2 // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -108,6 +111,7 @@ extern const u8 BattleScript_ItemSteal[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_KnockedOff[]; +extern const u8 BattleScript_StickyHoldOnKnockOff[]; extern const u8 BattleScript_AllStatsUp[]; extern const u8 BattleScript_AtkDefDown[]; extern const u8 BattleScript_SAtkDown2[]; @@ -124,6 +128,10 @@ extern const u8 BattleScript_TrainerBallBlock[]; extern const u8 BattleScript_WallyBallThrow[]; extern const u8 BattleScript_SuccessBallThrow[]; extern const u8 BattleScript_ShakeBallThrow[]; +extern const u8 BattleScript_FaintAttacker[]; +extern const u8 BattleScript_FaintTarget[]; +extern const u8 BattleScript_DestinyBondTakesLife[]; +extern const u8 BattleScript_GrudgeTakesPp[]; // read via orr #define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) @@ -144,7 +152,7 @@ bool8 IsTwoTurnsMove(u16 move); void DestinyBondFlagUpdate(void); u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static void CheckWonderGuardAndLevitate(void); -u8 ChangeStatBuffs(s8, u8 statId, u8, const u8* BS_ptr); +u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -687,10 +695,10 @@ const u32 gStatusFlagsForMoveEffects[] = STATUS2_CONFUSION, STATUS2_FLINCHED, 0x00000000, - 0x00000070, + STATUS2_UPROAR, 0x00000000, - 0x00001000, - 0x0000E000, + STATUS2_MULTIPLETURNS, + STATUS2_WRAPPED, 0x00000000, 0x00000000, 0x00000000, @@ -706,10 +714,10 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000, 0x00000000, 0x00000000, - 0x00400000, + STATUS2_RECHARGE, 0x00000000, 0x00000000, - 0x04000000, + STATUS2_ESCAPE_PREVENTION, 0x08000000, 0x00000000, 0x00000000, @@ -730,7 +738,7 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000, 0x00000000, 0x00000000, - 0x00000C00, + STATUS2_LOCK_CONFUSE, 0x00000000, 0x00000000, 0x00000000, @@ -792,7 +800,7 @@ void atk00_attackcanceler(void) { PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT); gProtectStructs[gBankTarget].bounceMove = 0; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; return; } @@ -804,7 +812,7 @@ void atk00_attackcanceler(void) PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH); gProtectStructs[gTurnOrder[i]].stealMove = 0; gBattleScripting.bank = gTurnOrder[i]; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; } @@ -814,7 +822,7 @@ void atk00_attackcanceler(void) { gSpecialStatuses[gBankTarget].lightningRodRedirected = 0; gLastUsedAbility = ABILITY_LIGHTNING_ROD; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TookAttack; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1584,7 +1592,7 @@ void atk09_attackanimation(void) if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; gBattleScripting.animTurn++; gBattleScripting.animTargetsHit++; @@ -1625,7 +1633,7 @@ void atk09_attackanimation(void) } else { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; } } @@ -1710,7 +1718,7 @@ void atk0C_datahpupdate(void) if (gDisableStructs[gActiveBank].substituteHP == 0) { gBattlescriptCurrInstr += 2; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SubstituteFade; return; } @@ -1898,7 +1906,7 @@ void atk0F_resultmessage(void) gLastUsedItem = gBattleMons[gBankTarget].item; gStringBank = gBankTarget; gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_HangedOnMsg; return; default: @@ -1911,14 +1919,14 @@ void atk0F_resultmessage(void) gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO); gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE); gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; return; } else if (gBattleMoveFlags & MOVESTATUS_ENDURED) { gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_EnduredMsg; return; } @@ -1927,7 +1935,7 @@ void atk0F_resultmessage(void) gLastUsedItem = gBattleMons[gBankTarget].item; gStringBank = gBankTarget; gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_HangedOnMsg; return; } @@ -2110,12 +2118,12 @@ void SetMoveEffect(bool8 primary, u8 certain) break; case STATUS_POISON: if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY - && (primary == TRUE || certain == 0x80)) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { gLastUsedAbility = ABILITY_IMMUNITY; RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2132,9 +2140,9 @@ void SetMoveEffect(bool8 primary, u8 certain) if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) - && (primary == 1 || certain == 0x80)) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; gBattleCommunication[MULTISTRING_CHOOSER] = 2; @@ -2157,12 +2165,12 @@ void SetMoveEffect(bool8 primary, u8 certain) break; case STATUS_BURN: if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL - && (primary == 1 || certain == 0x80)) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { gLastUsedAbility = ABILITY_WATER_VEIL; RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_BRNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { @@ -2178,9 +2186,9 @@ void SetMoveEffect(bool8 primary, u8 certain) if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE) && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) - && (primary == 1 || certain == 0x80)) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_BRNPrevention; gBattleCommunication[MULTISTRING_CHOOSER] = 2; @@ -2217,12 +2225,12 @@ void SetMoveEffect(bool8 primary, u8 certain) case STATUS_PARALYSIS: if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER) { - if (primary == TRUE || certain == 0x80) + if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) { gLastUsedAbility = ABILITY_LIMBER; RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PRLZPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2245,12 +2253,12 @@ void SetMoveEffect(bool8 primary, u8 certain) statusChanged = TRUE; break; case STATUS_TOXIC_POISON: - if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { gLastUsedAbility = ABILITY_IMMUNITY; RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2267,9 +2275,9 @@ void SetMoveEffect(bool8 primary, u8 certain) if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) - && (primary == TRUE || certain == 0x80)) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; gBattleCommunication[MULTISTRING_CHOOSER] = 2; @@ -2299,7 +2307,7 @@ void SetMoveEffect(bool8 primary, u8 certain) } if (statusChanged == TRUE) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); @@ -2341,6 +2349,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattlescriptCurrInstr++; return; } + return; } else { @@ -2351,7 +2360,7 @@ void SetMoveEffect(bool8 primary, u8 certain) else { u8 side; - switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + switch (gBattleCommunication[MOVE_EFFECT_BYTE]) { case MOVE_EFFECT_CONFUSION: if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO @@ -2363,47 +2372,46 @@ void SetMoveEffect(bool8 primary, u8 certain) { gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; } break; case MOVE_EFFECT_FLINCH: if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS) { - if (primary == 1 || certain == 0x80) + if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) { gLastUsedAbility = ABILITY_INNER_FOCUS; RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS); gBattlescriptCurrInstr = BattleScript_FlinchPrevention; - RESET_RETURN } else { gBattlescriptCurrInstr++; - break; } } else { if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; - INCREMENT_RESET_RETURN + gBattlescriptCurrInstr++; } break; case MOVE_EFFECT_UPROAR: - if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR) - { - gBattlescriptCurrInstr++; - } - else + if (!(gBattleMons[gEffectBank].status2 & STATUS2_UPROAR)) { + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gEffectBank] = gCurrentMove; gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; } + else + { + gBattlescriptCurrInstr++; + } break; case MOVE_EFFECT_PAYDAY: if (GET_BANK_SIDE(gBankAttacker) == SIDE_PLAYER) @@ -2413,7 +2421,7 @@ void SetMoveEffect(bool8 primary, u8 certain) if (PayDay > gPaydayMoney) gPaydayMoney = 0xFFFF; } - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case MOVE_EFFECT_TRI_ATTACK: @@ -2440,18 +2448,20 @@ void SetMoveEffect(bool8 primary, u8 certain) } else { - gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 3) << 0xD; *(gBattleStruct->wrappedMove + gEffectBank * 2 + 0) = gCurrentMove; *(gBattleStruct->wrappedMove + gEffectBank * 2 + 1) = gCurrentMove >> 8; *(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; - for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; gBattleCommunication[MULTISTRING_CHOOSER] <= 4; gBattleCommunication[MULTISTRING_CHOOSER]++) + for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++) { - if (gCurrentMove == gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]]) + if (gBattleCommunication[MULTISTRING_CHOOSER] > 4) + break; + if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) break; } } @@ -2461,58 +2471,90 @@ void SetMoveEffect(bool8 primary, u8 certain) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; - case 15 ... 21: // stat + 1 - if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, affectsUser, 0)) + case MOVE_EFFECT_ATK_PLUS_1: + case MOVE_EFFECT_DEF_PLUS_1: + case MOVE_EFFECT_SPD_PLUS_1: + case MOVE_EFFECT_SP_ATK_PLUS_1: + case MOVE_EFFECT_SP_DEF_PLUS_1: + case MOVE_EFFECT_ACC_PLUS_1: + case MOVE_EFFECT_EVS_PLUS_1: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1), + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_1 + 1, + affectsUser, 0)) { gBattlescriptCurrInstr++; } else { - gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); gBattleScripting.animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatUp; } break; - case 22 ... 28: // stat - 1 - if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, affectsUser, 0)) + case MOVE_EFFECT_ATK_MINUS_1: + case MOVE_EFFECT_DEF_MINUS_1: + case MOVE_EFFECT_SPD_MINUS_1: + case MOVE_EFFECT_SP_ATK_MINUS_1: + case MOVE_EFFECT_SP_DEF_MINUS_1: + case MOVE_EFFECT_ACC_MINUS_1: + case MOVE_EFFECT_EVS_MINUS_1: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE, + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_1 + 1, + affectsUser, 0)) { gBattlescriptCurrInstr++; } else { - gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); gBattleScripting.animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatDown; } break; - case 39 ... 45: // stat + 2 - if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, affectsUser, 0)) + case MOVE_EFFECT_ATK_PLUS_2: + case MOVE_EFFECT_DEF_PLUS_2: + case MOVE_EFFECT_SPD_PLUS_2: + case MOVE_EFFECT_SP_ATK_PLUS_2: + case MOVE_EFFECT_SP_DEF_PLUS_2: + case MOVE_EFFECT_ACC_PLUS_2: + case MOVE_EFFECT_EVS_PLUS_2: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2), + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_2 + 1, + affectsUser, 0)) { gBattlescriptCurrInstr++; } else { - gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); gBattleScripting.animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatUp; } break; - case 46 ... 52: // stat - 2 - if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, affectsUser, 0)) + case MOVE_EFFECT_ATK_MINUS_2: + case MOVE_EFFECT_DEF_MINUS_2: + case MOVE_EFFECT_SPD_MINUS_2: + case MOVE_EFFECT_SP_ATK_MINUS_2: + case MOVE_EFFECT_SP_DEF_MINUS_2: + case MOVE_EFFECT_ACC_MINUS_2: + case MOVE_EFFECT_EVS_MINUS_2: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE, + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_2 + 1, + affectsUser, 0)) { gBattlescriptCurrInstr++; } else { - gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); gBattleScripting.animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatDown; } break; @@ -2544,9 +2586,8 @@ void SetMoveEffect(bool8 primary, u8 certain) | BATTLE_TYPE_SECRET_BASE))) { gBattlescriptCurrInstr++; - break; } - if (!(gBattleTypeFlags & + else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK @@ -2555,57 +2596,51 @@ void SetMoveEffect(bool8 primary, u8 certain) && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]])) { gBattlescriptCurrInstr++; - break; } - if (gBattleMons[gBankTarget].item + else if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) { - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_NoItemSteal; gLastUsedAbility = gBattleMons[gBankTarget].ability; RecordAbilityBattle(gBankTarget, gLastUsedAbility); - - break; } - if (gBattleMons[gBankAttacker].item) + else if (gBattleMons[gBankAttacker].item + || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY + || (gBattleMons[gBankTarget].item > 0x78 && gBattleMons[gBankTarget].item < 0x85) + || gBattleMons[gBankTarget].item == 0) { gBattlescriptCurrInstr++; - break; } - if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + else { - gBattlescriptCurrInstr++; - break; - } - if (gBattleMons[gBankTarget].item > 0x78 - && gBattleMons[gBankTarget].item < (0x79 + 12)) - { - gBattlescriptCurrInstr++; - break; - } - if (gBattleMons[gBankTarget].item == 0) - { - gBattlescriptCurrInstr++; - break; + // This is a leftover from R/S direct use of ewram addresses + void** memes1 = (void**)(&gBattleStruct); + void* memes2 = (void*)((u32)(gBankAttacker * 2 + offsetof(struct BattleStruct, field_D0))); + u16* memes3 = (u16*)(((void*)(*memes1) + (u32)(memes2))); + gLastUsedItem = *memes3 = gBattleMons[gBankTarget].item; + + // A sane representation of this would simply be: + // gLastUsedItem = gBattleStruct->field_D0[gBankAttacker] = gBattleMons[gBankTarget].item; + + gBattleMons[gBankTarget].item = 0; + + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBufferBankForExecution(gBankAttacker); + + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); + + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_ItemSteal; + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0; } - *(u16*)((u8*)((gBattleStruct->field_D0) + gBankAttacker * 2)) = gLastUsedItem = gBattleMons[gBankTarget].item; - gBattleMons[gBankTarget].item = 0; - - gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); - MarkBufferBankForExecution(gBankAttacker); - - gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); - MarkBufferBankForExecution(gBankTarget); - - b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_ItemSteal; - - *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0; - *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0; } break; case MOVE_EFFECT_PREVENT_ESCAPE: @@ -2618,11 +2653,11 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattlescriptCurrInstr++; break; case MOVE_EFFECT_ALL_STATS_UP: - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_AllStatsUp; break; case MOVE_EFFECT_RAPIDSPIN: - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_RapidSpinAway; break; case MOVE_EFFECT_REMOVE_PARALYSIS: // Smelling salts @@ -2635,15 +2670,15 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; } break; case MOVE_EFFECT_ATK_DEF_DOWN: // SuperPower - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_AtkDefDown; break; case MOVE_EFFECT_RECOIL_33_PARALYSIS: // Volt Tackle @@ -2651,7 +2686,7 @@ void SetMoveEffect(bool8 primary, u8 certain) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case MOVE_EFFECT_THRASH: @@ -2676,16 +2711,12 @@ void SetMoveEffect(bool8 primary, u8 certain) else { gLastUsedAbility = ABILITY_STICKY_HOLD; - gBattlescriptCurrInstr = BattleScript_NoItemSteal; + gBattlescriptCurrInstr = BattleScript_StickyHoldOnKnockOff; RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); } break; } - if (gBattleMons[gEffectBank].item == 0) - { - gBattlescriptCurrInstr++; - } - else + if (gBattleMons[gEffectBank].item) { side = GetBankSide(gEffectBank); @@ -2693,18 +2724,19 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMons[gEffectBank].item = 0; gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_KnockedOff; *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 0) = 0; *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 1) = 0; } - break; - default: - gBattlescriptCurrInstr++; + else + { + gBattlescriptCurrInstr++; + } break; case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_SAtkDown2; break; } @@ -2713,3 +2745,1615 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleCommunication[MOVE_EFFECT_BYTE] = 0; } + +void atk15_seteffectwithchancetarget(void) +{ + u32 percentChance; + + if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE) + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; + else + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; + + if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN); + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); + } + else if (Random() % 100 < percentChance + && gBattleCommunication[MOVE_EFFECT_BYTE] + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (percentChance >= 100) + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); + else + SetMoveEffect(0, 0); + } + else + { + gBattlescriptCurrInstr++; + } + + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleScripting.field_16 = 0; +} + +void atk16_seteffectprimary(void) +{ + SetMoveEffect(TRUE, 0); +} + +void atk17_seteffectsecondary(void) +{ + SetMoveEffect(FALSE, 0); +} + +void atk18_status_effect_clear(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC) + gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + else + gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattlescriptCurrInstr += 2; + gBattleScripting.field_16 = 0; +} + +void atk19_faint_pokemon(void) +{ + const u8 *BS_ptr; + + if (gBattlescriptCurrInstr[2] != 0) + { + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + { + BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + + BattleScriptPop(); + gBattlescriptCurrInstr = BS_ptr; + gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + } + else + { + gBattlescriptCurrInstr += 7; + } + } + else + { + u8 bank; + + if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER) + { + gActiveBank = gBankAttacker; + bank = gBankTarget; + BS_ptr = BattleScript_FaintAttacker; + } + else + { + gActiveBank = gBankTarget; + bank = gBankAttacker; + BS_ptr = BattleScript_FaintTarget; + } + if (!(gAbsentBankFlags & gBitTable[gActiveBank]) + && gBattleMons[gActiveBank].hp == 0) + { + gHitMarker |= HITMARKER_FAINTED(gActiveBank); + BattleScriptPush(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = BS_ptr; + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + gHitMarker |= HITMARKER_x400000; + if (gBattleResults.playerFaintCounter < 0xFF) + gBattleResults.playerFaintCounter++; + AdjustFriendshipOnBattleFaint(gActiveBank); + } + else + { + if (gBattleResults.opponentFaintCounter < 0xFF) + gBattleResults.opponentFaintCounter++; + gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL); + } + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0) + { + gHitMarker &= ~(HITMARKER_DESTINYBOND); + BattleScriptPush(gBattlescriptCurrInstr); + gBattleMoveDamage = gBattleMons[bank].hp; + gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife; + } + if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE) + && !(gHitMarker & HITMARKER_GRUDGE) + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && gBattleMons[gBankAttacker].hp != 0 + && gCurrentMove != MOVE_STRUGGLE) + { + u8 moveIndex = *(gBattleStruct->chosenMovesIds + gBankAttacker); + + gBattleMons[gBankAttacker].pp[moveIndex] = 0; + BattleScriptPush(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + MarkBufferBankForExecution(gActiveBank); + + gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].moves[moveIndex]; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].moves[moveIndex] >> 8; + gBattleTextBuff1[4] = EOS; + } + } + else + { + gBattlescriptCurrInstr += 7; + } + } +} + +void atk1A_faint_animation(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitFaintAnimation(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } +} + +void atk1B_faint_effects_clear(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBank].hp == 0) + { + gBattleMons[gActiveBank].status1 = 0; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + + UndoEffectsAfterFainting(); // Effects like attractions, trapping, etc. + gBattlescriptCurrInstr += 2; + } +} + +void atk1C_jumpifstatus(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 10; +} + +void atk1D_jumpifstatus2(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 10; +} + +void atk1E_jumpifability(void) +{ + u8 bank; + u8 ability = BSScriptRead8(gBattlescriptCurrInstr + 2); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_ATTACKER_SIDE) + { + bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0); + if (bank) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(bank - 1, gLastUsedAbility); + gBattleScripting.field_15 = bank - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_NOT_ATTACKER_SIDE) + { + bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0); + if (bank) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(bank - 1, gLastUsedAbility); + gBattleScripting.field_15 = bank - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else + { + bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[bank].ability == ability) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(bank, gLastUsedAbility); + gBattleScripting.field_15 = bank; + } + else + gBattlescriptCurrInstr += 7; + } +} + +void atk1F_jumpifsideaffecting(void) +{ + u8 side; + u16 flags; + const u8* jumpPtr; + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_ATTACKER) + side = GET_BANK_SIDE(gBankAttacker); + else + side = GET_BANK_SIDE(gBankTarget); + + flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2); + jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4); + + if (gSideAffecting[side] & flags) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 8; +} + +void atk20_jumpifstat(void) +{ + u8 ret = 0; + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 value = gBattleMons[bank].statStages[BSScriptRead8(gBattlescriptCurrInstr + 3)]; + + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case CMP_EQUAL: + if (value == BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_NOT_EQUAL: + if (value != BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_GREATER_THAN: + if (value > BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_LESS_THAN: + if (value < BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_COMMON_BITS: + if (value & BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_NO_COMMON_BITS: + if (!(value & BSScriptRead8(gBattlescriptCurrInstr + 4))) + ret++; + break; + } + + if (ret) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + else + gBattlescriptCurrInstr += 9; +} + +void atk21_jumpifstatus3(void) +{ + u32 flags; + const u8* jumpPtr; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); + + if (BSScriptRead8(gBattlescriptCurrInstr + 6)) + { + if ((gStatuses3[gActiveBank] & flags) != 0) + gBattlescriptCurrInstr += 11; + else + gBattlescriptCurrInstr = jumpPtr; + } + else + { + if ((gStatuses3[gActiveBank] & flags) != 0) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 11; + } +} + +void atk22_jumpiftype(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 type = BSScriptRead8(gBattlescriptCurrInstr + 2); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + + if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 7; +} + +void atk23_getexp(void) +{ + u16 item; + s32 i; // also used as stringId + u8 holdEffect; + s32 sentIn; + + s32 viaExpShare = 0; + u16* exp = &gBattleStruct->expValue; + + gBank1 = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1]; + + switch (gBattleScripting.atk23_state) + { + case 0: // check if should receive exp at all + if (GetBankSide(gBank1) != SIDE_OPPONENT || (gBattleTypeFlags & + (BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_x4000000 + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_BATTLE_TOWER + | BATTLE_TYPE_EREADER_TRAINER))) + { + gBattleScripting.atk23_state = 6; // goto last case + } + else + { + gBattleScripting.atk23_state++; + gBattleStruct->field_DF |= gBitTable[gBattlePartyID[gBank1]]; + } + break; + case 1: // calculate experience points to redistribute + { + u16 calculatedExp; + s32 viaSentIn; + + for (viaSentIn = 0, i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + continue; + if (gBitTable[i] & sentIn) + viaSentIn++; + + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + + if (holdEffect == HOLD_EFFECT_EXP_SHARE) + viaExpShare++; + } + + calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7; + + if (viaExpShare) // at least one mon is getting exp via exp share + { + *exp = calculatedExp / 2 / viaSentIn; + if (*exp == 0) + *exp = 1; + + gExpShareExp = calculatedExp / 2 / viaExpShare; + if (gExpShareExp == 0) + gExpShareExp = 1; + } + else + { + *exp = calculatedExp / viaSentIn; + if (*exp == 0) + *exp = 1; + gExpShareExp = 0; + } + + gBattleScripting.atk23_state++; + gBattleStruct->expGetterId = 0; + gBattleStruct->sentInPokes = sentIn; + } + // fall through + case 2: // set exp value to the poke in expgetter_id and print message + if (gBattleExecBuffer == 0) + { + item = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HELD_ITEM); + + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + + if (holdEffect != HOLD_EFFECT_EXP_SHARE && !(gBattleStruct->sentInPokes & 1)) + { + *(&gBattleStruct->sentInPokes) >>= 1; + gBattleScripting.atk23_state = 5; + gBattleMoveDamage = 0; // used for exp + } + else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) == MAX_MON_LEVEL) + { + *(&gBattleStruct->sentInPokes) >>= 1; + gBattleScripting.atk23_state = 5; + gBattleMoveDamage = 0; // used for exp + } + else + { + // music change in wild battle after fainting a poke + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong) + { + BattleMusicStop(); + PlayBGM(0x161); + gBattleStruct->wildVictorySong++; + } + + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP)) + { + if (gBattleStruct->sentInPokes & 1) + gBattleMoveDamage = *exp; + else + gBattleMoveDamage = 0; + + if (holdEffect == HOLD_EFFECT_EXP_SHARE) + gBattleMoveDamage += gExpShareExp; + if (holdEffect == HOLD_EFFECT_LUCKY_EGG) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + + if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterId])) + { + // check if the pokemon doesn't belong to the player + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterId >= 3) + { + i = 0x149; + } + else + { + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + i = 0x14A; + } + } + else + { + i = 0x149; + } + + // get exp getter bank + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (!(gBattlePartyID[2] != gBattleStruct->expGetterId) && !(gAbsentBankFlags & gBitTable[2])) + gBattleStruct->expGetterBank = 2; + else + { + if (!(gAbsentBankFlags & gBitTable[0])) + gBattleStruct->expGetterBank = 0; + else + gBattleStruct->expGetterBank = 2; + } + } + else + gBattleStruct->expGetterBank = 0; + + // buffer poke name + gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gBattleStruct->expGetterBank; + gBattleTextBuff1[3] = gBattleStruct->expGetterId; + gBattleTextBuff1[4] = EOS; + + // buffer 'gained' or 'gained a boosted' + gBattleTextBuff2[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = i; + gBattleTextBuff2[3] = (i & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + + // buffer exp number + gBattleTextBuff3[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff3[1] = 1; + gBattleTextBuff3[2] = 4; // word + gBattleTextBuff3[3] = 5; // max digits + gBattleTextBuff3[4] = gBattleMoveDamage; + gBattleTextBuff3[5] = (gBattleMoveDamage & 0x0000FF00) >> 8; + gBattleTextBuff3[6] = (gBattleMoveDamage & 0x00FF0000) >> 16; + gBattleTextBuff3[7] = (gBattleMoveDamage & 0xFF000000) >> 24; + gBattleTextBuff3[8] = EOS; + + PrepareStringBattle(0xD, gBattleStruct->expGetterBank); + MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species); + } + gBattleStruct->sentInPokes >>= 1; + gBattleScripting.atk23_state++; + } + } + break; + case 3: // Set stats and give exp + if (gBattleExecBuffer == 0) + { + gBattleBufferB[gBattleStruct->expGetterBank][0] = 0; + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) != MAX_MON_LEVEL) + { + BATTLE_LVLUP_STATS->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP); + BATTLE_LVLUP_STATS->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK); + BATTLE_LVLUP_STATS->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF); + BATTLE_LVLUP_STATS->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + BATTLE_LVLUP_STATS->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK); + BATTLE_LVLUP_STATS->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF); + + gActiveBank = gBattleStruct->expGetterBank; + EmitExpUpdate(0, gBattleStruct->expGetterId, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + } + gBattleScripting.atk23_state++; + } + break; + case 4: // lvl up if necessary + if (gBattleExecBuffer == 0) + { + gActiveBank = gBattleStruct->expGetterBank; + if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId) + sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + + // buff poke name + gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattleStruct->expGetterId; + gBattleTextBuff1[4] = EOS; + + // buff level + gBattleTextBuff2[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff2[1] = 1; + gBattleTextBuff2[2] = 1; + gBattleTextBuff2[3] = 3; + gBattleTextBuff2[4] = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL); + gBattleTextBuff2[5] = EOS; + + BattleScriptPushCursor(); + gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterId]; + gBattlescriptCurrInstr = BattleScript_LevelUp; + gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)); + AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterId], 0); + + // update battle mon structure after level up + if (gBattlePartyID[0] == gBattleStruct->expGetterId && gBattleMons[0].hp) + { + gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF); + // Why is this duplicated? + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF); + } + // What is else if? + if (gBattlePartyID[2] == gBattleStruct->expGetterId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF); + // Duplicated again, but this time there's no Sp Defense + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK); + } + gBattleScripting.atk23_state = 5; + } + else + { + gBattleMoveDamage = 0; + gBattleScripting.atk23_state = 5; + } + } + break; + case 5: // looper increment + if (gBattleMoveDamage) // there is exp to give, goto case 3 that gives exp + gBattleScripting.atk23_state = 3; + else + { + gBattleStruct->expGetterId++; + if (gBattleStruct->expGetterId <= 5) + gBattleScripting.atk23_state = 2; // loop again + else + gBattleScripting.atk23_state = 6; // we're done + } + break; + case 6: // increment instruction + if (gBattleExecBuffer == 0) + { + // not sure why gf clears the item and ability here + gBattleMons[gBank1].item = 0; + gBattleMons[gBank1].ability = 0; + gBattlescriptCurrInstr += 2; + } + break; + } +} + +#ifdef NONMATCHING +void atk24(void) +{ + u16 HP_count = 0; + s32 i; + + if (gBattleExecBuffer) + return; + + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == STEVEN_PARTNER_ID) + { + for (i = 0; i < 3; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP); + } + } + else + { + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) + && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A0 & gBitTable[i]))) + { + HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP); + } + } + } + + if (HP_count == 0) + gBattleOutcome |= BATTLE_LOST; + + for (HP_count = 0, i = 0; i < 6; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG) + && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A1 & gBitTable[i]))) + { + HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP); + } + } + + if (HP_count == 0) + gBattleOutcome |= BATTLE_WON; + + if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))) + { + s32 foundPlayer; + s32 foundOpponent; + + // Impossible to decompile loops. + for (foundPlayer = 0, i = 0; i < gNoOfAllBanks; i += 2) + { + if (HITMARKER_UNK(i) & gHitMarker && !gSpecialStatuses[i].flag40) + foundPlayer++; + } + + for (foundOpponent = 0, i = 1; i < gNoOfAllBanks; i += 2) + { + if (HITMARKER_UNK(i) & gHitMarker && !gSpecialStatuses[i].flag40) + foundOpponent++; + } + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (foundOpponent + foundPlayer > 1) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + else + { + if (foundOpponent != 0 && foundPlayer != 0) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + } + else + { + gBattlescriptCurrInstr += 5; + } +} +#else +__attribute__((naked)) +void atk24(void) +{ + asm("\n\ + .syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + movs r6, 0\n\ + ldr r0, =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0804ACE2\n\ + b _0804AF22\n\ + _0804ACE2:\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 15\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804AD48\n\ + ldr r0, =gPartnerTrainerId\n\ + ldrh r1, [r0]\n\ + ldr r0, =0x00000c03\n\ + cmp r1, r0\n\ + bne _0804AD48\n\ + movs r5, 0\n\ + _0804ACFC:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0804AD2C\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0804AD2C\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + _0804AD2C:\n\ + adds r5, 0x1\n\ + cmp r5, 0x2\n\ + ble _0804ACFC\n\ + b _0804ADA8\n\ + .pool\n\ + _0804AD48:\n\ + movs r5, 0\n\ + _0804AD4A:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0804ADA2\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0804ADA2\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 11\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804AD94\n\ + ldr r0, =gBattleStruct\n\ + ldr r0, [r0]\n\ + movs r1, 0xA8\n\ + lsls r1, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + ldr r2, =gBitTable\n\ + lsls r0, r5, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0804ADA2\n\ + _0804AD94:\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + _0804ADA2:\n\ + adds r5, 0x1\n\ + cmp r5, 0x5\n\ + ble _0804AD4A\n\ + _0804ADA8:\n\ + cmp r6, 0\n\ + bne _0804ADB6\n\ + ldr r0, =gBattleOutcome\n\ + ldrb r1, [r0]\n\ + movs r2, 0x2\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + _0804ADB6:\n\ + movs r6, 0\n\ + movs r5, 0\n\ + _0804ADBA:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, =gEnemyParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0804AE10\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0804AE10\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 11\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804AE02\n\ + ldr r0, =gBattleStruct\n\ + ldr r0, [r0]\n\ + ldr r1, =0x000002a1\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + ldr r2, =gBitTable\n\ + lsls r0, r5, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0804AE10\n\ + _0804AE02:\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + _0804AE10:\n\ + adds r5, 0x1\n\ + cmp r5, 0x5\n\ + ble _0804ADBA\n\ + ldr r2, =gBattleOutcome\n\ + cmp r6, 0\n\ + bne _0804AE24\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + _0804AE24:\n\ + ldrb r0, [r2]\n\ + cmp r0, 0\n\ + bne _0804AF1A\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r1, [r0]\n\ + ldr r2, =0x02000002\n\ + ands r1, r2\n\ + mov r8, r0\n\ + cmp r1, 0\n\ + beq _0804AF1A\n\ + movs r3, 0\n\ + movs r5, 0\n\ + ldr r0, =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + mov r12, r0\n\ + ldr r7, =gBattlescriptCurrInstr\n\ + cmp r3, r1\n\ + bge _0804AE70\n\ + ldr r0, =gHitMarker\n\ + movs r6, 0x80\n\ + lsls r6, 21\n\ + ldr r4, [r0]\n\ + adds r2, r1, 0\n\ + ldr r1, =gSpecialStatuses\n\ + _0804AE54:\n\ + adds r0, r6, 0\n\ + lsls r0, r5\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _0804AE68\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _0804AE68\n\ + adds r3, 0x1\n\ + _0804AE68:\n\ + adds r1, 0x28\n\ + adds r5, 0x2\n\ + cmp r5, r2\n\ + blt _0804AE54\n\ + _0804AE70:\n\ + movs r2, 0\n\ + movs r5, 0x1\n\ + mov r4, r12\n\ + ldrb r1, [r4]\n\ + cmp r5, r1\n\ + bge _0804AEAA\n\ + ldr r0, =gHitMarker\n\ + movs r4, 0x80\n\ + lsls r4, 21\n\ + mov r12, r4\n\ + ldr r6, [r0]\n\ + ldr r0, =gSpecialStatuses\n\ + adds r4, r1, 0\n\ + adds r1, r0, 0\n\ + adds r1, 0x14\n\ + _0804AE8E:\n\ + mov r0, r12\n\ + lsls r0, r5\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _0804AEA2\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _0804AEA2\n\ + adds r2, 0x1\n\ + _0804AEA2:\n\ + adds r1, 0x28\n\ + adds r5, 0x2\n\ + cmp r5, r4\n\ + blt _0804AE8E\n\ + _0804AEAA:\n\ + mov r1, r8\n\ + ldr r0, [r1]\n\ + movs r1, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804AEF0\n\ + adds r0, r2, r3\n\ + cmp r0, 0x1\n\ + bgt _0804AEF8\n\ + b _0804AF12\n\ + .pool\n\ + _0804AEF0:\n\ + cmp r2, 0\n\ + beq _0804AF12\n\ + cmp r3, 0\n\ + beq _0804AF12\n\ + _0804AEF8:\n\ + ldr r2, [r7]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + adds r1, r0\n\ + str r1, [r7]\n\ + b _0804AF22\n\ + _0804AF12:\n\ + ldr r0, [r7]\n\ + adds r0, 0x5\n\ + str r0, [r7]\n\ + b _0804AF22\n\ + _0804AF1A:\n\ + ldr r1, =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + _0804AF22:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +void MoveValuesCleanUp(void) +{ + gBattleMoveFlags = 0; + gBattleScripting.dmgMultiplier = 1; + gCritMultiplier = 1; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleCommunication[6] = 0; + gHitMarker &= ~(HITMARKER_DESTINYBOND); + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); +} + +void atk25_move_values_cleanup(void) +{ + MoveValuesCleanUp(); + gBattlescriptCurrInstr += 1; +} + +void atk26_set_multihit(void) +{ + gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr += 2; +} + +void atk27_decrement_multihit(void) +{ + if (--gMultiHitCounter == 0) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +void atk28_goto(void) +{ + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +void atk29_jumpifbyte(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + const u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u8 value = BSScriptRead8(gBattlescriptCurrInstr + 6); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); + + gBattlescriptCurrInstr += 11; + + switch (caseID) + { + case CMP_EQUAL: + if (*memByte == value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NOT_EQUAL: + if (*memByte != value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_GREATER_THAN: + if (*memByte > value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_LESS_THAN: + if (*memByte < value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_COMMON_BITS: + if (*memByte & value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NO_COMMON_BITS: + if (!(*memByte & value)) + gBattlescriptCurrInstr = jumpPtr; + break; + } +} + +void atk2A_jumpifhalfword(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + const u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8); + + gBattlescriptCurrInstr += 12; + + switch (caseID) + { + case CMP_EQUAL: + if (*memHword == value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NOT_EQUAL: + if (*memHword != value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_GREATER_THAN: + if (*memHword > value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_LESS_THAN: + if (*memHword < value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_COMMON_BITS: + if (*memHword & value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NO_COMMON_BITS: + if (!(*memHword & value)) + gBattlescriptCurrInstr = jumpPtr; + break; + } +} + +void atk2B_jumpifword(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + const u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + gBattlescriptCurrInstr += 14; + + switch (caseID) + { + case CMP_EQUAL: + if (*memWord == value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NOT_EQUAL: + if (*memWord != value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_GREATER_THAN: + if (*memWord > value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_LESS_THAN: + if (*memWord < value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_COMMON_BITS: + if (*memWord & value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NO_COMMON_BITS: + if (!(*memWord & value)) + gBattlescriptCurrInstr = jumpPtr; + break; + } +} + +void atk2C_jumpifarrayequal(void) +{ + const u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + u8 i; + for (i = 0; i < size; i++) + { + if (*mem1 != *mem2) + { + gBattlescriptCurrInstr += 14; + break; + } + mem1++, mem2++; + } + + if (i == size) + gBattlescriptCurrInstr = jumpPtr; +} + +void atk2D_jumpifarraynotequal(void) +{ + u8 equalBytes = 0; + const u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + u8 i; + for (i = 0; i < size; i++) + { + if (*mem1 == *mem2) + { + equalBytes++; + } + mem1++, mem2++; + } + + if (equalBytes != size) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 14; +} + +void atk2E_setbyte(void) +{ + u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *memByte = BSScriptRead8(gBattlescriptCurrInstr + 5); + + gBattlescriptCurrInstr += 6; +} + +void atk2F_addbyte(void) +{ + u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *memByte += BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +void atk30_subbyte(void) +{ + u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *memByte -= BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +void atk31_copyarray(void) +{ + u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + s32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + + s32 i; + for (i = 0; i < size; i++) + { + dest[i] = src[i]; + } + + gBattlescriptCurrInstr += 10; +} + +void atk32_copyarray_withindex(void) +{ + u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + const u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9); + s32 size = BSScriptRead8(gBattlescriptCurrInstr + 13); + + s32 i; + for (i = 0; i < size; i++) + { + dest[i] = src[i + *index]; + } + + gBattlescriptCurrInstr += 14; +} + +void atk33_orbyte(void) +{ + u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *memByte |= BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +void atk34_orhalfword(void) +{ + u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + *memHword |= val; + gBattlescriptCurrInstr += 7; +} + +void atk35_orword(void) +{ + u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); + + *memWord |= val; + gBattlescriptCurrInstr += 9; +} + +void atk36_bicbyte(void) +{ + u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *memByte &= ~(BSScriptRead8(gBattlescriptCurrInstr + 5)); + gBattlescriptCurrInstr += 6; +} + +void atk37_bichalfword(void) +{ + u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + *memHword &= ~val; + gBattlescriptCurrInstr += 7; +} + +void atk38_bicword(void) +{ + u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); + + *memWord &= ~val; + gBattlescriptCurrInstr += 9; +} + +void atk39_pause(void) +{ + if (gBattleExecBuffer == 0) + { + u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= value) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + } + } +} + +void atk3A_waitstate(void) +{ + if (gBattleExecBuffer == 0) + gBattlescriptCurrInstr++; +} + +void atk3B_healthbar_update(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + gActiveBank = gBankTarget; + else + gActiveBank = gBankAttacker; + + EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +void atk3C_return(void) +{ + BattleScriptPop(); +} + +void atk3D_end(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + sub_81A5718(gBankAttacker); + + gBattleMoveFlags = 0; + gActiveBank = 0; + gFightStateTracker = 0xB; +} + +void atk3E_end2(void) +{ + gActiveBank = 0; + gFightStateTracker = 0xB; +} + +void atk3F_end3(void) // pops the main function stack +{ + BattleScriptPop(); + if (BATTLE_CALLBACKS_STACK->size) + BATTLE_CALLBACKS_STACK->size--; + gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size]; +} + +void atk41_call(void) +{ + BattleScriptPush(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +void atk42_jumpiftype2(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; +} + +void atk43_jumpifabilitypresent(void) +{ + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, BSScriptRead8(gBattlescriptCurrInstr + 1), 0, 0)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +void atk44(void) +{ + *(gBankAttacker + gBattleStruct->field_54) = 1; +} + +void atk45_playanimation(void) +{ + const u16* argumentPtr; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + + if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE + || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE + || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE) + { + EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } + else if (gHitMarker & HITMARKER_NO_ANIMATIONS) + { + BattleScriptPush(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } + else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES + || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES + || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES + || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES) + { + EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } + else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) + { + gBattlescriptCurrInstr += 7; + } + else + { + EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } +} + +void atk46_playanimation2(void) // animation Id is stored in the first pointer +{ + const u16* argumentPtr; + const u8* animationIdPtr; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (*animationIdPtr == B_ANIM_STATS_CHANGE + || *animationIdPtr == B_ANIM_SNATCH_MOVE + || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE) + { + EmitBattleAnimation(0, *animationIdPtr, *argumentPtr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + } + else if (gHitMarker & HITMARKER_NO_ANIMATIONS) + { + gBattlescriptCurrInstr += 10; + } + else if (*animationIdPtr == B_ANIM_RAIN_CONTINUES + || *animationIdPtr == B_ANIM_SUN_CONTINUES + || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES + || *animationIdPtr == B_ANIM_HAIL_CONTINUES) + { + EmitBattleAnimation(0, *animationIdPtr, *argumentPtr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + } + else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) + { + gBattlescriptCurrInstr += 10; + } + else + { + EmitBattleAnimation(0, *animationIdPtr, *argumentPtr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + } +} + +void atk47_setgraphicalstatchangevalues(void) +{ + u8 value = 0; + switch (gBattleScripting.statChanger & 0xF0) + { + case 0x10: // +1 + value = 0xF; + break; + case 0x20: // +2 + value = 0x27; + break; + case 0x90: // -1 + value = 0x16; + break; + case 0xA0: // -2 + value = 0x2E; + break; + } + gBattleScripting.animArg1 = (gBattleScripting.statChanger & 0xF) + value - 1; + gBattleScripting.animArg2 = 0; + gBattlescriptCurrInstr++; +} + +void atk48_playstatchangeanimation(void) +{ + s32 currStat = 0; + s16 statAnimId = 0; + s32 checkingStatAnimId = 0; + s32 changeableStats = 0; + u32 statsToCheck = 0; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + statsToCheck = BSScriptRead8(gBattlescriptCurrInstr + 2); + + if (gBattlescriptCurrInstr[3] & 1) // goes down + { + for (checkingStatAnimId = (gBattlescriptCurrInstr[3] & 0x2) ? 0x2D : 0x15; + statsToCheck != 0; + statsToCheck >>= 1, checkingStatAnimId += 1, currStat++) + { + if (!(statsToCheck & 1)) + continue; + if (!(gBattlescriptCurrInstr[3] & 8)) + { + if (gBattleMons[gActiveBank].statStages[currStat] > 0) + { + statAnimId = checkingStatAnimId; + changeableStats++; + } + } + else if (!gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer + && gBattleMons[gActiveBank].ability != ABILITY_CLEAR_BODY + && gBattleMons[gActiveBank].ability != ABILITY_WHITE_SMOKE + && !(gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && currStat == STAT_STAGE_ACC) + && !(gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && currStat == STAT_STAGE_ATK)) + { + if (gBattleMons[gActiveBank].statStages[currStat] > 0) + { + statAnimId = checkingStatAnimId; + changeableStats++; + } + } + } + + if (changeableStats > 1) // more than one stat, so the color is gray + { + if (gBattlescriptCurrInstr[3] & 2) + statAnimId = 0x3A; + else + statAnimId = 0x39; + } + } + else // goes up + { + for (checkingStatAnimId = (gBattlescriptCurrInstr[3] & 0x2) ? 0x26 : 0xE; + statsToCheck != 0; + statsToCheck >>= 1, checkingStatAnimId += 1, currStat++) + { + if (statsToCheck & 1 && gBattleMons[gActiveBank].statStages[currStat] < 0xC) + { + statAnimId = checkingStatAnimId; + changeableStats++; + } + } + + if (changeableStats > 1) // more than one stat, so the color is gray + { + if (gBattlescriptCurrInstr[3] & 2) + statAnimId = 0x38; + else + statAnimId = 0x37; + } + } + + if (gBattlescriptCurrInstr[3] & 4 && changeableStats < 2) + { + gBattlescriptCurrInstr += 4; + } + else if (changeableStats != 0 && gBattleScripting.field_1B == 0) + { + EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId); + MarkBufferBankForExecution(gActiveBank); + if (gBattlescriptCurrInstr[3] & 4 && changeableStats > 1) + gBattleScripting.field_1B = 1; + gBattlescriptCurrInstr += 4; + } + else + { + gBattlescriptCurrInstr += 4; + } +} diff --git a/sym_common.txt b/sym_common.txt index 23809c1a73..834f239185 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -218,7 +218,7 @@ gUnknown_03005D3A: @ 3005D3A gUnknown_03005D46: @ 3005D46 .space 0xE -gUnknown_03005D54: @ 3005D54 +gLeveledUpInBattle: @ 3005D54 .space 0xC gBattleBankFunc: @ 3005D60 diff --git a/sym_ewram.txt b/sym_ewram.txt index e1238a0cfe..616b1ca80e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -475,13 +475,13 @@ gWishFutureKnock: @ 20243D0 gUnknown_020243FC: @ 20243FC .space 0x2 -gUnknown_020243FE: @ 20243FE +gSentPokesToOpponent: @ 20243FE .space 0x2 gDynamicBasePower: @ 2024400 .space 0x2 -gUnknown_02024402: @ 2024402 +gExpShareExp: @ 2024402 .space 0x2 gEnigmaBerries: @ 2024404 From fc57c6c817bcb8bed4469b5114ced17129bdca81 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 23 Sep 2017 00:06:52 +0200 Subject: [PATCH 022/182] atk 48 is really troublesome --- include/battle.h | 5 ++++ src/battle_4.c | 67 ++++++++++++++++++++++++------------------------ 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/include/battle.h b/include/battle.h index 920a600600..957e3542bd 100644 --- a/include/battle.h +++ b/include/battle.h @@ -784,6 +784,11 @@ extern struct BattleStruct* gBattleStruct; #define B_ANIM_x1C 0x1C #define B_ANIM_x1D 0x1D +#define ATK48_STAT_NEGATIVE 0x1 +#define ATK48_STAT_BY_TWO 0x2 +#define ATK48_BIT_x4 0x4 +#define ATK48_LOWER_FAIL_CHECK 0x8 + #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 #define GET_STAT_BUFF_VALUE(n)((n & 0xF0) >> 4) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit diff --git a/src/battle_4.c b/src/battle_4.c index 8e0be22c21..ec84d1a5c5 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -4271,48 +4271,49 @@ void atk47_setgraphicalstatchangevalues(void) void atk48_playstatchangeanimation(void) { - s32 currStat = 0; + u32 currStat = 0; s16 statAnimId = 0; - s32 checkingStatAnimId = 0; + s16 checkingStatAnimId = 0; s32 changeableStats = 0; u32 statsToCheck = 0; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); - statsToCheck = BSScriptRead8(gBattlescriptCurrInstr + 2); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + statsToCheck = gBattlescriptCurrInstr[2]; - if (gBattlescriptCurrInstr[3] & 1) // goes down + if (gBattlescriptCurrInstr[3] & ATK48_STAT_NEGATIVE) // goes down { - for (checkingStatAnimId = (gBattlescriptCurrInstr[3] & 0x2) ? 0x2D : 0x15; - statsToCheck != 0; - statsToCheck >>= 1, checkingStatAnimId += 1, currStat++) + checkingStatAnimId = (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) ? 0x2D : 0x15; + while (statsToCheck != 0) { - if (!(statsToCheck & 1)) - continue; - if (!(gBattlescriptCurrInstr[3] & 8)) + if (statsToCheck & 1) { - if (gBattleMons[gActiveBank].statStages[currStat] > 0) + if (!(gBattlescriptCurrInstr[3] & ATK48_LOWER_FAIL_CHECK)) { - statAnimId = checkingStatAnimId; - changeableStats++; - } - } - else if (!gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer - && gBattleMons[gActiveBank].ability != ABILITY_CLEAR_BODY - && gBattleMons[gActiveBank].ability != ABILITY_WHITE_SMOKE - && !(gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && currStat == STAT_STAGE_ACC) - && !(gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && currStat == STAT_STAGE_ATK)) - { - if (gBattleMons[gActiveBank].statStages[currStat] > 0) - { - statAnimId = checkingStatAnimId; - changeableStats++; + if (gBattleMons[gActiveBank].statStages[currStat] > 0) + { + statAnimId = checkingStatAnimId; + changeableStats++; + } + } + else if (!gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer + && gBattleMons[gActiveBank].ability != ABILITY_CLEAR_BODY + && gBattleMons[gActiveBank].ability != ABILITY_WHITE_SMOKE + && !(gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && currStat == STAT_STAGE_ACC) + && !(gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && currStat == STAT_STAGE_ATK)) + { + if (gBattleMons[gActiveBank].statStages[currStat] > 0) + { + statAnimId = checkingStatAnimId; + changeableStats++; + } } } + statsToCheck >>= 1, checkingStatAnimId++, currStat++; } if (changeableStats > 1) // more than one stat, so the color is gray { - if (gBattlescriptCurrInstr[3] & 2) + if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) statAnimId = 0x3A; else statAnimId = 0x39; @@ -4320,27 +4321,27 @@ void atk48_playstatchangeanimation(void) } else // goes up { - for (checkingStatAnimId = (gBattlescriptCurrInstr[3] & 0x2) ? 0x26 : 0xE; - statsToCheck != 0; - statsToCheck >>= 1, checkingStatAnimId += 1, currStat++) + checkingStatAnimId = (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) ? 0x26 : 0xE; + while (statsToCheck != 0) { if (statsToCheck & 1 && gBattleMons[gActiveBank].statStages[currStat] < 0xC) { statAnimId = checkingStatAnimId; changeableStats++; } + statsToCheck >>= 1, checkingStatAnimId += 1, currStat++; } if (changeableStats > 1) // more than one stat, so the color is gray { - if (gBattlescriptCurrInstr[3] & 2) + if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) statAnimId = 0x38; else statAnimId = 0x37; } } - if (gBattlescriptCurrInstr[3] & 4 && changeableStats < 2) + if (gBattlescriptCurrInstr[3] & ATK48_BIT_x4 && changeableStats < 2) { gBattlescriptCurrInstr += 4; } @@ -4348,7 +4349,7 @@ void atk48_playstatchangeanimation(void) { EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId); MarkBufferBankForExecution(gActiveBank); - if (gBattlescriptCurrInstr[3] & 4 && changeableStats > 1) + if (gBattlescriptCurrInstr[3] & ATK48_BIT_x4 && changeableStats > 1) gBattleScripting.field_1B = 1; gBattlescriptCurrInstr += 4; } From 3d16b884b93323d2329bd9d805e3ac958311ef0a Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Fri, 22 Sep 2017 18:28:18 -0400 Subject: [PATCH 023/182] updated branch with fix --- src/pokemon_summary_screen.c | 347 +++++++---------------------------- 1 file changed, 62 insertions(+), 285 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 77d1d1b28d..d555b88342 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -99,6 +99,8 @@ s8 sub_81C08F8(s8 a); void sub_81C4204(u8 a, u8 b); void sub_81C20F0(u8 taskId); u8 sub_81C0A50(struct Pokemon* mon); +void sub_81C49E0(); +void sub_81C0E24(); u8 sub_81BFB10(); u8 sub_81B1250(); @@ -702,298 +704,73 @@ void sub_81C0604(u8 taskId, s8 a) } } -#ifdef NONMATCHING void sub_81C0704(u8 taskId) { s16 *data = gTasks[taskId].data; - + switch (data[0]) { - case 0: - StopCryAndClearCrySongs(); - data[0]++; - break; - case 1: - sub_81C4898(); - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3]); - data[0]++; - break; - case 2: - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]); - data[0]++; - break; - case 3: - sub_81C0098(&gUnknown_0203CF1C->currentPoke); - gUnknown_0203CF1C->unk40F0 = 0; - data[0]++; - break; - case 4: - if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke)) - data[0]++; - break; - case 5: - sub_81C49E0(&gUnknown_0203CF1C->currentPoke); - data[0]++; - break; - case 6: - sub_81C4A08(&gUnknown_0203CF1C->currentPoke); - data[0]++; - break; - case 7: - if (gUnknown_0203CF1C->summary.unk7) - sub_81C2074(10, -2); - sub_81C2228(&gUnknown_0203CF1C->currentPoke); - data[1] = 0; - data[0]++; - break; - case 8: - gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &data[1]); - if (gUnknown_0203CF1C->unk40D3 != 0xFF) - { - gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1; - sub_81C0E24(); - data[1] = 0; - data[0]++; - } - break; - case 9: - sub_81C4280(); - data[0]++; - break; - case 10: - sub_81C25E8(); - data[0]++; - break; - case 11: - sub_81C2D9C(gUnknown_0203CF1C->unk40C0); - sub_81C2524(); - data[0]++; - break; - case 12: - gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0; - data[0]++; - break; - case 13: - if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) - { - TaskFunc *func; - data[0] = 0; - func = &gTasks[taskId].func; - *func = sub_81C0510; - } + case 0: + StopCryAndClearCrySongs(); + break; + case 1: + sub_81C4898(); + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3]); + break; + case 2: + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]); + break; + case 3: + sub_81C0098(&gUnknown_0203CF1C->currentPoke); + gUnknown_0203CF1C->unk40F0 = 0; + break; + case 4: + if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) == 0) + return; + break; + case 5: + sub_81C49E0(&gUnknown_0203CF1C->currentPoke); + break; + case 6: + sub_81C4A08(&gUnknown_0203CF1C->currentPoke); + break; + case 7: + if (gUnknown_0203CF1C->summary.unk7) + sub_81C2074(10, -2); + sub_81C2228(&gUnknown_0203CF1C->currentPoke); + data[1] = 0; + break; + case 8: + gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &data[1]); + if (gUnknown_0203CF1C->unk40D3 == 0xFF) + return; + gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1; + sub_81C0E24(); + data[1] = 0; + break; + case 9: + sub_81C4280(); + break; + case 10: + sub_81C25E8(); + break; + case 11: + sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + sub_81C2524(); + break; + case 12: + gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0; + break; + default: + if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) + { + data[0] = 0; + gTasks[taskId].func = sub_81C0510; + } + return; } + data[0]++; } -#else -__attribute__((naked)) -void sub_81C0704(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r4, r1, 3\n\ - ldr r6, =gTasks + 0x8\n\ - adds r5, r4, r6\n\ - movs r1, 0\n\ - ldrsh r0, [r5, r1]\n\ - cmp r0, 0xC\n\ - bls _081C071E\n\ - b _081C08BC\n\ -_081C071E:\n\ - lsls r0, 2\n\ - ldr r1, =_081C0730\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .pool\n\ - .align 2, 0\n\ -_081C0730:\n\ - .4byte _081C0764\n\ - .4byte _081C076A\n\ - .4byte _081C0780\n\ - .4byte _081C07A8\n\ - .4byte _081C07C8\n\ - .4byte _081C07E0\n\ - .4byte _081C07F0\n\ - .4byte _081C0800\n\ - .4byte _081C0828\n\ - .4byte _081C086C\n\ - .4byte _081C0872\n\ - .4byte _081C0878\n\ - .4byte _081C0894\n\ -_081C0764:\n\ - bl StopCryAndClearCrySongs\n\ - b _081C08EC\n\ -_081C076A:\n\ - bl sub_81C4898\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - ldr r1, =0x000040d3\n\ - b _081C0786\n\ - .pool\n\ -_081C0780:\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - ldr r1, =0x000040d4\n\ -_081C0786:\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, =gSprites\n\ - adds r0, r1\n\ - bl DestroySpriteAndFreeResources\n\ - b _081C08EC\n\ - .pool\n\ -_081C07A8:\n\ - ldr r4, =gUnknown_0203CF1C\n\ - ldr r0, [r4]\n\ - adds r0, 0xC\n\ - bl sub_81C0098\n\ - ldr r0, [r4]\n\ - ldr r1, =0x000040f0\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - b _081C08EC\n\ - .pool\n\ -_081C07C8:\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - adds r0, 0xC\n\ - bl sub_81C00F0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _081C07DA\n\ - b _081C08F2\n\ -_081C07DA:\n\ - b _081C08EC\n\ - .pool\n\ -_081C07E0:\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - adds r0, 0xC\n\ - bl sub_81C49E0\n\ - b _081C08EC\n\ - .pool\n\ -_081C07F0:\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - adds r0, 0xC\n\ - bl sub_81C4A08\n\ - b _081C08EC\n\ - .pool\n\ -_081C0800:\n\ - ldr r4, =gUnknown_0203CF1C\n\ - ldr r0, [r4]\n\ - adds r0, 0x77\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _081C0816\n\ - movs r1, 0x2\n\ - negs r1, r1\n\ - movs r0, 0xA\n\ - bl sub_81C2074\n\ -_081C0816:\n\ - ldr r0, [r4]\n\ - adds r0, 0xC\n\ - bl sub_81C2228\n\ - movs r0, 0\n\ - strh r0, [r5, 0x2]\n\ - b _081C08EC\n\ - .pool\n\ -_081C0828:\n\ - ldr r4, =gUnknown_0203CF1C\n\ - ldr r0, [r4]\n\ - adds r0, 0xC\n\ - adds r1, r5, 0x2\n\ - bl sub_81C45F4\n\ - ldr r1, [r4]\n\ - ldr r2, =0x000040d3\n\ - adds r1, r2\n\ - strb r0, [r1]\n\ - ldr r0, [r4]\n\ - adds r1, r0, r2\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFF\n\ - beq _081C08F2\n\ - ldr r2, =gSprites\n\ - adds r1, r0, 0\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x32]\n\ - bl sub_81C0E24\n\ - movs r0, 0\n\ - strh r0, [r5, 0x2]\n\ - b _081C08EC\n\ - .pool\n\ -_081C086C:\n\ - bl sub_81C4280\n\ - b _081C08EC\n\ -_081C0872:\n\ - bl sub_81C25E8\n\ - b _081C08EC\n\ -_081C0878:\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - ldr r1, =0x000040c0\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - bl sub_81C2D9C\n\ - bl sub_81C2524\n\ - b _081C08EC\n\ - .pool\n\ -_081C0894:\n\ - ldr r2, =gSprites\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - ldr r1, =0x000040d3\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - movs r1, 0\n\ - strh r1, [r0, 0x32]\n\ - b _081C08EC\n\ - .pool\n\ -_081C08BC:\n\ - bl sub_81221EC\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _081C08F2\n\ - ldr r0, =sub_81C20F0\n\ - bl FuncIsActiveTask\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - bne _081C08F2\n\ - strh r0, [r5]\n\ - adds r0, r6, 0\n\ - subs r0, 0x8\n\ - adds r0, r4, r0\n\ - ldr r1, =sub_81C0510\n\ - str r1, [r0]\n\ - b _081C08F2\n\ - .pool\n\ -_081C08EC:\n\ - ldrh r0, [r5]\n\ - adds r0, 0x1\n\ - strh r0, [r5]\n\ -_081C08F2:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif #ifdef NONMATCHING s8 sub_81C08F8(s8 a) From 561d60342f7ec39f03671ce37ab4f0ab8d0244c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 Sep 2017 21:18:53 -0400 Subject: [PATCH 024/182] Decompile data --- data/unk_text_util_2.s | 11 ----------- ld_script.txt | 2 +- src/unk_text_util_2.c | 4 ++-- 3 files changed, 3 insertions(+), 14 deletions(-) delete mode 100644 data/unk_text_util_2.s diff --git a/data/unk_text_util_2.s b/data/unk_text_util_2.s deleted file mode 100644 index 69f227ea2a..0000000000 --- a/data/unk_text_util_2.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_08616124:: @ 8616124 - .incbin "baserom.gba", 0x616124, 0x4 - - .align 2 -gFont6BrailleGlyphs:: @ 8616128 - .incbin "data/graphics/fonts/font6.fwjpnfont" diff --git a/ld_script.txt b/ld_script.txt index 136c198dc8..1ad681e368 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -389,7 +389,7 @@ SECTIONS { data/item_icon.o(.rodata); data/party_menu.o(.rodata); data/battle_tent.o(.rodata); - data/unk_text_util_2.o(.rodata); + src/unk_text_util_2.o(.rodata); data/unk_81BAD84.o(.rodata); data/battle_controller_player_partner.o(.rodata); data/fossil_special_fldeff_groundshake.o(.rodata); diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c index d9bd9d98d2..d88af611fe 100644 --- a/src/unk_text_util_2.c +++ b/src/unk_text_util_2.c @@ -4,8 +4,8 @@ #include "text.h" #include "sound.h" -extern const u8 gUnknown_08616124[]; -extern const u16 gFont6BrailleGlyphs[]; +static const u8 gUnknown_08616124[] = {1, 2, 4}; +static const u16 gFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont"); static void DecompressGlyphFont6(u16); From 4cf115000289d10de3408e752b37128446dd261c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 Sep 2017 21:26:37 -0400 Subject: [PATCH 025/182] clion pls --- include/text.h | 32 +++++++++++++++++--------------- src/text.c | 2 +- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/include/text.h b/include/text.h index a7a79da7ac..fc8ffa82f4 100644 --- a/include/text.h +++ b/include/text.h @@ -94,23 +94,25 @@ struct TextPrinterSubStruct u8 active; }; +struct TextSubPrinter { // TODO: Better name + u8* current_text_offset; + u8 windowId; + u8 fontId; + u8 x; + u8 y; + u8 currentX; // 0x8 + u8 currentY; + u8 letterSpacing; + u8 lineSpacing; + u8 fontColor_l:4; // 0xC + u8 fontColor_h:4; + u8 bgColor:4; + u8 shadowColor:4; +}; + struct TextPrinter { - struct TextSubPrinter { // TODO: Better name - u8* current_text_offset; - u8 windowId; - u8 fontId; - u8 x; - u8 y; - u8 currentX; // 0x8 - u8 currentY; - u8 letterSpacing; - u8 lineSpacing; - u8 fontColor_l:4; // 0xC - u8 fontColor_h:4; - u8 bgColor:4; - u8 shadowColor:4; - } subPrinter; + struct TextSubPrinter subPrinter; void (*callback)(struct TextSubPrinter *, u16); // 0x10 diff --git a/src/text.c b/src/text.c index fe1c5df249..90c0692935 100644 --- a/src/text.c +++ b/src/text.c @@ -1,9 +1,9 @@ #include "global.h" -#include "text.h" #include "main.h" #include "palette.h" #include "string_util.h" #include "window.h" +#include "text.h" extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); From 244842618352ec090234bd63a0878f47459ea4a3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 22 Sep 2017 22:45:47 -0400 Subject: [PATCH 026/182] decompile field_special_scene.c --- asm/field_control_avatar.s | 2 +- asm/porthole.s | 282 ------------------ asm/region_map.s | 2 +- asm/rom4.s | 2 +- asm/rom6.s | 12 +- asm/truck_scene.s | 589 ------------------------------------- data/data3b.s | 2 +- include/field_map_obj.h | 2 + ld_script.txt | 3 +- src/field_special_scene.c | 365 +++++++++++++++++++++++ 10 files changed, 378 insertions(+), 883 deletions(-) delete mode 100644 asm/porthole.s delete mode 100644 asm/truck_scene.s create mode 100755 src/field_special_scene.c diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 5c515ae3dc..46983f325f 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1467,7 +1467,7 @@ _0809CAF8: cmp r0, 0x1 beq _0809CB28 movs r0, 0x1 - bl sub_8137FC0 + bl CountSSTidalStep cmp r0, 0x1 bne _0809CB1C ldr r0, =gUnknown_0823C050 diff --git a/asm/porthole.s b/asm/porthole.s deleted file mode 100644 index 282f6f5843..0000000000 --- a/asm/porthole.s +++ /dev/null @@ -1,282 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FB59C -sub_80FB59C: @ 80FB59C - push {r4-r6,lr} - sub sp, 0xC - mov r4, sp - adds r4, 0x5 - mov r5, sp - adds r5, 0x6 - add r6, sp, 0x8 - add r0, sp, 0x4 - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8137FFC - lsls r0, 24 - cmp r0, 0 - bne _080FB5DE - add r0, sp, 0x4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r4, r1] - movs r2, 0x1 - negs r2, r2 - movs r3, 0 - ldrsb r3, [r5, r3] - movs r4, 0 - ldrsb r4, [r6, r4] - str r4, [sp] - bl warp1_set - movs r0, 0x1 - b _080FB5E0 -_080FB5DE: - movs r0, 0 -_080FB5E0: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FB59C - - thumb_func_start sub_80FB5E8 -sub_80FB5E8: @ 80FB5E8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldr r0, =0x000040b4 - bl GetVarPointer - adds r7, r0, 0 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - adds r6, r3, 0x4 - movs r0, 0 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _080FB648 - cmp r2, 0x1 - bgt _080FB624 - cmp r2, 0 - beq _080FB62E - b _080FB6E2 - .pool -_080FB624: - cmp r2, 0x2 - beq _080FB68A - cmp r2, 0x3 - beq _080FB6C4 - b _080FB6E2 -_080FB62E: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080FB6E2 - strh r2, [r4, 0x2] - movs r0, 0x2 - strh r0, [r4] - b _080FB6E2 - .pool -_080FB648: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080FB656 - strh r2, [r4, 0x2] -_080FB656: - ldrb r1, [r6, 0x1] - ldrb r2, [r3, 0x4] - movs r0, 0xFF - bl sub_80D3340 - lsls r0, 24 - cmp r0, 0 - beq _080FB6E2 - movs r0, 0x1 - bl sub_8137FC0 - cmp r0, 0x1 - bne _080FB686 - ldrh r0, [r7] - cmp r0, 0x2 - bne _080FB680 - movs r0, 0x9 - b _080FB682 - .pool -_080FB680: - movs r0, 0xA -_080FB682: - strh r0, [r7] - b _080FB692 -_080FB686: - movs r0, 0x2 - strh r0, [r4] -_080FB68A: - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080FB698 -_080FB692: - movs r0, 0x3 - strh r0, [r4] - b _080FB6E2 -_080FB698: - ldrh r0, [r7] - cmp r0, 0x2 - bne _080FB6AC - ldrb r1, [r6, 0x1] - ldrb r2, [r6] - ldr r3, =gUnknown_0858E8AB - b _080FB6B2 - .pool -_080FB6AC: - ldrb r1, [r6, 0x1] - ldrb r2, [r6] - ldr r3, =gUnknown_0858E8AD -_080FB6B2: - movs r0, 0xFF - bl exec_movement - movs r0, 0x1 - strh r0, [r4] - b _080FB6E2 - .pool -_080FB6C4: - ldr r0, =0x00004001 - bl FlagReset - movs r0, 0x80 - lsls r0, 7 - bl FlagReset - movs r0, 0 - bl copy_saved_warp2_bank_and_enter_x_to_warp1 - bl sp13E_warp_to_last_warp - adds r0, r5, 0 - bl DestroyTask -_080FB6E2: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB5E8 - - thumb_func_start sub_80FB6EC -sub_80FB6EC: @ 80FB6EC - push {r4,lr} - sub sp, 0x4 - ldr r1, =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - movs r0, 0x8C - movs r2, 0x70 - movs r3, 0x50 - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r4, r1, r2 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, =0x000040b4 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bne _080FB74C - movs r0, 0x4 - bl FieldObjectDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - b _080FB75E - .pool -_080FB74C: - movs r0, 0x3 - bl FieldObjectDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080FB75E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FB6EC - - thumb_func_start sub_80FB768 -sub_80FB768: @ 80FB768 - push {lr} - bl sub_80FB6EC - ldr r2, =gMapObjects - ldr r0, =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x1] - bl pal_fill_black - ldr r0, =sub_80FB5E8 - movs r1, 0x50 - bl CreateTask - bl ScriptContext2_Enable - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB768 - - thumb_func_start sub_80FB7A4 -sub_80FB7A4: @ 80FB7A4 - push {lr} - ldr r0, =0x0000088d - bl FlagSet - ldr r0, =0x00004001 - bl FlagSet - movs r0, 0x80 - lsls r0, 7 - bl FlagSet - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x4 - ldrsb r1, [r0, r1] - movs r2, 0x5 - ldrsb r2, [r0, r2] - movs r3, 0x1 - negs r3, r3 - movs r0, 0 - bl saved_warp2_set - bl sub_80FB59C - bl sub_80AF8B8 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB7A4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s index 150b4893e2..032bdf7a56 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -1939,7 +1939,7 @@ sub_8123C00: @ 8123C00 adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 - bl sub_8137FFC + bl GetSSTidalLocation lsls r0, 24 lsrs r0, 24 mov r10, r5 diff --git a/asm/rom4.s b/asm/rom4.s index a3125efc4c..1887883d71 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -3175,7 +3175,7 @@ CB2_NewGame: @ 8085EF8 bl ScriptContext1_Init bl ScriptContext2_Disable ldr r1, =gUnknown_03005DAC - ldr r0, =sub_80FB4E0 + ldr r0, =ExecuteTruckSequence str r0, [r1] ldr r1, =gUnknown_03005DB0 movs r0, 0 diff --git a/asm/rom6.s b/asm/rom6.s index 4bad6e35d1..e664a96669 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -5062,8 +5062,8 @@ sub_8137FB0: @ 8137FB0 .pool thumb_func_end sub_8137FB0 - thumb_func_start sub_8137FC0 -sub_8137FC0: @ 8137FC0 + thumb_func_start CountSSTidalStep +CountSSTidalStep: @ 8137FC0 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -5091,10 +5091,10 @@ _08137FF6: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8137FC0 + thumb_func_end CountSSTidalStep - thumb_func_start sub_8137FFC -sub_8137FFC: @ 8137FFC + thumb_func_start GetSSTidalLocation +GetSSTidalLocation: @ 8137FFC push {r4-r7,lr} mov r7, r8 push {r7} @@ -5203,7 +5203,7 @@ _081380CE: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8137FFC + thumb_func_end GetSSTidalLocation thumb_func_start is_tile_that_overrides_player_control is_tile_that_overrides_player_control: @ 81380D8 diff --git a/asm/truck_scene.s b/asm/truck_scene.s deleted file mode 100644 index bc3388cb6c..0000000000 --- a/asm/truck_scene.s +++ /dev/null @@ -1,589 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FB0B0 -sub_80FB0B0: @ 80FB0B0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x78 - bl __modsi3 - cmp r0, 0 - bne _080FB0C4 - movs r0, 0x1 - negs r0, r0 - b _080FB0D6 -_080FB0C4: - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - cmp r0, 0x4 - ble _080FB0D4 - movs r0, 0 - b _080FB0D6 -_080FB0D4: - movs r0, 0x1 -_080FB0D6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FB0B0 - - thumb_func_start sub_80FB0DC -sub_80FB0DC: @ 80FB0DC - push {lr} - adds r0, 0x78 - movs r1, 0xB4 - bl __modsi3 - cmp r0, 0 - beq _080FB0EE - movs r0, 0 - b _080FB0F2 -_080FB0EE: - movs r0, 0x1 - negs r0, r0 -_080FB0F2: - pop {r1} - bx r1 - thumb_func_end sub_80FB0DC - - thumb_func_start sub_80FB0F8 -sub_80FB0F8: @ 80FB0F8 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r5, r1, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - adds r0, 0x1E - bl sub_80FB0DC - ldr r4, =gSaveBlock1Ptr - ldr r2, [r4] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - lsls r0, 18 - movs r3, 0xC0 - lsls r3, 10 - orrs r0, r3 - asrs r0, 16 - str r0, [sp] - movs r0, 0x1 - movs r3, 0x3 - bl sub_808E82C - movs r3, 0 - ldrsh r0, [r5, r3] - bl sub_80FB0DC - ldr r2, [r4] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - lsls r0, 17 - ldr r3, =0xfffd0000 - adds r0, r3 - asrs r0, 16 - str r0, [sp] - movs r0, 0x2 - movs r3, 0 - bl sub_808E82C - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_80FB0DC - ldr r2, [r4] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - movs r4, 0 - movs r3, 0x3 - negs r3, r3 - lsls r0, 18 - asrs r0, 16 - str r0, [sp] - movs r0, 0x3 - bl sub_808E82C - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - ldr r1, =0x75300000 - cmp r0, r1 - bne _080FB180 - strh r4, [r5] -_080FB180: - movs r3, 0 - ldrsh r0, [r5, r3] - bl sub_80FB0B0 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0 - bl SetCameraPanning - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB0F8 - - thumb_func_start sub_80FB1AC -sub_80FB1AC: @ 80FB1AC - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r3, r0, 3 - ldr r4, =gTasks + 0x8 - adds r7, r3, r4 - ldrh r1, [r7] - adds r1, 0x1 - strh r1, [r7] - ldrh r0, [r7, 0x4] - adds r0, 0x1 - strh r0, [r7, 0x4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x5 - ble _080FB1DC - movs r0, 0 - strh r0, [r7] - ldrh r0, [r7, 0x2] - adds r0, 0x1 - strh r0, [r7, 0x2] -_080FB1DC: - ldrh r0, [r7, 0x2] - cmp r0, 0x13 - bne _080FB1F0 - adds r0, r2, 0 - bl DestroyTask - b _080FB2A8 - .pool -_080FB1F0: - ldr r2, =gUnknown_0858E898 - movs r1, 0x2 - ldrsh r0, [r7, r1] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2 - bne _080FB20C - adds r0, r4, 0 - subs r0, 0x8 - adds r0, r3, r0 - ldr r1, =sub_80FB2C0 - str r1, [r0] -_080FB20C: - movs r4, 0x2 - ldrsh r0, [r7, r4] - adds r0, r2 - movs r5, 0 - ldrsb r5, [r0, r5] - lsls r5, 16 - lsrs r5, 16 - movs r1, 0x4 - ldrsh r0, [r7, r1] - bl sub_80FB0B0 - adds r1, r0, 0 - lsls r5, 16 - asrs r5, 16 - lsls r1, 16 - asrs r1, 16 - adds r0, r5, 0 - bl SetCameraPanning - movs r4, 0x4 - ldrsh r0, [r7, r4] - adds r0, 0x1E - bl sub_80FB0DC - ldr r6, =gSaveBlock1Ptr - ldr r2, [r6] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - movs r3, 0x3 - subs r3, r5 - lsls r3, 16 - asrs r3, 16 - lsls r0, 18 - movs r4, 0xC0 - lsls r4, 10 - orrs r0, r4 - asrs r0, 16 - str r0, [sp] - movs r0, 0x1 - bl sub_808E82C - movs r1, 0x4 - ldrsh r0, [r7, r1] - bl sub_80FB0DC - ldr r2, [r6] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - negs r3, r5 - lsls r3, 16 - asrs r3, 16 - lsls r0, 17 - ldr r4, =0xfffd0000 - adds r0, r4 - asrs r0, 16 - str r0, [sp] - movs r0, 0x2 - bl sub_808E82C - movs r1, 0x4 - ldrsh r0, [r7, r1] - bl sub_80FB0DC - ldr r2, [r6] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - movs r4, 0x3 - negs r4, r4 - adds r3, r4, 0 - subs r3, r5 - lsls r3, 16 - asrs r3, 16 - lsls r0, 18 - asrs r0, 16 - str r0, [sp] - movs r0, 0x3 - bl sub_808E82C -_080FB2A8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB1AC - - thumb_func_start sub_80FB2C0 -sub_80FB2C0: @ 80FB2C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r2, r0, r1 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080FB2F0 - movs r0, 0 - strh r0, [r2] - ldrh r0, [r2, 0x2] - adds r0, 0x1 - strh r0, [r2, 0x2] -_080FB2F0: - ldrh r0, [r2, 0x2] - cmp r0, 0x13 - bne _080FB304 - adds r0, r3, 0 - bl DestroyTask - b _080FB358 - .pool -_080FB304: - ldr r1, =gUnknown_0858E898 - movs r3, 0x2 - ldrsh r0, [r2, r3] - adds r0, r1 - movs r1, 0 - mov r8, r1 - movs r6, 0 - ldrsb r6, [r0, r6] - adds r0, r6, 0 - bl SetCameraPanning - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r3, 0x3 - subs r3, r6 - movs r0, 0x3 - str r0, [sp] - movs r0, 0x1 - bl sub_808E82C - ldr r0, [r5] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - negs r3, r6 - mov r4, r8 - subs r4, 0x3 - str r4, [sp] - movs r0, 0x2 - bl sub_808E82C - ldr r0, [r5] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - subs r4, r6 - mov r3, r8 - str r3, [sp] - movs r0, 0x3 - adds r3, r4, 0 - bl sub_808E82C -_080FB358: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB2C0 - - thumb_func_start sub_80FB36C -sub_80FB36C: @ 80FB36C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080FB386 - b _080FB4D8 -_080FB386: - lsls r0, 2 - ldr r1, =_080FB398 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080FB398: - .4byte _080FB3B0 - .4byte _080FB3E8 - .4byte _080FB404 - .4byte _080FB450 - .4byte _080FB474 - .4byte _080FB492 -_080FB3B0: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5A - beq _080FB3C0 - b _080FB4D8 -_080FB3C0: - movs r0, 0 - bl SetCameraPanningCallback - movs r0, 0 - strh r0, [r4, 0x2] - ldr r0, =sub_80FB0F8 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x4] - movs r0, 0x1 - strh r0, [r4] - movs r0, 0x31 - bl PlaySE - b _080FB4D8 - .pool -_080FB3E8: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x96 - bne _080FB4D8 - bl pal_fill_black - movs r0, 0 - strh r0, [r4, 0x2] - movs r0, 0x2 - strh r0, [r4] - b _080FB4D8 -_080FB404: - ldrh r0, [r4, 0x2] - adds r3, r0, 0x1 - strh r3, [r4, 0x2] - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080FB4D8 - lsls r1, r3, 16 - movs r0, 0x96 - lsls r0, 17 - cmp r1, r0 - ble _080FB4D8 - strh r2, [r4, 0x2] - ldrb r0, [r4, 0x4] - bl DestroyTask - ldr r0, =sub_80FB1AC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x6] - movs r0, 0x3 - strh r0, [r4] - movs r0, 0x32 - bl PlaySE - b _080FB4D8 - .pool -_080FB450: - ldr r2, =gTasks - movs r0, 0x6 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r5, [r0, 0x4] - cmp r5, 0 - bne _080FB4D8 - bl InstallCameraPanAheadCallback - strh r5, [r4, 0x2] - movs r0, 0x4 - strh r0, [r4] - b _080FB4D8 - .pool -_080FB474: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5A - bne _080FB4D8 - movs r0, 0x33 - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2] - movs r0, 0x5 - strh r0, [r4] - b _080FB4D8 -_080FB492: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - bne _080FB4D8 - movs r2, 0x82 - lsls r2, 2 - movs r0, 0xB - movs r1, 0x8 - bl MapGridSetMetatileIdAt - movs r2, 0x84 - lsls r2, 2 - movs r0, 0xB - movs r1, 0x9 - bl MapGridSetMetatileIdAt - movs r2, 0x86 - lsls r2, 2 - movs r0, 0xB - movs r1, 0xA - bl MapGridSetMetatileIdAt - bl DrawWholeMapView - movs r0, 0x34 - bl PlaySE - adds r0, r5, 0 - bl DestroyTask - bl ScriptContext2_Disable -_080FB4D8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FB36C - - thumb_func_start sub_80FB4E0 -sub_80FB4E0: @ 80FB4E0 - push {lr} - sub sp, 0x4 - ldr r2, =0x0000020d - movs r0, 0xB - movs r1, 0x8 - bl MapGridSetMetatileIdAt - ldr r2, =0x00000215 - movs r0, 0xB - movs r1, 0x9 - bl MapGridSetMetatileIdAt - ldr r2, =0x0000021d - movs r0, 0xB - movs r1, 0xA - bl MapGridSetMetatileIdAt - bl DrawWholeMapView - bl ScriptContext2_Enable - movs r0, 0 - str r0, [sp] - ldr r1, =gPlttBufferFaded - ldr r2, =0x01000100 - mov r0, sp - bl CpuFastSet - ldr r0, =sub_80FB36C - movs r1, 0xA - bl CreateTask - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB4E0 - - thumb_func_start sub_80FB540 -sub_80FB540: @ 80FB540 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, =sub_80FB36C - bl FuncIsActiveTask - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080FB58A - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r0, 0x3 - str r0, [sp] - movs r0, 0x1 - movs r3, 0x3 - bl sub_808E82C - ldr r0, [r4] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r5, 0x3 - negs r5, r5 - str r5, [sp] - movs r0, 0x2 - movs r3, 0 - bl sub_808E82C - ldr r0, [r4] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - str r6, [sp] - movs r0, 0x3 - adds r3, r5, 0 - bl sub_808E82C -_080FB58A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FB540 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data3b.s b/data/data3b.s index 3faa3d290f..a4499c852d 100644 --- a/data/data3b.s +++ b/data/data3b.s @@ -56,7 +56,7 @@ gUnknown_0858E864:: @ 858E864 gUnknown_0858E880:: @ 858E880 .incbin "baserom.gba", 0x58e880, 0x18 -gUnknown_0858E898:: @ 858E898 +gTruckCamera_HorizontalTable:: @ 858E898 .incbin "baserom.gba", 0x58e898, 0x13 gUnknown_0858E8AB:: @ 858E8AB diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 40cc640548..be7b82a219 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -4,6 +4,8 @@ #define NUM_OBJECT_GRAPHICS_INFO 239 #define SPRITE_VAR 240 +struct Sprite; // pika pls + // Exported struct declarations enum SpinnerRunnerFollowPatterns { diff --git a/ld_script.txt b/ld_script.txt index 048f123362..e973a7748d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -158,8 +158,7 @@ SECTIONS { asm/field_poison.o(.text); src/pokemon_size_record.o(.text); asm/fldeff_80F9BCC.o(.text); - asm/truck_scene.o(.text); - asm/porthole.o(.text); + src/field_special_scene.o(.text); asm/rotating_gate.o(.text); src/safari_zone.o(.text); asm/contest_link_80FC4F4.o(.text); diff --git a/src/field_special_scene.c b/src/field_special_scene.c new file mode 100755 index 0000000000..22a20161d6 --- /dev/null +++ b/src/field_special_scene.c @@ -0,0 +1,365 @@ +#include "global.h" +#include "task.h" +#include "field_map_obj.h" +#include "songs.h" +#include "sound.h" +#include "palette.h" +#include "script.h" +#include "vars.h" +#include "event_data.h" +#include "main.h" +#include "sprite.h" + +#define SECONDS(value) ((signed) (60.0 * value + 0.5)) + +// porthole states +enum +{ + INIT_PORTHOLE, + IDLE_CHECK, + EXECUTE_MOVEMENT, + EXIT_PORTHOLE, +}; + +extern void SetCameraPanning(s16 x, s16 y); +extern void SetCameraPanningCallback(void ( *callback)()); +extern void InstallCameraPanAheadCallback(); +extern void pal_fill_black(void); +extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); +extern void DrawWholeMapView(); + +extern s8 gTruckCamera_HorizontalTable[]; + +extern u8 gUnknown_0858E8AB[]; +extern u8 gUnknown_0858E8AD[]; + +void Task_Truck3(u8); + +s32 GetTruckCameraBobbingY(int a1) +{ + if (!(a1 % 120)) + return -1; + else if ((a1 % 10) <= 4) + return 1; + + return 0; +} + +s32 GetTruckBoxMovement(int a1) // for the box movement? +{ + if (!((a1 + 120) % 180)) + return -1; + + return 0; +} + +// smh STILL BROKEN IN EMERALD +void Task_Truck1(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 cameraYpan; + s16 box1 = 0; + s16 box2 = 0; + s16 box3 = 0; + u8 mapNum, mapGroup; + register s16 zero asm("r4"); + + box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box. + sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, box1 + 3); + box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box. + sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, box2 - 3); + box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box. + mapNum = gSaveBlock1Ptr->location.mapNum; + mapGroup = gSaveBlock1Ptr->location.mapGroup; + zero = 0; + sub_808E82C(3, mapNum, mapGroup, -3, box3); + + if (++data[0] == SECONDS(500)) // this will never run + data[0] = zero; // reset the timer if it gets stuck. + + cameraYpan = GetTruckCameraBobbingY(data[0]); + SetCameraPanning(0, cameraYpan); +} + +void Task_Truck2(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 cameraYpan; + s16 cameraXpan; + s16 box1; + s16 box2; + s16 box3; + + data[0]++; + data[2]++; + + if (data[0] > 5) + { + data[0] = 0; + data[1]++; + } + if ((u16)data[1] == 19) + { + DestroyTask(taskId); + } + else + { + if (gTruckCamera_HorizontalTable[data[1]] == 2) + gTasks[taskId].func = Task_Truck3; + + cameraXpan = gTruckCamera_HorizontalTable[data[1]]; + cameraYpan = GetTruckCameraBobbingY(data[2]); + SetCameraPanning(cameraXpan, cameraYpan); + box1 = GetTruckBoxMovement(data[2] + 30) * 4; + sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); + box2 = GetTruckBoxMovement(data[2]) * 2; + sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); + box3 = GetTruckBoxMovement(data[2]) * 4; + sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); + } +} + +void Task_Truck3(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 cameraXpan; + s16 cameraYpan; + + data[0]++; + + if (data[0] > 5) + { + data[0] = 0; + data[1]++; + } + + if ((u16)data[1] == 19) + { + DestroyTask(taskId); + } + else + { + cameraXpan = gTruckCamera_HorizontalTable[data[1]]; + cameraYpan = 0; + SetCameraPanning(cameraXpan, 0); + sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3); + sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3); + sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan); + } +} + +void Task_HandleTruckSequence(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + /* + Each case has a timer which is handled with data[1], incrementing + until it reaches the if function's condition, which sets the next task up. + */ + case 0: + data[1]++; + if (data[1] == SECONDS(1.5)) + { + SetCameraPanningCallback(NULL); + data[1] = 0; // reset the timer. + data[2] = CreateTask(Task_Truck1, 0xA); + data[0] = 1; // run the next case. + PlaySE(SE_TRACK_MOVE); + } + break; + case 1: + data[1]++; + if (data[1] == SECONDS(2.5)) + { + pal_fill_black(); + data[1] = 0; + data[0] = 2; + } + break; + case 2: + data[1]++; + if (!gPaletteFade.active && data[1] > SECONDS(5)) + { + data[1] = 0; + DestroyTask(data[2]); + data[3] = CreateTask(Task_Truck2, 0xA); + data[0] = 3; + PlaySE(SE_TRACK_STOP); + } + break; + case 3: + if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) + { + InstallCameraPanAheadCallback(); + data[1] = 0; + data[0] = 4; + } + break; + case 4: + data[1]++; + if (data[1] == 90) + { + PlaySE(SE_TRACK_HAIK); + data[1] = 0; + data[0] = 5; + } + break; + case 5: + data[1]++; + if (data[1] == 120) + { + MapGridSetMetatileIdAt(11, 8, 520); + MapGridSetMetatileIdAt(11, 9, 528); + MapGridSetMetatileIdAt(11, 10, 536); + DrawWholeMapView(); + PlaySE(SE_TRACK_DOOR); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + break; + } +} + +void ExecuteTruckSequence(void) +{ + MapGridSetMetatileIdAt(11, 8, 525); + MapGridSetMetatileIdAt(11, 9, 533); + MapGridSetMetatileIdAt(11, 10, 541); + DrawWholeMapView(); + ScriptContext2_Enable(); + CpuFastFill(0, gPlttBufferFaded, 0x400); + CreateTask(Task_HandleTruckSequence, 0xA); +} + +void EndTruckSequence(u8 taskId) +{ + if (!FuncIsActiveTask(Task_HandleTruckSequence)) + { + sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3); + sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3); + sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0); + } +} + +extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h +extern void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); + +bool8 sub_80FB59C(void) +{ + s8 mapGroup, mapNum; + s16 x, y; + + if (GetSSTidalLocation(&mapGroup, &mapNum, &x, &y)) + { + return FALSE; + } + else + { + warp1_set(mapGroup, mapNum, -1, x, y); + return TRUE; + } +} + +extern bool8 sub_80D3340(u8, u8, u8); +extern bool32 CountSSTidalStep(u16); +extern bool8 exec_movement(u8, u8, u8, u8 *); +extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); +extern void sp13E_warp_to_last_warp(void); + +void Task_HandlePorthole(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 *var = GetVarPointer(VAR_PORTHOLE); + struct WarpData *location = &gSaveBlock1Ptr->location; + + switch (data[0]) + { + case INIT_PORTHOLE: // finish fading before making porthole finish. + if (!gPaletteFade.active) + { + data[1] = 0; + data[0] = EXECUTE_MOVEMENT; // execute movement before checking if should be exited. strange? + } + break; + case IDLE_CHECK: // idle and move. + if (gMain.newKeys & A_BUTTON) + data[1] = 1; + if (!sub_80D3340(0xFF, location->mapNum, location->mapGroup)) + return; + if (CountSSTidalStep(1) == TRUE) + { + if (*var == 2) + *var = 9; + else + *var = 10; + data[0] = 3; + return; + } + data[0] = 2; + case EXECUTE_MOVEMENT: // execute movement. + if (data[1]) + { + data[0] = EXIT_PORTHOLE; // exit porthole. + return; + } + // run this once. + if (*var == 2) // which direction? + { + exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB); + data[0] = IDLE_CHECK; // run case 1. + } + else + { + exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD); + data[0] = IDLE_CHECK; // run case 1. + } + break; + case EXIT_PORTHOLE: // exit porthole. + FlagReset(0x4001); + FlagReset(0x4000); + copy_saved_warp2_bank_and_enter_x_to_warp1(0); + sp13E_warp_to_last_warp(); + DestroyTask(taskId); + break; + } +} + +void sub_80FB6EC(void) +{ + u8 spriteId = AddPseudoFieldObject(0x8C, SpriteCallbackDummy, 112, 80, 0); + + gSprites[spriteId].coordOffsetEnabled = FALSE; + + if (VarGet(0x40B4) == 2) + { + StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4)); + } + else + { + StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(3)); + } +} + +void sub_80FB768(void) +{ + sub_80FB6EC(); + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE; + pal_fill_black(); + CreateTask(Task_HandlePorthole, 80); + ScriptContext2_Enable(); +} + +extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); +extern void sub_80AF8B8(void); + +void sub_80FB7A4(void) +{ + FlagSet(SYS_CRUISE_MODE); + FlagSet(0x4001); + FlagSet(0x4000); + saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); + sub_80FB59C(); + sub_80AF8B8(); +} From 24751851d27ac288797457cdd44a261b98e47ed4 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 23 Sep 2017 12:06:23 -0400 Subject: [PATCH 027/182] correct field_map_obj.h order declaration. --- include/field_map_obj.h | 2 -- src/field_special_scene.c | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/field_map_obj.h b/include/field_map_obj.h index be7b82a219..40cc640548 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -4,8 +4,6 @@ #define NUM_OBJECT_GRAPHICS_INFO 239 #define SPRITE_VAR 240 -struct Sprite; // pika pls - // Exported struct declarations enum SpinnerRunnerFollowPatterns { diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 22a20161d6..2855b3f3a7 100755 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -1,5 +1,6 @@ #include "global.h" #include "task.h" +#include "sprite.h" #include "field_map_obj.h" #include "songs.h" #include "sound.h" @@ -8,7 +9,6 @@ #include "vars.h" #include "event_data.h" #include "main.h" -#include "sprite.h" #define SECONDS(value) ((signed) (60.0 * value + 0.5)) @@ -35,7 +35,7 @@ extern u8 gUnknown_0858E8AD[]; void Task_Truck3(u8); -s32 GetTruckCameraBobbingY(int a1) +s16 GetTruckCameraBobbingY(int a1) { if (!(a1 % 120)) return -1; @@ -45,7 +45,7 @@ s32 GetTruckCameraBobbingY(int a1) return 0; } -s32 GetTruckBoxMovement(int a1) // for the box movement? +s16 GetTruckBoxMovement(int a1) // for the box movement? { if (!((a1 + 120) % 180)) return -1; @@ -74,7 +74,7 @@ void Task_Truck1(u8 taskId) zero = 0; sub_808E82C(3, mapNum, mapGroup, -3, box3); - if (++data[0] == SECONDS(500)) // this will never run + if (SECONDS(500) == ++data[0]) // this will never run data[0] = zero; // reset the timer if it gets stuck. cameraYpan = GetTruckCameraBobbingY(data[0]); From 57543e164e0ed15c23e295ffa08e5804d4d32037 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 23 Sep 2017 12:42:06 -0400 Subject: [PATCH 028/182] revert pointless change --- src/field_special_scene.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 2855b3f3a7..20331f37c8 100755 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -74,7 +74,7 @@ void Task_Truck1(u8 taskId) zero = 0; sub_808E82C(3, mapNum, mapGroup, -3, box3); - if (SECONDS(500) == ++data[0]) // this will never run + if (++data[0] == SECONDS(500)) // this will never run data[0] = zero; // reset the timer if it gets stuck. cameraYpan = GetTruckCameraBobbingY(data[0]); From 601fc9e85b383792819768c31728e4855e854f32 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 23 Sep 2017 20:13:45 +0200 Subject: [PATCH 029/182] atk49 is matching baby WOHOHOHOHO --- asm/battle_2.s | 30 +- asm/battle_4.s | 1396 +--------------------------------- asm/rom3.s | 10 +- data/battle_scripts_1.s | 6 +- include/battle.h | 24 +- include/battle_controllers.h | 1 + include/pokemon.h | 1 + src/battle_3.c | 5 +- src/battle_4.c | 570 +++++++++++++- sym_ewram.txt | 4 +- 10 files changed, 616 insertions(+), 1431 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 47db7e0824..f965af976b 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6357,7 +6357,7 @@ sub_8039F40: @ 8039F40 mov r12, r1 ldr r5, =gDisableStructs movs r4, 0 - ldr r7, =gUnknown_02024240 + ldr r7, =gUnknownMovesUsedByBanks ldr r6, =gLockedMoves _08039F70: ldr r0, =gStatuses3 @@ -7073,7 +7073,7 @@ _0803A540: mov r1, r9 ldrb r0, [r1] lsls r0, 1 - ldr r3, =gUnknown_02024240 + ldr r3, =gUnknownMovesUsedByBanks adds r0, r3 strh r4, [r0] ldrb r0, [r1] @@ -7584,7 +7584,7 @@ _0803A852: strh r2, [r0] ldrb r0, [r1] lsls r0, 1 - ldr r1, =gUnknown_02024240 + ldr r1, =gUnknownMovesUsedByBanks adds r0, r1 strh r2, [r0] ldr r2, =gActiveBank @@ -13706,7 +13706,7 @@ _0803E110: ands r0, r1 strb r0, [r3] ldr r2, =gCurrentMove - ldr r1, =gUnknown_020241EC + ldr r1, =gLastUsedMove movs r0, 0xA5 strh r0, [r1] strh r0, [r2] @@ -13746,7 +13746,7 @@ _0803E1BC: beq _0803E204 _0803E1E2: ldr r3, =gCurrentMove - ldr r2, =gUnknown_020241EC + ldr r2, =gLastUsedMove ldr r1, =gLockedMoves lsls r0, r4, 1 adds r0, r1 @@ -13776,7 +13776,7 @@ _0803E204: cmp r1, r0 bne _0803E268 ldr r2, =gCurrentMove - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove strh r3, [r0] strh r3, [r2] ldrb r1, [r6] @@ -13807,7 +13807,7 @@ _0803E268: mov r0, r8 strb r2, [r0] ldr r3, =gCurrentMove - ldr r2, =gUnknown_020241EC + ldr r2, =gLastUsedMove ldrb r0, [r0] lsls r0, 1 ldrb r1, [r6] @@ -13869,7 +13869,7 @@ _0803E2DC: cmp r3, r2 beq _0803E334 ldr r1, =gCurrentMove - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove strh r3, [r0] strh r3, [r1] ldrh r0, [r1] @@ -13885,7 +13885,7 @@ _0803E316: .pool _0803E334: ldr r1, =gCurrentMove - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove strh r3, [r0] strh r3, [r1] _0803E33C: @@ -14086,7 +14086,7 @@ _0803E4E0: b _0803E5E2 _0803E4E8: ldr r2, =gBattleMoves - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 @@ -14218,7 +14218,7 @@ _0803E630: cmp r0, 0 beq _0803E6E0 ldr r2, =gBattleMoves - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 @@ -14406,7 +14406,7 @@ _0803E7EC: .pool _0803E808: ldr r4, =gBattlescriptCurrInstr - ldr r3, =gUnknown_082D86A8 + ldr r3, =gBattleScriptsForMoveEffects ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] @@ -16252,8 +16252,8 @@ CancelMultiTurnMoves: @ 803F8A0 .pool thumb_func_end CancelMultiTurnMoves - thumb_func_start sub_803F90C -sub_803F90C: @ 803F90C + thumb_func_start HasMoveFailed +HasMoveFailed: @ 803F90C push {lr} lsls r0, 24 ldr r1, =gProtectStructs @@ -16298,7 +16298,7 @@ _0803F95C: _0803F95E: pop {r1} bx r1 - thumb_func_end sub_803F90C + thumb_func_end HasMoveFailed thumb_func_start PrepareStringBattle PrepareStringBattle: @ 803F964 diff --git a/asm/battle_4.s b/asm/battle_4.s index ddde05c1d5..6a609e0fb5 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,1380 +5,6 @@ .text - - thumb_func_start atk48_playstatchangeanimation -atk48_playstatchangeanimation: @ 804B9D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r3, 0 - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - str r3, [sp] - bl GetBattleBank - ldr r2, =gActiveBank - strb r0, [r2] - ldr r0, [r5] - ldrb r4, [r0, 0x2] - ldrb r1, [r0, 0x3] - movs r0, 0x1 - ands r0, r1 - ldr r3, [sp] - cmp r0, 0 - beq _0804BAEC - movs r0, 0x2 - ands r0, r1 - movs r1, 0x15 - cmp r0, 0 - beq _0804BA18 - movs r1, 0x2D -_0804BA18: - cmp r4, 0 - beq _0804BAC0 - movs r0, 0x1 - mov r10, r0 - ldr r0, =gBattleMons + 0x18 - mov r9, r0 - lsls r5, r1, 16 -_0804BA26: - adds r0, r4, 0 - mov r1, r10 - ands r0, r1 - cmp r0, 0 - beq _0804BAB2 - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0804BA58 - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7, r0 - b _0804BAA0 - .pool -_0804BA58: - ldr r6, =gActiveBank - ldrb r0, [r6] - str r3, [sp] - bl GetBankIdentity - mov r1, r10 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSideTimers - adds r0, r1 - ldrb r0, [r0, 0x4] - ldr r3, [sp] - cmp r0, 0 - bne _0804BAB2 - ldr r0, =gBattleMons - ldrb r2, [r6] - movs r1, 0x58 - muls r2, r1 - adds r0, r2, r0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1D - beq _0804BAB2 - cmp r0, 0x49 - beq _0804BAB2 - cmp r0, 0x33 - bne _0804BA96 - cmp r7, 0x6 - beq _0804BAB2 -_0804BA96: - cmp r0, 0x34 - bne _0804BA9E - cmp r7, 0x1 - beq _0804BAB2 -_0804BA9E: - adds r0, r7, r2 -_0804BAA0: - add r0, r9 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _0804BAB2 - lsrs r0, r5, 16 - mov r8, r0 - adds r3, 0x1 -_0804BAB2: - lsrs r4, 1 - movs r1, 0x80 - lsls r1, 9 - adds r5, r1 - adds r7, 0x1 - cmp r4, 0 - bne _0804BA26 -_0804BAC0: - ldr r0, =gBattlescriptCurrInstr - mov r9, r0 - cmp r3, 0x1 - ble _0804BB4E - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x2 - ands r0, r1 - movs r1, 0x39 - mov r8, r1 - cmp r0, 0 - beq _0804BB4E - movs r0, 0x3A - b _0804BB4C - .pool -_0804BAEC: - movs r0, 0x2 - ands r0, r1 - movs r1, 0xE - cmp r0, 0 - beq _0804BAF8 - movs r1, 0x26 -_0804BAF8: - mov r9, r5 - cmp r4, 0 - beq _0804BB34 - ldr r6, =gBattleMons + 0x18 - adds r5, r2, 0 - lsls r2, r1, 16 -_0804BB04: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0804BB26 - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r7, r0 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xB - bgt _0804BB26 - lsrs r1, r2, 16 - mov r8, r1 - adds r3, 0x1 -_0804BB26: - lsrs r4, 1 - movs r0, 0x80 - lsls r0, 9 - adds r2, r0 - adds r7, 0x1 - cmp r4, 0 - bne _0804BB04 -_0804BB34: - cmp r3, 0x1 - ble _0804BB4E - mov r1, r9 - ldr r0, [r1] - ldrb r1, [r0, 0x3] - movs r0, 0x2 - ands r0, r1 - movs r1, 0x37 - mov r8, r1 - cmp r0, 0 - beq _0804BB4E - movs r0, 0x38 -_0804BB4C: - mov r8, r0 -_0804BB4E: - mov r1, r9 - ldr r2, [r1] - ldrb r1, [r2, 0x3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0804BB6C - cmp r3, 0x1 - bgt _0804BB6C - adds r0, r2, 0x4 - mov r1, r9 - b _0804BBBA - .pool -_0804BB6C: - cmp r3, 0 - beq _0804BBB4 - ldr r4, =gBattleScripting - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _0804BBB4 - movs r0, 0 - movs r1, 0x1 - mov r2, r8 - str r3, [sp] - bl EmitBattleAnimation - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x4 - ands r0, r1 - ldr r3, [sp] - cmp r0, 0 - beq _0804BBA4 - cmp r3, 0x1 - ble _0804BBA4 - movs r0, 0x1 - strb r0, [r4, 0x1B] -_0804BBA4: - ldr r1, =gBattlescriptCurrInstr - b _0804BBB6 - .pool -_0804BBB4: - mov r1, r9 -_0804BBB6: - ldr r0, [r1] - adds r0, 0x4 -_0804BBBA: - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk48_playstatchangeanimation - - thumb_func_start atk49_moveendturn -atk49_moveendturn: @ 804BBCC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - movs r0, 0 - mov r10, r0 - ldr r2, =gUnknown_020241EC - ldrh r1, [r2] - ldr r0, =0x0000ffff - movs r3, 0 - str r3, [sp, 0x18] - cmp r1, r0 - beq _0804BBEE - ldrh r2, [r2] - str r2, [sp, 0x18] -_0804BBEE: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r4, [r0, 0x1] - str r4, [sp, 0x10] - ldrb r0, [r0, 0x2] - str r0, [sp, 0x14] - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0804BC34 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x7] - b _0804BC3E - .pool -_0804BC34: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 -_0804BC3E: - str r0, [sp, 0x8] - ldr r1, =gBattleStruct - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, 0xC8 - ldr r1, [r1] - adds r0, r1, r0 - str r0, [sp, 0xC] - ldrb r0, [r1, 0x13] - cmp r0, 0 - beq _0804BCF0 - movs r5, 0x3F - ands r5, r0 - str r5, [sp, 0x4] - b _0804BD02 - .pool -_0804BC68: - ldr r4, =gActiveBank - strb r2, [r4] - movs r0, 0 - movs r1, 0x1 - bl dp01_build_cmdbuf_x33_a_33_33 - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804C15A - .pool -_0804BC80: - ldr r4, =gActiveBank - strb r2, [r4] - movs r0, 0 - movs r1, 0 - bl dp01_build_cmdbuf_x33_a_33_33 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldrb r1, [r6] - lsls r1, 2 - adds r1, r5 - ldr r0, [r1] - ldr r2, =0xfffbff3f - ands r0, r2 - str r0, [r1] - b _0804C15A - .pool -_0804BCAC: - strb r2, [r7] - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - ldr r0, =gBattleScripting - strb r4, [r0, 0x14] - bl MoveValuesCleanUp - ldr r2, =gUnknown_082D86A8 - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - bl BattleScriptPush - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB87D - bl _0804C5B8 - .pool -_0804BCF0: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - str r0, [sp, 0x4] -_0804BD02: - ldr r1, =gBattleScripting - mov r12, r1 - b _0804BD1E - .pool -_0804BD14: - mov r2, r10 - cmp r2, 0 - beq _0804BD1E - bl _0804C5A4 -_0804BD1E: - mov r3, r12 - ldrb r0, [r3, 0x14] - cmp r0, 0x11 - bls _0804BD2A - bl _0804C570 -_0804BD2A: - lsls r0, 2 - ldr r1, =_0804BD38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804BD38: - .4byte _0804BD80 - .4byte _0804BE5C - .4byte _0804BF18 - .4byte _0804BF3C - .4byte _0804BF54 - .4byte _0804BF7C - .4byte _0804BFA0 - .4byte _0804C048 - .4byte _0804C0BE - .4byte _0804C0F4 - .4byte _0804C194 - .4byte _0804C088 - .4byte _0804C0A8 - .4byte _0804C1D8 - .4byte _0804C21C - .4byte _0804C3FC - .4byte _0804C4E4 - .4byte _0804C570 -_0804BD80: - ldr r6, =gBattleMons - ldr r5, =gBankTarget - ldrb r3, [r5] - movs r7, 0x58 - adds r2, r3, 0 - muls r2, r7 - adds r0, r6, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 16 - ands r0, r1 - cmp r0, 0 - bne _0804BDA0 - b _0804C184 -_0804BDA0: - adds r0, r2, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0804BDAA - b _0804C184 -_0804BDAA: - ldr r0, =gBankAttacker - ldrb r1, [r0] - cmp r1, r3 - bne _0804BDB4 - b _0804C184 -_0804BDB4: - adds r0, r1, 0 - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _0804BDCC - b _0804C184 -_0804BDCC: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0804BDDA - b _0804C184 -_0804BDDA: - ldr r2, =gSpecialStatuses - ldrb r3, [r5] - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0804BDFE - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0804BDFE - b _0804C184 -_0804BDFE: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0804BE14 - b _0804C184 -_0804BE14: - adds r0, r3, 0 - muls r0, r7 - adds r1, r0, r6 - ldrb r2, [r1, 0x19] - movs r0, 0x19 - ldrsb r0, [r1, r0] - cmp r0, 0xB - ble _0804BE26 - b _0804C184 -_0804BE26: - adds r0, r2, 0x1 - strb r0, [r1, 0x19] - bl BattleScriptPushCursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAE0D - str r0, [r1] - b _0804C0B8 - .pool -_0804BE5C: - ldr r4, =gBattleMons - ldr r6, =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - mov r12, r5 - mov r1, r12 - muls r1, r2 - adds r7, r4, 0 - adds r7, 0x4C - adds r5, r1, r7 - ldr r3, [r5] - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - bne _0804BE7C - b _0804C184 -_0804BE7C: - adds r0, r1, r4 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0804BE86 - b _0804C184 -_0804BE86: - ldr r0, =gBankAttacker - ldrb r0, [r0] - cmp r0, r2 - bne _0804BE90 - b _0804C184 -_0804BE90: - ldr r0, =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0xC - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _0804BEA4 - b _0804C184 -_0804BEA4: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0804BEB2 - b _0804C184 -_0804BEB2: - ldr r0, [sp, 0x4] - cmp r0, 0xA - beq _0804BEBA - b _0804C184 -_0804BEBA: - movs r0, 0x21 - negs r0, r0 - ands r3, r0 - str r3, [r5] - ldr r4, =gActiveBank - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r6] - mov r1, r12 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - bl BattleScriptPushCursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB282 - str r0, [r1] - movs r2, 0x1 - mov r10, r2 - b _0804C184 - .pool -_0804BF18: - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0804BF32 - b _0804C184 -_0804BF32: - movs r3, 0x1 - mov r10, r3 - b _0804C184 - .pool -_0804BF3C: - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - b _0804C0B2 - .pool -_0804BF54: - movs r0, 0 - str r0, [sp] - movs r0, 0x5 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0804BF6C - b _0804C184 -_0804BF6C: - movs r5, 0x1 - mov r10, r5 - ldr r0, =gBattleScripting - mov r12, r0 - b _0804C570 - .pool -_0804BF7C: - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0804BF96 - b _0804C184 -_0804BF96: - movs r1, 0x1 - mov r10, r1 - b _0804C184 - .pool -_0804BFA0: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0804BFE4 - ldr r2, [sp, 0x8] - cmp r2, 0x1D - bne _0804BFE4 - ldr r0, =gUnknown_020241EC - ldrh r2, [r0] - adds r3, r0, 0 - cmp r2, 0xA5 - beq _0804BFE4 - ldr r4, [sp, 0xC] - ldrh r1, [r4] - cmp r1, 0 - beq _0804BFCC - ldr r0, =0x0000ffff - cmp r1, r0 - bne _0804BFE4 -_0804BFCC: - cmp r2, 0xE2 - bne _0804BFDE - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0804BFDE - b _0804C4B6 -_0804BFDE: - ldrh r0, [r3] - ldr r1, [sp, 0xC] - strh r0, [r1] -_0804BFE4: - movs r4, 0 - ldr r2, =gBattleMons - ldr r3, =gBankAttacker - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r2, 0xC - adds r0, r2 - ldrh r0, [r0] - ldr r5, [sp, 0xC] - ldrh r1, [r5] - mov r9, r3 - cmp r0, r1 - beq _0804C01C - mov r6, r9 - movs r3, 0x58 - adds r5, r1, 0 -_0804C006: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0804C01C - lsls r0, r4, 1 - ldrb r1, [r6] - muls r1, r3 - adds r0, r1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r5 - bne _0804C006 -_0804C01C: - cmp r4, 0x4 - bne _0804C026 - movs r0, 0 - ldr r1, [sp, 0xC] - strh r0, [r1] -_0804C026: - mov r2, r12 - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - b _0804C570 - .pool -_0804C048: - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r3, [r0] - cmp r4, r3 - blt _0804C054 - b _0804C202 -_0804C054: - ldr r7, =gBattleStruct - movs r6, 0 - movs r3, 0xD0 - adds r5, r0, 0 - ldr r2, =gBattleMons -_0804C05E: - ldr r0, [r7] - adds r0, r3 - ldrh r1, [r0] - cmp r1, 0 - beq _0804C06C - strh r1, [r2, 0x2E] - strh r6, [r0] -_0804C06C: - adds r3, 0x2 - adds r2, 0x58 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _0804C05E - b _0804C202 - .pool -_0804C088: - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0804C184 - movs r2, 0x1 - mov r10, r2 - ldr r3, =gBattleScripting - mov r12, r3 - b _0804C570 - .pool -_0804C0A8: - movs r0, 0x4 - movs r1, 0 - movs r2, 0 - bl ItemBattleEffects -_0804C0B2: - lsls r0, 24 - cmp r0, 0 - beq _0804C184 -_0804C0B8: - movs r4, 0x1 - mov r10, r4 - b _0804C184 -_0804C0BE: - ldr r1, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _0804C0D4 - b _0804C4B6 -_0804C0D4: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C0E2 - b _0804BC68 -_0804C0E2: - b _0804C4B6 - .pool -_0804C0F4: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0804C120 - ldr r1, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _0804C120 - adds r0, r2, 0 - bl sub_803F90C - lsls r0, 24 - cmp r0, 0 - beq _0804C184 -_0804C120: - ldr r4, =gActiveBank - ldr r5, =gBankAttacker - ldrb r0, [r5] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl dp01_build_cmdbuf_x33_a_33_33 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, =gStatuses3 - ldrb r2, [r5] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, =0xfffbff3f - ands r0, r1 - str r0, [r2] - ldr r2, =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0804C15A: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - b _0804C5BA - .pool -_0804C184: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - mov r12, r1 - b _0804C570 - .pool -_0804C194: - ldr r0, =gSpecialStatuses - ldr r6, =gBankTarget - ldrb r2, [r6] - lsls r3, r2, 2 - adds r1, r3, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - blt _0804C202 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r2, r0 - bcs _0804C202 - ldr r5, =gStatuses3 - adds r0, r3, r5 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _0804C1C2 - b _0804BC80 -_0804C1C2: - b _0804C202 - .pool -_0804C1D8: - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - cmp r4, r2 - bge _0804C202 - ldr r2, =gDisableStructs - ldr r5, =0xfeffffff - adds r3, r0, 0 - ldr r1, =gBattleMons + 0x50 -_0804C1EA: - ldrb r0, [r2, 0xA] - cmp r0, 0 - bne _0804C1F6 - ldr r0, [r1] - ands r0, r5 - str r0, [r1] -_0804C1F6: - adds r2, 0x1C - adds r1, 0x58 - adds r4, 0x1 - ldrb r0, [r3] - cmp r4, r0 - blt _0804C1EA -_0804C202: - mov r1, r12 - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - b _0804C570 - .pool -_0804C21C: - ldr r1, =gHitMarker - ldr r3, [r1] - movs r0, 0x80 - lsls r0, 5 - ands r0, r3 - ldr r2, =gBankAttacker - mov r9, r2 - adds r5, r1, 0 - cmp r0, 0 - beq _0804C246 - ldr r0, =gActiveBank - ldrb r2, [r2] - strb r2, [r0] - ldr r1, =gBankTarget - ldrb r0, [r1] - mov r4, r9 - strb r0, [r4] - strb r2, [r1] - ldr r0, =0xffffefff - ands r3, r0 - str r3, [r5] -_0804C246: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _0804C262 - ldr r0, =gUnknown_02024240 - mov r2, r9 - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r0, =gUnknown_020241EC - ldrh r0, [r0] - strh r0, [r1] -_0804C262: - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - mov r3, r9 - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r3, [r0] - ands r1, r3 - adds r6, r2, 0 - cmp r1, 0 - beq _0804C27C - b _0804C3E8 -_0804C27C: - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, 0x91 - ldrb r1, [r1] - ands r1, r3 - adds r7, r0, 0 - cmp r1, 0 - beq _0804C28E - b _0804C3E8 -_0804C28E: - ldr r0, =gBattleMoves - ldr r2, [sp, 0x18] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r1, [r1] - mov r8, r0 - cmp r1, 0x7F - bne _0804C2A4 - b _0804C3E8 -_0804C2A4: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0804C308 - ldr r0, =gLastUsedMovesByBanks - lsls r1, r4, 1 - adds r1, r0 - ldr r0, =gUnknown_020241EC - ldrh r0, [r0] - strh r0, [r1] - ldr r0, =gUnknown_02024260 - mov r3, r9 - ldrb r1, [r3] - lsls r1, 1 - adds r1, r0 - ldr r0, =gCurrentMove - ldrh r0, [r0] - strh r0, [r1] - b _0804C322 - .pool -_0804C308: - ldr r1, =gLastUsedMovesByBanks - lsls r0, r4, 1 - adds r0, r1 - ldr r1, =0x0000ffff - strh r1, [r0] - ldr r1, =gUnknown_02024260 - mov r4, r9 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - strh r1, [r0] -_0804C322: - ldr r2, =gBankTarget - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - lsls r0, 28 - ldr r1, [r5] - ands r1, r0 - cmp r1, 0 - bne _0804C340 - ldr r0, =gUnknown_02024270 - adds r0, r3, r0 - mov r3, r9 - ldrb r1, [r3] - strb r1, [r0] -_0804C340: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0804C3DC - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0804C3DC - ldr r0, =gUnknown_020241EC - ldrh r3, [r0] - ldr r0, =0x0000ffff - cmp r3, r0 - bne _0804C390 - ldr r1, =gUnknown_02024250 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - strh r3, [r0] - b _0804C3E8 - .pool -_0804C390: - ldr r0, =gUnknown_02024250 - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r4, =gCurrentMove - ldrh r0, [r4] - strh r0, [r1] - ldr r0, [r7] - ldrb r3, [r0, 0x13] - cmp r3, 0 - beq _0804C3C0 - ldr r0, =gUnknown_02024258 - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - movs r0, 0x3F - ands r0, r3 - b _0804C3E6 - .pool -_0804C3C0: - ldr r0, =gUnknown_02024258 - ldrb r2, [r2] - lsls r2, 1 - adds r2, r0 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x2] - strh r0, [r2] - b _0804C3E8 - .pool -_0804C3DC: - ldr r0, =gUnknown_02024250 - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r0, =0x0000ffff -_0804C3E6: - strh r0, [r1] -_0804C3E8: - mov r4, r12 - ldrb r0, [r4, 0x14] - adds r0, 0x1 - strb r0, [r4, 0x14] - b _0804C570 - .pool -_0804C3FC: - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r7, =gBitTable - ldr r2, =gBankAttacker - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r7 - ldr r4, [r0] - ands r1, r4 - mov r9, r2 - cmp r1, 0 - bne _0804C4B6 - ldr r6, =gBattleStruct - ldr r5, [r6] - adds r0, r5, 0 - adds r0, 0x91 - ldrb r0, [r0] - ands r0, r4 - cmp r0, 0 - bne _0804C4B6 - ldr r1, =gBattleMoves - ldr r2, [sp, 0x18] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804C4B6 - ldr r0, =gHitMarker - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0804C4B6 - ldr r4, =gBankTarget - ldrb r0, [r4] - cmp r3, r0 - beq _0804C4B6 - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - lsls r0, 28 - ands r1, r0 - cmp r1, 0 - bne _0804C4B6 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0804C4B6 - lsls r1, r2, 1 - adds r1, r5 - adds r1, 0x98 - ldr r3, =gUnknown_020241EC - ldrh r0, [r3] - strb r0, [r1] - ldrb r1, [r4] - ldr r0, [r6] - lsls r1, 1 - adds r1, r0 - adds r1, 0x99 - ldrh r0, [r3] - lsrs r0, 8 - strb r0, [r1] - ldrb r0, [r4] - mov r2, r9 - ldrb r1, [r2] - ldr r2, [r6] - lsls r0, 3 - lsls r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0xE0 - ldrh r1, [r3] - strb r1, [r0] - ldrb r1, [r4] - mov r4, r9 - ldrb r0, [r4] - ldr r2, [r6] - lsls r1, 3 - lsls r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0xE1 - ldrh r0, [r3] - lsrs r0, 8 - strb r0, [r1] -_0804C4B6: - mov r5, r12 - ldrb r0, [r5, 0x14] - adds r0, 0x1 - strb r0, [r5, 0x14] - b _0804C570 - .pool -_0804C4E4: - ldr r5, =gHitMarker - ldr r2, [r5] - movs r0, 0x80 - lsls r0, 12 - ands r0, r2 - cmp r0, 0 - bne _0804C568 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804C568 - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r0, 0 - blt _0804C568 - ldr r0, =gBattleMoves - mov r9, r0 - ldr r1, =gCurrentMove - mov r8, r1 - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - add r1, r9 - ldrb r0, [r1, 0x6] - cmp r0, 0x8 - bne _0804C568 - movs r6, 0x80 - lsls r6, 2 - adds r4, r6, 0 - ands r4, r2 - cmp r4, 0 - bne _0804C568 - ldr r7, =gBankTarget - ldrb r0, [r7] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0804C55E - bl _0804BCAC -_0804C55E: - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - ldr r2, =gBattleScripting - mov r12, r2 -_0804C568: - mov r3, r12 - ldrb r0, [r3, 0x14] - adds r0, 0x1 - strb r0, [r3, 0x14] -_0804C570: - ldr r4, [sp, 0x10] - cmp r4, 0x1 - bne _0804C582 - mov r5, r10 - cmp r5, 0 - bne _0804C582 - movs r0, 0x11 - mov r1, r12 - strb r0, [r1, 0x14] -_0804C582: - ldr r2, [sp, 0x10] - cmp r2, 0x2 - bne _0804C598 - ldr r4, [sp, 0x14] - mov r3, r12 - ldrb r3, [r3, 0x14] - cmp r4, r3 - bne _0804C598 - movs r0, 0x11 - mov r4, r12 - strb r0, [r4, 0x14] -_0804C598: - mov r5, r12 - ldrb r0, [r5, 0x14] - cmp r0, 0x11 - beq _0804C5A4 - bl _0804BD14 -_0804C5A4: - mov r1, r12 - ldrb r0, [r1, 0x14] - cmp r0, 0x11 - bne _0804C5BA - mov r2, r10 - cmp r2, 0 - bne _0804C5BA - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 -_0804C5B8: - str r0, [r1] -_0804C5BA: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk49_moveendturn - thumb_func_start atk4A_typecalc2 atk4A_typecalc2: @ 804C5F4 push {r4-r7,lr} @@ -5448,7 +4074,7 @@ atk63_jumptorandomattack: @ 804E990 b _0804E9C2 .pool _0804E9B4: - ldr r2, =gUnknown_020241EC + ldr r2, =gLastUsedMove ldr r1, =gCurrentMove ldr r0, =gRandomMove ldrh r0, [r0] @@ -5456,7 +4082,7 @@ _0804E9B4: strh r0, [r2] adds r0, r1, 0 _0804E9C2: - ldr r3, =gUnknown_082D86A8 + ldr r3, =gBattleScriptsForMoveEffects ldr r2, =gBattleMoves ldrh r1, [r0] lsls r0, r1, 1 @@ -6746,7 +5372,7 @@ atk6F_set_visible: @ 804F50C strb r0, [r4] movs r0, 0 movs r1, 0 - bl dp01_build_cmdbuf_x33_a_33_33 + bl EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -8215,7 +6841,7 @@ _0805024A: ldr r1, =gBankTarget strb r0, [r1] ldr r5, =gBattlescriptCurrInstr - ldr r3, =gUnknown_082D86A8 + ldr r3, =gBattleScriptsForMoveEffects ldr r2, =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 @@ -11692,7 +10318,7 @@ atk9B_transformdataexecution: @ 805205C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r1, =gUnknown_020241EC + ldr r1, =gLastUsedMove ldr r2, =0x0000ffff adds r0, r2, 0 strh r0, [r1] @@ -12000,7 +10626,7 @@ atk9D_copyattack: @ 8052300 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove ldr r1, =0x0000ffff adds r7, r1, 0 strh r7, [r0] @@ -12256,7 +10882,7 @@ _0805251C: ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] - ldr r3, =gUnknown_082D86A8 + ldr r3, =gBattleScriptsForMoveEffects ldr r2, =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 @@ -13229,7 +11855,7 @@ atkA8_copymovepermanently: @ 8052D8C mov r5, r8 push {r5-r7} sub sp, 0x14 - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove ldr r1, =0x0000ffff adds r5, r1, 0 strh r5, [r0] @@ -13252,7 +11878,7 @@ atkA8_copymovepermanently: @ 8052D8C beq _08052DC4 b _08052F18 _08052DC4: - ldr r0, =gUnknown_02024240 + ldr r0, =gUnknownMovesUsedByBanks ldr r2, =gBankTarget ldrb r1, [r2] lsls r1, 1 @@ -13387,7 +12013,7 @@ _08052E7A: strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] - ldr r3, =gUnknown_02024240 + ldr r3, =gUnknownMovesUsedByBanks ldr r2, =gBankTarget ldrb r0, [r2] lsls r0, 1 @@ -16755,7 +15381,7 @@ atkCC_callterrainattack: @ 8054BEC bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] - ldr r3, =gUnknown_082D86A8 + ldr r3, =gBattleScriptsForMoveEffects ldr r2, =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 diff --git a/asm/rom3.s b/asm/rom3.s index 84dec85e5c..f4a273d953 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2596,7 +2596,7 @@ dp01_build_cmdbuf_x10_TODO: @ 8033BE4 ldr r4, =gCurrentMove ldrh r0, [r4] strh r0, [r2, 0x4] - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove ldrh r0, [r0] mov r1, r12 strh r0, [r1, 0x2] @@ -2711,7 +2711,7 @@ EmitPrintStringPlayerOnly: @ 8033CFC ldr r0, =gCurrentMove ldrh r0, [r0] strh r0, [r2, 0x4] - ldr r0, =gUnknown_020241EC + ldr r0, =gLastUsedMove ldrh r0, [r0] mov r1, r12 strh r0, [r1, 0x2] @@ -3642,8 +3642,8 @@ dp01_build_cmdbuf_x32_32_32_32: @ 80343F4 .pool thumb_func_end dp01_build_cmdbuf_x32_32_32_32 - thumb_func_start dp01_build_cmdbuf_x33_a_33_33 -dp01_build_cmdbuf_x33_a_33_33: @ 8034414 + thumb_func_start EmitSpriteInvisibility +EmitSpriteInvisibility: @ 8034414 push {lr} adds r3, r1, 0 lsls r0, 24 @@ -3659,7 +3659,7 @@ dp01_build_cmdbuf_x33_a_33_33: @ 8034414 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x33_a_33_33 + thumb_func_end EmitSpriteInvisibility thumb_func_start EmitBattleAnimation EmitBattleAnimation: @ 8034438 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0d94d31b01..14305b7a2f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3,7 +3,7 @@ .section script_data, "aw", %progbits -gUnknown_082D86A8:: @ 82D86A8 +gBattleScriptsForMoveEffects:: @ 82D86A8 .incbin "baserom.gba", 0x2d86a8, 0x388 gUnknown_082D8A30:: @ 82D8A30 @@ -138,7 +138,7 @@ gUnknown_082DADD8:: @ 82DADD8 gUnknown_082DAE03:: @ 82DAE03 .incbin "baserom.gba", 0x2dae03, 0xa -gUnknown_082DAE0D:: @ 82DAE0D +BattleScript_RageIsBuilding:: @ 82DAE0D .incbin "baserom.gba", 0x2dae0d, 0x7 BattleScript_MoveUsedIsDisabled:: @ 82DAE14 @@ -279,7 +279,7 @@ BattleScript_MoveUsedIsFrozen:: @ 82DB26A BattleScript_MoveUsedUnfroze:: @ 82DB277 .incbin "baserom.gba", 0x2db277, 0xb -gUnknown_082DB282:: @ 82DB282 +BattleScript_DefrostedViaFireMove:: @ 82DB282 .incbin "baserom.gba", 0x2db282, 0x9 BattleScript_MoveUsedIsParalyzed:: @ 82DB28B diff --git a/include/battle.h b/include/battle.h index 957e3542bd..a6573934f2 100644 --- a/include/battle.h +++ b/include/battle.h @@ -619,14 +619,7 @@ struct BattleStruct u8 field_95; u8 field_96; u8 field_97; - u8 field_98; - u8 field_99; - u8 field_9A; - u8 field_9B; - u8 field_9C; - u8 field_9D; - u8 field_9E; - u8 field_9F; + u8 mirrorMoves[8]; // ask gamefreak why they declared it that way u8 field_A0; u8 field_A1; u8 field_A2; @@ -647,14 +640,16 @@ struct BattleStruct u16 usedHeldItems[BATTLE_BANKS_COUNT]; u8 field_C0[8]; u16 choicedMove[BATTLE_BANKS_COUNT]; - u16 field_D0[BATTLE_BANKS_COUNT]; + u16 changedItems[BATTLE_BANKS_COUNT]; u8 intimidateBank; u8 fillerD9[0xDA-0xD9]; u8 field_DA; u8 turnSideTracker; u8 fillerDC[0xDF-0xDC]; u8 field_DF; - u8 fillerE0[0x1A0-0xE0]; + u8 mirrorMoveArrays[32]; + u16 castformPalette[4][16]; + u8 field_180[32]; u8 field_1A0; u8 field_1A1; u8 filler1A2; @@ -675,6 +670,14 @@ extern struct BattleStruct* gBattleStruct; var2[offsetof(struct structName, offsetField)] = value; \ } +// This is a leftover from R/S direct use of ewram addresses +#define GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(bank, varName) \ +{ \ + void** memes1 = (void**)(&gBattleStruct); \ + void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, changedItems))); \ + varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ +} + #define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ @@ -836,6 +839,7 @@ void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); void PrepareStringBattle(u16 stringId, u8 bank); u8 GetBattleBank(u8 caseId); void UndoEffectsAfterFainting(void); +bool8 HasMoveFailed(u8 bank); // battle_3 void BattleScriptPush(const u8* bsPtr); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index bfa1bd507a..2ae6f002f4 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -10,6 +10,7 @@ void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); void EmitFaintAnimation(u8 bufferId); void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); +void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); void MarkBufferBankForExecution(u8 bank); diff --git a/include/pokemon.h b/include/pokemon.h index 674e6dbf4e..1049776e84 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -443,6 +443,7 @@ struct BattleMove #define FLAG_PROTECT_AFFECTED 0x2 #define FLAG_MAGICCOAT_AFFECTED 0x4 #define FLAG_SNATCH_AFFECTED 0x8 +#define FLAG_MIRROR_MOVE_AFFECTED 0x10 #define FLAG_KINGSROCK_AFFECTED 0x20 struct SpindaSpot diff --git a/src/battle_3.c b/src/battle_3.c index 1b62e3bb84..4453545d3d 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -186,7 +186,6 @@ extern void b_call_bc_move_exec(const u8 *); extern void BattleTurnPassed(void); extern void SetMoveEffect(bool8 primary, u8 certainArg); extern bool8 UproarWakeUpCheck(u8 bank); -extern u8 sub_803F90C(u8 bank); extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); extern u8 sub_806D864(u8); @@ -848,7 +847,7 @@ u8 TurnBasedEffects(void) { gBankAttacker = gActiveBank; gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down - if (sub_803F90C(gActiveBank)) + if (HasMoveFailed(gActiveBank)) { CancelMultiTurnMoves(gActiveBank); gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -874,7 +873,7 @@ u8 TurnBasedEffects(void) if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) { gBattleMons[gActiveBank].status2 -= 0x400; - if (sub_803F90C(gActiveBank)) + if (HasMoveFailed(gActiveBank)) CancelMultiTurnMoves(gActiveBank); else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS)) diff --git a/src/battle_4.c b/src/battle_4.c index ec84d1a5c5..f896cd8069 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -57,6 +57,8 @@ extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; extern u16 gUnknown_02024250[4]; extern u16 gUnknown_02024258[4]; +extern u16 gUnknown_02024260[4]; +extern u8 gUnknown_02024270[4]; extern u8 gStringBank; extern u16 gDynamicBasePower; extern u16 gLastUsedItem; @@ -78,6 +80,9 @@ extern u8 gCurrentMoveTurn; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u16 gPartnerTrainerId; +extern u16 gLastUsedMove; +extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; +extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; @@ -85,6 +90,7 @@ extern const u8 gTypeEffectiveness[]; extern const u16 gMissStringIds[]; extern const u16 gTrappingMoves[]; extern const u8 gTrainerMoney[]; +extern const u8* const gBattleScriptsForMoveEffects[]; // functions extern void sub_81A5718(u8 bank); // battle frontier 2 @@ -132,6 +138,9 @@ extern const u8 BattleScript_FaintAttacker[]; extern const u8 BattleScript_FaintTarget[]; extern const u8 BattleScript_DestinyBondTakesLife[]; extern const u8 BattleScript_GrudgeTakesPp[]; +extern const u8 BattleScript_RageIsBuilding[]; +extern const u8 BattleScript_DefrostedViaFireMove[]; +extern const u8 gUnknown_082DB87D[]; // read via orr #define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) @@ -145,7 +154,7 @@ extern const u8 BattleScript_GrudgeTakesPp[]; #define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) -#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special))) +#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))) // this file's functions bool8 IsTwoTurnsMove(u16 move); @@ -227,7 +236,7 @@ void atk45_playanimation(void); void atk46_playanimation2(void); void atk47_setgraphicalstatchangevalues(void); void atk48_playstatchangeanimation(void); -void atk49_moveendturn(void); +void atk49_moveend(void); void atk4A_typecalc2(void); void atk4B_return_atk_to_ball(void); void atk4C_copy_poke_data(void); @@ -479,7 +488,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk46_playanimation2, atk47_setgraphicalstatchangevalues, atk48_playstatchangeanimation, - atk49_moveendturn, + atk49_moveend, atk4A_typecalc2, atk4B_return_atk_to_ball, atk4C_copy_poke_data, @@ -2616,13 +2625,12 @@ void SetMoveEffect(bool8 primary, u8 certain) else { // This is a leftover from R/S direct use of ewram addresses - void** memes1 = (void**)(&gBattleStruct); - void* memes2 = (void*)((u32)(gBankAttacker * 2 + offsetof(struct BattleStruct, field_D0))); - u16* memes3 = (u16*)(((void*)(*memes1) + (u32)(memes2))); - gLastUsedItem = *memes3 = gBattleMons[gBankTarget].item; + u16* changedItem; + GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(gBankAttacker, changedItem); + gLastUsedItem = *changedItem = gBattleMons[gBankTarget].item; // A sane representation of this would simply be: - // gLastUsedItem = gBattleStruct->field_D0[gBankAttacker] = gBattleMons[gBankTarget].item; + // gLastUsedItem = gBattleStruct->changedItems[gBankAttacker] = gBattleMons[gBankTarget].item; gBattleMons[gBankTarget].item = 0; @@ -4269,6 +4277,7 @@ void atk47_setgraphicalstatchangevalues(void) gBattlescriptCurrInstr++; } +#ifdef NONMATCHING void atk48_playstatchangeanimation(void) { u32 currStat = 0; @@ -4358,3 +4367,548 @@ void atk48_playstatchangeanimation(void) gBattlescriptCurrInstr += 4; } } +#else +__attribute__((naked)) +void atk48_playstatchangeanimation(void) +{ + asm("\n\ + .syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + movs r7, 0\n\ + movs r0, 0\n\ + mov r8, r0\n\ + movs r3, 0\n\ + ldr r5, =gBattlescriptCurrInstr\n\ + ldr r0, [r5]\n\ + ldrb r0, [r0, 0x1]\n\ + str r3, [sp]\n\ + bl GetBattleBank\n\ + ldr r2, =gActiveBank\n\ + strb r0, [r2]\n\ + ldr r0, [r5]\n\ + ldrb r4, [r0, 0x2]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + beq _0804BAEC\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x15\n\ + cmp r0, 0\n\ + beq _0804BA18\n\ + movs r1, 0x2D\n\ +_0804BA18:\n\ + cmp r4, 0\n\ + beq _0804BAC0\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + ldr r0, =gBattleMons + 0x18\n\ + mov r9, r0\n\ + lsls r5, r1, 16\n\ +_0804BA26:\n\ + adds r0, r4, 0\n\ + mov r1, r10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804BAB2\n\ + ldr r0, =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804BA58\n\ + ldr r0, =gActiveBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + b _0804BAA0\n\ + .pool\n\ +_0804BA58:\n\ + ldr r6, =gActiveBank\n\ + ldrb r0, [r6]\n\ + str r3, [sp]\n\ + bl GetBankIdentity\n\ + mov r1, r10\n\ + ands r1, r0\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, =gSideTimers\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x4]\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + bne _0804BAB2\n\ + ldr r0, =gBattleMons\n\ + ldrb r2, [r6]\n\ + movs r1, 0x58\n\ + muls r2, r1\n\ + adds r0, r2, r0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1D\n\ + beq _0804BAB2\n\ + cmp r0, 0x49\n\ + beq _0804BAB2\n\ + cmp r0, 0x33\n\ + bne _0804BA96\n\ + cmp r7, 0x6\n\ + beq _0804BAB2\n\ +_0804BA96:\n\ + cmp r0, 0x34\n\ + bne _0804BA9E\n\ + cmp r7, 0x1\n\ + beq _0804BAB2\n\ +_0804BA9E:\n\ + adds r0, r7, r2\n\ +_0804BAA0:\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0\n\ + ble _0804BAB2\n\ + lsrs r0, r5, 16\n\ + mov r8, r0\n\ + adds r3, 0x1\n\ +_0804BAB2:\n\ + lsrs r4, 1\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r5, r1\n\ + adds r7, 0x1\n\ + cmp r4, 0\n\ + bne _0804BA26\n\ +_0804BAC0:\n\ + ldr r0, =gBattlescriptCurrInstr\n\ + mov r9, r0\n\ + cmp r3, 0x1\n\ + ble _0804BB4E\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x39\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _0804BB4E\n\ + movs r0, 0x3A\n\ + b _0804BB4C\n\ + .pool\n\ +_0804BAEC:\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0xE\n\ + cmp r0, 0\n\ + beq _0804BAF8\n\ + movs r1, 0x26\n\ +_0804BAF8:\n\ + mov r9, r5\n\ + cmp r4, 0\n\ + beq _0804BB34\n\ + ldr r6, =gBattleMons + 0x18\n\ + adds r5, r2, 0\n\ + lsls r2, r1, 16\n\ +_0804BB04:\n\ + movs r0, 0x1\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _0804BB26\n\ + ldrb r1, [r5]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0xB\n\ + bgt _0804BB26\n\ + lsrs r1, r2, 16\n\ + mov r8, r1\n\ + adds r3, 0x1\n\ +_0804BB26:\n\ + lsrs r4, 1\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + adds r2, r0\n\ + adds r7, 0x1\n\ + cmp r4, 0\n\ + bne _0804BB04\n\ +_0804BB34:\n\ + cmp r3, 0x1\n\ + ble _0804BB4E\n\ + mov r1, r9\n\ + ldr r0, [r1]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x37\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _0804BB4E\n\ + movs r0, 0x38\n\ +_0804BB4C:\n\ + mov r8, r0\n\ +_0804BB4E:\n\ + mov r1, r9\n\ + ldr r2, [r1]\n\ + ldrb r1, [r2, 0x3]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0804BB6C\n\ + cmp r3, 0x1\n\ + bgt _0804BB6C\n\ + adds r0, r2, 0x4\n\ + mov r1, r9\n\ + b _0804BBBA\n\ + .pool\n\ +_0804BB6C:\n\ + cmp r3, 0\n\ + beq _0804BBB4\n\ + ldr r4, =gBattleScripting\n\ + ldrb r0, [r4, 0x1B]\n\ + cmp r0, 0\n\ + bne _0804BBB4\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + mov r2, r8\n\ + str r3, [sp]\n\ + bl EmitBattleAnimation\n\ + ldr r0, =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + beq _0804BBA4\n\ + cmp r3, 0x1\n\ + ble _0804BBA4\n\ + movs r0, 0x1\n\ + strb r0, [r4, 0x1B]\n\ +_0804BBA4:\n\ + ldr r1, =gBattlescriptCurrInstr\n\ + b _0804BBB6\n\ + .pool\n\ +_0804BBB4:\n\ + mov r1, r9\n\ +_0804BBB6:\n\ + ldr r0, [r1]\n\ + adds r0, 0x4\n\ +_0804BBBA:\n\ + str r0, [r1]\n\ + add sp, 0x4\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\ + .syntax divided"); +} +#endif // NONMATCHING + +#define ATK49_LAST_CASE 17 + +void atk49_moveend(void) +{ + s32 i; + bool32 effect; + u8 moveType; + u8 holdEffectAtk; + u16 *choicedMoveAtk; + u8 arg1, arg2; + u16 lastMove; + + effect = FALSE; + + if (gLastUsedMove == 0xFFFF) + lastMove = 0; + else + lastMove = gLastUsedMove; + + arg1 = gBattlescriptCurrInstr[1]; + arg2 = gBattlescriptCurrInstr[2]; + + if (gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY) + holdEffectAtk = gEnigmaBerries[gBankAttacker].holdEffect; + else + holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBankAttacker].item); + + choicedMoveAtk = &gBattleStruct->choicedMove[gBankAttacker]; + + GET_MOVE_TYPE(gCurrentMove, moveType); + + do + { + switch (gBattleScripting.atk49_state) + { + case 0: // rage check + if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE + && gBattleMons[gBankTarget].hp != 0 && gBankAttacker != gBankTarget + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED + && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB) + { + gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RageIsBuilding; + effect = TRUE; + } + gBattleScripting.atk49_state++; + break; + case 1: // defrosting check + if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE + && gBattleMons[gBankTarget].hp != 0 && gBankAttacker != gBankTarget + && gSpecialStatuses[gBankTarget].moveturnLostHP_special + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && moveType == TYPE_FIRE) + { + gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE); + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; + effect = TRUE; + } + gBattleScripting.atk49_state++; + break; + case 2: // target synchronize + if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0)) + effect = TRUE; + gBattleScripting.atk49_state++; + break; + case 3: // contact abilities + if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0)) + effect = TRUE; + gBattleScripting.atk49_state++; + break; + case 4: // status immunities + if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) + effect = TRUE; // it loops through all banks, so we increment after its done with all banks + else + gBattleScripting.atk49_state++; + break; + case 5: // attacker synchronize + if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0)) + effect = TRUE; + gBattleScripting.atk49_state++; + break; + case 6: // update choice band move + if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND + || gLastUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) + goto LOOP; + if (gLastUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) + { + gBattleScripting.atk49_state++; + break; + } + *choicedMoveAtk = gLastUsedMove; + LOOP: + { + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == *choicedMoveAtk) + break; + } + if (i == 4) + *choicedMoveAtk = 0; + + gBattleScripting.atk49_state++; + } + break; + case 7: // changed held items + for (i = 0; i < gNoOfAllBanks; i++) + { + u16* changedItem; + GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(i, changedItem); + if (*changedItem != 0) + { + gBattleMons[i].item = *changedItem; + *changedItem = 0; + } + } + gBattleScripting.atk49_state++; + break; + case 11: // item effects for all banks + if (ItemBattleEffects(3, 0, FALSE)) + effect = TRUE; + else + gBattleScripting.atk49_state++; + break; + case 12: // king's rock and shell bell + if (ItemBattleEffects(4, 0, FALSE)) + effect = TRUE; + gBattleScripting.atk49_state++; + break; + case 8: // make attacker sprite invisible + if (gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE) + && gHitMarker & HITMARKER_NO_ANIMATIONS) + { + gActiveBank = gBankAttacker; + EmitSpriteInvisibility(0, TRUE); + MarkBufferBankForExecution(gActiveBank); + gBattleScripting.atk49_state++; + return; + } + gBattleScripting.atk49_state++; + break; + case 9: // make attacker sprite visible + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT + || !(gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE)) + || HasMoveFailed(gBankAttacker)) + { + gActiveBank = gBankAttacker; + EmitSpriteInvisibility(0, FALSE); + MarkBufferBankForExecution(gActiveBank); + gStatuses3[gBankAttacker] &= ~(STATUS3_SEMI_INVULNERABLE); + gSpecialStatuses[gBankAttacker].restoredBankSprite = 1; + gBattleScripting.atk49_state++; + return; + } + gBattleScripting.atk49_state++; + break; + case 10: // make target sprite visible + if (!gSpecialStatuses[gBankTarget].restoredBankSprite && gBankTarget < gNoOfAllBanks + && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)) + { + gActiveBank = gBankTarget; + EmitSpriteInvisibility(0, FALSE); + MarkBufferBankForExecution(gActiveBank); + gStatuses3[gBankTarget] &= ~(STATUS3_SEMI_INVULNERABLE); + gBattleScripting.atk49_state++; + return; + } + gBattleScripting.atk49_state++; + break; + case 13: // update substitute + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gDisableStructs[i].substituteHP == 0) + gBattleMons[i].status2 &= ~(STATUS2_SUBSTITUTE); + } + gBattleScripting.atk49_state++; + break; + case 14: // This case looks interesting, although I am not certain what it does. Probably fine tunes edge cases. + if (gHitMarker & HITMARKER_PURSUIT_TRAP) + { + gActiveBank = gBankAttacker; + gBankAttacker = gBankTarget; + gBankTarget = gActiveBank; + gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + } + if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED) + { + gUnknownMovesUsedByBanks[gBankAttacker] = gLastUsedMove; + } + if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) + && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) + && gBattleMoves[lastMove].effect != EFFECT_BATON_PASS) + { + if (gHitMarker & HITMARKER_OBEYS) + { + gLastUsedMovesByBanks[gBankAttacker] = gLastUsedMove; + gUnknown_02024260[gBankAttacker] = gCurrentMove; + } + else + { + gLastUsedMovesByBanks[gBankAttacker] = 0xFFFF; + gUnknown_02024260[gBankAttacker] = 0xFFFF; + } + + if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget))) + gUnknown_02024270[gBankTarget] = gBankAttacker; + + if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gLastUsedMove == 0xFFFF) + { + gUnknown_02024250[gBankTarget] = gLastUsedMove; + } + else + { + gUnknown_02024250[gBankTarget] = gCurrentMove; + GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]); + } + } + else + { + gUnknown_02024250[gBankTarget] = 0xFFFF; + } + } + gBattleScripting.atk49_state++; + break; + case 15: // mirror move + if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) + && gBattleMoves[lastMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS + && gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget)) + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + u8 target, attacker; + + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gLastUsedMove; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gLastUsedMove >> 8; + + target = gBankTarget; + attacker = gBankAttacker; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gLastUsedMove; + + target = gBankTarget; + attacker = gBankAttacker; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gLastUsedMove >> 8; + } + gBattleScripting.atk49_state++; + break; + case 16: // + if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !gProtectStructs[gBankAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH + && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + { + u8 bank = GetBankByPlayerAI(GetBankIdentity(gBankTarget) ^ 2); + if (gBattleMons[bank].hp != 0) + { + gBankTarget = bank; + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + gBattleScripting.atk49_state = 0; + MoveValuesCleanUp(); + BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); + gBattlescriptCurrInstr = gUnknown_082DB87D; + return; + } + else + { + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + } + } + gBattleScripting.atk49_state++; + break; + case ATK49_LAST_CASE: + break; + } + + if (arg1 == 1 && effect == FALSE) + gBattleScripting.atk49_state = ATK49_LAST_CASE; + if (arg1 == 2 && arg2 == gBattleScripting.atk49_state) + gBattleScripting.atk49_state = ATK49_LAST_CASE; + + } while (gBattleScripting.atk49_state != ATK49_LAST_CASE && effect == FALSE); + + if (gBattleScripting.atk49_state == ATK49_LAST_CASE && effect == FALSE) + gBattlescriptCurrInstr += 3; +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index 616b1ca80e..bc73928852 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -334,7 +334,7 @@ gUnknown_020241E9: @ 20241E9 gCurrentMove: @ 20241EA .space 0x2 -gUnknown_020241EC: @ 20241EC +gLastUsedMove: @ 20241EC .space 0x2 gRandomMove: @ 20241EE @@ -391,7 +391,7 @@ gUnknown_02024220: @ 2024220 gUnknown_02024230: @ 2024230 .space 0x10 -gUnknown_02024240: @ 2024240 +gUnknownMovesUsedByBanks: @ 2024240 .space 0x8 gLastUsedMovesByBanks: @ 2024248 From 898d0b20ad524e2837079a50f33f6fae0e72b685 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 24 Sep 2017 00:29:52 +0200 Subject: [PATCH 030/182] up to x50 --- asm/battle_2.s | 20 +- asm/battle_4.s | 1130 +--------------------------------- asm/pokemon_item_effect.s | 2 +- asm/rom3.s | 30 +- include/battle.h | 21 +- include/battle_controllers.h | 4 + include/pokemon.h | 3 + src/battle_3.c | 2 - src/battle_4.c | 368 +++++++++++ src/pokemon_3.c | 4 +- 10 files changed, 422 insertions(+), 1162 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 61ee831010..cc387f1a8b 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6678,8 +6678,8 @@ _0803A1E4: .pool thumb_func_end sub_8039F40 - thumb_func_start sub_803A284 -sub_803A284: @ 803A284 + thumb_func_start SwitchInClearStructs +SwitchInClearStructs: @ 803A284 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7254,7 +7254,7 @@ _0803A6B4: pop {r0} bx r0 .pool - thumb_func_end sub_803A284 + thumb_func_end SwitchInClearStructs thumb_func_start UndoEffectsAfterFainting UndoEffectsAfterFainting: @ 803A75C @@ -7806,7 +7806,7 @@ _0803ABD4: movs r0, 0 movs r1, 0 movs r2, 0 - bl dp01_build_cmdbuf_x00_a_b_0 + bl EmitGetAttributes ldrb r0, [r4] bl MarkBufferBankForExecution ldrb r0, [r5] @@ -8947,7 +8947,7 @@ _0803B5B2: ldrb r1, [r0] movs r0, 0 movs r2, 0 - bl dp01_build_cmdbuf_x05_a_b_c + bl EmitSwitchInAnim ldrb r0, [r4] bl MarkBufferBankForExecution _0803B5D4: @@ -10488,7 +10488,7 @@ _0803C374: str r0, [sp] movs r0, 0 movs r2, 0x6 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon b _0803C42E .pool _0803C3B0: @@ -10531,7 +10531,7 @@ _0803C3EE: movs r1, 0 _0803C400: movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon b _0803C42E .pool _0803C410: @@ -10548,7 +10548,7 @@ _0803C410: movs r1, 0 movs r2, 0x6 movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon _0803C42E: ldr r0, =gActiveBank ldrb r0, [r0] @@ -11287,14 +11287,14 @@ _0803CB3C: movs r0, 0 movs r1, 0 adds r2, r4, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg b _0803CB66 .pool _0803CB5C: movs r0, 0 movs r1, 0x1 adds r2, r4, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg _0803CB66: ldr r4, =gActiveBank _0803CB68: diff --git a/asm/battle_4.s b/asm/battle_4.s index c2654ad642..8c3a0ea7e1 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,1108 +5,6 @@ .text - thumb_func_start atk4A_typecalc2 -atk4A_typecalc2: @ 804C5F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - movs r5, 0 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r8, r0 - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r2 - adds r7, r3, 0 - cmp r0, 0x1A - bne _0804C688 - mov r1, r8 - cmp r1, 0x4 - bne _0804C688 - ldr r3, =gLastUsedAbility - strb r0, [r3] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x9 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gUnknown_02024250 - ldrb r0, [r7] - lsls r0, 1 - adds r0, r1 - strh r4, [r0] - ldr r0, =gBattleCommunication - mov r2, r8 - strb r2, [r0, 0x6] - ldrb r0, [r7] - ldrb r1, [r3] - bl RecordAbilityBattle - b _0804C76A - .pool -_0804C678: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] - b _0804C76A - .pool -_0804C688: - ldr r1, =gTypeEffectiveness - adds r0, r5, r1 - ldrb r0, [r0] - adds r6, r1, 0 - b _0804C74A - .pool -_0804C698: - adds r0, r5, r6 - ldrb r0, [r0] - cmp r0, r8 - bne _0804C744 - adds r2, r5, 0x1 - adds r3, r2, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r0, 0x21 - ldrb r1, [r3] - adds r3, r2, 0 - ldrb r0, [r0] - cmp r1, r0 - bne _0804C6D6 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r1, [r0] - cmp r1, 0 - beq _0804C678 - cmp r1, 0x5 - bne _0804C6CA - movs r0, 0x4 - orrs r4, r0 -_0804C6CA: - cmp r1, 0x14 - bne _0804C6D6 - movs r0, 0x2 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0804C6D6: - adds r2, r3, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0804C744 - adds r0, 0x21 - ldrb r1, [r0] - cmp r1, r2 - beq _0804C6FE - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _0804C678 -_0804C6FE: - cmp r1, r2 - beq _0804C714 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0804C714 - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0804C714: - adds r2, r3, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0804C744 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0804C744 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0804C744 - movs r0, 0x2 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0804C744: - adds r5, 0x3 - adds r0, r5, r6 - ldrb r0, [r0] -_0804C74A: - cmp r0, 0xFF - beq _0804C76A - cmp r0, 0xFE - bne _0804C698 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - mov r1, r12 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0804C744 -_0804C76A: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - mov r8, r0 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x19 - bne _0804C7E6 - movs r5, 0x29 - ands r5, r4 - cmp r5, 0 - bne _0804C7E6 - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r7, =gCurrentMove - ldrh r1, [r7] - bl AttacksThisTurn - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _0804C7E6 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0804C7AC - movs r0, 0x6 - ands r4, r0 - cmp r4, 0x6 - bne _0804C7E6 -_0804C7AC: - ldr r2, =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0804C7E6 - ldr r3, =gLastUsedAbility - strb r6, [r3] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gUnknown_02024250 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - strh r5, [r0] - ldr r1, =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - ldrb r0, [r2] - ldrb r1, [r3] - bl RecordAbilityBattle -_0804C7E6: - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0804C804 - ldr r2, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 4 - adds r1, r2 - ldrb r0, [r1, 0x1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x1] -_0804C804: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk4A_typecalc2 - - thumb_func_start atk4B_return_atk_to_ball -atk4B_return_atk_to_ball: @ 804C844 - push {r4,lr} - ldr r4, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r2, =gHitMarker - ldr r1, =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - ands r0, r1 - cmp r0, 0 - bne _0804C872 - movs r0, 0 - movs r1, 0 - bl dp01_build_cmdbuf_x06_a - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804C872: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk4B_return_atk_to_ball - - thumb_func_start atk4C_copy_poke_data -atk4C_copy_poke_data: @ 804C894 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804C8E4 - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldr r3, =gBattlePartyID - ldrb r0, [r4] - lsls r2, r0, 1 - adds r2, r3 - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x5C - ldrb r0, [r0] - strh r0, [r2] - ldr r1, =gBitTable - ldrb r0, [r4] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0] - movs r0, 0 - movs r1, 0 - bl dp01_build_cmdbuf_x00_a_b_0 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_0804C8E4: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk4C_copy_poke_data - - thumb_func_start atk4D_switch_data_update -atk4D_switch_data_update: @ 804C904 - push {r4-r7,lr} - sub sp, 0x58 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0804C912 - b _0804CAA4 -_0804C912: - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldr r6, =gBattleMons - ldrb r0, [r4] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - mov r0, sp - movs r2, 0x58 - bl memcpy - ldrb r0, [r4] - muls r0, r5 - adds r3, r0, r6 - movs r2, 0 - ldr r5, =gBattleBufferB -_0804C93E: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _0804C93E - ldr r4, =gBattleMons - ldr r6, =gActiveBank - ldrb r0, [r6] - movs r7, 0x58 - adds r2, r0, 0 - muls r2, r7 - adds r2, r4 - ldr r3, =gBaseStats - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r7 - adds r1, r4 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r7 - adds r1, r4 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - ldrb r1, [r6] - muls r1, r7 - adds r1, r4 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gWishFutureKnock - adds r0, 0x29 - adds r0, r2, r0 - ldrb r1, [r0] - ldr r3, =gBitTable - ldr r2, =gBattlePartyID - ldrb r5, [r6] - lsls r0, r5, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - mov r12, r4 - cmp r1, 0 - beq _0804C9DE - adds r0, r5, 0 - muls r0, r7 - add r0, r12 - movs r1, 0 - strh r1, [r0, 0x2E] -_0804C9DE: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7F - bne _0804CA26 - movs r2, 0 - adds r4, r6, 0 - movs r6, 0x58 - mov r5, r12 - adds r5, 0x18 - add r3, sp, 0x18 -_0804C9FE: - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r6 - adds r1, r2, r1 - adds r1, r5 - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _0804C9FE - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - mov r1, r12 - adds r1, 0x50 - adds r0, r1 - ldr r1, [sp, 0x50] - str r1, [r0] -_0804CA26: - bl sub_803A284 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - beq _0804CA78 - ldr r4, =gBattleMons - ldr r0, =gActiveBank - ldrb r3, [r0] - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r1, r2, r4 - ldrh r0, [r1, 0x2C] - lsrs r0, 1 - ldrh r1, [r1, 0x28] - cmp r0, r1 - bcc _0804CA78 - cmp r1, 0 - beq _0804CA78 - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0804CA78 - ldr r0, =gBattleStruct - ldr r2, [r0] - adds r2, 0x92 - ldr r1, =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] -_0804CA78: - ldr r0, =gBattleScripting - ldr r3, =gActiveBank - ldrb r2, [r3] - strb r2, [r0, 0x17] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - ldr r2, =gBattlePartyID - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0804CAA4: - add sp, 0x58 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk4D_switch_data_update - - thumb_func_start atk4E_switchin_anim -atk4E_switchin_anim: @ 804CAE8 - push {r4-r6,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804CB86 - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r6, =gActiveBank - strb r0, [r6] - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0804CB3E - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0804CB3E - ldr r4, =gBattleMons - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r0, r4 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r6] - muls r1, r5 - adds r4, 0x48 - adds r1, r4 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag -_0804CB3E: - ldr r2, =gAbsentBankFlags - ldr r1, =gBitTable - ldr r5, =gActiveBank - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - ldr r1, =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrb r1, [r0] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r2, [r0, 0x2] - movs r0, 0 - bl dp01_build_cmdbuf_x05_a_b_c - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0804CB86 - bl sub_81A56B4 -_0804CB86: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk4E_switchin_anim - - thumb_func_start atk4F_jump_if_cannot_switch -atk4F_jump_if_cannot_switch: @ 804CBB0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - movs r0, 0x7F - ands r0, r1 - bl GetBattleBank - ldr r3, =gActiveBank - strb r0, [r3] - ldr r2, [r4] - ldrb r1, [r2, 0x1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804CC28 - ldr r1, =gBattleMons - ldrb r3, [r3] - movs r0, 0x58 - muls r0, r3 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _0804CBFC - ldr r1, =gStatuses3 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _0804CC28 -_0804CBFC: - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0804CF00 - .pool -_0804CC28: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 15 - ands r0, r1 - cmp r0, 0 - beq _0804CCC0 - ldr r5, =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty - mov r8, r1 - cmp r0, 0x1 - bne _0804CC4E - ldr r0, =gEnemyParty - mov r8, r0 -_0804CC4E: - movs r4, 0 - ldrb r1, [r5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804CC5C - movs r4, 0x3 -_0804CC5C: - adds r6, r4, 0x3 - cmp r4, r6 - bge _0804CCA4 - ldr r7, =gBattlePartyID -_0804CC64: - movs r0, 0x64 - muls r0, r4 - mov r1, r8 - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804CC9E - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804CC9E - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0804CC9E - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r4 - bne _0804CCA4 -_0804CC9E: - adds r4, 0x1 - cmp r4, r6 - blt _0804CC64 -_0804CCA4: - cmp r4, r6 - bne _0804CCAA - b _0804CED0 -_0804CCAA: - b _0804CEF8 - .pool -_0804CCC0: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804CD8C - movs r0, 0x80 - lsls r0, 16 - ands r1, r0 - cmp r1, 0 - beq _0804CD00 - ldr r5, =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0804CCEC - ldr r0, =gPlayerParty - b _0804CD16 - .pool -_0804CCEC: - ldr r1, =gEnemyParty - mov r8, r1 - ldrb r0, [r5] - movs r4, 0x3 - cmp r0, 0x1 - bne _0804CD32 - movs r4, 0 - b _0804CD32 - .pool -_0804CD00: - ldr r5, =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty - mov r8, r1 - cmp r0, 0x1 - bne _0804CD18 - ldr r0, =gEnemyParty -_0804CD16: - mov r8, r0 -_0804CD18: - movs r4, 0 - ldrb r0, [r5] - bl sub_806D864 - lsls r0, 24 - lsrs r0, 24 - bl sub_806D82C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _0804CD32 - movs r4, 0x3 -_0804CD32: - adds r6, r4, 0x3 - cmp r4, r6 - bge _0804CCA4 - ldr r7, =gBattlePartyID -_0804CD3A: - movs r0, 0x64 - muls r0, r4 - mov r1, r8 - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804CD74 - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804CD74 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0804CD74 - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r4 - bne _0804CCA4 -_0804CD74: - adds r4, 0x1 - cmp r4, r6 - blt _0804CD3A - b _0804CCA4 - .pool -_0804CD8C: - movs r0, 0x80 - lsls r0, 8 - ands r1, r0 - cmp r1, 0 - beq _0804CE10 - ldr r5, =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0804CE10 - ldr r0, =gEnemyParty - mov r8, r0 - movs r4, 0 - ldrb r0, [r5] - cmp r0, 0x3 - bne _0804CDB4 - movs r4, 0x3 -_0804CDB4: - adds r6, r4, 0x3 - cmp r4, r6 - blt _0804CDBC - b _0804CCA4 -_0804CDBC: - ldr r7, =gBattlePartyID -_0804CDBE: - movs r0, 0x64 - muls r0, r4 - mov r1, r8 - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804CDFA - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804CDFA - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0804CDFA - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r4 - beq _0804CDFA - b _0804CCA4 -_0804CDFA: - adds r4, 0x1 - cmp r4, r6 - blt _0804CDBE - b _0804CCA4 - .pool -_0804CE10: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _0804CE54 - movs r0, 0x1 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _0804CE48 - movs r0, 0x3 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - b _0804CE4A - .pool -_0804CE48: - adds r6, r7, 0 -_0804CE4A: - ldr r0, =gEnemyParty - mov r8, r0 - b _0804CE82 - .pool -_0804CE54: - movs r0, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804CE7C - movs r0, 0x2 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - b _0804CE7E - .pool -_0804CE7C: - adds r6, r7, 0 -_0804CE7E: - ldr r1, =gPlayerParty - mov r8, r1 -_0804CE82: - movs r4, 0 -_0804CE84: - movs r0, 0x64 - muls r0, r4 - mov r1, r8 - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0804CEC6 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0804CEC6 - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804CEC6 - ldr r1, =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _0804CEC6 - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _0804CECC -_0804CEC6: - adds r4, 0x1 - cmp r4, 0x5 - ble _0804CE84 -_0804CECC: - cmp r4, 0x6 - bne _0804CEF8 -_0804CED0: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0804CF00 - .pool -_0804CEF8: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] -_0804CF00: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk4F_jump_if_cannot_switch - - thumb_func_start sub_804CF10 -sub_804CF10: @ 804CF10 - push {r4,r5,lr} - sub sp, 0x4 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r5, =gActiveBank - ldrb r0, [r5] - ldr r4, =gBattleStruct - ldr r1, [r4] - adds r1, r0, r1 - adds r1, 0x58 - ldr r3, =gBattlePartyID - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - ldr r1, [r4] - adds r0, r1 - adds r0, 0x5C - movs r1, 0x6 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x93 - ldr r3, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r3 - ldr r3, [r0] - ldrb r0, [r1] - bics r0, r3 - strb r0, [r1] - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r4] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x1 - movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f - ldrb r0, [r5] - bl MarkBufferBankForExecution - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_804CF10 - thumb_func_start atk50_openpartyscreen atk50_openpartyscreen: @ 804CF88 push {r4-r7,lr} @@ -1192,7 +90,7 @@ _0804CFE2: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution b _0804D098 @@ -1225,7 +123,7 @@ _0804D088: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0804D098: @@ -1318,7 +216,7 @@ _0804D15C: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution movs r0, 0x1 @@ -1402,7 +300,7 @@ _0804D214: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0804D22E: @@ -1475,7 +373,7 @@ _0804D2CC: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution movs r0, 0x2 @@ -1561,7 +459,7 @@ _0804D388: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0804D3A2: @@ -1597,7 +495,7 @@ _0804D3E8: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldr r0, =gActiveBank ldrb r0, [r0] bl MarkBufferBankForExecution @@ -1634,7 +532,7 @@ _0804D43C: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldr r0, =gActiveBank ldrb r0, [r0] bl MarkBufferBankForExecution @@ -1964,7 +862,7 @@ _0804D6E0: movs r0, 0 adds r1, r5, 0 movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r6] @@ -2003,7 +901,7 @@ _0804D77C: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0804D792: @@ -2045,7 +943,7 @@ _0804D7F4: movs r0, 0 movs r1, 0x2 movs r2, 0 - bl sub_8034464 + bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0804D804: @@ -2825,7 +1723,7 @@ atk58_return_to_ball: @ 804DEB8 strb r0, [r4] movs r0, 0 movs r1, 0x1 - bl dp01_build_cmdbuf_x06_a + bl EmitReturnPokeToBall ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -3829,7 +2727,7 @@ _0804E794: movs r0, 0 movs r1, 0 movs r2, 0 - bl dp01_build_cmdbuf_x00_a_b_0 + bl EmitGetAttributes ldrb r0, [r6] bl MarkBufferBankForExecution ldrb r0, [r5] @@ -6202,7 +5100,7 @@ _0804FCA2: beq _0804FD70 movs r0, 0 movs r1, 0 - bl dp01_build_cmdbuf_x06_a + bl EmitReturnPokeToBall ldrb r0, [r4] bl MarkBufferBankForExecution b _0804FD70 diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s index c798d77532..69895d5d01 100644 --- a/asm/pokemon_item_effect.s +++ b/asm/pokemon_item_effect.s @@ -1155,7 +1155,7 @@ _0806C6AE: movs r0, 0 movs r1, 0 movs r2, 0 - bl dp01_build_cmdbuf_x00_a_b_0 + bl EmitGetAttributes ldrb r0, [r4] bl MarkBufferBankForExecution strb r5, [r4] diff --git a/asm/rom3.s b/asm/rom3.s index f4a273d953..4ab819fa26 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2134,8 +2134,8 @@ _0803389C: .pool thumb_func_end sub_803375C - thumb_func_start dp01_build_cmdbuf_x00_a_b_0 -dp01_build_cmdbuf_x00_a_b_0: @ 80338B4 + thumb_func_start EmitGetAttributes +EmitGetAttributes: @ 80338B4 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -2152,7 +2152,7 @@ dp01_build_cmdbuf_x00_a_b_0: @ 80338B4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x00_a_b_0 + thumb_func_end EmitGetAttributes thumb_func_start dp01_build_cmdbuf_x01_a_b_0 dp01_build_cmdbuf_x01_a_b_0: @ 80338D8 @@ -2264,8 +2264,8 @@ dp01_build_cmdbuf_x04_4_4_4: @ 8033980 .pool thumb_func_end dp01_build_cmdbuf_x04_4_4_4 - thumb_func_start dp01_build_cmdbuf_x05_a_b_c -dp01_build_cmdbuf_x05_a_b_c: @ 80339A0 + thumb_func_start EmitSwitchInAnim +EmitSwitchInAnim: @ 80339A0 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -2282,10 +2282,10 @@ dp01_build_cmdbuf_x05_a_b_c: @ 80339A0 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x05_a_b_c + thumb_func_end EmitSwitchInAnim - thumb_func_start dp01_build_cmdbuf_x06_a -dp01_build_cmdbuf_x06_a: @ 80339C4 + thumb_func_start EmitReturnPokeToBall +EmitReturnPokeToBall: @ 80339C4 push {lr} adds r3, r1, 0 lsls r0, 24 @@ -2299,7 +2299,7 @@ dp01_build_cmdbuf_x06_a: @ 80339C4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x06_a + thumb_func_end EmitReturnPokeToBall thumb_func_start dp01_build_cmdbuf_x07_7_7_7 dp01_build_cmdbuf_x07_7_7_7: @ 80339E4 @@ -2888,8 +2888,8 @@ _08033E7E: .pool thumb_func_end sub_8033E6C - thumb_func_start dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f -dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f: @ 8033EA0 + thumb_func_start EmitChoosePokemon +EmitChoosePokemon: @ 8033EA0 push {r4-r6,lr} ldr r6, [sp, 0x10] lsls r0, 24 @@ -2918,7 +2918,7 @@ _08033EBA: pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + thumb_func_end EmitChoosePokemon thumb_func_start dp01_build_cmdbuf_x17_17_17_17 dp01_build_cmdbuf_x17_17_17_17: @ 8033EDC @@ -3684,8 +3684,8 @@ EmitBattleAnimation: @ 8034438 .pool thumb_func_end EmitBattleAnimation - thumb_func_start sub_8034464 -sub_8034464: @ 8034464 + thumb_func_start EmitLinkStandbyMsg +EmitLinkStandbyMsg: @ 8034464 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -3716,7 +3716,7 @@ _08034490: pop {r0} bx r0 .pool - thumb_func_end sub_8034464 + thumb_func_end EmitLinkStandbyMsg thumb_func_start dp01_build_cmdbuf_x38_a dp01_build_cmdbuf_x38_a: @ 80344A8 diff --git a/include/battle.h b/include/battle.h index a6573934f2..e71a23e28d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -561,23 +561,9 @@ struct BattleStruct u8 field_52; u8 sentInPokes; u8 field_54[4]; - u8 field_58; - u8 field_59; - u8 field_5A; - u8 field_5B; + u8 field_58[4]; u8 field_5C[4]; - u8 field_60; - u8 field_61; - u8 field_62; - u8 field_63; - u8 field_64; - u8 field_65; - u8 field_66; - u8 field_67; - u8 field_68; - u8 field_69; - u8 field_6A; - u8 field_6B; + u8 field_60[4][3]; u8 field_6C; u8 field_6D; u8 field_6E; @@ -792,6 +778,8 @@ extern struct BattleStruct* gBattleStruct; #define ATK48_BIT_x4 0x4 #define ATK48_LOWER_FAIL_CHECK 0x8 +#define ATK4F_DONT_CHECK_STATUSES 0x80 + #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 #define GET_STAT_BUFF_VALUE(n)((n & 0xF0) >> 4) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit @@ -840,6 +828,7 @@ void PrepareStringBattle(u16 stringId, u8 bank); u8 GetBattleBank(u8 caseId); void UndoEffectsAfterFainting(void); bool8 HasMoveFailed(u8 bank); +void SwitchInClearStructs(void); // battle_3 void BattleScriptPush(const u8* bsPtr); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 2ae6f002f4..443ca5be17 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -11,6 +11,10 @@ void EmitFaintAnimation(u8 bufferId); void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void EmitReturnPokeToBall(u8 bufferId, u8 arg1); +void EmitGetAttributes(u8 bufferId, u8 arg1, u8 arg2); +void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, const u8* arg4); void MarkBufferBankForExecution(u8 bank); diff --git a/include/pokemon.h b/include/pokemon.h index 1049776e84..f629799e5f 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -623,6 +623,9 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); bool8 IsTradedMon(struct Pokemon *mon); +void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); +s32 sub_806D864(u16 a1); +bool16 sub_806D82C(u8 id); #include "sprite.h" diff --git a/src/battle_3.c b/src/battle_3.c index 4453545d3d..1b443118db 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -188,8 +188,6 @@ extern void SetMoveEffect(bool8 primary, u8 certainArg); extern bool8 UproarWakeUpCheck(u8 bank); extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); -extern u8 sub_806D864(u8); -extern u8 sub_806D82C(u8); extern u8 weather_get_current(void); extern void sub_803E08C(void); extern void bc_move_exec_returning(void); diff --git a/src/battle_4.c b/src/battle_4.c index f896cd8069..db6d7fe535 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -17,6 +17,7 @@ #include "songs.h" #include "text.h" #include "sound.h" +#include "pokedex.h" // variables @@ -94,6 +95,7 @@ extern const u8* const gBattleScriptsForMoveEffects[]; // functions extern void sub_81A5718(u8 bank); // battle frontier 2 +extern void sub_81A56B4(void); // battle frontier 2 // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -4912,3 +4914,369 @@ void atk49_moveend(void) gBattlescriptCurrInstr += 3; } +void atk4A_typecalc2(void) +{ + u8 flags = 0; + s32 i = 0; + u8 moveType = gBattleMoves[gCurrentMove].type; + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gUnknown_02024250[gBankTarget] = 0; + gBattleCommunication[6] = moveType; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + { + break; + } + else + { + i += 3; + continue; + } + } + + if (gTypeEffectiveness[i] == moveType) + { + // check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + { + if (gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (gTypeEffectiveness[i + 2] == 5) + { + flags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + if (gTypeEffectiveness[i + 2] == 20) + { + flags |= MOVESTATUS_SUPEREFFECTIVE; + } + } + // check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2) + { + if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 5) + { + flags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 20) + { + flags |= MOVESTATUS_SUPEREFFECTIVE; + } + } + } + i += 3; + } + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD + && !(flags & MOVESTATUS_NOEFFECT) + && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 + && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gUnknown_02024250[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; + + gBattlescriptCurrInstr++; +} + +void atk4B_return_atk_to_ball(void) +{ + gActiveBank = gBankAttacker; + if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) + { + EmitReturnPokeToBall(0, 0); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr++; +} + +void atk4C_copy_poke_data(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + gBattlePartyID[gActiveBank] = *(gBattleStruct->field_5C + gActiveBank); + + EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk4D_switch_data_update(void) +{ + struct BattlePokemon oldData; + s32 i; + u8 *monData; + + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + oldData = gBattleMons[gActiveBank]; + monData = (u8*)(&gBattleMons[gActiveBank]); + + for (i = 0; i < sizeof(struct BattlePokemon); i++) + { + monData[i] = gBattleBufferB[gActiveBank][4 + i]; + } + + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; + gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility); + + // check knocked off item + i = GetBankSide(gActiveBank); + if (gWishFutureKnock.knockedOffPokes[i] & gBitTable[gBattlePartyID[gActiveBank]]) + { + gBattleMons[gActiveBank].item = 0; + } + + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + for (i = 0; i < 8; i++) + { + gBattleMons[gActiveBank].statStages[i] = oldData.statStages[i]; + } + gBattleMons[gActiveBank].status2 = oldData.status2; + } + + SwitchInClearStructs(); + + if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp + && gBattleMons[gActiveBank].hp != 0 && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)) + { + gBattleStruct->field_92 |= gBitTable[gActiveBank]; + } + + gBattleScripting.bank = gActiveBank; + gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = 7; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; + gBattleTextBuff1[4] = EOS; + + gBattlescriptCurrInstr += 2; +} + +void atk4E_switchin_anim(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (GetBankSide(gActiveBank) == SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_x4000000 + | BATTLE_TYPE_FRONTIER))) + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality); + + gAbsentBankFlags &= ~(gBitTable[gActiveBank]); + + EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], gBattlescriptCurrInstr[2]); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 3; + + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + sub_81A56B4(); +} + +void atk4F_jump_if_cannot_switch(void) +{ + s32 val = 0; + s32 compareVar = 0; + struct Pokemon *party = NULL; + s32 r7 = 0; + + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES)); + + if (!(gBattlescriptCurrInstr[1] & ATK4F_DONT_CHECK_STATUSES) + && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + || (gStatuses3[gActiveBank] & STATUS3_ROOTED))) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + } + else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + #ifndef NONMATCHING + asm("":::"r5"); + #endif // NONMATCHING + if (GetBankSide(gActiveBank) == SIDE_OPPONENT) + party = gEnemyParty; + else + party = gPlayerParty; + + val = 0; + if (2 & gActiveBank) + val = 3; + + for (compareVar = val + 3; val < compareVar; val++) + { + if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && GetMonData(&party[val], MON_DATA_HP) != 0 + && gBattlePartyID[gActiveBank] != val) + break; + } + + if (val == compareVar) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (gBattleTypeFlags & BATTLE_TYPE_x800000) + { + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + party = gPlayerParty; + + val = 0; + if (sub_806D82C(sub_806D864(gActiveBank)) == TRUE) + val = 3; + } + else + { + party = gEnemyParty; + + if (gActiveBank == 1) + val = 0; + else + val = 3; + } + } + else + { + if (GetBankSide(gActiveBank) == SIDE_OPPONENT) + party = gEnemyParty; + else + party = gPlayerParty; + + + val = 0; + if (sub_806D82C(sub_806D864(gActiveBank)) == TRUE) + val = 3; + } + + for (compareVar = val + 3; val < compareVar; val++) + { + if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && GetMonData(&party[val], MON_DATA_HP) != 0 + && gBattlePartyID[gActiveBank] != val) + break; + } + + if (val == compareVar) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } + else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBankSide(gActiveBank) == SIDE_OPPONENT) + { + party = gEnemyParty; + + val = 0; + if (gActiveBank == 3) + val = 3; + + for (compareVar = val + 3; val < compareVar; val++) + { + if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && GetMonData(&party[val], MON_DATA_HP) != 0 + && gBattlePartyID[gActiveBank] != val) + break; + } + + if (val == compareVar) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } + else + { + if (GetBankSide(gActiveBank) == SIDE_OPPONENT) + { + r7 = GetBankByPlayerAI(1); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + compareVar = GetBankByPlayerAI(3); + else + compareVar = r7; + + party = gEnemyParty; + } + else + { + r7 = GetBankByPlayerAI(0); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + compareVar = GetBankByPlayerAI(2); + else + compareVar = r7; + + party = gPlayerParty; + } + for (val = 0; val < 6; val++) + { + if (GetMonData(&party[val], MON_DATA_HP) != 0 + && GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && val != gBattlePartyID[r7] && val != gBattlePartyID[compareVar]) + break; + } + + if (val == 6) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } +} + +void sub_804CF10(u8 arg0) +{ + *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; + *(gBattleStruct->field_5C + gActiveBank) = 6; + gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]); + + EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBank]); + MarkBufferBankForExecution(gActiveBank); +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 603732a34a..2bc06c5808 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -601,9 +601,9 @@ bool8 sub_806D7EC(void) return retVal; } -bool8 sub_806D82C(u8 id) +bool16 sub_806D82C(u8 id) { - bool8 retVal = FALSE; + bool16 retVal = FALSE; switch (gLinkPlayers[id].lp_field_18) { case 0: From 40eb03542bf2eec8944249474b880854691da6ac Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Sat, 23 Sep 2017 20:23:55 -0400 Subject: [PATCH 031/182] decompiled up to sub_81C1040 --- asm/pokemon_summary_screen.s | 650 ----------------------------------- src/pokemon_summary_screen.c | 432 +++++++++++++++-------- 2 files changed, 288 insertions(+), 794 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index e337c8b27a..862fb3d5bf 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,656 +5,6 @@ .text - thumb_func_start sub_81C0A8C -sub_81C0A8C: @ 81C0A8C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - str r6, [sp] - lsls r1, 24 - lsrs r3, r1, 24 - str r3, [sp, 0x4] - ldr r0, =gUnknown_0203CF1C - mov r8, r0 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x70 - lsls r0, r6, 2 - adds r0, r6 - lsls r7, r0, 3 - ldr r0, =gTasks + 0x8 - mov r9, r0 - adds r0, r7, r0 - str r0, [sp, 0x8] - ldrb r1, [r1, 0x4] - mov r10, r1 - cmp r1, 0 - bne _081C0B6E - lsls r0, r3, 24 - asrs r5, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _081C0AE0 - ldr r1, =0x000040c0 - adds r0, r2, r1 - ldr r3, =0x000040c1 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _081C0B6E -_081C0AE0: - cmp r5, 0x1 - bne _081C0AF4 - ldr r1, =0x000040c0 - adds r0, r2, r1 - ldr r3, =0x000040c2 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _081C0B6E -_081C0AF4: - movs r0, 0x5 - bl PlaySE - mov r1, r8 - ldr r0, [r1] - ldr r4, =0x000040c0 - adds r0, r4 - ldrb r0, [r0] - bl sub_81C2C38 - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - ldrb r0, [r1] - ldr r3, [sp, 0x4] - adds r0, r3 - strb r0, [r1] - mov r1, r10 - ldr r0, [sp, 0x8] - strh r1, [r0] - cmp r5, 0x1 - bne _081C0B4C - ldr r1, =sub_81C0B8C - mov r0, r9 - subs r0, 0x8 - adds r0, r7, r0 - ldr r2, [r0] - adds r0, r6, 0 - bl SetTaskFuncWithFollowupFunc - b _081C0B5C - .pool -_081C0B4C: - ldr r1, =sub_81C0CC4 - mov r0, r9 - subs r0, 0x8 - adds r0, r7, r0 - ldr r2, [r0] - ldr r0, [sp] - bl SetTaskFuncWithFollowupFunc -_081C0B5C: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r2, =0x000040c0 - adds r0, r2 - ldrb r0, [r0] - bl sub_81C2DE4 - bl sub_81C424C -_081C0B6E: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0A8C - - thumb_func_start sub_81C0B8C -sub_81C0B8C: @ 81C0B8C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081C0C2A - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r3, =0x000040c9 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _081C0BE0 - movs r0, 0x1 - strh r0, [r4, 0x2] - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - b _081C0BFE - .pool -_081C0BE0: - movs r0, 0x2 - strh r0, [r4, 0x2] - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram -_081C0BFE: - ldrb r0, [r4, 0x2] - movs r1, 0 - movs r2, 0 - bl ChangeBgX - ldrb r0, [r4, 0x2] - ldr r1, =gUnknown_0203CF1C - ldr r1, [r1] - ldr r3, =0x000040c0 - adds r2, r1, r3 - ldrb r2, [r2] - lsls r2, 12 - adds r2, 0xBC - adds r1, r2 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg -_081C0C2A: - ldrb r0, [r4, 0x2] - movs r1, 0x80 - lsls r1, 6 - movs r2, 0x1 - bl ChangeBgX - ldrh r0, [r4] - adds r0, 0x20 - strh r0, [r4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _081C0C52 - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_81C0C68 - str r0, [r1] -_081C0C52: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0B8C - - thumb_func_start sub_81C0C68 -sub_81C0C68: @ 81C0C68 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - ldr r0, =gTasks + 0x8 - adds r2, r0 - ldr r5, =gUnknown_0203CF1C - ldr r3, [r5] - ldr r0, =0x000040c9 - adds r3, r0 - ldrb r0, [r3] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strb r0, [r3] - strh r1, [r2, 0x2] - strh r1, [r2] - bl sub_81C1BA0 - ldr r0, [r5] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - bl sub_81C2AFC - bl sub_81C4280 - bl sub_81C0E24 - adds r0, r4, 0 - bl SwitchTaskToFollowupFunc - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0C68 - - thumb_func_start sub_81C0CC4 -sub_81C0CC4: @ 81C0CC4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081C0D0C - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c9 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _081C0CFC - movs r0, 0x2 - b _081C0CFE - .pool -_081C0CFC: - movs r0, 0x1 -_081C0CFE: - strh r0, [r4, 0x2] - ldrb r0, [r4, 0x2] - movs r1, 0x80 - lsls r1, 9 - movs r2, 0 - bl ChangeBgX -_081C0D0C: - ldrb r0, [r4, 0x2] - movs r1, 0x80 - lsls r1, 6 - movs r2, 0x2 - bl ChangeBgX - ldrh r0, [r4] - adds r0, 0x20 - strh r0, [r4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _081C0D34 - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_81C0D44 - str r0, [r1] -_081C0D34: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0CC4 - - thumb_func_start sub_81C0D44 -sub_81C0D44: @ 81C0D44 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c9 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _081C0D8C - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - b _081C0DA6 - .pool -_081C0D8C: - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram -_081C0DA6: - ldr r6, =gUnknown_0203CF1C - ldr r2, [r6] - ldr r7, =0x000040c0 - adds r1, r2, r7 - ldrb r0, [r1] - cmp r0, 0x1 - bls _081C0DD0 - ldrb r0, [r4, 0x2] - ldrb r1, [r1] - lsls r1, 12 - ldr r3, =0xfffff0bc - adds r1, r3 - adds r1, r2, r1 - bl SetBgTilemapBuffer - ldrb r0, [r4, 0x2] - movs r1, 0x80 - lsls r1, 9 - movs r2, 0 - bl ChangeBgX -_081C0DD0: - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r2, [r6] - ldr r0, =0x000040c9 - adds r2, r0 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strb r0, [r2] - strh r1, [r4, 0x2] - strh r1, [r4] - bl sub_81C1BA0 - ldr r0, [r6] - adds r0, r7 - ldrb r0, [r0] - bl sub_81C2AFC - bl sub_81C4280 - bl sub_81C0E24 - adds r0, r5, 0 - bl SwitchTaskToFollowupFunc - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0D44 - - thumb_func_start sub_81C0E24 -sub_81C0E24: @ 81C0E24 - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040c0 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _081C0E3C - adds r0, r1, 0 - adds r0, 0xC - bl sub_81C22CC -_081C0E3C: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0E24 - - thumb_func_start sub_81C0E48 -sub_81C0E48: @ 81C0E48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, =gUnknown_0203CF1C - ldr r0, [r5] - ldr r2, =0x000040c6 - adds r0, r2 - movs r1, 0 - strb r1, [r0] - ldr r1, [r5] - adds r2, r1, r2 - ldrb r0, [r2] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r6, [r1] - mov r8, r6 - movs r0, 0x13 - bl ClearWindowTilemap - ldr r2, =gSprites - ldr r0, [r5] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C0E96 - movs r0, 0xD - bl ClearWindowTilemap -_081C0E96: - movs r4, 0x3 - negs r4, r4 - movs r0, 0x9 - adds r1, r4, 0 - bl sub_81C1DA4 - movs r0, 0x9 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_81C1EFC - ldr r0, [r5] - ldr r1, =0x000040c8 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _081C0EC4 - movs r0, 0x5 - bl ClearWindowTilemap - movs r0, 0x6 - bl PutWindowTilemap -_081C0EC4: - ldr r0, [r5] - ldr r1, =0x000020bc - adds r0, r1 - movs r1, 0x3 - movs r2, 0 - bl sub_81C2194 - ldr r0, [r5] - ldr r1, =0x000030bc - adds r0, r1 - movs r1, 0x1 - movs r2, 0 - bl sub_81C2194 - mov r0, r8 - bl sub_81C3E9C - bl sub_81C3F44 - bl sub_81C44F0 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x8 - bl sub_81C4AF8 - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81C0F44 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C0E48 - - thumb_func_start sub_81C0F44 -sub_81C0F44: @ 81C0F44 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - bl sub_81221EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C103A - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081C0F98 - movs r0, 0x4 - strh r0, [r4] - movs r1, 0x1 - negs r1, r1 - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c6 - adds r2, r0 - adds r0, r4, 0 - bl sub_81C1070 - b _081C103A - .pool -_081C0F98: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081C0FC0 - movs r0, 0x4 - strh r0, [r4] - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c6 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C1070 - b _081C103A - .pool -_081C0FC0: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081C1026 - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040c8 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081C0FE8 - subs r2, 0x4 - adds r0, r1, r2 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - bne _081C1004 -_081C0FE8: - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl sub_81C11F4 - b _081C103A - .pool -_081C1004: - bl sub_81C1040 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C101E - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl sub_81C129C - b _081C103A -_081C101E: - movs r0, 0x20 - bl PlaySE - b _081C103A -_081C1026: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C103A - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl sub_81C11F4 -_081C103A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81C0F44 - - thumb_func_start sub_81C1040 -sub_81C1040: @ 81C1040 - push {lr} - movs r1, 0x1 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x84 -_081C104C: - lsls r0, r1, 1 - adds r0, r2, r0 - ldrh r0, [r0] - cmp r0, 0 - beq _081C1060 - movs r0, 0x1 - b _081C106C - .pool -_081C1060: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bls _081C104C - movs r0, 0 -_081C106C: - pop {r1} - bx r1 - thumb_func_end sub_81C1040 - thumb_func_start sub_81C1070 sub_81C1070: @ 81C1070 push {r4-r7,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index d555b88342..9c4647cf05 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -78,8 +78,8 @@ void sub_81C0510(u8 taskId); void sub_81C171C(u8 taskId); void sub_8121E10(); u8 sub_81B205C(struct Pokemon* a); -void sub_81C1DA4(u8 a, u8 b); -void sub_81C1EFC(u8 a, u8 b, u8 c); +void sub_81C1DA4(u8 a, s16 b); +void sub_81C1EFC(u8 a, s16 b, u16 c); void sub_81C240C(u16 a); void sub_81C2194(void* a, u8 b, u8 c); void sub_81C2074(u16 a, s16 b); @@ -101,6 +101,26 @@ void sub_81C20F0(u8 taskId); u8 sub_81C0A50(struct Pokemon* mon); void sub_81C49E0(); void sub_81C0E24(); +void sub_81C2C38(); +void sub_81C0B8C(u8 taskId); +void sub_81C0CC4(u8 taskId); +void sub_81C2DE4(u8 a); +void sub_81C424C(); +void sub_81C0C68(u8 taskId); +void sub_81C0D44(u8 taskId); +void sub_81C22CC(struct Pokemon* mon); +void sub_81C0F44(u8 taskId); +void sub_81C3E9C(u16 a); +void sub_81C3F44(); +void sub_81C44F0(); +void sub_81C4AF8(u8 a); +void sub_81C1070(s16* a, s8 b, u8* c); +void sub_81C11F4(u8 a); +void sub_81C129C(u8 a); +u8 sub_81C1040(); + + +void SetBgAttribute(u8 bg, u8 attributeId, u8 value); u8 sub_81BFB10(); u8 sub_81B1250(); @@ -110,6 +130,8 @@ union unkUnion{ struct BoxPokemon boxMons[6]; }; + + u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, u8 d); struct pokeSummary{ @@ -167,14 +189,23 @@ struct unkSummaryStruct{ u8 unk40C1; u8 unk40C2; u8 unk40C3; - u16 unk40C4; - u8 unk40C6; - u8 unk_filler3; + union +{ + struct + { + u16 unk40C4; + u8 unk40C6; + u8 unkfiller3; + } fooFiller; + u32 loadThis; +} unionThing; u8 unk40C8; - u8 unk_filler2[0xA]; + u8 unk40C9; + u8 unk_filler2[0x9]; u8 unk40D3; u8 unk40D4; - u8 unk_filler5[0x1A]; + u8 unk40D5; + u8 unk_filler5[0x19]; u8 unk40EF; s16 unk40F0; u8 unk_filler4[6]; @@ -222,7 +253,7 @@ void sub_81BF8EC(u8 a, void* b, u8 c, u8 d, void* e) void sub_81BFA38(void* a, u8 b, u8 c, void* d, u16 e) { sub_81BF8EC(3, a, b, c, d); - gUnknown_0203CF1C->unk40C4 = e; + gUnknown_0203CF1C->unionThing.fooFiller.unk40C4 = e; } void sub_81BFA80(u8 a, void* b, u8 c, u8 d, void* e) @@ -563,7 +594,7 @@ void sub_81C0348() } else { - sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); + sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unionThing.fooFiller.unk40C6]); sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0); sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0); SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3); @@ -772,164 +803,58 @@ void sub_81C0704(u8 taskId) data[0]++; } -#ifdef NONMATCHING s8 sub_81C08F8(s8 a) { - union unkUnion* r7 = gUnknown_0203CF1C->unk0; + struct Pokemon *mons = gUnknown_0203CF1C->unk0->mons; + if (gUnknown_0203CF1C->unk40C0 == 0) { - if (a != -1 || gUnknown_0203CF1C->unk40BE != 0) - { - if (a != 1 || gUnknown_0203CF1C->unk40BE < gUnknown_0203CF1C->unk40BF) - { - return gUnknown_0203CF1C->unk40BE + a; - } - } - return -1; + if (a == -1 && gUnknown_0203CF1C->unk40BE == 0) + return -1; + if (a == 1 && gUnknown_0203CF1C->unk40BE >= gUnknown_0203CF1C->unk40BF) + return -1; + return gUnknown_0203CF1C->unk40BE + a; } else { - s8 r5r4 = gUnknown_0203CF1C->unk40BE; - while(1) + s8 index = gUnknown_0203CF1C->unk40BE; + + do { - r5r4 += a; - if (r5r4 < 0 || r5r4 > gUnknown_0203CF1C->unk40BF) + index += a; + if (index < 0 || index > gUnknown_0203CF1C->unk40BF) return -1; - else if (GetMonData(&r7->mons[r5r4], MON_DATA_IS_EGG) == 0) - return r5r4; - } + } while (GetMonData(&mons[index], MON_DATA_IS_EGG) != 0); + return index; } } -#else -__attribute__((naked)) -s8 sub_81C08F8(s8 a) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldr r1, =gUnknown_0203CF1C\n\ - ldr r2, [r1]\n\ - ldr r7, [r2]\n\ - ldr r3, =0x000040c0\n\ - adds r0, r2, r3\n\ - ldrb r0, [r0]\n\ - adds r5, r1, 0\n\ - cmp r0, 0\n\ - bne _081C0960\n\ - lsls r0, r4, 24\n\ - asrs r3, r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - adds r6, r0, 0\n\ - cmp r3, r1\n\ - bne _081C0928\n\ - ldr r1, =0x000040be\n\ - adds r0, r2, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _081C0988\n\ -_081C0928:\n\ - asrs r0, r6, 24\n\ - cmp r0, 0x1\n\ - bne _081C0940\n\ - ldr r0, [r5]\n\ - ldr r2, =0x000040be\n\ - adds r1, r0, r2\n\ - ldr r3, =0x000040bf\n\ - adds r0, r3\n\ - ldrb r1, [r1]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bcs _081C0988\n\ -_081C0940:\n\ - ldr r0, [r5]\n\ - ldr r1, =0x000040be\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - adds r0, r4\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - b _081C09AE\n\ - .pool\n\ -_081C0960:\n\ - ldr r3, =0x000040be\n\ - adds r0, r2, r3\n\ - ldrb r5, [r0]\n\ - lsls r6, r4, 24\n\ -_081C0968:\n\ - lsls r0, r5, 24\n\ - asrs r0, 24\n\ - asrs r1, r6, 24\n\ - adds r0, r1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - asrs r4, r0, 24\n\ - cmp r4, 0\n\ - blt _081C0988\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - ldr r1, =0x000040bf\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - ble _081C099C\n\ -_081C0988:\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - b _081C09AE\n\ - .pool\n\ -_081C099C:\n\ - movs r0, 0x64\n\ - muls r0, r4\n\ - adds r0, r7, r0\n\ - movs r1, 0x2D\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _081C0968\n\ - adds r0, r4, 0\n\ -_081C09AE:\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif s8 sub_81C09B4(s8 a) { - union unkUnion* r8 = gUnknown_0203CF1C->unk0; + struct Pokemon *mons = gUnknown_0203CF1C->unk0->mons; s8 r5 = 0; - u8 i = 0; - if (gUnknown_0861CC1C[0] != gUnknown_0203CF1C->unk40BE) + u8 i; + + for (i = 0; i < 6; i++) { - while(1) + if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->unk40BE) { - i += 1; - if (i > 5) - break; - if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->unk40BE) - { - r5 = i; - break; - } + r5 = i; + break; } } - while(1) + + while (1) { int b; s8* c = &gUnknown_0861CC1C[0]; + r5 += a; - if ((u8)(r5) > 5) - { + if (r5 < 0 || r5 >= 6) return -1; - } - else - { - b = c[r5]; - if (sub_81C0A50(&r8->mons[c[r5]]) == 1) - return b; - } + b = c[r5]; + if (sub_81C0A50(&mons[b]) == 1) + return b; } } @@ -943,4 +868,223 @@ u8 sub_81C0A50(struct Pokemon* mon) return 1; else return 0; -} \ No newline at end of file +} + +void sub_81C0A8C(u8 taskId, s8 b) +{ + struct pokeSummary *summary = &gUnknown_0203CF1C->summary; + s16 *data = gTasks[taskId].data; + + if (summary->isEgg) + return; + if (b == -1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C1) + return; + if (b == 1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C2) + return; + PlaySE(SE_SELECT); + sub_81C2C38(gUnknown_0203CF1C->unk40C0); + gUnknown_0203CF1C->unk40C0 += b; + data[0] = 0; + if (b == 1) + SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func); + else + SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func); + sub_81C2DE4(gUnknown_0203CF1C->unk40C0); + sub_81C424C(); +} + +void sub_81C0B8C(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (data[0] == 0) + { + if (gUnknown_0203CF1C->unk40C9 == 0) + { + data[1] = 1; + SetBgAttribute(1, 7, 1); + SetBgAttribute(2, 7, 2); + schedule_bg_copy_tilemap_to_vram(1); + } + else + { + data[1] = 2; + SetBgAttribute(2, 7, 1); + SetBgAttribute(1, 7, 2); + schedule_bg_copy_tilemap_to_vram(2); + } + ChangeBgX(data[1], 0, 0); + SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xBC)); + ShowBg(1); + ShowBg(2); + } + ChangeBgX(data[1], 0x2000, 1); + data[0] += 32; + if (data[0] > 0xFF) + { + gTasks[taskId].func = sub_81C0C68; + } +} + +void sub_81C0C68(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + gUnknown_0203CF1C->unk40C9 ^= 1; + data[1] = 0; + data[0] = 0; + sub_81C1BA0(); + sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C4280(); + sub_81C0E24(); + SwitchTaskToFollowupFunc(taskId); +} + +void sub_81C0CC4(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (data[0] == 0) + { + if (gUnknown_0203CF1C->unk40C9 == 0) + data[1] = 2; + else + data[1] = 1; + ChangeBgX(data[1], 0x10000, 0); + } + ChangeBgX(data[1], 0x2000, 2); + data[0] += 32; + if (data[0] > 0xFF) + gTasks[taskId].func = sub_81C0D44; +} + +void sub_81C0D44(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (gUnknown_0203CF1C->unk40C9 == 0) + { + SetBgAttribute(1, 7, 1); + SetBgAttribute(2, 7, 2); + schedule_bg_copy_tilemap_to_vram(2); + } + else + { + SetBgAttribute(2, 7, 1); + SetBgAttribute(1, 7, 2); + schedule_bg_copy_tilemap_to_vram(1); + } + if (gUnknown_0203CF1C->unk40C0 > 1) + { + SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xFFFFF0BC)); + ChangeBgX(data[1], 0x10000, 0); + } + ShowBg(1); + ShowBg(2); + gUnknown_0203CF1C->unk40C9 ^= 1; + data[1] = 0; + data[0] = 0; + sub_81C1BA0(); + sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C4280(); + sub_81C0E24(); + SwitchTaskToFollowupFunc(taskId); +} + +void sub_81C0E24() +{ + if (gUnknown_0203CF1C->unk40C0 == 1) + sub_81C22CC(&gUnknown_0203CF1C->currentPoke); +} + +void sub_81C0E48(u8 taskId) +{ + u16 move; + gUnknown_0203CF1C->unionThing.fooFiller.unk40C6 = 0; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unionThing.fooFiller.unk40C6]; + ClearWindowTilemap(0x13); + if (gSprites[gUnknown_0203CF1C->unk40D5].invisible == 0) + ClearWindowTilemap(0xD); + sub_81C1DA4(9, -3); + sub_81C1EFC(9, -3, move); + if (gUnknown_0203CF1C->unk40C8 == 0) + { + ClearWindowTilemap(5); + PutWindowTilemap(6); + } + sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0); + sub_81C3E9C(move); + sub_81C3F44(); + sub_81C44F0(); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + sub_81C4AF8(8); + gTasks[taskId].func = sub_81C0F44; +} + +void sub_81C0F44(u8 taskId) +{ + u8 id = taskId; + s16 *data = gTasks[taskId].data; + if (sub_81221EC() != 1) + { + if (gMain.newKeys & DPAD_UP) + { + data[0] = 4; + sub_81C1070(data, -1, &gUnknown_0203CF1C->unionThing.fooFiller.unk40C6); + } + else if (gMain.newKeys & DPAD_DOWN) + { + data[0] = 4; + sub_81C1070(data, 1, &gUnknown_0203CF1C->unionThing.fooFiller.unk40C6); + } + else if (gMain.newKeys & A_BUTTON) + { + if (gUnknown_0203CF1C->unk40C8 == 1 || ((int)(gUnknown_0203CF1C->unionThing.loadThis & 0xFFFFFF) == 0x40000)) + { + PlaySE(SE_SELECT); + sub_81C11F4(taskId); + } + else if (sub_81C1040() == 1) + { + PlaySE(SE_SELECT); + sub_81C129C(taskId); + } + else + PlaySE(0x20); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_81C11F4(id); + } + } +} + +u8 sub_81C1040() +{ + u8 i; + for (i = 1; i <= 3; i++) + { + if (gUnknown_0203CF1C->summary.moves[i] != 0) + return 1; + } + return 0; +} + +/* void sub_81C1070(s16* a, s8 b, u8* c) +{ + s8 i; + s8 d = c*; + PlaySE(SE_SELECT); + i = 0; + while (i <= 3) + { + d += b + if (d > a[0]) + d = 0; + else if (d < 0) + d = data[0]; + if (d == 4) + break; + + } +} */ \ No newline at end of file From 52a951276f8d4b79195a0d4889503e4a7f096024 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 25 Sep 2017 00:09:13 +0200 Subject: [PATCH 032/182] battle 4, up to x69 --- asm/battle_1.s | 26 +- asm/battle_2.s | 52 +- asm/battle_4.s | 3517 +-------------------- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 2 +- asm/battle_controller_player.s | 38 +- asm/battle_controller_player_partner.s | 2 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 2 +- asm/battle_controller_safari.s | 8 +- asm/battle_controller_wally.s | 8 +- asm/battle_frontier_2.s | 16 +- asm/battle_message.s | 22 +- asm/evolution_scene.s | 38 +- asm/recorded_battle.s | 10 +- asm/reshow_battle_screen.s | 8 +- asm/rom3.s | 54 +- data/data2b.s | 2 +- include/battle.h | 67 +- include/battle_controllers.h | 16 + include/battle_message.h | 144 +- include/pokemon.h | 1 + include/recorded_battle.h | 6 + include/reshow_battle_screen.h | 6 + include/text.h | 4 +- src/battle_4.c | 1139 ++++++- src/pokemon_3.c | 2 +- 28 files changed, 1492 insertions(+), 3704 deletions(-) create mode 100644 include/recorded_battle.h create mode 100644 include/reshow_battle_screen.h diff --git a/asm/battle_1.s b/asm/battle_1.s index d1a4e6ea0e..3507f6a715 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1888,7 +1888,7 @@ sub_8035C4C: @ 8035C4C bne _08035C68 ldr r0, =gText_Draw movs r1, 0x15 - bl battle_show_message_maybe + bl sub_814F9EC b _08035D68 .pool _08035C68: @@ -1964,10 +1964,10 @@ _08035CE2: _08035CFC: ldr r0, =gText_Win movs r1, 0x17 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Loss movs r1, 0x16 - bl battle_show_message_maybe + bl sub_814F9EC b _08035D68 .pool _08035D20: @@ -1985,19 +1985,19 @@ _08035D20: _08035D36: ldr r0, =gText_Win movs r1, 0x16 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Loss movs r1, 0x17 - bl battle_show_message_maybe + bl sub_814F9EC b _08035D68 .pool _08035D58: ldr r0, =gText_Win movs r1, 0x17 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Loss movs r1, 0x16 - bl battle_show_message_maybe + bl sub_814F9EC _08035D68: pop {r0} bx r0 @@ -2068,14 +2068,14 @@ _08035DDC: _08035DE6: adds r0, r1, 0 movs r1, 0x11 - bl battle_show_message_maybe + bl sub_814F9EC ldrb r1, [r4, 0x18] movs r0, 0x4 b _08035E14 _08035DF4: adds r0, r1, 0 movs r1, 0x12 - bl battle_show_message_maybe + bl sub_814F9EC ldrb r1, [r4, 0x18] movs r0, 0x4 str r0, [sp] @@ -2085,7 +2085,7 @@ _08035DF4: _08035E08: adds r0, r1, 0 movs r1, 0x13 - bl battle_show_message_maybe + bl sub_814F9EC ldrb r1, [r4, 0x18] movs r0, 0x8 _08035E14: @@ -2099,7 +2099,7 @@ _08035E1A: _08035E22: adds r0, r1, 0 movs r1, 0x14 - bl battle_show_message_maybe + bl sub_814F9EC ldrb r1, [r4, 0x18] movs r0, 0x8 str r0, [sp] @@ -2139,14 +2139,14 @@ _08035E66: adds r1, r0, r4 adds r0, r1, 0 movs r1, 0xF - bl battle_show_message_maybe + bl sub_814F9EC lsls r0, r6, 3 subs r0, r6 lsls r0, 2 adds r1, r0, r4 adds r0, r1, 0 movs r1, 0x10 - bl battle_show_message_maybe + bl sub_814F9EC movs r4, 0x7 str r4, [sp] adds r0, r7, 0 diff --git a/asm/battle_2.s b/asm/battle_2.s index cc387f1a8b..14e332d7c9 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -1399,7 +1399,7 @@ _080373E0: str r0, [r2] ldr r0, =sub_8039EF0 str r0, [r1] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 bl SetMainCallback2 ldr r2, =gBattleTypeFlags ldr r1, [r2] @@ -1999,7 +1999,7 @@ _080379A0: str r0, [r2] ldr r0, =sub_8039EF0 str r0, [r1] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 bl SetMainCallback2 ldr r2, =gBattleTypeFlags ldr r1, [r2] @@ -3130,7 +3130,7 @@ _080383BC: str r0, [r2] ldr r0, =sub_8039EF0 str r0, [r1] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 bl SetMainCallback2 ldr r3, =gBattleTypeFlags ldr r2, [r3] @@ -3156,8 +3156,8 @@ _080383F8: .pool thumb_func_end sub_8037DF4 - thumb_func_start sub_8038420 -sub_8038420: @ 8038420 + thumb_func_start BattleMainCB2 +BattleMainCB2: @ 8038420 push {lr} sub sp, 0x4 bl AnimateSprites @@ -3203,7 +3203,7 @@ _08038482: pop {r0} bx r0 .pool - thumb_func_end sub_8038420 + thumb_func_end BattleMainCB2 thumb_func_start sub_803849C sub_803849C: @ 803849C @@ -4662,7 +4662,7 @@ _0803912C: bl sub_800ADF8 ldr r0, =gUnknown_0824978D movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC b _08039172 .pool _0803914C: @@ -4997,7 +4997,7 @@ _08039470: _0803947E: ldr r0, =gText_RecordBattleToPass movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 @@ -5020,11 +5020,11 @@ _080394AC: bl sub_8056A3C ldr r0, =gText_BattleYesNoChoice movs r1, 0xC - bl battle_show_message_maybe + bl sub_814F9EC ldr r4, =gBattleCommunication movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_8056B74 + bl BattleCreateCursorAt b _080396EA .pool _080394D8: @@ -5042,7 +5042,7 @@ _080394EC: movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0 b _0803951E .pool @@ -5059,11 +5059,11 @@ _08039510: movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0x1 _0803951E: strb r0, [r4, 0x1] - bl sub_8056B74 + bl BattleCreateCursorAt b _0803975E _08039526: movs r5, 0x1 @@ -5130,7 +5130,7 @@ _0803958A: bl sub_800ADF8 ldr r0, =gUnknown_0824978D movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC _080395B4: ldr r1, =gBattleCommunication ldrb r0, [r1] @@ -5218,7 +5218,7 @@ _08039686: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC movs r0, 0x80 strb r0, [r4, 0x1] b _080396EA @@ -5256,7 +5256,7 @@ _080396A8: bl sub_800ADF8 ldr r0, =gUnknown_0824978D movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC _080396EA: ldrb r0, [r4] adds r0, 0x1 @@ -8280,7 +8280,7 @@ _0803AFFA: movs r0, 0 mov r1, sp movs r2, 0x80 - bl dp01_build_cmdbuf_x30_TODO + bl EmitCmd48 ldrb r0, [r4] bl MarkBufferBankForExecution movs r7, 0 @@ -8332,7 +8332,7 @@ _0803B072: movs r0, 0 mov r1, sp movs r2, 0x80 - bl dp01_build_cmdbuf_x30_TODO + bl EmitCmd48 ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, =gBattleMainFunc @@ -9237,7 +9237,7 @@ _0803B7EA: strb r1, [r0] ldr r0, =gText_EmptyString3 movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleMainFunc ldr r0, =sub_803BE74 str r0, [r1] @@ -9546,7 +9546,7 @@ _0803BAE6: strb r1, [r0] mov r0, r9 movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleMainFunc ldr r0, =sub_803BE74 str r0, [r1] @@ -10140,7 +10140,7 @@ _0803C058: adds r0, r4 ldrb r1, [r0] adds r0, r5, 0 - bl sub_8184FBC + bl RecordedBattle_SetBankAction ldr r1, =gUnknown_0202421C ldrb r0, [r6] adds r1, r0, r1 @@ -11067,12 +11067,12 @@ _0803C91C: lsls r1, r0, 9 adds r1, r5 ldrb r1, [r1] - bl sub_8184FBC + bl RecordedBattle_SetBankAction ldrb r0, [r6] lsls r1, r0, 9 adds r1, r7 ldrb r1, [r1] - bl sub_8184FBC + bl RecordedBattle_SetBankAction _0803C942: ldrb r0, [r6] ldr r4, =gBattleStruct @@ -11602,7 +11602,7 @@ sub_803CDF8: @ 803CDF8 lsls r1, r0, 9 adds r1, r2 ldrb r1, [r1] - bl sub_8184FBC + bl RecordedBattle_SetBankAction ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x42 @@ -13335,7 +13335,7 @@ _0803DDD2: ldr r0, =sub_803DE40 str r0, [r1] ldr r1, =gUnknown_030061E8 - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 str r0, [r1] b _0803DE2A .pool @@ -13476,7 +13476,7 @@ sub_803DF48: @ 803DF48 push {lr} ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _0803DF5A ldr r1, =gBattleMainFunc diff --git a/asm/battle_4.s b/asm/battle_4.s index 8c3a0ea7e1..3a6558a866 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,3489 +5,6 @@ .text - thumb_func_start atk50_openpartyscreen -atk50_openpartyscreen: @ 804CF88 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r7, 0 - movs r0, 0 - mov r9, r0 - ldr r6, =gBattlescriptCurrInstr - ldr r2, [r6] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - mov r8, r1 - ldrb r1, [r2, 0x1] - adds r0, r1, 0 - mov r12, r6 - cmp r0, 0x5 - beq _0804CFBE - b _0804D464 -_0804CFBE: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x41 - ands r1, r0 - cmp r1, 0x1 - beq _0804D0B0 - ldr r1, =gActiveBank - strb r7, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _0804CFD8 - b _0804D450 -_0804CFD8: - ldr r7, =gHitMarker - ldr r6, =gBitTable - adds r4, r1, 0 - ldr r2, =gAbsentBankFlags - mov r8, r2 -_0804CFE2: - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - ands r0, r1 - cmp r0, 0 - beq _0804D088 - adds r0, r2, 0 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D054 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - mov r2, r8 - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - bics r0, r1 - str r0, [r7] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804D098 - .pool -_0804D054: - ldr r5, =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D098 - movs r0, 0x6 - bl sub_804CF10 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0804D098 - .pool -_0804D088: - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804D098: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0804CFE2 - b _0804D450 - .pool -_0804D0B0: - ands r0, r1 - cmp r0, 0 - bne _0804D0B8 - b _0804D450 -_0804D0B8: - ldr r0, =gHitMarker - mov r8, r0 - ldr r0, [r0] - lsrs r5, r0, 28 - ldr r6, =gBitTable - ldr r0, [r6] - ands r0, r5 - cmp r0, 0 - beq _0804D170 - ldr r4, =gActiveBank - strb r7, [r4] - movs r0, 0 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D120 - ldr r2, =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - mov r2, r8 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804D170 - .pool -_0804D120: - ldr r6, =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D15C - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x5E - ldrb r0, [r0] - bl sub_804CF10 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0804D170 - .pool -_0804D15C: - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution - movs r0, 0x1 - mov r9, r0 -_0804D170: - ldr r6, =gBitTable - ldr r0, [r6, 0x8] - ands r0, r5 - cmp r0, 0 - beq _0804D22E - ldr r0, [r6] - ands r0, r5 - cmp r0, 0 - bne _0804D22E - ldr r4, =gActiveBank - movs r0, 0x2 - strb r0, [r4] - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D1D8 - ldr r2, =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804D22E - .pool -_0804D1D8: - ldr r6, =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D214 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x5C - ldrb r0, [r0] - bl sub_804CF10 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0804D22E - .pool -_0804D214: - movs r0, 0x1 - mov r1, r9 - ands r0, r1 - cmp r0, 0 - bne _0804D22E - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804D22E: - ldr r6, =gBitTable - ldr r0, [r6, 0x4] - ands r0, r5 - cmp r0, 0 - beq _0804D2E4 - ldr r4, =gActiveBank - movs r0, 0x1 - strb r0, [r4] - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D290 - ldr r2, =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804D2E4 - .pool -_0804D290: - ldr r6, =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D2CC - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x5F - ldrb r0, [r0] - bl sub_804CF10 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0804D2E4 - .pool -_0804D2CC: - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution - movs r0, 0x2 - mov r2, r9 - orrs r2, r0 - mov r9, r2 -_0804D2E4: - ldr r6, =gBitTable - ldr r0, [r6, 0xC] - ands r0, r5 - cmp r0, 0 - beq _0804D3A2 - ldr r0, [r6, 0x4] - ands r0, r5 - cmp r0, 0 - bne _0804D3A2 - ldr r4, =gActiveBank - movs r0, 0x3 - strb r0, [r4] - movs r0, 0x3 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D34C - ldr r2, =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804D3A2 - .pool -_0804D34C: - ldr r6, =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D388 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x5D - ldrb r0, [r0] - bl sub_804CF10 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0804D3A2 - .pool -_0804D388: - movs r0, 0x2 - mov r1, r9 - ands r1, r0 - cmp r1, 0 - bne _0804D3A2 - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804D3A2: - ldr r1, =gSpecialStatuses - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D3FA - adds r0, r1, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _0804D3FA - cmp r5, 0 - beq _0804D3FA - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r0, =gBitTable - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0804D3E4 - ldr r1, =gActiveBank - movs r0, 0x2 - strb r0, [r1] - b _0804D3E8 - .pool -_0804D3E4: - ldr r0, =gActiveBank - strb r1, [r0] -_0804D3E8: - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_0804D3FA: - ldr r1, =gSpecialStatuses - ldrb r0, [r1, 0x14] - lsls r0, 25 - cmp r0, 0 - blt _0804D450 - adds r0, r1, 0 - adds r0, 0x3C - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _0804D450 - cmp r5, 0 - beq _0804D450 - ldr r0, =gAbsentBankFlags - ldrb r0, [r0] - ldr r1, =gBitTable - ldr r1, [r1, 0x4] - ands r0, r1 - cmp r0, 0 - beq _0804D438 - ldr r1, =gActiveBank - movs r0, 0x3 - b _0804D43C - .pool -_0804D438: - ldr r1, =gActiveBank - movs r0, 0x1 -_0804D43C: - strb r0, [r1] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_0804D450: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - b _0804D804 - .pool -_0804D464: - cmp r0, 0x6 - beq _0804D46A - b _0804D658 -_0804D46A: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804D478 - b _0804D5F4 -_0804D478: - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - bne _0804D482 - b _0804D5F4 -_0804D482: - ldr r7, =gHitMarker - ldr r0, [r7] - lsrs r5, r0, 28 - ldr r4, =gBitTable - ldr r0, [r4, 0x8] - ands r0, r5 - cmp r0, 0 - beq _0804D52A - ldr r0, [r4] - ands r0, r5 - cmp r0, 0 - beq _0804D52A - ldr r6, =gActiveBank - movs r0, 0x2 - strb r0, [r6] - ldr r0, =gBattleBufferB - ldrb r1, [r0, 0x1] - movs r0, 0x2 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D4F8 - ldr r2, =gAbsentBankFlags - ldrb r0, [r6] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r6] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - bics r0, r1 - str r0, [r7] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r6] - bl MarkBufferBankForExecution - b _0804D52A - .pool -_0804D4F8: - ldr r4, =gSpecialStatuses - ldrb r0, [r6] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D52A - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x5C - ldrb r0, [r0] - bl sub_804CF10 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_0804D52A: - ldr r4, =gBitTable - ldr r0, [r4, 0xC] - ands r0, r5 - cmp r0, 0 - beq _0804D5DA - ldr r0, [r4, 0x4] - ands r5, r0 - cmp r5, 0 - beq _0804D5DA - ldr r5, =gActiveBank - movs r0, 0x3 - strb r0, [r5] - ldr r0, =gBattleBufferB - ldr r2, =0x00000201 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x3 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D5A8 - ldr r2, =gAbsentBankFlags - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, =gHitMarker - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r5] - bl MarkBufferBankForExecution - b _0804D5DA - .pool -_0804D5A8: - ldr r4, =gSpecialStatuses - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0804D5DA - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x5D - ldrb r0, [r0] - bl sub_804CF10 - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_0804D5DA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - mov r12, r1 - b _0804D5F8 - .pool -_0804D5F4: - adds r0, r2, 0x6 - str r0, [r6] -_0804D5F8: - ldr r0, =gHitMarker - ldr r0, [r0] - lsrs r5, r0, 28 - ldr r1, =gBank1 - movs r0, 0 - strb r0, [r1] - ldr r4, =gBitTable - ldr r2, [r4] - ands r2, r5 - ldr r6, =gNoOfAllBanks - cmp r2, 0 - bne _0804D634 - adds r7, r6, 0 - ldrb r0, [r6] - cmp r2, r0 - bcs _0804D634 - adds r3, r1, 0 -_0804D61A: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldrb r2, [r3] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - bne _0804D634 - ldrb r0, [r7] - cmp r2, r0 - bcc _0804D61A -_0804D634: - ldrb r0, [r1] - ldrb r6, [r6] - cmp r0, r6 - beq _0804D63E - b _0804D804 -_0804D63E: - mov r1, r8 - mov r2, r12 - str r1, [r2] - b _0804D804 - .pool -_0804D658: - movs r0, 0x80 - ands r0, r1 - movs r5, 0x1 - cmp r0, 0 - beq _0804D664 - movs r5, 0 -_0804D664: - movs r0, 0x7F - ands r0, r1 - bl GetBattleBank - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gSpecialStatuses - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - bge _0804D690 - ldr r0, [r6] - adds r0, 0x6 - str r0, [r6] - b _0804D804 - .pool -_0804D690: - adds r0, r7, 0 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80423F4 - lsls r0, 24 - cmp r0, 0 - beq _0804D6E0 - ldr r2, =gActiveBank - strb r7, [r2] - ldr r3, =gAbsentBankFlags - ldr r4, =gBitTable - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r3] - orrs r0, r1 - strb r0, [r3] - ldr r3, =gHitMarker - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - mov r0, r8 - str r0, [r6] - b _0804D804 - .pool -_0804D6E0: - ldr r4, =gActiveBank - strb r7, [r4] - ldrb r0, [r4] - ldr r3, =gBattleStruct - ldr r1, [r3] - adds r1, r0, r1 - adds r1, 0x58 - ldr r2, =gBattlePartyID - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r4] - ldr r1, [r3] - adds r0, r1 - adds r0, 0x5C - movs r1, 0x6 - strb r1, [r0] - ldr r1, [r3] - adds r1, 0x93 - ldr r2, =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r2, [r0] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - ldr r3, [r3] - adds r0, r3 - adds r0, 0x5C - ldrb r2, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - adds r3, r0 - str r3, [sp] - movs r0, 0 - adds r1, r5, 0 - movs r3, 0 - bl EmitChoosePokemon - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r6] - adds r0, 0x6 - str r0, [r6] - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _0804D760 - ldr r1, =gBattleResults - ldrb r0, [r1, 0x2] - cmp r0, 0xFE - bhi _0804D760 - adds r0, 0x1 - strb r0, [r1, 0x2] -_0804D760: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804D7C4 - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0804D804 - adds r4, r1, 0 -_0804D77C: - ldrb r0, [r4] - cmp r0, r7 - beq _0804D792 - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804D792: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0804D77C - b _0804D804 - .pool -_0804D7C4: - adds r0, r7, 0 - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0804D7F4 - movs r0, 0x2 - eors r3, r0 - strb r3, [r4] -_0804D7F4: - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804D804: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk50_openpartyscreen - - thumb_func_start atk51_switch_handle_order -atk51_switch_handle_order: @ 804D820 - push {r4-r7,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0804D82C - b _0804DA8A -_0804D82C: - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r5, =gActiveBank - strb r0, [r5] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - beq _0804D8CC - cmp r0, 0x1 - bgt _0804D858 - cmp r0, 0 - beq _0804D862 - b _0804DA82 - .pool -_0804D858: - cmp r0, 0x2 - beq _0804D8E8 - cmp r0, 0x3 - beq _0804D922 - b _0804DA82 -_0804D862: - movs r6, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - blt _0804D86E - b _0804DA82 -_0804D86E: - ldr r7, =gBattleBufferB -_0804D870: - ldrb r0, [r7] - cmp r0, 0x22 - bne _0804D8AA - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, r6, r0 - adds r0, 0x5C - ldrb r1, [r7, 0x1] - strb r1, [r0] - ldr r0, [r5] - adds r0, 0x93 - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r6, 2 - adds r0, r2 - ldr r4, [r0] - ands r1, r4 - cmp r1, 0 - bne _0804D8AA - lsls r0, r6, 24 - lsrs r0, 24 - ldrb r1, [r7, 0x1] - bl sub_8184FBC - ldr r1, [r5] - adds r1, 0x93 - ldrb r0, [r1] - orrs r4, r0 - strb r4, [r1] -_0804D8AA: - movs r0, 0x80 - lsls r0, 2 - adds r7, r0 - adds r6, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - blt _0804D870 - b _0804DA82 - .pool -_0804D8CC: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804D8DA - b _0804DA82 -_0804D8DA: - ldrb r0, [r5] - bl sub_803BDA0 - b _0804DA82 - .pool -_0804D8E8: - ldr r4, =gBattleStruct - ldr r0, [r4] - adds r0, 0x93 - ldrb r1, [r0] - ldr r6, =gBitTable - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0804D922 - ldr r0, =gBattleBufferB - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r1, [r1] - adds r0, r2, 0 - bl sub_8184FBC - ldr r2, [r4] - adds r2, 0x93 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] -_0804D922: - ldr r1, =gBattleCommunication - ldr r6, =gBattleBufferB - ldr r7, =gActiveBank - ldrb r0, [r7] - lsls r0, 9 - adds r2, r6, 0x1 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldr r1, =gBattleStruct - mov r12, r1 - ldr r1, [r1] - adds r1, r0, r1 - adds r1, 0x5C - lsls r0, 9 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x42 - ands r0, r1 - cmp r0, 0x42 - bne _0804DA14 - ldrb r0, [r7] - mov r3, r12 - ldr r2, [r3] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - ldr r2, [r3] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - lsls r0, 9 - adds r5, r6, 0x2 - adds r0, r5 - ldrb r2, [r0] - movs r3, 0xF0 - adds r0, r3, 0 - ands r0, r2 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - ldrb r1, [r7] - mov r0, r12 - ldr r2, [r0] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0x61 - lsls r1, 9 - adds r6, 0x3 - adds r1, r6 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r7] - movs r4, 0x2 - eors r0, r4 - mov r1, r12 - ldr r2, [r1] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - eors r0, r4 - mov r1, r12 - ldr r2, [r1] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - ands r3, r0 - lsrs r3, 4 - ldrb r0, [r1] - orrs r3, r0 - strb r3, [r1] - ldrb r0, [r7] - eors r4, r0 - mov r2, r12 - ldr r0, [r2] - lsls r1, r4, 1 - adds r1, r4 - adds r1, r0 - adds r1, 0x62 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - b _0804DA36 - .pool -_0804DA14: - movs r0, 0x80 - lsls r0, 15 - ands r1, r0 - cmp r1, 0 - beq _0804DA30 - ldrb r0, [r7] - mov r3, r12 - ldr r1, [r3] - adds r1, r0, r1 - adds r1, 0x5C - ldrb r1, [r1] - bl sub_80571DC - b _0804DA36 -_0804DA30: - ldrb r0, [r7] - bl sub_803BDA0 -_0804DA36: - ldr r1, =gBattleTextBuff1 - movs r5, 0xFD - strb r5, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, =gBattleMons - ldr r3, =gBankAttacker - ldrb r0, [r3] - movs r2, 0x58 - muls r0, r2 - adds r0, r4 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - muls r0, r2 - adds r0, r4 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r2, =gBattleTextBuff2 - strb r5, [r2] - movs r0, 0x7 - strb r0, [r2, 0x1] - ldr r3, =gActiveBank - ldrb r0, [r3] - strb r0, [r2, 0x2] - ldr r1, =gBattleBufferB - ldrb r0, [r3] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r2, 0x4] -_0804DA82: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] -_0804DA8A: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk51_switch_handle_order - - thumb_func_start atk52_switch_in_effects -atk52_switch_in_effects: @ 804DAAC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, =gBattlescriptCurrInstr - mov r9, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldrb r0, [r4] - bl sub_803FA70 - ldr r1, =gHitMarker - mov r8, r1 - ldr r1, =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - mov r2, r8 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - ldr r2, =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r4] - bl GetBankSide - ldr r5, =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r1, [r0] - movs r7, 0x80 - lsls r7, 2 - mov r10, r7 - mov r0, r10 - ands r0, r1 - cmp r0, 0 - beq _0804DB1C - b _0804DC30 -_0804DB1C: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0804DB34 - b _0804DC30 -_0804DB34: - ldr r7, =gBattleMons - ldrb r2, [r4] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - adds r1, r0, r7 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0804DC30 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0804DC30 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _0804DC30 - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r2, [r0] - mov r1, r10 - orrs r1, r2 - strh r1, [r0] - ldrb r0, [r4] - adds r2, r0, 0 - muls r2, r6 - adds r0, r7, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, =0xfdffffff - ands r0, r1 - str r0, [r2] - mov r1, r8 - ldr r0, [r1] - movs r2, 0x41 - negs r2, r2 - ands r0, r2 - str r0, [r1] - ldrb r0, [r4] - bl GetBankSide - ldr r2, =gSideTimers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0xA] - movs r1, 0x5 - subs r1, r0 - lsls r1, 25 - lsrs r1, 24 - ldr r5, =gBattleMoveDamage - ldrb r0, [r4] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0, 0x2C] - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _0804DBC8 - movs r0, 0x1 - str r0, [r5] -_0804DBC8: - ldr r0, =gBattleScripting - ldrb r1, [r4] - strb r1, [r0, 0x17] - bl BattleScriptPushCursor - mov r7, r9 - ldr r0, [r7] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0804DC14 - ldr r0, =gUnknown_082DAE90 - str r0, [r7] - b _0804DD8E - .pool -_0804DC14: - cmp r0, 0x1 - bne _0804DC24 - ldr r0, =gUnknown_082DAE59 - mov r1, r9 - str r0, [r1] - b _0804DD8E - .pool -_0804DC24: - ldr r0, =gUnknown_082DAEC7 - mov r2, r9 - str r0, [r2] - b _0804DD8E - .pool -_0804DC30: - ldr r2, =gBattleMons - ldr r1, =gActiveBank - ldrb r3, [r1] - movs r0, 0x58 - muls r0, r3 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - adds r5, r1, 0 - ldr r4, =gDisableStructs - cmp r0, 0x36 - bne _0804DC5E - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r2, r0, r4 - ldrb r1, [r2, 0x18] - lsls r0, r1, 30 - cmp r0, 0 - blt _0804DC5E - movs r0, 0x1 - orrs r0, r1 - strb r0, [r2, 0x18] -_0804DC5E: - ldrb r0, [r5] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x18] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x18] - ldrb r1, [r5] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0804DC88 - b _0804DD8E -_0804DC88: - ldrb r1, [r5] - movs r0, 0 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0804DD8E - ldrb r0, [r5] - bl GetBankSide - ldr r1, =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r2, [r0] - ldr r1, =0x0000fdff - ands r1, r2 - strh r1, [r0] - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r7, [r0] - cmp r4, r7 - bge _0804DCD8 - ldr r6, =gTurnOrder - adds r1, r5, 0 - ldr r5, =gUnknown_0202407A - movs r3, 0xC - adds r2, r0, 0 -_0804DCC2: - adds r0, r4, r6 - ldrb r0, [r0] - ldrb r7, [r1] - cmp r0, r7 - bne _0804DCD0 - adds r0, r4, r5 - strb r3, [r0] -_0804DCD0: - adds r4, 0x1 - ldrb r0, [r2] - cmp r4, r0 - blt _0804DCC2 -_0804DCD8: - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bge _0804DD0C - ldr r6, =gBattleStruct - ldr r5, =gBattleMons -_0804DCE6: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, 0xA8 - ldr r1, [r6] - adds r1, r0 - movs r0, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x28] - strh r0, [r1] - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0804DCE6 -_0804DD0C: - ldr r0, =gBattlescriptCurrInstr - ldr r1, [r0] - ldrb r1, [r1, 0x1] - adds r5, r0, 0 - cmp r1, 0x5 - bne _0804DD88 - ldr r0, =gHitMarker - ldr r0, [r0] - lsrs r4, r0, 28 - ldr r1, =gBank1 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r2, =gBitTable - b _0804DD6E - .pool -_0804DD60: - ldr r0, =gNoOfAllBanks - ldrb r3, [r1] - ldrb r0, [r0] - cmp r3, r0 - bcs _0804DD88 - adds r0, r3, 0x1 - strb r0, [r1] -_0804DD6E: - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r3, [r0] - adds r0, r4, 0 - ands r0, r3 - cmp r0, 0 - beq _0804DD60 - ldr r0, =gAbsentBankFlags - ldrb r0, [r0] - ands r0, r3 - cmp r0, 0 - bne _0804DD60 -_0804DD88: - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_0804DD8E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk52_switch_in_effects - - thumb_func_start atk53_trainer_slide -atk53_trainer_slide: @ 804DDA8 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBankByPlayerAI - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x08_8_8_8 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk53_trainer_slide - - thumb_func_start atk54_effectiveness_sound -atk54_effectiveness_sound: @ 804DDD8 - push {r4,r5,lr} - ldr r5, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl EmitEffectivenessSound - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk54_effectiveness_sound - - thumb_func_start atk55_play_sound -atk55_play_sound: @ 804DE14 - push {r4,r5,lr} - ldr r5, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - movs r2, 0 - bl sub_8034300 - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk55_play_sound - - thumb_func_start atk56_fainting_cry -atk56_fainting_cry: @ 804DE50 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x2D_2D_2D_2D - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk56_fainting_cry - - thumb_func_start atk57 -atk57: @ 804DE80 - push {r4,lr} - movs r0, 0 - bl GetBankByPlayerAI - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gBattleOutcome - ldrb r1, [r0] - movs r0, 0 - bl dp01_build_cmdbuf_x37_a - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk57 - - thumb_func_start atk58_return_to_ball -atk58_return_to_ball: @ 804DEB8 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - movs r1, 0x1 - bl EmitReturnPokeToBall - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk58_return_to_ball - - thumb_func_start atk59_learnmove_inbattle -atk59_learnmove_inbattle: @ 804DEEC - push {r4-r7,lr} - ldr r0, =gBattlescriptCurrInstr - ldr r2, [r0] - ldrb r6, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r6, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r6, r0 - ldrb r4, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - orrs r4, r0 - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldrb r1, [r2, 0x9] - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =0x0000fffe - cmp r5, r0 - bne _0804DF56 - adds r7, r5, 0 -_0804DF3A: - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0 - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r7 - beq _0804DF3A -_0804DF56: - cmp r5, 0 - bne _0804DF70 - ldr r0, =gBattlescriptCurrInstr - str r4, [r0] - b _0804E018 - .pool -_0804DF70: - ldr r0, =0x0000ffff - cmp r5, r0 - bne _0804DF88 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] - b _0804E018 - .pool -_0804DF88: - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, =gActiveBank - strb r0, [r1] - ldr r2, =gBattlePartyID - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldr r1, =gBattleStruct - ldr r1, [r1] - ldrh r0, [r0] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _0804DFC8 - ldr r4, =gBattleMons - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0804DFC8 - adds r0, r2, r4 - adds r1, r5, 0 - bl GiveMoveToBattleMon -_0804DFC8: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804E014 - movs r0, 0x2 - bl GetBankByPlayerAI - ldr r1, =gActiveBank - strb r0, [r1] - ldr r2, =gBattlePartyID - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldr r1, =gBattleStruct - ldr r1, [r1] - ldrh r0, [r0] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _0804E014 - ldr r4, =gBattleMons - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0804E014 - adds r0, r2, r4 - adds r1, r5, 0 - bl GiveMoveToBattleMon -_0804E014: - ldr r0, =gBattlescriptCurrInstr - str r6, [r0] -_0804E018: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk59_learnmove_inbattle - - thumb_func_start atk5A -atk5A: @ 804E038 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, =gActiveBank - movs r1, 0 - strb r1, [r0] - ldr r0, =gBattleScripting - ldrb r1, [r0, 0x1F] - adds r2, r0, 0 - cmp r1, 0x6 - bls _0804E052 - b _0804E3B8 -_0804E052: - lsls r0, r1, 2 - ldr r1, =_0804E068 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804E068: - .4byte _0804E084 - .4byte _0804E0BC - .4byte _0804E162 - .4byte _0804E1B8 - .4byte _0804E1E4 - .4byte _0804E38C - .4byte _0804E3AC -_0804E084: - movs r4, 0 - str r4, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gText_BattleYesNoChoice - movs r1, 0xC - bl battle_show_message_maybe - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1F] - adds r0, 0x1 - strb r0, [r1, 0x1F] - ldr r0, =gBattleCommunication - strb r4, [r0, 0x1] - movs r0, 0 - bl sub_8056B74 - b _0804E3B8 - .pool -_0804E0BC: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804E0E4 - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0804E0E4 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_8056B74 -_0804E0E4: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804E10C - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0804E10C - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_8056B74 -_0804E10C: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0804E150 - movs r0, 0x5 - bl PlaySE - ldr r0, =gBattleCommunication - ldrb r4, [r0, 0x1] - cmp r4, 0 - bne _0804E20A - str r5, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E192 - .pool -_0804E150: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0804E15A - b _0804E3B8 -_0804E15A: - movs r0, 0x5 - bl PlaySE - b _0804E20A -_0804E162: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804E170 - b _0804E3B8 -_0804E170: - bl FreeAllWindowBuffers - ldr r0, =gPlayerParty - ldr r1, =gBattleStruct - ldr r1, [r1] - ldrb r1, [r1, 0x10] - ldr r2, =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, =sub_80A92F8 - ldr r4, =gMoveToLearn - ldrh r4, [r4] - str r4, [sp] - bl sub_81BFA38 -_0804E192: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1F] - adds r0, 0x1 - strb r0, [r1, 0x1F] - b _0804E3B8 - .pool -_0804E1B8: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804E1C6 - b _0804E3B8 -_0804E1C6: - ldr r0, =gMain - ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 - cmp r1, r0 - beq _0804E1D2 - b _0804E3B8 -_0804E1D2: - ldrb r0, [r2, 0x1F] - adds r0, 0x1 - b _0804E3B6 - .pool -_0804E1E4: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804E1F2 - b _0804E3B8 -_0804E1F2: - ldr r0, =gMain - ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 - cmp r1, r0 - beq _0804E1FE - b _0804E3B8 -_0804E1FE: - bl sub_81C1B94 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bne _0804E224 -_0804E20A: - ldr r1, =gBattleScripting - movs r0, 0x5 - strb r0, [r1, 0x1F] - b _0804E3B8 - .pool -_0804E224: - ldr r6, =gBattleStruct - ldr r0, [r6] - ldrb r0, [r0, 0x10] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, =gPlayerParty - adds r0, r7 - adds r1, r5, 0 - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _0804E274 - ldr r0, =0x0000013f - ldr r1, =gActiveBank - ldrb r1, [r1] - bl PrepareStringBattle - ldr r1, =gBattleScripting - movs r0, 0x6 - strb r0, [r1, 0x1F] - b _0804E3B8 - .pool -_0804E274: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - ldr r1, =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r0, [r6] - ldrb r0, [r0, 0x10] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - adds r1, r5, 0 - bl RemoveMonPPBonus - ldr r0, [r6] - ldrb r0, [r0, 0x10] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - ldr r7, =gMoveToLearn - ldrh r1, [r7] - adds r2, r5, 0 - bl SetMonMoveSlot - ldr r0, =gBattlePartyID - ldr r1, [r6] - ldrh r0, [r0] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _0804E30A - ldr r4, =gBattleMons - ldr r0, [r4, 0x50] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0804E30A - ldr r0, =gDisableStructs - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0804E30A - adds r0, r4, 0 - adds r1, r5, 0 - bl RemoveBattleMonPPBonus - ldrh r1, [r7] - adds r0, r4, 0 - adds r2, r5, 0 - bl SetBattleMonMoveSlot -_0804E30A: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804E3B8 - ldr r2, =gBattlePartyID - ldr r0, =gBattleStruct - ldr r1, [r0] - ldrh r0, [r2, 0x4] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _0804E3B8 - ldr r4, =gBattleMons - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0804E3B8 - ldr r0, =gDisableStructs - adds r0, 0x50 - ldrb r1, [r0] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0804E3B8 - adds r4, 0xB0 - adds r0, r4, 0 - adds r1, r5, 0 - bl RemoveBattleMonPPBonus - ldr r0, =gMoveToLearn - ldrh r1, [r0] - adds r0, r4, 0 - adds r2, r5, 0 - bl SetBattleMonMoveSlot - b _0804E3B8 - .pool -_0804E38C: - movs r0, 0x1 - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0804E3B8 - .pool -_0804E3AC: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804E3B8 - movs r0, 0x2 -_0804E3B6: - strb r0, [r2, 0x1F] -_0804E3B8: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk5A - - thumb_func_start atk5B_80256E0 -atk5B_80256E0: @ 804E3C8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, =gBattleScripting - ldrb r4, [r5, 0x1F] - cmp r4, 0 - beq _0804E3E0 - cmp r4, 0x1 - beq _0804E410 - b _0804E4FA - .pool -_0804E3E0: - str r4, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gText_BattleYesNoChoice - movs r1, 0xC - bl battle_show_message_maybe - ldrb r0, [r5, 0x1F] - adds r0, 0x1 - strb r0, [r5, 0x1F] - ldr r0, =gBattleCommunication - strb r4, [r0, 0x1] - movs r0, 0 - bl sub_8056B74 - b _0804E4FA - .pool -_0804E410: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804E438 - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0804E438 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_8056B74 -_0804E438: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804E460 - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0804E460 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_8056B74 -_0804E460: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0804E4C4 - movs r0, 0x5 - bl PlaySE - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0804E4A4 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0804E4AC - .pool -_0804E4A4: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0804E4AC: - movs r0, 0x1 - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - b _0804E4FA - .pool -_0804E4C4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804E4FA - movs r0, 0x5 - bl PlaySE - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - str r4, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C -_0804E4FA: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk5B_80256E0 - - thumb_func_start atk5C_hitanimation -atk5C_hitanimation: @ 804E508 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r2, =gActiveBank - strb r0, [r2] - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0804E58C - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - beq _0804E55A - ldr r1, =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0804E55A - ldr r0, =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _0804E58C -_0804E55A: - movs r0, 0 - bl dp01_build_cmdbuf_x29_29_29_29 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - b _0804E592 - .pool -_0804E58C: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] -_0804E592: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk5C_hitanimation - - thumb_func_start sub_804E598 -sub_804E598: @ 804E598 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r6, r0, 16 - movs r7, 0 - movs r5, 0 - movs r0, 0x80 - lsls r0, 3 - cmp r6, r0 - bne _0804E5D8 - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r0, [r0] - adds r0, 0x94 - ldrb r2, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4A - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - muls r0, r2 - b _0804E6CA - .pool -_0804E5D8: - ldr r0, =gTrainers - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r4, r1, r0 - ldrb r3, [r4] - mov r12, r0 - cmp r3, 0x1 - beq _0804E62E - cmp r3, 0x1 - bgt _0804E5F8 - cmp r3, 0 - beq _0804E602 - b _0804E644 - .pool -_0804E5F8: - cmp r3, 0x2 - beq _0804E618 - cmp r3, 0x3 - beq _0804E62E - b _0804E644 -_0804E602: - mov r0, r12 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - subs r0, 0x8 - b _0804E642 -_0804E618: - mov r0, r12 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - subs r0, 0x8 - b _0804E642 -_0804E62E: - mov r0, r12 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - subs r0, 0x10 -_0804E642: - ldrb r5, [r0, 0x2] -_0804E644: - ldr r1, =gUnknown_0831AEB8 - lsls r0, r7, 2 - adds r4, r0, r1 - ldrb r3, [r4] - ldr r0, =gBattleStruct - mov r8, r0 - mov r9, r1 - ldr r1, =gBattleTypeFlags - mov r10, r1 - cmp r3, 0xFF - beq _0804E67A - adds r0, r2, r6 - lsls r0, 3 - add r0, r12 - ldrb r1, [r0, 0x1] - cmp r3, r1 - beq _0804E67A - adds r2, r0, 0 - adds r0, r4, 0 -_0804E66A: - adds r0, 0x4 - adds r7, 0x1 - ldrb r1, [r0] - cmp r1, 0xFF - beq _0804E67A - ldrb r3, [r2, 0x1] - cmp r1, r3 - bne _0804E66A -_0804E67A: - mov r0, r10 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - bne _0804E6B4 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0804E6B4 - mov r3, r8 - ldr r0, [r3] - adds r0, 0x4A - ldrb r0, [r0] - lsls r0, 2 - adds r1, r5, 0 - muls r1, r0 - lsls r0, r7, 2 - add r0, r9 - ldrb r0, [r0, 0x1] - lsls r0, 1 - b _0804E6C8 - .pool -_0804E6B4: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4A - ldrb r0, [r0] - lsls r0, 2 - adds r1, r5, 0 - muls r1, r0 - lsls r0, r7, 2 - add r0, r9 - ldrb r0, [r0, 0x1] -_0804E6C8: - muls r0, r1 -_0804E6CA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E598 - - thumb_func_start atk5D_getmoneyreward -atk5D_getmoneyreward: @ 804E6D8 - push {r4,lr} - ldr r0, =gTrainerBattleOpponent_A - ldrh r0, [r0] - bl sub_804E598 - adds r4, r0, 0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0804E6FC - ldr r0, =gTrainerBattleOpponent_B - ldrh r0, [r0] - bl sub_804E598 - adds r4, r0 -_0804E6FC: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - adds r1, r4, 0 - bl AddMoney - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - strb r4, [r1, 0x4] - movs r0, 0xFF - lsls r0, 8 - ands r0, r4 - lsrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - lsls r0, 16 - ands r0, r4 - lsrs r0, 16 - strb r0, [r1, 0x6] - lsrs r0, r4, 24 - strb r0, [r1, 0x7] - movs r0, 0xFF - strb r0, [r1, 0x8] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk5D_getmoneyreward - - thumb_func_start atk5E_8025A70 -atk5E_8025A70: @ 804E764 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r6, =gActiveBank - strb r0, [r6] - ldr r5, =gBattleCommunication - ldrb r0, [r5] - mov r8, r4 - cmp r0, 0 - beq _0804E794 - cmp r0, 0x1 - beq _0804E7AC - b _0804E800 - .pool -_0804E794: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl EmitGetAttributes - ldrb r0, [r6] - bl MarkBufferBankForExecution - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0804E800 -_0804E7AC: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804E800 - ldrb r0, [r6] - lsls r0, 9 - ldr r1, =gBattleBufferB + 4 - adds r0, r1 - mov r12, r0 - movs r2, 0 - adds r4, r6, 0 - movs r5, 0x58 - ldr r6, =gBattleMons + 0x24 - adds r7, r6, 0 - subs r7, 0x18 - mov r3, r12 - adds r3, 0xC -_0804E7CE: - lsls r1, r2, 1 - ldrb r0, [r4] - muls r0, r5 - adds r1, r0 - adds r1, r7 - ldrh r0, [r3] - strh r0, [r1] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r2, r1 - adds r1, r6 - mov r0, r12 - adds r0, 0x24 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E7CE - mov r1, r8 - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0804E800: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk5E_8025A70 - - thumb_func_start atk5F_8025B24 -atk5F_8025B24: @ 804E818 - push {lr} - ldr r0, =gActiveBank - ldr r2, =gBankAttacker - ldrb r3, [r2] - strb r3, [r0] - ldr r1, =gBankTarget - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - ldr r2, =gHitMarker - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 5 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0804E854 - ldr r0, =0xffffefff - ands r1, r0 - b _0804E856 - .pool -_0804E854: - orrs r1, r3 -_0804E856: - str r1, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk5F_8025B24 - - thumb_func_start atk60_increment_gamestat -atk60_increment_gamestat: @ 804E868 - push {lr} - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0804E882 - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl IncrementGameStat -_0804E882: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk60_increment_gamestat - - thumb_func_start atk61_8025BA4 -atk61_8025BA4: @ 804E898 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804E94C - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gActiveBank - strb r0, [r1] - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _0804E8CA - ldr r0, =gPlayerParty - mov r8, r0 -_0804E8CA: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_0804E8D0: - movs r0, 0x64 - muls r0, r7 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0804E8F4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0804E914 -_0804E8F4: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0804E926 - .pool -_0804E914: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0804E926: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0804E8D0 - movs r0, 0 - mov r1, sp - movs r2, 0x1 - bl dp01_build_cmdbuf_x30_TODO - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0804E94C: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk61_8025BA4 - - thumb_func_start atk62_08025C6C -atk62_08025C6C: @ 804E960 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x31_31_31_31 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk62_08025C6C - - thumb_func_start atk63_jumptorandomattack -atk63_jumptorandomattack: @ 804E990 - push {r4,lr} - ldr r0, =gBattlescriptCurrInstr - ldr r1, [r0] - ldrb r1, [r1, 0x1] - adds r4, r0, 0 - cmp r1, 0 - beq _0804E9B4 - ldr r0, =gCurrentMove - ldr r1, =gRandomMove - ldrh r1, [r1] - strh r1, [r0] - b _0804E9C2 - .pool -_0804E9B4: - ldr r2, =gLastUsedMove - ldr r1, =gCurrentMove - ldr r0, =gRandomMove - ldrh r0, [r0] - strh r0, [r1] - strh r0, [r2] - adds r0, r1, 0 -_0804E9C2: - ldr r3, =gBattleScriptsForMoveEffects - ldr r2, =gBattleMoves - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk63_jumptorandomattack - - thumb_func_start atk64_statusanimation -atk64_statusanimation: @ 804E9F4 - push {r4,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804EA5C - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldr r1, =gStatuses3 - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _0804EA54 - ldr r0, =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _0804EA54 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804EA54 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r2, [r0] - movs r0, 0 - movs r1, 0 - bl dp01_build_cmdbuf_x1B_aaaa_b - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0804EA54: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0804EA5C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk64_statusanimation - - thumb_func_start atk65_status2animation -atk65_status2animation: @ 804EA84 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804EB04 - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r5, =gActiveBank - strb r0, [r5] - ldr r1, [r4] - ldrb r3, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - orrs r3, r0 - ldr r1, =gStatuses3 - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _0804EAFC - ldr r0, =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _0804EAFC - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804EAFC - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r2, [r0] - ands r2, r3 - movs r0, 0 - movs r1, 0x1 - bl dp01_build_cmdbuf_x1B_aaaa_b - ldrb r0, [r5] - bl MarkBufferBankForExecution -_0804EAFC: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] -_0804EB04: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk65_status2animation - - thumb_func_start atk66_chosenstatusanimation -atk66_chosenstatusanimation: @ 804EB2C - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0804EB9E - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r5, =gActiveBank - strb r0, [r5] - ldr r4, [r4] - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 - orrs r2, r0 - ldr r1, =gStatuses3 - ldrb r3, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _0804EB96 - ldr r0, =gDisableStructs - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _0804EB96 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804EB96 - ldrb r1, [r4, 0x2] - movs r0, 0 - bl dp01_build_cmdbuf_x1B_aaaa_b - ldrb r0, [r5] - bl MarkBufferBankForExecution -_0804EB96: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x7 - str r0, [r1] -_0804EB9E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk66_chosenstatusanimation - - thumb_func_start atk67_8025ECC -atk67_8025ECC: @ 804EBC0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, =gBattleCommunication - ldrb r4, [r5] - cmp r4, 0 - beq _0804EBD8 - cmp r4, 0x1 - beq _0804EC04 - b _0804EC96 - .pool -_0804EBD8: - str r4, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gText_BattleYesNoChoice - movs r1, 0xC - bl battle_show_message_maybe - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - strb r4, [r5, 0x1] - movs r0, 0 - bl sub_8056B74 - b _0804EC96 - .pool -_0804EC04: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804EC2A - ldrb r0, [r5, 0x1] - cmp r0, 0 - beq _0804EC2A - movs r0, 0x5 - bl PlaySE - ldrb r0, [r5, 0x1] - bl sub_8056BAC - movs r0, 0 - strb r0, [r5, 0x1] - bl sub_8056B74 -_0804EC2A: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804EC52 - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0804EC52 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_8056B74 -_0804EC52: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804EC70 - ldr r0, =gBattleCommunication - movs r4, 0x1 - strb r4, [r0, 0x1] - b _0804EC7A - .pool -_0804EC70: - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0804EC96 -_0804EC7A: - movs r0, 0x5 - bl PlaySE - str r4, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0804EC96: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk67_8025ECC - - thumb_func_start atk68_80246A0 -atk68_80246A0: @ 804ECA4 - push {r4,r5,lr} - movs r1, 0 - ldr r2, =gNoOfAllBanks - ldr r5, =gBattlescriptCurrInstr - ldrb r0, [r2] - cmp r1, r0 - bge _0804ECC2 - ldr r4, =gUnknown_0202407A - movs r3, 0xC -_0804ECB6: - adds r0, r1, r4 - strb r3, [r0] - adds r1, 0x1 - ldrb r0, [r2] - cmp r1, r0 - blt _0804ECB6 -_0804ECC2: - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk68_80246A0 - - thumb_func_start atk69_dmg_adjustment2 -atk69_dmg_adjustment2: @ 804ECDC - push {r4-r7,lr} - ldr r7, =gBattleMons - ldr r6, =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0804ED10 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0804ED2A - .pool -_0804ED10: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0804ED2A: - ldr r1, =gStringBank - ldr r5, =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _0804ED68 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _0804ED68 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0804ED68: - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r5, r2, 0 - cmp r1, 0 - bne _0804EE38 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x65 - beq _0804EDBA - ldr r0, =gProtectStructs - lsls r1, r4, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _0804EDBA - ldr r0, =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0804EE38 -_0804EDBA: - ldrb r0, [r3] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r1, [r0, 0x28] - ldr r2, =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _0804EE38 - subs r0, r1, 0x1 - str r0, [r2] - ldr r1, =gProtectStructs - ldrb r3, [r3] - lsls r0, r3, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _0804EE10 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0804EE38 - .pool -_0804EE10: - ldr r0, =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0804EE38 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gLastUsedItem - adds r0, r3, 0 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_0804EE38: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk69_dmg_adjustment2 - thumb_func_start atk6A_removeitem atk6A_removeitem: @ 804EE58 push {r4-r6,lr} @@ -5058,7 +1575,7 @@ _0804FC38: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0x16 - bl battle_show_message_maybe + bl sub_814F9EC b _0804FD70 .pool _0804FC60: @@ -5168,7 +1685,7 @@ _0804FD5C: lsls r1, 1 movs r0, 0 movs r2, 0x1 - bl sub_8034300 + bl EmitPlaySound ldr r0, =gActiveBank ldrb r0, [r0] bl MarkBufferBankForExecution @@ -17635,7 +14152,7 @@ _08056978: bne _08056A2C ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _08056A2C ldr r2, =gTasks @@ -17866,8 +14383,8 @@ _08056B62: bx r0 thumb_func_end sub_8056A3C - thumb_func_start sub_8056B74 -sub_8056B74: @ 8056B74 + thumb_func_start BattleCreateCursorAt +BattleCreateCursorAt: @ 8056B74 push {lr} sub sp, 0x10 adds r3, r0, 0 @@ -17894,10 +14411,10 @@ sub_8056B74: @ 8056B74 add sp, 0x10 pop {r0} bx r0 - thumb_func_end sub_8056B74 + thumb_func_end BattleCreateCursorAt - thumb_func_start sub_8056BAC -sub_8056BAC: @ 8056BAC + thumb_func_start BattleDestroyCursorAt +BattleDestroyCursorAt: @ 8056BAC push {lr} sub sp, 0x10 adds r3, r0, 0 @@ -17926,7 +14443,7 @@ sub_8056BAC: @ 8056BAC pop {r0} bx r0 .pool - thumb_func_end sub_8056BAC + thumb_func_end BattleDestroyCursorAt thumb_func_start atkF3_nickname_caught_poke atkF3_nickname_caught_poke: @ 8056BEC @@ -17966,14 +14483,14 @@ _08056C2C: bl sub_8056A3C ldr r0, =gText_BattleYesNoChoice movs r1, 0xC - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] strb r4, [r1, 0x1] movs r0, 0 - bl sub_8056B74 + bl BattleCreateCursorAt b _08056E62 .pool _08056C60: @@ -17989,10 +14506,10 @@ _08056C60: movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0 strb r0, [r4, 0x1] - bl sub_8056B74 + bl BattleCreateCursorAt _08056C86: ldr r0, =gMain ldrh r1, [r0, 0x2E] @@ -18007,10 +14524,10 @@ _08056C86: movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_8056B74 + bl BattleCreateCursorAt _08056CAE: ldr r0, =gMain ldrh r1, [r0, 0x2E] @@ -18124,7 +14641,7 @@ _08056D0A: ldr r1, [r2] adds r1, 0x6D str r0, [sp] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 str r0, [sp, 0x4] movs r0, 0x2 adds r2, r6, 0 @@ -18139,7 +14656,7 @@ _08056D0A: _08056DD4: ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _08056E62 ldr r0, =gPaletteFade diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index e8975a7aa4..5a762a174a 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5045,7 +5045,7 @@ sub_8066FF4: @ 8066FF4 bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index e02a967d0e..3a1b21ed7d 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4354,7 +4354,7 @@ sub_814D590: @ 814D590 bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 1bfa3ff122..4400217ae5 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5185,7 +5185,7 @@ sub_8061F34: @ 8061F34 bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index cbfad9c9f9..ddb739b72f 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -1247,7 +1247,7 @@ _08057F80: bl battle_menu_cursor_related_2 ldr r0, =gText_BattleSwitchWhich movs r1, 0xB - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldr r0, =gActiveBank ldrb r0, [r0] @@ -4042,7 +4042,7 @@ sub_8059828: @ 8059828 push {lr} ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _08059898 ldr r0, =gPaletteFade @@ -4118,7 +4118,7 @@ sub_80598E0: @ 80598E0 push {lr} ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _08059906 ldr r0, =gPaletteFade @@ -4244,11 +4244,11 @@ sub_80599D4: @ 80599D4 movs r0, 0x5 bl PlaySE ldrb r0, [r4] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0 strb r0, [r4] movs r0, 0 - bl sub_8056B74 + bl BattleCreateCursorAt _08059A02: ldr r0, =gMain ldrh r1, [r0, 0x2E] @@ -4263,11 +4263,11 @@ _08059A02: movs r0, 0x5 bl PlaySE ldrb r0, [r4] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0x1 strb r0, [r4] movs r0, 0x1 - bl sub_8056B74 + bl BattleCreateCursorAt _08059A2C: ldr r0, =gMain ldrh r1, [r0, 0x2E] @@ -4355,7 +4355,7 @@ _08059AC4: lsls r1, 24 lsrs r1, 24 adds r0, r7, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldrh r0, [r4] cmp r0, 0 beq _08059AF4 @@ -4382,7 +4382,7 @@ sub_8059B18: @ 8059B18 bl StringCopy adds r0, r4, 0 movs r1, 0x7 - bl battle_show_message_maybe + bl sub_814F9EC pop {r4} pop {r0} bx r0 @@ -4432,7 +4432,7 @@ sub_8059B3C: @ 8059B3C bl ConvertIntToDecimalStringN adds r0, r6, 0 movs r1, 0x9 - bl battle_show_message_maybe + bl sub_814F9EC _08059B98: pop {r4-r7} pop {r0} @@ -4481,7 +4481,7 @@ sub_8059BB0: @ 8059BB0 bl StringCopy adds r0, r6, 0 movs r1, 0xA - bl battle_show_message_maybe + bl sub_814F9EC pop {r4-r6} pop {r0} bx r0 @@ -4637,7 +4637,7 @@ sub_8059CF8: @ 8059CF8 thumb_func_start sub_8059D40 sub_8059D40: @ 8059D40 push {lr} - ldr r0, =sub_80A92F8 + ldr r0, =ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 @@ -4647,7 +4647,7 @@ sub_8059D40: @ 8059D40 thumb_func_start sub_8059D50 sub_8059D50: @ 8059D50 push {lr} - ldr r0, =sub_80A92F8 + ldr r0, =ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 @@ -4718,7 +4718,7 @@ b_link_standby_message: @ 8059DC0 strh r1, [r0] ldr r0, =gText_LinkStandby movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC _08059DE0: pop {r0} bx r0 @@ -8458,7 +8458,7 @@ sub_805BF80: @ 805BF80 bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 @@ -8534,7 +8534,7 @@ dp01t_12_6_battle_menu: @ 805C044 bl sub_817F2A8 ldr r0, =gText_BattleMenu movs r1, 0x2 - bl battle_show_message_maybe + bl sub_814F9EC movs r4, 0 _0805C062: lsls r0, r4, 24 @@ -8554,7 +8554,7 @@ _0805C062: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0x1 - bl battle_show_message_maybe + bl sub_814F9EC pop {r4} pop {r0} bx r0 @@ -8580,12 +8580,12 @@ sub_805C0B0: @ 805C0B0 bl sub_8056A3C ldr r0, =gText_BattleYesNoChoice movs r1, 0xC - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gUnknown_03005D74 movs r0, 0x1 strb r0, [r1] movs r0, 0x1 - bl sub_8056B74 + bl BattleCreateCursorAt ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index f77dc2c337..f14b5bc51c 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4966,7 +4966,7 @@ sub_81BDA4C: @ 81BDA4C bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 6f047a4ef7..90928e7d4a 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4722,7 +4722,7 @@ sub_8188E90: @ 8188E90 bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 7b0cd6d41b..534f340681 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4822,7 +4822,7 @@ sub_818C43C: @ 818C43C bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index 2db6fa6139..b02f954711 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -387,7 +387,7 @@ sub_8159698: @ 8159698 push {lr} ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _081596BE ldr r0, =gPaletteFade @@ -792,7 +792,7 @@ dp01t_10_6_message: @ 81599DC bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 @@ -862,7 +862,7 @@ sub_8159A94: @ 8159A94 str r1, [r0] ldr r0, =gText_SafariZoneMenu movs r1, 0x2 - bl battle_show_message_maybe + bl sub_814F9EC movs r4, 0 _08159AAE: lsls r0, r4, 24 @@ -882,7 +882,7 @@ _08159AAE: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0x1 - bl battle_show_message_maybe + bl sub_814F9EC pop {r4} pop {r0} bx r0 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index f67a214990..e723a522ba 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -299,7 +299,7 @@ sub_8168610: @ 8168610 push {lr} ldr r0, =gMain ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 cmp r1, r0 bne _08168636 ldr r0, =gPaletteFade @@ -3606,7 +3606,7 @@ sub_816A3B8: @ 816A3B8 bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 @@ -3676,7 +3676,7 @@ dp01t_12_1_battle_menu: @ 816A470 str r1, [r0] ldr r0, =gText_BattleMenu movs r1, 0x2 - bl battle_show_message_maybe + bl sub_814F9EC movs r4, 0 _0816A48A: lsls r0, r4, 24 @@ -3696,7 +3696,7 @@ _0816A48A: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0x1 - bl battle_show_message_maybe + bl sub_814F9EC pop {r4} pop {r0} bx r0 diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 8a9b0ba24a..bea4972e3f 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -20582,29 +20582,29 @@ _081A5328: ldr r4, =gDisplayedStringBattle adds r0, r4, 0 movs r1, 0xF - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Vs movs r1, 0x10 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_RivalBuffer bl StrCpyDecodeToDisplayedStringBattle adds r0, r4, 0 movs r1, 0x11 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Mind movs r1, 0x12 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Skill movs r1, 0x13 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Body movs r1, 0x14 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gText_Judgement bl StrCpyDecodeToDisplayedStringBattle adds r0, r4, 0 movs r1, 0x15 - bl battle_show_message_maybe + bl sub_814F9EC b _081A553E .pool _081A53B4: @@ -20688,7 +20688,7 @@ _081A5464: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0x15 - bl battle_show_message_maybe + bl sub_814F9EC ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] diff --git a/asm/battle_message.s b/asm/battle_message.s index dfbf069b33..f1f2447aab 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -703,7 +703,7 @@ _0814E6DE: StrCpyDecodeToDisplayedStringBattle: @ 814E6F0 push {lr} ldr r1, =gDisplayedStringBattle - bl StrCpyDecodeBattle + bl BattleStringExpandPlaceholders pop {r1} bx r1 .pool @@ -763,8 +763,8 @@ _0814E75A: bx r1 thumb_func_end AppendStatusString - thumb_func_start StrCpyDecodeBattle -StrCpyDecodeBattle: @ 814E764 + thumb_func_start BattleStringExpandPlaceholders + BattleStringExpandPlaceholders: @ 814E764 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -904,7 +904,7 @@ _0814E8EE: adds r0, r1, 0 _0814E8F0: adds r1, r4, 0 - bl StrCpyDecodeBattleTextBuff + bl ExpandBattleTextBuffPlaceholders bl _0814F5C0 .pool _0814E904: @@ -2335,10 +2335,10 @@ _0814F62A: pop {r4-r7} pop {r1} bx r1 - thumb_func_end StrCpyDecodeBattle + thumb_func_end BattleStringExpandPlaceholders - thumb_func_start StrCpyDecodeBattleTextBuff -StrCpyDecodeBattleTextBuff: @ 814F648 + thumb_func_start ExpandBattleTextBuffPlaceholders +ExpandBattleTextBuffPlaceholders: @ 814F648 push {r4-r7,lr} mov r7, r8 push {r7} @@ -2652,7 +2652,7 @@ _0814F8EA: pop {r4-r7} pop {r0} bx r0 - thumb_func_end StrCpyDecodeBattleTextBuff + thumb_func_end ExpandBattleTextBuffPlaceholders thumb_func_start sub_814F8F8 sub_814F8F8: @ 814F8F8 @@ -2773,8 +2773,8 @@ _0814F9E0: .pool thumb_func_end sub_814F950 - thumb_func_start battle_show_message_maybe -battle_show_message_maybe: @ 814F9EC + thumb_func_start sub_814F9EC +sub_814F9EC: @ 814F9EC push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -2987,7 +2987,7 @@ _0814FB9C: pop {r4-r7} pop {r0} bx r0 - thumb_func_end battle_show_message_maybe + thumb_func_end sub_814F9EC thumb_func_start sub_814FBAC sub_814FBAC: @ 814FBAC diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index efae2f07c1..afc3c843b5 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1338,7 +1338,7 @@ _0813E6E4: bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r2, r8 adds r1, r2, r7 @@ -1626,7 +1626,7 @@ _0813E99E: bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =0x00000173 bl PlayBGM ldr r2, =gTasks @@ -1868,7 +1868,7 @@ _0813EBE4: _0813EBEC: ldr r0, =gStringVar4 movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gTasks mov r2, r8 adds r0, r2, r7 @@ -1900,7 +1900,7 @@ _0813EC2A: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r3, r8 adds r1, r3, r7 @@ -1997,7 +1997,7 @@ _0813ED16: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r2, r8 adds r1, r2, r7 @@ -2026,7 +2026,7 @@ _0813ED62: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r3, r8 adds r1, r3, r7 @@ -2051,7 +2051,7 @@ _0813ED90: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r2, r8 adds r1, r2, r7 @@ -2087,7 +2087,7 @@ _0813EDEA: bl sub_8056A3C ldr r0, =gText_BattleYesNoChoice movs r1, 0xC - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r3, r8 adds r1, r3, r7 @@ -2100,7 +2100,7 @@ _0813EDEA: ldr r0, =gBattleCommunication strb r2, [r0, 0x1] movs r0, 0 - bl sub_8056B74 + bl BattleCreateCursorAt b _0813F1A4 .pool _0813EE34: @@ -2117,10 +2117,10 @@ _0813EE34: movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0 strb r0, [r4, 0x1] - bl sub_8056B74 + bl BattleCreateCursorAt _0813EE5C: ldr r0, =gMain ldrh r1, [r0, 0x2E] @@ -2135,10 +2135,10 @@ _0813EE5C: movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] - bl sub_8056BAC + bl BattleDestroyCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_8056B74 + bl BattleCreateCursorAt _0813EE84: ldr r0, =gMain ldrh r1, [r0, 0x2E] @@ -2292,7 +2292,7 @@ _0813EFC8: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gTasks mov r2, r8 adds r0, r2, r7 @@ -2341,7 +2341,7 @@ _0813F05C: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r2, r8 adds r1, r2, r7 @@ -2370,7 +2370,7 @@ _0813F0AA: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r0, =gTasks mov r3, r8 adds r1, r3, r7 @@ -2398,7 +2398,7 @@ _0813F0D8: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gTasks mov r2, r8 adds r0, r2, r7 @@ -2414,7 +2414,7 @@ _0813F120: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gTasks mov r3, r8 adds r0, r3, r7 @@ -2434,7 +2434,7 @@ _0813F154: bl StrCpyDecodeToDisplayedStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 - bl battle_show_message_maybe + bl sub_814F9EC ldr r1, =gTasks mov r2, r8 adds r0, r2, r7 diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s index 94d96b2f84..c84b518c3e 100644 --- a/asm/recorded_battle.s +++ b/asm/recorded_battle.s @@ -236,8 +236,8 @@ _08184FA0: .pool thumb_func_end sub_8184E58 - thumb_func_start sub_8184FBC -sub_8184FBC: @ 8184FBC + thumb_func_start RecordedBattle_SetBankAction +RecordedBattle_SetBankAction: @ 8184FBC push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -269,7 +269,7 @@ _08184FF0: pop {r0} bx r0 .pool - thumb_func_end sub_8184FBC + thumb_func_end RecordedBattle_SetBankAction thumb_func_start sub_8185008 sub_8185008: @ 8185008 @@ -2212,7 +2212,7 @@ _081860C2: ldr r1, [sp, 0x4C] lsrs r0, r1, 24 movs r1, 0x6 - bl sub_8184FBC + bl RecordedBattle_SetBankAction movs r5, 0 ldr r2, =gUnknown_0203CC70 mov r8, r2 @@ -2241,7 +2241,7 @@ _081860F0: lsrs r1, 24 ldr r2, [sp, 0x4C] lsrs r0, r2, 24 - bl sub_8184FBC + bl RecordedBattle_SetBankAction b _08186118 .pool _08186110: diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index f83a11ff17..97cc16c77b 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -10,8 +10,8 @@ nullsub_35: @ 80A92F4 bx lr thumb_func_end nullsub_35 - thumb_func_start sub_80A92F8 -sub_80A92F8: @ 80A92F8 + thumb_func_start ReshowBattleScreenAfterMenu +ReshowBattleScreenAfterMenu: @ 80A92F8 push {lr} ldr r2, =gPaletteFade ldrb r0, [r2, 0x8] @@ -37,7 +37,7 @@ sub_80A92F8: @ 80A92F8 pop {r0} bx r0 .pool - thumb_func_end sub_80A92F8 + thumb_func_end ReshowBattleScreenAfterMenu thumb_func_start c2_80777E8 c2_80777E8: @ 80A933C @@ -301,7 +301,7 @@ _080A95A4: movs r0, 0x7F ands r0, r1 strb r0, [r2, 0x8] - ldr r0, =sub_8038420 + ldr r0, =BattleMainCB2 bl SetMainCallback2 bl sub_805EF14 _080A95D2: diff --git a/asm/rom3.s b/asm/rom3.s index 4ab819fa26..bf68c86c8f 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2319,8 +2319,8 @@ dp01_build_cmdbuf_x07_7_7_7: @ 80339E4 .pool thumb_func_end dp01_build_cmdbuf_x07_7_7_7 - thumb_func_start dp01_build_cmdbuf_x08_8_8_8 -dp01_build_cmdbuf_x08_8_8_8: @ 8033A04 + thumb_func_start EmitTrainerSlide +EmitTrainerSlide: @ 8033A04 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2335,7 +2335,7 @@ dp01_build_cmdbuf_x08_8_8_8: @ 8033A04 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x08_8_8_8 + thumb_func_end EmitTrainerSlide thumb_func_start dp01_build_cmdbuf_x09_9_9_9 dp01_build_cmdbuf_x09_9_9_9: @ 8033A24 @@ -3038,8 +3038,8 @@ dp01_build_cmdbuf_x1A_aaaa_bbbb: @ 8033F68 .pool thumb_func_end dp01_build_cmdbuf_x1A_aaaa_bbbb - thumb_func_start dp01_build_cmdbuf_x1B_aaaa_b -dp01_build_cmdbuf_x1B_aaaa_b: @ 8033FBC + thumb_func_start EmitStatusAnimation +EmitStatusAnimation: @ 8033FBC push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -3067,7 +3067,7 @@ dp01_build_cmdbuf_x1B_aaaa_b: @ 8033FBC pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x1B_aaaa_b + thumb_func_end EmitStatusAnimation thumb_func_start dp01_build_cmdbuf_x1C_a dp01_build_cmdbuf_x1C_a: @ 8033FF8 @@ -3431,8 +3431,8 @@ dp01_build_cmdbuf_x28_28_28_28: @ 8034274 .pool thumb_func_end dp01_build_cmdbuf_x28_28_28_28 - thumb_func_start dp01_build_cmdbuf_x29_29_29_29 -dp01_build_cmdbuf_x29_29_29_29: @ 8034294 + thumb_func_start EmitHitAnimation +EmitHitAnimation: @ 8034294 push {lr} lsls r0, 24 lsrs r0, 24 @@ -3447,10 +3447,10 @@ dp01_build_cmdbuf_x29_29_29_29: @ 8034294 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x29_29_29_29 + thumb_func_end EmitHitAnimation - thumb_func_start dp01_build_cmdbuf_x2A_2A_2A_2A -dp01_build_cmdbuf_x2A_2A_2A_2A: @ 80342B4 + thumb_func_start Emit_x2A +Emit_x2A: @ 80342B4 push {lr} lsls r0, 24 lsrs r0, 24 @@ -3465,7 +3465,7 @@ dp01_build_cmdbuf_x2A_2A_2A_2A: @ 80342B4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x2A_2A_2A_2A + thumb_func_end Emit_x2A thumb_func_start EmitEffectivenessSound EmitEffectivenessSound: @ 80342D4 @@ -3491,8 +3491,8 @@ EmitEffectivenessSound: @ 80342D4 .pool thumb_func_end EmitEffectivenessSound - thumb_func_start sub_8034300 -sub_8034300: @ 8034300 + thumb_func_start EmitPlaySound +EmitPlaySound: @ 8034300 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -3512,10 +3512,10 @@ sub_8034300: @ 8034300 pop {r0} bx r0 .pool - thumb_func_end sub_8034300 + thumb_func_end EmitPlaySound - thumb_func_start dp01_build_cmdbuf_x2D_2D_2D_2D -dp01_build_cmdbuf_x2D_2D_2D_2D: @ 803432C + thumb_func_start EmitFaintingCry +EmitFaintingCry: @ 803432C push {lr} lsls r0, 24 lsrs r0, 24 @@ -3530,7 +3530,7 @@ dp01_build_cmdbuf_x2D_2D_2D_2D: @ 803432C pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x2D_2D_2D_2D + thumb_func_end EmitFaintingCry thumb_func_start dp01_build_cmdbuf_x2E_a dp01_build_cmdbuf_x2E_a: @ 803434C @@ -3567,8 +3567,8 @@ dp01_build_cmdbuf_x2F_2F_2F_2F: @ 803436C .pool thumb_func_end dp01_build_cmdbuf_x2F_2F_2F_2F - thumb_func_start dp01_build_cmdbuf_x30_TODO -dp01_build_cmdbuf_x30_TODO: @ 803438C + thumb_func_start EmitCmd48 +EmitCmd48: @ 803438C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -3604,10 +3604,10 @@ _080343B4: pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x30_TODO + thumb_func_end EmitCmd48 - thumb_func_start dp01_build_cmdbuf_x31_31_31_31 -dp01_build_cmdbuf_x31_31_31_31: @ 80343D4 + thumb_func_start EmitCmd49 +EmitCmd49: @ 80343D4 push {lr} lsls r0, 24 lsrs r0, 24 @@ -3622,7 +3622,7 @@ dp01_build_cmdbuf_x31_31_31_31: @ 80343D4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x31_31_31_31 + thumb_func_end EmitCmd49 thumb_func_start dp01_build_cmdbuf_x32_32_32_32 dp01_build_cmdbuf_x32_32_32_32: @ 80343F4 @@ -3735,8 +3735,8 @@ dp01_build_cmdbuf_x38_a: @ 80344A8 .pool thumb_func_end dp01_build_cmdbuf_x38_a - thumb_func_start dp01_build_cmdbuf_x37_a -dp01_build_cmdbuf_x37_a: @ 80344C8 + thumb_func_start Emit_x37 +Emit_x37: @ 80344C8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 @@ -3770,6 +3770,6 @@ dp01_build_cmdbuf_x37_a: @ 80344C8 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x37_a + thumb_func_end Emit_x37 .align 2, 0 @ Don't pad with nop. diff --git a/data/data2b.s b/data/data2b.s index 5df0bdf549..fd72e835e6 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -209,7 +209,7 @@ gTypeEffectiveness:: @ 831ACE8 .include "data/text/type_names.inc" .align 2 -gUnknown_0831AEB8:: @ 831AEB8 +gTrainerMoneyTable:: @ 831AEB8 .incbin "baserom.gba", 0x31aeb8, 0xe0 @ 831AF98 diff --git a/include/battle.h b/include/battle.h index e71a23e28d..d459442741 100644 --- a/include/battle.h +++ b/include/battle.h @@ -200,6 +200,7 @@ #define REQUEST_HP_BATTLE 0x2A // array entries for battle communication +#define CURSOR_POSITION 0x1 #define MOVE_EFFECT_BYTE 0x3 #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 @@ -236,6 +237,46 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 +struct TrainerMonNoItemDefaultMoves +{ + u16 species; + u8 lvl; + u16 evsValue; +}; + +struct TrainerMonItemDefaultMoves +{ + u16 species; + u8 lvl; + u16 evsValue; + u16 heldItem; +}; + +struct TrainerMonNoItemCustomMoves +{ + u16 species; + u8 lvl; + u16 evsValue; + u16 moves[4]; +}; + +struct TrainerMonItemCustomMoves +{ + u16 species; + u8 lvl; + u16 evsValue; + u16 heldItem; + u16 moves[4]; +}; + +union TrainerMonPtr +{ + struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves; + struct TrainerMonNoItemCustomMoves* NoItemCustomMoves; + struct TrainerMonItemDefaultMoves* ItemDefaultMoves; + struct TrainerMonItemCustomMoves* ItemCustomMoves; +}; + struct Trainer { /*0x00*/ u8 partyFlags; @@ -247,9 +288,12 @@ struct Trainer /*0x18*/ bool8 doubleBattle; /*0x1C*/ u32 aiFlags; /*0x20*/ u8 partySize; - /*0x24*/ void *party; + /*0x24*/ union TrainerMonPtr party; }; +#define PARTY_FLAG_CUSTOM_MOVES 0x1 +#define PARTY_FLAG_HAS_ITEM 0x2 + extern const struct Trainer gTrainers[]; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) @@ -289,7 +333,8 @@ struct DisableStruct /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; /*0x18*/ u8 truantCounter : 1; - /*0x18*/ u8 unk18_a : 3; + /*0x18*/ u8 truantUnknownBit : 1; + /*0x18*/ u8 unk18_a_2 : 2; /*0x18*/ u8 unk18_b : 4; /*0x19*/ u8 rechargeCounter; /*0x1A*/ u8 unk1A[2]; @@ -464,7 +509,7 @@ struct BattleResults { u8 playerFaintCounter; // 0x0 u8 opponentFaintCounter; // 0x1 - u8 unk2; // 0x2 + u8 playerSwitchesCounter; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 u8 unk5_0:1; // 0x5 @@ -664,6 +709,13 @@ extern struct BattleStruct* gBattleStruct; varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ } +#define GET_HP_SWITCHOUT_PTR_VIA_MEME_ACCESS(bank, varName) \ +{ \ + void** memes1 = (void**)(&gBattleStruct); \ + void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, hpOnSwitchout))); \ + varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ +} + #define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ @@ -815,6 +867,9 @@ struct BattleScripting u8 statChanger; u8 field_1B; u8 atk23_state; + u8 field_1D; + u8 field_1E; + u8 learnMoveState; }; extern struct BattleScripting gBattleScripting; @@ -829,6 +884,9 @@ u8 GetBattleBank(u8 caseId); void UndoEffectsAfterFainting(void); bool8 HasMoveFailed(u8 bank); void SwitchInClearStructs(void); +void sub_803BDA0(u8 bank); +void sub_803FA70(u8 bank); +void BattleMainCB2(void); // battle_3 void BattleScriptPush(const u8* bsPtr); @@ -860,9 +918,12 @@ void AI_CalcDmg(u8 bankAtk, u8 bankDef); u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 species, u8 ability); u8 BankGetTurnOrder(u8 bank); +void BattleDestroyCursorAt(u8 cursorPosition); +void BattleCreateCursorAt(u8 cursorPosition); // battle_5 void AdjustFriendshipOnBattleFaint(u8 bank); +void sub_80571DC(u8 bank, u8 arg1); // battle 7 void BattleMusicStop(void); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 443ca5be17..b24aa9cc50 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -1,13 +1,21 @@ #ifndef GUARD_BATTLE_CONTROLLERS_H #define GUARD_BATTLE_CONTROLLERS_H +struct HpAndStatus +{ + u16 hp; + u32 status; +}; + // rom3.s, emitters void EmitSetAttributes(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); void EmitEffectivenessSound(u8 bufferId, u16 songId); +void EmitPlaySound(u8 bufferId, u16 songId, u8 arg2); void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); void EmitFaintAnimation(u8 bufferId); +void Emit_x2A(u8 bufferId); void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); @@ -15,6 +23,14 @@ void EmitReturnPokeToBall(u8 bufferId, u8 arg1); void EmitGetAttributes(u8 bufferId, u8 arg1, u8 arg2); void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, const u8* arg4); +void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, u8 arg2); +void EmitTrainerSlide(u8 bufferId); +void EmitFaintingCry(u8 bufferId); +void Emit_x37(u8 bufferId, u8 arg1); +void EmitHitAnimation(u8 bufferId); +void EmitCmd48(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void EmitCmd49(u8 bufferId); +void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); void MarkBufferBankForExecution(u8 bank); diff --git a/include/battle_message.h b/include/battle_message.h index ca310ae6f7..ad1ce34550 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -1,6 +1,147 @@ #ifndef GUARD_BATTLE_MESSAGE_H #define GUARD_BATTLE_MESSAGE_H +// for 0xFD + +#define B_TXT_BUFF1 00 +#define B_TXT_BUFF2 01 +#define B_TXT_COPY_VAR_1 02 +#define B_TXT_COPY_VAR_2 03 +#define B_TXT_COPY_VAR_3 04 +#define B_TXT_PLAYER_MON1_NAME 05 +#define B_TXT_OPPONENT_MON1_NAME 06 +#define B_TXT_PLAYER_MON2_NAME 07 +#define B_TXT_OPPONENT_MON2_NAME 08 +#define B_TXT_LINK_PLAYER_MON1_NAME 09 +#define B_TXT_LINK_OPPONENT_MON1_NAME 0A +#define B_TXT_LINK_PLAYER_MON2_NAME 0B +#define B_TXT_LINK_OPPONENT_MON2_NAME 0C +#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0D +#define B_TXT_ATK_NAME 0E +#define B_TXT_ATK_NAME_WITH_PREFIX 0F +#define B_TXT_DEF_NAME_WITH_PREFIX 10 +#define B_TXT_EFF_NAME_WITH_PREFIX 11 // EFF = short for gEffectBank +#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 12 +#define B_TXT_ACTIVE_NAME_WITH_PREFIX 13 +#define B_TXT_CURRENT_MOVE 14 +#define B_TXT_LAST_MOVE 15 +#define B_TXT_LAST_ITEM 16 +#define B_TXT_LAST_ABILITY 17 +#define B_TXT_ATK_ABILITY 18 +#define B_TXT_DEF_ABILITY 19 +#define B_TXT_SCR_ACTIVE_ABILITY 1A +#define B_TXT_EFF_ABILITY 1B +#define B_TXT_TRAINER1_CLASS 1C +#define B_TXT_TRAINER1_NAME 1D +#define B_TXT_1E 1E // trainer name for a link player +#define B_TXT_1F 1F // trainer name for a link player +#define B_TXT_20 20 // trainer name for a link player +#define B_TXT_21 21 // trainer name for a link player +#define B_TXT_22 22 // trainer name for a link player +#define B_TXT_PLAYER_NAME 23 +#define B_TXT_TRAINER1_LOSE_TEXT 24 +#define B_TXT_TRAINER1_WIN_TEXT 25 +#define B_TXT_26 26 +#define B_TXT_PC_CREATOR_NAME 27 +#define B_TXT_ATK_PREFIX1 28 +#define B_TXT_DEF_PREFIX1 29 +#define B_TXT_ATK_PREFIX2 2A +#define B_TXT_DEF_PREFIX2 2B +#define B_TXT_ATK_PREFIX3 2C +#define B_TXT_DEF_PREFIX3 2D +#define B_TXT_TRAINER2_CLASS 2E +#define B_TXT_TRAINER2_NAME 2F +#define B_TXT_TRAINER2_LOSE_TEXT 30 +#define B_TXT_TRAINER2_WIN_TEXT 31 +#define B_TXT_PARTNER_CLASS 32 +#define B_TXT_PARTNER_NAME 33 +#define B_TXT_BUFF3 34 + +// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 + +#define B_BUFF_STRING 0 +#define B_BUFF_NUMBER 1 +#define B_BUFF_MOVE 2 +#define B_BUFF_TYPE 3 +#define B_BUFF_MON_NICK_WITH_PREFIX 4 +#define B_BUFF_STAT 5 +#define B_BUFF_SPECIES 6 +#define B_BUFF_MON_NICK 7 +#define B_BUFF_NEGATIVE_FLAVOUR 8 +#define B_BUFF_ABILITY 9 +#define B_BUFF_ITEM 10 + +#define B_BUFF_PLACEHOLDER_BEGIN 0xFD +#define B_BUFF_EOS 0xFF + +#define PREPARE_BYTE_NUMBER_BUFFER(textVar, maxDigits, number) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_NUMBER; \ + textVar[2] = 1; \ + textVar[3] = maxDigits; \ + textVar[4] = (number); \ + textVar[5] = B_BUFF_EOS; \ +} + +#define PREPARE_WORD_NUMBER_BUFFER(textVar, maxDigits, number) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_NUMBER; \ + textVar[2] = 4; \ + textVar[3] = maxDigits; \ + textVar[4] = (number); \ + textVar[5] = (number & 0x0000FF00) >> 8; \ + textVar[6] = (number & 0x00FF0000) >> 16; \ + textVar[7] = (number & 0xFF000000) >> 24; \ + textVar[8] = B_BUFF_EOS; \ +} + +#define PREPARE_STRING_BUFFER(textVar, stringId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_STRING; \ + textVar[2] = stringId; \ + textVar[3] = (stringId & 0xFF00) >> 8; \ + textVar[4] = B_BUFF_EOS; \ +} + +#define PREPARE_MOVE_BUFFER(textVar, move) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_MOVE; \ + textVar[2] = move; \ + textVar[3] = (move & 0xFF00) >> 8; \ + textVar[4] = B_BUFF_EOS; \ +} + +#define PREPARE_SPECIES_BUFFER(textVar, species) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_SPECIES; \ + textVar[2] = species; \ + textVar[3] = (species & 0xFF00) >> 8; \ + textVar[4] = B_BUFF_EOS; \ +} + +#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, bank, partyId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_MON_NICK_WITH_PREFIX; \ + textVar[2] = bank; \ + textVar[3] = partyId; \ + textVar[4] = B_BUFF_EOS; \ +} + +#define PREPARE_MON_NICK_BUFFER(textVar, bank, partyId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_MON_NICK; \ + textVar[2] = bank; \ + textVar[3] = partyId; \ + textVar[4] = B_BUFF_EOS; \ +} + struct StringInfoBattle { u16 currentMove; @@ -18,7 +159,8 @@ struct StringInfoBattle void BufferStringBattle(u16 stringID); u32 StrCpyDecodeToDisplayedStringBattle(const u8* src); -u32 StrCpyDecodeBattle(const u8* src, u8* dst); +u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); +void sub_814F9EC(const u8* text, u8 arg1); extern u8 gBattleTextBuff1[]; extern u8 gBattleTextBuff2[]; diff --git a/include/pokemon.h b/include/pokemon.h index f629799e5f..518d28e58e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -626,6 +626,7 @@ bool8 IsTradedMon(struct Pokemon *mon); void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); s32 sub_806D864(u16 a1); bool16 sub_806D82C(u8 id); +u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); #include "sprite.h" diff --git a/include/recorded_battle.h b/include/recorded_battle.h new file mode 100644 index 0000000000..d19a2b7131 --- /dev/null +++ b/include/recorded_battle.h @@ -0,0 +1,6 @@ +#ifndef GUARD_RECORDED_BATTLE_H +#define GUARD_RECORDED_BATTLE_H + +void RecordedBattle_SetBankAction(u8 bank, u8 action); + +#endif // GUARD_RECORDED_BATTLE_H diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h new file mode 100644 index 0000000000..62773b48b0 --- /dev/null +++ b/include/reshow_battle_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_RESHOW_BATTLE_SCREEN_H +#define GUARD_RESHOW_BATTLE_SCREEN_H + +void ReshowBattleScreenAfterMenu(void); + +#endif // GUARD_RESHOW_BATTLE_SCREEN_H diff --git a/include/text.h b/include/text.h index dba409f375..f0c85b978b 100644 --- a/include/text.h +++ b/include/text.h @@ -71,7 +71,9 @@ #define EXT_CTRL_CODE_BEGIN 0xFC // extended control code #define PLACEHOLDER_BEGIN 0xFD // string placeholder #define CHAR_NEWLINE 0xFE -#define EOS 0xFF // end of string +#define EOS 0xFF // end of string + +// battle placeholders are located in battle_message.h #define EXT_CTRL_CODE_JPN 0x15 #define EXT_CTRL_CODE_ENG 0x16 diff --git a/src/battle_4.c b/src/battle_4.c index db6d7fe535..77a4393c4a 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -18,6 +18,12 @@ #include "text.h" #include "sound.h" #include "pokedex.h" +#include "recorded_battle.h" +#include "window.h" +#include "reshow_battle_screen.h" +#include "main.h" +#include "palette.h" +#include "money.h" // variables @@ -32,7 +38,7 @@ extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u8 gTurnOrder[BATTLE_BANKS_COUNT]; -extern u8 gUnknown_02024A76[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_0202407A[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gLastUsedAbility; extern u16 gBattleWeather; @@ -47,7 +53,6 @@ extern u16 gPaydayMoney; extern u16 gRandomTurnNumber; extern u8 gBattleOutcome; extern u8 gBattleTerrain; -extern u16 gTrainerBattleOpponent; extern u8 gBankAttacker; extern u8 gBankTarget; extern const u8* gBattlescriptCurrInstr; @@ -84,18 +89,29 @@ extern u16 gPartnerTrainerId; extern u16 gLastUsedMove; extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gTrainerBattleOpponent_A; +extern u16 gTrainerBattleOpponent_B; + +struct TrainerMoney +{ + u8 classId; + u8 value; +}; extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; extern const u8 gTypeEffectiveness[]; extern const u16 gMissStringIds[]; extern const u16 gTrappingMoves[]; -extern const u8 gTrainerMoney[]; +extern const struct TrainerMoney gTrainerMoneyTable[]; extern const u8* const gBattleScriptsForMoveEffects[]; // functions extern void sub_81A5718(u8 bank); // battle frontier 2 extern void sub_81A56B4(void); // battle frontier 2 +extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen +extern u8 sub_81C1B94(void); // pokemon summary screen +extern void IncrementGameStat(u8 statId); // rom_4 // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -143,6 +159,12 @@ extern const u8 BattleScript_GrudgeTakesPp[]; extern const u8 BattleScript_RageIsBuilding[]; extern const u8 BattleScript_DefrostedViaFireMove[]; extern const u8 gUnknown_082DB87D[]; +extern const u8 gUnknown_082DAE90[]; +extern const u8 gUnknown_082DAE59[]; +extern const u8 gUnknown_082DAEC7[]; + +// strings +extern const u8 gText_BattleYesNoChoice[]; // read via orr #define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) @@ -164,6 +186,7 @@ void DestinyBondFlagUpdate(void); u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static void CheckWonderGuardAndLevitate(void); u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); +void sub_8056A3C(u8 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -255,8 +278,8 @@ void atk56_fainting_cry(void); void atk57(void); void atk58_return_to_ball(void); void atk59_learnmove_inbattle(void); -void atk5A(void); -void atk5B_80256E0(void); +void atk5A_yesnoboxlearnmove(void); +void atk5B_yesnoboxstoplearningmove(void); void atk5C_hitanimation(void); void atk5D_getmoneyreward(void); void atk5E_8025A70(void); @@ -268,9 +291,9 @@ void atk63_jumptorandomattack(void); void atk64_statusanimation(void); void atk65_status2animation(void); void atk66_chosenstatusanimation(void); -void atk67_8025ECC(void); +void atk67_yesnobox(void); void atk68_80246A0(void); -void atk69_dmg_adjustment2(void); +void atk69_dmg_adjustment3(void); void atk6A_removeitem(void); void atk6B_atknameinbuff1(void); void atk6C_lvlbox_display(void); @@ -507,8 +530,8 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk57, atk58_return_to_ball, atk59_learnmove_inbattle, - atk5A, - atk5B_80256E0, + atk5A_yesnoboxlearnmove, + atk5B_yesnoboxstoplearningmove, atk5C_hitanimation, atk5D_getmoneyreward, atk5E_8025A70, @@ -520,9 +543,9 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk64_statusanimation, atk65_status2animation, atk66_chosenstatusanimation, - atk67_8025ECC, + atk67_yesnobox, atk68_80246A0, - atk69_dmg_adjustment2, + atk69_dmg_adjustment3, atk6A_removeitem, atk6B_atknameinbuff1, atk6C_lvlbox_display, @@ -758,7 +781,7 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; -extern const u8* gMoveEffectBS_Ptrs[]; +extern const u8* const gMoveEffectBS_Ptrs[]; void atk00_attackcanceler(void) { @@ -2890,11 +2913,7 @@ void atk19_faint_pokemon(void) EmitSetAttributes(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); MarkBufferBankForExecution(gActiveBank); - gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gBattleMons[gBankAttacker].moves[moveIndex]; - gBattleTextBuff1[3] = gBattleMons[gBankAttacker].moves[moveIndex] >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].moves[moveIndex]) } } else @@ -3262,30 +3281,12 @@ void atk23_getexp(void) else gBattleStruct->expGetterBank = 0; - // buffer poke name - gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = gBattleStruct->expGetterBank; - gBattleTextBuff1[3] = gBattleStruct->expGetterId; - gBattleTextBuff1[4] = EOS; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterId) // buffer 'gained' or 'gained a boosted' - gBattleTextBuff2[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = i; - gBattleTextBuff2[3] = (i & 0xFF00) >> 8; - gBattleTextBuff2[4] = EOS; + PREPARE_STRING_BUFFER(gBattleTextBuff2, i) - // buffer exp number - gBattleTextBuff3[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff3[1] = 1; - gBattleTextBuff3[2] = 4; // word - gBattleTextBuff3[3] = 5; // max digits - gBattleTextBuff3[4] = gBattleMoveDamage; - gBattleTextBuff3[5] = (gBattleMoveDamage & 0x0000FF00) >> 8; - gBattleTextBuff3[6] = (gBattleMoveDamage & 0x00FF0000) >> 16; - gBattleTextBuff3[7] = (gBattleMoveDamage & 0xFF000000) >> 24; - gBattleTextBuff3[8] = EOS; + PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage) PrepareStringBattle(0xD, gBattleStruct->expGetterBank); MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species); @@ -3324,20 +3325,9 @@ void atk23_getexp(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId) sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - // buff poke name - gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = gActiveBank; - gBattleTextBuff1[3] = gBattleStruct->expGetterId; - gBattleTextBuff1[4] = EOS; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattleStruct->expGetterId) - // buff level - gBattleTextBuff2[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff2[1] = 1; - gBattleTextBuff2[2] = 1; - gBattleTextBuff2[3] = 3; - gBattleTextBuff2[4] = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL); - gBattleTextBuff2[5] = EOS; + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL)) BattleScriptPushCursor(); gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterId]; @@ -5280,3 +5270,1050 @@ void sub_804CF10(u8 arg0) EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBank]); MarkBufferBankForExecution(gActiveBank); } + +void atk50_openpartyscreen(void) +{ + u32 flags; + u8 hitmarkerFaintBits; + u8 bank; + const u8 *jumpPtr; + + bank = 0; + flags = 0; + jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + + if (gBattlescriptCurrInstr[1] == 5) + { + if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + { + if (sub_80423F4(gActiveBank, 6, 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(6); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + } + else + { + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u8 flag40_0, flag40_1, flag40_2, flag40_3; + + hitmarkerFaintBits = gHitMarker >> 0x1C; + + if (gBitTable[0] & hitmarkerFaintBits) + { + gActiveBank = 0; + if (sub_80423F4(0, 6, 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + Emit_x2A(0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(gBattleStruct->field_5C[2]); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + else + { + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + flags |= 1; + } + } + if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits)) + { + gActiveBank = 2; + if (sub_80423F4(2, 6, 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + Emit_x2A(0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(gBattleStruct->field_5C[0]); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + else if (!(flags & 1)) + { + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + if (gBitTable[1] & hitmarkerFaintBits) + { + gActiveBank = 1; + if (sub_80423F4(1, 6, 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + Emit_x2A(0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(gBattleStruct->field_5C[3]); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + else + { + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + flags |= 2; + } + } + if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits)) + { + gActiveBank = 3; + if (sub_80423F4(3, 6, 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + Emit_x2A(0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(gBattleStruct->field_5C[1]); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + else if (!(flags & 2)) + { + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + + flag40_0 = gSpecialStatuses[0].flag40; + if (!flag40_0) + { + flag40_2 = gSpecialStatuses[2].flag40; + if (!flag40_2 && hitmarkerFaintBits != 0) + { + if (gAbsentBankFlags & gBitTable[0]) + gActiveBank = 2; + else + gActiveBank = 0; + + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + + } + flag40_1 = gSpecialStatuses[1].flag40; + if (!flag40_1) + { + flag40_3 = gSpecialStatuses[3].flag40; + if (!flag40_3 && hitmarkerFaintBits != 0) + { + if (gAbsentBankFlags & gBitTable[1]) + gActiveBank = 3; + else + gActiveBank = 1; + + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + } + gBattlescriptCurrInstr += 6; + } + else if (gBattlescriptCurrInstr[1] == 6) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + hitmarkerFaintBits = gHitMarker >> 0x1C; + if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits) + { + gActiveBank = 2; + if (sub_80423F4(2, gBattleBufferB[0][1], 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + Emit_x2A(0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(gBattleStruct->field_5C[0]); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + } + if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1]) + { + gActiveBank = 3; + if (sub_80423F4(3, gBattleBufferB[1][1], 6)) + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + Emit_x2A(0); + MarkBufferBankForExecution(gActiveBank); + } + else if (!gSpecialStatuses[gActiveBank].flag40) + { + sub_804CF10(gBattleStruct->field_5C[1]); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + } + gBattlescriptCurrInstr += 6; + } + else + { + gBattlescriptCurrInstr += 6; + } + } + else + { + gBattlescriptCurrInstr += 6; + } + + hitmarkerFaintBits = gHitMarker >> 0x1C; + + gBank1 = 0; + while (1) + { + if (gBitTable[gBank1] & hitmarkerFaintBits) + break; + if (gBank1 >= gNoOfAllBanks) + break; + gBank1++; + } + + if (gBank1 == gNoOfAllBanks) + gBattlescriptCurrInstr = jumpPtr; + } + else + { + if (gBattlescriptCurrInstr[1] & 0x80) + hitmarkerFaintBits = 0; // used here as the caseId for the EmitChoose function + else + hitmarkerFaintBits = 1; + + bank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(0x80)); + if (gSpecialStatuses[bank].flag40) + { + gBattlescriptCurrInstr += 6; + } + else if (sub_80423F4(bank, 6, 6)) + { + gActiveBank = bank; + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + gBattlescriptCurrInstr = jumpPtr; + } + else + { + gActiveBank = bank; + *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; + *(gBattleStruct->field_5C + gActiveBank) = 6; + gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]); + + EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->field_5C + (gActiveBank ^ 2)), 0, gBattleStruct->field_60[gActiveBank]); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 6; + + if (GetBankIdentity(gActiveBank) == 0 && gBattleResults.playerSwitchesCounter < 0xFF) + gBattleResults.playerSwitchesCounter++; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActiveBank != bank) + { + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + } + else + { + gActiveBank = GetBankByPlayerAI(GetBankIdentity(bank) ^ 1); + if (gAbsentBankFlags & gBitTable[gActiveBank]) + gActiveBank ^= 2; + + EmitLinkStandbyMsg(0, 2, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + } +} + +void atk51_switch_handle_order(void) +{ + s32 i; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case 0: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleBufferB[i][0] == 0x22) + { + *(gBattleStruct->field_5C + i) = gBattleBufferB[i][1]; + if (!(gBattleStruct->field_93 & gBitTable[i])) + { + RecordedBattle_SetBankAction(i, gBattleBufferB[i][1]); + gBattleStruct->field_93 |= gBitTable[i]; + } + } + } + break; + case 1: + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + sub_803BDA0(gActiveBank); + break; + case 2: + if (!(gBattleStruct->field_93 & gBitTable[gActiveBank])) + { + RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]); + gBattleStruct->field_93 |= gBitTable[gActiveBank]; + } + // fall through + case 3: + gBattleCommunication[0] = gBattleBufferB[gActiveBank][1]; + *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1]; + + if ((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_LINK)) == (BATTLE_TYPE_MULTI | BATTLE_TYPE_LINK)) + { + *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF; + *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0); + *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3]; + + *((gActiveBank ^ 2) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0); + *((gActiveBank ^ 2) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4; + *((gActiveBank ^ 2) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3]; + } + else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + sub_80571DC(gActiveBank, *(gBattleStruct->field_5C + gActiveBank)); + } + else + { + sub_803BDA0(gActiveBank); + } + + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].species) + PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBank, gBattleBufferB[gActiveBank][1]) + + break; + } + + gBattlescriptCurrInstr += 3; +} + +void atk52_switch_in_effects(void) +{ + s32 i; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + sub_803FA70(gActiveBank); + + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + gSpecialStatuses[gActiveBank].flag40 = 0; + + if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED) + && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES) + && gBattleMons[gActiveBank].type1 != TYPE_FLYING + && gBattleMons[gActiveBank].type2 != TYPE_FLYING + && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE) + { + u8 spikesDmg; + + gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED; + + gBattleMons[gActiveBank].status2 &= ~(STATUS2_DESTINY_BOND); + gHitMarker &= ~(HITMARKER_DESTINYBOND); + + spikesDmg = (5 - gSideTimers[GetBankSide(gActiveBank)].spikesAmount) * 2; + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + gBattleScripting.bank = gActiveBank; + BattleScriptPushCursor(); + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + gBattlescriptCurrInstr = gUnknown_082DAE90; + else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1) + gBattlescriptCurrInstr = gUnknown_082DAE59; + else + gBattlescriptCurrInstr = gUnknown_082DAEC7; + } + else + { + if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBank].truantUnknownBit) + gDisableStructs[gActiveBank].truantCounter = 1; + + gDisableStructs[gActiveBank].truantUnknownBit = 0; + + if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBank, 0, 0, 0) == 0 && + ItemBattleEffects(0, gActiveBank, 0) == 0) + { + gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == gActiveBank) + gUnknown_0202407A[i] = 0xC; + } + + for (i = 0; i < gNoOfAllBanks; i++) + { + u16* hpOnSwitchout; + GET_HP_SWITCHOUT_PTR_VIA_MEME_ACCESS(GetBankSide(i), hpOnSwitchout) + *hpOnSwitchout = gBattleMons[i].hp; + } + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5) + { + u32 hitmarkerFaintBits = gHitMarker >> 0x1C; + + gBank1++; + while (1) + { + if (hitmarkerFaintBits & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1])) + break; + if (gBank1 >= gNoOfAllBanks) + break; + gBank1++; + } + } + gBattlescriptCurrInstr += 2; + } + } +} + +void atk53_trainer_slide(void) +{ + gActiveBank = GetBankByPlayerAI(gBattlescriptCurrInstr[1]); + EmitTrainerSlide(0); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk54_effectiveness_sound(void) +{ + gActiveBank = gBankAttacker; + EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 3; +} + +void atk55_play_sound(void) +{ + gActiveBank = gBankAttacker; + EmitPlaySound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), 0); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 3; +} + +void atk56_fainting_cry(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitFaintingCry(0); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk57(void) +{ + gActiveBank = GetBankByPlayerAI(0); + Emit_x37(0, gBattleOutcome); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 1; +} + +void atk58_return_to_ball(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitReturnPokeToBall(0, 1); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk59_learnmove_inbattle(void) +{ + const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + + u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], BSScriptRead8(gBattlescriptCurrInstr + 9)); + while (ret == 0xFFFE) + ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], 0); + + if (ret == 0) + { + gBattlescriptCurrInstr = jumpPtr2; + } + else if (ret == 0xFFFF) + { + gBattlescriptCurrInstr += 10; + } + else + { + gActiveBank = GetBankByPlayerAI(0); + + if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId + && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + { + GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + gActiveBank = GetBankByPlayerAI(2); + if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId + && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + { + GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); + } + } + + gBattlescriptCurrInstr = jumpPtr1; + } +} + +void atk5A_yesnoboxlearnmove(void) +{ + gActiveBank = 0; + + switch (gBattleScripting.learnMoveState) + { + case 0: + sub_8056A3C(0x18, 8, 0x1D, 0xD, 0); + sub_814F9EC(gText_BattleYesNoChoice, 0xC); + gBattleScripting.learnMoveState++; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateCursorAt(1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] == 0) + { + sub_8056A3C(0x18, 0x8, 0x1D, 0xD, 1); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleScripting.learnMoveState++; + } + else + { + gBattleScripting.learnMoveState = 5; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattleScripting.learnMoveState = 5; + } + break; + case 2: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + sub_81BFA38(gPlayerParty, gBattleStruct->expGetterId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + gBattleScripting.learnMoveState++; + } + break; + case 3: + if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2) + { + gBattleScripting.learnMoveState++; + } + break; + case 4: + if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2) + { + u8 movePosition = sub_81C1B94(); + if (movePosition == 4) + { + gBattleScripting.learnMoveState = 5; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MOVE1 + movePosition); + if (IsHMMove2(moveId)) + { + PrepareStringBattle(0x13F, gActiveBank); + gBattleScripting.learnMoveState = 6; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId) + + RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterId], movePosition); + SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterId], gMoveToLearn, movePosition); + + if (gBattlePartyID[0] == gBattleStruct->expGetterId + && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[0].unk18_b & gBitTable[movePosition])) + { + RemoveBattleMonPPBonus(&gBattleMons[0], movePosition); + SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition); + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattlePartyID[2] == gBattleStruct->expGetterId + && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[2].unk18_b & gBitTable[movePosition])) + { + RemoveBattleMonPPBonus(&gBattleMons[2], movePosition); + SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition); + } + } + } + } + break; + case 5: + sub_8056A3C(0x18, 8, 0x1D, 0xD, 1); + gBattlescriptCurrInstr += 5; + break; + case 6: + if (gBattleExecBuffer == 0) + { + gBattleScripting.learnMoveState = 2; + } + break; + } +} + +void atk5B_yesnoboxstoplearningmove(void) +{ + switch (gBattleScripting.learnMoveState) + { + case 0: + sub_8056A3C(0x18, 8, 0x1D, 0xD, 0); + sub_814F9EC(gText_BattleYesNoChoice, 0xC); + gBattleScripting.learnMoveState++; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateCursorAt(1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + + if (gBattleCommunication[1] != 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + + sub_8056A3C(0x18, 0x8, 0x1D, 0xD, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + sub_8056A3C(0x18, 0x8, 0x1D, 0xD, 1); + } + break; + } +} + +void atk5C_hitanimation(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gBattlescriptCurrInstr += 2; + } + else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0) + { + EmitHitAnimation(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } + else + { + gBattlescriptCurrInstr += 2; + } +} + +static u32 GetTrainerMoneyToGive(u16 trainerId) +{ + u32 i = 0; + u32 lastMonLevel = 0; + u32 moneyReward = 0; + + if (trainerId == SECRET_BASE_OPPONENT) + { + moneyReward = 20 * gBattleResources->secretBase->partyLevels[0] * gBattleStruct->moneyMultiplier; + } + else + { + switch (gTrainers[trainerId].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *party = gTrainers[trainerId].party.NoItemDefaultMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + case PARTY_FLAG_CUSTOM_MOVES: + { + const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + case PARTY_FLAG_HAS_ITEM: + { + const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM: + { + const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + } + + for (; gTrainerMoneyTable[i].classId != 0xFF; i++) + { + if (gTrainerMoneyTable[i].classId == gTrainers[trainerId].trainerClass) + break; + } + + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * 2 * gTrainerMoneyTable[i].value; + else + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value; + } + + return moneyReward; +} + +void atk5D_getmoneyreward(void) +{ + u32 moneyReward = GetTrainerMoneyToGive(gTrainerBattleOpponent_A); + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + moneyReward += GetTrainerMoneyToGive(gTrainerBattleOpponent_B); + + AddMoney(&gSaveBlock1Ptr->money, moneyReward); + + PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward) + + gBattlescriptCurrInstr++; +} + +void atk5E_8025A70(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + switch (gBattleCommunication[0]) + { + case 0: + EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[0]++; + break; + case 1: + if (gBattleExecBuffer == 0) + { + s32 i; + struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4]; + for (i = 0; i < 4; i++) + { + gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i]; + gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i]; + } + gBattlescriptCurrInstr += 2; + } + break; + } +} + +void atk5F_8025B24(void) +{ + gActiveBank = gBankAttacker; + gBankAttacker = gBankTarget; + gBankTarget = gActiveBank; + + if (gHitMarker & HITMARKER_PURSUIT_TRAP) + gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + else + gHitMarker |= HITMARKER_PURSUIT_TRAP; + + gBattlescriptCurrInstr++; +} + +void atk60_increment_gamestat(void) +{ + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + IncrementGameStat(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + gBattlescriptCurrInstr += 2; +} + +void atk61_8025BA4(void) +{ + s32 i; + struct Pokemon* party; + struct HpAndStatus hpStatuses[6]; + + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatuses[i].hp = 0xFFFF; + hpStatuses[i].status = 0; + } + else + { + hpStatuses[i].hp = GetMonData(&party[i], MON_DATA_HP); + hpStatuses[i].status = GetMonData(&party[i], MON_DATA_STATUS); + } + } + + EmitCmd48(0, hpStatuses, 1); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk62_08025C6C(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitCmd49(0); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk63_jumptorandomattack(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1) != 0) + gCurrentMove = gRandomMove; + else + gLastUsedMove = gCurrentMove = gRandomMove; + + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; +} + +void atk64_statusanimation(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) + && gDisableStructs[gActiveBank].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 2; + } +} + +void atk65_status2animation(void) +{ + u32 wantedToAnimate; + + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + wantedToAnimate = BSScriptRead32(gBattlescriptCurrInstr + 2); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) + && gDisableStructs[gActiveBank].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBank].status2 & wantedToAnimate); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 6; + } +} + +void atk66_chosenstatusanimation(void) +{ + u32 wantedStatus; + + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + wantedStatus = BSScriptRead32(gBattlescriptCurrInstr + 3); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) + && gDisableStructs[gActiveBank].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, BSScriptRead8(gBattlescriptCurrInstr + 2), wantedStatus); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 7; + } +} + +void atk67_yesnobox(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + sub_8056A3C(0x18, 8, 0x1D, 0xD, 0); + sub_814F9EC(gText_BattleYesNoChoice, 0xC); + gBattleCommunication[0]++; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateCursorAt(1); + } + if (gMain.newKeys & B_BUTTON) + { + gBattleCommunication[CURSOR_POSITION] = 1; + PlaySE(SE_SELECT); + sub_8056A3C(0x18, 8, 0x1D, 0xD, 1); + gBattlescriptCurrInstr++; + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8056A3C(0x18, 8, 0x1D, 0xD, 1); + gBattlescriptCurrInstr++; + } + break; + } +} + +void atk68_80246A0(void) +{ + s32 i; + + for (i = 0; i < gNoOfAllBanks; i++) + gUnknown_0202407A[i] = 0xC; + + gBattlescriptCurrInstr++; +} + +void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier. +{ + u8 holdEffect, quality; + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemEffectBattle(gBankTarget, holdEffect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + } + else if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 2bc06c5808..aaa02c5d4e 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1374,7 +1374,7 @@ void sub_806E994(void) gBattleTextBuff2[2] = gBankInMenu; gBattleTextBuff2[3] = pokemon_order_func(gBattlePartyID[gBankInMenu]); gBattleTextBuff2[4] = EOS; - StrCpyDecodeBattle(gText_PkmnsXPreventsSwitching, gStringVar4); + BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4); } struct PokeItem From d769ec137447c52062b48153851bd2824055b6df Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 26 Sep 2017 22:39:59 +0200 Subject: [PATCH 033/182] battle 4 up to a8 --- asm/battle_1.s | 20 +- asm/battle_2.s | 124 +- asm/battle_4.s | 7498 +----------------------- asm/battle_5.s | 8 +- asm/battle_7.s | 18 +- asm/battle_9.s | 34 +- asm/battle_anim.s | 34 +- asm/battle_anim_80D51AC.s | 2 +- asm/battle_anim_80FE840.s | 202 +- asm/battle_anim_815A0D4.s | 66 +- asm/battle_anim_8170478.s | 26 +- asm/battle_controller_opponent.s | 14 +- asm/battle_controller_player.s | 18 +- asm/battle_controller_player_partner.s | 8 +- asm/battle_controller_safari.s | 6 +- asm/battle_controller_wally.s | 6 +- asm/battle_frontier_1.s | 164 +- asm/battle_frontier_2.s | 8 +- asm/battle_message.s | 24 +- asm/contest.s | 56 +- asm/contest_link_80F57C4.s | 18 +- asm/evolution_scene.s | 114 +- asm/menu.s | 4 +- asm/party_menu.s | 12 +- asm/pokeball.s | 14 +- asm/pokemon_icon.s | 16 +- asm/pokemon_item_effect.s | 2 +- asm/pokemon_storage_system.s | 2 +- asm/reshow_battle_screen.s | 12 +- asm/rom3.s | 30 +- asm/rom_80A5C6C.s | 24 +- asm/title_screen.s | 6 +- asm/unknown_task.s | 8 +- data/battle_4.s | 51 +- data/battle_scripts_1.s | 38 +- include/battle.h | 108 +- include/battle_controllers.h | 29 +- include/battle_message.h | 29 +- include/moves.h | 4 +- include/pokemon.h | 7 +- include/pokemon_icon.h | 7 + include/pokemon_item_effects.h | 8 + include/text.h | 38 +- include/window.h | 2 +- src/battle_3.c | 52 +- src/battle_4.c | 2739 ++++++++- src/battle_ai.c | 2 +- src/calculate_base_damage.c | 1 - src/pokemon_2.c | 10 +- src/pokemon_3.c | 6 +- src/window.c | 2 +- sym_ewram.txt | 8 +- 52 files changed, 3497 insertions(+), 8242 deletions(-) create mode 100644 include/pokemon_icon.h create mode 100644 include/pokemon_item_effects.h diff --git a/asm/battle_1.s b/asm/battle_1.s index 3507f6a715..e74d12046b 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -2236,7 +2236,7 @@ _08035F64: ldrsh r0, [r5, r1] cmp r0, 0 beq _08035FCC - ldr r4, =gUnknown_02022E18 + ldr r4, =gBattle_BG1_X ldrh r0, [r5, 0xA] bl Sin2 lsls r0, 16 @@ -2251,7 +2251,7 @@ _08035F7E: adds r0, r2, 0 subs r0, r1 strh r0, [r4] - ldr r4, =gUnknown_02022E1C + ldr r4, =gBattle_BG2_X ldrh r0, [r5, 0xC] bl Sin2 lsls r0, 16 @@ -2266,16 +2266,16 @@ _08035F9C: adds r0, r3, 0 subs r0, r1 strh r0, [r4] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldr r2, =0x0000ffdc adds r1, r2, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] b _08036038 .pool _08035FCC: - ldr r4, =gUnknown_02022E18 + ldr r4, =gBattle_BG1_X ldrh r0, [r5, 0xA] bl Sin2 lsls r0, 16 @@ -2290,7 +2290,7 @@ _08035FDE: adds r0, r3, 0 subs r0, r1 strh r0, [r4] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y ldrh r0, [r5, 0xA] bl Cos2 lsls r0, 16 @@ -2302,7 +2302,7 @@ _08035FFC: asrs r0, 5 subs r0, 0xA4 strh r0, [r4] - ldr r4, =gUnknown_02022E1C + ldr r4, =gBattle_BG2_X ldrh r0, [r5, 0xC] bl Sin2 lsls r0, 16 @@ -2317,7 +2317,7 @@ _08036014: adds r0, r2, 0 subs r0, r1 strh r0, [r4] - ldr r4, =gUnknown_02022E1E + ldr r4, =gBattle_BG2_Y ldrh r0, [r5, 0xC] bl Cos2 lsls r0, 16 @@ -2504,11 +2504,11 @@ sub_8036154: @ 8036154 movs r0, 0x4A movs r1, 0x36 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldr r2, =0x0000ff5c adds r1, r2, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r0, =gUnknown_0831AA00 bl LoadCompressedObjectPicUsingHeap diff --git a/asm/battle_2.s b/asm/battle_2.s index 14e332d7c9..d1119619c0 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -157,13 +157,13 @@ _080368BE: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r0, =gUnknown_02022E20 strh r1, [r0] @@ -3925,19 +3925,19 @@ _08038A3A: ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg @@ -4371,13 +4371,13 @@ _08038E1A: strh r4, [r0] ldr r0, =gUnknown_02022E16 strh r4, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r4, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] ldr r0, =gUnknown_02022E20 strh r4, [r0] @@ -4842,13 +4842,13 @@ sub_80392A8: @ 80392A8 strh r4, [r0] ldr r0, =gUnknown_02022E16 strh r4, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r4, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] ldr r0, =gUnknown_02022E20 strh r4, [r0] @@ -5215,7 +5215,7 @@ _08039678: bl PlaySE ldr r0, =gText_BattleRecordedOnPass _08039686: - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -7806,7 +7806,7 @@ _0803ABD4: movs r0, 0 movs r1, 0 movs r2, 0 - bl EmitGetAttributes + bl EmitGetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldrb r0, [r5] @@ -7849,7 +7849,7 @@ bc_load_battlefield: @ 803AC34 cmp r5, 0 bne _0803AC64 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gUnknown_02022FF0 @@ -8274,7 +8274,7 @@ _0803AFFA: cmp r7, 0x5 ble _0803AFAA movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -8326,7 +8326,7 @@ _0803B072: cmp r7, 0x5 ble _0803B026 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 @@ -8404,7 +8404,7 @@ bc_battle_begin_message: @ 803B120 cmp r0, 0 bne _0803B142 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gActiveBank strb r0, [r1] ldrb r1, [r1] @@ -8468,7 +8468,7 @@ sub_803B180: @ 803B180 _0803B1B8: movs r0, 0x1 _0803B1BA: - bl GetBankByPlayerAI + bl GetBankByIdentity adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -8738,7 +8738,7 @@ _0803B3F6: cmp r0, 0 bne _0803B412 adds r0, r3, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -9241,7 +9241,7 @@ _0803B7EA: ldr r1, =gBattleMainFunc ldr r0, =sub_803BE74 str r0, [r1] - bl sub_803F988 + bl ResetSentPokesToOpponentValue ldr r1, =gBattleCommunication movs r2, 0 adds r0, r1, 0x7 @@ -9588,8 +9588,8 @@ _0803BB78: .pool thumb_func_end BattleTurnPassed - thumb_func_start sub_803BB88 -sub_803BB88: @ 803BB88 + thumb_func_start IsRunningFromBattleImpossible +IsRunningFromBattleImpossible: @ 803BB88 push {r4-r7,lr} sub sp, 0x4 ldr r1, =gBattleMons @@ -9830,7 +9830,7 @@ _0803BD92: pop {r1} bx r1 .pool - thumb_func_end sub_803BB88 + thumb_func_end IsRunningFromBattleImpossible thumb_func_start sub_803BDA0 sub_803BDA0: @ 803BDA0 @@ -10013,7 +10013,7 @@ _0803BF0C: beq _0803BF68 eors r5, r1 adds r0, r5, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, [r4] adds r1, 0x91 ldrb r1, [r1] @@ -10027,7 +10027,7 @@ _0803BF0C: bne _0803BF68 ldr r4, =gBattleCommunication adds r0, r5, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -10612,7 +10612,7 @@ _0803C4B4: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -10625,7 +10625,7 @@ _0803C4B4: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattleMons lsls r0, 24 lsrs r0, 24 @@ -10645,7 +10645,7 @@ _0803C4B4: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 muls r0, r7 @@ -10670,7 +10670,7 @@ _0803C550: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -10682,7 +10682,7 @@ _0803C550: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0x2 @@ -10695,7 +10695,7 @@ _0803C590: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -10712,7 +10712,7 @@ _0803C5B6: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -10725,7 +10725,7 @@ _0803C5B6: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 20 adds r0, r4 @@ -10739,7 +10739,7 @@ _0803C5B6: eors r0, r6 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 lsls r1, r0, 3 @@ -10771,7 +10771,7 @@ _0803C628: eors r0, r5 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -10788,7 +10788,7 @@ _0803C628: _0803C668: lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -10803,7 +10803,7 @@ _0803C690: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0x3 @@ -10873,7 +10873,7 @@ _0803C720: b _0803CC20 .pool _0803C760: - bl sub_803BB88 + bl IsRunningFromBattleImpossible lsls r0, 24 cmp r0, 0 beq _0803C7C4 @@ -11271,7 +11271,7 @@ _0803CAFA: bne _0803CB3C adds r0, r5, 0 eors r0, r1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattleStruct ldr r1, [r1] adds r1, 0x91 @@ -12870,7 +12870,7 @@ sub_803D8C0: @ 803D8C0 ldrb r0, [r4] strb r0, [r1] movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankAttacker strb r0, [r1] ldr r1, =gBattlescriptCurrInstr @@ -13075,7 +13075,7 @@ _0803DB44: ldrb r0, [r4] strb r0, [r1] movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankAttacker strb r0, [r1] ldr r1, =gBattlescriptCurrInstr @@ -14124,7 +14124,7 @@ _0803E548: _0803E558: movs r0, 0x2 _0803E55A: - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankTarget strb r0, [r1] b _0803E578 @@ -14173,7 +14173,7 @@ _0803E5C4: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r5] ldrb r1, [r7] ldrb r2, [r5] @@ -14257,7 +14257,7 @@ _0803E684: _0803E694: movs r0, 0x2 _0803E696: - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankTarget strb r0, [r1] ldr r0, =gAbsentBankFlags @@ -14323,7 +14323,7 @@ _0803E730: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r5] ldrb r1, [r6] ldrb r2, [r5] @@ -14341,7 +14341,7 @@ _0803E758: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r5] _0803E76A: ldr r0, =gBattleTypeFlags @@ -14823,8 +14823,8 @@ _0803EBF6: .pool thumb_func_end sub_803E90C - thumb_func_start sub_803EC20 -sub_803EC20: @ 803EC20 + thumb_func_start CanRunFromBattle +CanRunFromBattle: @ 803EC20 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -15069,7 +15069,7 @@ _0803EE24: pop {r1} bx r1 .pool - thumb_func_end sub_803EC20 + thumb_func_end CanRunFromBattle thumb_func_start sub_803EE48 sub_803EE48: @ 803EE48 @@ -15157,7 +15157,7 @@ _0803EF0C: cmp r0, 0 bne _0803EF4C ldrb r0, [r4] - bl sub_803EC20 + bl CanRunFromBattle lsls r0, 24 cmp r0, 0 bne _0803EF98 @@ -15690,7 +15690,7 @@ _0803F46C: _0803F470: movs r0, 0x3 _0803F472: - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 _0803F47A: @@ -15786,7 +15786,7 @@ _0803F4DE: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0803F532: @@ -15933,7 +15933,7 @@ _0803F5F0: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0803F658: @@ -16065,7 +16065,7 @@ _0803F6FE: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0803F762: @@ -16319,8 +16319,8 @@ PrepareStringBattle: @ 803F964 .pool thumb_func_end PrepareStringBattle - thumb_func_start sub_803F988 -sub_803F988: @ 803F988 + thumb_func_start ResetSentPokesToOpponentValue +ResetSentPokesToOpponentValue: @ 803F988 push {r4-r6,lr} movs r3, 0 ldr r0, =gSentPokesToOpponent @@ -16368,7 +16368,7 @@ _0803F9D6: pop {r0} bx r0 .pool - thumb_func_end sub_803F988 + thumb_func_end ResetSentPokesToOpponentValue thumb_func_start sub_803F9EC sub_803F9EC: @ 803F9EC diff --git a/asm/battle_4.s b/asm/battle_4.s index 3a6558a866..0714a0c22b 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,7476 +5,6 @@ .text - thumb_func_start atk6A_removeitem -atk6A_removeitem: @ 804EE58 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r5, =gActiveBank - strb r0, [r5] - ldr r1, =gBattleStruct - ldrb r4, [r5] - lsls r0, r4, 1 - adds r0, 0xB8 - ldr r1, [r1] - adds r1, r0 - ldr r2, =gBattleMons - movs r3, 0x58 - adds r0, r4, 0 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - ldrb r0, [r5] - muls r0, r3 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - ldrb r0, [r5] - muls r0, r3 - adds r2, 0x2E - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk6A_removeitem - - thumb_func_start atk6B_atknameinbuff1 -atk6B_atknameinbuff1: @ 804EEC8 - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - ldr r2, =gBankAttacker - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, =gBattlePartyID - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atk6B_atknameinbuff1 - - thumb_func_start atk6C_lvlbox_display -atk6C_lvlbox_display: @ 804EF04 - push {r4,lr} - sub sp, 0x4 - ldr r0, =gBattleScripting - ldrb r1, [r0, 0x1E] - adds r4, r0, 0 - cmp r1, 0 - bne _0804EF28 - bl sub_804F498 - cmp r0, 0 - beq _0804EF24 - movs r0, 0x3 - b _0804EF26 - .pool -_0804EF24: - movs r0, 0x1 -_0804EF26: - strb r0, [r4, 0x1E] -_0804EF28: - ldrb r0, [r4, 0x1E] - subs r0, 0x1 - cmp r0, 0x9 - bls _0804EF32 - b _0804F0F2 -_0804EF32: - lsls r0, 2 - ldr r1, =_0804EF40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804EF40: - .4byte _0804EF68 - .4byte _0804EF94 - .4byte _0804EFAC - .4byte _0804F000 - .4byte _0804F014 - .4byte _0804F02C - .4byte _0804F014 - .4byte _0804F04C - .4byte _0804F07C - .4byte _0804F0C0 -_0804EF68: - ldr r1, =gUnknown_02022E1E - movs r0, 0x60 - strh r0, [r1] - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - bl ShowBg - bl sub_804F17C - ldr r1, =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0x1E] - b _0804F0F2 - .pool -_0804EF94: - bl sub_804F1CC - lsls r0, 24 - cmp r0, 0 - beq _0804EFA0 - b _0804F0F2 -_0804EFA0: - ldr r1, =gBattleScripting - movs r0, 0x3 - strb r0, [r1, 0x1E] - b _0804F0F2 - .pool -_0804EFAC: - ldr r1, =gUnknown_02022E18 - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_02022E1A - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0 - bl SetBgAttribute - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x80 - str r0, [sp] - movs r0, 0x12 - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0x13 - bl sub_8056A3C - ldr r1, =gBattleScripting - movs r0, 0x4 - strb r0, [r1, 0x1E] - b _0804F0F2 - .pool -_0804F000: - bl sub_804F100 - movs r0, 0xD - bl PutWindowTilemap - movs r0, 0xD - movs r1, 0x3 - bl CopyWindowToVram - b _0804F06A -_0804F014: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0804F0F2 - ldr r0, =gUnknown_02022E1A - strh r1, [r0] - b _0804F06A - .pool -_0804F02C: - ldr r0, =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _0804F0F2 - movs r0, 0x5 - bl PlaySE - bl sub_804F144 - movs r0, 0xD - movs r1, 0x2 - bl CopyWindowToVram - b _0804F06A - .pool -_0804F04C: - ldr r0, =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _0804F0F2 - movs r0, 0x5 - bl PlaySE - movs r0, 0x81 - str r0, [sp] - movs r0, 0x12 - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0x13 - bl sub_8056A3C -_0804F06A: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x1E] - adds r0, 0x1 - strb r0, [r1, 0x1E] - b _0804F0F2 - .pool -_0804F07C: - bl sub_804F344 - lsls r0, 24 - cmp r0, 0 - bne _0804F0F2 - movs r0, 0xE - bl ClearWindowTilemap - movs r0, 0xE - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0xD - bl ClearWindowTilemap - movs r0, 0xD - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x2 - bl ShowBg - ldr r1, =gBattleScripting - movs r0, 0xA - strb r0, [r1, 0x1E] - b _0804F0F2 - .pool -_0804F0C0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0804F0F2 - movs r0, 0 - movs r1, 0x7 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0804F0F2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk6C_lvlbox_display - - thumb_func_start sub_804F100 -sub_804F100: @ 804F100 - push {lr} - sub sp, 0x14 - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - add r1, sp, 0x8 - bl sub_81D388C - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x10] - movs r0, 0xD - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0xD - add r2, sp, 0x8 - movs r3, 0xE - bl sub_81D3640 - add sp, 0x14 - pop {r0} - bx r0 - .pool - thumb_func_end sub_804F100 - - thumb_func_start sub_804F144 -sub_804F144: @ 804F144 - push {lr} - sub sp, 0x10 - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - add r1, sp, 0x4 - bl sub_81D388C - movs r0, 0xF - str r0, [sp] - movs r0, 0xD - add r1, sp, 0x4 - movs r2, 0xE - movs r3, 0xD - bl sub_81D3784 - add sp, 0x10 - pop {r0} - bx r0 - .pool - thumb_func_end sub_804F144 - - thumb_func_start sub_804F17C -sub_804F17C: @ 804F17C - push {lr} - ldr r1, =gUnknown_02022E1E - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_02022E1C - movs r2, 0xD0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, =gUnknown_0831C2C8 - movs r1, 0x60 - movs r2, 0x20 - bl LoadPalette - ldr r1, =gUnknown_0831C2E8 - movs r0, 0xE - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - movs r0, 0xE - bl PutWindowTilemap - movs r0, 0xE - movs r1, 0x3 - bl CopyWindowToVram - bl sub_804F384 - pop {r0} - bx r0 - .pool - thumb_func_end sub_804F17C - - thumb_func_start sub_804F1CC -sub_804F1CC: @ 804F1CC - push {r4,r5,lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _0804F1DC - movs r0, 0x1 - b _0804F216 -_0804F1DC: - ldr r4, =gUnknown_02022E1C - ldrh r1, [r4] - movs r5, 0x80 - lsls r5, 2 - cmp r1, r5 - bne _0804F1F0 - movs r0, 0 - b _0804F216 - .pool -_0804F1F0: - movs r0, 0xD0 - lsls r0, 1 - cmp r1, r0 - bne _0804F1FC - bl sub_804F220 -_0804F1FC: - ldrh r0, [r4] - adds r0, 0x8 - strh r0, [r4] - lsls r0, 16 - ldr r1, =0x01ff0000 - cmp r0, r1 - bls _0804F20C - strh r5, [r4] -_0804F20C: - ldrh r1, [r4] - eors r1, r5 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_0804F216: - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_804F1CC - - thumb_func_start sub_804F220 -sub_804F220: @ 804F220 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r6, =gBattleStruct - ldr r0, [r6] - ldrb r0, [r0, 0x10] - movs r5, 0x64 - muls r0, r5 - ldr r4, =gPlayerParty - adds r0, r4 - movs r1, 0x38 - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, [r6] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - bl GetMonGender - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r6] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - ldr r5, =gStringVar4 - adds r1, r5, 0 - bl GetMonNickname - str r5, [sp] - mov r2, sp - movs r1, 0 - movs r0, 0xE - strb r0, [r2, 0x4] - mov r0, sp - strb r1, [r0, 0x5] - movs r4, 0x20 - strb r4, [r0, 0x6] - strb r1, [r0, 0x7] - strb r4, [r0, 0x8] - strb r1, [r0, 0x9] - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r3, sp - ldrb r2, [r3, 0xC] - subs r1, 0x10 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0xC] - mov r2, sp - movs r0, 0x10 - strb r0, [r2, 0xC] - ldrb r0, [r2, 0xD] - ands r1, r0 - strb r1, [r2, 0xD] - mov r0, sp - strb r4, [r0, 0xD] - movs r1, 0xFF - movs r2, 0 - bl AddTextPrinter - movs r0, 0xF9 - strb r0, [r5] - adds r5, 0x1 - movs r0, 0x5 - strb r0, [r5] - adds r5, 0x1 - adds r4, r5, 0 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - subs r4, r5, r4 - movs r2, 0x4 - subs r2, r4 - lsls r2, 16 - lsrs r2, 16 - movs r1, 0x77 - bl StringFill - adds r5, r0, 0 - cmp r7, 0xFF - beq _0804F320 - cmp r7, 0 - bne _0804F300 - movs r1, 0 - movs r2, 0xC - bl WriteColorChangeControlCode - adds r5, r0, 0 - movs r1, 0x1 - movs r2, 0xD - bl WriteColorChangeControlCode - adds r5, r0, 0 - movs r0, 0xB5 - b _0804F318 - .pool -_0804F300: - adds r0, r5, 0 - movs r1, 0 - movs r2, 0xE - bl WriteColorChangeControlCode - adds r5, r0, 0 - movs r1, 0x1 - movs r2, 0xF - bl WriteColorChangeControlCode - adds r5, r0, 0 - movs r0, 0xB6 -_0804F318: - strb r0, [r5] - adds r5, 0x1 - movs r0, 0xFF - strb r0, [r5] -_0804F320: - mov r0, sp - movs r1, 0xA - strb r1, [r0, 0x7] - strb r1, [r0, 0x9] - movs r1, 0xFF - movs r2, 0 - bl AddTextPrinter - movs r0, 0xE - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804F220 - - thumb_func_start sub_804F344 -sub_804F344: @ 804F344 - push {lr} - ldr r0, =gUnknown_02022E1C - ldrh r1, [r0] - movs r3, 0xD0 - lsls r3, 1 - adds r2, r0, 0 - cmp r1, r3 - bne _0804F35C - movs r0, 0 - b _0804F380 - .pool -_0804F35C: - ldrh r0, [r2] - adds r1, r0, 0 - subs r1, 0x10 - ldr r0, =0x0000019f - cmp r1, r0 - bgt _0804F370 - strh r3, [r2] - b _0804F372 - .pool -_0804F370: - strh r1, [r2] -_0804F372: - ldrh r1, [r2] - movs r0, 0xD0 - lsls r0, 1 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_0804F380: - pop {r1} - bx r1 - thumb_func_end sub_804F344 - - thumb_func_start sub_804F384 -sub_804F384: @ 804F384 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - ldr r0, =gBattleStruct - mov r8, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - movs r6, 0x64 - muls r0, r6 - ldr r5, =gPlayerParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_80D2EDC - str r0, [sp] - ldr r5, =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r5 - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - ldr r1, =0x0000ffff - ands r0, r1 - ldr r1, =0xd75a0000 - orrs r0, r1 - str r0, [sp, 0x4] - adds r0, r4, 0 - bl sub_80D30B0 - str r0, [sp, 0x8] - add r4, sp, 0x8 - ldr r0, [r4, 0x4] - ands r0, r5 - ldr r1, =0x0000d75a - orrs r0, r1 - str r0, [r4, 0x4] - mov r0, sp - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - ldr r0, =gUnknown_0831C3C0 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0xA - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, =gUnknown_02022E1C - ldrh r0, [r0] - strh r0, [r1, 0x30] - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_804F384 - - thumb_func_start sub_804F450 -sub_804F450: @ 804F450 - push {r4,lr} - adds r2, r0, 0 - ldr r0, =gUnknown_02022E1C - ldrh r1, [r2, 0x30] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r2, 0x24] - lsls r1, 16 - cmp r1, 0 - beq _0804F470 - movs r0, 0x1 - strh r0, [r2, 0x2E] - b _0804F48C - .pool -_0804F470: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _0804F48C - adds r0, r2, 0 - bl DestroySprite - ldr r4, =0x0000d75a - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag -_0804F48C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_804F450 - - thumb_func_start sub_804F498 -sub_804F498: @ 804F498 - push {lr} - ldr r3, =gBattlePartyID - ldr r0, =gBattleStruct - ldr r0, [r0] - ldrh r1, [r3] - ldrb r2, [r0, 0x10] - cmp r1, r2 - beq _0804F4BA - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804F4CC - ldrh r0, [r3, 0x4] - cmp r0, r2 - bne _0804F4CC -_0804F4BA: - movs r0, 0x1 - b _0804F4CE - .pool -_0804F4CC: - movs r0, 0 -_0804F4CE: - pop {r1} - bx r1 - thumb_func_end sub_804F498 - - thumb_func_start atk6D_set_sentpokes_values -atk6D_set_sentpokes_values: @ 804F4D4 - push {lr} - bl sub_803F988 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk6D_set_sentpokes_values - - thumb_func_start atk6E_set_atk_to_player0 -atk6E_set_atk_to_player0: @ 804F4EC - push {lr} - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, =gBankAttacker - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk6E_set_atk_to_player0 - - thumb_func_start atk6F_set_visible -atk6F_set_visible: @ 804F50C - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk6F_set_visible - - thumb_func_start atk70_record_ability -atk70_record_ability: @ 804F540 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gActiveBank - strb r0, [r1] - ldrb r0, [r1] - ldr r1, =gLastUsedAbility - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk70_record_ability - - thumb_func_start sub_804F574 -sub_804F574: @ 804F574 - ldr r2, =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x2 - strb r0, [r2, 0x1] - ldr r0, =gMoveToLearn - ldrh r1, [r0] - strb r1, [r2, 0x2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - bx lr - .pool - thumb_func_end sub_804F574 - - thumb_func_start atk71_buffer_move_to_learn -atk71_buffer_move_to_learn: @ 804F59C - push {lr} - bl sub_804F574 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk71_buffer_move_to_learn - - thumb_func_start atk72_jump_if_can_run_frombattle -atk72_jump_if_can_run_frombattle: @ 804F5B4 - push {lr} - ldr r0, =gBank1 - ldrb r0, [r0] - bl sub_803EC20 - lsls r0, 24 - cmp r0, 0 - beq _0804F5E8 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0804F5F0 - .pool -_0804F5E8: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0804F5F0: - pop {r0} - bx r0 - .pool - thumb_func_end atk72_jump_if_can_run_frombattle - - thumb_func_start atk73_hp_thresholds -atk73_hp_thresholds: @ 804F5F8 - push {r4-r6,lr} - ldr r0, =gBattleTypeFlags - ldr r4, [r0] - movs r6, 0x1 - ands r4, r6 - cmp r4, 0 - bne _0804F68E - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gActiveBank - strb r0, [r1] - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r5, [r1, 0x28] - movs r0, 0x64 - muls r0, r5 - ldrh r1, [r1, 0x2C] - bl __divsi3 - cmp r0, 0 - bne _0804F636 - movs r0, 0x1 -_0804F636: - cmp r0, 0x45 - bgt _0804F63E - cmp r5, 0 - bne _0804F65C -_0804F63E: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB1 - strb r4, [r0] - b _0804F68E - .pool -_0804F65C: - cmp r0, 0x27 - ble _0804F670 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB1 - strb r6, [r0] - b _0804F68E - .pool -_0804F670: - cmp r0, 0x9 - ble _0804F684 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB1 - movs r1, 0x2 - b _0804F68C - .pool -_0804F684: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB1 - movs r1, 0x3 -_0804F68C: - strb r1, [r0] -_0804F68E: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk73_hp_thresholds - - thumb_func_start atk74_hp_thresholds2 -atk74_hp_thresholds2: @ 804F6A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gBattleTypeFlags - ldr r7, [r0] - movs r0, 0x1 - mov r8, r0 - ands r7, r0 - cmp r7, 0 - bne _0804F73E - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattleBank - adds r4, r0, 0 - ldr r0, =gActiveBank - strb r4, [r0] - movs r0, 0x1 - eors r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - ldr r1, =gBattleStruct - ldr r6, [r1] - lsrs r0, 23 - adds r0, r6 - adds r0, 0xA8 - ldrb r5, [r0] - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r4, [r0, 0x28] - subs r1, r5, r4 - movs r0, 0x64 - muls r0, r1 - adds r1, r5, 0 - bl __divsi3 - adds r1, r0, 0 - cmp r4, r5 - bcc _0804F71C - adds r0, r6, 0 - adds r0, 0xB1 - strb r7, [r0] - b _0804F73E - .pool -_0804F71C: - cmp r0, 0x1D - bgt _0804F72A - adds r0, r6, 0 - adds r0, 0xB1 - mov r1, r8 - strb r1, [r0] - b _0804F73E -_0804F72A: - cmp r1, 0x45 - bgt _0804F736 - adds r1, r6, 0 - adds r1, 0xB1 - movs r0, 0x2 - b _0804F73C -_0804F736: - adds r1, r6, 0 - adds r1, 0xB1 - movs r0, 0x3 -_0804F73C: - strb r0, [r1] -_0804F73E: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk74_hp_thresholds2 - - thumb_func_start atk75_8026A58 -atk75_8026A58: @ 804F754 - push {lr} - sub sp, 0x4 - ldr r2, =gBankInMenu - ldr r1, =gBankAttacker - ldrb r0, [r1] - strb r0, [r2] - ldr r2, =gBattlePartyID - ldrb r0, [r1] - lsls r0, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r1, =gEnemyParty - adds r0, r1 - ldr r1, =gLastUsedItem - ldrh r1, [r1] - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x1 - str r3, [sp] - movs r3, 0 - bl ExecuteTableBasedItemEffect - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end atk75_8026A58 - - thumb_func_start atk76_various -atk76_various: @ 804F7AC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gActiveBank - strb r0, [r1] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0x1A - bls _0804F7CA - b _0804FD70 -_0804F7CA: - lsls r0, 2 - ldr r1, =_0804F7E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0804F7E0: - .4byte _0804F84C - .4byte _0804F85C - .4byte _0804F8BC - .4byte _0804F8CC - .4byte _0804F8E4 - .4byte _0804F920 - .4byte _0804F958 - .4byte _0804F9E0 - .4byte _0804FA20 - .4byte _0804FACC - .4byte _0804FAE8 - .4byte _0804FB3C - .4byte _0804FB94 - .4byte _0804FC18 - .4byte _0804FC2C - .4byte _0804FC32 - .4byte _0804FC38 - .4byte _0804FC60 - .4byte _0804FC6A - .4byte _0804FC78 - .4byte _0804FC8C - .4byte _0804FCC4 - .4byte _0804FCD8 - .4byte _0804FCF0 - .4byte _0804FD1C - .4byte _0804FD30 - .4byte _0804FD5C -_0804F84C: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl CancelMultiTurnMoves - b _0804FD70 - .pool -_0804F85C: - ldr r1, =gBankAttacker - ldr r4, =gBankTarget - ldrb r0, [r4] - strb r0, [r1] - ldrb r0, [r1] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gSideTimers - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r2 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0804F8A8 - ldr r1, =gBattleMons - ldrb r2, [r2, 0x9] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0804F8A8 - strb r2, [r4] - b _0804FD70 - .pool -_0804F8A8: - ldr r0, =gBankTarget - ldr r1, =gActiveBank - ldrb r1, [r1] - strb r1, [r0] - b _0804FD70 - .pool -_0804F8BC: - bl sub_803BB88 - ldr r1, =gBattleCommunication - strb r0, [r1] - b _0804FD70 - .pool -_0804F8CC: - ldr r0, =gCurrentMove - ldrh r0, [r0] - movs r1, 0 - bl GetMoveTarget - ldr r1, =gBankTarget - strb r0, [r1] - b _0804FD70 - .pool -_0804F8E4: - ldr r2, =gHitMarker - ldr r1, =gBitTable - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 28 - ldr r2, [r2] - ands r2, r0 - cmp r2, 0 - beq _0804F914 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] - b _0804FD70 - .pool -_0804F914: - ldr r0, =gBattleCommunication - strb r2, [r0] - b _0804FD70 - .pool -_0804F920: - ldr r4, =gSpecialStatuses - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _0804FD70 - .pool -_0804F958: - ldr r4, =gBattlePartyID - ldr r1, =gBattleStruct - ldr r0, [r1] - ldrh r3, [r4] - ldrb r2, [r0, 0x10] - adds r6, r1, 0 - cmp r3, r2 - beq _0804F974 - ldrh r0, [r4, 0x4] - cmp r0, r2 - beq _0804F970 - b _0804FD70 -_0804F970: - cmp r3, r0 - bne _0804F988 -_0804F974: - ldr r1, =gActiveBank - movs r0, 0 - b _0804F98C - .pool -_0804F988: - ldr r1, =gActiveBank - movs r0, 0x2 -_0804F98C: - strb r0, [r1] - adds r5, r1, 0 - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, 0xC8 - ldr r1, [r6] - adds r4, r1, r0 - movs r3, 0 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - ldrh r2, [r4] - cmp r0, r2 - beq _0804F9CC - adds r6, r5, 0 - movs r5, 0x58 - adds r2, r1, 0 -_0804F9B4: - adds r3, 0x1 - cmp r3, 0x3 - bgt _0804F9CC - lsls r1, r3, 1 - ldrb r0, [r6] - muls r0, r5 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - ldrh r1, [r4] - cmp r0, r1 - bne _0804F9B4 -_0804F9CC: - cmp r3, 0x4 - beq _0804F9D2 - b _0804FD70 -_0804F9D2: - movs r0, 0 - strh r0, [r4] - b _0804FD70 - .pool -_0804F9E0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xB - ands r0, r1 - cmp r0, 0x8 - beq _0804F9EE - b _0804FD70 -_0804F9EE: - ldr r1, =gBattleMons - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _0804F9F8 - b _0804FD70 -_0804F9F8: - adds r0, r1, 0 - adds r0, 0x80 - ldrh r0, [r0] - cmp r0, 0 - bne _0804FA04 - b _0804FD70 -_0804FA04: - ldr r0, =gHitMarker - ldr r1, [r0] - ldr r2, =0xffbfffff - ands r1, r2 - str r1, [r0] - b _0804FD70 - .pool -_0804FA20: - ldr r2, =gBattleCommunication - mov r8, r2 - movs r0, 0 - strb r0, [r2] - ldr r1, =gBattleScripting - ldr r6, =gActiveBank - ldrb r0, [r2, 0x1] - strb r0, [r6] - strb r0, [r1, 0x17] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r7, r0, 0 - adds r7, 0x92 - ldrb r3, [r7] - ldr r1, =gBitTable - ldrb r2, [r6] - lsls r0, r2, 2 - adds r0, r1 - ldr r5, [r0] - adds r0, r3, 0 - ands r0, r5 - cmp r0, 0 - beq _0804FA50 - b _0804FD70 -_0804FA50: - ldr r4, =gBattleMons - movs r0, 0x58 - mov r12, r0 - mov r1, r12 - muls r1, r2 - adds r2, r1, 0 - adds r1, r2, r4 - ldrh r0, [r1, 0x2C] - lsrs r0, 1 - ldrh r1, [r1, 0x28] - cmp r0, r1 - bcs _0804FA6A - b _0804FD70 -_0804FA6A: - cmp r1, 0 - bne _0804FA70 - b _0804FD70 -_0804FA70: - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0804FA82 - b _0804FD70 -_0804FA82: - orrs r3, r5 - strb r3, [r7] - movs r0, 0x1 - mov r2, r8 - strb r0, [r2] - ldrb r0, [r6] - mov r1, r12 - muls r1, r0 - adds r0, r1, 0 - adds r1, r4, 0 - adds r1, 0x48 - adds r0, r1 - ldr r0, [r0] - bl GetNatureFromPersonality - ldr r1, =gUnknown_0831C4F8 - lsls r0, 24 - lsrs r0, 24 - adds r0, r1 - ldrb r0, [r0] - mov r2, r8 - strb r0, [r2, 0x5] - b _0804FD70 - .pool -_0804FACC: - ldr r4, =gBattleCommunication - adds r0, r4, 0 - bl sub_81A5258 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _0804FADE - b _0804FD78 -_0804FADE: - strb r3, [r4, 0x1] - b _0804FD70 - .pool -_0804FAE8: - ldr r0, =gBattleMons - adds r0, 0x80 - movs r1, 0 - strh r1, [r0] - ldr r2, =gHitMarker - ldr r3, =gBitTable - ldr r1, [r3, 0x4] - lsls r1, 28 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r0, =gBattleStruct - ldr r2, [r0] - ldr r0, =0x000002a1 - adds r2, r0 - ldr r0, =gBattlePartyID - ldrh r0, [r0, 0x2] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r1, =gDisableStructs - adds r1, 0x34 - ldrb r0, [r1] - movs r2, 0x2 - b _0804FBF4 - .pool -_0804FB3C: - ldr r1, =gBattleMons - movs r0, 0 - strh r0, [r1, 0x28] - ldr r2, =gHitMarker - ldr r3, =gBitTable - ldr r1, [r3] - lsls r1, 28 - ldr r0, [r2] - orrs r0, r1 - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r2] - ldr r0, =gBattleStruct - ldr r2, [r0] - movs r1, 0xA8 - lsls r1, 2 - adds r2, r1 - ldr r0, =gBattlePartyID - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, =gDisableStructs - ldrb r0, [r2, 0x18] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x18] - b _0804FD70 - .pool -_0804FB94: - ldr r0, =gBattleMons - movs r1, 0 - strh r1, [r0, 0x28] - adds r0, 0x80 - strh r1, [r0] - ldr r2, =gHitMarker - ldr r3, =gBitTable - ldr r0, [r3] - lsls r0, 28 - ldr r1, [r2] - orrs r1, r0 - ldr r0, [r3, 0x4] - lsls r0, 28 - orrs r1, r0 - movs r0, 0x80 - lsls r0, 15 - orrs r1, r0 - str r1, [r2] - ldr r5, =gBattleStruct - ldr r2, [r5] - movs r0, 0xA8 - lsls r0, 2 - adds r2, r0 - ldr r4, =gBattlePartyID - ldrh r0, [r4] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, [r5] - ldr r1, =0x000002a1 - adds r2, r1 - ldrh r0, [r4, 0x2] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r1, =gDisableStructs - ldrb r0, [r1, 0x18] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x18] - adds r1, 0x34 - ldrb r0, [r1] -_0804FBF4: - orrs r0, r2 - strb r0, [r1] - b _0804FD70 - .pool -_0804FC18: - movs r0, 0 - bl sub_8033E10 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - b _0804FD70 - .pool -_0804FC2C: - bl sub_81A5BF8 - b _0804FD70 -_0804FC32: - bl sub_81A5D44 - b _0804FD70 -_0804FC38: - ldr r1, =gRefereeStringsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, =gDisplayedStringBattle - movs r1, 0x16 - bl sub_814F9EC - b _0804FD70 - .pool -_0804FC60: - movs r0, 0x16 - bl IsTextPrinterActive - lsls r0, 16 - b _0804FD24 -_0804FC6A: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _0804FC76 - b _0804FD78 -_0804FC76: - b _0804FD70 -_0804FC78: - ldr r4, =gActiveBank - movs r0, 0x1 - strb r0, [r4] - ldr r0, =gBattleMons - adds r0, 0x58 - b _0804FCA2 - .pool -_0804FC8C: - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0x3 - bls _0804FD70 - ldr r4, =gActiveBank - movs r0, 0x3 - strb r0, [r4] - ldr r0, =gBattleMons - movs r2, 0x84 - lsls r2, 1 - adds r0, r2 -_0804FCA2: - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0804FD70 - movs r0, 0 - movs r1, 0 - bl EmitReturnPokeToBall - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0804FD70 - .pool -_0804FCC4: - ldr r0, =gMPlay_BGM - ldr r1, =0x0000ffff - movs r2, 0x55 - bl m4aMPlayVolumeControl - b _0804FD70 - .pool -_0804FCD8: - ldr r0, =gMPlay_BGM - ldr r1, =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - b _0804FD70 - .pool -_0804FCF0: - ldr r0, =gBattleStruct - ldr r2, [r0] - ldr r0, =0x000002a2 - adds r2, r0 - ldr r1, =gBitTable - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - b _0804FD70 - .pool -_0804FD1C: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl sub_805725C -_0804FD24: - cmp r0, 0 - bne _0804FD78 - b _0804FD70 - .pool -_0804FD30: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0804FD50 - ldr r1, =gBattleOutcome - movs r0, 0x5 - strb r0, [r1] - b _0804FD70 - .pool -_0804FD50: - ldr r1, =gBattleOutcome - movs r0, 0xA - strb r0, [r1] - b _0804FD70 - .pool -_0804FD5C: - movs r1, 0xCE - lsls r1, 1 - movs r0, 0 - movs r2, 0x1 - bl EmitPlaySound - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_0804FD70: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] -_0804FD78: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk76_various - - thumb_func_start atk77_setprotect -atk77_setprotect: @ 804FD8C - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0x1 - ldr r2, =gUnknown_02024260 - ldr r1, =gBankAttacker - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldrh r0, [r0] - mov r8, r1 - ldr r7, =gDisableStructs - cmp r0, 0xB6 - beq _0804FDBC - cmp r0, 0xC5 - beq _0804FDBC - cmp r0, 0xCB - beq _0804FDBC - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r7 - movs r1, 0 - strb r1, [r0, 0x8] -_0804FDBC: - ldr r0, =gCurrentMoveTurn - ldrb r1, [r0] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _0804FDCC - movs r6, 0 -_0804FDCC: - ldr r2, =sProtectSuccessRates - mov r5, r8 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r4, [r0, 0x8] - lsls r4, 1 - adds r4, r2 - bl Random - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bcc _0804FE80 - cmp r6, 0 - beq _0804FE80 - ldr r4, =gBattleMoves - ldr r3, =gCurrentMove - ldrh r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - cmp r0, 0x6F - bne _0804FE1C - ldr r0, =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] -_0804FE1C: - ldrh r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - cmp r0, 0x74 - bne _0804FE42 - ldr r0, =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_0804FE42: - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - b _0804FEA2 - .pool -_0804FE80: - ldr r2, =gDisableStructs - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x8] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_0804FEA2: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk77_setprotect - - thumb_func_start atk78_faintifabilitynotdamp -atk78_faintifabilitynotdamp: @ 804FEC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0804FFCC - ldr r1, =gBankTarget - strb r2, [r1] - ldr r0, =gNoOfAllBanks - ldrb r3, [r0] - adds r5, r1, 0 - mov r8, r0 - ldr r6, =gBattleMons - cmp r2, r3 - bcs _0804FF14 - adds r0, r6, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x6 - beq _0804FF14 - adds r2, r3, 0 - adds r4, r6, 0 - movs r3, 0x58 -_0804FEF8: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r2 - bcs _0804FF14 - ldrb r0, [r5] - muls r0, r3 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0804FEF8 -_0804FF14: - ldrb r0, [r5] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bne _0804FFB0 - ldr r4, =gActiveBank - ldr r7, =gBankAttacker - ldrb r0, [r7] - strb r0, [r4] - ldr r2, =gBattleMoveDamage - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r6 - ldrh r0, [r0, 0x28] - str r0, [r2] - ldr r1, =0x00007fff - movs r0, 0 - bl EmitHealthBarUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0 - strb r0, [r5] - mov r2, r8 - ldrb r0, [r2] - cmp r0, 0 - beq _0804FFCC - adds r3, r5, 0 - ldrb r5, [r7] - ldr r7, =gBitTable - adds r4, r0, 0 - ldr r6, =gAbsentBankFlags -_0804FF60: - ldrb r2, [r3] - cmp r2, r5 - beq _0804FF76 - ldrb r0, [r6] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r7 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _0804FFCC -_0804FF76: - adds r0, r2, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcc _0804FF60 - b _0804FFCC - .pool -_0804FFB0: - ldr r1, =gLastUsedAbility - movs r0, 0x6 - strb r0, [r1] - ldrb r0, [r5] - movs r1, 0x58 - muls r1, r0 - adds r1, r6 - adds r1, 0x20 - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB560 - str r0, [r1] -_0804FFCC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk78_faintifabilitynotdamp - - thumb_func_start atk79_setatkhptozero -atk79_setatkhptozero: @ 804FFE4 - push {r4,lr} - sub sp, 0x4 - ldr r0, =gBattleExecBuffer - ldr r3, [r0] - cmp r3, 0 - bne _08050028 - ldr r4, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r1, =gBattleMons - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r0, r1 - strh r3, [r0, 0x28] - ldrb r0, [r4] - muls r0, r2 - adds r1, 0x28 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2A - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08050028: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk79_setatkhptozero - - thumb_func_start atk7A_jumpwhiletargetvalid -atk7A_jumpwhiletargetvalid: @ 8050044 - push {r4-r7,lr} - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r4, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r4, r0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - adds r7, r3, 0 - cmp r0, 0 - beq _080500DC - ldr r0, =gBankTarget - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r2, =gBankAttacker - lsls r1, 24 - lsrs r1, 24 - adds r3, r0, 0 - ldr r6, =gAbsentBankFlags - ldr r5, =gBitTable - ldr r0, =gNoOfAllBanks - mov r12, r0 - ldrb r0, [r2] - cmp r1, r0 - bne _0805009A -_0805008A: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r2] - cmp r0, r1 - beq _0805008A -_0805009A: - ldrb r0, [r6] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _0805008A - ldrb r0, [r3] - mov r2, r12 - ldrb r2, [r2] - cmp r0, r2 - bcc _080500D8 - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - b _080500E0 - .pool -_080500D8: - str r4, [r7] - b _080500E0 -_080500DC: - adds r0, r2, 0x5 - str r0, [r3] -_080500E0: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk7A_jumpwhiletargetvalid - - thumb_func_start atk7B_healhalfHP_if_possible -atk7B_healhalfHP_if_possible: @ 80500E8 - push {r4-r6,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r1, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldrb r0, [r1, 0x5] - ldr r3, =gBankTarget - cmp r0, 0x1 - bne _08050110 - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r3] -_08050110: - ldr r1, =gBattleMoveDamage - ldr r6, =gBattleMons - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _0805012A - movs r0, 0x1 - str r0, [r1] -_0805012A: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldrb r0, [r3] - muls r0, r5 - adds r0, r6 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - bne _08050158 - str r2, [r4] - b _0805015E - .pool -_08050158: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_0805015E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk7B_healhalfHP_if_possible - - thumb_func_start atk7C_8025508 -atk7C_8025508: @ 8050164 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r2, =gNoOfAllBanks - ldr r0, =gBankAttacker - mov r10, r0 - movs r1, 0 - add r0, sp, 0x4 -_0805017A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, sp - bge _0805017A - movs r1, 0 - mov r8, r1 - movs r5, 0 - ldrb r1, [r2] - cmp r5, r1 - bge _080501D0 - ldr r0, =gBankAttacker - ldrb r6, [r0] - ldr r2, =0x0000ffff - mov r9, r2 - lsls r4, r6, 3 - mov r2, sp - ldr r0, =gBattleStruct - mov r12, r0 - adds r7, r1, 0 -_080501A0: - cmp r5, r6 - beq _080501C8 - mov r1, r12 - ldr r0, [r1] - adds r0, r4, r0 - adds r1, r0, 0 - adds r1, 0xE0 - ldrb r3, [r1] - adds r0, 0xE1 - ldrb r0, [r0] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - beq _080501C8 - cmp r3, r9 - beq _080501C8 - strh r3, [r2] - adds r2, 0x2 - movs r0, 0x1 - add r8, r0 -_080501C8: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, r7 - blt _080501A0 -_080501D0: - mov r1, r10 - ldrb r0, [r1] - ldr r2, =gBattleStruct - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r1, r0, 0 - adds r1, 0x98 - ldrb r3, [r1] - adds r0, 0x99 - ldrb r0, [r0] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - beq _08050220 - ldr r0, =0x0000ffff - cmp r3, r0 - beq _08050220 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, =gCurrentMove - strh r3, [r4] - b _0805024A - .pool -_08050220: - mov r0, r8 - cmp r0, 0 - beq _08050290 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - bl __modsi3 - adds r5, r0, 0 - ldr r4, =gCurrentMove - lsls r0, r5, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4] -_0805024A: - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, =gBankTarget - strb r0, [r1] - ldr r5, =gBattlescriptCurrInstr - ldr r3, =gBattleScriptsForMoveEffects - ldr r2, =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r5] - b _080502AE - .pool -_08050290: - ldr r2, =gSpecialStatuses - mov r0, r10 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080502AE: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk7C_8025508 - - thumb_func_start atk7D_set_rain -atk7D_set_rain: @ 80502C8 - push {lr} - ldr r2, =gBattleWeather - ldrh r0, [r2] - movs r1, 0x7 - ands r1, r0 - cmp r1, 0 - beq _080502F4 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08050304 - .pool -_080502F4: - movs r0, 0x1 - strh r0, [r2] - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] - ldr r0, =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_08050304: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk7D_set_rain - - thumb_func_start atk7E_setreflect -atk7E_setreflect: @ 805031C - push {r4-r6,lr} - ldr r6, =gBankAttacker - ldrb r0, [r6] - bl GetBankIdentity - ldr r4, =gSideAffecting - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r1, [r1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0805035C - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0 - b _080503D0 - .pool -_0805035C: - ldrb r0, [r6] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r6] - bl GetBankIdentity - ldr r4, =gSideTimers - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0] - ldrb r0, [r6] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r6] - strb r1, [r0, 0x1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - beq _080503CC - movs r0, 0x1 - bl CountAliveMonsInBattle - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _080503CC - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] - b _080503D2 - .pool -_080503CC: - ldr r1, =gBattleCommunication - movs r0, 0x1 -_080503D0: - strb r0, [r1, 0x5] -_080503D2: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk7E_setreflect - - thumb_func_start atk7F_setseeded -atk7F_setseeded: @ 80503E8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r7, =gBattleMoveFlags - ldrb r5, [r7] - movs r0, 0x29 - ands r0, r5 - cmp r0, 0 - bne _0805041A - ldr r0, =gStatuses3 - mov r9, r0 - ldr r1, =gBankTarget - mov r8, r1 - ldrb r4, [r1] - lsls r0, r4, 2 - mov r2, r9 - adds r6, r0, r2 - ldr r2, [r6] - movs r0, 0x4 - mov r12, r0 - adds r3, r2, 0 - ands r3, r0 - cmp r3, 0 - beq _08050438 -_0805041A: - movs r0, 0x1 - orrs r0, r5 - strb r0, [r7] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08050488 - .pool -_08050438: - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xC - beq _08050454 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xC - bne _0805046C -_08050454: - movs r0, 0x1 - orrs r0, r5 - strb r0, [r7] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08050488 - .pool -_0805046C: - ldr r0, =gBankAttacker - ldrb r0, [r0] - orrs r2, r0 - str r2, [r6] - mov r2, r8 - ldrb r1, [r2] - lsls r1, 2 - add r1, r9 - ldr r0, [r1] - mov r2, r12 - orrs r0, r2 - str r0, [r1] - ldr r0, =gBattleCommunication - strb r3, [r0, 0x5] -_08050488: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk7F_setseeded - - thumb_func_start atk80_manipulatedamage -atk80_manipulatedamage: @ 80504A8 - push {r4,lr} - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - ldrb r2, [r0, 0x1] - adds r4, r1, 0 - cmp r2, 0x1 - beq _080504D8 - cmp r2, 0x1 - bgt _080504C4 - cmp r2, 0 - beq _080504CA - b _08050518 - .pool -_080504C4: - cmp r2, 0x2 - beq _08050510 - b _08050518 -_080504CA: - ldr r1, =gBattleMoveDamage - ldr r0, [r1] - negs r0, r0 - b _08050516 - .pool -_080504D8: - ldr r3, =gBattleMoveDamage - ldr r0, [r3] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - str r0, [r3] - cmp r0, 0 - bne _080504EA - str r2, [r3] -_080504EA: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r1, r0, 1 - ldr r0, [r3] - cmp r1, r0 - bge _08050518 - str r1, [r3] - b _08050518 - .pool -_08050510: - ldr r1, =gBattleMoveDamage - ldr r0, [r1] - lsls r0, 1 -_08050516: - str r0, [r1] -_08050518: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk80_manipulatedamage - - thumb_func_start atk81_setrest -atk81_setrest: @ 8050528 - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, =gBattlescriptCurrInstr - mov r12, r0 - ldr r1, [r0] - ldrb r6, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r6, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r6, r0 - ldr r5, =gActiveBank - ldr r2, =gBankTarget - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r5] - ldr r4, =gBattleMoveDamage - ldr r1, =gBattleMons - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - adds r0, r1 - ldrh r0, [r0, 0x2C] - negs r0, r0 - str r0, [r4] - ldrb r0, [r2] - adds r4, r0, 0 - muls r4, r3 - adds r0, r4, r1 - ldrh r3, [r0, 0x28] - adds r7, r5, 0 - adds r5, r2, 0 - adds r2, r1, 0 - ldrh r0, [r0, 0x2C] - cmp r3, r0 - bne _08050598 - mov r0, r12 - str r6, [r0] - b _080505E8 - .pool -_08050598: - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0xF8 - ands r1, r0 - cmp r1, 0 - beq _080505B4 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080505B8 - .pool -_080505B4: - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] -_080505B8: - ldrb r0, [r5] - movs r3, 0x58 - muls r0, r3 - adds r2, 0x4C - adds r0, r2 - movs r1, 0x3 - str r1, [r0] - ldrb r0, [r7] - muls r0, r3 - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080505E8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk81_setrest - - thumb_func_start atk82_jumpifnotfirstturn -atk82_jumpifnotfirstturn: @ 80505F8 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r4, [r5] - ldrb r3, [r4, 0x1] - ldrb r0, [r4, 0x2] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r4, 0x3] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r4, 0x4] - lsls r0, 24 - orrs r3, r0 - ldr r2, =gDisableStructs - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _08050638 - adds r0, r4, 0x5 - str r0, [r5] - b _0805063A - .pool -_08050638: - str r3, [r5] -_0805063A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end atk82_jumpifnotfirstturn - - thumb_func_start atk83_nop -atk83_nop: @ 8050640 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atk83_nop - - thumb_func_start UproarWakeUpCheck -UproarWakeUpCheck: @ 8050650 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - mov r8, r0 - cmp r2, r1 - bge _080506C4 - ldr r0, =gBattleMons - mov r12, r0 - movs r0, 0x58 - muls r0, r3 - add r0, r12 - adds r5, r0, 0 - adds r5, 0x20 - adds r4, r1, 0 - movs r3, 0 - ldr r6, =gBattleScripting - ldr r7, =gBattleCommunication -_0805067C: - mov r0, r12 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - beq _080506BC - ldrb r0, [r5] - cmp r0, 0x2B - beq _080506BC - movs r3, 0 - strb r2, [r6, 0x17] - ldr r1, =gBankTarget - ldrb r0, [r1] - cmp r0, 0xFF - beq _080506DC - cmp r0, r2 - beq _080506D0 - movs r0, 0x1 - strb r0, [r7, 0x5] - b _080506C4 - .pool -_080506BC: - adds r3, 0x58 - adds r2, 0x1 - cmp r2, r4 - blt _0805067C -_080506C4: - mov r1, r8 - ldrb r1, [r1] - cmp r2, r1 - beq _080506E0 - movs r0, 0x1 - b _080506E2 -_080506D0: - ldr r0, =gBattleCommunication - strb r3, [r0, 0x5] - b _080506C4 - .pool -_080506DC: - strb r2, [r1] - b _080506C4 -_080506E0: - movs r0, 0 -_080506E2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end UproarWakeUpCheck - - thumb_func_start atk84_jump_if_cant_sleep -atk84_jump_if_cant_sleep: @ 80506EC - push {r4-r6,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r1, [r5] - ldrb r4, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r4, r0 - ldr r6, =gBankTarget - ldrb r0, [r6] - bl UproarWakeUpCheck - lsls r0, 24 - cmp r0, 0 - beq _08050720 - str r4, [r5] - b _08050762 - .pool -_08050720: - ldr r1, =gBattleMons - ldrb r3, [r6] - movs r0, 0x58 - muls r0, r3 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, r0, 0 - cmp r1, 0xF - beq _08050738 - cmp r1, 0x48 - bne _0805075C -_08050738: - ldr r2, =gLastUsedAbility - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - str r4, [r5] - ldrb r1, [r2] - adds r0, r3, 0 - bl RecordAbilityBattle - b _08050762 - .pool -_0805075C: - ldr r0, [r5] - adds r0, 0x5 - str r0, [r5] -_08050762: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk84_jump_if_cant_sleep - - thumb_func_start atk85_stockpile -atk85_stockpile: @ 8050768 - push {r4,r5,lr} - ldr r5, =gDisableStructs - ldr r4, =gBankAttacker - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x9] - cmp r0, 0x3 - bne _080507A0 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080507CA - .pool -_080507A0: - adds r0, 0x1 - movs r3, 0 - strb r0, [r1, 0x9] - ldr r2, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - strb r0, [r2, 0x3] - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x9] - strb r0, [r2, 0x4] - movs r0, 0xFF - strb r0, [r2, 0x5] - ldr r0, =gBattleCommunication - strb r3, [r0, 0x5] -_080507CA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk85_stockpile - - thumb_func_start atk86_stockpiletobasedamage -atk86_stockpiletobasedamage: @ 80507E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r3, =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldr r7, =gDisableStructs - ldr r6, =gBankAttacker - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _08050828 - str r2, [r3] - b _080508CA - .pool -_08050828: - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - beq _080508B0 - ldr r0, =gBattleMoveDamage - mov r8, r0 - ldr r4, =gSideAffecting - ldr r5, =gBankTarget - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldrb r0, [r6] - movs r4, 0x58 - muls r0, r4 - ldr r2, =gBattleMons - adds r0, r2 - ldrb r1, [r5] - muls r1, r4 - adds r1, r2 - ldr r2, =gCurrentMove - ldrh r2, [r2] - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - ldrb r4, [r6] - str r4, [sp, 0x8] - ldrb r4, [r5] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldrb r2, [r6] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r7 - ldrb r1, [r1, 0x9] - adds r3, r0, 0 - muls r3, r1 - mov r1, r8 - str r3, [r1] - ldr r2, =gBattleScripting - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x9] - strb r0, [r2, 0x18] - ldr r1, =gProtectStructs - ldrb r0, [r6] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _080508B0 - lsls r0, r3, 4 - subs r0, r3 - movs r1, 0xA - bl __divsi3 - mov r1, r8 - str r0, [r1] -_080508B0: - ldr r2, =gDisableStructs - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080508CA: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk86_stockpiletobasedamage - - thumb_func_start atk87_stockpiletohpheal -atk87_stockpiletohpheal: @ 8050904 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, =gBattlescriptCurrInstr - ldr r1, [r7] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldr r0, =gDisableStructs - mov r8, r0 - ldr r6, =gBankAttacker - ldrb r3, [r6] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - mov r1, r8 - adds r4, r0, r1 - ldrb r1, [r4, 0x9] - cmp r1, 0 - bne _08050954 - str r2, [r7] - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] - b _080509D0 - .pool -_08050954: - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, r0, r1 - ldrh r0, [r1, 0x2C] - ldrh r3, [r1, 0x28] - cmp r0, r3 - bne _08050984 - movs r0, 0 - strb r0, [r4, 0x9] - str r2, [r7] - ldr r1, =gBankTarget - ldrb r0, [r6] - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080509D0 - .pool -_08050984: - ldr r5, =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - ldrb r1, [r4, 0x9] - movs r2, 0x3 - subs r2, r1 - movs r4, 0x1 - adds r1, r4, 0 - lsls r1, r2 - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _080509A0 - str r4, [r5] -_080509A0: - ldr r0, [r5] - negs r0, r0 - str r0, [r5] - ldr r3, =gBattleScripting - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x9] - movs r2, 0 - strb r0, [r3, 0x18] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - strb r2, [r0, 0x9] - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - ldr r1, =gBankTarget - ldrb r0, [r6] - strb r0, [r1] -_080509D0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk87_stockpiletohpheal - - thumb_func_start atk88_negativedamage -atk88_negativedamage: @ 80509E8 - push {lr} - ldr r2, =gBattleMoveDamage - ldr r0, =gHpDealt - ldr r0, [r0] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - negs r0, r0 - str r0, [r2] - cmp r0, 0 - bne _08050A04 - movs r0, 0x1 - negs r0, r0 - str r0, [r2] -_08050A04: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk88_negativedamage - - thumb_func_start ChangeStatBuffs -ChangeStatBuffs: @ 8050A1C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r3 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0 - mov r9, r0 - mov r10, r0 - movs r0, 0x40 - ands r0, r5 - cmp r0, 0 - beq _08050A50 - ldr r0, =gActiveBank - ldr r1, =gBankAttacker - b _08050A54 - .pool -_08050A50: - ldr r0, =gActiveBank - ldr r1, =gBankTarget -_08050A54: - ldrb r1, [r1] - strb r1, [r0] - movs r0, 0xBF - ands r5, r0 - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _08050A6E - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08050A6E: - movs r0, 0x7F - ands r5, r0 - movs r0, 0x20 - ands r0, r5 - cmp r0, 0 - beq _08050A84 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_08050A84: - movs r0, 0xDF - ands r5, r0 - ldr r1, =gBattleTextBuff1 - movs r4, 0 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - strb r7, [r1, 0x2] - movs r3, 0x1 - negs r3, r3 - mov r12, r3 - movs r0, 0xFF - strb r0, [r1, 0x3] - lsls r0, r6, 24 - cmp r0, 0 - blt _08050AA8 - b _08050D8C -_08050AA8: - ldr r4, =gSideTimers - ldr r1, =gActiveBank - ldrb r0, [r1] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08050B48 - mov r2, r9 - cmp r2, 0 - bne _08050B48 - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08050B78 - cmp r5, 0x1 - bne _08050B68 - ldr r4, =gSpecialStatuses - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _08050B10 - ldr r0, =gBattlescriptCurrInstr - mov r4, r8 - str r4, [r0] - b _08050B68 - .pool -_08050B10: - mov r0, r8 - bl BattleScriptPush - ldr r1, =gBattleScripting - ldr r6, =gActiveBank - ldrb r0, [r6] - strb r0, [r1, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAE03 - str r0, [r1] - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08050B68 - .pool -_08050B48: - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08050B78 - mov r0, r10 - cmp r0, 0x1 - beq _08050B78 - movs r0, 0 - bl JumpIfMoveAffectedByProtect - lsls r0, 24 - cmp r0, 0 - beq _08050B78 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D9F1C - str r0, [r1] -_08050B68: - movs r0, 0x1 - b _08050E80 - .pool -_08050B78: - ldr r2, =gBattleMons - ldr r1, =gActiveBank - ldrb r3, [r1] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r10, r2 - cmp r0, 0x1D - beq _08050B94 - cmp r0, 0x49 - bne _08050C2C -_08050B94: - mov r0, r9 - cmp r0, 0 - bne _08050C2C - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08050C2C - cmp r5, 0x1 - bne _08050B68 - ldr r4, =gSpecialStatuses - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _08050BD4 - ldr r0, =gBattlescriptCurrInstr - mov r1, r8 - str r1, [r0] - b _08050B68 - .pool -_08050BD4: - mov r0, r8 - bl BattleScriptPush - ldr r1, =gBattleScripting - ldr r2, =gActiveBank - ldrb r0, [r2] - strb r0, [r1, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB5C7 - str r0, [r1] - ldr r1, =gLastUsedAbility - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r6, =gActiveBank - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08050B68 - .pool -_08050C2C: - ldr r1, =gActiveBank - ldrb r0, [r1] - movs r4, 0x58 - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x33 - bne _08050C8C - mov r2, r9 - cmp r2, 0 - bne _08050C8C - cmp r7, 0x6 - bne _08050C8C - cmp r5, 0x1 - bne _08050B68 - mov r0, r8 - bl BattleScriptPush - ldr r1, =gBattleScripting - ldr r3, =gActiveBank - ldrb r0, [r3] - strb r0, [r1, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB62F - str r0, [r1] - ldr r1, =gLastUsedAbility - ldrb r0, [r3] - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r3] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08050B68 - .pool -_08050C8C: - ldr r4, =gActiveBank - ldrb r0, [r4] - movs r4, 0x58 - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x34 - bne _08050CF0 - mov r0, r9 - cmp r0, 0 - bne _08050CF0 - cmp r7, 0x1 - bne _08050CF0 - cmp r5, 0x1 - beq _08050CAE - b _08050B68 -_08050CAE: - mov r0, r8 - bl BattleScriptPush - ldr r1, =gBattleScripting - ldr r2, =gActiveBank - ldrb r0, [r2] - strb r0, [r1, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB62F - str r0, [r1] - ldr r1, =gLastUsedAbility - ldrb r0, [r2] - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08050B68 - .pool -_08050CF0: - ldr r3, =gActiveBank - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x13 - bne _08050D08 - cmp r5, 0 - bne _08050D08 - b _08050B68 -_08050D08: - lsls r0, r6, 24 - asrs r0, 28 - movs r1, 0x7 - ands r0, r1 - negs r0, r0 - lsls r0, 24 - ldr r3, =gBattleTextBuff2 - movs r4, 0 - movs r1, 0xFD - strb r1, [r3] - movs r2, 0x1 - lsrs r6, r0, 24 - asrs r0, 24 - subs r1, 0xFF - cmp r0, r1 - bne _08050D32 - strb r4, [r3, 0x1] - movs r0, 0xD3 - strb r0, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0x4 -_08050D32: - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xD4 - strb r0, [r1] - adds r2, 0x1 - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r4, =gActiveBank - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r7, r0 - mov r1, r10 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08050DE2 - movs r1, 0 - ldr r0, =gBankTarget - ldrb r0, [r0] - ldr r3, =gBattleCommunication - mov r8, r3 - cmp r0, r2 - bne _08050D76 - movs r1, 0x1 -_08050D76: - mov r4, r8 - strb r1, [r4, 0x5] - b _08050E10 - .pool -_08050D8C: - asrs r6, r0, 28 - movs r0, 0x7 - ands r6, r0 - ldr r3, =gBattleTextBuff2 - strb r2, [r3] - movs r2, 0x1 - cmp r6, 0x2 - bne _08050DA6 - strb r4, [r3, 0x1] - movs r0, 0xD1 - strb r0, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0x4 -_08050DA6: - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xD2 - strb r0, [r1] - adds r2, 0x1 - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - ldrb r0, [r1] - mov r2, r12 - orrs r0, r2 - strb r0, [r1] - ldr r2, =gBattleMons - ldr r4, =gActiveBank - ldrb r3, [r4] - movs r0, 0x58 - muls r0, r3 - adds r0, r7, r0 - adds r1, r2, 0 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - mov r10, r2 - cmp r0, 0xC - bne _08050DFC -_08050DE2: - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - mov r8, r1 - b _08050E10 - .pool -_08050DFC: - movs r1, 0 - ldr r0, =gBankTarget - ldrb r0, [r0] - ldr r2, =gBattleCommunication - mov r8, r2 - cmp r0, r3 - bne _08050E0C - movs r1, 0x1 -_08050E0C: - mov r3, r8 - strb r1, [r3, 0x5] -_08050E10: - ldr r2, =gActiveBank - ldrb r0, [r2] - movs r4, 0x58 - adds r1, r0, 0 - muls r1, r4 - adds r1, r7, r1 - mov r3, r10 - adds r3, 0x18 - adds r1, r3 - lsls r0, r6, 24 - asrs r0, 24 - ldrb r6, [r1] - adds r0, r6 - strb r0, [r1] - ldrb r0, [r2] - muls r0, r4 - adds r0, r7, r0 - adds r1, r0, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0 - bge _08050E40 - movs r0, 0 - strb r0, [r1] -_08050E40: - ldr r1, =gActiveBank - ldrb r0, [r1] - muls r0, r4 - adds r0, r7, r0 - adds r1, r0, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0xC - ble _08050E56 - movs r0, 0xC - strb r0, [r1] -_08050E56: - mov r2, r8 - ldrb r0, [r2, 0x5] - cmp r0, 0x2 - bne _08050E7E - movs r3, 0x1 - ands r3, r5 - cmp r3, 0 - beq _08050E70 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] -_08050E70: - mov r4, r8 - ldrb r0, [r4, 0x5] - cmp r0, 0x2 - bne _08050E7E - cmp r3, 0 - bne _08050E7E - b _08050B68 -_08050E7E: - movs r0, 0 -_08050E80: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end ChangeStatBuffs - - thumb_func_start atk89_statbuffchange -atk89_statbuffchange: @ 8050EA0 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r3, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r3, r0 - ldr r0, =gBattleScripting - ldrb r4, [r0, 0x1A] - movs r0, 0xF0 - ands r0, r4 - lsls r0, 24 - asrs r0, 24 - movs r1, 0xF - ands r1, r4 - ldrb r2, [r2, 0x1] - bl ChangeStatBuffs - lsls r0, 24 - cmp r0, 0 - bne _08050EDC - ldr r0, [r5] - adds r0, 0x6 - str r0, [r5] -_08050EDC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk89_statbuffchange - - thumb_func_start atk8A_normalisebuffs -atk8A_normalisebuffs: @ 8050EEC - push {r4-r7,lr} - movs r2, 0 - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - ldr r0, =gBattlescriptCurrInstr - mov r12, r0 - cmp r2, r1 - bge _08050F24 - ldr r0, =gBattleMons - movs r4, 0x6 - adds r5, r1, 0 - movs r7, 0x58 - adds r6, r0, 0 - adds r6, 0x18 -_08050F08: - adds r3, r2, 0x1 - movs r1, 0x7 - adds r0, r2, 0 - muls r0, r7 - adds r0, r6 - adds r0, 0x7 -_08050F14: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _08050F14 - adds r2, r3, 0 - cmp r2, r5 - blt _08050F08 -_08050F24: - mov r1, r12 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk8A_normalisebuffs - - thumb_func_start atk8B_setbide -atk8B_setbide: @ 8050F40 - push {r4,r5,lr} - ldr r4, =gBattleMons - ldr r3, =gBankAttacker - ldrb r0, [r3] - movs r5, 0x58 - adds r2, r0, 0 - muls r2, r5 - adds r4, 0x50 - adds r2, r4 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - ldr r1, =gLockedMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, =gCurrentMove - ldrh r1, [r1] - movs r2, 0 - strh r1, [r0] - ldr r1, =gTakenDmg - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - str r2, [r0] - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 2 - orrs r0, r2 - str r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk8B_setbide - - thumb_func_start atk8C_confuseifrepeatingattackends -atk8C_confuseifrepeatingattackends: @ 8050FB0 - push {lr} - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 4 - ands r0, r1 - cmp r0, 0 - bne _08050FD2 - ldr r1, =gBattleCommunication - movs r0, 0x75 - strb r0, [r1, 0x3] -_08050FD2: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk8C_confuseifrepeatingattackends - - thumb_func_start atk8D_setmultihit_counter -atk8D_setmultihit_counter: @ 8050FF0 - push {r4,r5,lr} - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x1] - cmp r1, 0 - beq _0805100C - ldr r0, =gMultiHitCounter - strb r1, [r0] - b _08051026 - .pool -_0805100C: - ldr r4, =gMultiHitCounter - bl Random - movs r5, 0x3 - ands r0, r5 - strb r0, [r4] - cmp r0, 0x1 - bls _08051022 - bl Random - ands r0, r5 -_08051022: - adds r0, 0x2 - strb r0, [r4] -_08051026: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk8D_setmultihit_counter - - thumb_func_start atk8E_prepare_multihit -atk8E_prepare_multihit: @ 805103C - ldr r1, =gBattleScripting - movs r2, 0 - movs r0, 0xFD - strb r0, [r1, 0x8] - movs r0, 0x1 - strb r0, [r1, 0x9] - strb r0, [r1, 0xA] - strb r0, [r1, 0xB] - strb r2, [r1, 0xC] - movs r0, 0xFF - strb r0, [r1, 0xD] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atk8E_prepare_multihit - - thumb_func_start sub_8051064 -sub_8051064: @ 8051064 - push {r4-r7,lr} - ldr r6, =gBattleMons - ldr r7, =gBankAttacker - ldrb r0, [r7] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - adds r1, 0x2A - ldr r4, =gBankTarget - ldrb r3, [r4] - adds r0, r3, 0 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcc _080510AC - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, r3, r1 - adds r1, 0x58 - ldr r2, =gBattlePartyID - lsls r0, r3, 1 - b _08051108 - .pool -_080510AC: - bl Random - movs r3, 0xFF - ands r3, r0 - ldrb r0, [r7] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r2, [r0] - ldrb r4, [r4] - adds r0, r4, 0 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r0] - adds r2, r1 - adds r0, r3, 0 - muls r0, r2 - asrs r0, 8 - adds r0, 0x1 - lsrs r1, 2 - cmp r0, r1 - bhi _080510FC - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - movs r0, 0 - b _08051116 - .pool -_080510FC: - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, r4, r1 - adds r1, 0x58 - ldr r2, =gBattlePartyID - lsls r0, r4, 1 -_08051108: - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DADD8 - str r0, [r1] - movs r0, 0x1 -_08051116: - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8051064 - - thumb_func_start atk8F_forcerandomswitch -atk8F_forcerandomswitch: @ 805112C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - str r0, [sp, 0x4] - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0805114A - b _08051410 -_0805114A: - ldr r4, =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - str r1, [sp] - cmp r0, 0 - bne _08051160 - ldr r0, =gPlayerParty - str r0, [sp] -_08051160: - ldr r2, [r5] - movs r1, 0x81 - lsls r1, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _08051182 - ldr r1, =0x02000100 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _08051182 - movs r0, 0x80 - lsls r0, 15 - ands r0, r2 - cmp r0, 0 - beq _080511C8 -_08051182: - ldr r2, =gBankTarget - ldrb r1, [r2] - movs r0, 0x2 - ands r0, r1 - adds r1, r2, 0 - cmp r0, 0 - beq _080511AC - movs r0, 0x3 - mov r9, r0 - movs r0, 0x6 - b _080511B2 - .pool -_080511AC: - movs r0, 0 - mov r9, r0 - movs r0, 0x3 -_080511B2: - mov r8, r0 - movs r0, 0x3 - mov r10, r0 - movs r0, 0x1 - str r0, [sp, 0x8] - ldr r2, =gBattlePartyID - ldrb r1, [r1] - b _0805128E - .pool -_080511C8: - movs r0, 0x42 - ands r0, r2 - cmp r0, 0x42 - beq _080511DA - ldr r1, =0x02000040 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - bne _0805121C -_080511DA: - ldrb r0, [r4] - bl sub_806D864 - lsls r0, 24 - lsrs r0, 24 - bl sub_806D82C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _080511FC - movs r1, 0x3 - mov r9, r1 - movs r0, 0x6 - b _08051202 - .pool -_080511FC: - movs r1, 0 - mov r9, r1 - movs r0, 0x3 -_08051202: - mov r8, r0 - movs r1, 0x3 - mov r10, r1 - movs r0, 0x1 - str r0, [sp, 0x8] - ldr r2, =gBattlePartyID - ldr r0, =gBankTarget - ldrb r1, [r0] - b _0805128E - .pool -_0805121C: - movs r0, 0x80 - lsls r0, 8 - ands r0, r2 - cmp r0, 0 - beq _08051274 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08051240 - movs r1, 0 - mov r9, r1 - movs r0, 0x6 - mov r8, r0 - mov r10, r0 - movs r1, 0x2 - b _08051260 -_08051240: - ldrb r1, [r4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08051252 - movs r0, 0x3 - mov r9, r0 - movs r1, 0x6 - b _08051258 -_08051252: - movs r0, 0 - mov r9, r0 - movs r1, 0x3 -_08051258: - mov r8, r1 - movs r0, 0x3 - mov r10, r0 - movs r1, 0x1 -_08051260: - str r1, [sp, 0x8] - ldr r2, =gBattlePartyID - ldr r0, =gBankTarget - ldrb r1, [r0] - b _0805128E - .pool -_08051274: - movs r0, 0x1 - ands r2, r0 - cmp r2, 0 - beq _080512A4 - movs r0, 0 - mov r9, r0 - movs r1, 0x6 - mov r8, r1 - mov r10, r1 - movs r0, 0x2 - str r0, [sp, 0x8] - ldr r2, =gBattlePartyID - ldrb r1, [r4] -_0805128E: - lsls r0, r1, 1 - adds r0, r2 - ldrh r7, [r0] - movs r0, 0x2 - eors r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r5, [r1] - b _080512BE - .pool -_080512A4: - movs r1, 0 - mov r9, r1 - movs r0, 0x6 - mov r8, r0 - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x8] - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r5, [r0] - adds r7, r5, 0 -_080512BE: - mov r6, r9 - cmp r6, r8 - bge _080512FC -_080512C4: - movs r0, 0x64 - muls r0, r6 - ldr r1, [sp] - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080512F6 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080512F6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080512F6 - ldr r0, [sp, 0x4] - adds r0, 0x1 - str r0, [sp, 0x4] -_080512F6: - adds r6, 0x1 - cmp r6, r8 - blt _080512C4 -_080512FC: - ldr r1, [sp, 0x4] - ldr r0, [sp, 0x8] - cmp r1, r0 - bgt _08051328 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08051414 - .pool -_08051328: - bl sub_8051064 - lsls r0, 24 - cmp r0, 0 - beq _08051378 -_08051332: - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r10 - bl __modsi3 - adds r6, r0, 0 - add r6, r9 - cmp r6, r7 - beq _08051332 - cmp r6, r5 - beq _08051332 - movs r0, 0x64 - muls r0, r6 - ldr r1, [sp] - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08051332 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _08051332 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08051332 -_08051378: - ldr r4, =gBankTarget - ldrb r0, [r4] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x5C - strb r6, [r0] - bl sub_81B1250 - lsls r0, 24 - cmp r0, 0 - bne _08051396 - ldrb r0, [r4] - bl sub_803BDA0 -_08051396: - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r1, 0x81 - lsls r1, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _080513C0 - movs r0, 0x42 - ands r0, r2 - cmp r0, 0x42 - beq _080513C0 - ldr r1, =0x02000100 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _080513C0 - ldr r0, =0x02000040 - ands r2, r0 - cmp r2, r0 - bne _080513DE -_080513C0: - ldr r5, =gBankTarget - ldrb r0, [r5] - lsls r4, r6, 24 - lsrs r4, 24 - adds r1, r4, 0 - movs r2, 0 - bl sub_81B8E80 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_81B8E80 -_080513DE: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _08051414 - ldr r0, =gBankTarget - ldrb r0, [r0] - lsls r1, r6, 24 - lsrs r1, 24 - bl sub_80571DC - b _08051414 - .pool -_08051410: - bl sub_8051064 -_08051414: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk8F_forcerandomswitch - - thumb_func_start atk90_conversion_type_change -atk90_conversion_type_change: @ 8051424 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - ldr r2, =gBattleMons - ldr r3, =gBankAttacker - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r1, r2, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - mov r8, r2 - cmp r0, 0 - beq _08051466 - movs r5, 0x58 - adds r2, r1, 0 -_0805144C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _08051466 - lsls r1, r6, 1 - ldrb r0, [r3] - muls r0, r5 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - cmp r0, 0 - bne _0805144C -_08051466: - movs r3, 0 - cmp r3, r6 - bcs _080514E8 - ldr r0, =gBattleMoves - mov r10, r0 - ldr r5, =gBattleMons - mov r12, r5 - ldr r7, =gBankAttacker - ldrb r0, [r7] - movs r4, 0x58 - adds r5, r0, 0 - muls r5, r4 - movs r0, 0xC - add r0, r12 - mov r9, r0 -_08051484: - lsls r0, r3, 1 - adds r0, r5 - add r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r2, [r0, 0x2] - cmp r2, 0x9 - bne _080514C6 - mov r0, r8 - adds r1, r5, r0 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080514B2 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _080514C4 -_080514B2: - movs r2, 0x7 - b _080514C6 - .pool -_080514C4: - movs r2, 0 -_080514C6: - ldrb r0, [r7] - muls r0, r4 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r2, r1 - beq _080514DE - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - bne _080514E8 -_080514DE: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r6 - bcc _08051484 -_080514E8: - cmp r3, r6 - bne _0805150C - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080515B0 - .pool -_0805150C: - movs r7, 0x3 - ldr r5, =gBattleMoves - mov r9, r5 -_08051512: - bl Random - adds r3, r0, 0 - ands r3, r7 - cmp r3, r6 - bcs _08051512 - ldr r4, =gBattleMons - lsls r1, r3, 1 - ldr r3, =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - adds r5, r2, 0 - muls r5, r0 - adds r1, r5 - adds r0, r4, 0 - adds r0, 0xC - adds r1, r0 - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r2, [r0, 0x2] - mov r8, r4 - adds r4, r3, 0 - cmp r2, 0x9 - bne _08051572 - mov r0, r8 - adds r2, r5, r0 - adds r0, r2, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _08051560 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _08051570 -_08051560: - movs r2, 0x7 - b _08051572 - .pool -_08051570: - movs r2, 0 -_08051572: - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r5, [r1] - cmp r2, r5 - beq _08051512 - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - beq _08051512 - strb r2, [r1] - ldrb r0, [r4] - muls r0, r3 - add r0, r8 - adds r0, 0x22 - strb r2, [r0] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080515B0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk90_conversion_type_change - - thumb_func_start atk91_givepaydaymoney -atk91_givepaydaymoney: @ 80515C8 - push {r4,lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - bne _08051650 - ldr r1, =gPaydayMoney - ldrh r0, [r1] - cmp r0, 0 - beq _08051650 - adds r1, r0, 0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4A - ldrb r0, [r0] - adds r4, r1, 0 - muls r4, r0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - adds r1, r4, 0 - bl AddMoney - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - strb r4, [r1, 0x4] - movs r0, 0xFF - lsls r0, 8 - ands r4, r0 - lsrs r4, 8 - strb r4, [r1, 0x5] - movs r0, 0xFF - strb r0, [r1, 0x6] - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, =gUnknown_082DB307 - str r0, [r4] - b _08051658 - .pool -_08051650: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08051658: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atk91_givepaydaymoney - - thumb_func_start atk92_setlightscreen -atk92_setlightscreen: @ 8051664 - push {r4-r6,lr} - ldr r5, =gBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - ldr r4, =gSideAffecting - movs r6, 0x1 - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r1, [r1] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080516A4 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0 - b _08051718 - .pool -_080516A4: - ldrb r0, [r5] - bl GetBankIdentity - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r5] - bl GetBankIdentity - ldr r4, =gSideTimers - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0, 0x2] - ldrb r0, [r5] - bl GetBankIdentity - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r5] - strb r1, [r0, 0x3] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ands r0, r6 - cmp r0, 0 - beq _08051714 - movs r0, 0x1 - bl CountAliveMonsInBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08051714 - ldr r1, =gBattleCommunication - movs r0, 0x4 - b _08051718 - .pool -_08051714: - ldr r1, =gBattleCommunication - movs r0, 0x3 -_08051718: - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk92_setlightscreen - - thumb_func_start atk93_ko_move -atk93_ko_move: @ 8051730 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r7, =gBattleMons - ldr r6, =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08051768 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _08051782 - .pool -_08051768: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_08051782: - ldr r1, =gStringBank - ldr r5, =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _080517C0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _080517C0 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_080517C0: - ldr r1, =gBattleMons - ldr r2, =gBankTarget - ldrb r3, [r2] - movs r6, 0x58 - adds r0, r3, 0 - muls r0, r6 - adds r5, r0, r1 - adds r0, r5, 0 - adds r0, 0x20 - ldrb r4, [r0] - mov r8, r1 - mov r9, r2 - cmp r4, 0x5 - bne _0805181C - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gLastUsedAbility - strb r4, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB552 - str r0, [r1] - mov r1, r9 - ldrb r0, [r1] - movs r1, 0x5 - bl RecordAbilityBattle - b _08051A70 - .pool -_0805181C: - ldr r1, =gStatuses3 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x18 - ands r0, r1 - cmp r0, 0 - bne _080518A0 - ldr r1, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r7, =gBankAttacker - ldrb r0, [r7] - muls r0, r6 - add r0, r8 - adds r0, 0x2A - ldrb r0, [r0] - adds r1, r5, 0 - adds r1, 0x2A - ldrb r1, [r1] - subs r0, r1 - ldrb r2, [r2, 0x3] - adds r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - blt _08051870 - b _08051A08 -_08051870: - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - add r1, r8 - adds r1, 0x2A - mov r2, r9 - ldrb r0, [r2] - muls r0, r6 - add r0, r8 - adds r0, 0x2A - ldrb r1, [r1] - movs r4, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bcs _08051936 - b _08051A08 - .pool -_080518A0: - ldr r1, =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldr r1, =gBankAttacker - ldrb r0, [r0, 0x15] - adds r7, r1, 0 - ldrb r3, [r7] - cmp r0, r3 - bne _080518CA - ldrb r0, [r7] - muls r0, r6 - add r0, r8 - adds r0, 0x2A - adds r1, r5, 0 - adds r1, 0x2A - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _08051942 -_080518CA: - ldr r1, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r6, =gBattleMons - ldrb r0, [r7] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r0] - ldr r0, =gBankTarget - mov r8, r0 - ldrb r0, [r0] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r0, [r0] - subs r1, r0 - ldrb r2, [r2, 0x3] - adds r1, r2 - lsls r1, 16 - lsrs r4, r1, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - bge _08051934 - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - adds r1, 0x2A - mov r2, r8 - ldrb r0, [r2] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r1] - movs r4, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bcs _08051936 -_08051934: - movs r4, 0 -_08051936: - ldr r3, =gBattleMons - mov r8, r3 - ldr r0, =gBankTarget - mov r9, r0 - cmp r4, 0 - beq _08051A08 -_08051942: - ldr r0, =gProtectStructs - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - bge _08051990 - ldr r1, =gBattleMoveDamage - movs r0, 0x58 - muls r0, r2 - add r0, r8 - ldrh r0, [r0, 0x28] - subs r0, 0x1 - str r0, [r1] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x40 - b _080519EE - .pool -_08051990: - ldr r0, =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _080519DC - ldr r1, =gBattleMoveDamage - movs r3, 0x58 - adds r0, r2, 0 - muls r0, r3 - add r0, r8 - ldrh r0, [r0, 0x28] - subs r0, 0x1 - str r0, [r1] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gLastUsedItem - mov r2, r9 - ldrb r0, [r2] - muls r0, r3 - add r0, r8 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - b _080519F2 - .pool -_080519DC: - ldr r1, =gBattleMoveDamage - movs r0, 0x58 - muls r0, r2 - add r0, r8 - ldrh r0, [r0, 0x28] - str r0, [r1] - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x10 -_080519EE: - orrs r0, r1 - strb r0, [r2] -_080519F2: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08051A70 - .pool -_08051A08: - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r3, =gBattleMons - ldr r0, =gBankAttacker - ldrb r0, [r0] - movs r2, 0x58 - adds r1, r0, 0 - muls r1, r2 - adds r1, r3 - adds r1, 0x2A - ldr r0, =gBankTarget - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcc _08051A50 - ldr r1, =gBattleCommunication - movs r0, 0 - b _08051A54 - .pool -_08051A50: - ldr r1, =gBattleCommunication - movs r0, 0x1 -_08051A54: - strb r0, [r1, 0x5] - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08051A70: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk93_ko_move - - thumb_func_start atk94_gethalfcurrentenemyhp -atk94_gethalfcurrentenemyhp: @ 8051A84 - push {lr} - ldr r3, =gBattleMoveDamage - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - lsrs r0, 1 - str r0, [r3] - cmp r0, 0 - bne _08051AA2 - movs r0, 0x1 - str r0, [r3] -_08051AA2: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk94_gethalfcurrentenemyhp - - thumb_func_start atk95_setsandstorm -atk95_setsandstorm: @ 8051AC0 - push {lr} - ldr r2, =gBattleWeather - ldrh r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08051AEC - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08051AFE - .pool -_08051AEC: - movs r0, 0x8 - strh r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x5] - ldr r0, =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_08051AFE: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk95_setsandstorm - - thumb_func_start atk96_weatherdamage -atk96_weatherdamage: @ 8051B18 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08051B36 - b _08051C48 -_08051B36: - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08051B4C - b _08051C48 -_08051B4C: - ldr r2, =gBattleWeather - ldrh r1, [r2] - movs r0, 0x18 - ands r0, r1 - adds r4, r2, 0 - ldr r5, =gBankAttacker - cmp r0, 0 - beq _08051BDA - ldr r0, =gBattleMons - ldrb r2, [r5] - movs r1, 0x58 - muls r1, r2 - adds r3, r1, r0 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08051BD4 - cmp r0, 0x8 - beq _08051BD4 - cmp r0, 0x4 - beq _08051BD4 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08051BD4 - cmp r0, 0x8 - beq _08051BD4 - cmp r0, 0x4 - beq _08051BD4 - adds r0, r3, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x8 - beq _08051BD4 - ldr r0, =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08051BD4 - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - bne _08051BD4 - ldr r1, =gBattleMoveDamage - ldrh r0, [r3, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08051BDA - movs r0, 0x1 - b _08051BD8 - .pool -_08051BD4: - ldr r1, =gBattleMoveDamage - movs r0, 0 -_08051BD8: - str r0, [r1] -_08051BDA: - ldrh r1, [r4] - movs r4, 0x80 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08051C50 - ldr r1, =gBattleMons - ldrb r3, [r5] - movs r0, 0x58 - muls r0, r3 - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xF - beq _08051C3C - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xF - beq _08051C3C - ldr r0, =gStatuses3 - lsls r1, r3, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - bne _08051C3C - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - bne _08051C3C - ldr r1, =gBattleMoveDamage - ldrh r0, [r2, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08051C50 - movs r0, 0x1 - str r0, [r1] - b _08051C50 - .pool -_08051C3C: - ldr r1, =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - b _08051C50 - .pool -_08051C48: - ldr r1, =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - ldr r5, =gBankAttacker -_08051C50: - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08051C6A - ldr r1, =gBattleMoveDamage - movs r0, 0 - str r0, [r1] -_08051C6A: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atk96_weatherdamage - - thumb_func_start atk97_try_infatuation -atk97_try_infatuation: @ 8051C90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08051CC8 - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, =gPlayerParty - b _08051CD8 - .pool -_08051CC8: - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, =gEnemyParty -_08051CD8: - adds r5, r1, r0 - ldr r4, =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08051D0C - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, =gPlayerParty - b _08051D1C - .pool -_08051D0C: - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, =gEnemyParty -_08051D1C: - adds r4, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - mov r9, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r7, r0, 0 - ldr r5, =gBankTarget - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - ldr r1, =gBattleMons - adds r0, r1 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0xC - bne _08051D94 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB5F5 - str r0, [r1] - ldr r0, =gLastUsedAbility - strb r2, [r0] - ldrb r0, [r5] - movs r1, 0xC - bl RecordAbilityBattle - b _08051E2C - .pool -_08051D94: - mov r0, r10 - mov r1, r9 - bl GetGenderFromSpeciesAndPersonality - adds r4, r0, 0 - mov r0, r8 - adds r1, r7, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _08051DE4 - ldrb r0, [r5] - muls r0, r6 - ldr r4, =gBattleMons - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - bne _08051DE4 - mov r0, r10 - mov r1, r9 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08051DE4 - mov r0, r8 - adds r1, r7, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08051E08 -_08051DE4: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08051E2C - .pool -_08051E08: - ldrb r0, [r5] - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r1, =gBitTable - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 16 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08051E2C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk97_try_infatuation - - thumb_func_start atk98_status_icon_update -atk98_status_icon_update: @ 8051E48 - push {r4-r7,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08051F34 - ldr r5, =gBattlescriptCurrInstr - ldr r1, [r5] - ldrb r0, [r1, 0x1] - cmp r0, 0x4 - beq _08051EA0 - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldr r3, =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x1A_aaaa_bbbb - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - b _08051F34 - .pool -_08051EA0: - ldr r4, =gActiveBank - ldr r5, =gBankAttacker - ldrb r0, [r5] - strb r0, [r4] - ldr r6, =gAbsentBankFlags - ldrb r1, [r6] - ldr r7, =gBitTable - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08051EDC - ldr r3, =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x1A_aaaa_bbbb - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08051EDC: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08051F2C - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - strb r0, [r4] - ldrb r1, [r6] - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08051F2C - ldr r3, =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x1A_aaaa_bbbb - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08051F2C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08051F34: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk98_status_icon_update - - thumb_func_start atk99_setmist -atk99_setmist: @ 8051F58 - push {r4-r6,lr} - ldr r6, =gSideTimers - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08051F98 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gBattleCommunication - strb r5, [r0, 0x5] - b _08051FE6 - .pool -_08051F98: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - strb r1, [r0, 0x4] - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r4] - strb r1, [r0, 0x5] - ldrb r0, [r4] - bl GetBankIdentity - ldr r2, =gSideAffecting - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - movs r3, 0 - orrs r0, r2 - strh r0, [r1] - ldr r0, =gBattleCommunication - strb r3, [r0, 0x5] -_08051FE6: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atk99_setmist - - thumb_func_start atk9A_set_focusenergy -atk9A_set_focusenergy: @ 8052000 - push {lr} - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r3, 0x80 - lsls r3, 13 - adds r2, r1, 0 - ands r2, r3 - cmp r2, 0 - beq _08052040 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08052048 - .pool -_08052040: - orrs r1, r3 - str r1, [r0] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x5] -_08052048: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atk9A_set_focusenergy - - thumb_func_start atk9B_transformdataexecution -atk9B_transformdataexecution: @ 805205C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, =gLastUsedMove - ldr r2, =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r7, =gBattleMons - ldr r0, =gBankTarget - mov r12, r0 - ldrb r1, [r0] - movs r6, 0x58 - adds r0, r1, 0 - muls r0, r6 - adds r5, r7, 0 - adds r5, 0x50 - adds r0, r5 - ldr r0, [r0] - movs r4, 0x80 - lsls r4, 14 - ands r0, r4 - cmp r0, 0 - bne _080520A2 - ldr r0, =gStatuses3 - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - ldr r0, =0x000400c0 - ands r2, r0 - cmp r2, 0 - beq _080520D8 -_080520A2: - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x1 - b _080521EC - .pool -_080520D8: - ldr r3, =gBankAttacker - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - ldr r0, [r1] - orrs r0, r4 - str r0, [r1] - ldr r4, =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x4] - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - mov r2, r12 - ldrb r1, [r2] - muls r1, r6 - adds r2, r7, 0 - adds r2, 0x48 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x18] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x18] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - mov r2, r12 - ldrb r0, [r2] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r2] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r0, [r3] - muls r0, r6 - adds r5, r0, r7 - ldrb r0, [r2] - muls r0, r6 - adds r2, r0, r7 - movs r4, 0 - adds r6, r3, 0 - ldr r0, =gActiveBank - mov r8, r0 -_08052170: - adds r0, r5, r4 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x23 - bls _08052170 - movs r4, 0 - ldr r7, =gBattleMoves - ldr r3, =gBattleMons + 0xC - adds r5, r3, 0 - adds r5, 0x18 -_08052188: - lsls r1, r4, 1 - ldrb r2, [r6] - movs r0, 0x58 - muls r2, r0 - adds r1, r2 - adds r1, r3 - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r1, [r0, 0x4] - cmp r1, 0x4 - bhi _080521C4 - adds r0, r4, r2 - adds r0, r5 - b _080521CA - .pool -_080521C4: - adds r0, r4, r2 - adds r0, r5 - movs r1, 0x5 -_080521CA: - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x3 - ble _08052188 - ldrb r0, [r6] - mov r1, r8 - strb r0, [r1] - movs r0, 0 - movs r1, 0x2 - bl dp01_build_cmdbuf_x38_a - mov r2, r8 - ldrb r0, [r2] - bl MarkBufferBankForExecution - ldr r1, =gBattleCommunication - movs r0, 0 -_080521EC: - strb r0, [r1, 0x5] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk9B_transformdataexecution - - thumb_func_start atk9C_set_substitute -atk9C_set_substitute: @ 80521FC - push {r4-r7,lr} - ldr r7, =gBattleMons - ldr r6, =gBankAttacker - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r3, r0, r7 - ldrh r0, [r3, 0x2C] - lsrs r1, r0, 2 - adds r2, r1, 0 - cmp r1, 0 - bne _08052216 - movs r2, 0x1 -_08052216: - ldrh r0, [r3, 0x28] - cmp r0, r2 - bhi _0805223C - ldr r1, =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08052290 - .pool -_0805223C: - ldr r4, =gBattleMoveDamage - str r1, [r4] - cmp r1, 0 - bne _08052248 - movs r0, 0x1 - str r0, [r4] -_08052248: - ldrb r0, [r6] - adds r2, r0, 0 - muls r2, r5 - adds r3, r7, 0 - adds r3, 0x50 - adds r2, r3 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 17 - orrs r0, r1 - str r0, [r2] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r3 - ldr r0, [r1] - ldr r2, =0xffff1fff - ands r0, r2 - str r0, [r1] - ldr r2, =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, [r4] - movs r2, 0 - strb r1, [r0, 0xA] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x5] - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 1 - orrs r0, r1 - str r0, [r2] -_08052290: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk9C_set_substitute - - thumb_func_start sub_80522B8 -sub_80522B8: @ 80522B8 - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r3, 0 - ldr r0, =gUnknown_0831C3E0 - ldrh r1, [r0] - ldr r4, =0x0000fffe - adds r5, r0, 0 - cmp r1, r4 - beq _080522E0 - cmp r1, r2 - beq _080522E0 - adds r1, r5, 0 -_080522D2: - adds r1, 0x2 - adds r3, 0x1 - ldrh r0, [r1] - cmp r0, r4 - beq _080522E0 - cmp r0, r2 - bne _080522D2 -_080522E0: - lsls r0, r3, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r0, =0x0000fffe - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80522B8 - - thumb_func_start atk9D_copyattack -atk9D_copyattack: @ 8052300 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gLastUsedMove - ldr r1, =0x0000ffff - adds r7, r1, 0 - strh r7, [r0] - ldr r5, =gLastUsedMovesByBanks - ldr r6, =gBankTarget - ldrb r0, [r6] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - bl sub_80522B8 - lsls r0, 24 - cmp r0, 0 - bne _0805235A - ldr r3, =gBattleMons - ldr r2, =gBankAttacker - ldrb r1, [r2] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 14 - ands r1, r0 - mov r12, r3 - mov r9, r2 - cmp r1, 0 - bne _0805235A - ldrb r0, [r6] - lsls r0, 1 - adds r0, r5 - ldrh r1, [r0] - cmp r1, 0 - beq _0805235A - cmp r1, r7 - bne _08052394 -_0805235A: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080524CC - .pool -_08052394: - movs r2, 0 - mov r3, r12 - adds r3, 0xC - adds r0, r4, r3 - ldrh r0, [r0] - ldr r4, =gBattlescriptCurrInstr - mov r10, r4 - cmp r0, r1 - beq _080523CE - mov r8, r3 - adds r7, r5, 0 - adds r5, r6, 0 - mov r4, r9 - movs r3, 0x58 -_080523B0: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080523CE - lsls r1, r2, 1 - ldrb r0, [r4] - muls r0, r3 - adds r1, r0 - add r1, r8 - ldrb r0, [r5] - lsls r0, 1 - adds r0, r7 - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - bne _080523B0 -_080523CE: - cmp r2, 0x4 - bne _080524B0 - ldr r5, =gCurrMovePos - ldrb r1, [r5] - lsls r1, 1 - mov r2, r9 - ldrb r0, [r2] - movs r6, 0x58 - muls r0, r6 - adds r1, r0 - mov r0, r12 - adds r0, 0xC - adds r1, r0 - ldr r2, =gLastUsedMovesByBanks - ldr r3, =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - ldr r4, =gBattleMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r4, [r0, 0x4] - cmp r4, 0x4 - bhi _08052438 - mov r1, r9 - ldrb r0, [r1] - muls r0, r6 - ldrb r1, [r5] - adds r0, r1 - mov r1, r12 - adds r1, 0x24 - adds r0, r1 - strb r4, [r0] - b _0805244C - .pool -_08052438: - mov r4, r9 - ldrb r0, [r4] - muls r0, r6 - ldrb r1, [r5] - adds r0, r1 - mov r1, r12 - adds r1, 0x24 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] -_0805244C: - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gDisableStructs - mov r2, r9 - ldrb r0, [r2] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r4, [r2, 0x18] - lsrs r3, r4, 4 - ldr r1, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - orrs r1, r3 - lsls r1, 4 - movs r0, 0xF - ands r0, r4 - orrs r0, r1 - strb r0, [r2, 0x18] - mov r4, r10 - ldr r0, [r4] - adds r0, 0x5 - str r0, [r4] - b _080524CC - .pool -_080524B0: - mov r0, r10 - ldr r2, [r0] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - mov r2, r10 - str r1, [r2] -_080524CC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk9D_copyattack - - thumb_func_start atk9E_metronome -atk9E_metronome: @ 80524DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, =gCurrentMove - movs r6, 0xB1 - lsls r6, 1 - ldr r5, =gUnknown_0831C3E0 - ldr r0, =gBattlescriptCurrInstr - mov r8, r0 -_080524EE: - bl Random - ldr r2, =0x000001ff - adds r1, r2, 0 - ands r0, r1 - adds r0, 0x1 - strh r0, [r7] - cmp r0, r6 - bhi _080524EE - movs r0, 0x3 -_08052502: - subs r0, 0x1 - cmp r0, 0 - bge _08052502 - ldr r4, =gCurrentMove - ldrh r2, [r4] - ldr r3, =0x0000ffff - subs r0, r5, 0x2 -_08052510: - adds r0, 0x2 - ldrh r1, [r0] - cmp r1, r2 - beq _0805251C - cmp r1, r3 - bne _08052510 -_0805251C: - ldr r0, =0x0000ffff - cmp r1, r0 - bne _080524EE - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r3, =gBattleScriptsForMoveEffects - ldr r2, =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - mov r1, r8 - str r0, [r1] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, =gBankTarget - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atk9E_metronome - - thumb_func_start atk9F_dmgtolevel -atk9F_dmgtolevel: @ 8052584 - ldr r3, =gBattleMoveDamage - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r0, [r0] - str r0, [r3] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atk9F_dmgtolevel - - thumb_func_start atkA0_psywavedamageeffect -atkA0_psywavedamageeffect: @ 80525B4 - push {r4,lr} - movs r4, 0xF -_080525B8: - bl Random - adds r3, r4, 0 - ands r3, r0 - cmp r3, 0xA - bgt _080525B8 - lsls r0, r3, 2 - adds r0, r3 - lsls r3, r0, 1 - ldr r4, =gBattleMoveDamage - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - adds r0, r3, 0 - adds r0, 0x32 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkA0_psywavedamageeffect - - thumb_func_start atkA1_counterdamagecalculator -atkA1_counterdamagecalculator: @ 8052608 - push {r4-r6,lr} - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r5 - ldrb r0, [r0, 0xC] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r5, 0x4 - adds r0, r1, r0 - ldr r3, [r0] - cmp r3, 0 - beq _080526BC - cmp r6, r2 - beq _080526BC - ldr r6, =gBattleMons - adds r0, r1, r5 - ldrb r0, [r0, 0xC] - movs r4, 0x58 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _080526BC - ldr r1, =gBattleMoveDamage - lsls r0, r3, 1 - str r0, [r1] - ldr r1, =gSideTimers - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _08052690 - ldrb r1, [r1, 0x9] - adds r0, r1, 0 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08052690 - ldr r0, =gBankTarget - strb r1, [r0] - b _080526A0 - .pool -_08052690: - ldr r2, =gBankTarget - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r2] -_080526A0: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080526EC - .pool -_080526BC: - ldr r2, =gSpecialStatuses - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080526EC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkA1_counterdamagecalculator - - thumb_func_start atkA2_mirrorcoatdamagecalculator -atkA2_mirrorcoatdamagecalculator: @ 8052700 - push {r4-r6,lr} - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r5 - ldrb r0, [r0, 0xD] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r3, [r0] - cmp r3, 0 - beq _080527B4 - cmp r6, r2 - beq _080527B4 - ldr r6, =gBattleMons - adds r0, r1, r5 - ldrb r0, [r0, 0xD] - movs r4, 0x58 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _080527B4 - ldr r1, =gBattleMoveDamage - lsls r0, r3, 1 - str r0, [r1] - ldr r1, =gSideTimers - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _08052788 - ldrb r1, [r1, 0x9] - adds r0, r1, 0 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08052788 - ldr r0, =gBankTarget - strb r1, [r0] - b _08052798 - .pool -_08052788: - ldr r2, =gBankTarget - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0xD] - strb r0, [r2] -_08052798: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080527E4 - .pool -_080527B4: - ldr r2, =gSpecialStatuses - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080527E4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkA2_mirrorcoatdamagecalculator - - thumb_func_start atkA3_disablelastusedattack -atkA3_disablelastusedattack: @ 80527F8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r4, 0 - ldr r2, =gBattleMons - ldr r3, =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r7, r2, 0 - adds r7, 0xC - adds r0, r7 - ldr r5, =gLastUsedMovesByBanks - lsls r1, 1 - adds r1, r5 - ldrh r0, [r0] - mov r9, r2 - adds r6, r3, 0 - ldr r2, =gDisableStructs - mov r8, r2 - ldrh r1, [r1] - cmp r0, r1 - beq _0805284C - mov r12, r6 - movs r3, 0x58 -_0805282C: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0805284C - lsls r2, r4, 1 - mov r0, r12 - ldrb r1, [r0] - adds r0, r1, 0 - muls r0, r3 - adds r2, r0 - adds r2, r7 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _0805282C -_0805284C: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r0, [r0, 0x4] - cmp r0, 0 - bne _08052910 - cmp r4, 0x4 - beq _08052910 - movs r5, 0x58 - adds r0, r1, 0 - muls r0, r5 - adds r0, r4, r0 - mov r1, r9 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08052910 - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - lsls r2, r4, 1 - ldrb r0, [r6] - muls r0, r5 - adds r0, r2, r0 - mov r3, r9 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r2, r0 - adds r0, r3 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - muls r1, r5 - adds r2, r1 - adds r2, r3 - ldrh r1, [r2] - strh r1, [r0, 0x4] - bl Random - ldrb r2, [r6] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r8 - movs r2, 0x3 - ands r2, r0 - adds r2, 0x2 - ldrb r3, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xB] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r3, [r1, 0xB] - lsls r2, r3, 28 - lsrs r2, 24 - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xB] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0805292A - .pool -_08052910: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0805292A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkA3_disablelastusedattack - - thumb_func_start atkA4_setencore -atkA4_setencore: @ 805293C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r3, =gBattleMons - ldr r4, =gBankTarget - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r6, r3, 0 - adds r6, 0xC - adds r0, r6 - ldr r2, =gLastUsedMovesByBanks - lsls r1, 1 - adds r1, r2 - ldrh r0, [r0] - mov r10, r3 - mov r8, r2 - ldr r2, =gDisableStructs - mov r9, r2 - ldrh r1, [r1] - cmp r0, r1 - beq _08052996 - mov r12, r4 - adds r7, r6, 0 - mov r6, r8 - movs r3, 0x58 -_08052976: - adds r5, 0x1 - cmp r5, 0x3 - bgt _08052996 - lsls r2, r5, 1 - mov r0, r12 - ldrb r1, [r0] - adds r0, r1, 0 - muls r0, r3 - adds r2, r0 - adds r2, r7 - lsls r1, 1 - adds r1, r6 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _08052976 -_08052996: - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r2, [r0] - cmp r2, 0xA5 - beq _080529AA - cmp r2, 0xE3 - beq _080529AA - cmp r2, 0x77 - bne _080529AC -_080529AA: - movs r5, 0x4 -_080529AC: - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r2, r9 - adds r3, r0, r2 - ldrh r0, [r3, 0x6] - cmp r0, 0 - bne _08052A44 - cmp r5, 0x4 - beq _08052A44 - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - adds r0, r5, r2 - mov r1, r10 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08052A44 - lsls r0, r5, 1 - adds r0, r2 - subs r1, 0x18 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3, 0x6] - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - strb r5, [r0, 0xC] - bl Random - ldrb r2, [r4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r9 - movs r2, 0x3 - ands r2, r0 - adds r2, 0x3 - ldrb r3, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xE] - ldrb r0, [r4] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r9 - ldrb r3, [r1, 0xE] - lsls r2, r3, 28 - lsrs r2, 24 - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xE] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08052A5E - .pool -_08052A44: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08052A5E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkA4_setencore - - thumb_func_start atkA5_painsplitdmgcalc -atkA5_painsplitdmgcalc: @ 8052A70 - push {r4-r7,lr} - ldr r6, =gBattleMons - ldr r0, =gBankTarget - mov r12, r0 - ldrb r0, [r0] - movs r7, 0x58 - adds r2, r0, 0 - muls r2, r7 - adds r0, r6, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _08052B10 - ldr r5, =gBankAttacker - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - ldrh r3, [r0, 0x28] - adds r0, r2, r6 - ldrh r1, [r0, 0x28] - adds r3, r1 - asrs r3, 1 - ldr r4, =gBattleMoveDamage - subs r1, r3 - str r1, [r4] - ldr r2, =gBattleScripting - strb r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - asrs r0, 8 - strb r0, [r2, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - asrs r0, 16 - strb r0, [r2, 0x2] - lsrs r1, 24 - strb r1, [r2, 0x3] - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - ldrh r0, [r0, 0x28] - subs r0, r3 - str r0, [r4] - ldr r2, =gSpecialStatuses - mov r0, r12 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, =0x0000ffff - str r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08052B2A - .pool -_08052B10: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08052B2A: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkA5_painsplitdmgcalc - - thumb_func_start atkA6_settypetorandomresistance -atkA6_settypetorandomresistance: @ 8052B34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, =gUnknown_02024250 - ldr r4, =gBankAttacker - ldrb r0, [r4] - lsls r0, 1 - adds r2, r0, r1 - ldrh r1, [r2] - cmp r1, 0 - beq _08052B7E - ldr r0, =0x0000ffff - cmp r1, r0 - beq _08052B7E - ldrh r0, [r2] - bl IsTwoTurnsMove - lsls r0, 24 - cmp r0, 0 - beq _08052C1C - ldr r1, =gBattleMons - ldr r2, =gUnknown_02024270 - ldrb r0, [r4] - adds r0, r2 - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _08052C1C -_08052B7E: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08052D08 - .pool -_08052BB4: - mov r0, r12 - strb r5, [r0] - mov r1, r10 - ldrb r0, [r1] - muls r0, r2 - adds r0, r7 - adds r0, 0x22 - strb r5, [r0] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, =gBattlescriptCurrInstr - b _08052C0A - .pool -_08052BE0: - mov r0, r8 - adds r0, 0x1 - adds r0, r3 - ldrb r2, [r0] - strb r2, [r4] - mov r4, r10 - ldrb r0, [r4] - muls r0, r6 - ldr r7, =gBattleMons - adds r0, r7 - adds r0, 0x22 - strb r2, [r0] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - mov r1, r12 -_08052C0A: - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08052D08 - .pool -_08052C1C: - movs r4, 0 - mov r8, r4 - movs r7, 0x7F - mov r9, r7 -_08052C24: - bl Random - mov r4, r9 - ands r4, r0 - cmp r4, 0x70 - bhi _08052C24 - lsls r0, r4, 1 - adds r4, r0, r4 - ldr r6, =gTypeEffectiveness - adds r3, r4, r6 - ldr r1, =gUnknown_02024258 - ldr r2, =gBankAttacker - ldrb r5, [r2] - lsls r0, r5, 1 - adds r0, r1 - ldrb r1, [r3] - mov r10, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _08052C80 - adds r0, r4, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08052C80 - ldr r7, =gBattleMons - movs r2, 0x58 - adds r0, r5, 0 - muls r0, r2 - adds r3, r0, r7 - movs r0, 0x21 - adds r0, r3 - mov r12, r0 - adds r0, r4, 0x1 - adds r0, r6 - ldrb r5, [r0] - mov r1, r12 - ldrb r0, [r1] - adds r1, r5, 0 - cmp r0, r1 - beq _08052C80 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - bne _08052BB4 -_08052C80: - movs r7, 0x1 - add r8, r7 - ldr r0, =0x000003e7 - cmp r8, r0 - ble _08052C24 - movs r0, 0 - mov r8, r0 - ldr r1, =gBattlescriptCurrInstr - mov r12, r1 - ldr r3, =gTypeEffectiveness - adds r0, r4, 0x1 - adds r0, r3 - mov r9, r0 - adds r5, r3, 0 -_08052C9C: - ldrb r1, [r5] - cmp r1, 0xFF - bgt _08052CA6 - cmp r1, 0xFE - bge _08052CE0 -_08052CA6: - mov r4, r10 - ldrb r2, [r4] - lsls r0, r2, 1 - ldr r7, =gUnknown_02024258 - adds r0, r7 - ldrh r0, [r0] - cmp r1, r0 - bne _08052CE0 - ldrb r0, [r5, 0x2] - cmp r0, 0x5 - bhi _08052CE0 - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - ldr r1, =gBattleMons - adds r2, r0, r1 - adds r4, r2, 0 - adds r4, 0x21 - ldrb r0, [r4] - mov r7, r9 - ldrb r1, [r7] - cmp r0, r1 - beq _08052CE0 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - beq _08052CE0 - b _08052BE0 -_08052CE0: - adds r5, 0x3 - movs r0, 0x3 - add r8, r0 - ldr r0, =0x0000014f - cmp r8, r0 - bls _08052C9C - mov r1, r12 - ldr r2, [r1] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - mov r4, r12 - str r1, [r4] -_08052D08: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkA6_settypetorandomresistance - - thumb_func_start atkA7_setalwayshitflag -atkA7_setalwayshitflag: @ 8052D34 - push {r4,lr} - ldr r4, =gStatuses3 - ldr r3, =gBankTarget - ldrb r1, [r3] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x19 - negs r2, r2 - ands r0, r2 - str r0, [r1] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x10 - orrs r0, r2 - str r0, [r1] - ldr r2, =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, =gBankAttacker - ldrb r1, [r1] - strb r1, [r0, 0x15] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkA7_setalwayshitflag - - thumb_func_start atkA8_copymovepermanently -atkA8_copymovepermanently: @ 8052D8C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, =gLastUsedMove - ldr r1, =0x0000ffff - adds r5, r1, 0 - strh r5, [r0] - ldr r3, =gBattleMons - ldr r2, =gBankAttacker - ldrb r1, [r2] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 14 - ands r1, r0 - mov r12, r3 - mov r10, r2 - cmp r1, 0 - beq _08052DC4 - b _08052F18 -_08052DC4: - ldr r0, =gUnknownMovesUsedByBanks - ldr r2, =gBankTarget - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - mov r9, r0 - mov r8, r2 - cmp r1, 0xA5 - bne _08052DDA - b _08052F18 -_08052DDA: - cmp r1, 0 - bne _08052DE0 - b _08052F18 -_08052DE0: - cmp r1, r5 - bne _08052DE6 - b _08052F18 -_08052DE6: - cmp r1, 0xA6 - bne _08052DEC - b _08052F18 -_08052DEC: - movs r7, 0 - mov r5, r9 - mov r0, r12 - adds r0, 0xC - adds r1, r4, r0 - mov r3, r8 -_08052DF8: - ldrh r2, [r1] - cmp r2, 0xA6 - beq _08052E0A - ldrb r0, [r3] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r2, r0 - beq _08052E12 -_08052E0A: - adds r1, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _08052DF8 -_08052E12: - cmp r7, 0x4 - beq _08052E18 - b _08052F18 -_08052E18: - ldr r4, =gCurrMovePos - ldrb r1, [r4] - lsls r1, 1 - mov r2, r10 - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - adds r1, r0 - mov r6, r12 - adds r6, 0xC - adds r1, r6 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - strh r0, [r1] - mov r1, r10 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r3 - ldrb r4, [r4] - adds r2, r4 - mov r5, r12 - adds r5, 0x24 - adds r2, r5 - ldr r4, =gBattleMoves - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - add r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x4] - strb r0, [r2] - ldr r1, =gActiveBank - mov r2, r10 - ldrb r0, [r2] - strb r0, [r1] - movs r7, 0 - ldrb r0, [r2] - muls r0, r3 - adds r4, r0, r5 - adds r3, r0, 0 - add r2, sp, 0x4 - add r5, sp, 0xC -_08052E7A: - adds r0, r3, r6 - ldrh r0, [r0] - strh r0, [r2] - adds r1, r5, r7 - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x1 - adds r3, 0x2 - adds r2, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _08052E7A - add r2, sp, 0x4 - mov r0, r10 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r0, 0x3B - ldrb r0, [r0] - strb r0, [r2, 0xC] - str r2, [sp] - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0x10 - bl EmitSetAttributes - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r3, =gUnknownMovesUsedByBanks - ldr r2, =gBankTarget - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08052F32 - .pool -_08052F18: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08052F32: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkA8_copymovepermanently - thumb_func_start IsTwoTurnsMove IsTwoTurnsMove: @ 8052F48 push {lr} @@ -8028,7 +558,7 @@ _08053304: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _080533B8: @@ -8155,7 +685,7 @@ _080534D4: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattleScripting strb r0, [r1, 0x17] strb r0, [r7] @@ -8330,7 +860,7 @@ _0805363E: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleTypeFlags @@ -8373,7 +903,7 @@ _080536BC: movs r0, 0 movs r1, 0x28 movs r3, 0x4 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _080536DE: @@ -9311,7 +1841,7 @@ _08053EF8: _08053F10: movs r0, 0x2 _08053F12: - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankTarget strb r0, [r1] ldr r0, =gUnknown_0202421C @@ -10852,7 +3382,7 @@ atkCD_cureifburnedparalysedorpoisoned: @ 8054C60 movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution b _08054CD6 @@ -11035,7 +3565,7 @@ atkD1_set_helpinghand: @ 8054E0C eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r3, =gBankTarget strb r0, [r3] ldr r0, =gBattleTypeFlags @@ -11283,7 +3813,7 @@ _08055010: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetAttributes + bl EmitSetMonData ldr r1, =gBankAttacker ldrb r0, [r1] bl MarkBufferBankForExecution @@ -11299,7 +3829,7 @@ _08055010: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldrb r0, [r7] @@ -12179,7 +4709,7 @@ _08055798: adds r1, r5, 0x1 cmp r0, 0 bne _080557EE - ldr r0, =gUnknown_0831C3E0 + ldr r0, =gMovesForbiddenToCopy ldrh r2, [r0] adds r3, r0, 0 cmp r2, r8 @@ -12525,7 +5055,7 @@ atkE2_switchout_abilities: @ 8055A78 movs r0, 0 movs r1, 0x28 movs r3, 0x4 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _08055AD2: @@ -13179,7 +5709,7 @@ atkEA_recycleitem: @ 8056014 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r1, =gBattlescriptCurrInstr @@ -13302,7 +5832,7 @@ atkEC_pursuit_sth: @ 805616C eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleTypeFlags @@ -14790,7 +7320,7 @@ sub_8056EF8: @ 8056EF8 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 diff --git a/asm/battle_5.s b/asm/battle_5.s index 9c35a8913b..bb5b406e53 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -195,11 +195,11 @@ AdjustFriendshipOnBattleFaint: @ 80570F4 cmp r0, 0 beq _08057140 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r3, r0, 24 ldr r2, =gBattleMons @@ -220,7 +220,7 @@ AdjustFriendshipOnBattleFaint: @ 80570F4 .pool _08057140: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 _0805714A: @@ -562,7 +562,7 @@ _08057406: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetAttributes + bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _08057430: diff --git a/asm/battle_7.s b/asm/battle_7.s index 10fabc389a..0115598196 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -428,7 +428,7 @@ _0805D470: movs r0, 0x1 ands r0, r1 eors r0, r2 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 16 _0805D48A: @@ -579,7 +579,7 @@ sub_805D5F4: @ 805D5F4 cmp r0, 0 bne _0805D630 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 mov r8, r0 @@ -588,13 +588,13 @@ sub_805D5F4: @ 805D5F4 .pool _0805D630: movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r0, 0x2 _0805D63E: - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r7, r0, 24 ldr r1, =gBattleMons @@ -2941,7 +2941,7 @@ _0805EA5A: BattleMusicStop: @ 805EA60 push {r4-r6,lr} movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 ldr r5, =gUnknown_020244D0 @@ -3020,12 +3020,12 @@ sub_805EAE8: @ 805EAE8 cmp r0, 0 beq _0805EB7E movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 mov r9, r0 @@ -3203,7 +3203,7 @@ sub_805EC84: @ 805EC84 ldr r0, =gUnknown_0831C6A0 bl LoadCompressedObjectPic movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -3252,7 +3252,7 @@ sub_805EC84: @ 805EC84 cmp r0, 0 beq _0805ED56 movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 diff --git a/asm/battle_9.s b/asm/battle_9.s index 401584bce6..0dfc105ec3 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -74,7 +74,7 @@ _08062C72: lsrs r0, 24 mov r10, r0 ldr r4, =gBattleMons - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0x58 @@ -87,7 +87,7 @@ _08062C72: b _08062E2C _08062C9E: mov r0, r10 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r2, r0, 24 movs r6, 0 @@ -223,7 +223,7 @@ _08062D74: movs r1, 0x2E bl GetMonData mov r0, r10 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r2, r0, 24 movs r4, 0 @@ -347,7 +347,7 @@ _08062EB0: eors r0, r4 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAbsentBankFlags ldrb r1, [r1] ldr r2, =gBitTable @@ -367,7 +367,7 @@ _08062F04: eors r0, r4 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r7, r0, 24 b _08062F1E @@ -705,7 +705,7 @@ ai_has_super_effective_move_on_field: @ 80631BC lsls r0, 24 lsrs r0, 24 mov r10, r0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r3, r0, 24 ldr r0, =gAbsentBankFlags @@ -779,7 +779,7 @@ _0806327C: movs r1, 0x2 mov r0, r10 eors r0, r1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r3, r0, 24 ldr r0, =gAbsentBankFlags @@ -951,7 +951,7 @@ _080633B8: eors r0, r4 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAbsentBankFlags ldrb r1, [r1] ldr r2, =gBitTable @@ -972,7 +972,7 @@ _08063414: eors r0, r4 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 mov r10, r0 @@ -1308,7 +1308,7 @@ _080636C4: eors r0, r5 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAbsentBankFlags ldrb r1, [r1] ldr r2, =gBitTable @@ -1328,7 +1328,7 @@ _08063718: eors r0, r5 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r6, r0, 24 b _08063732 @@ -1542,7 +1542,7 @@ _080638C2: cmp r0, 0 bne _08063910 adds r0, r6, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 @@ -1550,13 +1550,13 @@ _080638C2: .pool _08063910: adds r0, r5, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x2 eors r5, r0 adds r0, r5, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 _08063928: @@ -1789,7 +1789,7 @@ _08063AE0: eors r0, r5 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAbsentBankFlags ldrb r1, [r1] ldr r2, =gBitTable @@ -1810,7 +1810,7 @@ _08063B20: eors r0, r5 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x14] @@ -1844,7 +1844,7 @@ _08063B6C: eors r0, r1 lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 639be6b7de..9c0190214d 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -949,17 +949,17 @@ _080A4148: ldrsh r0, [r6, r3] cmp r0, 0 bne _080A4190 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0xE] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y b _080A4198 .pool _080A4190: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r0, [r0] strh r0, [r1, 0xE] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y _080A4198: ldrh r0, [r0] strh r0, [r1, 0x10] @@ -1266,7 +1266,7 @@ _080A43F8: ldr r0, =gBankSpriteIds adds r0, r6, r0 ldrb r4, [r0] - ldr r5, =gUnknown_02022E18 + ldr r5, =gBattle_BG1_X ldr r0, =gSprites lsls r1, r4, 4 adds r1, r4 @@ -1294,7 +1294,7 @@ _080A43F8: subs r0, 0x1 strh r0, [r5] _080A447A: - ldr r5, =gUnknown_02022E1A + ldr r5, =gBattle_BG1_Y ldr r2, =gSprites lsls r1, r4, 4 adds r1, r4 @@ -1322,7 +1322,7 @@ _080A447A: orrs r1, r2 strb r1, [r0] _080A44B0: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg @@ -1431,7 +1431,7 @@ _080A455E: ldr r0, =gBankSpriteIds adds r2, r5, r0 ldrb r4, [r2] - ldr r5, =gUnknown_02022E1C + ldr r5, =gBattle_BG2_X ldr r3, =gSprites lsls r1, r4, 4 adds r1, r4 @@ -1443,7 +1443,7 @@ _080A455E: negs r0, r0 adds r0, 0x20 strh r0, [r5] - ldr r4, =gUnknown_02022E1E + ldr r4, =gBattle_BG2_Y ldrh r0, [r1, 0x26] ldrh r1, [r1, 0x22] adds r0, r1 @@ -1653,19 +1653,19 @@ sub_80A477C: @ 80A477C _080A479C: movs r0, 0x1 bl sub_80A6C68 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] b _080A47C6 .pool _080A47B8: movs r0, 0x2 bl sub_80A6C68 - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] _080A47C6: add sp, 0x10 @@ -1714,13 +1714,13 @@ task_pA_ma0A_obj_to_bg_pal: @ 80A47D8 ldrsh r0, [r5, r1] cmp r0, 0 bne _080A4870 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X lsls r0, r3, 16 asrs r0, 16 ldrh r3, [r5, 0xE] adds r0, r3 strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y lsls r0, r2, 16 asrs r0, 16 ldrh r5, [r5, 0x10] @@ -1740,13 +1740,13 @@ task_pA_ma0A_obj_to_bg_pal: @ 80A47D8 b _080A4896 .pool _080A4870: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X lsls r0, r3, 16 asrs r0, 16 ldrh r3, [r5, 0xE] adds r0, r3 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y lsls r0, r2, 16 asrs r0, 16 ldrh r5, [r5, 0x10] diff --git a/asm/battle_anim_80D51AC.s b/asm/battle_anim_80D51AC.s index c2ea27485e..52b599c4c3 100755 --- a/asm/battle_anim_80D51AC.s +++ b/asm/battle_anim_80D51AC.s @@ -200,7 +200,7 @@ _080D5320: _080D5324: movs r0, 0x3 _080D5326: - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index f35b2f7da3..78abd6a855 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -12782,14 +12782,14 @@ sub_8104E74: @ 8104E74 lsrs r0, 24 cmp r0, 0x1 bne _08104ED4 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r5, 0x14] ldr r0, =0x04000014 b _08104EDC .pool _08104ED4: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r0, [r0] strh r0, [r5, 0x14] ldr r0, =0x04000018 @@ -15305,10 +15305,10 @@ sub_81062E8: @ 81062E8 movs r2, 0x1 bl lcd_bg_operations _0810632A: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -15540,10 +15540,10 @@ sub_81064F8: @ 81064F8 movs r2, 0x1 bl lcd_bg_operations _0810653A: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -18159,11 +18159,11 @@ _08107A32: beq _08107AB4 ldr r1, =0x0000ffb0 adds r0, r1, 0 - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X strh r0, [r2] adds r1, 0x20 adds r0, r1, 0 - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y strh r0, [r2] movs r0, 0x2 strh r0, [r6, 0x8] @@ -18183,12 +18183,12 @@ _08107AB4: bne _08107AF8 ldr r2, =0x0000ff20 adds r0, r2, 0 - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X strh r0, [r2] movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y strh r0, [r2] movs r0, 0x2 strh r0, [r6, 0x8] @@ -18198,11 +18198,11 @@ _08107AB4: b _08107B0E .pool _08107AF8: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] ldr r1, =0x0000ffd0 adds r0, r1, 0 - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y strh r0, [r2] ldr r0, =0x0000fffe strh r0, [r6, 0x8] @@ -18210,11 +18210,11 @@ _08107AF8: strh r0, [r6, 0xA] strh r4, [r7, 0xE] _08107B0E: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y ldrh r1, [r2] movs r0, 0x16 bl SetGpuReg @@ -18264,8 +18264,8 @@ sub_8107B84: @ 8107B84 sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 - ldr r1, =gUnknown_02022E18 - ldr r2, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_X + ldr r2, =gBattle_BG1_Y ldr r0, =gTasks lsls r4, r5, 2 adds r4, r5 @@ -18425,8 +18425,8 @@ sub_8107CC4: @ 8107CC4 lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 - ldr r7, =gUnknown_02022E18 - ldr r0, =gUnknown_02022E1A + ldr r7, =gBattle_BG1_X + ldr r0, =gBattle_BG1_Y mov r8, r0 ldr r6, =gTasks lsls r0, r5, 2 @@ -21049,14 +21049,14 @@ sub_8109198: @ 8109198 cmp r4, r0 bne _081091DE movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity ldrb r1, [r5] lsls r0, 24 lsrs r0, 24 cmp r1, r0 beq _081091D6 movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity ldrb r1, [r5] lsls r0, 24 lsrs r0, 24 @@ -26948,10 +26948,10 @@ sub_810C0A0: @ 810C0A0 movs r2, 0x1 bl lcd_bg_operations _0810C0E2: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -26999,7 +26999,7 @@ sub_810C164: @ 810C164 sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r2, =0x0000ffff adds r0, r2, 0 ldrh r2, [r1] @@ -27150,10 +27150,10 @@ _0810C29C: movs r2, 0 bl lcd_bg_operations _0810C2B0: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -27230,10 +27230,10 @@ sub_810C324: @ 810C324 movs r2, 0x1 bl lcd_bg_operations _0810C366: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -27283,7 +27283,7 @@ sub_810C3F0: @ 810C3F0 sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldr r3, =gTasks lsls r1, r4, 2 adds r1, r4 @@ -27422,10 +27422,10 @@ _0810C50C: movs r2, 0 bl lcd_bg_operations _0810C520: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -28050,7 +28050,7 @@ sub_810C9E4: @ 810C9E4 ldrh r0, [r4, 0x2] lsls r0, 20 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 @@ -33064,7 +33064,7 @@ _0810F212: bne _0810F2B8 _0810F22E: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 adds r7, r4, 0 @@ -33193,7 +33193,7 @@ sub_810F340: @ 810F340 push {r4,r5,lr} adds r5, r0, 0 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 movs r1, 0x3C @@ -33370,7 +33370,7 @@ sub_810F46C: @ 810F46C cmp r0, 0 bne _0810F502 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 @@ -33441,7 +33441,7 @@ sub_810F524: @ 810F524 cmp r0, 0 bne _0810F57C movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 @@ -34597,14 +34597,14 @@ _0810FE92: lsrs r0, 24 cmp r0, 0x1 bne _0810FEB8 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r4, 0x1C] ldr r0, =0x04000014 b _0810FEC0 .pool _0810FEB8: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r0, [r0] strh r0, [r4, 0x1C] ldr r0, =0x04000018 @@ -36221,9 +36221,9 @@ sub_8110BCC: @ 8110BCC movs r2, 0x1 bl lcd_bg_operations _08110C10: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r5, [r0] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y strh r5, [r4] movs r0, 0x14 movs r1, 0 @@ -36293,7 +36293,7 @@ sub_8110CB0: @ 8110CB0 adds r2, r1, 0 cmp r0, 0 bne _08110CE4 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r3, =0x0000fffa adds r0, r3, 0 ldrh r3, [r1] @@ -36301,12 +36301,12 @@ sub_8110CB0: @ 8110CB0 b _08110CEA .pool _08110CE4: - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 _08110CEA: strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldr r3, =0x0000ffff adds r0, r3, 0 ldrh r3, [r1] @@ -36442,10 +36442,10 @@ _08110DFC: movs r2, 0 bl lcd_bg_operations _08110E10: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -41115,13 +41115,13 @@ sub_81133E8: @ 81133E8 bne _08113424 ldr r0, =0x04000014 str r0, [sp] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X b _0811342A .pool _08113424: ldr r0, =0x04000018 str r0, [sp] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X _0811342A: ldrh r0, [r0] strh r0, [r4, 0xC] @@ -42107,7 +42107,7 @@ _08113C1E: add r4, sp, 0xC adds r0, r4, 0 bl sub_80A6B30 - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r5, 0x1C] ldr r1, =0x00003f42 @@ -42125,11 +42125,11 @@ _08113C1E: lsls r0, 24 cmp r0, 0 bne _08113CB0 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X b _08113CAA .pool _08113C80: - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r0, [r0] strh r0, [r5, 0x1C] ldr r1, =0x00003f44 @@ -42146,7 +42146,7 @@ _08113C80: lsls r0, 24 cmp r0, 0 bne _08113CB0 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X _08113CAA: ldrh r0, [r1] adds r0, 0xF0 @@ -42426,14 +42426,14 @@ _08113EF8: ldr r1, =0x00003f42 movs r0, 0x50 bl SetGpuReg - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X b _08113F2E .pool _08113F24: ldr r1, =0x00003f44 movs r0, 0x50 bl SetGpuReg - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X _08113F2E: ldrh r0, [r1] adds r0, 0xF0 @@ -42447,7 +42447,7 @@ _08113F40: bne _08113F68 mov r0, sp bl sub_80A6B30 - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r5, 0x1C] mov r0, sp @@ -42459,7 +42459,7 @@ _08113F40: b _08113F78 .pool _08113F68: - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r0, [r0] strh r0, [r5, 0x1C] movs r0, 0 @@ -43324,7 +43324,7 @@ _0811465C: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldr r0, =gSprites lsls r1, r4, 4 adds r1, r4 @@ -43334,7 +43334,7 @@ _0811465C: negs r0, r0 adds r0, 0x60 strh r0, [r2] - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y ldrh r0, [r1, 0x22] negs r0, r0 adds r0, 0x20 @@ -43399,7 +43399,7 @@ sub_8114748: @ 8114748 adds r0, 0x4 movs r5, 0 strh r0, [r4, 0x1C] - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldrh r3, [r2] subs r1, r3, 0x4 strh r1, [r2] @@ -43586,7 +43586,7 @@ _08114902: beq _0811492E _08114908: adds r0, r4, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 @@ -44104,17 +44104,17 @@ _08114D3C: strh r0, [r4, 0x1E] cmp r0, 0x1 bne _08114D70 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r4, 0x20] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y b _08114D78 .pool _08114D70: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r0, [r0] strh r0, [r4, 0x20] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y _08114D78: ldrh r0, [r0] strh r0, [r4, 0x22] @@ -44189,11 +44189,11 @@ _08114DF6: ldrsh r0, [r4, r1] cmp r0, 0x1 bne _08114E20 - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y b _08114E22 .pool _08114E20: - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y _08114E22: ldrh r0, [r4, 0x22] subs r0, r2 @@ -44210,11 +44210,11 @@ _08114E22: ldrsh r0, [r4, r3] cmp r0, 0x1 bne _08114E4C - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y b _08114E4E .pool _08114E4C: - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y _08114E4E: ldrh r0, [r4, 0x22] subs r0, r2 @@ -44296,11 +44296,11 @@ sub_8114EB4: @ 8114EB4 lsrs r0, 24 cmp r0, 0x1 bne _08114F00 - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y b _08114F02 .pool _08114F00: - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y _08114F02: strh r4, [r0] adds r0, r5, 0 @@ -44450,11 +44450,11 @@ _08115018: strh r0, [r4, 0x1E] cmp r0, 0x1 bne _08115044 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X b _08115046 .pool _08115044: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X _08115046: ldrh r0, [r0] strh r0, [r4, 0x20] @@ -44540,13 +44540,13 @@ sub_81150E0: @ 81150E0 lsrs r4, r2, 16 cmp r0, 0x1 bne _08115104 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r3, [r0] ldr r0, =0x04000014 b _0811510A .pool _08115104: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r3, [r0] ldr r0, =0x04000018 _0811510A: @@ -47996,7 +47996,7 @@ _08116CAC: adds r1, 0x1 movs r2, 0x2 bl LoadPalette - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldr r0, =gSprites lsls r1, r4, 4 adds r1, r4 @@ -48006,7 +48006,7 @@ _08116CAC: negs r0, r0 adds r0, 0x20 strh r0, [r2] - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y ldrh r0, [r1, 0x22] negs r0, r0 adds r0, 0x20 @@ -48050,7 +48050,7 @@ sub_8116D64: @ 8116D64 movs r1, 0 mov r8, r1 strh r0, [r5, 0x1C] - ldr r7, =gUnknown_02022E1A + ldr r7, =gBattle_BG1_Y ldrh r2, [r7] subs r1, r2, 0x4 strh r1, [r7] @@ -48537,10 +48537,10 @@ _081171F8: movs r2, 0x20 bl LoadCompressedPalette _08117206: - ldr r3, =gUnknown_02022E18 + ldr r3, =gBattle_BG1_X movs r2, 0 strh r2, [r3] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] ldr r1, =gUnknown_0203A110 ldr r0, [r1] @@ -48645,7 +48645,7 @@ sub_81172EC: @ 81172EC push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y ldr r1, =gTasks lsls r0, r6, 2 adds r0, r6 @@ -49497,10 +49497,10 @@ _081179CC: ldr r0, [sp, 0x5C] movs r2, 0x20 bl LoadCompressedPalette - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] ldr r1, =gTasks mov r2, r9 @@ -49563,7 +49563,7 @@ _08117A7E: ldrsh r0, [r3, r1] cmp r0, 0 bge _08117AA4 - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y lsls r1, r4, 16 asrs r1, 24 ldrh r0, [r2] @@ -49572,7 +49572,7 @@ _08117A7E: b _08117AB0 .pool _08117AA4: - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y lsls r0, r4, 16 asrs r0, 24 ldrh r2, [r1] @@ -50529,14 +50529,14 @@ sub_811828C: @ 811828C lsls r0, 24 lsrs r0, 24 bl DestroyTask - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -50569,7 +50569,7 @@ task_battle_intro_80BC47C: @ 81182EC sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 strh r0, [r1] @@ -50697,7 +50697,7 @@ _08118400: ldrsh r0, [r2, r1] cmp r0, 0x1 bne _08118420 - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y ldrh r1, [r2] ldr r0, =0x0000ffb0 cmp r1, r0 @@ -50706,7 +50706,7 @@ _08118400: b _0811842C .pool _08118420: - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y ldrh r1, [r2] ldr r0, =0x0000ffc8 cmp r1, r0 @@ -50861,13 +50861,13 @@ _08118568: cmp r0, 0x4 bne _08118580 _0811856C: - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x8 b _0811857E .pool _08118578: - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 _0811857E: @@ -50882,7 +50882,7 @@ _08118580: adds r6, r0, 0 cmp r1, 0x4 bne _081185E4 - ldr r7, =gUnknown_02022E1A + ldr r7, =gBattle_BG1_Y ldrh r0, [r4, 0x14] bl Cos2 lsls r0, 16 @@ -51202,7 +51202,7 @@ task_battle_intro_anim: @ 8118844 sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x8 strh r0, [r1] @@ -51505,7 +51505,7 @@ task00_battle_intro_wireless: @ 8118AC0 ldrsh r0, [r7, r2] cmp r0, 0 bne _08118B36 - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldrh r1, [r2] movs r0, 0x80 lsls r0, 8 @@ -51519,7 +51519,7 @@ task00_battle_intro_wireless: @ 8118AC0 _08118AFE: adds r0, r1, 0x3 strh r0, [r2] - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X ldrh r0, [r1] subs r0, 0x3 strh r0, [r1] @@ -51878,10 +51878,10 @@ _08118DD4: ldr r2, =0x0000ffd0 adds r0, r2, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X movs r0, 0xF0 strh r0, [r1] - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X subs r2, 0xC0 adds r0, r2, 0 strh r0, [r1] @@ -51958,10 +51958,10 @@ _08118EC2: subs r0, r1, 0x2 strh r0, [r3, 0xC] _08118ED8: - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r3, 0xC] strh r0, [r1] - ldr r2, =gUnknown_02022E1C + ldr r2, =gBattle_BG2_X negs r1, r0 strh r1, [r2] lsls r0, 16 @@ -51977,7 +51977,7 @@ _08118F00: ldrh r0, [r1] adds r3, r0, 0x2 strh r3, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y ldrh r0, [r1] adds r0, 0x2 strh r0, [r1] @@ -52078,7 +52078,7 @@ sub_8118FBC: @ 8118FBC lsls r5, 16 lsrs r5, 16 adds r0, r4, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 ldr r1, =gBattleSpritesGfx diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 46b09081d4..f219c6988d 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -1655,11 +1655,11 @@ _0815AE08: strh r2, [r5, 0x16] cmp r7, 0x1 bne _0815AE30 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X b _0815AE32 .pool _0815AE30: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X _0815AE32: ldrh r2, [r0] strh r2, [r5, 0x18] @@ -3385,7 +3385,7 @@ _0815BC02: lsls r0, 24 cmp r0, 0 beq _0815BC34 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r3, =0x0000ffc8 b _0815BC5C .pool @@ -3396,19 +3396,19 @@ _0815BC34: lsls r0, 24 cmp r0, 0 beq _0815BC58 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r2, =0x0000ff79 adds r0, r2, 0 b _0815BC5E .pool _0815BC58: - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r3, =0x0000fff6 _0815BC5C: adds r0, r3, 0 _0815BC5E: strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y movs r0, 0 strh r0, [r1] mov r0, sp @@ -3428,10 +3428,10 @@ _0815BC5E: adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0x1C] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r1, 0x1E] ldrh r0, [r1, 0x8] @@ -3507,7 +3507,7 @@ _0815BD20: ldrsh r0, [r4, r2] cmp r0, 0 bne _0815BDF2 - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldr r1, =gUnknown_085CE460 movs r3, 0xC ldrsh r0, [r4, r3] @@ -3577,10 +3577,10 @@ _0815BDC8: movs r1, 0x4 movs r2, 0x1 bl lcd_bg_operations - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -3990,7 +3990,7 @@ _0815C124: lsls r0, 24 cmp r0, 0 beq _0815C15C - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r3, =0x0000ffc8 adds r0, r3, 0 b _0815C1CA @@ -4008,48 +4008,48 @@ _0815C15C: bne _0815C1B4 cmp r4, 0x1 bne _0815C180 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r2, =0x0000ff65 adds r0, r2, 0 strh r0, [r1] _0815C180: cmp r4, 0x3 bne _0815C18C - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r3, =0x0000ff8d adds r0, r3, 0 strh r0, [r1] _0815C18C: cmp r4, 0 bne _0815C196 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X movs r0, 0xE strh r0, [r1] _0815C196: cmp r4, 0x2 bne _0815C1CC - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r2, =0x0000ffec b _0815C1C8 .pool _0815C1B4: cmp r4, 0x1 bne _0815C1C0 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r3, =0x0000ff79 adds r0, r3, 0 strh r0, [r1] _0815C1C0: cmp r4, 0 bne _0815C1CC - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldr r2, =0x0000fff6 _0815C1C8: adds r0, r2, 0 _0815C1CA: strh r0, [r1] _0815C1CC: - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y movs r0, 0 strh r0, [r1] mov r0, sp @@ -4069,10 +4069,10 @@ _0815C1CC: adds r1, r6 lsls r1, 3 adds r1, r0 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0x1C] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r1, 0x1E] b _0815C2A4 @@ -4092,7 +4092,7 @@ _0815C224: lsrs r0, 24 cmp r0, 0x1 bne _0815C268 - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldr r1, =gUnknown_085CE4A4 movs r3, 0xC ldrsh r0, [r5, r3] @@ -4105,7 +4105,7 @@ _0815C224: b _0815C27A .pool _0815C268: - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X ldr r1, =gUnknown_085CE4A4 movs r3, 0xC ldrsh r0, [r5, r3] @@ -4235,10 +4235,10 @@ _0815C36C: movs r1, 0x4 movs r2, 0x1 bl lcd_bg_operations - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -6133,9 +6133,9 @@ _0815D2B4: ldr r1, =0x00003f42 movs r0, 0x50 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r5, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y b _0815D316 .pool _0815D304: @@ -6144,9 +6144,9 @@ _0815D304: ldr r1, =0x00003f44 movs r0, 0x50 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r5, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y _0815D316: ldrh r3, [r0] movs r7, 0 @@ -6223,17 +6223,17 @@ sub_815D398: @ 815D398 lsrs r0, 24 cmp r0, 0x1 bne _0815D3D8 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r0, [r0] str r0, [sp, 0x4] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y b _0815D3E0 .pool _0815D3D8: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r0, [r0] str r0, [sp, 0x4] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y _0815D3E0: ldrh r0, [r0] str r0, [sp, 0x8] diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index abbca8ff76..85f94c20e6 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -168,12 +168,12 @@ sub_8170478: @ 8170478 lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r7, 0x20] negs r0, r0 adds r0, 0x20 strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r7, 0x22] negs r0, r0 subs r0, 0x20 @@ -225,7 +225,7 @@ sub_8170660: @ 8170660 adds r1, r0 movs r3, 0 strh r1, [r5, 0x22] - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y lsls r0, r1, 16 lsrs r0, 24 ldrh r4, [r2] @@ -1283,7 +1283,7 @@ _08170F54: lsls r4, 24 lsrs r4, 24 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl sub_80A82E4 @@ -1335,7 +1335,7 @@ _08170F54: ldr r0, =SpriteCallbackDummy str r0, [r4] movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankSpriteIds lsls r0, 24 lsrs r0, 24 @@ -1371,7 +1371,7 @@ sub_8171030: @ 8171030 lsrs r5, r0, 24 ldr r6, =gSprites movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankSpriteIds lsls r0, 24 lsrs r0, 24 @@ -1422,7 +1422,7 @@ sub_81710A8: @ 81710A8 lsrs r5, r0, 24 ldr r6, =gSprites movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gBankSpriteIds lsls r0, 24 lsrs r0, 24 @@ -1438,7 +1438,7 @@ sub_81710A8: @ 81710A8 cmp r0, 0 bge _081710F4 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -5575,7 +5575,7 @@ sub_817330C: @ 817330C movs r0, 0x1E strh r0, [r4, 0x2E] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0 @@ -5587,7 +5587,7 @@ sub_817330C: @ 817330C adds r0, r1 strh r0, [r4, 0x32] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -5732,7 +5732,7 @@ sub_817345C: @ 817345C .pool _08173478: movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAnimationBankAttacker strb r0, [r1] movs r0, 0x1 @@ -5740,12 +5740,12 @@ _08173478: .pool _0817348C: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAnimationBankAttacker strb r0, [r1] movs r0, 0 _08173498: - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAnimationBankTarget strb r0, [r1] _081734A0: diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 4400217ae5..69d4776d4d 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5323,7 +5323,7 @@ _08062062: cmp r0, 0 beq _0806209C movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r5, =gBankTarget strb r0, [r5] ldr r0, =gAbsentBankFlags @@ -5337,7 +5337,7 @@ _08062062: cmp r1, 0 beq _0806209C movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r5] _0806209C: ldr r0, =gBankTarget @@ -5394,7 +5394,7 @@ _08062108: lsls r1, 24 lsrs r1, 24 adds r0, r1, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 16 @@ -5406,7 +5406,7 @@ _08062108: .pool _0806213C: movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 16 @@ -5468,7 +5468,7 @@ sub_8062188: @ 8062188 cmp r0, 0 bne _080621D4 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 adds r7, r5, 0 @@ -5476,11 +5476,11 @@ sub_8062188: @ 8062188 .pool _080621D4: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r7, r0, 24 movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 _080621E8: diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index ddb739b72f..5f7e1b9544 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -358,7 +358,7 @@ _0805775A: cmp r0, 0x2 bne _080577E8 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAbsentBankFlags ldrb r1, [r1] ldr r2, =gBitTable @@ -622,7 +622,7 @@ _080579F0: mov r1, sp adds r0, r1, r4 ldrb r0, [r0] - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r5] ldr r1, =gNoOfAllBanks lsls r0, 24 @@ -750,7 +750,7 @@ _08057B14: mov r1, sp adds r0, r1, r4 ldrb r0, [r0] - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r5] ldr r1, =gNoOfAllBanks lsls r0, 24 @@ -942,7 +942,7 @@ _08057CC4: movs r0, 0x1 ands r0, r1 eors r0, r2 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gUnknown_03005D74 strb r0, [r1] _08057CDE: @@ -1035,7 +1035,7 @@ _08057D80: .pool _08057DA8: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gAbsentBankFlags ldrb r1, [r1] ldr r2, =gBitTable @@ -1052,7 +1052,7 @@ _08057DA8: _08057DD0: movs r0, 0x1 _08057DD2: - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gUnknown_03005D74 _08057DD8: strb r0, [r1] @@ -8024,7 +8024,7 @@ sub_805BBC4: @ 805BBC4 ldr r5, =gActiveBank ldrb r4, [r5] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -8063,7 +8063,7 @@ sub_805BC18: @ 805BC18 strb r0, [r1] ldrb r4, [r5] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -8551,7 +8551,7 @@ _0805C062: movs r1, 0 bl sub_8059CB4 ldr r0, =gText_WhatWillPkmnDo - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0x1 bl sub_814F9EC diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index f14b5bc51c..784eacab11 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -5045,7 +5045,7 @@ _081BDB02: cmp r0, 0 beq _081BDB3C movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r4, =gBankTarget strb r0, [r4] ldr r0, =gAbsentBankFlags @@ -5059,7 +5059,7 @@ _081BDB02: cmp r1, 0 beq _081BDB3C movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity strb r0, [r4] _081BDB3C: ldr r0, =gBankTarget @@ -5093,11 +5093,11 @@ sub_81BDB7C: @ 81BDB7C cmp r4, 0x6 bne _081BDBD0 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 movs r4, 0x3 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index b02f954711..cc149ea4f7 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -700,7 +700,7 @@ sub_8159910: @ 8159910 ldr r5, =gActiveBank ldrb r4, [r5] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -739,7 +739,7 @@ sub_8159964: @ 8159964 strb r0, [r1] ldrb r4, [r5] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -879,7 +879,7 @@ _08159AAE: movs r1, 0 bl sub_8059CB4 ldr r0, =gText_WhatWillPkmnDo2 - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0x1 bl sub_814F9EC diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index e723a522ba..eab7174664 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3232,7 +3232,7 @@ sub_816A084: @ 816A084 ldr r5, =gActiveBank ldrb r4, [r5] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -3271,7 +3271,7 @@ sub_816A0D8: @ 816A0D8 strb r0, [r1] ldrb r4, [r5] movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -3693,7 +3693,7 @@ _0816A48A: movs r1, 0 bl sub_8059CB4 ldr r0, =gText_WhatWillWallyDo - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0x1 bl sub_814F9EC diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 8d39505ed7..1a0b5ae3db 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -3165,9 +3165,9 @@ _0819044E: strh r4, [r0] ldr r0, =gUnknown_02022E16 strh r4, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r4, [r0] ldr r0, =gUnknown_02022E20 strh r4, [r0] @@ -3176,16 +3176,16 @@ _0819044E: mov r2, r9 cmp r2, 0x2 bne _081904DC - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] b _081904E6 .pool _081904DC: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] _081904E6: @@ -4371,9 +4371,9 @@ _08190E98: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y movs r0, 0xA0 strh r0, [r1] b _08190EE6 @@ -4384,9 +4384,9 @@ _08190ED4: ldr r1, =gUnknown_02022E16 movs r0, 0xA0 strh r0, [r1] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] _08190EE6: cmp r6, 0x1 @@ -4396,9 +4396,9 @@ _08190EE6: ldrb r1, [r0, 0x10] cmp r1, 0 bne _08190F50 - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r6, 0xA0 lsls r6, 1 adds r0, r6, 0 @@ -4424,12 +4424,12 @@ _08190EE6: b _08191084 .pool _08190F50: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r6, 0x80 lsls r6, 1 adds r0, r6, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y movs r4, 0 strh r4, [r0] ldr r3, =gUnknown_0860D080 @@ -4473,9 +4473,9 @@ _08190F9C: lsrs r0, 24 adds r1, 0x11 bl sub_8192F08 - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r5, [r0] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r3, 0xA0 lsls r3, 1 adds r0, r3, 0 @@ -4508,10 +4508,10 @@ _08190FF8: lsrs r0, 24 adds r1, 0x11 bl sub_8192F08 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 @@ -4529,12 +4529,12 @@ _08190FF8: b _08191084 .pool _0819104C: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gTasks @@ -4770,9 +4770,9 @@ _08191234: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldr r2, =0x0000ff60 adds r0, r2, 0 strh r0, [r1] @@ -4785,9 +4785,9 @@ _08191278: ldr r3, =0x0000ff60 adds r0, r3, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] _0819128C: cmp r6, 0x2 @@ -4797,9 +4797,9 @@ _0819128C: ldrb r1, [r0, 0x10] cmp r1, 0 bne _081912F4 - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r3, =gUnknown_0860D080 @@ -4823,10 +4823,10 @@ _0819128C: b _0819141C .pool _081912F4: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X movs r4, 0 strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] ldr r3, =gUnknown_0860D080 ldr r2, =gTasks @@ -4869,9 +4869,9 @@ _0819133C: lsrs r0, 24 adds r1, 0x11 bl sub_8192F08 - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r5, [r0] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r2, [r6] @@ -4902,10 +4902,10 @@ _08191394: lsrs r0, 24 adds r1, 0x11 bl sub_8192F08 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r2, [r6] @@ -4921,12 +4921,12 @@ _08191394: b _0819141C .pool _081913E4: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r4, 0x80 lsls r4, 1 adds r0, r4, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0 strh r0, [r1] ldr r1, =gTasks @@ -5162,12 +5162,12 @@ _081915CC: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X movs r6, 0x80 lsls r6, 1 adds r0, r6, 0 strh r0, [r2] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] b _08191622 .pool @@ -5179,9 +5179,9 @@ _0819160C: strh r0, [r1] ldr r0, =gUnknown_02022E16 strh r2, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] _08191622: ldr r0, =gUnknown_0203CD78 @@ -5189,12 +5189,12 @@ _08191622: ldrb r0, [r4, 0x10] cmp r0, 0 bne _08191688 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r4, 0x80 lsls r4, 1 adds r0, r4, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r3, =gUnknown_0860D080 @@ -5218,12 +5218,12 @@ _08191622: b _081916C6 .pool _08191688: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r6, 0x80 lsls r6, 1 adds r0, r6, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0 strh r0, [r1] ldr r3, =gUnknown_0860D15C @@ -5462,12 +5462,12 @@ _0819187C: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X movs r6, 0x80 lsls r6, 1 adds r0, r6, 0 strh r0, [r2] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] b _081918D2 .pool @@ -5479,9 +5479,9 @@ _081918BC: strh r0, [r1] ldr r0, =gUnknown_02022E16 strh r2, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] _081918D2: ldr r0, =gUnknown_0203CD78 @@ -5489,12 +5489,12 @@ _081918D2: ldrb r0, [r2, 0x10] cmp r0, 0 bne _08191924 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r4, 0x80 lsls r4, 1 adds r0, r4, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gTasks @@ -5510,10 +5510,10 @@ _081918D2: b _08191958 .pool _08191924: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gTasks @@ -5749,12 +5749,12 @@ _08191B08: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X movs r6, 0xFF lsls r6, 8 adds r0, r6, 0 strh r0, [r2] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] b _08191B5E .pool @@ -5766,9 +5766,9 @@ _08191B48: strh r0, [r1] ldr r0, =gUnknown_02022E16 strh r2, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] _08191B5E: ldr r0, =gUnknown_0203CD78 @@ -5776,19 +5776,19 @@ _08191B5E: ldrb r0, [r0, 0x10] cmp r0, 0x1 bne _08191B94 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] b _08191B9E .pool _08191B94: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] _08191B9E: ldr r4, =gUnknown_0860D15C @@ -6016,12 +6016,12 @@ _08191D68: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r2, =gUnknown_02022E18 + ldr r2, =gBattle_BG1_X movs r6, 0xFF lsls r6, 8 adds r0, r6, 0 strh r0, [r2] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] b _08191DBE .pool @@ -6033,9 +6033,9 @@ _08191DA8: strh r0, [r1] ldr r0, =gUnknown_02022E16 strh r2, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] _08191DBE: ldr r0, =gUnknown_0203CD78 @@ -6043,12 +6043,12 @@ _08191DBE: ldrb r0, [r2, 0x10] cmp r0, 0x2 bne _08191E10 - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r4, 0x80 lsls r4, 1 adds r0, r4, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gTasks @@ -6064,10 +6064,10 @@ _08191DBE: b _08191E44 .pool _08191E10: - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gTasks @@ -6310,11 +6310,11 @@ _08191FF8: ldrh r0, [r1] subs r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r1] subs r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y b _081920A4 .pool _08192038: @@ -6335,11 +6335,11 @@ _08192038: ldrh r0, [r1] adds r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r1] adds r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E1E + ldr r1, =gBattle_BG2_Y b _081920E8 .pool _08192078: @@ -6360,11 +6360,11 @@ _08192078: ldrh r0, [r1] subs r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] subs r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X _081920A4: ldrh r0, [r1] subs r0, 0x4 @@ -6389,11 +6389,11 @@ _081920BC: ldrh r0, [r1] adds r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x4 strh r0, [r1] - ldr r1, =gUnknown_02022E1C + ldr r1, =gBattle_BG2_X _081920E8: ldrh r0, [r1] adds r0, 0x4 @@ -10404,9 +10404,9 @@ _0819427C: strh r4, [r0] ldr r0, =gUnknown_02022E16 strh r4, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r4, [r0] movs r0, 0x2 movs r1, 0 @@ -11366,19 +11366,19 @@ sub_8194B70: @ 8194B70 ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg @@ -11494,11 +11494,11 @@ sub_8194CE4: @ 8194CE4 ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index bea4972e3f..2e48fdd729 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -20578,7 +20578,7 @@ _081A5328: negs r0, r0 strb r0, [r1, 0x1] ldr r0, =gText_JapaneseHonorific - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r4, =gDisplayedStringBattle adds r0, r4, 0 movs r1, 0xF @@ -20587,7 +20587,7 @@ _081A5328: movs r1, 0x10 bl sub_814F9EC ldr r0, =gText_RivalBuffer - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString adds r0, r4, 0 movs r1, 0x11 bl sub_814F9EC @@ -20601,7 +20601,7 @@ _081A5328: movs r1, 0x14 bl sub_814F9EC ldr r0, =gText_Judgement - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString adds r0, r4, 0 movs r1, 0x15 bl sub_814F9EC @@ -20685,7 +20685,7 @@ _081A5464: movs r3, 0x1 bl sub_81A5558 ldr r0, =gText_Judgement - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0x15 bl sub_814F9EC diff --git a/asm/battle_message.s b/asm/battle_message.s index f1f2447aab..96869a350b 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -687,7 +687,7 @@ _0814E6CC: ldr r7, [r0] _0814E6D8: adds r0, r7, 0 - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString _0814E6DE: pop {r3-r5} mov r8, r3 @@ -699,15 +699,15 @@ _0814E6DE: .pool thumb_func_end BufferStringBattle - thumb_func_start StrCpyDecodeToDisplayedStringBattle -StrCpyDecodeToDisplayedStringBattle: @ 814E6F0 + thumb_func_start BattleStringExpandPlaceholdersToDisplayedString +BattleStringExpandPlaceholdersToDisplayedString: @ 814E6F0 push {lr} ldr r1, =gDisplayedStringBattle bl BattleStringExpandPlaceholders pop {r1} bx r1 .pool - thumb_func_end StrCpyDecodeToDisplayedStringBattle + thumb_func_end BattleStringExpandPlaceholdersToDisplayedString thumb_func_start AppendStatusString AppendStatusString: @ 814E700 @@ -924,7 +924,7 @@ _0814E920: .pool _0814E92C: movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -943,7 +943,7 @@ _0814E92C: .pool _0814E960: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -962,7 +962,7 @@ _0814E960: .pool _0814E994: movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -981,7 +981,7 @@ _0814E994: .pool _0814E9C8: movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -1126,7 +1126,7 @@ _0814EB36: adds r1, r0, 0 movs r0, 0x1 ands r0, r1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -1147,7 +1147,7 @@ _0814EB74: adds r1, r0, 0 movs r0, 0x1 ands r0, r1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -1177,7 +1177,7 @@ _0814EBB0: adds r1, r0, 0 movs r0, 0x1 ands r0, r1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 @@ -1199,7 +1199,7 @@ _0814EBF8: adds r1, r0, 0 movs r0, 0x1 ands r0, r1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBattlePartyID lsls r0, 24 lsrs r0, 23 diff --git a/asm/contest.s b/asm/contest.s index 71e8ab0589..7e06522224 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -50,13 +50,13 @@ sub_80D7678: @ 80D7678 strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r0, =gUnknown_02022E20 strh r1, [r0] @@ -611,10 +611,10 @@ _080D7BF6: .pool _080D7C04: bl sub_80DE224 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] movs r0, 0x2 bl BeginFastPaletteFade @@ -1190,7 +1190,7 @@ _080D814C: strh r0, [r4, 0x8] b _080D822C _080D8176: - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r1] adds r0, 0x7 strh r0, [r1] @@ -1324,19 +1324,19 @@ vblank_cb_battle: @ 80D827C ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg @@ -1389,7 +1389,7 @@ sub_80D833C: @ 80D833C bne _080D840C ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] bl sub_80DCD48 ldr r1, =gPlttBufferUnfaded @@ -1520,7 +1520,7 @@ sub_80D8490: @ 80D8490 ldr r0, =gUnknown_02022E16 movs r1, 0xA0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] movs r6, 0 ldr r0, =gUnknown_02039F25 @@ -1773,7 +1773,7 @@ _080D86E4: ldr r0, =gUnknown_02022E16 movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r1, =gTasks lsls r0, r7, 2 @@ -2044,7 +2044,7 @@ sub_80D895C: @ 80D895C ldr r0, =gUnknown_02022E16 movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] movs r0, 0 bl sub_80DC490 @@ -5325,7 +5325,7 @@ sub_80DA5E8: @ 80DA5E8 ldr r0, =gUnknown_02022E16 movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r4, =gUnknown_02039F34 movs r3, 0 @@ -5404,9 +5404,9 @@ sub_80DA6B4: @ 80DA6B4 cmp r4, 0 bne _080DA6EA bl sub_80DE224 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y movs r0, 0xA0 strh r0, [r1] movs r0, 0x62 @@ -5432,7 +5432,7 @@ sub_80DA700: @ 80DA700 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r1] subs r0, 0x7 strh r0, [r1] @@ -8519,7 +8519,7 @@ sub_80DBF68: @ 80DBF68 ldr r0, =gUnknown_02022E16 movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] bl sub_80DB89C ldr r0, =gUnknown_0827E8DA @@ -12881,10 +12881,10 @@ sub_80DE224: @ 80DE224 ldrh r1, [r5] movs r0, 0xC bl SetGpuReg - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X movs r0, 0xF0 strh r0, [r1] - ldr r4, =gUnknown_02022E1A + ldr r4, =gBattle_BG1_Y movs r0, 0xA0 strh r0, [r4] movs r0, 0x14 @@ -13004,9 +13004,9 @@ sub_80DE350: @ 80DE350 ldrh r1, [r3] movs r0, 0xA bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r5, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r5, [r0] ldr r7, =gSprites _080DE3CA: @@ -13051,10 +13051,10 @@ sub_80DE424: @ 80DE424 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y movs r0, 0xA0 strh r0, [r1] movs r0, 0x62 @@ -13078,7 +13078,7 @@ sub_80DE464: @ 80DE464 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r1] subs r0, 0x7 strh r0, [r1] @@ -13233,7 +13233,7 @@ sub_80DE5C0: @ 80DE5C0 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y ldrh r0, [r1] adds r0, 0x7 strh r0, [r1] diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 864f16c5e2..8da1eccba0 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -97,13 +97,13 @@ _080F57E0: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r0, =gUnknown_02022E20 strh r1, [r0] @@ -449,19 +449,19 @@ sub_80F5C24: @ 80F5C24 ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg @@ -1989,7 +1989,7 @@ sub_80F69B8: @ 80F69B8 _080F69DE: adds r0, r7, 0 ldr r1, [sp, 0x28] - bl sub_80D2EDC + bl GetMonIconPtr adds r3, r0, 0 lsls r0, r5, 9 adds r0, 0x80 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index afc3c843b5..f96a7355a5 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -170,13 +170,13 @@ evolution_cutscene: @ 813DA8C strh r2, [r0] ldr r0, =gUnknown_02022E16 strh r2, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r2, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r2, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r2, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r2, [r0] ldr r1, =gUnknown_02022E20 movs r2, 0x80 @@ -464,13 +464,13 @@ sub_813DD7C: @ 813DD7C strh r4, [r0] ldr r0, =gUnknown_02022E16 strh r4, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r4, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] ldr r1, =gUnknown_02022E20 movs r2, 0x80 @@ -634,13 +634,13 @@ _0813DFE0: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r2, =gUnknown_02022E20 movs r3, 0x80 @@ -945,13 +945,13 @@ sub_813E1D4: @ 813E1D4 strh r4, [r0] ldr r0, =gUnknown_02022E16 strh r4, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r4, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r4, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r4, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r4, [r0] ldr r1, =gUnknown_02022E20 movs r2, 0x80 @@ -1892,12 +1892,12 @@ _0813EC1E: beq _0813EC2A b _0813F1A4 _0813EC2A: - bl sub_804F574 + bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, =0x0000016f bl PlayFanfare ldr r0, =gBattleStringsTable ldr r0, [r0, 0xC] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -1991,10 +1991,10 @@ _0813ED0A: beq _0813ED16 b _0813F1A4 _0813ED16: - bl sub_804F574 + bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, =gBattleStringsTable ldr r0, [r0, 0x10] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2023,7 +2023,7 @@ _0813ED56: _0813ED62: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x14] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2048,7 +2048,7 @@ _0813ED90: bne _0813EDCE ldr r0, =gBattleStringsTable ldr r0, [r0, 0x18] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2289,7 +2289,7 @@ _0813EFC8: ldr r3, =0x000004cc adds r0, r3 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2338,7 +2338,7 @@ _0813F05C: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2367,7 +2367,7 @@ _0813F09E: _0813F0AA: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x1C] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2395,7 +2395,7 @@ _0813F0D8: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2411,7 +2411,7 @@ _0813F0D8: _0813F120: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x20] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -2431,7 +2431,7 @@ _0813F120: _0813F154: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x24] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC @@ -3059,12 +3059,12 @@ _0813F756: beq _0813F762 b _0813FCC4 _0813F762: - bl sub_804F574 + bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, =0x0000016f bl PlayFanfare ldr r0, =gBattleStringsTable ldr r0, [r0, 0xC] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3160,10 +3160,10 @@ _0813F846: beq _0813F852 b _0813FCC4 _0813F852: - bl sub_804F574 + bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, =gBattleStringsTable ldr r0, [r0, 0x10] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3193,7 +3193,7 @@ _0813F892: _0813F89E: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x14] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3219,7 +3219,7 @@ _0813F8CC: bne _0813F90C ldr r0, =gBattleStringsTable ldr r0, [r0, 0x18] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3299,7 +3299,7 @@ _0813F98C: lsls r1, 3 adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3336,7 +3336,7 @@ _0813F9E4: lsls r1, 3 adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3441,7 +3441,7 @@ _0813FAEC: ldr r1, =0x000004cc adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3481,7 +3481,7 @@ _0813FB3C: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3511,7 +3511,7 @@ _0813FBB2: _0813FBBE: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x1C] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3540,7 +3540,7 @@ _0813FBEC: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3557,7 +3557,7 @@ _0813FBEC: _0813FC38: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x20] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3578,7 +3578,7 @@ _0813FC38: _0813FC70: ldr r0, =gBattleStringsTable ldr r0, [r0, 0x24] - bl StrCpyDecodeToDisplayedStringBattle + bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 @@ -3638,19 +3638,19 @@ sub_813FCDC: @ 813FCDC ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg @@ -3682,19 +3682,19 @@ sub_813FD64: @ 813FD64 ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg @@ -3852,9 +3852,9 @@ sub_813FEE8: @ 813FEE8 push {r6,r7} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X mov r8, r0 - ldr r1, =gUnknown_02022E1A + ldr r1, =gBattle_BG1_Y mov r9, r1 ldr r1, =gTasks lsls r0, r5, 2 @@ -3865,8 +3865,8 @@ sub_813FEE8: @ 813FEE8 ldrsh r0, [r0, r2] cmp r0, 0 bne _0813FF28 - ldr r7, =gUnknown_02022E1C - ldr r6, =gUnknown_02022E1E + ldr r7, =gBattle_BG2_X + ldr r6, =gBattle_BG2_Y b _0813FF2C .pool _0813FF28: @@ -4130,12 +4130,12 @@ sub_8140174: @ 8140174 movs r0, 0x50 movs r1, 0 bl SetGpuReg - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] movs r0, 0x1 movs r1, 0x5 diff --git a/asm/menu.s b/asm/menu.s index 8bb9dc436c..71ff9218cd 100755 --- a/asm/menu.s +++ b/asm/menu.s @@ -5201,7 +5201,7 @@ sub_819A25C: @ 819A25C lsrs r4, 24 lsls r0, 16 lsrs r0, 16 - bl sub_80D30B0 + bl GetValidMonIconPalettePtr adds r1, r4, 0 movs r2, 0x20 bl LoadPalette @@ -5228,7 +5228,7 @@ sub_819A27C: @ 819A27C lsls r5, 16 lsrs r5, 16 movs r2, 0x1 - bl sub_80D2EDC + bl GetMonIconPtr adds r1, r0, 0 movs r0, 0x20 str r0, [sp] diff --git a/asm/party_menu.s b/asm/party_menu.s index 1e47701ae3..2b320f86ee 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -16228,7 +16228,7 @@ _081B8CBE: bne _081B8CFC movs r5, 0x1 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity mov r2, sp ldr r1, =gBattlePartyID lsls r0, 24 @@ -16255,7 +16255,7 @@ _081B8CF0: _081B8CFC: movs r5, 0x2 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity mov r1, sp ldr r4, =gBattlePartyID lsls r0, 24 @@ -16264,7 +16264,7 @@ _081B8CFC: ldrh r0, [r0] strb r0, [r1] movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity mov r1, sp lsls r0, 24 lsrs r0, 23 @@ -16344,19 +16344,19 @@ sub_81B8D88: @ 81B8D88 cmp r0, 0 bne _081B8DB0 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x2 b _081B8DBC _081B8DB0: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x3 _081B8DBC: - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r6, r0, 24 bl sub_81B1250 diff --git a/asm/pokeball.s b/asm/pokeball.s index 06958d7d2c..557813c198 100755 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -185,7 +185,7 @@ _08075548: .pool _08075584: movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity ldr r1, =gBankTarget strb r0, [r1] movs r0, 0x1 @@ -1199,13 +1199,13 @@ _08075DD4: lsrs r0, 16 mov r9, r0 movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 cmp r5, r0 beq _08075E00 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -1261,13 +1261,13 @@ _08075E70: .pool _08075E80: movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 cmp r5, r0 beq _08075E9C movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -1830,7 +1830,7 @@ _080762F8: movs r0, 0x3A ldrsh r4, [r5, r0] movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -1903,7 +1903,7 @@ sub_8076398: @ 8076398 movs r0, 0x3A ldrsh r4, [r5, r0] movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 cmp r4, r0 diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s index e90253ab0c..6009bd3f36 100755 --- a/asm/pokemon_icon.s +++ b/asm/pokemon_icon.s @@ -32,7 +32,7 @@ sub_80D2CC4: @ 80D2CC4 str r0, [sp, 0x18] adds r0, r4, 0 adds r2, r5, 0 - bl sub_80D2EDC + bl GetMonIconPtr str r0, [sp, 0x1C] ldr r0, =gUnknown_0857C5B4 str r0, [sp, 0x20] @@ -271,9 +271,9 @@ _080D2ED2: bx r1 thumb_func_end sub_80D2E84 - thumb_func_start sub_80D2EDC -@ void *sub_80D2EDC(u16 speciesId, u32 personality, bool32) -sub_80D2EDC: @ 80D2EDC + thumb_func_start GetMonIconPtr +@ void *GetMonIconPtr(u16 speciesId, u32 personality, bool32) +GetMonIconPtr: @ 80D2EDC push {r4,lr} adds r4, r2, 0 lsls r0, 16 @@ -286,7 +286,7 @@ sub_80D2EDC: @ 80D2EDC pop {r4} pop {r1} bx r1 - thumb_func_end sub_80D2EDC + thumb_func_end GetMonIconPtr thumb_func_start sub_80D2EF8 sub_80D2EF8: @ 80D2EF8 @@ -534,8 +534,8 @@ sub_80D30A0: @ 80D30A0 .pool thumb_func_end sub_80D30A0 - thumb_func_start sub_80D30B0 -sub_80D30B0: @ 80D30B0 + thumb_func_start GetValidMonIconPalettePtr +GetValidMonIconPalettePtr: @ 80D30B0 push {lr} lsls r0, 16 lsrs r2, r0, 16 @@ -556,7 +556,7 @@ _080D30C2: pop {r1} bx r1 .pool - thumb_func_end sub_80D30B0 + thumb_func_end GetValidMonIconPalettePtr thumb_func_start sub_80D30DC sub_80D30DC: @ 80D30DC diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s index 69895d5d01..5dc6452e9c 100644 --- a/asm/pokemon_item_effect.s +++ b/asm/pokemon_item_effect.s @@ -1155,7 +1155,7 @@ _0806C6AE: movs r0, 0 movs r1, 0 movs r2, 0 - bl EmitGetAttributes + bl EmitGetMonData ldrb r0, [r4] bl MarkBufferBankForExecution strb r5, [r4] diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 6cca9c1448..d94da87b19 100755 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -17910,7 +17910,7 @@ sub_80D07B0: @ 80D07B0 beq _080D0828 adds r0, r5, 0 movs r2, 0x1 - bl sub_80D2EDC + bl GetMonIconPtr adds r4, r0, 0 adds r0, r5, 0 bl sub_80D3080 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 97cc16c77b..77d107f3df 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -103,13 +103,13 @@ _080A93B0: strh r1, [r0] ldr r0, =gUnknown_02022E16 strh r1, [r0] - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X strh r1, [r0] - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y strh r1, [r0] - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X strh r1, [r0] - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y strh r1, [r0] ldr r0, =gUnknown_02022E20 strh r1, [r0] @@ -223,7 +223,7 @@ _080A94F0: _080A94F8: bl sub_805EC84 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -247,7 +247,7 @@ _080A94F8: cmp r0, 0 beq _080A955C movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/rom3.s b/asm/rom3.s index bf68c86c8f..1317214931 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2134,8 +2134,8 @@ _0803389C: .pool thumb_func_end sub_803375C - thumb_func_start EmitGetAttributes -EmitGetAttributes: @ 80338B4 + thumb_func_start EmitGetMonData +EmitGetMonData: @ 80338B4 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -2152,7 +2152,7 @@ EmitGetAttributes: @ 80338B4 pop {r0} bx r0 .pool - thumb_func_end EmitGetAttributes + thumb_func_end EmitGetMonData thumb_func_start dp01_build_cmdbuf_x01_a_b_0 dp01_build_cmdbuf_x01_a_b_0: @ 80338D8 @@ -2175,8 +2175,8 @@ dp01_build_cmdbuf_x01_a_b_0: @ 80338D8 .pool thumb_func_end dp01_build_cmdbuf_x01_a_b_0 - thumb_func_start EmitSetAttributes -EmitSetAttributes: @ 8033900 + thumb_func_start EmitSetMonData +EmitSetMonData: @ 8033900 push {r4-r6,lr} ldr r4, [sp, 0x10] lsls r0, 24 @@ -2209,7 +2209,7 @@ _0803392E: pop {r0} bx r0 .pool - thumb_func_end EmitSetAttributes + thumb_func_end EmitSetMonData thumb_func_start sub_8033940 sub_8033940: @ 8033940 @@ -2809,8 +2809,8 @@ dp01_build_cmdbuf_x12_a_bb: @ 8033DE4 .pool thumb_func_end dp01_build_cmdbuf_x12_a_bb - thumb_func_start sub_8033E10 -sub_8033E10: @ 8033E10 + thumb_func_start EmitCmd13 +EmitCmd13: @ 8033E10 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2825,7 +2825,7 @@ sub_8033E10: @ 8033E10 pop {r0} bx r0 .pool - thumb_func_end sub_8033E10 + thumb_func_end EmitCmd13 thumb_func_start sub_8033E30 sub_8033E30: @ 8033E30 @@ -2995,8 +2995,8 @@ EmitExpUpdate: @ 8033F34 .pool thumb_func_end EmitExpUpdate - thumb_func_start dp01_build_cmdbuf_x1A_aaaa_bbbb -dp01_build_cmdbuf_x1A_aaaa_bbbb: @ 8033F68 + thumb_func_start EmitStatusIconUpdate +EmitStatusIconUpdate: @ 8033F68 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 @@ -3036,7 +3036,7 @@ dp01_build_cmdbuf_x1A_aaaa_bbbb: @ 8033F68 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x1A_aaaa_bbbb + thumb_func_end EmitStatusIconUpdate thumb_func_start EmitStatusAnimation EmitStatusAnimation: @ 8033FBC @@ -3718,8 +3718,8 @@ _08034490: .pool thumb_func_end EmitLinkStandbyMsg - thumb_func_start dp01_build_cmdbuf_x38_a -dp01_build_cmdbuf_x38_a: @ 80344A8 + thumb_func_start EmitResetActionMoveSelection +EmitResetActionMoveSelection: @ 80344A8 push {lr} adds r3, r1, 0 lsls r0, 24 @@ -3733,7 +3733,7 @@ dp01_build_cmdbuf_x38_a: @ 80344A8 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x38_a + thumb_func_end EmitResetActionMoveSelection thumb_func_start Emit_x37 Emit_x37: @ 80344C8 diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index ea75d4e2b9..267045179b 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -1830,8 +1830,8 @@ GetBankIdentity: @ 80A6A44 .pool thumb_func_end GetBankIdentity - thumb_func_start GetBankByPlayerAI -GetBankByPlayerAI: @ 80A6A54 + thumb_func_start GetBankByIdentity +GetBankByIdentity: @ 80A6A54 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -1860,7 +1860,7 @@ _080A6A7E: pop {r1} bx r1 .pool - thumb_func_end GetBankByPlayerAI + thumb_func_end GetBankByIdentity thumb_func_start sub_80A6A90 sub_80A6A90: @ 80A6A90 @@ -3496,7 +3496,7 @@ _080A76F2: cmp r5, 0 beq _080A771A movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl b_side_obj__get_some_boolean @@ -3504,7 +3504,7 @@ _080A76F2: cmp r0, 0 beq _080A771A movs r0, 0 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r0, 0x10 @@ -3514,7 +3514,7 @@ _080A771A: cmp r6, 0 beq _080A7746 movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl b_side_obj__get_some_boolean @@ -3522,7 +3522,7 @@ _080A771A: cmp r0, 0 beq _080A7746 movs r0, 0x2 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -3534,7 +3534,7 @@ _080A7746: cmp r7, 0 beq _080A7772 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl b_side_obj__get_some_boolean @@ -3542,7 +3542,7 @@ _080A7746: cmp r0, 0 beq _080A7772 movs r0, 0x1 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -3555,7 +3555,7 @@ _080A7772: cmp r0, 0 beq _080A77A0 movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 bl b_side_obj__get_some_boolean @@ -3563,7 +3563,7 @@ _080A7772: cmp r0, 0 beq _080A77A0 movs r0, 0x3 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -3592,7 +3592,7 @@ sub_80A77B4: @ 80A77B4 push {lr} lsls r0, 24 lsrs r0, 24 - bl GetBankByPlayerAI + bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 pop {r1} diff --git a/asm/title_screen.s b/asm/title_screen.s index 15037e80d2..be102343b7 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -468,7 +468,7 @@ title_screen_vblank_callback: @ 80AA780 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg @@ -1156,14 +1156,14 @@ _080AAE30: ldrh r0, [r3, 0x10] adds r0, 0x1 strh r0, [r3, 0x10] - ldr r2, =gUnknown_02022E1A + ldr r2, =gBattle_BG1_Y movs r1, 0x10 ldrsh r0, [r3, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 strh r0, [r2] - ldr r1, =gUnknown_02022E18 + ldr r1, =gBattle_BG1_X movs r0, 0 strh r0, [r1] _080AAE72: diff --git a/asm/unknown_task.s b/asm/unknown_task.s index e3526c809c..9c01afe93d 100644 --- a/asm/unknown_task.s +++ b/asm/unknown_task.s @@ -275,19 +275,19 @@ _080BA21C: b _080BA24E .pool _080BA224: - ldr r0, =gUnknown_02022E18 + ldr r0, =gBattle_BG1_X b _080BA24E .pool _080BA22C: - ldr r0, =gUnknown_02022E1A + ldr r0, =gBattle_BG1_Y b _080BA24E .pool _080BA234: - ldr r0, =gUnknown_02022E1C + ldr r0, =gBattle_BG2_X b _080BA24E .pool _080BA23C: - ldr r0, =gUnknown_02022E1E + ldr r0, =gBattle_BG2_Y b _080BA24E .pool _080BA244: diff --git a/data/battle_4.s b/data/battle_4.s index 3300b25eee..8f18727331 100644 --- a/data/battle_4.s +++ b/data/battle_4.s @@ -5,51 +5,6 @@ .section .rodata - -gMoveEffectBS_Ptrs:: @ 831C224 - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB386 - .4byte gUnknown_082DB395 - .4byte gUnknown_082DB3A4 - .4byte gUnknown_082DB3B3 - .4byte gUnknown_082DB3C9 - .4byte gUnknown_082DB3E6 - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB3C2 - .4byte gUnknown_082DB3D6 - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB3DD - .4byte gUnknown_082DB3F4 - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB36A - .4byte gUnknown_082DB3F4 - - .align 2 - window_template 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x003f - .align 2 gUnknown_0831C2C8:: @ 831C2C8 .incbin "graphics/battle_interface/unk_battlebox.gbapal" @@ -66,21 +21,21 @@ gUnknown_0831C3B8:: @ 831C3B8 .byte 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 .align 2 -gUnknown_0831C3C0:: @ 831C3C0 +SpriteTemplate_MonIconOnLvlUpBox:: @ 831C3C0 .2byte 0xd75a @ tileTag .2byte 0xd75a @ paletteTag .4byte gUnknown_0831C3B8 .4byte gDummySpriteAnimTable .4byte NULL .4byte gDummySpriteAffineAnimTable - .4byte sub_804F450 + .4byte SpriteCB_MonIconOnLvlUpBox .align 2 sProtectSuccessRates:: @ 831C3D8 .2byte 0xffff, 0x7fff, 0x3fff, 0x1fff .align 2 -gUnknown_0831C3E0:: @ 831C3E0 +gMovesForbiddenToCopy:: @ 831C3E0 .2byte MOVE_METRONOME, MOVE_STRUGGLE, MOVE_SKETCH, MOVE_MIMIC .2byte 0xfffe, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_PROTECT .2byte MOVE_DETECT, MOVE_ENDURE, MOVE_DESTINY_BOND, MOVE_SLEEP_TALK diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 44d0e7ed5f..1fb6b81890 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -30,7 +30,7 @@ gUnknown_082D9EE1:: @ 82D9EE1 gUnknown_082D9EFB:: @ 82D9EFB .incbin "baserom.gba", 0x2d9efb, 0x21 -gUnknown_082D9F1C:: @ 82D9F1C +BattleScript_ButItFailed:: @ 82D9F1C .incbin "baserom.gba", 0x2d9f1c, 0x88e BattleScript_FaintAttacker:: @ 82DA7AA @@ -135,7 +135,7 @@ BattleScript_BideNoEnergyToAttack:: @ 82DADC4 gUnknown_082DADD8:: @ 82DADD8 .incbin "baserom.gba", 0x2dadd8, 0x2b -gUnknown_082DAE03:: @ 82DAE03 +BattleScript_MistProtected:: @ 82DAE03 .incbin "baserom.gba", 0x2dae03, 0xa BattleScript_RageIsBuilding:: @ 82DAE0D @@ -300,7 +300,7 @@ BattleScript_MoveUsedIsConfused:: @ 82DB2BD BattleScript_MoveUsedIsConfusedNoMore:: @ 82DB300 .incbin "baserom.gba", 0x2db300, 0x7 -gUnknown_082DB307:: @ 82DB307 +BattleScript_PrintPayDayMoneyString:: @ 82DB307 .incbin "baserom.gba", 0x2db307, 0x7 BattleScript_WrapTurnDmg:: @ 82DB30E @@ -324,40 +324,40 @@ BattleScript_CurseTurnDmg:: @ 82DB350 BattleScript_TargetPRLZHeal:: @ 82DB361 .incbin "baserom.gba", 0x2db361, 0x9 -gUnknown_082DB36A:: @ 82DB36A +BattleScript_MoveEffectSleep:: @ 82DB36A .incbin "baserom.gba", 0x2db36A, 0xE BattleScript_YawnMakesAsleep:: @ 82DB378 .incbin "baserom.gba", 0x2db378, 0xE -gUnknown_082DB386:: @ 82DB386 +BattleScript_MoveEffectPoison:: @ 82DB386 .incbin "baserom.gba", 0x2db386, 0xF -gUnknown_082DB395:: @ 82DB395 +BattleScript_MoveEffectBurn:: @ 82DB395 .incbin "baserom.gba", 0x2db395, 0xF -gUnknown_082DB3A4:: @ 82DB3A4 +BattleScript_MoveEffectFreeze:: @ 82DB3A4 .incbin "baserom.gba", 0x2db3A4, 0xF -gUnknown_082DB3B3:: @ 82DB3B3 +BattleScript_MoveEffectParalysis:: @ 82DB3B3 .incbin "baserom.gba", 0x2db3B3, 0xF -gUnknown_082DB3C2:: @ 82DB3C2 +BattleScript_MoveEffectUproar:: @ 82DB3C2 .incbin "baserom.gba", 0x2db3C2, 0x7 -gUnknown_082DB3C9:: @ 82DB3C9 +BattleScript_MoveEffectToxic:: @ 82DB3C9 .incbin "baserom.gba", 0x2db3C9, 0xD -gUnknown_082DB3D6:: @ 82DB3D6 +BattleScript_MoveEffectPayDay:: @ 82DB3D6 .incbin "baserom.gba", 0x2db3D6, 0x7 -gUnknown_082DB3DD:: @ 82DB3DD +BattleScript_MoveEffectWrap:: @ 82DB3DD .incbin "baserom.gba", 0x2db3DD, 0x9 -gUnknown_082DB3E6:: @ 82DB3E6 +BattleScript_MoveEffectConfusion:: @ 82DB3E6 .incbin "baserom.gba", 0x2db3E6, 0xE -gUnknown_082DB3F4:: @ 82DB3F4 +BattleScript_MoveEffectRecoil33:: @ 82DB3F4 .incbin "baserom.gba", 0x2db3F4, 0x2e BattleScript_ItemSteal:: @ 82DB422 @@ -396,10 +396,10 @@ BattleScript_DroughtActivates:: @ 82DB52A BattleScript_TookAttack:: @ 82DB53E .incbin "baserom.gba", 0x2db53e, 0x14 -gUnknown_082DB552:: @ 82DB552 +BattleScript_SturdyPreventsOHKO:: @ 82DB552 .incbin "baserom.gba", 0x2db552, 0xe -gUnknown_082DB560:: @ 82DB560 +BattleScript_DampStopsExplosion:: @ 82DB560 .incbin "baserom.gba", 0x2db560, 0xe BattleScript_MoveHPDrain_PPLoss:: @ 82DB56E @@ -420,7 +420,7 @@ BattleScript_FlashFireBoost_PPLoss:: @ 82DB5A7 BattleScript_FlashFireBoost:: @ 82DB5A8 .incbin "baserom.gba", 0x2db5a8, 0x1f -gUnknown_082DB5C7:: @ 82DB5C7 +BattleScript_AbilityNoStatLoss:: @ 82DB5C7 .incbin "baserom.gba", 0x2db5c7, 0xa BattleScript_BRNPrevention:: @ 82DB5D1 @@ -432,7 +432,7 @@ BattleScript_PRLZPrevention:: @ 82DB5DD BattleScript_PSNPrevention:: @ 82DB5E9 .incbin "baserom.gba", 0x2db5e9, 0xc -gUnknown_082DB5F5:: @ 82DB5F5 +BattleScript_ObliviousPreventsAttraction:: @ 82DB5F5 .incbin "baserom.gba", 0x2db5f5, 0xe BattleScript_FlinchPrevention:: @ 82DB603 @@ -441,7 +441,7 @@ BattleScript_FlinchPrevention:: @ 82DB603 BattleScript_SoundproofProtected:: @ 82DB61F .incbin "baserom.gba", 0x2db61f, 0x10 -gUnknown_082DB62F:: @ 82DB62F +BattleScript_AbilityNoSpecificStatLoss:: @ 82DB62F .incbin "baserom.gba", 0x2db62f, 0x10 BattleScript_StickyHoldOnKnockOff:: @ 82DB63F diff --git a/include/battle.h b/include/battle.h index d459442741..f84a75cbac 100644 --- a/include/battle.h +++ b/include/battle.h @@ -1,8 +1,28 @@ #ifndef GUARD_BATTLE_H #define GUARD_BATTLE_H +/* + Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. + Each bank has a value consisting of two bits. + 0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side. + 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) +*/ + #define BATTLE_BANKS_COUNT 4 +#define IDENTITY_PLAYER_MON1 0 +#define IDENTITY_OPPONENT_MON1 1 +#define IDENTITY_PLAYER_MON2 2 +#define IDENTITY_OPPONENT_MON2 3 + +#define SIDE_PLAYER 0x0 +#define SIDE_OPPONENT 0x1 + +#define BIT_SIDE 0x1 +#define BIT_MON 0x2 + +#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE)) + #define BATTLE_TYPE_DOUBLE 0x0001 #define BATTLE_TYPE_LINK 0x0002 #define BATTLE_TYPE_WILD 0x0004 @@ -40,9 +60,6 @@ #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID) -#define SIDE_PLAYER 0x0 -#define SIDE_OPPONENT 0x1 - #define BATTLE_WON 0x1 #define BATTLE_LOST 0x2 #define BATTLE_DREW 0x3 @@ -66,11 +83,12 @@ #define STATUS2_CONFUSION 0x00000007 #define STATUS2_FLINCHED 0x00000008 #define STATUS2_UPROAR 0x00000070 -#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200 +#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200 #define STATUS2_LOCK_CONFUSE 0x00000C00 #define STATUS2_MULTIPLETURNS 0x00001000 #define STATUS2_WRAPPED 0x0000E000 -#define STATUS2_INFATUATION 0x000F0000 +#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every bank +#define STATUS2_INFATUATED_WITH(bank)((gBitTable[bank] << 16)) #define STATUS2_FOCUS_ENERGY 0x00100000 #define STATUS2_TRANSFORMED 0x00200000 #define STATUS2_RECHARGE 0x00400000 @@ -86,7 +104,7 @@ #define STATUS3_LEECHSEED_BANK 0x3 #define STATUS3_LEECHSEED 0x4 -#define STATUS3_ALWAYS_HITS 0x18 //two bits +#define STATUS3_ALWAYS_HITS 0x18 // two bits #define STATUS3_PERISH_SONG 0x20 #define STATUS3_ON_AIR 0x40 #define STATUS3_UNDERGROUND 0x80 @@ -188,17 +206,6 @@ #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY ((WEATHER_HAIL)) -#define REQUEST_ALL_BATTLE 0x0 -#define REQUEST_SPECIES_BATTLE 0x1 -#define REQUEST_HELDITEM_BATTLE 0x2 -#define REQUEST_MOVES_PP_BATTLE 0x3 -#define REQUEST_PPMOVE1_BATTLE 0x9 -#define REQUEST_PPMOVE2_BATTLE 0xA -#define REQUEST_PPMOVE3_BATTLE 0xB -#define REQUEST_PPMOVE4_BATTLE 0xC -#define REQUEST_STATUS_BATTLE 0x28 -#define REQUEST_HP_BATTLE 0x2A - // array entries for battle communication #define CURSOR_POSITION 0x1 #define MOVE_EFFECT_BYTE 0x3 @@ -222,6 +229,7 @@ #define BS_GET_TARGET 0 #define BS_GET_ATTACKER 1 #define BS_GET_EFFECT_BANK 2 +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update #define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability #define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability #define BS_GET_SCRIPTING_BANK 10 @@ -384,11 +392,11 @@ extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT]; struct SpecialStatus { - u8 statLowered : 1; - u8 lightningRodRedirected : 1; - u8 restoredBankSprite: 1; - u8 intimidatedPoke : 1; - u8 traced : 1; + u8 statLowered : 1; // 0x1 + u8 lightningRodRedirected : 1; // 0x2 + u8 restoredBankSprite: 1; // 0x4 + u8 intimidatedPoke : 1; // 0x8 + u8 traced : 1; // 0x10 u8 flag20 : 1; u8 flag40 : 1; u8 focusBanded : 1; @@ -690,6 +698,7 @@ struct BattleStruct u8 field_298[8]; u8 field_2A0; u8 field_2A1; + u8 field_2A2; }; extern struct BattleStruct* gBattleStruct; @@ -709,6 +718,13 @@ extern struct BattleStruct* gBattleStruct; varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ } +#define GET_USED_ITEM_PTR_VIA_MEME_ACCESS(bank, varName) \ +{ \ + void** memes1 = (void**)(&gBattleStruct); \ + void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, usedHeldItems))); \ + varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ +} + #define GET_HP_SWITCHOUT_PTR_VIA_MEME_ACCESS(bank, varName) \ { \ void** memes1 = (void**)(&gBattleStruct); \ @@ -724,8 +740,6 @@ extern struct BattleStruct* gBattleStruct; typeArg = gBattleMoves[move].type; \ } -#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & 1)) - #define MOVE_EFFECT_SLEEP 0x1 #define MOVE_EFFECT_POISON 0x2 #define MOVE_EFFECT_BURN 0x3 @@ -832,26 +846,39 @@ extern struct BattleStruct* gBattleStruct; #define ATK4F_DONT_CHECK_STATUSES 0x80 +#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 +#define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 +#define VARIOUS_WAIT_CRY 18 +#define VARIOUS_RETURN_OPPONENT_MON1 19 +#define VARIOUS_RETURN_OPPONENT_MON2 20 +#define VARIOUS_SET_TELEPORT_OUTCOME 25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 + +#define ATK80_DMG_CHANGE_SIGN 0 +#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 +#define ATK80_DMG_DOUBLED 2 + #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 -#define GET_STAT_BUFF_VALUE(n)((n & 0xF0) >> 4) // 0x10, 0x20, 0x40 +#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit +#define STAT_CHANGE_BS_PTR 0x1 +#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 + +#define STAT_CHANGE_WORKED 0 +#define STAT_CHANGE_DIDNT_WORK 1 + #define SET_STAT_BUFF_ID(n)((n & 0xF)) #define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) struct BattleScripting { - u8 field_0; - u8 field_1; - u8 field_2; - u8 field_3; - u32 bideDmg; - u8 field_8; - u8 field_9; - u8 field_A; - u8 field_B; - u8 field_C; - u8 field_D; + s32 painSplitHp; + s32 bideDmg; + u8 multihitString[6]; u8 dmgMultiplier; u8 field_F; u8 animArg1; @@ -868,7 +895,7 @@ struct BattleScripting u8 field_1B; u8 atk23_state; u8 field_1D; - u8 field_1E; + u8 atk6C_state; u8 learnMoveState; }; @@ -887,6 +914,9 @@ void SwitchInClearStructs(void); void sub_803BDA0(u8 bank); void sub_803FA70(u8 bank); void BattleMainCB2(void); +void ResetSentPokesToOpponentValue(void); +bool8 CanRunFromBattle(u8 bank); +bool8 IsRunningFromBattleImpossible(void); // battle_3 void BattleScriptPush(const u8* bsPtr); @@ -920,10 +950,12 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability); u8 BankGetTurnOrder(u8 bank); void BattleDestroyCursorAt(u8 cursorPosition); void BattleCreateCursorAt(u8 cursorPosition); +void BufferMoveToLearnIntoBattleTextBuff2(void); // battle_5 void AdjustFriendshipOnBattleFaint(u8 bank); void sub_80571DC(u8 bank, u8 arg1); +u32 sub_805725C(u8 bank); // battle 7 void BattleMusicStop(void); @@ -932,7 +964,7 @@ void sub_805E990(struct Pokemon* mon, u8 bank); // rom_80A5C6C u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); -u8 GetBankByPlayerAI(u8 bank); +u8 GetBankByIdentity(u8 bank); // Move this somewhere else diff --git a/include/battle_controllers.h b/include/battle_controllers.h index b24aa9cc50..bb58cb699a 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -7,8 +7,26 @@ struct HpAndStatus u32 status; }; +struct MovePpInfo +{ + u16 move[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +#define REQUEST_ALL_BATTLE 0x0 +#define REQUEST_SPECIES_BATTLE 0x1 +#define REQUEST_HELDITEM_BATTLE 0x2 +#define REQUEST_MOVES_PP_BATTLE 0x3 +#define REQUEST_PPMOVE1_BATTLE 0x9 +#define REQUEST_PPMOVE2_BATTLE 0xA +#define REQUEST_PPMOVE3_BATTLE 0xB +#define REQUEST_PPMOVE4_BATTLE 0xC +#define REQUEST_STATUS_BATTLE 0x28 +#define REQUEST_HP_BATTLE 0x2A + // rom3.s, emitters -void EmitSetAttributes(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); +void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); void EmitEffectivenessSound(u8 bufferId, u16 songId); @@ -20,7 +38,7 @@ void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); void EmitReturnPokeToBall(u8 bufferId, u8 arg1); -void EmitGetAttributes(u8 bufferId, u8 arg1, u8 arg2); +void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2); void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, const u8* arg4); void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, u8 arg2); @@ -31,6 +49,13 @@ void EmitHitAnimation(u8 bufferId); void EmitCmd48(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); void EmitCmd49(u8 bufferId); void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); +void EmitCmd13(u8 bufferId); +void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); + +#define RESET_ACTION_MOVE_SELECTION 0 +#define RESET_ACTION_SELECTION 1 +#define RESET_MOVE_SELECTION 2 void MarkBufferBankForExecution(u8 bank); diff --git a/include/battle_message.h b/include/battle_message.h index ad1ce34550..3e28fa5e5e 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -74,6 +74,22 @@ #define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_EOS 0xFF +#define PREPARE_STAT_BUFFER(textVar, statId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_STAT; \ + textVar[2] = statId; \ + textVar[3] = B_BUFF_EOS; \ +} + +#define PREPARE_TYPE_BUFFER(textVar, typeId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_TYPE; \ + textVar[2] = typeId; \ + textVar[3] = B_BUFF_EOS; \ +} + #define PREPARE_BYTE_NUMBER_BUFFER(textVar, maxDigits, number) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ @@ -84,6 +100,17 @@ textVar[5] = B_BUFF_EOS; \ } +#define PREPARE_HWORD_NUMBER_BUFFER(textVar, maxDigits, number) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_NUMBER; \ + textVar[2] = 2; \ + textVar[3] = maxDigits; \ + textVar[4] = (number); \ + textVar[5] = (number & 0x0000FF00) >> 8; \ + textVar[6] = B_BUFF_EOS; \ +} + #define PREPARE_WORD_NUMBER_BUFFER(textVar, maxDigits, number) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ @@ -158,7 +185,7 @@ struct StringInfoBattle }; void BufferStringBattle(u16 stringID); -u32 StrCpyDecodeToDisplayedStringBattle(const u8* src); +u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src); u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); void sub_814F9EC(const u8* text, u8 arg1); diff --git a/include/moves.h b/include/moves.h index e3b6d3113f..bc213cbc73 100644 --- a/include/moves.h +++ b/include/moves.h @@ -360,4 +360,6 @@ enum MOVE_PSYCHO_BOOST, }; -#endif // GUARD_MOVES_H \ No newline at end of file +#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST + +#endif // GUARD_MOVES_H diff --git a/include/pokemon.h b/include/pokemon.h index 518d28e58e..20e904f39d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -126,6 +126,8 @@ #define TYPE_DRAGON 0x10 #define TYPE_DARK 0x11 +#define NUMBER_OF_MON_TYPES 0x12 + #define PARTY_SIZE 6 #define MAX_TOTAL_EVS 510 #define NUM_STATS 6 @@ -333,6 +335,8 @@ struct UnknownPokemonStruct u8 friendship; }; +#define BATTLE_STATS_NO 8 + struct BattlePokemon { /*0x00*/ u16 species; @@ -350,7 +354,7 @@ struct BattlePokemon /*0x17*/ u32 spDefenseIV:5; /*0x17*/ u32 isEgg:1; /*0x17*/ u32 altAbility:1; - /*0x18*/ s8 statStages[8]; + /*0x18*/ s8 statStages[BATTLE_STATS_NO]; /*0x20*/ u8 ability; /*0x21*/ u8 type1; /*0x22*/ u8 type2; @@ -521,6 +525,7 @@ extern struct PokemonStorage* gPokemonStoragePtr; extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1]; extern const u16 *const gLevelUpLearnsets[]; +u8 CountAliveMonsInBattle(u8 caseId); #define BATTLE_ALIVE_EXCEPT_ACTIVE 0 #define BATTLE_ALIVE_ATK_SIDE 1 #define BATTLE_ALIVE_DEF_SIDE 2 diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h new file mode 100644 index 0000000000..b82334355a --- /dev/null +++ b/include/pokemon_icon.h @@ -0,0 +1,7 @@ +#ifndef GUARD_POKEMON_ICON_H +#define GUARD_POKEMON_ICON_H + +const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); +const u16 *GetValidMonIconPalettePtr(u16 speciesId); + +#endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h new file mode 100644 index 0000000000..88f3413177 --- /dev/null +++ b/include/pokemon_item_effects.h @@ -0,0 +1,8 @@ +#ifndef GUARD_POKEMON_ITEM_EFFECTS +#define GUARD_POKEMON_ITEM_EFFECTS + +#include "pokemon.h" + +bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5); + +#endif // GUARD_POKEMON_ITEM_EFFECTS diff --git a/include/text.h b/include/text.h index f0c85b978b..88f2cc0e27 100644 --- a/include/text.h +++ b/include/text.h @@ -65,6 +65,7 @@ #define CHAR_x 0xEC #define CHAR_y 0xED #define CHAR_z 0xEE +#define CHAR_SPECIAL_F9 0xF9 #define CHAR_COLON 0xF0 #define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog #define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog @@ -73,6 +74,10 @@ #define CHAR_NEWLINE 0xFE #define EOS 0xFF // end of string +#define TEXT_COLOR_TRANSPARENT 0x0 +#define TEXT_COLOR_WHITE 0x1 +#define TEXT_COLOR_DARK_GREY 0x2 + // battle placeholders are located in battle_message.h #define EXT_CTRL_CODE_JPN 0x15 @@ -80,23 +85,26 @@ #define NUM_TEXT_PRINTERS 32 +struct TextSubPrinter // TODO: Better name +{ + u8* current_text_offset; + u8 windowId; + u8 fontId; + u8 x; + u8 y; + u8 currentX; // 0x8 + u8 currentY; + u8 letterSpacing; + u8 lineSpacing; + u8 fontColor_l:4; // 0xC + u8 fontColor_h:4; + u8 bgColor:4; + u8 shadowColor:4; +}; + struct TextPrinter { - struct TextSubPrinter { // TODO: Better name - u8* current_text_offset; - u8 windowId; - u8 fontId; - u8 x; - u8 y; - u8 currentX; // 0x8 - u8 currentY; - u8 letterSpacing; - u8 lineSpacing; - u8 fontColor_l:4; // 0xC - u8 fontColor_h:4; - u8 bgColor:4; - u8 shadowColor:4; - } subPrinter; + struct TextSubPrinter subPrinter; void (*callback)(struct TextSubPrinter *, u16); // 0x10 diff --git a/include/window.h b/include/window.h index e8af82e810..4e814ebc6f 100644 --- a/include/window.h +++ b/include/window.h @@ -55,7 +55,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void CopyToWindowPixelBuffer(u8 windowId, u8 *src, u16 size, u16 tileOffset); +void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); void FillWindowPixelBuffer(u8 windowId, u8 fillValue); void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); diff --git a/src/battle_3.c b/src/battle_3.c index 1b443118db..1fd84a61b1 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -831,7 +831,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; b_call_bc_move_exec(gUnknown_082DB234); gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); break; } @@ -956,7 +956,7 @@ u8 TurnBasedEffects(void) { CancelMultiTurnMoves(gActiveBank); gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); gEffectBank = gActiveBank; b_call_bc_move_exec(BattleScript_YawnMakesAsleep); @@ -1446,7 +1446,7 @@ u8 AtkCanceller_UnableToUseMove(void) if (effect == 2) { gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); } return effect; @@ -1539,14 +1539,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2) { if (GetBankSide(bank) == SIDE_OPPONENT) { - r7 = GetBankByPlayerAI(1); - r6 = GetBankByPlayerAI(3); + r7 = GetBankByIdentity(1); + r6 = GetBankByIdentity(3); party = gEnemyParty; } else { - r7 = GetBankByPlayerAI(0); - r6 = GetBankByPlayerAI(2); + r7 = GetBankByIdentity(0); + r6 = GetBankByIdentity(2); party = gPlayerParty; } if (r1 == 6) @@ -1835,7 +1835,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nighmare glitch gBattleScripting.bank = gActiveBank = bank; b_push_move_exec(BattleScript_ShedSkinActivates); - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); MarkBufferBankForExecution(gActiveBank); effect++; } @@ -2156,7 +2156,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattlescriptCurrInstr = gUnknown_082DB68C; gBattleScripting.bank = i; gActiveBank = i; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); return effect; } @@ -2235,14 +2235,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) { u8 opposite = (GetBankIdentity(i) ^ 1) & 1; - u8 target1 = GetBankByPlayerAI(opposite); - u8 target2 = GetBankByPlayerAI(opposite + 2); + u8 target1 = GetBankByIdentity(opposite); + u8 target2 = GetBankByIdentity(opposite + 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) { - gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | opposite); + gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | opposite); gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; effect++; @@ -3106,7 +3106,7 @@ _08042E24:\n\ movs r1, 0x28\n\ movs r2, 0\n\ movs r3, 0x4\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r4]\n\ bl MarkBufferBankForExecution\n\ bl _080443D0\n\ @@ -4500,7 +4500,7 @@ _08043BFC:\n\ movs r1, 0x28\n\ movs r2, 0\n\ movs r3, 0x4\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r4]\n\ bl MarkBufferBankForExecution\n\ bl _0804443A\n\ @@ -4744,11 +4744,11 @@ _08043E42:\n\ eors r5, r1\n\ ands r5, r1\n\ adds r0, r5, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ lsls r0, 24\n\ lsrs r6, r0, 24\n\ adds r0, r5, 0x2\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ lsls r0, 24\n\ lsrs r7, r0, 24\n\ ldr r0, =gBattleTypeFlags\n\ @@ -4792,7 +4792,7 @@ _08043E74:\n\ lsls r1, 1\n\ orrs r5, r1\n\ adds r0, r5, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ mov r2, r8\n\ strb r0, [r2]\n\ ldrb r0, [r2]\n\ @@ -5609,7 +5609,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[3] = move >> 8; gBattleTextBuff1[4] = 0xFF; b_call_bc_move_exec(BattleScript_BerryPPHealEnd2); - EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); + EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBufferBankForExecution(gActiveBank); effect = ITEM_PP_CHANGE; } @@ -5993,7 +5993,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) switch (effect) { case ITEM_STATUS_CHANGE: - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); MarkBufferBankForExecution(gActiveBank); break; case ITEM_PP_CHANGE: @@ -6148,7 +6148,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.bank = bank; gStringBank = bank; gActiveBank = bank; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); break; } @@ -6251,7 +6251,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: case MOVE_TARGET_OPPONENTS_FIELD: - targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); if (gAbsentBankFlags & gBitTable[targetBank]) targetBank ^= 2; break; @@ -6264,22 +6264,22 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { if (Random() & 1) - targetBank = GetBankByPlayerAI(1); + targetBank = GetBankByIdentity(1); else - targetBank = GetBankByPlayerAI(3); + targetBank = GetBankByIdentity(3); } else { if (Random() & 1) - targetBank = GetBankByPlayerAI(0); + targetBank = GetBankByIdentity(0); else - targetBank = GetBankByPlayerAI(2); + targetBank = GetBankByIdentity(2); } if (gAbsentBankFlags & gBitTable[targetBank]) targetBank ^= 2; } else - targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); break; case MOVE_TARGET_USER: case MOVE_TARGET_x10: diff --git a/src/battle_4.c b/src/battle_4.c index 77a4393c4a..0f52ee0dd8 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -24,6 +24,11 @@ #include "main.h" #include "palette.h" #include "money.h" +#include "bg.h" +#include "string_util.h" +#include "pokemon_icon.h" +#include "pokemon_item_effects.h" +#include "m4a.h" // variables @@ -91,6 +96,7 @@ extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; +extern struct MusicPlayerInfo gMPlay_BGM; struct TrainerMoney { @@ -112,6 +118,15 @@ extern void sub_81A56B4(void); // battle frontier 2 extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen extern u8 sub_81C1B94(void); // pokemon summary screen extern void IncrementGameStat(u8 statId); // rom_4 +extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s +extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s +extern void sub_81D3784(u8 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s +extern u8* GetMonNickname(struct Pokemon* mon, u8* dst); // party_menu +extern u8 sub_81A5258(u8* arg0); // battle frontier 2 +extern void sub_81A5BF8(void); // battle frontier 2 +extern void sub_81A5D44(void); // battle frontier 2 +extern void sub_81B8E80(u8 bank, u8, u8); // party menu +extern bool8 sub_81B1250(void); // ? // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -162,6 +177,26 @@ extern const u8 gUnknown_082DB87D[]; extern const u8 gUnknown_082DAE90[]; extern const u8 gUnknown_082DAE59[]; extern const u8 gUnknown_082DAEC7[]; +extern const u8 BattleScript_MoveEffectSleep[]; +extern const u8 BattleScript_MoveEffectPoison[]; +extern const u8 BattleScript_MoveEffectBurn[]; +extern const u8 BattleScript_MoveEffectFreeze[]; +extern const u8 BattleScript_MoveEffectParalysis[]; +extern const u8 BattleScript_MoveEffectToxic[]; +extern const u8 BattleScript_MoveEffectConfusion[]; +extern const u8 BattleScript_MoveEffectUproar[]; +extern const u8 BattleScript_MoveEffectPayDay[]; +extern const u8 BattleScript_MoveEffectWrap[]; +extern const u8 BattleScript_MoveEffectRecoil33[]; +extern const u8 BattleScript_DampStopsExplosion[]; +extern const u8 BattleScript_MistProtected[]; +extern const u8 BattleScript_AbilityNoStatLoss[]; +extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern const u8 BattleScript_ButItFailed[]; +extern const u8 gUnknown_082DADD8[]; +extern const u8 BattleScript_PrintPayDayMoneyString[]; +extern const u8 BattleScript_SturdyPreventsOHKO[]; +extern const u8 BattleScript_ObliviousPreventsAttraction[]; // strings extern const u8 gText_BattleYesNoChoice[]; @@ -187,6 +222,14 @@ u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging tur static void CheckWonderGuardAndLevitate(void); u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); void sub_8056A3C(u8 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4); +bool32 IsMonGettingExpSentOut(void); +void sub_804F17C(void); +bool8 sub_804F1CC(void); +void sub_804F100(void); +void sub_804F144(void); +bool8 sub_804F344(void); +void PutMonIconOnLvlUpBox(void); +void PutLevelAndGenderOnLvlUpBox(void); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -296,23 +339,23 @@ void atk68_80246A0(void); void atk69_dmg_adjustment3(void); void atk6A_removeitem(void); void atk6B_atknameinbuff1(void); -void atk6C_lvlbox_display(void); -void atk6D_set_sentpokes_values(void); +void atk6C_draw_lvlupbox(void); +void atk6D_reset_sentpokes_value(void); void atk6E_set_atk_to_player0(void); void atk6F_set_visible(void); -void atk70_record_ability(void); +void atk70_record_last_used_ability(void); void atk71_buffer_move_to_learn(void); void atk72_jump_if_can_run_frombattle(void); void atk73_hp_thresholds(void); void atk74_hp_thresholds2(void); -void atk75_8026A58(void); +void atk75_item_effect_on_opponent(void); void atk76_various(void); -void atk77_setprotect(void); +void atk77_set_protect_like(void); void atk78_faintifabilitynotdamp(void); void atk79_setatkhptozero(void); void atk7A_jumpwhiletargetvalid(void); void atk7B_healhalfHP_if_possible(void); -void atk7C_8025508(void); +void atk7C_trymirrormove(void); void atk7D_set_rain(void); void atk7E_setreflect(void); void atk7F_setseeded(void); @@ -330,13 +373,13 @@ void atk8A_normalisebuffs(void); void atk8B_setbide(void); void atk8C_confuseifrepeatingattackends(void); void atk8D_setmultihit_counter(void); -void atk8E_prepare_multihit(void); +void atk8E_init_multihit_string(void); void atk8F_forcerandomswitch(void); void atk90_conversion_type_change(void); void atk91_givepaydaymoney(void); void atk92_setlightscreen(void); void atk93_ko_move(void); -void atk94_gethalfcurrentenemyhp(void); +void atk94_damagetohalftargethp(void); void atk95_setsandstorm(void); void atk96_weatherdamage(void); void atk97_try_infatuation(void); @@ -345,7 +388,7 @@ void atk99_setmist(void); void atk9A_set_focusenergy(void); void atk9B_transformdataexecution(void); void atk9C_set_substitute(void); -void atk9D_copyattack(void); +void atk9D_mimicattackcopy(void); void atk9E_metronome(void); void atk9F_dmgtolevel(void); void atkA0_psywavedamageeffect(void); @@ -548,23 +591,23 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk69_dmg_adjustment3, atk6A_removeitem, atk6B_atknameinbuff1, - atk6C_lvlbox_display, - atk6D_set_sentpokes_values, + atk6C_draw_lvlupbox, + atk6D_reset_sentpokes_value, atk6E_set_atk_to_player0, atk6F_set_visible, - atk70_record_ability, + atk70_record_last_used_ability, atk71_buffer_move_to_learn, atk72_jump_if_can_run_frombattle, atk73_hp_thresholds, atk74_hp_thresholds2, - atk75_8026A58, + atk75_item_effect_on_opponent, atk76_various, - atk77_setprotect, + atk77_set_protect_like, atk78_faintifabilitynotdamp, atk79_setatkhptozero, atk7A_jumpwhiletargetvalid, atk7B_healhalfHP_if_possible, - atk7C_8025508, + atk7C_trymirrormove, atk7D_set_rain, atk7E_setreflect, atk7F_setseeded, @@ -582,13 +625,13 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk8B_setbide, atk8C_confuseifrepeatingattackends, atk8D_setmultihit_counter, - atk8E_prepare_multihit, + atk8E_init_multihit_string, atk8F_forcerandomswitch, atk90_conversion_type_change, atk91_givepaydaymoney, atk92_setlightscreen, atk93_ko_move, - atk94_gethalfcurrentenemyhp, + atk94_damagetohalftargethp, atk95_setsandstorm, atk96_weatherdamage, atk97_try_infatuation, @@ -597,7 +640,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk9A_set_focusenergy, atk9B_transformdataexecution, atk9C_set_substitute, - atk9D_copyattack, + atk9D_mimicattackcopy, atk9E_metronome, atk9F_dmgtolevel, atkA0_psywavedamageeffect, @@ -781,7 +824,53 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; -extern const u8* const gMoveEffectBS_Ptrs[]; +const u8* const gMoveEffectBS_Ptrs[] = +{ + BattleScript_MoveEffectSleep, // 0 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SLEEP + BattleScript_MoveEffectPoison, // MOVE_EFFECT_POISON + BattleScript_MoveEffectBurn, // MOVE_EFFECT_BURN + BattleScript_MoveEffectFreeze, // MOVE_EFFECT_FREEZE + BattleScript_MoveEffectParalysis, // MOVE_EFFECT_PARALYSIS + BattleScript_MoveEffectToxic, // MOVE_EFFECT_TOXIC + BattleScript_MoveEffectConfusion, // MOVE_EFFECT_CONFUSION + BattleScript_MoveEffectSleep, // MOVE_EFFECT_FLINCH + BattleScript_MoveEffectSleep, // MOVE_EFFECT_TRI_ATTACK + BattleScript_MoveEffectUproar, // MOVE_EFFECT_UPROAR + BattleScript_MoveEffectPayDay, // MOVE_EFFECT_PAYDAY + BattleScript_MoveEffectSleep, // MOVE_EFFECT_CHARGING + BattleScript_MoveEffectWrap, // MOVE_EFFECT_WRAP + BattleScript_MoveEffectRecoil33, // MOVE_EFFECT_RECOIL_25 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_DEF_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SPD_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_ATK_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_DEF_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_ACC_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_EVS_PLUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_DEF_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SPD_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_ATK_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_DEF_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_ACC_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_EVS_MINUS_1 + BattleScript_MoveEffectSleep, // MOVE_EFFECT_RECHARGE + BattleScript_MoveEffectSleep, // MOVE_EFFECT_RAGE + BattleScript_MoveEffectSleep, // MOVE_EFFECT_STEAL_ITEM + BattleScript_MoveEffectSleep, // MOVE_EFFECT_PREVENT_ESCAPE + BattleScript_MoveEffectSleep, // MOVE_EFFECT_NIGHTMARE + BattleScript_MoveEffectSleep, // MOVE_EFFECT_ALL_STATS_UP + BattleScript_MoveEffectSleep, // MOVE_EFFECT_RAPIDSPIN + BattleScript_MoveEffectSleep, // MOVE_EFFECT_REMOVE_PARALYSIS + BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_DEF_DOWN + BattleScript_MoveEffectRecoil33, // MOVE_EFFECT_RECOIL_33_PARALYSIS +}; + +static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; + +extern const struct SpriteTemplate SpriteTemplate_MonIconOnLvlUpBox; +extern const u16 sProtectSuccessRates[]; void atk00_attackcanceler(void) { @@ -1110,7 +1199,7 @@ void atk03_ppreduce(void) && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos])) { gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); MarkBufferBankForExecution(gBankAttacker); } } @@ -1828,7 +1917,7 @@ void atk0C_datahpupdate(void) } } gHitMarker &= ~(HITMARKER_x100000); - EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); MarkBufferBankForExecution(gActiveBank); } } @@ -2351,7 +2440,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gActiveBank = gEffectBank; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); MarkBufferBankForExecution(gActiveBank); if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2660,11 +2749,11 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMons[gBankTarget].item = 0; gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); MarkBufferBankForExecution(gBankAttacker); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); MarkBufferBankForExecution(gBankTarget); BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2703,7 +2792,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2910,7 +2999,7 @@ void atk19_faint_pokemon(void) BattleScriptPush(gBattlescriptCurrInstr); gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp; gActiveBank = gBankAttacker; - EmitSetAttributes(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); MarkBufferBankForExecution(gActiveBank); PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].moves[moveIndex]) @@ -2943,7 +3032,7 @@ void atk1B_faint_effects_clear(void) if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBank].hp == 0) { gBattleMons[gActiveBank].status1 = 0; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); } @@ -4672,7 +4761,7 @@ void atk49_moveend(void) { gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); MarkBufferBankForExecution(gActiveBank); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; @@ -4871,7 +4960,7 @@ void atk49_moveend(void) && !gProtectStructs[gBankAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) { - u8 bank = GetBankByPlayerAI(GetBankIdentity(gBankTarget) ^ 2); + u8 bank = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); if (gBattleMons[bank].hp != 0) { gBankTarget = bank; @@ -5019,7 +5108,7 @@ void atk4C_copy_poke_data(void) gBattlePartyID[gActiveBank] = *(gBattleStruct->field_5C + gActiveBank); - EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]); + EmitGetMonData(0, 0, gBitTable[gBattlePartyID[gActiveBank]]); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; @@ -5225,10 +5314,10 @@ void atk4F_jump_if_cannot_switch(void) { if (GetBankSide(gActiveBank) == SIDE_OPPONENT) { - r7 = GetBankByPlayerAI(1); + r7 = GetBankByIdentity(1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - compareVar = GetBankByPlayerAI(3); + compareVar = GetBankByIdentity(3); else compareVar = r7; @@ -5236,10 +5325,10 @@ void atk4F_jump_if_cannot_switch(void) } else { - r7 = GetBankByPlayerAI(0); + r7 = GetBankByIdentity(0); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - compareVar = GetBankByPlayerAI(2); + compareVar = GetBankByIdentity(2); else compareVar = r7; @@ -5550,9 +5639,9 @@ void atk50_openpartyscreen(void) } else { - gActiveBank = GetBankByPlayerAI(GetBankIdentity(bank) ^ 1); + gActiveBank = GetBankByIdentity(GetBankIdentity(bank) ^ BIT_SIDE); if (gAbsentBankFlags & gBitTable[gActiveBank]) - gActiveBank ^= 2; + gActiveBank ^= BIT_MON; EmitLinkStandbyMsg(0, 2, 0); MarkBufferBankForExecution(gActiveBank); @@ -5712,7 +5801,7 @@ void atk52_switch_in_effects(void) void atk53_trainer_slide(void) { - gActiveBank = GetBankByPlayerAI(gBattlescriptCurrInstr[1]); + gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); EmitTrainerSlide(0); MarkBufferBankForExecution(gActiveBank); @@ -5748,7 +5837,7 @@ void atk56_fainting_cry(void) void atk57(void) { - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); Emit_x37(0, gBattleOutcome); MarkBufferBankForExecution(gActiveBank); @@ -5783,7 +5872,7 @@ void atk59_learnmove_inbattle(void) } else { - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) @@ -5792,7 +5881,7 @@ void atk59_learnmove_inbattle(void) } if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - gActiveBank = GetBankByPlayerAI(2); + gActiveBank = GetBankByIdentity(2); if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) { @@ -6067,7 +6156,7 @@ void atk5E_8025A70(void) switch (gBattleCommunication[0]) { case 0: - EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0); + EmitGetMonData(0, REQUEST_ALL_BATTLE, 0); MarkBufferBankForExecution(gActiveBank); gBattleCommunication[0]++; break; @@ -6317,3 +6406,2571 @@ void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random da END: gBattlescriptCurrInstr++; } + +void atk6A_removeitem(void) +{ + u16* usedHeldItem; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + GET_USED_ITEM_PTR_VIA_MEME_ACCESS(gActiveBank, usedHeldItem) + *usedHeldItem = gBattleMons[gActiveBank].item; + gBattleMons[gActiveBank].item = 0; + + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk6B_atknameinbuff1(void) +{ + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]) + + gBattlescriptCurrInstr++; +} + +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; + +void atk6C_draw_lvlupbox(void) +{ + if (gBattleScripting.atk6C_state == 0) + { + if (IsMonGettingExpSentOut()) + gBattleScripting.atk6C_state = 3; + else + gBattleScripting.atk6C_state = 1; + } + + switch (gBattleScripting.atk6C_state) + { + case 1: + gBattle_BG2_Y = 0x60; + SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, 0); + ShowBg(2); + sub_804F17C(); + gBattleScripting.atk6C_state = 2; + break; + case 2: + if (!sub_804F1CC()) + gBattleScripting.atk6C_state = 3; + break; + case 3: + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0x100; + SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 1); + SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 0); + ShowBg(0); + ShowBg(1); + sub_8056A3C(0x12, 7, 0x1D, 0x13, 0x80); + gBattleScripting.atk6C_state = 4; + break; + case 4: + sub_804F100(); + PutWindowTilemap(13); + CopyWindowToVram(13, 3); + gBattleScripting.atk6C_state++; + break; + case 5: + case 7: + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG1_Y = 0; + gBattleScripting.atk6C_state++; + } + break; + case 6: + if (gMain.newKeys != 0) + { + PlaySE(SE_SELECT); + sub_804F144(); + CopyWindowToVram(13, 2); + gBattleScripting.atk6C_state++; + } + break; + case 8: + if (gMain.newKeys != 0) + { + PlaySE(SE_SELECT); + sub_8056A3C(0x12, 7, 0x1D, 0x13, 0x81); + gBattleScripting.atk6C_state++; + } + break; + case 9: + if (!sub_804F344()) + { + ClearWindowTilemap(14); + CopyWindowToVram(14, 1); + + ClearWindowTilemap(13); + CopyWindowToVram(13, 1); + + SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, 2); + ShowBg(2); + + gBattleScripting.atk6C_state = 10; + } + break; + case 10: + if (!IsDma3ManagerBusyWithBgCopy()) + { + SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 0); + SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 1); + ShowBg(0); + ShowBg(1); + gBattlescriptCurrInstr++; + } + break; + } +} + +void sub_804F100(void) +{ + struct StatsArray currentStats; + + sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], ¤tStats); + sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, ¤tStats, 0xE, 0xD, 0xF); +} + +void sub_804F144(void) +{ + struct StatsArray currentStats; + + sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], ¤tStats); + sub_81D3784(0xD, ¤tStats, 0xE, 0xD, 0xF); +} + +extern const u16 gUnknown_0831C2C8[]; +extern const u8 gUnknown_0831C2E8[]; + +void sub_804F17C(void) +{ + gBattle_BG2_Y = 0; + gBattle_BG2_X = 0x1A0; + + LoadPalette(gUnknown_0831C2C8, 0x60, 0x20); + CopyToWindowPixelBuffer(14, gUnknown_0831C2E8, 0, 0); + PutWindowTilemap(14); + CopyWindowToVram(14, 3); + + PutMonIconOnLvlUpBox(); +} + +bool8 sub_804F1CC(void) +{ + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + + if (gBattle_BG2_X == 0x200) + return FALSE; + + if (gBattle_BG2_X == 0x1A0) + PutLevelAndGenderOnLvlUpBox(); + + gBattle_BG2_X += 8; + if (gBattle_BG2_X >= 0x200) + gBattle_BG2_X = 0x200; + + return (gBattle_BG2_X != 0x200); +} + +void PutLevelAndGenderOnLvlUpBox(void) +{ + u16 monLevel; + u8 monGender; + struct TextSubPrinter subPrinter; + u8 *txtPtr; + u32 var; + + monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL); + monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterId]); + GetMonNickname(&gPlayerParty[gBattleStruct->expGetterId], gStringVar4); + + subPrinter.current_text_offset = gStringVar4; + subPrinter.windowId = 14; + subPrinter.fontId = 0; + subPrinter.x = 32; + subPrinter.y = 0; + subPrinter.currentX = 32; + subPrinter.currentY = 0; + subPrinter.letterSpacing = 0; + subPrinter.lineSpacing = 0; + subPrinter.fontColor_l = TEXT_COLOR_TRANSPARENT; + subPrinter.fontColor_h = TEXT_COLOR_WHITE; + subPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + subPrinter.shadowColor = TEXT_COLOR_DARK_GREY; + + AddTextPrinter(&subPrinter, 0xFF, NULL); + + txtPtr = gStringVar4; + gStringVar4[0] = CHAR_SPECIAL_F9; + txtPtr++; + txtPtr[0] = 5; + txtPtr++; + + var = (u32)(txtPtr); + txtPtr = ConvertIntToDecimalStringN(txtPtr, monLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + var = (u32)(txtPtr) - var; + txtPtr = StringFill(txtPtr, 0x77, 4 - var); + + if (monGender != MON_GENDERLESS) + { + if (monGender == MON_MALE) + { + txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xC); + txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xD); + *(txtPtr++) = CHAR_MALE; + } + else + { + txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xE); + txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xF); + *(txtPtr++) = CHAR_FEMALE; + } + *(txtPtr++) = EOS; + } + + subPrinter.y = 10; + subPrinter.currentY = 10; + AddTextPrinter(&subPrinter, 0xFF, NULL); + + CopyWindowToVram(14, 2); +} + +bool8 sub_804F344(void) +{ + if (gBattle_BG2_X == 0x1A0) + return FALSE; + + if (gBattle_BG2_X - 16 < 0x1A0) + gBattle_BG2_X = 0x1A0; + else + gBattle_BG2_X -= 16; + + return (gBattle_BG2_X != 0x1A0); +} + +#define MON_ICON_LVLUP_BOX_TAG 0xD75A + +#define sDestroy data0 +#define sSavedLvlUpBoxXPosition data1 + +void PutMonIconOnLvlUpBox(void) +{ + u8 spriteId; + const u16* iconPal; + struct SpriteSheet iconSheet; + struct SpritePalette iconPalSheet; + + u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPECIES); + u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_PERSONALITY); + + const u8* iconPtr = GetMonIconPtr(species, personality, 1); + iconSheet.data = iconPtr; + iconSheet.size = 0x200; + iconSheet.tag = MON_ICON_LVLUP_BOX_TAG; + + iconPal = GetValidMonIconPalettePtr(species); + iconPalSheet.data = iconPal; + iconPalSheet.tag = MON_ICON_LVLUP_BOX_TAG; + + LoadSpriteSheet(&iconSheet); + LoadSpritePalette(&iconPalSheet); + + spriteId = CreateSprite(&SpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0); + gSprites[spriteId].sDestroy = FALSE; + gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X; +} + +void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite) +{ + sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X; + + if (sprite->pos2.x != 0) + { + sprite->sDestroy = TRUE; + } + else if (sprite->sDestroy) + { + DestroySprite(sprite); + FreeSpriteTilesByTag(MON_ICON_LVLUP_BOX_TAG); + FreeSpritePaletteByTag(MON_ICON_LVLUP_BOX_TAG); + } +} + +#undef sDestroy +#undef sSavedLvlUpBoxXPosition + +bool32 IsMonGettingExpSentOut(void) +{ + if (gBattlePartyID[0] == gBattleStruct->expGetterId) + return TRUE; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == gBattleStruct->expGetterId) + return TRUE; + + return FALSE; +} + +void atk6D_reset_sentpokes_value(void) +{ + ResetSentPokesToOpponentValue(); + gBattlescriptCurrInstr++; +} + +void atk6E_set_atk_to_player0(void) +{ + gBankAttacker = GetBankByIdentity(0); + gBattlescriptCurrInstr++; +} + +void atk6F_set_visible(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitSpriteInvisibility(0, FALSE); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} + +void atk70_record_last_used_ability(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for bank argument. +} + +void BufferMoveToLearnIntoBattleTextBuff2(void) +{ + PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn); +} + +void atk71_buffer_move_to_learn(void) +{ + BufferMoveToLearnIntoBattleTextBuff2(); + gBattlescriptCurrInstr++; +} + +void atk72_jump_if_can_run_frombattle(void) +{ + if (CanRunFromBattle(gBank1)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +void atk73_hp_thresholds(void) +{ + u8 opposingBank; + s32 result; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + opposingBank = gActiveBank ^ BIT_SIDE; + + result = gBattleMons[opposingBank].hp * 100 / gBattleMons[opposingBank].maxHP; + if (result == 0) + result = 1; + + if (result > 69 || !gBattleMons[opposingBank].hp) + gBattleStruct->hpScale = 0; + else if (result > 39) + gBattleStruct->hpScale = 1; + else if (result > 9) + gBattleStruct->hpScale = 2; + else + gBattleStruct->hpScale = 3; + } + + gBattlescriptCurrInstr += 2; +} + +void atk74_hp_thresholds2(void) +{ + u8 opposingBank; + s32 result; + u8 hpSwitchout; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + opposingBank = gActiveBank ^ BIT_SIDE; + hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBankSide(opposingBank)); + result = (hpSwitchout - gBattleMons[opposingBank].hp) * 100 / hpSwitchout; + + if (gBattleMons[opposingBank].hp >= hpSwitchout) + gBattleStruct->hpScale = 0; + else if (result <= 29) + gBattleStruct->hpScale = 1; + else if (result <= 69) + gBattleStruct->hpScale = 2; + else + gBattleStruct->hpScale = 3; + } + + gBattlescriptCurrInstr += 2; +} + +void atk75_item_effect_on_opponent(void) +{ + gBankInMenu = gBankAttacker; + ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); + + gBattlescriptCurrInstr += 1; +} + +extern const u8 gUnknown_0831C4F8[]; +extern const u8* const gRefereeStringsTable[]; + +void atk76_various(void) +{ + u8 side; + s32 i; + + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + + switch (gBattlescriptCurrInstr[2]) + { + case VARIOUS_CANCEL_MULTI_TURN_MOVES: + CancelMultiTurnMoves(gActiveBank); + break; + case VARIOUS_SET_MAGIC_COAT_TARGET: + gBankAttacker = gBankTarget; + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) + gBankTarget = gSideTimers[side].followmeTarget; + else + gBankTarget = gActiveBank; + break; + case 2: + gBattleCommunication[0] = IsRunningFromBattleImpossible(); + break; + case VARIOUS_GET_MOVE_TARGET: + gBankTarget = GetMoveTarget(gCurrentMove, 0); + break; + case 4: + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + gBattleCommunication[0] = 1; + else + gBattleCommunication[0] = 0; + break; + case VARIOUS_RESET_INTIMIDATE_TRACE_BITS: + gSpecialStatuses[gActiveBank].intimidatedPoke = 0; + gSpecialStatuses[gActiveBank].traced = 0; + break; + case VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP: + if (gBattlePartyID[0] == gBattleStruct->expGetterId || gBattlePartyID[2] == gBattleStruct->expGetterId) + { + u16 *choicedMove; + + if (gBattlePartyID[0] == gBattleStruct->expGetterId) + gActiveBank = 0; + else + gActiveBank = 2; + + choicedMove = &gBattleStruct->choicedMove[gActiveBank]; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[gActiveBank].moves[i] == *choicedMove) + break; + } + if (i == 4) + *choicedMove = 0; + } + break; + case 7: + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE)) + && gBattleTypeFlags & BATTLE_TYPE_TRAINER + && gBattleMons[0].hp != 0 + && gBattleMons[1].hp != 0) + { + gHitMarker &= ~(HITMARKER_x400000); + } + break; + case 8: + gBattleCommunication[0] = 0; + gBattleScripting.bank = gActiveBank = gBattleCommunication[1]; + if (!(gBattleStruct->field_92 & gBitTable[gActiveBank]) + && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp + && gBattleMons[gActiveBank].hp != 0 + && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)) + { + gBattleStruct->field_92 |= gBitTable[gActiveBank]; + gBattleCommunication[0] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = gUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)]; + } + break; + case 9: + i = sub_81A5258(gBattleCommunication); + if (i == 0) + return; + + gBattleCommunication[1] = i; + break; + case 10: + gBattleMons[1].hp = 0; + gHitMarker |= HITMARKER_FAINTED(1); + gBattleStruct->field_2A1 |= gBitTable[gBattlePartyID[1]]; + gDisableStructs[1].truantUnknownBit = 1; + break; + case 11: + gBattleMons[0].hp = 0; + gHitMarker |= HITMARKER_FAINTED(0); + gHitMarker |= HITMARKER_x400000; + gBattleStruct->field_2A0 |= gBitTable[gBattlePartyID[0]]; + gDisableStructs[0].truantUnknownBit = 1; + break; + case 12: + gBattleMons[0].hp = 0; + gBattleMons[1].hp = 0; + gHitMarker |= HITMARKER_FAINTED(0); + gHitMarker |= HITMARKER_FAINTED(1); + gHitMarker |= HITMARKER_x400000; + gBattleStruct->field_2A0 |= gBitTable[gBattlePartyID[0]]; + gBattleStruct->field_2A1 |= gBitTable[gBattlePartyID[1]]; + gDisableStructs[0].truantUnknownBit = 1; + gDisableStructs[1].truantUnknownBit = 1; + break; + case 13: + EmitCmd13(0); + MarkBufferBankForExecution(gActiveBank); + break; + case 14: + sub_81A5BF8(); + break; + case 15: + sub_81A5D44(); + break; + case 16: + BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]); + sub_814F9EC(gDisplayedStringBattle, 0x16); + break; + case 17: + if (IsTextPrinterActive(0x16)) + return; + break; + case VARIOUS_WAIT_CRY: + if (!IsCryFinished()) + return; + break; + case VARIOUS_RETURN_OPPONENT_MON1: + gActiveBank = 1; + if (gBattleMons[gActiveBank].hp != 0) + { + EmitReturnPokeToBall(0, 0); + MarkBufferBankForExecution(gActiveBank); + } + break; + case VARIOUS_RETURN_OPPONENT_MON2: + if (gNoOfAllBanks > 3) + { + gActiveBank = 3; + if (gBattleMons[gActiveBank].hp != 0) + { + EmitReturnPokeToBall(0, 0); + MarkBufferBankForExecution(gActiveBank); + } + } + break; + case 21: + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x55); + break; + case 22: + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + break; + case 23: + gBattleStruct->field_2A2 |= gBitTable[gActiveBank]; + break; + case 24: + if (sub_805725C(gActiveBank)) + return; + break; + case VARIOUS_SET_TELEPORT_OUTCOME: + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + gBattleOutcome = BATTLE_PLAYER_TELEPORTED; + else + gBattleOutcome = BATTLE_OPPONENT_TELEPORTED; + break; + case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC: + EmitPlaySound(0, 0x19C, 1); + MarkBufferBankForExecution(gActiveBank); + break; + } + + gBattlescriptCurrInstr += 3; +} + +void atk77_set_protect_like(void) // protect and endure +{ + bool8 notLastTurn = TRUE; + u16 lastMove = gUnknown_02024260[gBankAttacker]; + + if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE) + gDisableStructs[gBankAttacker].protectUses = 0; + + if (gCurrentMoveTurn == (gNoOfAllBanks - 1)) + notLastTurn = FALSE; + + if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] >= Random() && notLastTurn) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT) + { + gProtectStructs[gBankAttacker].protected = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) + { + gProtectStructs[gBankAttacker].endured = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gDisableStructs[gBankAttacker].protectUses++; + } + else + { + gDisableStructs[gBankAttacker].protectUses = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattleMoveFlags |= MOVESTATUS_MISSED; + } + + gBattlescriptCurrInstr++; +} + +void atk78_faintifabilitynotdamp(void) +{ + if (gBattleExecBuffer) + return; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBattleMons[gBankTarget].ability == ABILITY_DAMP) + break; + } + + if (gBankTarget == gNoOfAllBanks) + { + gActiveBank = gBankAttacker; + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + EmitHealthBarUpdate(0, 0x7FFF); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr++; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + } + else + { + gLastUsedAbility = ABILITY_DAMP; + RecordAbilityBattle(gBankTarget, gBattleMons[gBankTarget].ability); + gBattlescriptCurrInstr = BattleScript_DampStopsExplosion; + } +} + +void atk79_setatkhptozero(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = gBankAttacker; + gBattleMons[gActiveBank].hp = 0; + EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr++; +} + +void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all targets. +{ + const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (gBankTarget++; ; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + + if (gBankTarget >= gNoOfAllBanks) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = jumpPtr; + } + else + gBattlescriptCurrInstr += 5; +} + +void atk7B_healhalfHP_if_possible(void) +{ + const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (BSScriptRead8(gBattlescriptCurrInstr + 5) == BS_GET_ATTACKER) + gBankTarget = gBankAttacker; + + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = failPtr; + else + gBattlescriptCurrInstr += 6; +} + +void atk7C_trymirrormove(void) +{ + s32 validMovesCount; + s32 i; + u16 move; + u16 movesArray[4]; + + for (i = 0; i < 3; i++) + movesArray[i] = 0; + + for (validMovesCount = 0, i = 0; i < gNoOfAllBanks; i++) + { + if (i != gBankAttacker) + { + move = *(i * 2 + gBankAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) + | (*(i * 2 + gBankAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) << 8); + + if (move != 0 && move != 0xFFFF) + { + movesArray[validMovesCount] = move; + validMovesCount++; + } + } + } + + move = *(gBattleStruct->mirrorMoves + gBankAttacker * 2 + 0) + | (*(gBattleStruct->mirrorMoves + gBankAttacker * 2 + 1) << 8); + + if (move != 0 && move != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = move; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + } + else if (validMovesCount) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + i = Random() % validMovesCount; + gCurrentMove = movesArray[i]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr++; + } +} + +void atk7D_set_rain(void) +{ + if (gBattleWeather & WEATHER_RAIN_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_RAIN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +void atk7E_setreflect(void) +{ + if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_REFLECT) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_REFLECT; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].reflectTimer = 5; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].reflectBank = gBankAttacker; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gBattlescriptCurrInstr++; +} + +void atk7F_setseeded(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gStatuses3[gBankTarget] |= gBankAttacker; + gStatuses3[gBankTarget] |= STATUS3_LEECHSEED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + + gBattlescriptCurrInstr++; +} + +void atk80_manipulatedamage(void) +{ + switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + case ATK80_DMG_CHANGE_SIGN: + gBattleMoveDamage *= -1; + break; + case ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP: + gBattleMoveDamage /= 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage) + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + break; + case ATK80_DMG_DOUBLED: + gBattleMoveDamage *= 2; + break; + } + + gBattlescriptCurrInstr += 2; +} + +void atk81_setrest(void) +{ + const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + gActiveBank = gBankTarget = gBankAttacker; + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1); + + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + { + gBattlescriptCurrInstr = failJump; + } + else + { + if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP))) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + gBattleMons[gBankTarget].status1 = 3; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } +} + +void atk82_jumpifnotfirstturn(void) +{ + const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBankAttacker].isFirstTurn) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = failJump; +} + +void atk83_nop(void) +{ + gBattlescriptCurrInstr++; +} + +bool8 UproarWakeUpCheck(u8 bank) +{ + s32 i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) + continue; + + gBattleScripting.bank = i; + + if (gBankTarget == 0xFF) + gBankTarget = i; + else if (gBankTarget == i) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + + break; + } + + if (i == gNoOfAllBanks) + return FALSE; + else + return TRUE; +} + +void atk84_jump_if_cant_sleep(void) +{ + const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (UproarWakeUpCheck(gBankTarget)) + { + gBattlescriptCurrInstr = jumpPtr; + } + else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA + || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +void atk85_stockpile(void) +{ + if (gDisableStructs[gBankAttacker].stockpileCounter == 3) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gDisableStructs[gBankAttacker].stockpileCounter++; + + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gBankAttacker].stockpileCounter) + + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +void atk86_stockpiletobasedamage(void) +{ + const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (gDisableStructs[gBankAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jumpPtr; + } + else + { + if (gBattleCommunication[6] != 1) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + gSideAffecting[GET_BANK_SIDE(gBankTarget)], 0, + 0, gBankAttacker, gBankTarget) + * gDisableStructs[gBankAttacker].stockpileCounter; + gBattleScripting.animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + } + + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + } +} + +void atk87_stockpiletohpheal(void) +{ + const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBankAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jumpPtr; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp) + { + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr = jumpPtr; + gBankTarget = gBankAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter)); + + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + gBattleScripting.animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + gBankTarget = gBankAttacker; + } +} + +void atk88_negativedamage(void) +{ + gBattleMoveDamage = -(gHpDealt / 2); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + + gBattlescriptCurrInstr++; +} + +u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) +{ + bool8 certain = 0; + bool8 notProtectAffected = FALSE; + u32 index; + + if (flags & MOVE_EFFECT_AFFECTS_USER) + gActiveBank = gBankAttacker; + else + gActiveBank = gBankTarget; + + flags &= ~(MOVE_EFFECT_AFFECTS_USER); + + if (flags & MOVE_EFFECT_CERTAIN) + certain++; + flags &= ~(MOVE_EFFECT_CERTAIN); + + if (flags & STAT_CHANGE_NOT_PROTECT_AFFECTED) + notProtectAffected++; + flags &= ~(STAT_CHANGE_NOT_PROTECT_AFFECTED); + + PREPARE_STAT_BUFFER(gBattleTextBuff1, statId) + + if ((statValue << 0x18) < 0) // stat decrease + { + if (gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer + && !certain && gCurrentMove != MOVE_CURSE) + { + if (flags == STAT_CHANGE_BS_PTR) + { + if (gSpecialStatuses[gActiveBank].statLowered) + { + gBattlescriptCurrInstr = BS_ptr; + } + else + { + BattleScriptPush(BS_ptr); + gBattleScripting.bank = gActiveBank; + gBattlescriptCurrInstr = BattleScript_MistProtected; + gSpecialStatuses[gActiveBank].statLowered = 1; + } + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gCurrentMove != MOVE_CURSE + && notProtectAffected != TRUE && JumpIfMoveAffectedByProtect(0)) + { + gBattlescriptCurrInstr = BattleScript_ButItFailed; + return STAT_CHANGE_DIDNT_WORK; + } + else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY + || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) + && !certain && gCurrentMove != MOVE_CURSE) + { + if (flags == STAT_CHANGE_BS_PTR) + { + if (gSpecialStatuses[gActiveBank].statLowered) + { + gBattlescriptCurrInstr = BS_ptr; + } + else + { + BattleScriptPush(BS_ptr); + gBattleScripting.bank = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + gSpecialStatuses[gActiveBank].statLowered = 1; + } + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE + && !certain && statId == STAT_STAGE_ACC) + { + if (flags == STAT_CHANGE_BS_PTR) + { + BattleScriptPush(BS_ptr); + gBattleScripting.bank = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER + && !certain && statId == STAT_STAGE_ATK) + { + if (flags == STAT_CHANGE_BS_PTR) + { + BattleScriptPush(BS_ptr); + gBattleScripting.bank = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0) + { + return STAT_CHANGE_DIDNT_WORK; + } + else // try to decrease + { + statValue = -GET_STAT_BUFF_VALUE(statValue); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + index = 1; + if (statValue == -2) + { + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = 0xD3; // harshly + gBattleTextBuff2[3] = 0xD3 >> 8; + index = 4; + } + gBattleTextBuff2[index] = B_BUFF_STRING; + index++; + gBattleTextBuff2[index] = 0xD4; // fell + index++; + gBattleTextBuff2[index] = 0xD4 >> 8; + index++; + gBattleTextBuff2[index] = B_BUFF_EOS; + + if (gBattleMons[gActiveBank].statStages[statId] == 0) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank); + + } + } + else // stat increase + { + statValue = GET_STAT_BUFF_VALUE(statValue); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + index = 1; + if (statValue == 2) + { + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = 0xD1; // sharply + gBattleTextBuff2[3] = 0xD1 >> 8; + index = 4; + } + gBattleTextBuff2[index] = B_BUFF_STRING; + index++; + gBattleTextBuff2[index] = 0xD2; // rose + index++; + gBattleTextBuff2[index] = 0xD2 >> 8; + index++; + gBattleTextBuff2[index] = B_BUFF_EOS; + + if (gBattleMons[gActiveBank].statStages[statId] == 0xC) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank); + } + + gBattleMons[gActiveBank].statStages[statId] += statValue; + if (gBattleMons[gActiveBank].statStages[statId] < 0) + gBattleMons[gActiveBank].statStages[statId] = 0; + if (gBattleMons[gActiveBank].statStages[statId] > 0xC) + gBattleMons[gActiveBank].statStages[statId] = 0xC; + + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_CHANGE_BS_PTR) + gBattleMoveFlags |= MOVESTATUS_MISSED; + + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_CHANGE_BS_PTR)) + return STAT_CHANGE_DIDNT_WORK; + + return STAT_CHANGE_WORKED; +} + +void atk89_statbuffchange(void) +{ + const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), BSScriptRead8(gBattlescriptCurrInstr + 1), jumpPtr) == STAT_CHANGE_WORKED) + gBattlescriptCurrInstr += 6; +} + +void atk8A_normalisebuffs(void) // haze +{ + s32 i, j; + + for (i = 0; i < gNoOfAllBanks; i++) + { + for (j = 0; j < BATTLE_STATS_NO; j++) + gBattleMons[i].statStages[j] = 6; + } + + gBattlescriptCurrInstr++; +} + +void atk8B_setbide(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gBankAttacker] = gCurrentMove; + gTakenDmg[gBankAttacker] = 0; + gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); // 2 turns + + gBattlescriptCurrInstr++; +} + +void atk8C_confuseifrepeatingattackends(void) +{ + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE)) + gBattleCommunication[MOVE_EFFECT_BYTE] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER); + + gBattlescriptCurrInstr++; +} + +void atk8D_setmultihit_counter(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + } + else + { + gMultiHitCounter = Random() & 3; + if (gMultiHitCounter > 1) + gMultiHitCounter = (Random() & 3) + 2; + else + gMultiHitCounter += 2; + } + + gBattlescriptCurrInstr += 2; +} + +void atk8E_init_multihit_string(void) +{ + PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) + + gBattlescriptCurrInstr++; +} + +bool8 sub_8051064(void) +{ + if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + { + *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget]; + } + else + { + u16 random = Random() & 0xFF; + if ((u32)((random * (gBattleMons[gBankAttacker].level + gBattleMons[gBankTarget].level) >> 8) + 1) <= (gBattleMons[gBankTarget].level / 4)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + return FALSE; + } + *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget]; + } + + gBattlescriptCurrInstr = gUnknown_082DADD8; + return TRUE; +} + +void atk8F_forcerandomswitch(void) +{ + s32 i; + s32 bank1PartyId = 0; + s32 bank2PartyId = 0; + + #ifdef NONMATCHING + s32 lastMonId = 0; // + 1 + #else + register s32 lastMonId asm("r8") = 0; // + 1 + #endif // NONMATCHING + + s32 firstMonId = 0; + s32 monsCount = 0; + struct Pokemon* party = NULL; + s32 validMons = 0; + s32 minNeeded = 0; + + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + { + if (GetBankSide(gBankTarget) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + if ((gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_LINK) + || (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_x2000000) + || (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)) + { + if ((gBankTarget & BIT_MON) != 0) + { + firstMonId = 3; + lastMonId = 6; + } + else + { + firstMonId = 0; + lastMonId = 3; + } + monsCount = 3; + minNeeded = 1; + bank2PartyId = gBattlePartyID[gBankTarget]; + bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON]; + } + else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK) + || (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_x2000000)) + { + if (sub_806D82C(sub_806D864(gBankTarget)) == 1) + { + firstMonId = 3; + lastMonId = 6; + } + else + { + firstMonId = 0; + lastMonId = 3; + } + monsCount = 3; + minNeeded = 1; + bank2PartyId = gBattlePartyID[gBankTarget]; + bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON]; + } + else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + if (GetBankSide(gBankTarget) == SIDE_PLAYER) + { + firstMonId = 0; + lastMonId = 6; + monsCount = 6; + minNeeded = 2; // since there are two opponents, it has to be a double battle + } + else + { + if ((gBankTarget & BIT_MON) != 0) + { + firstMonId = 3; + lastMonId = 6; + } + else + { + firstMonId = 0; + lastMonId = 3; + } + monsCount = 3; + minNeeded = 1; + } + bank2PartyId = gBattlePartyID[gBankTarget]; + bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON]; + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + firstMonId = 0; + lastMonId = 6; + monsCount = 6; + minNeeded = 2; + bank2PartyId = gBattlePartyID[gBankTarget]; + bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON]; + } + else + { + firstMonId = 0; + lastMonId = 6; + monsCount = 6; + minNeeded = 1; + bank2PartyId = gBattlePartyID[gBankTarget]; // there is only one pokemon out in single battles + bank1PartyId = gBattlePartyID[gBankTarget]; + } + + for (i = firstMonId; i < lastMonId; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + { + validMons++; + } + } + + if (validMons <= minNeeded) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + if (sub_8051064()) + { + do + { + i = Random() % monsCount; + i += firstMonId; + } + while (i == bank2PartyId + || i == bank1PartyId + || GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE + || GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE + || GetMonData(&party[i], MON_DATA_HP) == 0); + } + *(gBattleStruct->field_5C + gBankTarget) = i; + + if (!sub_81B1250()) + sub_803BDA0(gBankTarget); + + if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + || (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI) + || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + sub_81B8E80(gBankTarget, i, 0); + sub_81B8E80(gBankTarget ^ BIT_MON, i, 1); + } + + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + sub_80571DC(gBankTarget, i); + } + } + else + { + sub_8051064(); + } +} + +void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type +{ + u8 validMoves = 0; + u8 moveChecked; + u8 moveType; + + while (validMoves < 4) + { + if (gBattleMons[gBankAttacker].moves[validMoves] == 0) + break; + + validMoves++; + } + + for (moveChecked = 0; moveChecked < validMoves; moveChecked++) + { + moveType = gBattleMoves[gBattleMons[gBankAttacker].moves[moveChecked]].type; + + if (moveType == TYPE_MYSTERY) + { + if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST) + moveType = TYPE_GHOST; + else + moveType = TYPE_NORMAL; + } + if (moveType != gBattleMons[gBankAttacker].type1 + && moveType != gBattleMons[gBankAttacker].type2) + { + break; + } + } + + if (moveChecked == validMoves) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + do + { + + while ((moveChecked = Random() & 3) >= validMoves); + + moveType = gBattleMoves[gBattleMons[gBankAttacker].moves[moveChecked]].type; + + if (moveType == TYPE_MYSTERY) + { + if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST) + moveType = TYPE_GHOST; + else + moveType = TYPE_NORMAL; + } + } + while (moveType == gBattleMons[gBankAttacker].type1 || moveType == gBattleMons[gBankAttacker].type2); + + gBattleMons[gBankAttacker].type1 = moveType; + gBattleMons[gBankAttacker].type2 = moveType; + + PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType) + + gBattlescriptCurrInstr += 5; + } +} + +void atk91_givepaydaymoney(void) +{ + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gPaydayMoney != 0) + { + u32 bonusMoney = gPaydayMoney * gBattleStruct->moneyMultiplier; + AddMoney(&gSaveBlock1Ptr->money, bonusMoney); + + PREPARE_HWORD_NUMBER_BUFFER(gBattleTextBuff1, 5, bonusMoney) + + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PrintPayDayMoneyString; + } + else + { + gBattlescriptCurrInstr++; + } +} + +void atk92_setlightscreen(void) +{ + if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_LIGHTSCREEN) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_LIGHTSCREEN; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].lightscreenTimer = 5; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].lightscreenBank = gBankAttacker; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + } + + gBattlescriptCurrInstr++; +} + +void atk93_ko_move(void) +{ + u8 holdEffect, param; + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBankTarget].holdEffect; + param = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) + { + RecordItemEffectBattle(gBankTarget, HOLD_EFFECT_FOCUS_BAND); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_STURDY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gLastUsedAbility = ABILITY_STURDY; + gBattlescriptCurrInstr = BattleScript_SturdyPreventsOHKO; + RecordAbilityBattle(gBankTarget, ABILITY_STURDY); + } + else + { + u16 chance; + if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS)) + { + chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level); + if (Random() % 100 + 1 < chance && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + chance = TRUE; + else + chance = FALSE; + } + else if (gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker + && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + { + chance = TRUE; + } + else + { + chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level); + if (Random() % 100 + 1 < chance && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + chance = TRUE; + else + chance = FALSE; + } + if (chance) + { + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + gBattleMoveFlags |= MOVESTATUS_ENDURED; + } + else if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].hp; + gBattleMoveFlags |= MOVESTATUS_ONEHITKO; + } + gBattlescriptCurrInstr += 5; + } + else + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + } +} + +void atk94_damagetohalftargethp(void) // super fang +{ + gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + gBattlescriptCurrInstr++; +} + +void atk95_setsandstorm(void) +{ + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SANDSTORM_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +void atk96_weatherdamage(void) +{ + if (WEATHER_HAS_EFFECT) + { + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (gBattleMons[gBankAttacker].type1 != TYPE_ROCK + && gBattleMons[gBankAttacker].type1 != TYPE_STEEL + && gBattleMons[gBankAttacker].type1 != TYPE_GROUND + && gBattleMons[gBankAttacker].type2 != TYPE_ROCK + && gBattleMons[gBankAttacker].type2 != TYPE_STEEL + && gBattleMons[gBankAttacker].type2 != TYPE_GROUND + && gBattleMons[gBankAttacker].ability != ABILITY_SAND_VEIL + && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) + && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + if (gBattleWeather & WEATHER_HAIL) + { + if (gBattleMons[gBankAttacker].type1 != TYPE_ICE + && gBattleMons[gBankAttacker].type2 != TYPE_ICE + && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) + && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + } + else + { + gBattleMoveDamage = 0; + } + + if (gAbsentBankFlags & gBitTable[gBankAttacker]) + gBattleMoveDamage = 0; + + gBattlescriptCurrInstr++; +} + +void atk97_try_infatuation(void) +{ + struct Pokemon *monAttacker, *monTarget; + u16 speciesAttacker, speciesTarget; + u32 personalityAttacker, personalityTarget; + + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + monAttacker = &gPlayerParty[gBattlePartyID[gBankAttacker]]; + else + monAttacker = &gEnemyParty[gBattlePartyID[gBankAttacker]]; + + if (GetBankSide(gBankTarget) == SIDE_PLAYER) + monTarget = &gPlayerParty[gBattlePartyID[gBankTarget]]; + else + monTarget = &gEnemyParty[gBattlePartyID[gBankTarget]]; + + speciesAttacker = GetMonData(monAttacker, MON_DATA_SPECIES); + personalityAttacker = GetMonData(monAttacker, MON_DATA_PERSONALITY); + + speciesTarget = GetMonData(monTarget, MON_DATA_SPECIES); + personalityTarget = GetMonData(monTarget, MON_DATA_PERSONALITY); + + if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS) + { + gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction; + gLastUsedAbility = ABILITY_OBLIVIOUS; + RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS); + } + else + { + if (GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) + || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION + || GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == MON_GENDERLESS + || GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) == MON_GENDERLESS) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_INFATUATED_WITH(gBankAttacker); + gBattlescriptCurrInstr += 5; + } + } +} + +void atk98_status_icon_update(void) +{ + if (gBattleExecBuffer) + return; + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) != BS_ATTACKER_WITH_PARTNER) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } + else + { + gActiveBank = gBankAttacker; + if (!(gAbsentBankFlags & gBitTable[gActiveBank])) + { + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + } + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); + if (!(gAbsentBankFlags & gBitTable[gActiveBank])) + { + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + } + } + gBattlescriptCurrInstr += 2; + } +} + +void atk99_setmist(void) +{ + if (gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer = 5; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistBank = gBankAttacker; + gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_MIST; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +void atk9A_set_focusenergy(void) +{ + if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMons[gBankAttacker].status2 |= STATUS2_FOCUS_ENERGY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +void atk9B_transformdataexecution(void) +{ + gLastUsedMove = 0xFFFF; + gBattlescriptCurrInstr++; + if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED + || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + s32 i; + u8 *battleMonAttacker, *battleMonTarget; + + gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED; + gDisableStructs[gBankAttacker].disabledMove = 0; + gDisableStructs[gBankAttacker].disableTimer1 = 0; + gDisableStructs[gBankAttacker].unk0 = gBattleMons[gBankTarget].personality; + gDisableStructs[gBankAttacker].unk18_b = 0; + + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBankTarget].species) + + battleMonAttacker = (u8*)(&gBattleMons[gBankAttacker]); + battleMonTarget = (u8*)(&gBattleMons[gBankTarget]); + + for (i = 0; i < offsetof(struct BattlePokemon, pp); i++) + battleMonAttacker[i] = battleMonTarget[i]; + + for (i = 0; i < 4; i++) + { + if (gBattleMoves[gBattleMons[gBankAttacker].moves[i]].pp < 5) + gBattleMons[gBankAttacker].pp[i] = gBattleMoves[gBattleMons[gBankAttacker].moves[i]].pp; + else + gBattleMons[gBankAttacker].pp[i] = 5; + } + + gActiveBank = gBankAttacker; + EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } +} + +void atk9C_set_substitute(void) +{ + u32 hp = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMons[gBankAttacker].maxHP / 4 == 0) + hp = 1; + + if (gBattleMons[gBankAttacker].hp <= hp) + { + gBattleMoveDamage = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + gBattleMons[gBankAttacker].status2 |= STATUS2_SUBSTITUTE; + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED); + gDisableStructs[gBankAttacker].substituteHP = gBattleMoveDamage; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE; + } + + gBattlescriptCurrInstr++; +} + +extern const u16 gMovesForbiddenToCopy[]; +#define MIMIC_FORBIDDEN_END 0xFFFE +#define METRONOME_SLEEPTALK_FORBIDDEN_END 0xFFFF + +static bool8 IsMoveUncopyableByMimic(u16 move) +{ + s32 i; + for (i = 0; gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END + && gMovesForbiddenToCopy[i] != move; i++); + + return (gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END); +} + +void atk9D_mimicattackcopy(void) +{ + gLastUsedMove = 0xFFFF; + + if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget]) + || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED + || gLastUsedMovesByBanks[gBankTarget] == 0 + || gLastUsedMovesByBanks[gBankTarget] == 0xFFFF) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + s32 i; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + break; + } + + if (i == 4) + { + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMovesByBanks[gBankTarget]; + if (gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp < 5) + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp; + else + gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5; + + + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget]) + + gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos]; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + } +} + +#ifdef NONMATCHING +void atk9E_metronome(void) +{ + while (1) + { + const u16 *move; + s32 i, j; + + gCurrentMove = (Random() & 0x1FF) + 1; + if (gCurrentMove > LAST_MOVE_INDEX) + continue; + + for (i = 0; i < 4; i++); // ? + + for (move = gMovesForbiddenToCopy; ; move++) + { + if (*move == gCurrentMove) + break; + if (*move == METRONOME_SLEEPTALK_FORBIDDEN_END) + break; + } + + if (*move == METRONOME_SLEEPTALK_FORBIDDEN_END) + break; + } + + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); +} + +#else +__attribute__((naked)) +void atk9E_metronome(void) +{ + asm( + "\n\ + .syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r7, =gCurrentMove\n\ + movs r6, 0xB1\n\ + lsls r6, 1\n\ + ldr r5, =gMovesForbiddenToCopy\n\ + ldr r0, =gBattlescriptCurrInstr\n\ + mov r8, r0\n\ +_080524EE:\n\ + bl Random\n\ + ldr r2, =0x000001ff\n\ + adds r1, r2, 0\n\ + ands r0, r1\n\ + adds r0, 0x1\n\ + strh r0, [r7]\n\ + cmp r0, r6\n\ + bhi _080524EE\n\ + movs r0, 0x3\n\ +_08052502:\n\ + subs r0, 0x1\n\ + cmp r0, 0\n\ + bge _08052502\n\ + ldr r4, =gCurrentMove\n\ + ldrh r2, [r4]\n\ + ldr r3, =0x0000ffff\n\ + subs r0, r5, 0x2\n\ +_08052510:\n\ + adds r0, 0x2\n\ + ldrh r1, [r0]\n\ + cmp r1, r2\n\ + beq _0805251C\n\ + cmp r1, r3\n\ + bne _08052510\n\ +_0805251C:\n\ + ldr r0, =0x0000ffff\n\ + cmp r1, r0\n\ + bne _080524EE\n\ + ldr r2, =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r3, =gBattleScriptsForMoveEffects\n\ + ldr r2, =gBattleMoves\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + ldrh r0, [r4]\n\ + movs r1, 0\n\ + bl GetMoveTarget\n\ + ldr r1, =gBankTarget\n\ + strb r0, [r1]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +void atk9F_dmgtolevel(void) +{ + gBattleMoveDamage = gBattleMons[gBankAttacker].level; + gBattlescriptCurrInstr++; +} + +void atkA0_psywavedamageeffect(void) +{ + s32 randDamage; + + while ((randDamage = (Random() & 0xF)) > 10); + + randDamage *= 10; + gBattleMoveDamage = gBattleMons[gBankAttacker].level * (randDamage + 50) / 100; + gBattlescriptCurrInstr++; +} + +void atkA1_counterdamagecalculator(void) +{ + u8 sideAttacker = GetBankSide(gBankAttacker); + u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].physicalBank); + + if (gProtectStructs[gBankAttacker].physicalDmg + && sideAttacker != sideTarget + && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp) + { + gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2; + + if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp) + gBankTarget = gSideTimers[sideTarget].followmeTarget; + else + gBankTarget = gProtectStructs[gBankAttacker].physicalBank; + + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkA2_mirrorcoatdamagecalculator(void) // a copy of atkA1 with the physical -> special field changes +{ + u8 sideAttacker = GetBankSide(gBankAttacker); + u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].specialBank); + + if (gProtectStructs[gBankAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp) + { + gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2; + + if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp) + gBankTarget = gSideTimers[sideTarget].followmeTarget; + else + gBankTarget = gProtectStructs[gBankAttacker].specialBank; + + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkA3_disablelastusedattack(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + break; + } + if (gDisableStructs[gBankTarget].disabledMove == 0 + && i != 4 && gBattleMons[gBankTarget].pp[i] != 0) + { + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankTarget].moves[i]) + + gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i]; + gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2; + gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; // used to save the random amount of turns? + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkA4_setencore(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + break; + } + + if (gLastUsedMovesByBanks[gBankTarget] == MOVE_STRUGGLE + || gLastUsedMovesByBanks[gBankTarget] == MOVE_ENCORE + || gLastUsedMovesByBanks[gBankTarget] == MOVE_MIRROR_MOVE) + { + i = 4; + } + + if (gDisableStructs[gBankTarget].encoredMove == 0 + && i != 4 && gBattleMons[gBankTarget].pp[i] != 0) + { + gDisableStructs[gBankTarget].encoredMove = gBattleMons[gBankTarget].moves[i]; + gDisableStructs[gBankTarget].encoredMovePos = i; + gDisableStructs[gBankTarget].encoreTimer1 = (Random() & 3) + 3; + gDisableStructs[gBankTarget].encoreTimer2 = gDisableStructs[gBankTarget].encoreTimer1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkA5_painsplitdmgcalc(void) +{ + if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)) + { + s32 hpDiff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2; + s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hpDiff; + u8* storeLoc = (void*)(&gBattleScripting.painSplitHp); + + storeLoc[0] = (painSplitHp); + storeLoc[1] = (painSplitHp & 0x0000FF00) >> 8; + storeLoc[2] = (painSplitHp & 0x00FF0000) >> 16; + storeLoc[3] = (painSplitHp & 0xFF000000) >> 24; + + gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hpDiff; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; + + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#ifdef NONMATCHING +void atkA6_settypetorandomresistance(void) // conversion 2 +{ + if (gUnknown_02024250[gBankAttacker] == 0 + || gUnknown_02024250[gBankAttacker] == 0xFFFF) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else if (IsTwoTurnsMove(gUnknown_02024250[gBankAttacker]) + && gBattleMons[gUnknown_02024270[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + s32 type = 0, rands = 0; + do + { + while (((type = (Random() & 0x7F)) > 0x70)); + + type *= 3; + + if (gTypeEffectiveness[type] == gUnknown_02024258[gBankAttacker] + && gTypeEffectiveness[type + 2] <= 5 + && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] + && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + { + gBattleMons[gBankAttacker].type1 = type; + gBattleMons[gBankAttacker].type2 = type; + + PREPARE_TYPE_BUFFER(gBattleTextBuff1, type) + + gBattlescriptCurrInstr += 5; + return; + } + + rands++; + } while (rands <= 999); + + type = 0, rands = 0; + do + { + s8 var = (s8)(gTypeEffectiveness[type]); + if (var > -1 || var < -2) + { + if (gTypeEffectiveness[type] == gUnknown_02024258[gBankAttacker] + && gTypeEffectiveness[type + 2] <= 5 + && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] + && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + { + gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1]; + gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1]; + + PREPARE_TYPE_BUFFER(gBattleTextBuff1, gTypeEffectiveness[rands + 1]) + + gBattlescriptCurrInstr += 5; + return; + } + } + type += 3, rands += 3; + } while (rands < 336); + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#else +__attribute__((naked)) +void atkA6_settypetorandomresistance(void) // conversion 2 +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r1, =gUnknown_02024250\n\ + ldr r4, =gBankAttacker\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r2, r0, r1\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + beq _08052B7E\n\ + ldr r0, =0x0000ffff\n\ + cmp r1, r0\n\ + beq _08052B7E\n\ + ldrh r0, [r2]\n\ + bl IsTwoTurnsMove\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08052C1C\n\ + ldr r1, =gBattleMons\n\ + ldr r2, =gUnknown_02024270\n\ + ldrb r0, [r4]\n\ + adds r0, r2\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 5\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08052C1C\n\ +_08052B7E:\n\ + ldr r3, =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ + b _08052D08\n\ + .pool\n\ +_08052BB4:\n\ + mov r0, r12\n\ + strb r5, [r0]\n\ + mov r1, r10\n\ + ldrb r0, [r1]\n\ + muls r0, r2\n\ + adds r0, r7\n\ + adds r0, 0x22\n\ + strb r5, [r0]\n\ + ldr r1, =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r5, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + ldr r1, =gBattlescriptCurrInstr\n\ + b _08052C0A\n\ + .pool\n\ +_08052BE0:\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + adds r0, r3\n\ + ldrb r2, [r0]\n\ + strb r2, [r4]\n\ + mov r4, r10\n\ + ldrb r0, [r4]\n\ + muls r0, r6\n\ + ldr r7, =gBattleMons\n\ + adds r0, r7\n\ + adds r0, 0x22\n\ + strb r2, [r0]\n\ + ldr r1, =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r2, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + mov r1, r12\n\ +_08052C0A:\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _08052D08\n\ + .pool\n\ +_08052C1C:\n\ + movs r4, 0\n\ + mov r8, r4\n\ + movs r7, 0x7F\n\ + mov r9, r7\n\ +_08052C24:\n\ + bl Random\n\ + mov r4, r9\n\ + ands r4, r0\n\ + cmp r4, 0x70\n\ + bhi _08052C24\n\ + lsls r0, r4, 1\n\ + adds r4, r0, r4\n\ + ldr r6, =gTypeEffectiveness\n\ + adds r3, r4, r6\n\ + ldr r1, =gUnknown_02024258\n\ + ldr r2, =gBankAttacker\n\ + ldrb r5, [r2]\n\ + lsls r0, r5, 1\n\ + adds r0, r1\n\ + ldrb r1, [r3]\n\ + mov r10, r2\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _08052C80\n\ + adds r0, r4, 0x2\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x5\n\ + bhi _08052C80\n\ + ldr r7, =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r5, 0\n\ + muls r0, r2\n\ + adds r3, r0, r7\n\ + movs r0, 0x21\n\ + adds r0, r3\n\ + mov r12, r0\n\ + adds r0, r4, 0x1\n\ + adds r0, r6\n\ + ldrb r5, [r0]\n\ + mov r1, r12\n\ + ldrb r0, [r1]\n\ + adds r1, r5, 0\n\ + cmp r0, r1\n\ + beq _08052C80\n\ + adds r0, r3, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, r1\n\ + bne _08052BB4\n\ +_08052C80:\n\ + movs r7, 0x1\n\ + add r8, r7\n\ + ldr r0, =0x000003e7\n\ + cmp r8, r0\n\ + ble _08052C24\n\ + movs r0, 0\n\ + mov r8, r0\n\ + ldr r1, =gBattlescriptCurrInstr\n\ + mov r12, r1\n\ + ldr r3, =gTypeEffectiveness\n\ + adds r0, r4, 0x1\n\ + adds r0, r3\n\ + mov r9, r0\n\ + adds r5, r3, 0\n\ +_08052C9C:\n\ + ldrb r1, [r5]\n\ + cmp r1, 0xFF\n\ + bgt _08052CA6\n\ + cmp r1, 0xFE\n\ + bge _08052CE0\n\ +_08052CA6:\n\ + mov r4, r10\n\ + ldrb r2, [r4]\n\ + lsls r0, r2, 1\n\ + ldr r7, =gUnknown_02024258\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _08052CE0\n\ + ldrb r0, [r5, 0x2]\n\ + cmp r0, 0x5\n\ + bhi _08052CE0\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + ldr r1, =gBattleMons\n\ + adds r2, r0, r1\n\ + adds r4, r2, 0\n\ + adds r4, 0x21\n\ + ldrb r0, [r4]\n\ + mov r7, r9\n\ + ldrb r1, [r7]\n\ + cmp r0, r1\n\ + beq _08052CE0\n\ + adds r0, r2, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, r1\n\ + beq _08052CE0\n\ + b _08052BE0\n\ +_08052CE0:\n\ + adds r5, 0x3\n\ + movs r0, 0x3\n\ + add r8, r0\n\ + ldr r0, =0x0000014f\n\ + cmp r8, r0\n\ + bls _08052C9C\n\ + mov r1, r12\n\ + ldr r2, [r1]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + mov r4, r12\n\ + str r1, [r4]\n\ +_08052D08:\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\ + .pool\n\ + .syntax divided"); +} +#endif // NONMATCHING + +void atkA7_setalwayshitflag(void) +{ + gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS); + gStatuses3[gBankTarget] |= 0x10; + gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker; + gBattlescriptCurrInstr++; +} + +void atkA8_copymovepermanently(void) // sketch +{ + gLastUsedMove = 0xFFFF; + + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) + && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE + && gUnknownMovesUsedByBanks[gBankTarget] != 0 + && gUnknownMovesUsedByBanks[gBankTarget] != 0xFFFF + && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_SKETCH) + { + s32 i; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH) + continue; + if (gBattleMons[gBankAttacker].moves[i] == gUnknownMovesUsedByBanks[gBankTarget]) + break; + } + + if (i != 4) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else // sketch worked + { + struct MovePpInfo movePpData; + + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknownMovesUsedByBanks[gBankTarget]; + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknownMovesUsedByBanks[gBankTarget]].pp; + gActiveBank = gBankAttacker; + + for (i = 0; i < 4; i++) + { + movePpData.move[i] = gBattleMons[gBankAttacker].moves[i]; + movePpData.pp[i] = gBattleMons[gBankAttacker].pp[i]; + } + movePpData.ppBonuses = gBattleMons[gBankAttacker].ppBonuses; + + EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData); + MarkBufferBankForExecution(gActiveBank); + + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gUnknownMovesUsedByBanks[gBankTarget]) + + gBattlescriptCurrInstr += 5; + } + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + diff --git a/src/battle_ai.c b/src/battle_ai.c index 75b5eb2edb..8590b0f039 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -1802,7 +1802,7 @@ static void BattleAICmd_count_alive_pokemon(void) u32 status; bankOnField1 = gBattlePartyID[index]; status = GetBankIdentity(index) ^ 2; - bankOnField2 = gBattlePartyID[GetBankByPlayerAI(status)]; + bankOnField2 = gBattlePartyID[GetBankByIdentity(status)]; } else // in singles there's only one bank by side { diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 105b334f2c..8996059f98 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -19,7 +19,6 @@ extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBattleMovePower; extern u16 gTrainerBattleOpponent_A; -u8 CountAliveMonsInBattle(u8); bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 bank); extern const struct BattleMove gBattleMoves[]; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index cf073570da..b6359f76a4 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -35,7 +35,7 @@ extern const u8 gText_BadEgg[]; extern const u8 gText_EggNickname[]; extern u8 GetBankSide(u8 bank); -extern u8 GetBankByPlayerAI(u8 bank); +extern u8 GetBankByIdentity(u8 bank); extern u8 GetBankIdentity(u8 bank); u8 CountAliveMonsInBattle(u8 caseId) @@ -90,7 +90,7 @@ u8 sub_8069F34(u8 bank) status ^= 1; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) - return GetBankByPlayerAI(status); + return GetBankByIdentity(status); if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1) { u8 val; @@ -99,14 +99,14 @@ u8 sub_8069F34(u8 bank) val = status ^ 2; else val = status; - return GetBankByPlayerAI(val); + return GetBankByIdentity(val); } else { if ((gAbsentBankFlags & gBitTable[status])) - return GetBankByPlayerAI(status ^ 2); + return GetBankByIdentity(status ^ 2); else - return GetBankByPlayerAI(status); + return GetBankByIdentity(status); } } diff --git a/src/pokemon_3.c b/src/pokemon_3.c index aaa02c5d4e..d381c7544e 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -216,7 +216,7 @@ void sub_806CF24(s32 stat) gBankTarget = gBankInMenu; StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[stat]]); StringCopy(gBattleTextBuff2, gText_StatRose); - StrCpyDecodeToDisplayedStringBattle(gText_PkmnsStatChanged2); + BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2); } u8 *sub_806CF78(u16 itemId) @@ -251,7 +251,7 @@ u8 *sub_806CF78(u16 itemId) else { gBankAttacker = gBankInMenu; - StrCpyDecodeToDisplayedStringBattle(gText_PkmnGettingPumped); + BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnGettingPumped); } } } @@ -259,7 +259,7 @@ u8 *sub_806CF78(u16 itemId) if (itemEffect[3] & 0x80) { gBankAttacker = gBankInMenu; - StrCpyDecodeToDisplayedStringBattle(gText_PkmnShroudedInMist); + BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist); } return gDisplayedStringBattle; diff --git a/src/window.c b/src/window.c index 164031bee7..704060b9d7 100644 --- a/src/window.c +++ b/src/window.c @@ -451,7 +451,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 FillBitmapRect4Bit(&pixelRect, x, y, width, height, fillValue); } -void CopyToWindowPixelBuffer(u8 windowId, u8 *src, u16 size, u16 tileOffset) +void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset) { if (size != 0) CpuCopy16(src, gWindows[windowId].tileData + (0x20 * tileOffset), size); diff --git a/sym_ewram.txt b/sym_ewram.txt index ef2080e229..7c18d8225a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -211,16 +211,16 @@ gUnknown_02022E14: @ 2022E14 gUnknown_02022E16: @ 2022E16 .space 0x2 -gUnknown_02022E18: @ 2022E18 +gBattle_BG1_X: @ 2022E18 .space 0x2 -gUnknown_02022E1A: @ 2022E1A +gBattle_BG1_Y: @ 2022E1A .space 0x2 -gUnknown_02022E1C: @ 2022E1C +gBattle_BG2_X: @ 2022E1C .space 0x2 -gUnknown_02022E1E: @ 2022E1E +gBattle_BG2_Y: @ 2022E1E .space 0x2 gUnknown_02022E20: @ 2022E20 From d18eaa350297d14c82cee68a67fcb827e6bd685c Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 26 Sep 2017 18:13:58 -0500 Subject: [PATCH 034/182] Extract baserom calls from intro.s --- asm/intro.s | 18 +- data/graphics.s | 45 ++- data/intro.s | 503 +++++++++++++++++++++++--- data/player_pc.s | 2 +- graphics/intro/battle_circle.png | Bin 0 -> 610 bytes graphics/intro/battle_circle_1.pal | 19 + graphics/intro/battle_circle_2.pal | 19 + graphics/intro/battle_pokeball.bin | Bin 0 -> 1024 bytes graphics/intro/battle_pokeball.pal | 259 +++++++++++++ graphics/intro/battle_pokeball.png | Bin 0 -> 2197 bytes graphics/intro/battle_streaks.bin | Bin 0 -> 2048 bytes graphics/intro/battle_streaks.pal | 19 + graphics/intro/battle_streaks.png | Bin 0 -> 202 bytes graphics/intro/flying_shadow.pal | 19 + graphics/intro/latis.png | Bin 0 -> 258 bytes graphics/intro/leaves.pal | 259 +++++++++++++ graphics/intro/leaves_bg.png | Bin 0 -> 6611 bytes graphics/intro/leaves_bgleaves.bin | Bin 0 -> 2048 bytes graphics/intro/leaves_bgmountains.bin | Bin 0 -> 2048 bytes graphics/intro/leaves_drops.pal | 19 + graphics/intro/leaves_foreground.bin | Bin 0 -> 2048 bytes graphics/intro/leaves_gflogo.pal | 19 + graphics/intro/leaves_gflogo.png | Bin 0 -> 1113 bytes graphics/intro/leaves_midground.bin | Bin 0 -> 2048 bytes 24 files changed, 1138 insertions(+), 62 deletions(-) create mode 100644 graphics/intro/battle_circle.png create mode 100644 graphics/intro/battle_circle_1.pal create mode 100644 graphics/intro/battle_circle_2.pal create mode 100644 graphics/intro/battle_pokeball.bin create mode 100644 graphics/intro/battle_pokeball.pal create mode 100644 graphics/intro/battle_pokeball.png create mode 100644 graphics/intro/battle_streaks.bin create mode 100644 graphics/intro/battle_streaks.pal create mode 100644 graphics/intro/battle_streaks.png create mode 100644 graphics/intro/flying_shadow.pal create mode 100644 graphics/intro/latis.png create mode 100644 graphics/intro/leaves.pal create mode 100644 graphics/intro/leaves_bg.png create mode 100644 graphics/intro/leaves_bgleaves.bin create mode 100644 graphics/intro/leaves_bgmountains.bin create mode 100644 graphics/intro/leaves_drops.pal create mode 100644 graphics/intro/leaves_foreground.bin create mode 100644 graphics/intro/leaves_gflogo.pal create mode 100644 graphics/intro/leaves_gflogo.png create mode 100644 graphics/intro/leaves_midground.bin diff --git a/asm/intro.s b/asm/intro.s index efd52e7fd5..01ac2204bc 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -376,11 +376,11 @@ task_intro_1: @ 816CF18 movs r0, 0x12 movs r1, 0x28 bl SetGpuReg - ldr r0, =gUnknown_085E13B4 + ldr r0, =gIntroLeavesBgGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram - ldr r0, =gUnknown_085E07C4 + ldr r0, =gIntroLeavesForegroundTilemap ldr r1, =0x06008000 bl LZ77UnCompVram ldr r1, =0x06008800 @@ -393,7 +393,7 @@ task_intro_1: @ 816CF18 ldr r5, =0x81000400 str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gUnknown_085E0B78 + ldr r0, =gIntroLeavesMidgroundTilemap ldr r1, =0x06009000 bl LZ77UnCompVram ldr r1, =0x06009800 @@ -403,7 +403,7 @@ task_intro_1: @ 816CF18 str r1, [r4, 0x4] str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gUnknown_085E0EAC + ldr r0, =gIntroLeavesBgLeavesTilemap ldr r1, =0x0600a000 bl LZ77UnCompVram ldr r1, =0x0600a800 @@ -413,7 +413,7 @@ task_intro_1: @ 816CF18 str r1, [r4, 0x4] str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gUnknown_085E119C + ldr r0, =gIntroLeavesBgMountainsTilemap ldr r1, =0x0600b000 bl LZ77UnCompVram ldr r1, =0x0600b800 @@ -423,7 +423,7 @@ task_intro_1: @ 816CF18 str r1, [r4, 0x4] str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gUnknown_085E05C4 + ldr r0, =gIntroLeavesPal movs r5, 0x80 lsls r5, 2 movs r1, 0 @@ -1779,14 +1779,14 @@ task_intro_10: @ 816DBAC lsls r5, 24 lsrs r5, 24 bl intro_reset_and_hide_bgs - ldr r0, =gUnknown_085E3854 + ldr r0, =gIntroBattlePokeBallGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram - ldr r0, =gUnknown_085E3724 + ldr r0, =gIntroBattlePokeBallTilemap ldr r1, =0x06004000 bl LZ77UnCompVram - ldr r0, =gUnknown_085E3524 + ldr r0, =gIntroBattlePokeBallPal movs r2, 0x80 lsls r2, 2 movs r1, 0 diff --git a/data/graphics.s b/data/graphics.s index 96aaf39115..dc29f6bcb5 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -348,7 +348,28 @@ gUnknown_08D85E72:: @ 8D85E72 .incbin "baserom.gba", 0xd85e72, 0xa gUnknown_08D85E7C:: @ 8D85E7C - .incbin "baserom.gba", 0xd85e7c, 0x2618 + .incbin "baserom.gba", 0xd85e7c, 0x54 + +gUnknown_08D85ED0:: @ 8D85ED0 + .incbin "baserom.gba", 0xd85ed0, 0x20 + +gUnknown_08D85EF0:: @ 8D85EF0 + .incbin "baserom.gba", 0xd85ef0, 0x20 + +gUnknown_08D85F10:: @ 8D85ED0 + .incbin "baserom.gba", 0xd85f10, 0x20 + +gUnknown_08D85F30:: @ 8D85ED0 + .incbin "baserom.gba", 0xd85f30, 0x20 + +gUnknown_08D85F50:: @ 8D85F50 + .incbin "baserom.gba", 0xd85f50, 0x1e0 + +gUnknown_08D86130:: @ 8D86130 + .incbin "baserom.gba", 0xd86130, 0x420 + +gUnknown_08D86550:: @ 8D86550 + .incbin "baserom.gba", 0xd86550, 0x1f44 gUnknown_08D88494:: @ 8D88494 .incbin "baserom.gba", 0xd88494, 0x8ac @@ -381,7 +402,13 @@ gUnknown_08D8B440:: @ 8D8B440 .incbin "baserom.gba", 0xd8b440, 0x2a8 gUnknown_08D8B6E8:: @ 8D8B6E8 - .incbin "baserom.gba", 0xd8b6e8, 0x38c + .incbin "baserom.gba", 0xd8b6e8, 0x124 + +gUnknown_08D8B80C:: @ 8D8B80C + .incbin "baserom.gba", 0xd8b80c, 0x248 + +gUnknown_08D8BA54:: @ 8D8BA54 + .incbin "baserom.gba", 0xd8ba54, 0x20 gUnknown_08D8BA74:: @ 8D8BA74 .incbin "baserom.gba", 0xd8ba74, 0x6f8 @@ -393,7 +420,19 @@ gUnknown_08D8C838:: @ 8D8C838 .incbin "baserom.gba", 0xd8c838, 0x490 gUnknown_08D8CCC8:: @ 8D8CCC8 - .incbin "baserom.gba", 0xd8ccc8, 0x748 + .incbin "baserom.gba", 0xd8ccc8, 0x27c + +gUnknown_08D8CF44:: @ 8D8CF44 + .incbin "baserom.gba", 0xd8cf44, 0x1cc + +gUnknown_08D8D110:: @ 8D8D110 + .incbin "baserom.gba", 0xd8d110, 0x20 + +gUnknown_08D8D130:: @ 8D8D130 + .incbin "baserom.gba", 0xd8d130, 0xd8 + +gUnknown_08D8D208:: @ 8D8D208 + .incbin "baserom.gba", 0xd8d208, 0x208 gUnknown_08D8D410:: @ 8D8D410 .incbin "baserom.gba", 0xd8d410, 0x17c diff --git a/data/intro.s b/data/intro.s index 5527999511..acd1164b61 100644 --- a/data/intro.s +++ b/data/intro.s @@ -3,122 +3,527 @@ .section .rodata -gUnknown_085E05C4:: @ 85E05C4 - .incbin "baserom.gba", 0x5e05c4, 0x200 + .align 2 +gIntroLeavesDropsPal:: @ 85DFF90 + .incbin "graphics/intro/leaves_drops.gbapal" -gUnknown_085E07C4:: @ 85E07C4 - .incbin "baserom.gba", 0x5e07c4, 0x3b4 + .align 2 +gIntroLeavesGFLogoPal:: @ 85DFFB0 + .incbin "graphics/intro/leaves_gflogo.gbapal" -gUnknown_085E0B78:: @ 85E0B78 - .incbin "baserom.gba", 0x5e0b78, 0x334 + .align 2 +gIntroLeavesGFLogoGfx:: @ 85DFFD0 + .incbin "graphics/intro/leaves_gflogo.4bpp.lz" -gUnknown_085E0EAC:: @ 85E0EAC - .incbin "baserom.gba", 0x5e0eac, 0x2f0 + .align 2 +gIntroLeavesPal:: @ 85E05C4 + .incbin "graphics/intro/leaves.gbapal" -gUnknown_085E119C:: @ 85E119C - .incbin "baserom.gba", 0x5e119c, 0x218 + .align 2 +gIntroLeavesForegroundTilemap:: @ 85E07C4 + .incbin "graphics/intro/leaves_foreground.bin.lz" -gUnknown_085E13B4:: @ 85E13B4 - .incbin "baserom.gba", 0x5e13b4, 0x2170 + .align 2 +gIntroLeavesMidgroundTilemap:: @ 85E0B78 + .incbin "graphics/intro/leaves_midground.bin.lz" -gUnknown_085E3524:: @ 85E3524 - .incbin "baserom.gba", 0x5e3524, 0x200 + .align 2 +gIntroLeavesBgLeavesTilemap:: @ 85E0EAC + .incbin "graphics/intro/leaves_bgleaves.bin.lz" -gUnknown_085E3724:: @ 85E3724 - .incbin "baserom.gba", 0x5e3724, 0x130 + .align 2 +gIntroLeavesBgMountainsTilemap:: @ 85E119C + .incbin "graphics/intro/leaves_bgmountains.bin.lz" -gUnknown_085E3854:: @ 85E3854 - .incbin "baserom.gba", 0x5e3854, 0x1220 + .align 2 +gIntroLeavesBgGfx:: @ 85E13B4 + .incbin "graphics/intro/leaves_bg.4bpp.lz" + .align 2 +gIntroBattlePokeBallPal:: @ 85E3524 + .incbin "graphics/intro/battle_pokeball.gbapal" + + .align 2 +gIntroBattlePokeBallTilemap:: @ 85E3724 + .incbin "graphics/intro/battle_pokeball.bin.lz" + + .align 2 +gIntroBattlePokeBallGfx:: @ 85E3854 + .incbin "graphics/intro/battle_pokeball.8bpp.lz" + + .align 2 + .incbin "graphics/intro/battle_streaks.gbapal" + + .align 2 + .incbin "graphics/intro/battle_streaks.4bpp.lz" + + .align 2 + .incbin "graphics/intro/battle_streaks.bin.lz" + + .align 2 +gIntroBattleCirclePal:: @ 85E4570 + .incbin "graphics/intro/battle_circle_1.gbapal" + + .align 2 + .incbin "graphics/intro/battle_circle_2.gbapal" + + .align 2 +gIntroBattleCircleGfx:: @ 85E45B0 + .incbin "graphics/intro/battle_circle.4bpp.lz" + + .align 2 +gIntroFlyingPkmnShadowPal:: @ 85E492C + .incbin "graphics/intro/flying_shadow.gbapal" + + .align 2 + .incbin "graphics/intro/latis.4bpp.lz" + + .align 2 + .byte 0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x06 + .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x02, 0x0d + .byte 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 + .byte 0x16, 0x17, 0x18, 0x19, 0x02, 0x0d, 0x0e, 0x0f + .byte 0x10, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e + .byte 0x1f, 0x20, 0x21, 0x02, 0x0d, 0x0e, 0x0f, 0x10 + .byte 0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27 + .byte 0x28, 0x29, 0x2a, 0x00 + + .align 2 gUnknown_085E4A74:: @ 85E4A74 - .incbin "baserom.gba", 0x5e4a74, 0x10 + obj_tiles gUnknown_08D8D208, 0x0400, 0x05e1 + null_obj_tiles + .align 2 gUnknown_085E4A84:: @ 85E4A84 - .incbin "baserom.gba", 0x5e4a84, 0x34 + obj_pal gUnknown_08D8BA54, 0x05e1 + null_obj_pal + .align 2 +gUnknown_085E4A94:: @ 85E4A94 + .byte 0xa0, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00 + + .align 2 +gUnknown_085E4A9C:: @ 85E4A9C + .2byte 0x0000, 0x0002, 0x0004, 0x0002, 0x0008, 0x0002, 0x000c, 0x0002, 0x0010, 0x0002, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4AB4:: @ 85E4AB4 + .4byte gUnknown_085E4A9C + + .align 2 gUnknown_085E4AB8:: @ 85E4AB8 - .incbin "baserom.gba", 0x5e4ab8, 0x18 + spr_template 0x05e1, 0x05e1, gUnknown_085E4A94, gUnknown_085E4AB4, NULL, gDummySpriteAffineAnimTable, sub_816D338 + .align 2 gUnknown_085E4AD0:: @ 85E4AD0 - .incbin "baserom.gba", 0x5e4ad0, 0x18 + .byte 0x7c, 0x28, 0x66, 0x1e, 0x4d, 0x1e, 0x36, 0x0f + .byte 0x94, 0x09, 0x3f, 0x1c, 0x5d, 0x28, 0x94, 0x20 + .byte 0xad, 0x29, 0x5e, 0x14, 0xd0, 0x26, 0x00, 0x00 + .align 2 gUnknown_085E4AE8:: @ 85E4AE8 - .incbin "baserom.gba", 0x5e4ae8, 0x20 + obj_tiles gUnknown_08D85F50, 0x0400, 0x05dc + obj_tiles gUnknown_08D86130, 0x0c00, 0x05dd + obj_tiles gUnknown_08D86550, 0x2000, 0x05de + null_obj_tiles + .align 2 gUnknown_085E4B08:: @ 85E4B08 - .incbin "baserom.gba", 0x5e4b08, 0x38 + obj_pal gUnknown_08D85ED0, 0x05dc + obj_pal gUnknown_08D85EF0, 0x05dd + obj_pal gUnknown_08D85F10, 0x05de + null_obj_pal + .align 2 +gUnknown_085E4B28:: @ 85E4B28 + .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00 + + .align 2 +gUnknown_085E4B30:: @ 85E4B30 + .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4B3C:: @ 85E4B3C + .4byte gUnknown_085E4B30 + + .align 2 gUnknown_085E4B40:: @ 85E4B40 - .incbin "baserom.gba", 0x5e4b40, 0x64 + spr_template 0x05dc, 0x05dc, gUnknown_085E4B28, gUnknown_085E4B3C, NULL, gDummySpriteAffineAnimTable, sub_816D81C + .align 2 +gUnknown_085E4B58:: @ 85E4B58 + .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00 + + .align 2 +gUnknown_085E4B60:: @ 85E4B60 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0010, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4B74:: @ 85E4B74 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0010, 0x0003, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4B88:: @ 85E4B88 + .2byte 0x0030, 0x0004, 0x0040, 0x0006, 0x0050, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4B98:: @ 85E4B98 + .4byte gUnknown_085E4B60 + .4byte gUnknown_085E4B74 + .4byte gUnknown_085E4B88 + + .align 2 gUnknown_085E4BA4:: @ 85E4BA4 - .incbin "baserom.gba", 0x5e4ba4, 0x38 + spr_template 0x05dd, 0x05dd, gUnknown_085E4B58, gUnknown_085E4B98, NULL, gDummySpriteAffineAnimTable, sub_816D9C0 + .align 2 +gUnknown_085E4BBC:: @ 85E4BBC + .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 + + .align 2 +gUnknown_085E4BC4:: @ 85E4BC4 + .2byte 0x0000, 0x0004, 0x0040, 0x0004, 0x0080, 0x0004, 0x00c0, 0x0004, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4BD8:: @ 85E4BD8 + .4byte gUnknown_085E4BC4 + + .align 2 gUnknown_085E4BDC:: @ 85E4BDC - .incbin "baserom.gba", 0x5e4bdc, 0x18 + spr_template 0x05de, 0x05de, gUnknown_085E4BBC, gUnknown_085E4BD8, NULL, gDummySpriteAffineAnimTable, sub_816DAE8 + .align 2 gUnknown_085E4BF4:: @ 85E4BF4 - .incbin "baserom.gba", 0x5e4bf4, 0x10 + obj_tiles gUnknown_08D8B80C, 0x0c00, 0x05df + null_obj_tiles + .align 2 gUnknown_085E4C04:: @ 85E4C04 - .incbin "baserom.gba", 0x5e4c04, 0x48 + obj_pal gUnknown_08D8BA54, 0x05df + null_obj_pal + .align 2 +gUnknown_085E4C14:: @ 85E4C14 + .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_085E4C1C:: @ 85E4C1C + .2byte 0x0000, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4C28:: @ 85E4C28 + .2byte 0x0010, 0x0002, 0x0040, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4C34:: @ 85E4C34 + .2byte 0x0020, 0x0002, 0x0050, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4C40:: @ 85E4C40 + .4byte gUnknown_085E4C1C + .4byte gUnknown_085E4C28 + .4byte gUnknown_085E4C34 + + .align 2 gUnknown_085E4C4C:: @ 85E4C4C - .incbin "baserom.gba", 0x5e4c4c, 0x18 + spr_template 0x05df, 0x05df, gUnknown_085E4C14, gUnknown_085E4C40, NULL, gDummySpriteAffineAnimTable, sub_816EC6C + .align 2 gUnknown_085E4C64:: @ 85E4C64 - .incbin "baserom.gba", 0x5e4c64, 0x24 + .2byte 0x0068, 0x0000, 0x00c0, 0x008e, 0x0003, 0x0280, 0x0053, 0x0001 + .2byte 0x0180, 0x009b, 0x0000, 0x0080, 0x0038, 0x0002, 0x0200, 0x00ae + .2byte 0x0001, 0x0100 + .align 2 gUnknown_085E4C88:: @ 85E4C88 - .incbin "baserom.gba", 0x5e4c88, 0x10 + obj_tiles gUnknown_08D8CF44, 0x0600, 0x05e0 + null_obj_tiles + .align 2 gUnknown_085E4C98:: @ 85E4C98 - .incbin "baserom.gba", 0x5e4c98, 0x10 + obj_pal gUnknown_08D8D110, 0x05e0 + null_obj_pal + .align 2 gUnknown_085E4CA8:: @ 85E4CA8 - .incbin "baserom.gba", 0x5e4ca8, 0x6c + .2byte 0x0042, 0x0040, 0x0001, 0x0060, 0x0060, 0x0008, 0x0080, 0x0040 + .2byte 0x0001, 0x0090, 0x0030, 0x0008, 0x00a0, 0x0048, 0x0001, 0x00b0 + .2byte 0x0060, 0x0008, 0x0060, 0x0060, 0x0004, 0x0070, 0x0068, 0x0008 + .2byte 0x0080, 0x0060, 0x0004, 0x0058, 0x0020, 0x0004, 0x0068, 0x0018 + .2byte 0x0008, 0x0078, 0x0020, 0x0004 + .align 2 +gUnknown_085E4CF0:: @ 85E4CF0 + .byte 0xa0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_085E4CF8:: @ 85E4CF8 + .2byte 0x0000, 0x0004, 0x0008, 0x0004, 0x0010, 0x0004, 0x0018, 0x0004 + .2byte 0x0020, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4D10:: @ 85E4D10 + .4byte gUnknown_085E4CF8 + + .align 2 gUnknown_085E4D14:: @ 85E4D14 - .incbin "baserom.gba", 0x5e4d14, 0x50 + spr_template 0x05e0, 0x05e0, gUnknown_085E4CF0, gUnknown_085E4D10, NULL, gDummySpriteAffineAnimTable, sub_816E7B4 + .align 2 +gUnknown_085E4D2C:: @ 85E4D2C + .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_085E4D34:: @ 85E4D34 + .2byte 0x0010, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4D3C:: @ 85E4D3C + .2byte 0x0018, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4D44:: @ 85E4D44 + .2byte 0x0000, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4D4C:: @ 85E4D4C + .2byte 0x0030, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4D54:: @ 85E4D54 + .4byte gUnknown_085E4D34 + .4byte gUnknown_085E4D3C + .4byte gUnknown_085E4D44 + .4byte gUnknown_085E4D4C + + .align 2 gUnknown_085E4D64:: @ 85E4D64 - .incbin "baserom.gba", 0x5e4d64, 0x60 + spr_template 0x07d0, 0x07d0, gUnknown_085E4D2C, gUnknown_085E4D54, NULL, gDummySpriteAffineAnimTable, sub_816F454 + .align 2 +gUnknown_085E4D7C:: @ 85E4D7C + .byte 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00 + + .align 2 +gUnknown_085E4D84:: @ 85E4D84 + .2byte 0x0080, 0x0004, 0x00c0, 0x0004, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4D90:: @ 85E4D90 + .2byte 0x0000, 0x0008, 0x0040, 0x0008, 0x0080, 0x0008, 0x00c0, 0x0008, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4DA4:: @ 85E4DA4 + .2byte 0x0100, 0x0004, 0x0140, 0x0004, 0x0180, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4DB4:: @ 85E4DB4 + .2byte 0x0180, 0x0010, 0x0140, 0x0010, 0x0100, 0x0010, 0xffff, 0x0000 + + .align 2 gUnknown_085E4DC4:: @ 85E4DC4 - .incbin "baserom.gba", 0x5e4dc4, 0xd0 + .4byte gUnknown_085E4D7C + .4byte gUnknown_085E4D90 + .4byte gUnknown_085E4DA4 + .4byte gUnknown_085E4DB4 + .align 2 +gUnknown_085E4DD4:: @ 85E4DD4 + .2byte 0x03a0, 0x4000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4DDC:: @ 85E4DDC + .2byte 0x00a0, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4DE4:: @ 85E4DE4 + .2byte 0x87a0, 0xc000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4DEC:: @ 85E4DEC + .2byte 0x0050, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4DF4:: @ 85E4DF4 + .2byte 0x0054, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4DFC:: @ 85E4DFC + .2byte 0x0058, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E04:: @ 85E4E04 + .2byte 0x005c, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E0C:: @ 85E4E0C + .2byte 0x0060, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E14:: @ 85E4E14 + .2byte 0x0064, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E1C:: @ 85E4E1C + .2byte 0x0068, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E24:: @ 85E4E24 + .2byte 0x0070, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E2C:: @ 85E4E2C + .2byte 0x0071, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E34:: @ 85E4E34 + .2byte 0x0072, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E3C:: @ 85E4E3C + .2byte 0x0073, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E44:: @ 85E4E44 + .2byte 0x0074, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E4C:: @ 85E4E4C + .2byte 0x0075, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E54:: @ 85E4E54 + .2byte 0x0080, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E4E5C:: @ 85E4E5C + .4byte gUnknown_085E4DEC + .4byte gUnknown_085E4DF4 + .4byte gUnknown_085E4DFC + .4byte gUnknown_085E4E04 + .4byte gUnknown_085E4E0C + .4byte gUnknown_085E4E14 + .4byte gUnknown_085E4E1C + + .align 2 +gUnknown_085E4E78:: @ 85E4E78 + .4byte gUnknown_085E4E24 + .4byte gUnknown_085E4E2C + .4byte gUnknown_085E4E34 + .4byte gUnknown_085E4E3C + .4byte gUnknown_085E4E44 + .4byte gUnknown_085E4E4C + + .align 2 +gUnknown_085E4E90:: @ 85E4E90 + .4byte gUnknown_085E4E54 + + .align 2 gUnknown_085E4E94:: @ 85E4E94 - .incbin "baserom.gba", 0x5e4e94, 0xb4 + .2byte 0x0000, 0xffb8, 0x0001, 0xffc8, 0x0002, 0xffd8, 0x0003, 0xffe8 + .2byte 0x0004, 0x0008, 0x0005, 0x0018, 0x0003, 0x0028, 0x0001, 0x0038 + .2byte 0x0006, 0x0048, 0x0000, 0xffe4, 0x0001, 0xffec, 0x0002, 0xfff4 + .2byte 0x0003, 0xfffc, 0x0002, 0x0004, 0x0004, 0x000c, 0x0005, 0x0014 + .2byte 0x0003, 0x001c + .align 2 +gUnknown_085E4ED8:: @ 85E4ED8 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4EE8:: @ 85E4EE8 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0010, 0x0010, 0x1000, 0x0000 + .2byte 0xfff0, 0xfff0, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4F08:: @ 85E4F08 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0008, 0x0008, 0x3000, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4F20:: @ 85E4F20 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0002, 0x0002, 0x3000, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085E4F38:: @ 85E4F38 + .4byte gUnknown_085E4ED8 + .4byte gUnknown_085E4EE8 + .4byte gUnknown_085E4F08 + .4byte gUnknown_085E4F20 + + .align 2 gUnknown_085E4F48:: @ 85E4F48 - .incbin "baserom.gba", 0x5e4f48, 0x14 + .2byte 0x0100, 0x00c0, 0x0080, 0x0040, 0x0000, 0x0040, 0x0080, 0x00c0 + .2byte 0x0100, 0x0000 + .align 2 gUnknown_085E4F5C:: @ 85E4F5C - .incbin "baserom.gba", 0x5e4f5c, 0x30 + spr_template 0x07d0, 0x07d1, gUnknown_085E4DD4, gUnknown_085E4E5C, NULL, gUnknown_085E4F38, sub_816FB38 + spr_template 0x07d0, 0x07d1, gUnknown_085E4DDC, gUnknown_085E4E78, NULL, gDummySpriteAffineAnimTable, sub_816FB38 + .align 2 gUnknown_085E4F8C:: @ 85E4F8C - .incbin "baserom.gba", 0x5e4f8c, 0x18 + spr_template 0x07d0, 0x07d1, gUnknown_085E4DE4, gUnknown_085E4E90, NULL, gUnknown_085E4F38, sub_816FD44 + .align 2 gUnknown_085E4FA4:: @ 85E4FA4 - .incbin "baserom.gba", 0x5e4fa4, 0x20 + .byte 0x00, 0x17, 0x17, 0x31, 0x3e, 0x24, 0x24, 0x0a, 0x0a, 0x00, 0x00, 0x00 + .align 2 +gUnknown_085E4FB0:: @ 85E4FB0 + .byte 0xa0, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_085E4FB8:: @ 85E4FB8 + .2byte 0x0000, 0x000a, 0xfffe, 0x0000 + + .align 2 +gUnknown_085E4FC0:: @ 85E4FC0 + .4byte gUnknown_085E4FB8 + + .align 2 gUnknown_085E4FC4:: @ 85E4FC4 - .incbin "baserom.gba", 0x5e4fc4, 0x18 + spr_template 0x07d2, 0x07d2, gUnknown_085E4FB0, gUnknown_085E4FC0, NULL, gDummySpriteAffineAnimTable, sub_816FEDC + .align 2 gUnknown_085E4FDC:: @ 85E4FDC - .incbin "baserom.gba", 0x5e4fdc, 0x10 + obj_tiles gIntroLeavesGFLogoGfx, 0x1400, 0x07d0 + null_obj_tiles gUnknown_085E4FEC:: @ 85E4FEC - .incbin "baserom.gba", 0x5e4fec, 0x10 + obj_tiles gUnknown_08D8D130, 0x0400, 0x07d2 + null_obj_tiles + .align 2 gUnknown_085E4FFC:: @ 85E4FFC - .incbin "baserom.gba", 0x5e4ffc, 0x34 + obj_pal gIntroLeavesDropsPal, 0x07d0 + obj_pal gIntroLeavesGFLogoPal, 0x07d1 + obj_pal gIntroFlyingPkmnShadowPal, 0x07d2 + null_obj_pal + .align 2 +gUnknown_085E501C:: @ 85E501C + .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_085E5024:: @ 85E5024 + .2byte 0x0010, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_085E502C:: @ 85E502C + .4byte gUnknown_085E5024 + + .align 2 gUnknown_085E5030:: @ 85E5030 - .incbin "baserom.gba", 0x5e5030, 0x18 + spr_template 0x07d3, 0x07d3, gUnknown_085E501C, gUnknown_085E502C, NULL, gDummySpriteAffineAnimTable, sub_8170040 + .align 2 gUnknown_085E5048:: @ 85E5048 - .incbin "baserom.gba", 0x5e5048, 0x10 + obj_tiles gIntroBattleCircleGfx, 0x0a00, 0x07d3 + null_obj_tiles gUnknown_085E5058:: @ 85E5058 - .incbin "baserom.gba", 0x5e5058, 0x10 + obj_pal gIntroBattleCirclePal, 0x07d3 + null_obj_pal + diff --git a/data/player_pc.s b/data/player_pc.s index 1a4f62b4ff..4fd2913ddd 100644 --- a/data/player_pc.s +++ b/data/player_pc.s @@ -40,4 +40,4 @@ gUnknown_085DFF84:: @ 85DFF84 .incbin "baserom.gba", 0x5dff84, 0x8 gUnknown_085DFF8C:: @ 85DFF8C - .incbin "baserom.gba", 0x5dff8c, 0x638 + .incbin "baserom.gba", 0x5dff8c, 0x4 diff --git a/graphics/intro/battle_circle.png b/graphics/intro/battle_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..26be33c0188ca119789414f99da32c358630ce8b GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^4nQ2h!VDy%C+3v_DT4r?5ZC|z{{xvo;{R2K|63UT zPXY4K!T)>B|DUb-|L!VK@r$U&ghyi;|8LQu^)-XMn~ zK@Fn$+{>7|v;FLT?^wd*!`di3=VT+(0_MkjJhBdHWx0Qv-*&o837&U^%W(elvsG^; zC7kc>e{`#={b=zV!@38n6E}uPefV&F+Vj3U7bPMmGTQcCuTDO5u}C((r7$g8srS1@ z`|G=c&ps$LcJE{nKg{wVro&r-m3Q{%#H>TE)2y}%$xNxTiTL>_WaF7<%pMaNcfMWu zwuyNPn;e_`m#W&nv|Rb=3ELvhFwZZY_A80m!9j3>R73;Qe(817G!OSX6<<8AXdc_T%}cb=WKZ}iX9XEq2SbIcA72#M zH2XD#2;APwm;Gc`!w<{l+KZxlls9TJ?0yjwBqPSNC|T0t=xw&#6E+V+ZHf-ueg28A@0Gf3V}E`@3(;e~I5)bNhbYuEq(v9XUxQ(kjxLce_re`SmeZ uEx4fEDUGoVR*XwxvXckBew`}U*DGaNhwl7N7-=P;xhE?&9}lfHBJ9;Q6QqsLDm3SPf? Xi$xkJ^yTZf?>~P2`i)(7WQqa+n{{3< literal 0 HcmV?d00001 diff --git a/graphics/intro/battle_pokeball.pal b/graphics/intro/battle_pokeball.pal new file mode 100644 index 0000000000..d520a5e82c --- /dev/null +++ b/graphics/intro/battle_pokeball.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +255 255 255 +0 0 0 +49 41 24 +106 90 57 +164 139 90 +222 98 57 +131 131 189 +255 255 255 +74 32 16 +148 65 32 +41 41 57 +82 82 123 +82 82 82 +164 164 164 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/battle_pokeball.png b/graphics/intro/battle_pokeball.png new file mode 100644 index 0000000000000000000000000000000000000000..4af0187f826d47df7f24f0bf611b9633498f6208 GIT binary patch literal 2197 zcmeHI`!|#c7=FKR#@wXFs7!L1vB;%Zw-7PIq)=$qEs4=>i_}C#hUPPd?orCo1yegN z$ue@8jcAswO;VJNm?pKAIJuNAT9;YZuK-gBP!dCv1bKRv&^M+5y=Yf>Eh9+5NHq^j82J1g;HQrB0@AJKZ|5*c58Sk$HXaxFj*g;8`+AnU%{hKjoRol52CcIH$L!7tYi2!=T zh02k$r>z4}{88Z{LSLP=^w+-9{Kpl0?l@l(HrYICDs*MsOdP4l_G+b%MNnwxi-`JyFkegt%*E?;e_`dorDOjB-b4+yn~dCFb2{nuuGoWHNOkqe}-36WeOv zAJZIMMo4PRJ zxvVi2ynqv(<>9A33Y9k5Lp=ssXEaD&m{4QEFTd=u@W@M zn+ZxZ+mEV21%0{k8T3tXE<6|8jgoOa9;f@Mu+I3vyN}(vR}elKA1q5KtTef3vyBbb zY1%NnMtRuE{zKHw3)^XQgoW)fugGa@o?zdi z48h{aIZ3s}?Ym~7p4-4{NP`6hBL_K8&sm2DgX^XgiYMICbZ$)K;uYq#U+0U#uns3v zq``564jp1rcq?YALdSC5>F%4hLR)9G@`?wEXMlv+LQN}TCU1ioH@uonYueyvHN|WVRuM601?HM(4y?(R z8WdE6o#mANtnH41u8R191jBSa%y({yBM6;?Nh~*mAAlK|wVdT#5IVd7l4wD$J6bg| zDtejF8x^=~ttgq85!G2*Z-7!OTNhfge@XYWxf;~+AUfdB&Cx~U5~QD8-@UIrZbDY_ z($U~JTa)o|XH-y~)8!V!8%v9AccAa^&#v`8py?0qqS{N&QZOkb9oS~6B9j*V-_2N24ekfCYkFc(Z>bpF%wn0!tnEwzl z)ni%0IdD+W=gYF+&s+r#sxMK>z6sGrh(}DUdhl2T<|T3kU({qH_jz{B`aV%j-xQLtA=OCXjrht)P^FJha9{amF+e_wEwB5%MFVlqdM71}|qJ@06(YhS`Y_8};) zo>vq~=l*OKy!T5`#F0-|K#_5!>S`^W!?{uIO6n@I-rc#G*I&AV=3L<(9aT;3pLh4@ zC>XOQ`p{!Uh~OAJ-`g|tEoBGa^b?vK`wT$2DIhw%yZL7Orn1gi+=KJEDOUq4yKv4s zepFKttn6|>8C})yDEgsG-0^4yT`3nXaH29!t(aY5Zk$>@Rj41jfOF4kue__D&ed$M z_4liDt6T1)D^+e+<375QvZ;b-s9_)OS>KpsQw7yeYL!hDRQp`+P1$`T=)kk8F*AGo wRn0x(AL(B;xJfUVtB71)n_$ivR!s literal 0 HcmV?d00001 diff --git a/graphics/intro/battle_streaks.pal b/graphics/intro/battle_streaks.pal new file mode 100644 index 0000000000..21ae1e4346 --- /dev/null +++ b/graphics/intro/battle_streaks.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +0 0 0 +255 230 74 +255 230 98 +255 238 123 +255 238 148 +255 246 172 +255 255 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 255 255 diff --git a/graphics/intro/battle_streaks.png b/graphics/intro/battle_streaks.png new file mode 100644 index 0000000000000000000000000000000000000000..a19fa39c4d6425060eac7f22a7628980f6e31a3b GIT binary patch literal 202 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 literal 0 HcmV?d00001 diff --git a/graphics/intro/leaves_bgleaves.bin b/graphics/intro/leaves_bgleaves.bin new file mode 100644 index 0000000000000000000000000000000000000000..7781e8b0876af7b5c8a29149fc3e0c5dff39c22e GIT binary patch literal 2048 zcmeH_w`wFo6h(VBoUeEny^DTBHkw2>m(68!*<3c4&1Lhk@(W|-7i5tKf%XG-st3`9 zW@}l&!X~Q6>nf`6Io(vZ=l$Q2l;2lWViK2xeAffr*FD|U9o^O~O=(gS8rPUc)x5b) z@5-K--j@SOOGdJilOKAnXL_n9daOr!s0GbyPP3ZPw9jwJw(R&+UQgsyOrOcQT*#$d z$+f)bvp(sgKIpyPX;^OcMz8fsFZIIb59LUXedkMoTJNS=M6uHc`RTNOIXGxH@MC6fhkfE oxQe@0{%?8P^+(=v+d0>|?D=2(r%vGO{675upE|ur<-a(;UzD8olK=n! literal 0 HcmV?d00001 diff --git a/graphics/intro/leaves_bgmountains.bin b/graphics/intro/leaves_bgmountains.bin new file mode 100644 index 0000000000000000000000000000000000000000..1af02a02519788cf7176f1d9980bc3c8d8ee982d GIT binary patch literal 2048 zcmeH`M^3{)7)EJP!~tk)Kmu0461W2BCHWFay+eQ{EJE+1mo0Uhg!IDM@E9DB5JH+I zil5|fJmWXx`8D?8v!=tjda%d%-PmLNF6=RWCmwzDGr%B2tsZaWxBT*l8DSK^!x-aC zkY?p`mNd&wd)0X|eI^ZStUGt(Pcp@{Ya0858D^Oy!)hZbw;Zl9O=wCpn$v=ow4ya_e(`T}hr8V4 zJ`Z@vBOddFr+DIpH_sf-g*zZR;X!ANE_D5N-#stmIWKt0D_-M+FK_U}p8x_0BAB-h z)0;l@r62tnz(58um>~>hSe_q3C}D&XK_pQ`6GJR<#FIcG?;K`0BN)jjMl*)7jAJ|# zn8>6&KZ#^gNF|MQGRP#0Y;yR(M?Ue{VJ0($sZ3)!GxD5#TcKhqt`aJ#QYx)7DywoT zuL`QDN~)~yoy7-e3GGs;X+Lt{SSTTB@x&s;hdcuLf$UMvlLn6|7_xt69U^ zKN1?NiJGdJnyZCcs+C%+joPZ6+N*;)I)1)x|M&?mxeH01WmXaVMLe&14j&F3FkujM0Oy^){%6`()`DcJE7 zEy3a~&SEXbqAkiIEyBVr%t9^1-g~@v4^gPX6s`zGDoW9cQLN$=uLLDJevai++em8NuMC{tO=R*pXCqdw*Hf8-SA{64k9@V~P~zMJbS D0O~c@ literal 0 HcmV?d00001 diff --git a/graphics/intro/leaves_gflogo.pal b/graphics/intro/leaves_gflogo.pal new file mode 100644 index 0000000000..aef9152e49 --- /dev/null +++ b/graphics/intro/leaves_gflogo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +156 246 0 +65 90 156 +49 115 255 +82 82 82 +98 98 98 +115 115 115 +131 131 131 +148 148 148 +164 164 164 +180 180 180 +197 197 197 +213 213 213 +230 230 230 +255 255 255 +255 255 255 diff --git a/graphics/intro/leaves_gflogo.png b/graphics/intro/leaves_gflogo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f28c8413a9dc7b9488ca83e13819323226ea5d GIT binary patch literal 1113 zcmV-f1g86mP)~Jh|u}?gp2|5T0sL^xr`+i;F&NY)`%)f{~sKKQMsI z$D=_pz4FjHI652uRzQOS-M&65rU0#@vnhH#_&UAejj;^&9ZLpMMpTAY##jdXc|FNG#}01I z+|9}+Gyf+DzXLdTa}E37*757u3{^-Xi1LlCb>w2@YXYB=gft=^QJUv;YimZoPuraS zh<~tVS1kCzK>q#mUHd~=(YX{rOa79J=3A1lPfrq*Yf=QcCWVUhM=~>`sMP=6;`AgJ zDFWxqh2qqxm{ED-7v%h*10f}<%{#nA%}~=6mbMld?Bg0S1zm4rg2EmVkUJ%RzFJLIz+K zq60I(uh;7v=#?QO|78KZ;{H6q9u}d%YUHW}@RtzuJk0@8r(v%5_ng}dRyMbDsH`h> zsolE&>+&f$NICVUHo&H6M6hY=)$luc?T%Olowp?^bH~$_>r{&ebRHVdFLpf_vPN>>DplC@^njA0wV8U7gNL_^6KB*a@Eq;HVRh!sqx4fj?TN)7d%pALakS2TYGa8Sc{& zg1-n(m*@oVpaUU*7{dkwi^-km^|UMN;7k7=yL`7>N%a_HldgH- zGcm~cEQvK(Fm~RnJ8!Xbfs7RhGWM2{NaZ70X53?shECY5rhH2>m?aD?jx=k42_`5L zp5V0(y#|;ja8-gJLSiTlfmQ>u26#yktRSI)43q(YnrygK{vNhKKm_lCrgsjk7lT(P z8N<|SiMB4<3>;#A%8Hwn$VMj0^b|i_d2?rn@fENxx zIsoYuk2W64(nCH0s>Nu&`oF(tM&tePKBlsG_3sPUYF(u(bwF3>YUNK!&hxwq6;PF` z>U}HRXZ5DR)ahEyx<>o#z2&p>UH57ft6Ej3>Y>5-XZfttcGz|s)*&6VJ}d2Xe$a$e zShYh3bbg*yWTwL;Y~03lR7bQh>2!WXMO942ApydR%p}Z|owO4)PGclYI-NfT<1hh} zW~$^YVOg88X`8Z1TVya*(&_vpq)ggmO!k9Ycb2dmZO}Tc(P{~kPUo+}8mz+xhrGBROS+(Q%7dSit$Y4+a{-rd1=k=6v2NfO{Dwd97tX=Y$=3Nd=KsVaJ2&^+@e^SVagf`%m0P%( zo4Ap?sT&%x37fG6Td@s;7{V}0r}IYw!#u;|Mx`HZa4}oaGFsImJm{<|SU_1)k?QUZEA3!+Bi5MO?yVOkxVt zn87Sg;|$Ig{O!ONZ*q=z=*xkfFD8eZxP{vV|0wWPqR6Ps4vq@`jwzQZzjN>Z?U(;X M<+k77@B9Dx2Yc9yDF6Tf literal 0 HcmV?d00001 From 825b8dffe12b6bf447f53237f8cb54fe874bfa69 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 26 Sep 2017 21:48:26 -0500 Subject: [PATCH 035/182] Extract baserom calls from data2b_2.s and rename --- data/battle_7.s | 64 +++++++++++++++++++++++++++++++++ data/battle_controller_player.s | 4 +++ data/data2b_2.s | 30 ---------------- data/graphics.s | 13 +++++-- ld_script.txt | 2 +- 5 files changed, 80 insertions(+), 33 deletions(-) create mode 100644 data/battle_7.s delete mode 100644 data/data2b_2.s diff --git a/data/battle_7.s b/data/battle_7.s new file mode 100644 index 0000000000..6f2478842d --- /dev/null +++ b/data/battle_7.s @@ -0,0 +1,64 @@ +@ data used in battle_7.s and smokescreen.s, can't split because they're interleaved + + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_0831C604:: @ 831C604 + .byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x02, 0x01 + .byte 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01 + .byte 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_0831C620:: @ 831C620 + obj_tiles gUnknown_08C01644, 0x0180, 0xd6eb + + .align 2 +gUnknown_0831C628:: @ 831C628 + obj_pal gUnknown_08C01724, 0xd6eb + + .align 2 +gUnknown_0831C630:: @ 831C630 + .byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00 + + .align 2 +gUnknown_0831C638:: @ 831C638 + .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0008, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_0831C648:: @ 831C648 + .2byte 0x0000, 0x0044, 0x0004, 0x0044, 0x0008, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_0831C658:: @ 831C658 + .2byte 0x0000, 0x0084, 0x0004, 0x0084, 0x0008, 0x0084, 0xffff, 0x0000 + + .align 2 +gUnknown_0831C668:: @ 831C668 + .2byte 0x0000, 0x00c4, 0x0004, 0x00c4, 0x0008, 0x00c4, 0xffff, 0x0000 + + .align 2 +gUnknown_0831C678:: @ 831C678 + .4byte gUnknown_0831C638 + .4byte gUnknown_0831C648 + .4byte gUnknown_0831C658 + .4byte gUnknown_0831C668 + + .align 2 +gUnknown_0831C688:: @ 831C688 + spr_template 0xd6eb, 0xd6eb, gUnknown_0831C630, gUnknown_0831C678, NULL, gDummySpriteAffineAnimTable, sub_80753B4 + + .align 2 +gUnknown_0831C6A0:: @ 831C6A0 + obj_tiles gUnknown_08D8FBC0, 0x0080, 0xd759 + + .align 2 +gUnknown_0831C6A8:: @ 831C6A8 + .byte 0x00, 0x40, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x00 + + .align 2 +gUnknown_0831C6B0:: @ 831C6B0 + spr_template 0xd759, 0xd6ff, gUnknown_0831C6A8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_805EE48 diff --git a/data/battle_controller_player.s b/data/battle_controller_player.s index 37c877dfdf..bc2a18edb4 100644 --- a/data/battle_controller_player.s +++ b/data/battle_controller_player.s @@ -63,3 +63,7 @@ gPlayerBufferCommands:: @ 831C514 .4byte sub_805D094 .4byte nullsub_22 + .align 2 +gUnknown_0831C5F8:: @ 831C5F8 + .byte 0x00, 0x02, 0x03, 0x01, 0x48, 0x48, 0x20, 0x5a + .byte 0x50, 0x50, 0x50, 0x58 diff --git a/data/data2b_2.s b/data/data2b_2.s deleted file mode 100644 index a1088768ef..0000000000 --- a/data/data2b_2.s +++ /dev/null @@ -1,30 +0,0 @@ -@ the second big chunk of data - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 - - -gUnknown_0831C5F8:: @ 831C5F8 - .incbin "baserom.gba", 0x31c5f8, 0xc - -gUnknown_0831C604:: @ 831C604 - .incbin "baserom.gba", 0x31c604, 0x1c - -gUnknown_0831C620:: @ 831C620 - .incbin "baserom.gba", 0x31c620, 0x8 - -gUnknown_0831C628:: @ 831C628 - .incbin "baserom.gba", 0x31c628, 0x60 - -gUnknown_0831C688:: @ 831C688 - .incbin "baserom.gba", 0x31c688, 0x18 - -gUnknown_0831C6A0:: @ 831C6A0 - .incbin "baserom.gba", 0x31c6a0, 0x10 - -gUnknown_0831C6B0:: @ 831C6B0 - .incbin "baserom.gba", 0x31c6b0, 0x18 diff --git a/data/graphics.s b/data/graphics.s index dc29f6bcb5..4bff14d97c 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13,7 +13,13 @@ gUnknown_08C00524:: @ 8C00524 .include "data/graphics/pokemon/circled_question_mark_graphics.inc" @ 8C00C10 - .incbin "baserom.gba", 0xc00c10, 0x16f0 + .incbin "baserom.gba", 0xc00c10, 0xa34 + +gUnknown_08C01644:: @ 8C01644 + .incbin "baserom.gba", 0xc01644, 0xE0 + +gUnknown_08C01724:: @ 8C01724 + .incbin "baserom.gba", 0xc01724, 0xBDC gUnknown_08C02300:: @ 8C02300 .incbin "baserom.gba", 0xc02300, 0x70f0 @@ -453,7 +459,10 @@ gUnknown_08D8EC24:: @ 8D8EC24 .incbin "baserom.gba", 0xd8ec24, 0xf78 gUnknown_08D8FB9C:: @ 8D8FB9C - .incbin "baserom.gba", 0xd8fb9c, 0xd8 + .incbin "baserom.gba", 0xd8fb9c, 0x24 + +gUnknown_08D8FBC0:: @ 8D8FBC0 + .incbin "baserom.gba", 0xd8fbc0, 0xb4 .align 2 gMonIcon_Egg:: @ 8D8FC74 diff --git a/ld_script.txt b/ld_script.txt index b2e996ff5f..b2470ebc57 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -333,7 +333,7 @@ SECTIONS { src/battle_4.o(.rodata); data/battle_4.o(.rodata); data/battle_controller_player.o(.rodata); - data/data2b_2.o(.rodata); + data/battle_7.o(.rodata); data/battle_controller_opponent.o(.rodata); data/battle_controller_link_opponent.o(.rodata); data/data2c.o(.rodata); From 6cc1ec7bb160a32052930465e58c38ff0e0230df Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 26 Sep 2017 23:06:25 -0500 Subject: [PATCH 036/182] Extract intro gfx from graphics.s --- data/graphics.s | 68 +++++++++++------- data/intro.s | 32 ++++----- graphics/intro/droplet_sparkle.png | Bin 0 -> 206 bytes graphics/intro/flygon_silhouette.png | Bin 0 -> 234 bytes ...lying_shadow.pal => flying_silhouette.pal} | 0 graphics/intro/kyogre_bubbles.pal | 19 +++++ graphics/intro/kyogre_bubbles.png | Bin 0 -> 402 bytes graphics/intro/manectric.pal | 19 +++++ graphics/intro/manectric.png | Bin 0 -> 1670 bytes graphics/intro/rayquaza_lightning.pal | 19 +++++ graphics/intro/rayquaza_lightning.png | Bin 0 -> 476 bytes graphics/intro/torchic.pal | 19 +++++ graphics/intro/torchic.png | Bin 0 -> 742 bytes graphics/intro/volbeat.pal | 19 +++++ graphics/intro/volbeat.png | Bin 0 -> 500 bytes 15 files changed, 155 insertions(+), 40 deletions(-) create mode 100644 graphics/intro/droplet_sparkle.png create mode 100644 graphics/intro/flygon_silhouette.png rename graphics/intro/{flying_shadow.pal => flying_silhouette.pal} (100%) create mode 100644 graphics/intro/kyogre_bubbles.pal create mode 100644 graphics/intro/kyogre_bubbles.png create mode 100644 graphics/intro/manectric.pal create mode 100644 graphics/intro/manectric.png create mode 100644 graphics/intro/rayquaza_lightning.pal create mode 100644 graphics/intro/rayquaza_lightning.png create mode 100644 graphics/intro/torchic.pal create mode 100644 graphics/intro/torchic.png create mode 100644 graphics/intro/volbeat.pal create mode 100644 graphics/intro/volbeat.png diff --git a/data/graphics.s b/data/graphics.s index 4bff14d97c..79ef25aebf 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -356,26 +356,36 @@ gUnknown_08D85E72:: @ 8D85E72 gUnknown_08D85E7C:: @ 8D85E7C .incbin "baserom.gba", 0xd85e7c, 0x54 -gUnknown_08D85ED0:: @ 8D85ED0 - .incbin "baserom.gba", 0xd85ed0, 0x20 + .align 2 +gIntroVolbeatPal:: @ 8D85ED0 + .incbin "graphics/intro/volbeat.gbapal" -gUnknown_08D85EF0:: @ 8D85EF0 - .incbin "baserom.gba", 0xd85ef0, 0x20 + .align 2 +gIntroTorchicPal:: @ 8D85EF0 + .incbin "graphics/intro/torchic.gbapal" -gUnknown_08D85F10:: @ 8D85ED0 - .incbin "baserom.gba", 0xd85f10, 0x20 + .align 2 +gIntroManectricPal:: @ 8D85ED0 + .incbin "graphics/intro/manectric.gbapal" + .align 2 gUnknown_08D85F30:: @ 8D85ED0 .incbin "baserom.gba", 0xd85f30, 0x20 -gUnknown_08D85F50:: @ 8D85F50 - .incbin "baserom.gba", 0xd85f50, 0x1e0 + .align 2 +gIntroVolbeatGfx:: @ 8D85F50 + .incbin "graphics/intro/volbeat.4bpp.lz" -gUnknown_08D86130:: @ 8D86130 - .incbin "baserom.gba", 0xd86130, 0x420 + .align 2 +gIntroTorchicGfx:: @ 8D86130 + .incbin "graphics/intro/torchic.4bpp.lz" -gUnknown_08D86550:: @ 8D86550 - .incbin "baserom.gba", 0xd86550, 0x1f44 + .align 2 +gIntroManectricGfx:: @ 8D86550 + .incbin "graphics/intro/manectric.4bpp.lz" + + .align 2 + .incbin "baserom.gba", 0xd8702c, 0x1468 gUnknown_08D88494:: @ 8D88494 .incbin "baserom.gba", 0xd88494, 0x8ac @@ -410,12 +420,15 @@ gUnknown_08D8B440:: @ 8D8B440 gUnknown_08D8B6E8:: @ 8D8B6E8 .incbin "baserom.gba", 0xd8b6e8, 0x124 -gUnknown_08D8B80C:: @ 8D8B80C - .incbin "baserom.gba", 0xd8b80c, 0x248 + .align 2 +gIntroRayquazaLightningGfx:: @ 8D8B80C + .incbin "graphics/intro/rayquaza_lightning.4bpp.lz" -gUnknown_08D8BA54:: @ 8D8BA54 - .incbin "baserom.gba", 0xd8ba54, 0x20 + .align 2 +gIntroRayquazaLightningPal:: @ 8D8BA54 + .incbin "graphics/intro/rayquaza_lightning.gbapal" + .align 2 gUnknown_08D8BA74:: @ 8D8BA74 .incbin "baserom.gba", 0xd8ba74, 0x6f8 @@ -428,17 +441,24 @@ gUnknown_08D8C838:: @ 8D8C838 gUnknown_08D8CCC8:: @ 8D8CCC8 .incbin "baserom.gba", 0xd8ccc8, 0x27c -gUnknown_08D8CF44:: @ 8D8CF44 - .incbin "baserom.gba", 0xd8cf44, 0x1cc + .align 2 +gIntroKyogreBubblesGfx:: @ 8D8CF44 + .incbin "graphics/intro/kyogre_bubbles.4bpp.lz" -gUnknown_08D8D110:: @ 8D8D110 - .incbin "baserom.gba", 0xd8d110, 0x20 + .align 2 +gIntroKyogreBubblesPal:: @ 8D8D110 + .incbin "graphics/intro/kyogre_bubbles.gbapal" -gUnknown_08D8D130:: @ 8D8D130 - .incbin "baserom.gba", 0xd8d130, 0xd8 + .align 2 +gIntroFlygonSilhouette:: @ 8D8D130 + .incbin "graphics/intro/flygon_silhouette.4bpp.lz" -gUnknown_08D8D208:: @ 8D8D208 - .incbin "baserom.gba", 0xd8d208, 0x208 + .align 2 +gIntroLeavesDropletSparkleGfx:: @ 8D8D208 + .incbin "graphics/intro/droplet_sparkle.4bpp.lz" + + .align 2 + .incbin "baserom.gba", 0xd8d2a4, 0x16c gUnknown_08D8D410:: @ 8D8D410 .incbin "baserom.gba", 0xd8d410, 0x17c diff --git a/data/intro.s b/data/intro.s index acd1164b61..ea6223c7ea 100644 --- a/data/intro.s +++ b/data/intro.s @@ -72,8 +72,8 @@ gIntroBattleCircleGfx:: @ 85E45B0 .incbin "graphics/intro/battle_circle.4bpp.lz" .align 2 -gIntroFlyingPkmnShadowPal:: @ 85E492C - .incbin "graphics/intro/flying_shadow.gbapal" +gIntroFlyingPkmnSilhouettePal:: @ 85E492C + .incbin "graphics/intro/flying_silhouette.gbapal" .align 2 .incbin "graphics/intro/latis.4bpp.lz" @@ -90,12 +90,12 @@ gIntroFlyingPkmnShadowPal:: @ 85E492C .align 2 gUnknown_085E4A74:: @ 85E4A74 - obj_tiles gUnknown_08D8D208, 0x0400, 0x05e1 + obj_tiles gIntroLeavesDropletSparkleGfx, 0x0400, 0x05e1 null_obj_tiles .align 2 gUnknown_085E4A84:: @ 85E4A84 - obj_pal gUnknown_08D8BA54, 0x05e1 + obj_pal gIntroRayquazaLightningPal, 0x05e1 null_obj_pal .align 2 @@ -122,16 +122,16 @@ gUnknown_085E4AD0:: @ 85E4AD0 .align 2 gUnknown_085E4AE8:: @ 85E4AE8 - obj_tiles gUnknown_08D85F50, 0x0400, 0x05dc - obj_tiles gUnknown_08D86130, 0x0c00, 0x05dd - obj_tiles gUnknown_08D86550, 0x2000, 0x05de + obj_tiles gIntroVolbeatGfx, 0x0400, 0x05dc + obj_tiles gIntroTorchicGfx, 0x0c00, 0x05dd + obj_tiles gIntroManectricGfx, 0x2000, 0x05de null_obj_tiles .align 2 gUnknown_085E4B08:: @ 85E4B08 - obj_pal gUnknown_08D85ED0, 0x05dc - obj_pal gUnknown_08D85EF0, 0x05dd - obj_pal gUnknown_08D85F10, 0x05de + obj_pal gIntroVolbeatPal, 0x05dc + obj_pal gIntroTorchicPal, 0x05dd + obj_pal gIntroManectricPal, 0x05de null_obj_pal .align 2 @@ -194,12 +194,12 @@ gUnknown_085E4BDC:: @ 85E4BDC .align 2 gUnknown_085E4BF4:: @ 85E4BF4 - obj_tiles gUnknown_08D8B80C, 0x0c00, 0x05df + obj_tiles gIntroRayquazaLightningGfx, 0x0c00, 0x05df null_obj_tiles .align 2 gUnknown_085E4C04:: @ 85E4C04 - obj_pal gUnknown_08D8BA54, 0x05df + obj_pal gIntroRayquazaLightningPal, 0x05df null_obj_pal .align 2 @@ -236,12 +236,12 @@ gUnknown_085E4C64:: @ 85E4C64 .align 2 gUnknown_085E4C88:: @ 85E4C88 - obj_tiles gUnknown_08D8CF44, 0x0600, 0x05e0 + obj_tiles gIntroKyogreBubblesGfx, 0x0600, 0x05e0 null_obj_tiles .align 2 gUnknown_085E4C98:: @ 85E4C98 - obj_pal gUnknown_08D8D110, 0x05e0 + obj_pal gIntroKyogreBubblesPal, 0x05e0 null_obj_pal .align 2 @@ -492,14 +492,14 @@ gUnknown_085E4FDC:: @ 85E4FDC null_obj_tiles gUnknown_085E4FEC:: @ 85E4FEC - obj_tiles gUnknown_08D8D130, 0x0400, 0x07d2 + obj_tiles gIntroFlygonSilhouette, 0x0400, 0x07d2 null_obj_tiles .align 2 gUnknown_085E4FFC:: @ 85E4FFC obj_pal gIntroLeavesDropsPal, 0x07d0 obj_pal gIntroLeavesGFLogoPal, 0x07d1 - obj_pal gIntroFlyingPkmnShadowPal, 0x07d2 + obj_pal gIntroFlyingPkmnSilhouettePal, 0x07d2 null_obj_pal .align 2 diff --git a/graphics/intro/droplet_sparkle.png b/graphics/intro/droplet_sparkle.png new file mode 100644 index 0000000000000000000000000000000000000000..f8db885ec00007231c1274162e89ca2f0e0e9788 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0zllr!VDxo?EWGMqznRlLR`J}uKE9e%KxhjXZITZ z|NlS8%d0pmXi9g|mMz6suQmf!p@Hk`^9q4Nk)AG&Ar`&K2@51PSS&EkV2nuMVV7az zGhp=jeqc$#Y)97z4d)uHnp=+^J$jJwYGT1}LrE4!v8f!2>=Nvr9R)uO4#>Q9I8gD4 oky~ls11F2ShntpUiST$cFs!}F!5MF|;Vj5rPgg&ebxsLQ0B6`mo&W#< literal 0 HcmV?d00001 diff --git a/graphics/intro/flygon_silhouette.png b/graphics/intro/flygon_silhouette.png new file mode 100644 index 0000000000000000000000000000000000000000..080ab1a65aa563a46f119fc10d88202cb359dff2 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQU(D&A+A8$%L^n;BgnPbV$pkcaw1=Y0!QmZwu1ks*>Y7>7Tvsd$o|*8_65NW|5+~;GekDsYRa>Uo|83W zMow@RL))5c&#*(BvI{-uzE@=wx-WQU<@;NY?z9(dd!(dpcE;?$qCZjm@(h<$g03#v qqb{3V&w4?L^}+ooY8$@l-#f-AZ^UnwdNX({$gQ5PelF{r5}E*srAGz; literal 0 HcmV?d00001 diff --git a/graphics/intro/flying_shadow.pal b/graphics/intro/flying_silhouette.pal similarity index 100% rename from graphics/intro/flying_shadow.pal rename to graphics/intro/flying_silhouette.pal diff --git a/graphics/intro/kyogre_bubbles.pal b/graphics/intro/kyogre_bubbles.pal new file mode 100644 index 0000000000..85c4836664 --- /dev/null +++ b/graphics/intro/kyogre_bubbles.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 148 98 +0 41 82 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +139 172 255 +106 148 222 +82 123 189 +49 98 156 +24 74 123 +0 49 98 +180 0 0 diff --git a/graphics/intro/kyogre_bubbles.png b/graphics/intro/kyogre_bubbles.png new file mode 100644 index 0000000000000000000000000000000000000000..d1f18701c414bbf69693297d6c7376c342633ed8 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0ziC#g&9cxfBdf&NErn9gt%r+Nn+3p`v3nwPyh{d zulb)fgw*)T9L%6hsuhFJ8zo#dUzV#wiAefsUqX?Mgk zZ;EHkbY^wFIWym+Gi{>B$E0VbHyjvmfBW69u~0@_AT02L?$qsS2V#Go4L`a|h)3Z~ z;%95!xfk}Hcc=*eYhUFex=vKkS(eSw#d^`Jv@*T|*=vp)lo?w#zhiv6Ms=%Hn+s!B zulv^-ZzFh>*4)cget6|$-@X%FhblYy3a;8k=Wsq?5%qk;8m?u}Rr-x}v*z6Cy+;=t z@p(Pd;(0u8r^@_UPfqUJIOXH&+uF}B-pF?mR?K6%|d)1PK9zJ5O4 p@n?Bhty&fD$`@;&{{PeXnK7*S*z$;#D;9tP)YH|^Wt~$(69Cuks;dA1 literal 0 HcmV?d00001 diff --git a/graphics/intro/manectric.pal b/graphics/intro/manectric.pal new file mode 100644 index 0000000000..c6bf97aa3e --- /dev/null +++ b/graphics/intro/manectric.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +74 189 172 +82 74 74 +139 139 123 +197 189 222 +255 255 255 +230 49 0 +246 148 0 +0 0 0 +255 255 180 +246 246 90 +205 213 49 +148 123 8 +131 164 255 +106 106 255 +41 74 213 +0 0 0 diff --git a/graphics/intro/manectric.png b/graphics/intro/manectric.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb054d7b381fb49a2bb25024a35474f571cef13 GIT binary patch literal 1670 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 Date: Tue, 26 Sep 2017 23:21:27 -0500 Subject: [PATCH 037/182] Extract baserom includes from battle_7 and field_region_map --- data/battle_7.s | 32 +++++++++++++++++++++++--------- data/field_region_map.s | 10 +++++++--- data/graphics.s | 30 +++++++++++++++++++++++++++--- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/data/battle_7.s b/data/battle_7.s index a64a39dc2a..4b0eea65a3 100644 --- a/data/battle_7.s +++ b/data/battle_7.s @@ -5,28 +5,42 @@ .align 2, 0 gUnknown_0832C0D0:: @ 832C0D0 - .incbin "baserom.gba", 0x32c0d0, 0x8 + obj_tiles gUnknown_08C1F1C8, 0x1000, 0xd6ff + .align 2 gUnknown_0832C0D8:: @ 832C0D8 - .incbin "baserom.gba", 0x32c0d8, 0x8 + obj_tiles gUnknown_08C1F46C, 0x1000, 0xd701 + .align 2 gUnknown_0832C0E0:: @ 832C0E0 - .incbin "baserom.gba", 0x32c0e0, 0x8 + obj_tiles gUnknown_08C1F5E8, 0x0800, 0xd6ff + .align 2 gUnknown_0832C0E8:: @ 832C0E8 - .incbin "baserom.gba", 0x32c0e8, 0x8 + obj_tiles gUnknown_08C1F5E8, 0x0800, 0xd700 + .align 2 gUnknown_0832C0F0:: @ 832C0F0 - .incbin "baserom.gba", 0x32c0f0, 0x8 + obj_tiles gUnknown_08C1F76C, 0x0800, 0xd701 + .align 2 gUnknown_0832C0F8:: @ 832C0F8 - .incbin "baserom.gba", 0x32c0f8, 0x8 + obj_tiles gUnknown_08C1F76C, 0x0800, 0xd702 + .align 2 gUnknown_0832C100:: @ 832C100 - .incbin "baserom.gba", 0x32c100, 0x8 + obj_tiles gUnknown_08C1F8E8, 0x1000, 0xd70b + .align 2 gUnknown_0832C108:: @ 832C108 - .incbin "baserom.gba", 0x32c108, 0x20 + obj_tiles gUnknown_08C0237C, 0x0100, 0xd704 + obj_tiles gUnknown_08C0237C, 0x0120, 0xd705 + obj_tiles gUnknown_08C0237C, 0x0100, 0xd706 + obj_tiles gUnknown_08C0237C, 0x0120, 0xd707 + .align 2 gUnknown_0832C128:: @ 832C128 - .incbin "baserom.gba", 0x32c128, 0x18 + obj_pal gUnknown_08C11B9C, 0xd6ff + obj_pal gUnknown_08C11BBC, 0xd704 + + .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 diff --git a/data/field_region_map.s b/data/field_region_map.s index 2ddc657390..f179ba8ceb 100644 --- a/data/field_region_map.s +++ b/data/field_region_map.s @@ -3,8 +3,12 @@ .section .rodata -gUnknown_085E5068:: @ 85E5068 - .incbin "baserom.gba", 0x5e5068, 0x8 + .align 2 +gUnknown_085E5068:: @ 85E5068 struct BgTemplate + .4byte 0x000001f0, 0x00002dca + .align 2 gUnknown_085E5070:: @ 85E5070 - .incbin "baserom.gba", 0x5e5070, 0x18 + window_template 0x00, 0x11, 0x11, 0x0c, 0x02, 0x0f, 0x0001 + window_template 0x00, 0x16, 0x01, 0x07, 0x02, 0x0f, 0x0019 + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 diff --git a/data/graphics.s b/data/graphics.s index 79ef25aebf..a06c052176 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -22,10 +22,19 @@ gUnknown_08C01724:: @ 8C01724 .incbin "baserom.gba", 0xc01724, 0xBDC gUnknown_08C02300:: @ 8C02300 - .incbin "baserom.gba", 0xc02300, 0x70f0 + .incbin "baserom.gba", 0xc02300, 0x7c + +gUnknown_08C0237C:: @ 8C0237C + .incbin "baserom.gba", 0xc0237c, 0x7074 gUnknown_08C093F0:: @ 8C093F0 - .incbin "baserom.gba", 0xc093f0, 0x87ec + .incbin "baserom.gba", 0xc093f0, 0x87ac + +gUnknown_08C11B9C:: @ 8C11B9C + .incbin "baserom.gba", 0xc11b9c, 0x20 + +gUnknown_08C11BBC:: @ 8C11BBC + .incbin "baserom.gba", 0xc11bbc, 0x20 gUnknown_08C11BDC:: @ 8C11BDC .incbin "baserom.gba", 0xc11bdc, 0x52b4 @@ -79,7 +88,22 @@ gUnknown_08C1D1E8:: @ 8C1D1E8 .incbin "baserom.gba", 0xc1d1e8, 0x28 gUnknown_08C1D210:: @ 8C1D210 - .incbin "baserom.gba", 0xc1d210, 0x3458 + .incbin "baserom.gba", 0xc1d210, 0x1fb8 + +gUnknown_08C1F1C8:: @ 8C1F1C8 + .incbin "baserom.gba", 0xc1f1c8, 0x2a4 + +gUnknown_08C1F46C:: @ 8C1F46C + .incbin "baserom.gba", 0xc1f46c, 0x17c + +gUnknown_08C1F5E8:: @ 8C1F5E8 + .incbin "baserom.gba", 0xc1f5e8, 0x184 + +gUnknown_08C1F76C:: @ 8C1F76C + .incbin "baserom.gba", 0xc1f76c, 0x17c + +gUnknown_08C1F8E8:: @ 8C1F8E8 + .incbin "baserom.gba", 0xc1f8e8, 0xd80 gUnknown_08C20668:: @ 8C20668 .incbin "baserom.gba", 0xc20668, 0x1c From ee777d7b175369b824ac27e1b5343c74defc7919 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 27 Sep 2017 00:51:09 -0500 Subject: [PATCH 038/182] Extract baseroms from title_screen --- asm/title_screen.s | 10 +- data/field_screen.s | 3 + data/graphics.s | 20 ++- data/title_screen.s | 146 +++++++++++++++++++--- graphics/title_screen/emerald_version.pal | 19 +++ graphics/title_screen/emerald_version.png | Bin 0 -> 1138 bytes graphics/title_screen/logo_shine.png | Bin 0 -> 172 bytes graphics/title_screen/press_start.pal | 19 +++ graphics/title_screen/press_start.png | Bin 0 -> 473 bytes graphics/title_screen/rayquaza.bin | Bin 0 -> 2048 bytes 10 files changed, 191 insertions(+), 26 deletions(-) create mode 100644 graphics/title_screen/emerald_version.pal create mode 100644 graphics/title_screen/emerald_version.png create mode 100644 graphics/title_screen/logo_shine.png create mode 100644 graphics/title_screen/press_start.pal create mode 100644 graphics/title_screen/press_start.png create mode 100644 graphics/title_screen/rayquaza.bin diff --git a/asm/title_screen.s b/asm/title_screen.s index 15037e80d2..b2c0a4995f 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -590,7 +590,7 @@ _080AA7E0: b _080AAB1E .pool _080AA8C4: - ldr r0, =gTitleScreenPokemonLogoTiles + ldr r0, =gTitleScreenPokemonLogoGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram @@ -602,13 +602,13 @@ _080AA8C4: lsls r2, 1 movs r1, 0 bl LoadPalette - ldr r0, =gTitleScreenRayquazaTiles + ldr r0, =gTitleScreenRayquazaGfx ldr r1, =0x06008000 bl LZ77UnCompVram - ldr r0, =gUnknown_0853F83C + ldr r0, =gTitleScreenRayquazaTilemap ldr r1, =0x0600d000 bl LZ77UnCompVram - ldr r0, =gTitleScreenCloudsTiles + ldr r0, =gTitleScreenCloudsGfx ldr r1, =0x0600c000 bl LZ77UnCompVram ldr r0, =gUnknown_08DDE458 @@ -627,7 +627,7 @@ _080AA8C4: bl LoadCompressedObjectPic ldr r0, =gUnknown_0854013C bl LoadCompressedObjectPic - ldr r0, =gUnknown_08DDE438 + ldr r0, =gTitleScreenEmeraldVersionPal movs r1, 0x80 lsls r1, 1 movs r2, 0x20 diff --git a/data/field_screen.s b/data/field_screen.s index 63d4f942c6..fd1b1f4669 100644 --- a/data/field_screen.s +++ b/data/field_screen.s @@ -4,6 +4,9 @@ .section .rodata .align 2, 0 +gUnknown_0854014C:: @ 854014C + .incbin "baserom.gba", 0x54014c, 0xc000 + gUnknown_0854C14C:: @ 854C14C .incbin "baserom.gba", 0x54c14c, 0x4 diff --git a/data/graphics.s b/data/graphics.s index a06c052176..9c3034c913 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -1199,19 +1199,29 @@ gTitleScreenBgPalettes:: @ 8DDE258 .incbin "graphics/title_screen/rayquaza_and_clouds.gbapal" .align 2 -gUnknown_08DDE438:: @ 8DDE438 - .incbin "baserom.gba", 0xdde438, 0x20 +gTitleScreenEmeraldVersionPal:: @ 8DDE438 + .incbin "graphics/title_screen/emerald_version.gbapal" + .align 2 gUnknown_08DDE458:: @ 8DDE458 .incbin "baserom.gba", 0xdde458, 0x238 -gTitleScreenPokemonLogoTiles:: @ 8DDE690 +gTitleScreenPokemonLogoGfx:: @ 8DDE690 .incbin "graphics/title_screen/pokemon_logo.8bpp.lz" .align 2 -@ 8DDFD94 - .incbin "baserom.gba", 0xddfd94, 0x8b0 +gTitleScreenEmeraldVersionGfx:: @ 8DDFD94 + .incbin "graphics/title_screen/emerald_version.8bpp.lz" + .align 2 +gTitleScreenPressStartPal:: @ 8DE03C8 + .incbin "graphics/title_screen/press_start.gbapal" + + .align 2 +gTitleScreenPressStartGfx:: @ 8DE03E8 + .incbin "graphics/title_screen/press_start.4bpp.lz" + + .align 2 gUnknown_08DE0644:: @ 8DE0644 .incbin "baserom.gba", 0xde0644, 0x184 diff --git a/data/title_screen.s b/data/title_screen.s index 281afe51f2..525790271e 100644 --- a/data/title_screen.s +++ b/data/title_screen.s @@ -4,43 +4,157 @@ .section .rodata .align 2, 0 -gTitleScreenRayquazaTiles:: @ 853F058 +gTitleScreenRayquazaGfx:: @ 853F058 .incbin "graphics/title_screen/rayquaza.4bpp.lz" .align 2 -gUnknown_0853F83C:: @ 853F83C - .incbin "baserom.gba", 0x53f83c, 0x450 +gTitleScreenRayquazaTilemap:: @ 853F83C + .incbin "graphics/title_screen/rayquaza.bin.lz" -gTitleScreenCloudsTiles:: @ 853FC8C + .align 2 +gTitleScreenLogoShineGfx:: @ 853FB3C + .incbin "graphics/title_screen/logo_shine.4bpp.lz" + + .align 2 +gTitleScreenCloudsGfx:: @ 853FC8C .incbin "graphics/title_screen/clouds.4bpp.lz" .align 2 gUnknown_0853FF70:: @ 853FF70 - .incbin "baserom.gba", 0x53ff70, 0xa8 + .2byte 0x0010, 0x0110, 0x0210, 0x0310, 0x0410, 0x0510, 0x0610, 0x0710 + .2byte 0x0810, 0x0910, 0x0a10, 0x0b10, 0x0c10, 0x0d10, 0x0e10, 0x0f10 + .2byte 0x100f, 0x100e, 0x100d, 0x100c, 0x100b, 0x100a, 0x1009, 0x1008 + .2byte 0x1007, 0x1006, 0x1005, 0x1004, 0x1003, 0x1002, 0x1001, 0x1000 + .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000 + .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000 + .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000 + .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000 + .align 2 +gUnknown_0853FFF0:: @ 853FFF0 + .byte 0xa0, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_0853FFF8:: @ 853FFF8 + .byte 0xa0, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_08540000:: @ 8540000 + .2byte 0x0000, 0x001e, 0xffff, 0x0000 + + .align 2 +gUnknown_08540008:: @ 8540008 + .2byte 0x0040, 0x001e, 0xffff, 0x0000 + + .align 2 +gUnknown_08540010:: @ 8540010 + .4byte gUnknown_08540000 + + .align 2 +gUnknown_08540014:: @ 8540014 + .4byte gUnknown_08540008 + + .align 2 gUnknown_08540018:: @ 8540018 - .incbin "baserom.gba", 0x540018, 0x18 + spr_template 0x03e8, 0x03e8, gUnknown_0853FFF0, gUnknown_08540010, NULL, gDummySpriteAffineAnimTable, sub_80AA40C + .align 2 gUnknown_08540030:: @ 8540030 - .incbin "baserom.gba", 0x540030, 0x18 + spr_template 0x03e8, 0x03e8, gUnknown_0853FFF8, gUnknown_08540014, NULL, gDummySpriteAffineAnimTable, sub_80AA474 + .align 2 gUnknown_08540048:: @ 8540048 - .incbin "baserom.gba", 0x540048, 0x90 + obj_tiles gTitleScreenEmeraldVersionGfx, 0x1000, 0x03e8 + null_obj_tiles + .align 2 +gUnknown_08540058:: @ 8540058 + .byte 0xa0, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_08540060:: @ 8540060 + .2byte 0x0001, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540068:: @ 8540068 + .2byte 0x0005, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540070:: @ 8540070 + .2byte 0x0009, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540078:: @ 8540078 + .2byte 0x000d, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540080:: @ 8540080 + .2byte 0x0011, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540088:: @ 8540088 + .2byte 0x0015, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540090:: @ 8540090 + .2byte 0x0019, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540098:: @ 8540098 + .2byte 0x001d, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_085400A0:: @ 85400A0 + .2byte 0x0021, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_085400A8:: @ 85400A8 + .2byte 0x0025, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_085400B0:: @ 85400B0 + .4byte gUnknown_08540060 + .4byte gUnknown_08540068 + .4byte gUnknown_08540070 + .4byte gUnknown_08540078 + .4byte gUnknown_08540080 + .4byte gUnknown_08540088 + .4byte gUnknown_08540090 + .4byte gUnknown_08540098 + .4byte gUnknown_085400A0 + .4byte gUnknown_085400A8 + + .align 2 gUnknown_085400D8:: @ 85400D8 - .incbin "baserom.gba", 0x5400d8, 0x18 + spr_template 0x03e9, 0x03e9, gUnknown_08540058, gUnknown_085400B0, NULL, gDummySpriteAffineAnimTable, sub_80AA4B4 + .align 2 gUnknown_085400F0:: @ 85400F0 - .incbin "baserom.gba", 0x5400f0, 0x10 + obj_tiles gTitleScreenPressStartGfx, 0x0520, 0x03e9 + null_obj_tiles + .align 2 gUnknown_08540100:: @ 8540100 - .incbin "baserom.gba", 0x540100, 0x24 + obj_pal gTitleScreenPressStartPal, 0x03e9 + null_obj_pal + .align 2 +gUnknown_08540110:: @ 8540110 + .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_08540118:: @ 8540118 + .2byte 0x0000, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08540120:: @ 8540120 + .4byte gUnknown_08540118 + + .align 2 gUnknown_08540124:: @ 8540124 - .incbin "baserom.gba", 0x540124, 0x18 + spr_template 0x03ea, 0x03e9, gUnknown_08540110, gUnknown_08540120, NULL, gDummySpriteAffineAnimTable, title_screen_logo_shine_obj_callback_type1 + .align 2 gUnknown_0854013C:: @ 854013C - .incbin "baserom.gba", 0x54013c, 0x10 - -gUnknown_0854014C:: @ 854014C - .incbin "baserom.gba", 0x54014c, 0xc000 + obj_tiles gTitleScreenLogoShineGfx, 0x0800, 0x03ea + null_obj_tiles diff --git a/graphics/title_screen/emerald_version.pal b/graphics/title_screen/emerald_version.pal new file mode 100644 index 0000000000..c5ed9a5826 --- /dev/null +++ b/graphics/title_screen/emerald_version.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 74 238 +156 156 156 +90 90 90 +222 222 222 +24 16 24 +74 74 74 +238 238 238 +41 41 41 +172 172 172 +106 106 106 +189 189 189 +139 139 139 +205 205 205 +123 123 123 +65 57 57 +255 255 255 diff --git a/graphics/title_screen/emerald_version.png b/graphics/title_screen/emerald_version.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8b32da988fe9471126f94bd0fed4bf8a0dedc0 GIT binary patch literal 1138 zcmV-&1daQNP);80K5y-OW5lL*yu1a@)$;5X6e)pqdx?rML zX@=QlQ&|9`wPF^41HQBcFj?4lWPoDk*-fH1Dx{H%iaPZtm1c1)N%kDUsay_l*=c4E zNRaiuWt3lnX)mx`JhCc2F{jgfuxKdkdkoM3@Os@SGok4N@Xnz^7Z!)+70^*bFb~x0 zNIMN+kOWzhs`{V+-TN5c0GuS7R#a~>cIXrh*6P#@m`Qw408jb#7R06=SP(645)}hb zJx$Dc#gjL9wN@O829Q^!k&m*u2+Y|vJXN3G0E*@q=2Zn2!%jYC5Y>Wd2DcA@1Sz=? z6EC;`OkeO$1Jcx!NpNWt47FpW5YCw?(7b|N=CVMl7Fy!KB#nhn!_mH(!`-q<&SB-I zna+^kBuVX@F?vokeXx{*Id{Z(9fen=xGXwVI%jGGt_*kODOEP@)TFZ4>nt@3V!l+; z>1Z&fZUzC+Q_4XeSenEa7XU){*+j98Bn%8zYK~C>+%_8hfUUbBbVGAIASGj8hYXnV0kj@7P z%1K?#C2zZilivu70;(N;mkw1!G$~!m8i~wWO3cN6Dm#FFzAd9v?nJb%8A8G`b^ww! z0JR`xH3*7BW4mZ++5$*}WTIBpd0B%Z$3vo1<2C@)7^_%}WQI*HvZCaJXiW>f-wxJB zsN80Ip>dKWu5nS9mevj+e>Ps~+O@m4GCE~i-2zme2@{no@$EZOj zc|F9>WB5_ZzV<1D!M<>B7xg0&x4$^ZZW literal 0 HcmV?d00001 diff --git a/graphics/title_screen/logo_shine.png b/graphics/title_screen/logo_shine.png new file mode 100644 index 0000000000000000000000000000000000000000..4e17d2877b12ea319c8b6900576bb1513b2685eb GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ip*Wx)zK<1P=OSbIYd+*-6 z|3JXNfCn)iefJQk!Q9iuF~p-YIpF}yIzAqrGwT*EJQwk#Bj|t-lZua%vop_$P=i-3 rf$BY0iB~um`$?1@S|QA~QJ7(|XI`V`<*4gGBN#kg{an^LB{Ts5KR`N~ literal 0 HcmV?d00001 diff --git a/graphics/title_screen/press_start.pal b/graphics/title_screen/press_start.pal new file mode 100644 index 0000000000..561ab8f8f1 --- /dev/null +++ b/graphics/title_screen/press_start.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 156 98 +0 0 0 +148 156 164 +180 189 189 +222 222 238 +255 255 255 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 diff --git a/graphics/title_screen/press_start.png b/graphics/title_screen/press_start.png new file mode 100644 index 0000000000000000000000000000000000000000..63a5c23d045f1af021481b0c5d80d7a402a1c436 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fx!VDx2sJ^%cqznRlLR^dIBmtRI<}BH=ckjJ> z@BRY;0|Oq!c=X*v1_s6yPZ!4!i{7%=AK^c* zk0)n#?)tnfnNqtO!){#nX0F~S+^F1IvS6}J?Zbzs{pXl;Tx_WL#LsJ2U0<+q_DcVa z&lwG;GC#bqKthkrf!VaxJyGEM3+tyB5+b7>^B>+O;SrvFzl@3b2E#=Izf*=MbBZ2kb2jyKt{G`TT0<66PN+QzZf?sJ9l!Nc_?M)~@2ndoi^z z=4f)6Ua8vhKi;ja>NDm>KTupD{@~g4_zB<6iT<_>7dajEsJ{C^!t0pyHGR@=^QL}! yB$)9!=4f8(7L6{J7oW4)($_8c5O%8m82=jG3_I1e_uc{{h{4m<&t;ucLK6Vch|=r; literal 0 HcmV?d00001 diff --git a/graphics/title_screen/rayquaza.bin b/graphics/title_screen/rayquaza.bin new file mode 100644 index 0000000000000000000000000000000000000000..b112237a3d115893e432a3854c811becffcc4274 GIT binary patch literal 2048 zcmeH{M`%=06o#K&P(e3VgebO+5KAnG3ifUgdj(OWVg)tLwi437m763+UAQobf{K!+ zU?R3evDfIQ9xLeByN>s~GMUT-#OFc~@5k`&yXXJTy>k~Yk38R4X6(d2>L0*AR=gFz zAOEO-9RH|)jA)wLYt3j*i#n<`dG#+)o7S|UE$wJe2jb`$QLUYg^t;fNZgi)IF&%pT z(m#(!ANm@rAN?7?KrsKZwIY4sqD@ zIKol0QbaK&lxj~Yl@ckIBJq+z-tx}2!u=DJQ^84NoZ__Gvyv*Rq%zEOdR*jElpo|W zSGdYGu5*K%rhc0{R8t*g!+jpq;Xg!p#ABZDlxIA*@8bn8-Lur3{uQrz6Y}*x{O1pD Xz_Ma}qMv^qf7{nH#QX-D|7XTectY=K literal 0 HcmV?d00001 From 22211c08f1f62c0003db7b1c96d899ccd149d049 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 27 Sep 2017 01:36:29 -0500 Subject: [PATCH 039/182] Extract baseroms from player_pc --- data/player_pc.s | 57 +++++++++++++++++++++++------- data/strings.s | 92 ++++++------------------------------------------ 2 files changed, 54 insertions(+), 95 deletions(-) diff --git a/data/player_pc.s b/data/player_pc.s index 4fd2913ddd..c3422db302 100644 --- a/data/player_pc.s +++ b/data/player_pc.s @@ -3,41 +3,72 @@ .section .rodata + .align 2 gUnknown_085DFEA4:: @ 85DFEA4 - .incbin "baserom.gba", 0x5dfea4, 0x10 + .4byte gText_TakeOutItemsFromPC + .4byte gText_StoreItemsInPC + .4byte gText_ThrowAwayItemsInPC + .4byte gText_GoBackPrevMenu + .align 2 gUnknown_085DFEB4:: @ 85DFEB4 - .incbin "baserom.gba", 0x5dfeb4, 0x20 + .4byte gText_ItemStorage, task_pc_itemstorage + .4byte gText_Mailbox, sub_816B0A8 + .4byte gText_Decoration, sub_816B138 + .4byte gText_TurnOff, sub_816B148 + .align 2 gUnknown_085DFED4:: @ 85DFED4 - .incbin "baserom.gba", 0x5dfed4, 0x4 + .byte 0x00, 0x01, 0x02, 0x03 + .align 2 gUnknown_085DFED8:: @ 85DFED8 - .incbin "baserom.gba", 0x5dfed8, 0x4 + .byte 0x00, 0x01, 0x03, 0x00 + .align 2 gUnknown_085DFEDC:: @ 85DFEDC - .incbin "baserom.gba", 0x5dfedc, 0x20 + .4byte gText_WithdrawItem, sub_816B398 + .4byte gText_DepositItem, sub_816B2C8 + .4byte gText_TossItem, sub_816B3E4 + .4byte gText_Cancel, sub_816B4A4 + .align 2 gUnknown_085DFEFC:: @ 85DFEFC - .incbin "baserom.gba", 0x5dfefc, 0x8 + .2byte ITEM_POTION, 0x0001 + .2byte 0x0000, 0x0000 + .align 2 gUnknown_085DFF04:: @ 85DFF04 - .incbin "baserom.gba", 0x5dff04, 0x20 + .4byte gText_Read, sub_816B878 + .4byte gText_MoveToBag, sub_816B994 + .4byte gText_Give2, sub_816BABC + .4byte gText_Cancel2, sub_816BBD4 + .align 2 gUnknown_085DFF24:: @ 85DFF24 - .incbin "baserom.gba", 0x5dff24, 0x18 + .4byte 0x09010100, 0x00010f06, 0x09010100, 0x00010f08, 0x0a010100, 0x00010f08 + .align 2 gUnknown_085DFF3C:: @ 85DFF3C - .incbin "baserom.gba", 0x5dff3c, 0x8 + .4byte sub_816CA94 + .4byte sub_816CAC8 + .align 2 gUnknown_085DFF44:: @ 85DFF44 - .incbin "baserom.gba", 0x5dff44, 0x18 + .4byte 0x00000000, sub_816BDDC, fish4_goto_x5_or_x6, 0x00000000, 0x00080000, 0x07003129 + .align 2 gUnknown_085DFF5C:: @ 85DFF5C - .incbin "baserom.gba", 0x5dff5c, 0x28 + window_template 0x00, 0x10, 0x01, 0x0d, 0x12, 0x0f, 0x0001 + window_template 0x00, 0x01, 0x0d, 0x0d, 0x06, 0x0f, 0x00eb + window_template 0x00, 0x01, 0x08, 0x03, 0x03, 0x0f, 0x0153 + window_template 0x00, 0x01, 0x01, 0x0d, 0x02, 0x0f, 0x0139 + window_template 0x00, 0x08, 0x09, 0x06, 0x02, 0x0f, 0x015c + .align 2 gUnknown_085DFF84:: @ 85DFF84 - .incbin "baserom.gba", 0x5dff84, 0x8 + window_template 0x00, 0x09, 0x07, 0x05, 0x04, 0x0f, 0x0168 + .align 2 gUnknown_085DFF8C:: @ 85DFF8C - .incbin "baserom.gba", 0x5dff8c, 0x4 + .byte 0x01, 0x03, 0x02, 0x00 diff --git a/data/strings.s b/data/strings.s index bfe6429155..5fb8ca902f 100644 --- a/data/strings.s +++ b/data/strings.s @@ -824,7 +824,6 @@ gText_FirmSlash:: @ 85E922C gText_Var1DotVar2:: @ 85E9233 .string "{STR_VAR_1}.{STR_VAR_2}”$" - .include "data/text/berry_firmness_strings.inc" gText_UnkF908Var1Var2:: @ 85E9263 @@ -833,7 +832,6 @@ gText_UnkF908Var1Var2:: @ 85E9263 gText_BerryTag:: @ 85E926B .string "BERRY TAG$" - gUnknown_085E9275:: @ 85E9275 .string "RED {POKEBLOCK}$" @@ -891,7 +889,6 @@ gText_Bitter:: @ 85E932D gText_Sour:: @ 85E9334 .string "SOUR$" - gUnknown_085E9339:: @ 85E9339 .string "TASTY$" @@ -919,7 +916,6 @@ gText_Var1HappilyAteVar2:: @ 85E9390 gText_Var1DisdainfullyAteVar2:: @ 85E93A9 .string "{STR_VAR_1} disdainfully ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$" - gUnknown_085E93C7:: @ 85E93C7 .string "BUY$" @@ -992,7 +988,6 @@ gText_TurnedOverVar1ForVar2:: @ 85E9677 gText_PokedollarVar1:: @ 85E969C .string "¥{STR_VAR_1}$" - gUnknown_085E96A0:: @ 85E96A0 .string "SHIFT$" @@ -1149,7 +1144,6 @@ gText_PkmnThawedOut:: @ 85E9CA2 gText_PPWasRestored:: @ 85E9CB7 .string "PP was restored.{PAUSE_UNTIL_PRESS}$" - gUnknown_085E9CCA:: @ 85E9CCA .string "{STR_VAR_1} regained health.{PAUSE_UNTIL_PRESS}$" @@ -1186,7 +1180,6 @@ gText_ThrowAwayItem:: @ 85E9E00 gText_ItemThrownAway:: @ 85E9E14 .string "The {STR_VAR_1}\nwas thrown away.{PAUSE_UNTIL_PRESS}$" - gUnknown_085E9E2E:: @ 85E9E2E .string "Teach which POKéMON?$" @@ -1392,7 +1385,6 @@ gText_Speed2:: @ 85EA35B gText_HP4:: @ 85EA361 .string "HP$" - gUnknown_085EA364:: @ 85EA364 .string "$" @@ -1432,7 +1424,6 @@ gText_RibbonsVar1:: @ 85EA3B4 gText_EmptyString5:: @ 85EA3C0 .string "$" - gUnknown_085EA3C1:: @ 85EA3C1 .string "EVENTS$" @@ -1520,7 +1511,6 @@ gText_RegisteredDataDeleted:: @ 85EA762 gText_NoRegistry:: @ 85EA785 .string "There is no REGISTRY.{PAUSE_UNTIL_PRESS}$" - gUnknown_085EA79D:: @ 85EA79D .string "DEL REGIST.$" @@ -1539,7 +1529,6 @@ gUnknown_085EA7C3:: @ 85EA7C3 gText_Color161Shadow161:: @ 85EA7C8 .string "{COLOR 161}{SHADOW 161}$" - gUnknown_085EA7CF:: @ 85EA7CF .string "Put out the selected decoration item.$" @@ -1552,7 +1541,6 @@ gUnknown_085EA81C:: @ 85EA81C gText_NoDecorations:: @ 85EA83D .string "There are no decorations.{PAUSE_UNTIL_PRESS}$" - gUnknown_085EA859:: @ 85EA859 .string "DESK$" @@ -1601,7 +1589,6 @@ gText_NoMoreDecorations:: @ 85EA8EA gText_NoMoreDecorations2:: @ 85EA931 .string "No more decorations can be placed.\nThe most that can be placed are {STR_VAR_1}.$" - gUnknown_085EA978:: @ 85EA978 .string "This can’t be placed here.\nIt must be on a DESK, etc.$" @@ -1632,7 +1619,6 @@ gText_DecorationReturnedToPC:: @ 85EAAC5 gText_NoDecorationsInUse:: @ 85EAAEC .string "There are no decorations in use.{PAUSE_UNTIL_PRESS}$" - gUnknown_085EAB0F:: @ 85EAB0F .string "TRISTAN$" @@ -1645,20 +1631,19 @@ gUnknown_085EAB1E:: @ 85EAB1E gUnknown_085EAB25:: @ 85EAB25 .string "ROBERTO$" -gUnknown_085EAB2D:: @ 85EAB2D +gText_TurnOff:: @ 85EAB2D .string "TURN OFF$" -gUnknown_085EAB36:: @ 85EAB36 +gText_Decoration:: @ 85EAB36 .string "DECORATION$" -gUnknown_085EAB41:: @ 85EAB41 +gText_ItemStorage:: @ 85EAB41 .string "ITEM STORAGE$" gText_Mailbox:: @ 85EAB4E .string "MAILBOX$" - -gUnknown_085EAB56:: @ 85EAB56 +gText_DepositItem:: @ 85EAB56 .string "DEPOSIT ITEM$" gText_WithdrawItem:: @ 85EAB63 @@ -1667,14 +1652,13 @@ gText_WithdrawItem:: @ 85EAB63 gText_TossItem:: @ 85EAB71 .string "TOSS ITEM$" - -gUnknown_085EAB7B:: @ 85EAB7B +gText_StoreItemsInPC:: @ 85EAB7B .string "Store items in the PC.$" -gUnknown_085EAB92:: @ 85EAB92 +gText_TakeOutItemsFromPC:: @ 85EAB92 .string "Take out items from the PC.$" -gUnknown_085EABAE:: @ 85EABAE +gText_ThrowAwayItemsInPC:: @ 85EABAE .string "Throw away items stored in the PC.$" gText_NoItems:: @ 85EABD1 @@ -1689,14 +1673,13 @@ gText_WithdrawHowManyItems:: @ 85EAC09 gText_WithdrawXItems:: @ 85EAC22 .string "Withdrew {STR_VAR_2}\n{STR_VAR_1}(s).$" - -gUnknown_085EAC35:: @ 85EAC35 +gText_Read:: @ 85EAC35 .string "READ$" -gUnknown_085EAC3A:: @ 85EAC3A +gText_MoveToBag:: @ 85EAC3A .string "MOVE TO BAG$" -gUnknown_085EAC46:: @ 85EAC46 +gText_Give2:: @ 85EAC46 .string "GIVE$" gText_NoMailHere:: @ 85EAC4B @@ -1738,7 +1721,6 @@ gText_Phoebe:: @ 85EAD29 gText_Glacia:: @ 85EAD30 .string "GLACIA$" - gUnknown_085EAD37:: @ 85EAD37 .string "PETALBURG$" @@ -1844,7 +1826,6 @@ gText_Yes:: @ 85EAE62 gText_No:: @ 85EAE66 .string "NO$" - gUnknown_085EAE69:: @ 85EAE69 .string "INFO$" @@ -1872,7 +1853,6 @@ gText_Lv50:: @ 85EAEB1 gText_OpenLevel:: @ 85EAEB8 .string "OPEN LEVEL$" - gUnknown_085EAEC3:: @ 85EAEC3 .string "FRESH WATER{CLEAR_TO 0x48}¥200$" @@ -2005,7 +1985,6 @@ gText_Smart:: @ 85EB0F9 gText_Tough:: @ 85EB0FF .string "TOUGH$" - gUnknown_085EB105:: @ 85EB105 .string "NORMAL$" @@ -2063,7 +2042,6 @@ gText_HallOfFame:: @ 85EB18B gText_LogOff:: @ 85EB198 .string "LOG OFF$" - gUnknown_085EB1A0:: @ 85EB1A0 .string "OPPONENT$" @@ -2130,7 +2108,6 @@ gText_MenuOptionBag:: @ 85EB26C gText_MenuOptionPokenav:: @ 85EB270 .string "POKéNAV$" - gUnknown_085EB278:: @ 85EB278 .string "$" @@ -2371,7 +2348,6 @@ gText_SpaceSeconds:: @ 85EB5E5 gText_SpaceTimes:: @ 85EB5EE .string " time(s)$" - gUnknown_085EB5F7:: @ 85EB5F7 .string ".$" @@ -2387,7 +2363,6 @@ gText_Son:: @ 85EB60A gText_Daughter:: @ 85EB60E .string "daughter$" - gUnknown_085EB617:: @ 85EB617 .string "BLUE FLUTE$" @@ -2463,7 +2438,6 @@ gText_ElevatorNowOn:: @ 85EB6A5 gText_BP:: @ 85EB6AD .string "BP$" - gUnknown_085EB6B0:: @ 85EB6B0 .string "ENERGYPOWDER{CLEAR_TO 0x72}{SIZE 0}50$" @@ -2524,7 +2498,6 @@ gUnknown_085EB7DB:: @ 85EB7DB gText_Exit:: @ 85EB7EA .string "EXIT$" - gUnknown_085EB7EF:: @ 85EB7EF .string "Exit from the BOX?$" @@ -2771,7 +2744,6 @@ gText_PartyFull:: @ 85EBCAD gText_Box:: @ 85EBCC1 .string "BOX$" - gUnknown_085EBCC5:: @ 85EBCC5 .string "Check the map of the HOENN region.$" @@ -2790,7 +2762,6 @@ gUnknown_085EBD34:: @ 85EBD34 gText_NoRibbonWinners:: @ 85EBD4A .string "There are no RIBBON winners.$" - gUnknown_085EBD67:: @ 85EBD67 .string "No TRAINERS are registered.$" @@ -2827,7 +2798,6 @@ gText_NumberRegistered:: @ 85EBE5F gText_NumberOfBattles:: @ 85EBE6E .string "No. of battles$" - gUnknown_085EBE7D:: @ 85EBE7D .string "DETAIL$" @@ -2897,7 +2867,6 @@ gText_InParty:: @ 85EBFCE gText_Number2:: @ 85EBFD7 .string "No. $" - gUnknown_085EBFDC:: @ 85EBFDC .string "RIBBONS$" @@ -2913,7 +2882,6 @@ gUnknown_085EC008:: @ 85EC008 gText_Unknown:: @ 85EC00F .string "UNKNOWN$" - gUnknown_085EC017:: @ 85EC017 .string "CALL$" @@ -2929,7 +2897,6 @@ gText_NumberF700:: @ 85EC029 gText_RibbonsF700:: @ 85EC030 .string "RIBBONS {SPECIAL_F7 0x00}$" - gUnknown_085EC03B:: @ 85EC03B .string "{SPECIAL_F7 0x00}{COLOR_HIGHLIGHT_SHADOW LIGHT_RED WHITE GREEN}♂{COLOR_HIGHLIGHT_SHADOW DARK_GREY WHITE LIGHT_GREY}/{LV}{SPECIAL_F7 0x01}{SPECIAL_F7 0x02}$" @@ -3053,7 +3020,6 @@ gText_QuitEditing:: @ 85EC3A6 gText_StopGivingPkmnMail:: @ 85EC3B4 .string "Stop giving the POKéMON MAIL?$" - gUnknown_085EC3D2:: @ 85EC3D2 .string "and fill out the questionnaire.$" @@ -3066,7 +3032,6 @@ gText_AllTextBeingEditedWill:: @ 85EC410 gText_BeDeletedThatOkay:: @ 85EC42F .string "be deleted. Is that okay?$" - gUnknown_085EC449:: @ 85EC449 .string "Quit editing?$" @@ -3088,14 +3053,12 @@ gText_OnlyOnePhrase:: @ 85EC4C9 gText_OriginalSongWillBeUsed:: @ 85EC4E9 .string "The original song will be used.$" - gUnknown_085EC509:: @ 85EC509 .string "That’s trendy already!$" gText_CombineTwoWordsOrPhrases:: @ 85EC520 .string "Combine two words or phrases.$" - gUnknown_085EC53E:: @ 85EC53E .string "Quit giving information?$" @@ -3159,7 +3122,6 @@ gText_F700sQuiz:: @ 85EC6A8 gText_Lady:: @ 85EC6B2 .string "Lady$" - gUnknown_085EC6B7:: @ 85EC6B7 .string "After you have read the quiz$" @@ -3175,7 +3137,6 @@ gText_LikeToQuitQuiz:: @ 85EC706 gText_ChallengeQuestionMark:: @ 85EC727 .string "challenge?$" - gUnknown_085EC732:: @ 85EC732 .string "Is this quiz OK?$" @@ -3188,7 +3149,6 @@ gText_SelectTheAnswer:: @ 85EC752 gText_LyricsCantBeDeleted:: @ 85EC765 .string "The lyrics can’t be deleted.$" - gUnknown_085EC782:: @ 85EC782 .string "POKéMON LEAGUE$" @@ -3198,7 +3158,6 @@ gUnknown_085EC791:: @ 85EC791 gText_GetsAPokeBlockQuestion:: @ 85EC7A0 .string " gets a {POKEBLOCK}?$" - gUnknown_085EC7AF:: @ 85EC7AF .string "Coolness $" @@ -3334,7 +3293,6 @@ gText_Second:: @ 85ECB80 gText_Third:: @ 85ECB87 .string "third$" - gUnknown_085ECB8D:: @ 85ECB8D .string "0 pts$" @@ -3536,7 +3494,6 @@ gText_TrainerCardIDNo:: @ 85ECF78 gText_TrainerCardMoney:: @ 85ECF7E .string "MONEY$" - gUnknown_085ECF84:: @ 85ECF84 .string "¥$" @@ -3549,14 +3506,12 @@ gText_EmptyString6:: @ 85ECF8E gText_Colon2:: @ 85ECF8F .string ":$" - gUnknown_085ECF91:: @ 85ECF91 .string " points$" gText_TrainerCardTime:: @ 85ECF99 .string "TIME$" - gUnknown_085ECF9E:: @ 85ECF9E .string "ゲ-ムポイント$" @ "geemupointo" ("game point" in Japanese) @@ -3566,7 +3521,6 @@ gText_Var1sTrainerCard:: @ 85ECFA6 gText_HallOfFameDebut:: @ 85ECFB8 .string "HALL OF FAME DEBUT $" - gUnknown_085ECFCD:: @ 85ECFCD .string "LINK BATTLES$" @@ -3609,7 +3563,6 @@ gText_BattleTower:: @ 85ED0D3 gText_WSlashStraightSlash:: @ 85ED0E0 .string "W/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_1}{COLOR DARK_GREY}{SHADOW LIGHT_GREY} STRAIGHT/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_2}$" - gUnknown_085ED104:: @ 85ED104 .string "BATTLE TOWER$" @@ -3695,14 +3648,12 @@ gText_CommunicationStandby:: @ 85ED207 gText_ColorDarkGrey:: @ 85ED21E .string "{COLOR DARK_GREY}$" - gUnknown_085ED222:: @ 85ED222 .string "{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR6 WHITE DYNAMIC_COLOR5}$" gText_HighlightDarkGrey:: @ 85ED228 .string "{HIGHLIGHT DARK_GREY}$" - gUnknown_085ED22C:: @ 85ED22C .string " $" @@ -3751,7 +3702,6 @@ gText_F700JoinedChat:: @ 85ED2A9 gText_F700LeftChat:: @ 85ED2BD .string "{SPECIAL_F7 0x00} left the chat.$" - gUnknown_085ED2CF:: @ 85ED2CF .string "{SPECIAL_F7 0x00}の{SPECIAL_F7 0x01}ひきめ:$" @ "{SPECIAL_F7 0x00}'s {SPECIAL_F7 0x01}hikime" @@ -3809,7 +3759,6 @@ gText_ThankYou:: @ 85ED440 gText_ByeBye:: @ 85ED44A .string "BYE-BYE!$" - gUnknown_085ED453:: @ 85ED453 .string "Attack the weak points!$" @@ -3992,7 +3941,6 @@ gText_BattleRecord:: @ 85ED90E gText_BattlePoints:: @ 85ED91C .string "Battle Points$" - gUnknown_085ED92A:: @ 85ED92A .string "CANCEL$" @@ -4212,7 +4160,6 @@ gText_4th:: @ 85EDFAC gText_Friend:: @ 85EDFB0 .string "Friend$" - gUnknown_085EDFB7:: @ 85EDFB7 .string "POKeMON$" @@ -4397,7 +4344,6 @@ gUnknown_085EE410:: @ 85EE410 gText_1Dot:: @ 85EE424 .string "1.$" - gUnknown_085EE427:: @ 85EE427 .string "2.$" @@ -4440,7 +4386,6 @@ gText_ABtnTitleScreen:: @ 85EE572 gText_Option:: @ 85EE589 .string "OPTION$" - gUnknown_085EE590:: @ 85EE590 .string "TEXT SPEED$" @@ -4507,7 +4452,6 @@ gText_ButtonTypeLEqualsA:: @ 85EE65D gText_XPLink:: @ 85EE667 .string "{STR_VAR_1}P LINK$" - gUnknown_085EE670:: @ 85EE670 .string "BRONZE$" @@ -4529,7 +4473,6 @@ gText_Colon3:: @ 85EE68E gText_Confirm2:: @ 85EE690 .string "CONFIRM$" - gUnknown_085EE698:: @ 85EE698 .string "Days$" @@ -4581,7 +4524,6 @@ gText_SafariBallStock:: @ 85EE6FF gText_BattlePyramidFloor:: @ 85EE716 .string "Battle Pyramid\n{STR_VAR_1}$" - gUnknown_085EE728:: @ 85EE728 .string "Floor 1$" @@ -4624,7 +4566,6 @@ gText_EventSafelyLoaded:: @ 85EE80A gText_LoadErrorEndingSession:: @ 85EE827 .string "Loading error.\nEnding session.$" - gUnknown_085EE846:: @ 85EE846 .string "プレイヤー$" @ "pureiyaa" ("player" in Japanese) @@ -4640,7 +4581,6 @@ gText_DexNational:: @ 85EE855 gText_PokedexDiploma:: @ 85EE85E .string "PLAYER: {CLEAR 0x10}{COLOR RED}{SHADOW LIGHT_RED}{PLAYER}{COLOR DARK_GREY}{SHADOW LIGHT_GREY}\n\nThis document certifies\nthat you have successfully\ncompleted your\n{STR_VAR_1} POKéDEX.\n\n{CLEAR_TO 0x42}{COLOR RED}{SHADOW LIGHT_RED}GAME FREAK$" - gUnknown_085EE8DC:: @ 85EE8DC .string "{COLOR RED}{SHADOW LIGHT_RED}ゲ-ムフリ-ク$" @ geemufuriku ("Game Freak" in Japanese) @@ -4674,13 +4614,11 @@ gText_XSentOverY:: @ 85EE966 gText_TakeGoodCareOfX:: @ 85EE977 .string "Take good care of {STR_VAR_3}!$" - .include "data/text/easy_chat/easy_chat_group_names.inc" gText_ThreeQuestionMarks:: @ 85EEA42 .string "???$" - gUnknown_085EEA46:: @ 85EEA46 .string "MAX. HP$" @@ -4714,7 +4652,6 @@ gText_MixingRecords:: @ 85EEA7E gText_RecordMixingComplete:: @ 85EEA8E .string "Record mixing completed.\nThank you for waiting.$" - gUnknown_085EEABE:: @ 85EEABE .string "YOUR NAME?$" @@ -4853,7 +4790,6 @@ gText_PkmnForSwap:: @ 85EECD1 gText_Cancel3:: @ 85EECDD .string "CANCEL$" - gUnknown_085EECE4:: @ 85EECE4 .string "SWAP$" @@ -4863,7 +4799,6 @@ gUnknown_085EECE9:: @ 85EECE9 gText_AcceptThisPkmn:: @ 85EECF0 .string "Accept this POKéMON?$" - gUnknown_085EED05:: @ 85EED05 .string " $" @@ -5186,7 +5121,6 @@ gText_YouDontHaveThreeCoins:: @ 85EF734 gText_ReelTimeHelp:: @ 85EF750 .string "REEL TIME\nHere’s your chance to take\naim and nail marks!\nReel Time continues for the\nawarded number of spins.\nIt all ends on a Big Bonus.$" - gUnknown_085EF7DA:: @ 85EF7DA .string "The two seem to get along\nvery well.$" @@ -5217,7 +5151,6 @@ gText_TimeCleared:: @ 85EF895 gText_XMinYDotZSec:: @ 85EF8A3 .string "{STR_VAR_1} min. {STR_VAR_2}.{STR_VAR_3} sec.$" - gUnknown_085EF8B6:: @ 85EF8B6 .string "1F$" @@ -5251,7 +5184,6 @@ gText_12AndPoof:: @ 85EF979 gText_PkmnForgotMoveAndLearnedNew:: @ 85EF9A6 .string "{STR_VAR_1} forgot {STR_VAR_3}.\pAnd…\p{STR_VAR_1} learned {STR_VAR_2}.$" - gUnknown_085EF9C8:: @ 85EF9C8 .string "{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.$" @@ -5267,7 +5199,6 @@ gText_BattleMoves2:: @ 85EFA31 gText_ContestMoves2:: @ 85EFA3E .string "CONTEST MOVES$" - gUnknown_085EFA4C:: @ 85EFA4C .string "TYPE/$" @@ -5286,7 +5217,6 @@ gText_Appeal2:: @ 85EFA67 gText_Jam2:: @ 85EFA6E .string "JAM$" - gUnknown_085EFA72:: @ 85EFA72 .string "KIRA$" @@ -5320,7 +5250,6 @@ gText_Confirm3:: @ 85EFAE0 gText_Cancel4:: @ 85EFAE8 .string "CANCEL$" - gUnknown_085EFAEF:: @ 85EFAEF .string "DEVON PRES$" @@ -5396,7 +5325,6 @@ gText_BattleWasRefused:: @ 85EFC0C gText_RefusedBattle:: @ 85EFC27 .string "Refused the battle.{PAUSE 60}$" - gUnknown_085EFC3E:: @ 85EFC3E .string "NO WEATHER$" From 69928d3904a610791d5e34e32364d9ee5f9392ee Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 27 Sep 2017 23:43:45 +0200 Subject: [PATCH 040/182] battle 4 up to 0xE5 --- asm/battle_1.s | 10 +- asm/battle_2.s | 58 +- asm/battle_4.s | 5421 +------------------------------------ asm/battle_anim_80FE840.s | 4 +- asm/battle_frontier_2.s | 6 +- asm/battle_interface.s | 8 +- asm/evolution_scene.s | 4 +- asm/party_menu.s | 2 +- data/battle_4.s | 6 +- data/battle_scripts_1.s | 16 +- include/battle.h | 87 +- include/battle_message.h | 17 + include/mail.h | 19 + src/battle_3.c | 21 +- src/battle_4.c | 1756 +++++++++++- src/pokemon_3.c | 20 +- sym_ewram.txt | 4 +- 17 files changed, 1845 insertions(+), 5614 deletions(-) create mode 100644 include/mail.h diff --git a/asm/battle_1.s b/asm/battle_1.s index e74d12046b..636bafbea0 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1548,7 +1548,7 @@ _080358E0: .4byte _08035A70 _08035904: ldr r4, =gUnknown_0831ABA8 - ldr r5, =gUnknown_02022FF0 + ldr r5, =gBattleTerrain ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -2633,7 +2633,7 @@ _08036350: cmp r0, 0 bne _0803639C ldr r4, =gUnknown_0831ABA8 - ldr r5, =gUnknown_02022FF0 + ldr r5, =gBattleTerrain ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -2779,7 +2779,7 @@ _080364A8: .4byte _08036518 _080364CC: ldr r2, =gUnknown_0831ABA8 - ldr r0, =gUnknown_02022FF0 + ldr r0, =gBattleTerrain ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 @@ -2889,7 +2889,7 @@ _080365B4: .4byte _08036624 _080365D8: ldr r2, =gUnknown_0831ABA8 - ldr r0, =gUnknown_02022FF0 + ldr r0, =gBattleTerrain ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 @@ -3004,7 +3004,7 @@ _080366C8: .4byte _08036740 _080366EC: ldr r2, =gUnknown_0831ABA8 - ldr r0, =gUnknown_02022FF0 + ldr r0, =gBattleTerrain ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 diff --git a/asm/battle_2.s b/asm/battle_2.s index d1119619c0..c96b80b1c9 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -170,7 +170,7 @@ _080368BE: ldr r0, =gUnknown_02022E22 strh r1, [r0] bl sub_80B0BD0 - ldr r2, =gUnknown_02022FF0 + ldr r2, =gBattleTerrain strb r0, [r2] ldr r4, =gBattleTypeFlags ldr r0, [r4] @@ -7852,7 +7852,7 @@ bc_load_battlefield: @ 803AC34 bl GetBankByIdentity ldr r4, =gActiveBank strb r0, [r4] - ldr r0, =gUnknown_02022FF0 + ldr r0, =gBattleTerrain ldrb r1, [r0] movs r0, 0 bl dp01_build_cmdbuf_x2E_a @@ -9207,7 +9207,7 @@ _0803B7DA: ldr r1, =gBattleStruct mov r8, r1 movs r7, 0x6 - ldr r6, =gUnknown_0202421C + ldr r6, =gActionForBanks ldr r2, =gChosenMovesByBanks movs r4, 0xFF movs r3, 0 @@ -9511,7 +9511,7 @@ _0803BAB2: ldrb r0, [r4] cmp r2, r0 bge _0803BAE0 - ldr r7, =gUnknown_0202421C + ldr r7, =gActionForBanks movs r6, 0xFF movs r5, 0 ldr r3, =gChosenMovesByBanks @@ -10049,7 +10049,7 @@ _0803BF68: ands r3, r0 cmp r3, 0 beq _0803BFD0 - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks adds r0, r2, r0 movs r1, 0xD strb r1, [r0] @@ -10092,7 +10092,7 @@ _0803BFD0: cmp r1, 0 beq _0803C00C _0803BFF0: - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks adds r0, r2, r0 strb r3, [r0] ldr r1, =gBattleCommunication @@ -10100,7 +10100,7 @@ _0803BFF0: bl _0803CC72 .pool _0803C00C: - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks ldrb r1, [r0] ldr r0, =gBattleBufferB ldrb r2, [r0, 0x1] @@ -10141,7 +10141,7 @@ _0803C058: ldrb r1, [r0] adds r0, r5, 0 bl RecordedBattle_SetBankAction - ldr r1, =gUnknown_0202421C + ldr r1, =gActionForBanks ldrb r0, [r6] adds r1, r0, r1 lsls r0, 9 @@ -10497,7 +10497,7 @@ _0803C3B0: adds r4, r0, 0 cmp r1, 0x2 bne _0803C3D8 - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks ldrb r0, [r0] cmp r0, 0x2 bne _0803C3D8 @@ -10511,7 +10511,7 @@ _0803C3D8: ldrb r0, [r4] cmp r0, 0x3 bne _0803C410 - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks ldrb r0, [r0, 0x1] cmp r0, 0x2 bne _0803C410 @@ -10664,7 +10664,7 @@ _0803C532: bl _0803CD70 .pool _0803C550: - ldr r4, =gUnknown_0202421C + ldr r4, =gActionForBanks ldrb r0, [r5] bl GetBankIdentity eors r0, r6 @@ -10763,7 +10763,7 @@ _0803C628: ands r0, r1 cmp r0, 0 beq _0803C690 - ldr r4, =gUnknown_0202421C + ldr r4, =gActionForBanks ldr r6, =gActiveBank ldrb r0, [r6] bl GetBankIdentity @@ -10945,7 +10945,7 @@ _0803C7D8: beq _0803C804 b _0803CD04 _0803C804: - ldr r1, =gUnknown_0202421C + ldr r1, =gActionForBanks adds r0, r5, r1 ldrb r0, [r0] adds r2, r1, 0 @@ -11410,7 +11410,7 @@ _0803CC38: lsls r1, 8 orrs r0, r1 str r0, [r2] - ldr r1, =gUnknown_0202421C + ldr r1, =gActionForBanks ldrb r0, [r5] adds r0, r1 movs r1, 0x3 @@ -11515,7 +11515,7 @@ _0803CD1E: cmp r4, r5 bge _0803CD70 _0803CD4A: - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks adds r0, r4, r0 ldrb r0, [r0] cmp r0, 0x2 @@ -12033,7 +12033,7 @@ _0803D198: b _0803D254 .pool _0803D1B8: - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks mov r3, r9 adds r1, r3, r0 ldrb r1, [r1] @@ -12209,7 +12209,7 @@ sub_803D2E8: @ 803D2E8 b _0803D54A _0803D310: ldr r7, =gUnknown_0202407A - ldr r6, =gUnknown_0202421C + ldr r6, =gActionForBanks mov r2, r8 ldr r5, =gTurnOrder _0803D318: @@ -12245,7 +12245,7 @@ _0803D354: ldrb r2, [r2] cmp r3, r2 bcs _0803D3C0 - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x3 @@ -12269,7 +12269,7 @@ _0803D376: b _0803D3BE .pool _0803D3A4: - ldr r1, =gUnknown_0202421C + ldr r1, =gActionForBanks ldrb r0, [r1] ldr r4, =gActiveBank mov r8, r4 @@ -12289,7 +12289,7 @@ _0803D3C0: cmp r3, 0x5 bne _0803D448 ldr r6, =gUnknown_0202407A - ldr r1, =gUnknown_0202421C + ldr r1, =gActionForBanks mov r2, r8 ldrb r0, [r2] adds r0, r1 @@ -12349,7 +12349,7 @@ _0803D448: ldrb r0, [r1] cmp r0, 0 beq _0803D48E - ldr r6, =gUnknown_0202421C + ldr r6, =gActionForBanks mov r2, r8 ldr r5, =gUnknown_0202407A ldr r4, =gTurnOrder @@ -12387,7 +12387,7 @@ _0803D48E: ldrb r0, [r4] cmp r0, 0 beq _0803D4D2 - ldr r6, =gUnknown_0202421C + ldr r6, =gActionForBanks ldr r5, =gUnknown_0202407A ldr r4, =gTurnOrder _0803D4A2: @@ -15097,7 +15097,7 @@ sub_803EE48: @ 803EE48 cmp r1, 0 beq _0803EEE0 adds r4, r2, 0 - ldr r6, =gUnknown_0202421C + ldr r6, =gActionForBanks ldr r5, =gBattleOutcome _0803EE7C: ldrb r0, [r4] @@ -15797,8 +15797,8 @@ _0803F532: .pool thumb_func_end PressurePPLose - thumb_func_start sub_803F548 -sub_803F548: @ 803F548 + thumb_func_start PressurePPLoseOnUsingImprision +PressurePPLoseOnUsingImprision: @ 803F548 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -15946,10 +15946,10 @@ _0803F658: pop {r0} bx r0 .pool - thumb_func_end sub_803F548 + thumb_func_end PressurePPLoseOnUsingImprision - thumb_func_start sub_803F67C -sub_803F67C: @ 803F67C + thumb_func_start PressurePPLoseOnUsingPerishSong +PressurePPLoseOnUsingPerishSong: @ 803F67C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -16078,7 +16078,7 @@ _0803F762: pop {r0} bx r0 .pool - thumb_func_end sub_803F67C + thumb_func_end PressurePPLoseOnUsingPerishSong thumb_func_start sub_803F790 sub_803F790: @ 803F790 diff --git a/asm/battle_4.s b/asm/battle_4.s index 0714a0c22b..096c195b0d 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -5,5423 +5,6 @@ .text - thumb_func_start IsTwoTurnsMove -IsTwoTurnsMove: @ 8052F48 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x91 - beq _08052F72 - cmp r0, 0x27 - beq _08052F72 - cmp r0, 0x4B - beq _08052F72 - cmp r0, 0x97 - beq _08052F72 - cmp r0, 0x9B - beq _08052F72 - cmp r0, 0x1A - bne _08052F7C -_08052F72: - movs r0, 0x1 - b _08052F7E - .pool -_08052F7C: - movs r0, 0 -_08052F7E: - pop {r1} - bx r1 - thumb_func_end IsTwoTurnsMove - - thumb_func_start sub_8052F84 -sub_8052F84: @ 8052F84 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _08052FA2 - cmp r1, 0xD6 - beq _08052FA2 - movs r0, 0x89 - lsls r0, 1 - cmp r1, r0 - beq _08052FA2 - cmp r1, 0x77 - beq _08052FA2 - cmp r1, 0x76 - bne _08052FA6 -_08052FA2: - movs r0, 0x1 - b _08052FA8 -_08052FA6: - movs r0, 0 -_08052FA8: - pop {r1} - bx r1 - thumb_func_end sub_8052F84 - - thumb_func_start AttacksThisTurn -AttacksThisTurn: @ 8052FAC - push {lr} - lsls r1, 16 - lsrs r2, r1, 16 - ldr r1, =gBattleMoves - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x97 - bne _08052FD0 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _08053010 -_08052FD0: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x91 - beq _08052FF2 - cmp r0, 0x27 - beq _08052FF2 - cmp r0, 0x4B - beq _08052FF2 - cmp r0, 0x97 - beq _08052FF2 - cmp r0, 0x9B - beq _08052FF2 - cmp r0, 0x1A - bne _08053010 -_08052FF2: - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 20 - ands r0, r1 - cmp r0, 0 - beq _08053010 - movs r0, 0x1 - b _08053012 - .pool -_08053010: - movs r0, 0x2 -_08053012: - pop {r1} - bx r1 - thumb_func_end AttacksThisTurn - - thumb_func_start atkA9_sleeptalk_choose_move -atkA9_sleeptalk_choose_move: @ 8053018 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - movs r5, 0 - ldr r0, =gBankAttacker - mov r9, r0 - movs r1, 0x58 - mov r8, r1 - ldr r7, =gBattleMons + 0xC - movs r0, 0x84 - lsls r0, 1 - mov r10, r0 -_08053036: - lsls r4, r5, 1 - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4, r0 - adds r0, r7 - ldrh r0, [r0] - bl sub_8052F84 - lsls r0, 24 - cmp r0, 0 - bne _08053076 - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4, r0 - adds r0, r7 - ldrh r1, [r0] - cmp r1, r10 - beq _08053076 - cmp r1, 0xFD - beq _08053076 - adds r0, r1, 0 - bl IsTwoTurnsMove - lsls r0, 24 - cmp r0, 0 - beq _08053084 -_08053076: - ldr r1, =gBitTable - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_08053084: - adds r5, 0x1 - cmp r5, 0x3 - ble _08053036 - ldr r0, =gBankAttacker - ldrb r0, [r0] - adds r1, r6, 0 - movs r2, 0xFD - bl CheckMoveLimitations - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bne _080530B8 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0805311C - .pool -_080530B8: - movs r7, 0x3 - ldr r4, =gBitTable -_080530BC: - bl Random - adds r5, r7, 0 - ands r5, r0 - lsls r0, r5, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r6 - cmp r0, 0 - bne _080530BC - ldr r4, =gRandomMove - ldr r2, =gBattleMons - lsls r1, r5, 1 - ldr r0, =gBankAttacker - ldrb r3, [r0] - movs r0, 0x58 - muls r0, r3 - adds r1, r0 - adds r2, 0xC - adds r1, r2 - ldrh r0, [r1] - strh r0, [r4] - ldr r0, =gCurrMovePos - strb r5, [r0] - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, =gBankTarget - strb r0, [r1] - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0805311C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkA9_sleeptalk_choose_move - - thumb_func_start atkAA_set_destinybond -atkAA_set_destinybond: @ 8053150 - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - orrs r0, r1 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atkAA_set_destinybond - - thumb_func_start DestinyBondFlagUpdate -DestinyBondFlagUpdate: @ 8053180 - push {r4,r5,lr} - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _080531CA - cmp r5, r3 - beq _080531CA - ldr r2, =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _080531CA - movs r0, 0x40 - orrs r1, r0 - str r1, [r2] -_080531CA: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DestinyBondFlagUpdate - - thumb_func_start atkAB_DestinyBondFlagUpdate -atkAB_DestinyBondFlagUpdate: @ 80531E0 - push {lr} - bl DestinyBondFlagUpdate - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkAB_DestinyBondFlagUpdate - - thumb_func_start atkAC_remaininghptopower -atkAC_remaininghptopower: @ 80531F8 - push {lr} - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - movs r2, 0x28 - ldrsh r0, [r1, r2] - movs r2, 0x2C - ldrsh r1, [r1, r2] - movs r2, 0x30 - bl sub_8075034 - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0 - ldr r0, =gUnknown_0831C408 - ldrb r2, [r0] - cmp r1, r2 - ble _08053232 - adds r2, r0, 0 -_08053224: - adds r3, 0x2 - cmp r3, 0xB - bgt _08053232 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r1, r0 - bgt _08053224 -_08053232: - ldr r2, =gDynamicBasePower - ldr r1, =gUnknown_0831C408 - adds r0, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkAC_remaininghptopower - - thumb_func_start atkAD_spite_ppreduce -atkAD_spite_ppreduce: @ 8053260 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, =gLastUsedMovesByBanks - ldr r1, =gBankTarget - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r4 - ldrh r2, [r0] - mov r8, r1 - cmp r2, 0 - bne _08053280 - b _08053408 -_08053280: - ldr r0, =0x0000ffff - cmp r2, r0 - bne _08053288 - b _08053408 -_08053288: - movs r7, 0 - ldr r0, =gBattleMons - movs r1, 0x58 - muls r1, r3 - adds r3, r0, 0 - adds r3, 0xC - adds r1, r3 - ldrh r1, [r1] - cmp r2, r1 - beq _080532C0 - adds r6, r4, 0 - mov r5, r8 - adds r4, r3, 0 - movs r3, 0x58 -_080532A4: - adds r7, 0x1 - cmp r7, 0x3 - bgt _080532C0 - ldrb r0, [r5] - lsls r2, r0, 1 - adds r2, r6 - lsls r1, r7, 1 - muls r0, r3 - adds r1, r0 - adds r1, r4 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _080532A4 -_080532C0: - cmp r7, 0x4 - bne _080532C6 - b _08053408 -_080532C6: - mov r4, r8 - ldrb r0, [r4] - movs r1, 0x58 - mov r9, r1 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7, r0 - ldr r1, =gBattleMons - adds r1, 0x24 - mov r10, r1 - add r0, r10 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _080532E6 - b _08053408 -_080532E6: - bl Random - movs r1, 0x3 - ands r1, r0 - adds r6, r1, 0x2 - ldrb r0, [r4] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7, r0 - add r0, r10 - ldrb r0, [r0] - cmp r0, r6 - bge _08053304 - adds r6, r0, 0 -_08053304: - ldr r1, =gBattleTextBuff1 - movs r5, 0xFD - strb r5, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r2, =gLastUsedMovesByBanks - mov r3, r8 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r4, =gBattleTextBuff2 - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - strb r5, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - strb r6, [r4, 0x4] - subs r0, 0x2 - strb r0, [r4, 0x5] - mov r1, r8 - ldrb r0, [r1] - mov r1, r9 - muls r1, r0 - adds r1, r7, r1 - add r1, r10 - ldrb r0, [r1] - subs r0, r6 - strb r0, [r1] - ldr r4, =gActiveBank - mov r3, r8 - ldrb r0, [r3] - strb r0, [r4] - ldr r1, =gDisableStructs - ldrb r3, [r4] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r7, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080533B8 - mov r2, r9 - muls r2, r3 - ldr r0, =gBattleMons - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080533B8 - adds r1, r7, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - mov r3, r10 - adds r0, r2, r3 - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution -_080533B8: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, =gBattleMons - ldr r0, =gBankTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r7, r0 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08053422 - adds r0, r2, 0 - bl CancelMultiTurnMoves - b _08053422 - .pool -_08053408: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08053422: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkAD_spite_ppreduce - - thumb_func_start atkAE_heal_party_status -atkAE_heal_party_status: @ 8053438 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r4, 0 - str r4, [sp, 0x4] - mov r8, r4 - ldr r0, =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xD7 - beq _08053454 - b _0805363E -_08053454: - ldr r6, =gBattleCommunication - mov r0, r8 - strb r0, [r6, 0x5] - ldr r5, =gBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - mov r10, r1 - cmp r0, 0 - bne _08053470 - ldr r2, =gPlayerParty - mov r10, r2 -_08053470: - ldr r4, =gBattleMons - ldrb r3, [r5] - movs r7, 0x58 - adds r2, r3, 0 - muls r2, r7 - adds r0, r2, r4 - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0x2B - beq _080534C4 - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - mov r1, r8 - str r1, [r0] - ldrb r0, [r5] - adds r2, r0, 0 - muls r2, r7 - adds r0, r4, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, =0xf7ffffff - ands r0, r1 - str r0, [r2] - b _080534D4 - .pool -_080534C4: - ldrb r1, [r1] - adds r0, r3, 0 - bl RecordAbilityBattle - ldrb r0, [r6, 0x5] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r6, 0x5] -_080534D4: - ldr r7, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - movs r2, 0x2 - mov r9, r2 - mov r1, r9 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r1, =gBattleScripting - strb r0, [r1, 0x17] - strb r0, [r7] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805357A - ldr r0, =gAbsentBankFlags - ldrb r2, [r0] - ldr r1, =gBitTable - ldrb r3, [r7] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _0805357A - ldr r5, =gBattleMons - movs r6, 0x58 - adds r4, r3, 0 - muls r4, r6 - adds r0, r4, r5 - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0x2B - beq _08053568 - adds r0, r5, 0 - adds r0, 0x4C - adds r0, r4, r0 - str r2, [r0] - ldrb r0, [r7] - adds r2, r0, 0 - muls r2, r6 - adds r0, r5, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, =0xf7ffffff - ands r0, r1 - str r0, [r2] - b _0805357A - .pool -_08053568: - ldrb r1, [r1] - adds r0, r3, 0 - bl RecordAbilityBattle - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x5] - mov r2, r9 - orrs r0, r2 - strb r0, [r1, 0x5] -_0805357A: - movs r6, 0 - ldr r7, =gBattleMons -_0805357E: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - add r4, r10 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - lsls r0, 24 - lsrs r4, r0, 24 - cmp r5, 0 - beq _08053636 - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _08053636 - ldr r2, =gBattlePartyID - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r6 - bne _080535D0 - movs r0, 0x58 - muls r0, r1 - b _08053600 - .pool -_080535D0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08053618 - ldr r0, =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r6 - bne _08053618 - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08053618 - movs r0, 0x58 - muls r0, r3 -_08053600: - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - b _08053624 - .pool -_08053618: - adds r0, r5, 0 - adds r1, r4, 0 - bl GetAbilityBySpecies - lsls r0, 24 - lsrs r0, 24 -_08053624: - cmp r0, 0x2B - beq _08053636 - movs r0, 0x1 - lsls r0, r6 - mov r1, r8 - orrs r1, r0 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 -_08053636: - adds r6, 0x1 - cmp r6, 0x5 - ble _0805357E - b _080536BC -_0805363E: - ldr r1, =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - movs r2, 0x3F - mov r8, r2 - ldr r3, =gBattleMons - ldr r2, =gBankAttacker - ldrb r0, [r2] - movs r5, 0x58 - muls r0, r5 - movs r1, 0x4C - adds r1, r3 - mov r9, r1 - add r0, r9 - str r4, [r0] - ldrb r0, [r2] - adds r1, r0, 0 - muls r1, r5 - adds r7, r3, 0 - adds r7, 0x50 - adds r1, r7 - ldr r0, [r1] - ldr r6, =0xf7ffffff - ands r0, r6 - str r0, [r1] - ldrb r0, [r2] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080536BC - ldr r0, =gAbsentBankFlags - ldrb r2, [r0] - ldr r1, =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _080536BC - adds r0, r3, 0 - muls r0, r5 - add r0, r9 - str r2, [r0] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r7 - ldr r0, [r1] - ands r0, r6 - str r0, [r1] -_080536BC: - mov r2, r8 - cmp r2, 0 - beq _080536DE - ldr r4, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - add r0, sp, 0x4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution -_080536DE: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkAE_heal_party_status - - thumb_func_start atkAF_cursetarget -atkAF_cursetarget: @ 805371C - push {r4,r5,lr} - ldr r5, =gBattleMons - ldr r0, =gBankTarget - ldrb r0, [r0] - movs r4, 0x58 - adds r1, r0, 0 - muls r1, r4 - adds r0, r5, 0 - adds r0, 0x50 - adds r1, r0 - ldr r2, [r1] - movs r3, 0x80 - lsls r3, 21 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _08053768 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0805378C - .pool -_08053768: - orrs r2, r3 - str r2, [r1] - ldr r1, =gBattleMoveDamage - ldr r0, =gBankAttacker - ldrb r0, [r0] - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _08053784 - movs r0, 0x1 - str r0, [r1] -_08053784: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0805378C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atkAF_cursetarget - - thumb_func_start atkB0_set_spikes -atkB0_set_spikes: @ 80537A0 - push {r4,lr} - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSideTimers - lsls r2, r0, 1 - adds r0, r2, r0 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0xA] - cmp r0, 0x3 - bne _08053804 - ldr r2, =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0805381E - .pool -_08053804: - ldr r1, =gSideAffecting - adds r1, r2, r1 - ldrh r2, [r1] - movs r0, 0x10 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r3, 0xA] - adds r0, 0x1 - strb r0, [r3, 0xA] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0805381E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkB0_set_spikes - - thumb_func_start atkB1_set_foresight -atkB1_set_foresight: @ 805382C - ldr r1, =gBattleMons - ldr r0, =gBankTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 22 - orrs r0, r1 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atkB1_set_foresight - - thumb_func_start atkB2_setperishsong -atkB2_setperishsong: @ 805385C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r3, 0 - ldr r0, =gNoOfAllBanks - adds r7, r0, 0 - ldr r0, =gBankAttacker - mov r8, r0 - ldrb r1, [r7] - cmp r6, r1 - bge _080538C8 - movs r5, 0x20 - ldr r0, =gBattleMons - mov r12, r0 - ldr r0, =gDisableStructs - adds r4, r0, 0 - adds r4, 0xF - ldr r2, =gStatuses3 -_08053884: - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r5 - cmp r0, 0 - bne _0805389C - movs r0, 0x58 - muls r0, r3 - add r0, r12 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - bne _080538B4 -_0805389C: - adds r6, 0x1 - b _080538BC - .pool -_080538B4: - orrs r1, r5 - str r1, [r2] - movs r0, 0x33 - strb r0, [r4] -_080538BC: - adds r4, 0x1C - adds r2, 0x4 - adds r3, 0x1 - ldrb r0, [r7] - cmp r3, r0 - blt _08053884 -_080538C8: - mov r1, r8 - ldrb r0, [r1] - bl sub_803F67C - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bne _080538FC - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08053904 - .pool -_080538FC: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08053904: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkB2_setperishsong - - thumb_func_start atkB3_rolloutdamagecalculation -atkB3_rolloutdamagecalculation: @ 8053914 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08053948 - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl CancelMultiTurnMoves - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D8A60 - str r0, [r1] - b _08053A60 - .pool -_08053948: - ldr r2, =gBattleMons - ldr r1, =gBankAttacker - ldrb r3, [r1] - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r4, r2, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r7, 0x80 - lsls r7, 5 - ands r0, r7 - adds r6, r1, 0 - mov r9, r2 - ldr r1, =gDisableStructs - mov r12, r1 - ldr r2, =gCurrentMove - mov r8, r2 - cmp r0, 0 - bne _080539BA - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x11] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - movs r2, 0x5 - orrs r1, r2 - strb r1, [r0, 0x11] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x11] - movs r1, 0xF - ands r1, r2 - movs r2, 0x50 - orrs r1, r2 - strb r1, [r0, 0x11] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - orrs r0, r7 - str r0, [r1] - ldr r1, =gLockedMoves - ldrb r0, [r6] - lsls r0, 1 - adds r0, r1 - mov r2, r8 - ldrh r1, [r2] - strh r1, [r0] -_080539BA: - ldrb r0, [r6] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - add r2, r12 - ldrb r3, [r2, 0x11] - lsls r1, r3, 28 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x11] - cmp r1, 0 - bne _080539EE - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - ldr r2, =0xffffefff - ands r0, r2 - str r0, [r1] -_080539EE: - ldr r3, =gDynamicBasePower - ldr r2, =gBattleMoves - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r3] - movs r2, 0x1 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, r12 - adds r4, r0, r1 - ldrb r0, [r4, 0x11] - lsls r0, 28 - lsrs r0, 28 - movs r1, 0x5 - subs r1, r0 - ldr r7, =gBattlescriptCurrInstr - adds r5, r3, 0 - cmp r2, r1 - bge _08053A3C - adds r1, r5, 0 - adds r3, r4, 0 - movs r4, 0x5 -_08053A28: - ldrh r0, [r1] - lsls r0, 1 - strh r0, [r1] - adds r2, 0x1 - ldrb r0, [r3, 0x11] - lsls r0, 28 - lsrs r0, 28 - subs r0, r4, r0 - cmp r2, r0 - blt _08053A28 -_08053A3C: - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - mov r1, r9 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 23 - ands r0, r1 - cmp r0, 0 - beq _08053A5A - ldrh r0, [r5] - lsls r0, 1 - strh r0, [r5] -_08053A5A: - ldr r0, [r7] - adds r0, 0x1 - str r0, [r7] -_08053A60: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkB3_rolloutdamagecalculation - - thumb_func_start atkB4_jumpifconfusedandstatmaxed -atkB4_jumpifconfusedandstatmaxed: @ 8053A90 - push {r4,r5,lr} - ldr r5, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r5, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - ldr r4, =gBattlescriptCurrInstr - cmp r0, 0 - beq _08053AEC - ldr r2, [r4] - ldrb r0, [r2, 0x1] - adds r0, r3 - adds r1, r5, 0 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xC - bne _08053AEC - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08053AF2 - .pool -_08053AEC: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_08053AF2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end atkB4_jumpifconfusedandstatmaxed - - thumb_func_start atkB5_furycuttercalc -atkB5_furycuttercalc: @ 8053AF8 - push {r4,r5,lr} - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08053B34 - ldr r2, =gDisableStructs - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x10] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D8A60 - str r0, [r1] - b _08053B8C - .pool -_08053B34: - ldr r5, =gDisableStructs - ldr r4, =gBankAttacker - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x10] - cmp r0, 0x5 - beq _08053B4C - adds r0, 0x1 - strb r0, [r1, 0x10] -_08053B4C: - ldr r3, =gDynamicBasePower - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r3] - movs r2, 0x1 - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, =gBattlescriptCurrInstr - ldrb r1, [r0, 0x10] - cmp r2, r1 - bge _08053B86 - adds r1, r3, 0 - adds r3, r0, 0 -_08053B78: - ldrh r0, [r1] - lsls r0, 1 - strh r0, [r1] - adds r2, 0x1 - ldrb r0, [r3, 0x10] - cmp r2, r0 - blt _08053B78 -_08053B86: - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] -_08053B8C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atkB5_furycuttercalc - - thumb_func_start atkB6_happinesstodamagecalculation -atkB6_happinesstodamagecalculation: @ 8053BAC - push {r4,lr} - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x79 - bne _08053BEC - ldr r4, =gDynamicBasePower - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2B - ldrb r1, [r0] - b _08053C02 - .pool -_08053BEC: - ldr r4, =gDynamicBasePower - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2B - ldrb r0, [r0] - movs r1, 0xFF - subs r1, r0 -_08053C02: - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - movs r1, 0x19 - bl __divsi3 - strh r0, [r4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkB6_happinesstodamagecalculation - - thumb_func_start atkB7_presentdamagecalculation -atkB7_presentdamagecalculation: @ 8053C30 - push {r4,lr} - bl Random - movs r4, 0xFF - ands r4, r0 - cmp r4, 0x65 - bgt _08053C4C - ldr r1, =gDynamicBasePower - movs r0, 0x28 - strh r0, [r1] - b _08053C8E - .pool -_08053C4C: - cmp r4, 0xB1 - bgt _08053C5C - ldr r1, =gDynamicBasePower - movs r0, 0x50 - strh r0, [r1] - b _08053C8E - .pool -_08053C5C: - cmp r4, 0xCB - bgt _08053C6C - ldr r1, =gDynamicBasePower - movs r0, 0x78 - strh r0, [r1] - b _08053C8E - .pool -_08053C6C: - ldr r3, =gBattleMoveDamage - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r0, 2 - str r0, [r3] - cmp r0, 0 - bne _08053C88 - movs r0, 0x1 - str r0, [r3] -_08053C88: - ldr r0, [r3] - negs r0, r0 - str r0, [r3] -_08053C8E: - cmp r4, 0xCB - bgt _08053CAC - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D8A30 - b _08053CE6 - .pool -_08053CAC: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x2C] - ldrh r0, [r0, 0x28] - cmp r1, r0 - bne _08053CD8 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D9EFB - b _08053CE6 - .pool -_08053CD8: - ldr r2, =gBattleMoveFlags - ldrb r1, [r2] - movs r0, 0xF7 - ands r0, r1 - strb r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082D9EE1 -_08053CE6: - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkB7_presentdamagecalculation - - thumb_func_start atkB8_set_safeguard -atkB8_set_safeguard: @ 8053CFC - push {r4-r7,lr} - ldr r7, =gBankAttacker - ldrb r0, [r7] - bl GetBankIdentity - ldr r4, =gSideAffecting - movs r6, 0x1 - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r1, [r1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08053D40 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - b _08053D88 - .pool -_08053D40: - ldrb r0, [r7] - bl GetBankIdentity - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r1] - movs r2, 0x20 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r7] - bl GetBankIdentity - ldr r5, =gSideTimers - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r4, 0x5 - strb r4, [r0, 0x6] - ldrb r0, [r7] - bl GetBankIdentity - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r7] - strb r1, [r0, 0x7] - ldr r0, =gBattleCommunication - strb r4, [r0, 0x5] -_08053D88: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkB8_set_safeguard - - thumb_func_start atkB9_magnitudedamagecalculation -atkB9_magnitudedamagecalculation: @ 8053DA4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bgt _08053DD0 - ldr r1, =gDynamicBasePower - movs r0, 0xA - strh r0, [r1] - movs r3, 0x4 - b _08053E3C - .pool -_08053DD0: - cmp r3, 0xE - bgt _08053DE4 - ldr r1, =gDynamicBasePower - movs r0, 0x1E - strh r0, [r1] - movs r3, 0x5 - b _08053E3C - .pool -_08053DE4: - cmp r3, 0x22 - bgt _08053DF8 - ldr r1, =gDynamicBasePower - movs r0, 0x32 - strh r0, [r1] - movs r3, 0x6 - b _08053E3C - .pool -_08053DF8: - cmp r3, 0x40 - bgt _08053E0C - ldr r1, =gDynamicBasePower - movs r0, 0x46 - strh r0, [r1] - movs r3, 0x7 - b _08053E3C - .pool -_08053E0C: - cmp r3, 0x54 - bgt _08053E20 - ldr r1, =gDynamicBasePower - movs r0, 0x5A - strh r0, [r1] - movs r3, 0x8 - b _08053E3C - .pool -_08053E20: - cmp r3, 0x5E - bgt _08053E34 - ldr r1, =gDynamicBasePower - movs r0, 0x6E - strh r0, [r1] - movs r3, 0x9 - b _08053E3C - .pool -_08053E34: - ldr r1, =gDynamicBasePower - movs r0, 0x96 - strh r0, [r1] - movs r3, 0xA -_08053E3C: - ldr r1, =gBattleTextBuff1 - movs r2, 0 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r0, [r1, 0x2] - movs r0, 0x2 - strb r0, [r1, 0x3] - strb r3, [r1, 0x4] - movs r0, 0xFF - strb r0, [r1, 0x5] - ldr r1, =gBankTarget - strb r2, [r1] - ldr r0, =gNoOfAllBanks - ldrb r3, [r0] - adds r6, r1, 0 - ldr r0, =gBattlescriptCurrInstr - mov r8, r0 - cmp r2, r3 - bcs _08053E94 - adds r4, r6, 0 - ldr r0, =gBankAttacker - ldrb r5, [r0] - ldr r1, =gBitTable - mov r12, r1 - ldr r7, =gAbsentBankFlags -_08053E72: - ldrb r2, [r4] - cmp r2, r5 - beq _08053E88 - ldrb r0, [r7] - ldrb r1, [r6] - lsls r1, 2 - add r1, r12 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _08053E94 -_08053E88: - adds r0, r2, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r3 - bcc _08053E72 -_08053E94: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkB9_magnitudedamagecalculation - - thumb_func_start atkBA_jumpifnopursuitswitchdmg -atkBA_jumpifnopursuitswitchdmg: @ 8053EC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gMultiHitCounter - ldrb r0, [r0] - cmp r0, 0x1 - bne _08053EF8 - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08053EF4 - movs r0, 0x1 - b _08053F12 - .pool -_08053EF4: - movs r0, 0 - b _08053F12 -_08053EF8: - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08053F10 - movs r0, 0x3 - b _08053F12 - .pool -_08053F10: - movs r0, 0x2 -_08053F12: - bl GetBankByIdentity - ldr r1, =gBankTarget - strb r0, [r1] - ldr r0, =gUnknown_0202421C - ldr r1, =gBankTarget - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _08053F2A - b _08054030 -_08053F2A: - ldr r5, =gBankAttacker - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, r3, r1 - ldrb r2, [r5] - ldrb r1, [r1, 0xC] - cmp r2, r1 - bne _08054030 - ldr r4, =gBattleMons - movs r2, 0x58 - adds r0, r3, 0 - muls r0, r2 - adds r1, r4, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x27 - ands r0, r1 - cmp r0, 0 - bne _08054030 - ldrb r0, [r5] - muls r0, r2 - adds r0, r4 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08054030 - ldr r0, =gDisableStructs - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _08054030 - ldr r0, =gChosenMovesByBanks - lsls r1, r3, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0xE4 - bne _08054030 - movs r1, 0 - ldr r0, =gNoOfAllBanks - ldr r2, =gCurrentMove - mov r8, r2 - ldr r7, =gCurrMovePos - mov r10, r7 - ldr r2, =gUnknown_020241E9 - mov r9, r2 - ldr r7, =gHitMarker - mov r12, r7 - ldrb r2, [r0] - cmp r1, r2 - bge _08053FB6 - ldr r6, =gTurnOrder - ldr r5, =gBankTarget - ldr r4, =gUnknown_0202407A - movs r3, 0xB - adds r2, r0, 0 -_08053FA0: - adds r0, r1, r6 - ldrb r0, [r0] - ldrb r7, [r5] - cmp r0, r7 - bne _08053FAE - adds r0, r1, r4 - strb r3, [r0] -_08053FAE: - adds r1, 0x1 - ldrb r0, [r2] - cmp r1, r0 - blt _08053FA0 -_08053FB6: - movs r0, 0xE4 - mov r1, r8 - strh r0, [r1] - ldr r2, =gBankTarget - ldrb r0, [r2] - ldr r7, =gBattleStruct - ldr r1, [r7] - adds r0, r1 - adds r0, 0x80 - ldrb r0, [r0] - mov r1, r9 - strb r0, [r1] - mov r2, r10 - strb r0, [r2] - ldr r7, =gBattlescriptCurrInstr - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - movs r0, 0x1 - ldr r1, =gBattleScripting - strb r0, [r1, 0x18] - mov r2, r12 - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - b _0805404A - .pool -_08054030: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0805404A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkBA_jumpifnopursuitswitchdmg - - thumb_func_start atkBB_setsunny -atkBB_setsunny: @ 805405C - push {lr} - ldr r2, =gBattleWeather - ldrh r1, [r2] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08054088 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0805409A - .pool -_08054088: - movs r0, 0x20 - strh r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r0, =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_0805409A: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkBB_setsunny - - thumb_func_start atkBC_maxattackhalvehp -atkBC_maxattackhalvehp: @ 80540B4 - push {r4,r5,lr} - ldr r5, =gBattleMons - ldr r4, =gBankAttacker - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r2, r0, r5 - ldrh r0, [r2, 0x2C] - lsrs r1, r0, 1 - cmp r1, 0 - bne _080540CC - movs r1, 0x1 -_080540CC: - movs r0, 0x19 - ldrsb r0, [r2, r0] - cmp r0, 0xB - bgt _08054110 - ldrh r0, [r2, 0x28] - cmp r0, r1 - bls _08054110 - movs r0, 0xC - strb r0, [r2, 0x19] - ldr r1, =gBattleMoveDamage - ldrb r0, [r4] - muls r0, r3 - adds r0, r5 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _080540F4 - movs r0, 0x1 - str r0, [r1] -_080540F4: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0805412A - .pool -_08054110: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0805412A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atkBC_maxattackhalvehp - - thumb_func_start atkBD_copyfoestats -atkBD_copyfoestats: @ 8054134 - push {r4-r7,lr} - movs r2, 0 - ldr r7, =gBattlescriptCurrInstr - ldr r6, =gBankAttacker - movs r4, 0x58 - ldr r3, =gBattleMons + 0x18 - ldr r5, =gBankTarget -_08054142: - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r4 - adds r1, r2, r1 - adds r1, r3 - ldrb r0, [r5] - muls r0, r4 - adds r0, r2, r0 - adds r0, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _08054142 - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkBD_copyfoestats - - thumb_func_start atkBE_breakfree -atkBE_breakfree: @ 805417C - push {r4-r6,lr} - ldr r1, =gBattleMons - ldr r5, =gBankAttacker - ldrb r2, [r5] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - adds r4, r1, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xE0 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _08054210 - ldr r1, =gBattleScripting - ldr r3, =gBankTarget - ldrb r0, [r3] - strb r0, [r1, 0x17] - ldrb r0, [r5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r4 - ldr r0, [r1] - ldr r2, =0xffff1fff - ands r0, r2 - str r0, [r1] - ldrb r0, [r5] - ldr r1, =gBattleStruct - ldr r2, [r1] - adds r0, r2 - ldrb r0, [r0, 0x14] - strb r0, [r3] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r5] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r1, 0x2] - ldrb r0, [r5] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - bl BattleScriptPushCursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAFC5 - b _080542BA - .pool -_08054210: - ldr r4, =gStatuses3 - lsls r0, r2, 2 - adds r3, r0, r4 - ldr r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08054250 - movs r0, 0x5 - negs r0, r0 - ands r1, r0 - str r1, [r3] - ldrb r1, [r5] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x4 - negs r2, r2 - ands r0, r2 - str r0, [r1] - bl BattleScriptPushCursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAFD6 - b _080542BA - .pool -_08054250: - adds r0, r2, 0 - bl GetBankSide - ldr r4, =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080542B4 - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r2, [r0] - ldr r1, =0x0000ffef - ands r1, r2 - movs r4, 0 - strh r1, [r0] - ldrb r0, [r5] - bl GetBankSide - ldr r2, =gSideTimers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - strb r4, [r1, 0xA] - bl BattleScriptPushCursor - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAFDD - b _080542BA - .pool -_080542B4: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_080542BA: - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkBE_breakfree - - thumb_func_start atkBF_set_defense_curl -atkBF_set_defense_curl: @ 80542C8 - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 23 - orrs r0, r1 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atkBF_set_defense_curl - - thumb_func_start atkC0_recoverbasedonsunlight -atkC0_recoverbasedonsunlight: @ 80542F8 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =gBankTarget - ldr r5, =gBankAttacker - ldrb r0, [r5] - strb r0, [r1] - ldr r7, =gBattleMons - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - adds r0, r7 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - beq _080543D8 - ldr r4, =gBattleWeather - ldrh r0, [r4] - cmp r0, 0 - beq _0805434A - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0805434A - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08054378 -_0805434A: - ldr r3, =gBattleMoveDamage - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r3] - adds r1, r3, 0 - b _080543B2 - .pool -_08054378: - ldrh r1, [r4] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _080543A4 - ldr r4, =gBattleMoveDamage - ldrb r0, [r5] - muls r0, r6 - adds r0, r7 - ldrh r1, [r0, 0x2C] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0x1E - bl __divsi3 - str r0, [r4] - adds r1, r4, 0 - b _080543B2 - .pool -_080543A4: - ldr r1, =gBattleMoveDamage - ldrb r0, [r5] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0, 0x2C] - lsrs r0, 2 - str r0, [r1] -_080543B2: - adds r2, r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _080543BE - movs r0, 0x1 - str r0, [r2] -_080543BE: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080543F2 - .pool -_080543D8: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080543F2: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkC0_recoverbasedonsunlight - - thumb_func_start atkC1_hidden_power -atkC1_hidden_power: @ 8054400 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r4, r2 - ldrb r0, [r4, 0x14] - mov r10, r0 - mov r7, r10 - lsls r7, 27 - adds r0, r7, 0 - lsrs r0, 27 - mov r10, r0 - movs r1, 0x2 - mov r2, r10 - ands r2, r1 - asrs r2, 1 - ldrh r7, [r4, 0x14] - mov r9, r7 - mov r0, r9 - lsls r0, 22 - mov r9, r0 - lsrs r3, r0, 27 - adds r0, r1, 0 - ands r0, r3 - orrs r2, r0 - ldrb r7, [r4, 0x15] - mov r8, r7 - mov r0, r8 - lsls r0, 25 - mov r8, r0 - lsrs r3, r0, 27 - adds r0, r1, 0 - ands r0, r3 - lsls r0, 1 - orrs r2, r0 - ldr r6, [r4, 0x14] - lsls r6, 12 - lsrs r3, r6, 27 - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrh r5, [r4, 0x16] - lsls r5, 23 - lsrs r3, r5, 27 - adds r0, r1, 0 - ands r0, r3 - lsls r0, 3 - orrs r2, r0 - ldrb r3, [r4, 0x17] - lsls r3, 26 - lsrs r0, r3, 27 - ands r1, r0 - lsls r1, 4 - orrs r2, r1 - movs r1, 0x1 - adds r4, r1, 0 - mov r7, r10 - ands r4, r7 - mov r0, r9 - lsrs r0, 27 - mov r9, r0 - adds r0, r1, 0 - mov r7, r9 - ands r0, r7 - lsls r0, 1 - orrs r4, r0 - mov r0, r8 - lsrs r0, 27 - mov r8, r0 - adds r0, r1, 0 - mov r7, r8 - ands r0, r7 - lsls r0, 2 - orrs r4, r0 - lsrs r6, 27 - adds r0, r1, 0 - ands r0, r6 - lsls r0, 3 - orrs r4, r0 - lsrs r5, 27 - adds r0, r1, 0 - ands r0, r5 - lsls r0, 4 - orrs r4, r0 - lsrs r3, 27 - ands r1, r3 - lsls r1, 5 - orrs r4, r1 - ldr r5, =gDynamicBasePower - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - movs r1, 0x3F - bl __divsi3 - adds r0, 0x1E - strh r0, [r5] - ldr r6, =gBattleStruct - ldr r5, [r6] - lsls r0, r4, 4 - subs r0, r4 - movs r1, 0x3F - bl __divsi3 - adds r0, 0x1 - strb r0, [r5, 0x13] - ldr r1, [r6] - ldrb r0, [r1, 0x13] - cmp r0, 0x8 - bls _080544F0 - adds r0, 0x1 - strb r0, [r1, 0x13] -_080544F0: - ldr r2, [r6] - ldrb r0, [r2, 0x13] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r2, 0x13] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkC1_hidden_power - - thumb_func_start atkC2_selectnexttarget -atkC2_selectnexttarget: @ 8054524 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gBankTarget - movs r1, 0 - strb r1, [r0] - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - adds r6, r0, 0 - ldr r0, =gBattlescriptCurrInstr - mov r8, r0 - cmp r1, 0 - beq _0805456E - adds r3, r6, 0 - ldr r0, =gBankAttacker - ldrb r5, [r0] - ldr r0, =gBitTable - mov r12, r0 - adds r4, r1, 0 - ldr r7, =gAbsentBankFlags -_0805454C: - ldrb r2, [r3] - cmp r2, r5 - beq _08054562 - ldrb r0, [r7] - ldrb r1, [r6] - lsls r1, 2 - add r1, r12 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _0805456E -_08054562: - adds r0, r2, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcc _0805454C -_0805456E: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkC2_selectnexttarget - - thumb_func_start atkC3_setfutureattack -atkC3_setfutureattack: @ 8054598 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, =gWishFutureKnock - mov r8, r0 - ldr r6, =gBankTarget - ldrb r1, [r6] - adds r0, r1, r0 - ldrb r7, [r0] - cmp r7, 0 - beq _080545DC - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080546CC - .pool -_080545DC: - adds r0, r1, 0 - bl GetBankIdentity - ldr r4, =gSideAffecting - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - mov r10, r1 - ands r0, r1 - lsls r0, 1 - adds r0, r4 - ldrh r2, [r0] - movs r1, 0x40 - movs r5, 0 - mov r3, sp - strh r5, [r3, 0x10] - orrs r1, r2 - strh r1, [r0] - ldrb r0, [r6] - lsls r0, 1 - mov r1, r8 - adds r1, 0x18 - adds r0, r1 - ldr r1, =gCurrentMove - mov r9, r1 - ldrh r1, [r1] - strh r1, [r0] - mov r0, r8 - adds r0, 0x4 - ldrb r2, [r6] - adds r0, r2 - ldr r5, =gBankAttacker - ldrb r1, [r5] - strb r1, [r0] - ldrb r0, [r6] - add r0, r8 - movs r1, 0x3 - strb r1, [r0] - ldrb r0, [r6] - bl GetBankIdentity - mov r1, r10 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldrb r0, [r5] - movs r4, 0x58 - muls r0, r4 - ldr r2, =gBattleMons - adds r0, r2 - ldrb r1, [r6] - muls r1, r4 - adds r1, r2 - mov r4, r9 - ldrh r2, [r4] - str r7, [sp] - str r7, [sp, 0x4] - ldrb r4, [r5] - str r4, [sp, 0x8] - ldrb r4, [r6] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldrb r1, [r6] - lsls r1, 2 - mov r2, r8 - adds r2, 0x8 - adds r1, r2 - str r0, [r1] - ldr r1, =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _0805468C - ldrb r4, [r6] - lsls r4, 2 - adds r4, r2 - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0805468C: - mov r5, r9 - ldrh r1, [r5] - ldr r0, =0x00000161 - cmp r1, r0 - bne _080546BC - ldr r0, =gBattleCommunication - mov r1, r10 - strb r1, [r0, 0x5] - b _080546C4 - .pool -_080546BC: - ldr r0, =gBattleCommunication - mov r2, sp - ldrb r2, [r2, 0x10] - strb r2, [r0, 0x5] -_080546C4: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080546CC: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkC3_setfutureattack - - thumb_func_start atkC4_beat_up -atkC4_beat_up: @ 80546E4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r7, =gEnemyParty - cmp r0, 0 - bne _080546FE - ldr r7, =gPlayerParty -_080546FE: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08054740 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - b _080548DC - .pool -_08054740: - ldr r6, =gBattleCommunication - ldrb r0, [r6] - mov r8, r0 - cmp r0, 0x5 - bls _0805474C - b _080548A8 -_0805474C: - adds r4, r6, 0 - movs r5, 0x64 -_08054750: - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08054794 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08054794 - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08054794 - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x37 - bl GetMonData - cmp r0, 0 - beq _080547A4 -_08054794: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r6, r4, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _08054750 -_080547A4: - ldr r1, =gBattleCommunication - mov r9, r1 - ldrb r2, [r1] - cmp r2, 0x5 - bhi _080548A8 - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r6, =gBankAttacker - ldrb r0, [r6] - strb r0, [r1, 0x2] - strb r2, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x9 - str r0, [r1] - ldr r2, =gBattleMoveDamage - mov r8, r2 - ldr r5, =gBaseStats - mov r1, r9 - ldrb r0, [r1] - movs r4, 0x64 - muls r0, r4 - adds r0, r7, r0 - movs r1, 0xB - bl GetMonData - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r3, [r1, 0x1] - mov r2, r8 - str r3, [r2] - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - muls r0, r3 - mov r1, r8 - str r0, [r1] - mov r2, r9 - ldrb r0, [r2] - muls r0, r4 - adds r0, r7, r0 - movs r1, 0x38 - bl GetMonData - lsls r0, 1 - movs r1, 0x5 - bl __udivsi3 - adds r0, 0x2 - mov r2, r8 - ldr r1, [r2] - muls r0, r1 - str r0, [r2] - ldr r3, =gBattleMons - ldr r1, =gBankTarget - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r1, r3 - ldrh r2, [r1] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r5 - ldrb r1, [r1, 0x2] - bl __divsi3 - mov r1, r8 - str r0, [r1] - movs r1, 0x32 - bl __divsi3 - adds r2, r0, 0x2 - mov r0, r8 - str r2, [r0] - ldr r1, =gProtectStructs - ldrb r0, [r6] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _08054870 - lsls r0, r2, 4 - subs r0, r2 - movs r1, 0xA - bl __divsi3 - mov r1, r8 - str r0, [r1] -_08054870: - mov r2, r9 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080548E2 - .pool -_080548A8: - mov r0, r8 - cmp r0, 0 - beq _080548C8 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - b _080548DC - .pool -_080548C8: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x8] -_080548DC: - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080548E2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkC4_beat_up - - thumb_func_start atkC5_hidepreattack -atkC5_hidepreattack: @ 80548F4 - push {lr} - ldr r0, =gCurrentMove - ldrh r1, [r0] - cmp r1, 0x5B - beq _08054934 - cmp r1, 0x5B - bgt _0805490C - cmp r1, 0x13 - beq _08054918 - b _08054960 - .pool -_0805490C: - ldr r0, =0x00000123 - cmp r1, r0 - beq _0805494C - adds r0, 0x31 - cmp r1, r0 - bne _08054960 -_08054918: - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x40 - b _0805495C - .pool -_08054934: - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - b _0805495C - .pool -_0805494C: - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 11 -_0805495C: - orrs r0, r2 - str r0, [r1] -_08054960: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkC5_hidepreattack - - thumb_func_start atkC6_unhidepostattack -atkC6_unhidepostattack: @ 8054978 - push {lr} - ldr r0, =gCurrentMove - ldrh r1, [r0] - cmp r1, 0x5B - beq _080549BC - cmp r1, 0x5B - bgt _08054990 - cmp r1, 0x13 - beq _0805499C - b _080549EA - .pool -_08054990: - ldr r0, =0x00000123 - cmp r1, r0 - beq _080549D8 - adds r0, 0x31 - cmp r1, r0 - bne _080549EA -_0805499C: - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x41 - negs r2, r2 - b _080549E6 - .pool -_080549BC: - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x81 - negs r2, r2 - b _080549E6 - .pool -_080549D8: - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - ldr r2, =0xfffbffff -_080549E6: - ands r0, r2 - str r0, [r1] -_080549EA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkC6_unhidepostattack - - thumb_func_start atkC7_setminimize -atkC7_setminimize: @ 8054A08 - push {lr} - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _08054A2C - ldr r2, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 1 - orrs r0, r2 - str r0, [r1] -_08054A2C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkC7_setminimize - - thumb_func_start atkC8_sethail -atkC8_sethail: @ 8054A48 - push {lr} - ldr r3, =gBattleWeather - ldrh r1, [r3] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08054A78 - ldr r2, =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08054A86 - .pool -_08054A78: - strh r2, [r3] - ldr r0, =gBattleCommunication - movs r1, 0x5 - strb r1, [r0, 0x5] - ldr r0, =gWishFutureKnock - adds r0, 0x28 - strb r1, [r0] -_08054A86: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkC8_sethail - - thumb_func_start atkC9_jumpifattackandspecialattackcannotfall -atkC9_jumpifattackandspecialattackcannotfall: @ 8054AA0 - push {r4,lr} - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - movs r0, 0x19 - ldrsb r0, [r1, r0] - adds r3, r2, 0 - cmp r0, 0 - bne _08054AF4 - movs r0, 0x1C - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _08054AF4 - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - beq _08054AF4 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08054B20 - .pool -_08054AF4: - ldr r4, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r2, =gBattleMoveDamage - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - str r0, [r2] - ldr r1, =0x00007fff - movs r0, 0 - bl EmitHealthBarUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08054B20: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkC9_jumpifattackandspecialattackcannotfall - - thumb_func_start atkCA_setforcedtarget -atkCA_setforcedtarget: @ 8054B3C - push {r4,r5,lr} - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - ldr r5, =gSideTimers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x1 - strb r0, [r1, 0x8] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r4] - strb r0, [r1, 0x9] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atkCA_setforcedtarget - - thumb_func_start atkCB_setcharge -atkCB_setcharge: @ 8054B88 - push {r4,lr} - ldr r0, =gStatuses3 - ldr r3, =gBankAttacker - ldrb r1, [r3] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 2 - orrs r0, r2 - str r0, [r1] - ldr r4, =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x12] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x12] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x12] - movs r1, 0xF - ands r1, r2 - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x12] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkCB_setcharge - - thumb_func_start atkCC_callterrainattack -atkCC_callterrainattack: @ 8054BEC - push {r4,lr} - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, =gCurrentMove - ldr r1, =gUnknown_0831C414 - ldr r0, =gUnknown_02022FF0 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, =gBankTarget - strb r0, [r1] - ldr r3, =gBattleScriptsForMoveEffects - ldr r2, =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - bl BattleScriptPush - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkCC_callterrainattack - - thumb_func_start atkCD_cureifburnedparalysedorpoisoned -atkCD_cureifburnedparalysedorpoisoned: @ 8054C60 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, =gBattleMons - ldr r3, =gBankAttacker - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - adds r5, r1, 0 - adds r5, 0x4C - adds r2, r0, r5 - ldr r0, [r2] - movs r1, 0xD8 - ands r0, r1 - cmp r0, 0 - beq _08054CBC - movs r0, 0 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r4, =gActiveBank - ldrb r0, [r3] - strb r0, [r4] - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08054CD6 - .pool -_08054CBC: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08054CD6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkCD_cureifburnedparalysedorpoisoned - - thumb_func_start atkCE_settorment -atkCE_settorment: @ 8054CE4 - push {lr} - ldr r1, =gBattleMons - ldr r0, =gBankTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 24 - cmp r1, 0 - bge _08054D28 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08054D34 - .pool -_08054D28: - orrs r1, r2 - str r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08054D34: - pop {r0} - bx r0 - .pool - thumb_func_end atkCE_settorment - - thumb_func_start atkCF_jumpifnodamage -atkCF_jumpifnodamage: @ 8054D3C - push {lr} - ldr r2, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r1, r0, 4 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08054D5C - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _08054D74 -_08054D5C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08054D8E - .pool -_08054D74: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08054D8E: - pop {r0} - bx r0 - .pool - thumb_func_end atkCF_jumpifnodamage - - thumb_func_start atkD0_settaunt -atkD0_settaunt: @ 8054D98 - push {r4,lr} - ldr r4, =gDisableStructs - ldr r3, =gBankTarget - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r2, r1, r4 - ldrb r1, [r2, 0x13] - lsls r0, r1, 28 - cmp r0, 0 - bne _08054DE8 - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x13] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x13] - movs r1, 0xF - ands r1, r2 - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x13] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08054E02 - .pool -_08054DE8: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08054E02: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkD0_settaunt - - thumb_func_start atkD1_set_helpinghand -atkD1_set_helpinghand: @ 8054E0C - push {r4,lr} - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r3, =gBankTarget - strb r0, [r3] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08054E90 - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldrb r3, [r3] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08054E90 - ldr r1, =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - blt _08054E90 - lsls r0, r3, 4 - adds r2, r0, r1 - ldrb r1, [r2] - lsls r0, r1, 28 - cmp r0, 0 - blt _08054E90 - movs r0, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08054EAA - .pool -_08054E90: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08054EAA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkD1_set_helpinghand - - thumb_func_start atkD2_swap_items -atkD2_swap_items: @ 8054EB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 19 - ands r0, r1 - cmp r0, 0 - bne _08054F9A - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08054EE8 - ldr r0, [r4] - ldr r1, =0x0a3f0902 - ands r0, r1 - cmp r0, 0 - beq _08054F9A -_08054EE8: - ldr r6, =gBankAttacker - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - lsrs r4, r0, 24 - ldr r7, =gBankTarget - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x0a3f0902 - ands r0, r1 - cmp r0, 0 - bne _08054F46 - ldr r0, =gWishFutureKnock - adds r2, r0, 0 - adds r2, 0x29 - adds r0, r4, r2 - ldrb r1, [r0] - ldr r4, =gBitTable - ldr r3, =gBattlePartyID - ldrb r0, [r6] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08054F9A - adds r0, r5, r2 - ldrb r1, [r0] - ldrb r0, [r7] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08054F9A -_08054F46: - ldr r0, =gBattleMons - mov r8, r0 - ldr r1, =gBankAttacker - ldrb r4, [r1] - movs r5, 0x58 - adds r0, r4, 0 - muls r0, r5 - add r0, r8 - mov r9, r0 - ldrh r3, [r0, 0x2E] - adds r1, r3, 0 - cmp r1, 0 - bne _08054F6E - ldr r0, =gBankTarget - ldrb r0, [r0] - muls r0, r5 - add r0, r8 - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _08054F9A -_08054F6E: - cmp r1, 0xAF - beq _08054F9A - ldr r7, =gBankTarget - ldrb r0, [r7] - muls r0, r5 - mov r2, r8 - adds r1, r0, r2 - ldrh r2, [r1, 0x2E] - cmp r2, 0xAF - beq _08054F9A - adds r0, r3, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bls _08054F9A - adds r0, r2, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bhi _08054FDC -_08054F9A: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08055132 - .pool -_08054FDC: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3C - bne _08055010 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =BattleScript_StickyHoldOnKnockOff - str r0, [r1] - ldr r1, =gLastUsedAbility - ldrb r0, [r7] - muls r0, r5 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08055132 - .pool -_08055010: - ldr r3, =gBattleStruct - mov r10, r3 - lsls r0, r4, 1 - adds r0, 0xD0 - ldr r1, [r3] - adds r6, r1, r0 - mov r0, r9 - ldrh r0, [r0, 0x2E] - mov r9, r0 - strh r2, [r6] - ldr r1, =gBankAttacker - ldrb r0, [r1] - muls r0, r5 - add r0, r8 - movs r1, 0 - strh r1, [r0, 0x2E] - ldrb r0, [r7] - muls r0, r5 - add r0, r8 - mov r2, r9 - strh r2, [r0, 0x2E] - ldr r4, =gActiveBank - ldr r3, =gBankAttacker - ldrb r0, [r3] - strb r0, [r4] - str r6, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetMonData - ldr r1, =gBankAttacker - ldrb r0, [r1] - bl MarkBufferBankForExecution - ldrb r0, [r7] - strb r0, [r4] - ldrb r0, [r7] - muls r0, r5 - mov r1, r8 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetMonData - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldrb r0, [r7] - mov r2, r10 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - movs r3, 0 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r3, [r0] - ldr r1, =gBankAttacker - ldrb r0, [r1] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r3, [r0] - ldr r2, =gBankAttacker - ldrb r0, [r2] - mov r3, r10 - ldr r1, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - movs r1, 0 - strb r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, =gBattleTextBuff1 - movs r3, 0xFD - strb r3, [r1] - movs r2, 0xA - strb r2, [r1, 0x1] - ldrh r0, [r6] - strb r0, [r1, 0x2] - ldrh r0, [r6] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattleTextBuff2 - strb r3, [r1] - strb r2, [r1, 0x1] - mov r2, r9 - strb r2, [r1, 0x2] - mov r3, r9 - lsrs r0, r3, 8 - strb r0, [r1, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x4] - cmp r3, 0 - beq _08055118 - ldrh r0, [r6] - cmp r0, 0 - beq _0805512C - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _08055130 - .pool -_08055118: - ldrh r0, [r6] - cmp r0, 0 - beq _0805512C - ldr r0, =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x5] - b _08055132 - .pool -_0805512C: - ldr r1, =gBattleCommunication - movs r0, 0x1 -_08055130: - strb r0, [r1, 0x5] -_08055132: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkD2_swap_items - - thumb_func_start atkD3_copy_ability -atkD3_copy_ability: @ 8055148 - push {r4,lr} - ldr r3, =gBattleMons - ldr r4, =gBankTarget - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r1, 0 - cmp r0, 0 - beq _0805519C - cmp r0, 0x19 - beq _0805519C - ldr r0, =gBankAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - strb r1, [r0] - ldr r1, =gLastUsedAbility - ldrb r0, [r4] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080551B6 - .pool -_0805519C: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080551B6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkD3_copy_ability - - thumb_func_start atkD4_wish_effect -atkD4_wish_effect: @ 80551C0 - push {r4-r7,lr} - ldr r7, =gBattlescriptCurrInstr - ldr r2, [r7] - ldrb r3, [r2, 0x1] - cmp r3, 0 - beq _080551D8 - cmp r3, 0x1 - beq _08055210 - b _0805528C - .pool -_080551D8: - ldr r1, =gWishFutureKnock - ldr r4, =gBankAttacker - adds r0, r1, 0 - adds r0, 0x20 - ldrb r5, [r4] - adds r3, r0, r5 - ldrb r0, [r3] - cmp r0, 0 - bne _0805525C - movs r0, 0x2 - strb r0, [r3] - ldrb r0, [r4] - adds r1, 0x24 - adds r1, r0, r1 - ldr r2, =gBattlePartyID - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x6 - b _0805528A - .pool -_08055210: - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r4, =gBankTarget - ldrb r0, [r4] - strb r0, [r1, 0x2] - ldr r0, =gWishFutureKnock - adds r0, 0x24 - ldrb r5, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattleMoveDamage - ldr r6, =gBattleMons - ldrb r0, [r4] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _08055248 - str r3, [r1] -_08055248: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - bne _08055288 -_0805525C: - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r7] - b _0805528C - .pool -_08055288: - adds r0, r2, 0x6 -_0805528A: - str r0, [r7] -_0805528C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atkD4_wish_effect - - thumb_func_start atkD5_setroots -atkD5_setroots: @ 8055294 - push {lr} - ldr r1, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _080552D8 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080552E4 - .pool -_080552D8: - orrs r1, r3 - str r1, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080552E4: - pop {r0} - bx r0 - .pool - thumb_func_end atkD5_setroots - - thumb_func_start atkD6_doubledamagedealtifdamaged -atkD6_doubledamagedealtifdamaged: @ 80552EC - push {lr} - ldr r3, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r2, r0, 4 - adds r0, r3, 0x4 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0805530C - adds r0, r2, r3 - ldr r1, =gBankTarget - ldrb r0, [r0, 0xC] - ldrb r1, [r1] - cmp r0, r1 - beq _08055324 -_0805530C: - adds r0, r3, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0805532A - adds r0, r2, r3 - ldr r1, =gBankTarget - ldrb r0, [r0, 0xD] - ldrb r1, [r1] - cmp r0, r1 - bne _0805532A -_08055324: - ldr r1, =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0xE] -_0805532A: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkD6_doubledamagedealtifdamaged - - thumb_func_start atkD7_setyawn -atkD7_setyawn: @ 805534C - push {r4,lr} - ldr r1, =gStatuses3 - ldr r0, =gBankTarget - ldrb r3, [r0] - lsls r0, r3, 2 - adds r4, r0, r1 - ldr r2, [r4] - movs r0, 0xC0 - lsls r0, 5 - ands r0, r2 - cmp r0, 0 - bne _08055374 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, 0x4C - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080553A0 -_08055374: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080553B0 - .pool -_080553A0: - movs r0, 0x80 - lsls r0, 5 - orrs r2, r0 - str r2, [r4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080553B0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkD7_setyawn - - thumb_func_start atkD8_setdamagetohealthdifference -atkD8_setdamagetohealthdifference: @ 80553BC - push {lr} - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r0, [r0] - movs r1, 0x58 - muls r0, r1 - adds r3, r0, r2 - ldr r0, =gBankAttacker - ldrb r0, [r0] - muls r0, r1 - adds r1, r0, r2 - ldrh r0, [r3, 0x28] - ldrh r2, [r1, 0x28] - cmp r0, r2 - bhi _08055408 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0805541A - .pool -_08055408: - ldr r2, =gBattleMoveDamage - ldrh r0, [r3, 0x28] - ldrh r1, [r1, 0x28] - subs r0, r1 - str r0, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0805541A: - pop {r0} - bx r0 - .pool - thumb_func_end atkD8_setdamagetohealthdifference - - thumb_func_start atkD9_scaledamagebyhealthratio -atkD9_scaledamagebyhealthratio: @ 8055428 - push {r4,lr} - ldr r4, =gDynamicBasePower - ldrh r0, [r4] - cmp r0, 0 - bne _08055464 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r3, [r0, 0x1] - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r0, [r1, 0x28] - muls r0, r3 - ldrh r1, [r1, 0x2C] - bl __divsi3 - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - bne _08055464 - movs r0, 0x1 - strh r0, [r4] -_08055464: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkD9_scaledamagebyhealthratio - - thumb_func_start atkDA_abilityswap -atkDA_abilityswap: @ 805548C - push {r4-r6,lr} - ldr r5, =gBattleMons - ldr r0, =gBankAttacker - ldrb r0, [r0] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r1, [r2] - cmp r1, 0 - bne _080554B4 - ldr r0, =gBankTarget - ldrb r0, [r0] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _080554D4 -_080554B4: - cmp r1, 0x19 - beq _080554D4 - ldr r6, =gBankTarget - ldrb r0, [r6] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - ldrb r3, [r0] - cmp r3, 0x19 - beq _080554D4 - ldr r0, =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08055504 -_080554D4: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0805551A - .pool -_08055504: - ldrb r1, [r2] - strb r3, [r2] - ldrb r0, [r6] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - strb r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0805551A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkDA_abilityswap - - thumb_func_start atkDB_imprisoneffect -atkDB_imprisoneffect: @ 8055524 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r1, =gStatuses3 - ldr r4, =gBankAttacker - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08055574 - b _080555F6 - .pool -_0805554C: - ldr r0, =gStatuses3 - mov r2, r9 - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 6 - orrs r0, r2 - str r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080555EE - .pool -_08055574: - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - bl sub_803F548 - movs r6, 0 - b _080555E6 -_0805558A: - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r8, r0 - beq _080555E0 - movs r4, 0 - ldr r7, =gBankAttacker - mov r9, r7 - ldr r0, =gBattleMons - mov r12, r0 - mov r1, r9 - ldrb r0, [r1] - mov r2, r12 - adds r2, 0xC - movs r1, 0x58 - muls r0, r1 - adds r3, r0, r2 - adds r5, r6, 0 - muls r5, r1 -_080555B4: - movs r2, 0 - ldrh r1, [r3] - mov r0, r12 - adds r0, 0xC - adds r0, r5, r0 -_080555BE: - ldrh r7, [r0] - cmp r1, r7 - bne _080555C8 - cmp r1, 0 - bne _080555D0 -_080555C8: - adds r0, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _080555BE -_080555D0: - cmp r2, 0x4 - bne _080555DC - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _080555B4 -_080555DC: - cmp r4, 0x4 - bne _0805554C -_080555E0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_080555E6: - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bcc _0805558A -_080555EE: - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bne _08055610 -_080555F6: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08055610: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkDB_imprisoneffect - - thumb_func_start atkDC_setgrudge -atkDC_setgrudge: @ 805562C - push {lr} - ldr r1, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 7 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08055670 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0805567C - .pool -_08055670: - orrs r1, r3 - str r1, [r2] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0805567C: - pop {r0} - bx r0 - .pool - thumb_func_end atkDC_setgrudge - - thumb_func_start atkDD_weightdamagecalculation -atkDD_weightdamagecalculation: @ 8055684 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 - ldr r2, =gUnknown_0831C428 - ldrh r0, [r2] - ldr r1, =0x0000ffff - cmp r0, r1 - beq _080556FC - adds r6, r2, 0 - ldr r0, =gBattleMons - mov r8, r0 - adds r7, r1, 0 - adds r4, r6, 0 -_080556A0: - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetPokedexHeightWeight - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _080556CE - adds r4, 0x4 - adds r5, 0x2 - ldrh r0, [r4] - cmp r0, r7 - bne _080556A0 -_080556CE: - lsls r0, r5, 1 - adds r0, r6 - ldrh r1, [r0] - ldr r0, =0x0000ffff - cmp r1, r0 - beq _080556FC - ldr r0, =gDynamicBasePower - adds r1, r5, 0x1 - lsls r1, 1 - adds r1, r6 - ldrh r1, [r1] - strh r1, [r0] - b _08055702 - .pool -_080556FC: - ldr r1, =gDynamicBasePower - movs r0, 0x78 - strh r0, [r1] -_08055702: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkDD_weightdamagecalculation - - thumb_func_start atkDE_asistattackselect -atkDE_asistattackselect: @ 805571C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r10, r0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x18 - str r0, [sp, 0x4] - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - ldr r0, =gPlayerParty - str r0, [sp] - cmp r1, 0 - beq _0805574C - ldr r1, =gEnemyParty - str r1, [sp] -_0805574C: - movs r2, 0 -_0805574E: - ldr r1, =gBattlePartyID - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - adds r1, r2, 0x1 - str r1, [sp, 0x8] - ldrh r0, [r0] - cmp r2, r0 - beq _080557F4 - movs r0, 0x64 - adds r6, r2, 0 - muls r6, r0 - ldr r0, [sp] - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _080557F4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _080557F4 - movs r5, 0 - ldr r1, =0x0000ffff - mov r8, r1 - mov r9, r6 - mov r1, r10 - lsls r0, r1, 1 - ldr r1, [sp, 0x4] - adds r6, r0, r1 -_08055798: - movs r7, 0 - adds r1, r5, 0 - adds r1, 0xD - ldr r0, [sp] - add r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_8052F84 - lsls r0, 24 - adds r1, r5, 0x1 - cmp r0, 0 - bne _080557EE - ldr r0, =gMovesForbiddenToCopy - ldrh r2, [r0] - adds r3, r0, 0 - cmp r2, r8 - beq _080557E2 - cmp r4, r2 - beq _080557D8 - ldr r5, =0x0000ffff - adds r2, r3, 0 -_080557CA: - adds r2, 0x2 - adds r7, 0x1 - ldrh r0, [r2] - cmp r0, r5 - beq _080557E2 - cmp r4, r0 - bne _080557CA -_080557D8: - lsls r0, r7, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r8 - bne _080557EE -_080557E2: - cmp r4, 0 - beq _080557EE - strh r4, [r6] - adds r6, 0x2 - movs r0, 0x1 - add r10, r0 -_080557EE: - adds r5, r1, 0 - cmp r5, 0x3 - ble _08055798 -_080557F4: - ldr r2, [sp, 0x8] - cmp r2, 0x5 - ble _0805574E - mov r1, r10 - cmp r1, 0 - beq _0805586C - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, =gRandomMove - bl Random - movs r1, 0xFF - ands r1, r0 - mov r0, r10 - muls r0, r1 - asrs r0, 8 - lsls r0, 1 - ldr r1, [sp, 0x4] - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, =gBankTarget - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08055886 - .pool -_0805586C: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08055886: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkDE_asistattackselect - - thumb_func_start atkDF_setmagiccoat -atkDF_setmagiccoat: @ 805589C - push {lr} - ldr r1, =gBankTarget - ldr r3, =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, =gSpecialStatuses - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r0, =gCurrentMoveTurn - ldrb r1, [r0] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _080558FC - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08055914 - .pool -_080558FC: - ldr r0, =gProtectStructs - ldrb r1, [r3] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x10 - orrs r0, r2 - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08055914: - pop {r0} - bx r0 - .pool - thumb_func_end atkDF_setmagiccoat - - thumb_func_start atkE0_setstealstatchange -atkE0_setstealstatchange: @ 8055920 - push {lr} - ldr r2, =gSpecialStatuses - ldr r3, =gBankAttacker - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r0, =gCurrentMoveTurn - ldrb r1, [r0] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _08055978 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0805598E - .pool -_08055978: - ldr r0, =gProtectStructs - ldrb r1, [r3] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0805598E: - pop {r0} - bx r0 - .pool - thumb_func_end atkE0_setstealstatchange - - thumb_func_start atkE1_intimidate_string_loader -atkE1_intimidate_string_loader: @ 805599C - push {r4-r6,lr} - ldr r4, =gBattleScripting - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xD8 - ldrb r0, [r0] - strb r0, [r4, 0x17] - ldrb r0, [r4, 0x17] - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x9 - strb r0, [r2, 0x1] - ldr r3, =gBattleMons - ldrb r1, [r4, 0x17] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2, 0x2] - movs r0, 0xFF - strb r0, [r2, 0x3] - ldr r2, =gBankTarget - ldr r1, =gNoOfAllBanks - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bcs _08055A22 - adds r4, r2, 0 - ldr r6, =gBitTable -_080559E2: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - beq _08055A04 - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - ldr r2, =gNoOfAllBanks - cmp r1, 0 - beq _08055A18 -_08055A04: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - adds r2, r1, 0 - ldrb r1, [r2] - cmp r0, r1 - bcc _080559E2 -_08055A18: - ldr r0, =gBankTarget - ldrb r0, [r0] - ldrb r2, [r2] - cmp r0, r2 - bcc _08055A64 -_08055A22: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08055A6C - .pool -_08055A64: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08055A6C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkE1_intimidate_string_loader - - thumb_func_start atkE2_switchout_abilities -atkE2_switchout_abilities: @ 8055A78 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r4, =gActiveBank - strb r0, [r4] - ldr r3, =gBattleMons - ldrb r0, [r4] - movs r6, 0x58 - adds r1, r0, 0 - muls r1, r6 - adds r0, r1, r3 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1E - bne _08055AD2 - adds r3, 0x4C - adds r1, r3 - movs r0, 0 - str r0, [r1] - ldr r2, =gBitTable - ldrb r1, [r4] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, r1, r0 - adds r0, 0x58 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0] - adds r0, r1, 0 - muls r0, r6 - adds r0, r3 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08055AD2: - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkE2_switchout_abilities - - thumb_func_start atkE3_jumpiffainted -atkE3_jumpiffainted: @ 8055AF4 - push {r4,lr} - ldr r4, =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattleBank - ldr r1, =gActiveBank - strb r0, [r1] - ldr r2, =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08055B3C - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08055B42 - .pool -_08055B3C: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_08055B42: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atkE3_jumpiffainted - - thumb_func_start atkE4_getsecretpowereffect -atkE4_getsecretpowereffect: @ 8055B48 - push {lr} - ldr r0, =gUnknown_02022FF0 - ldrb r0, [r0] - cmp r0, 0x7 - bhi _08055BE4 - lsls r0, 2 - ldr r1, =_08055B64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08055B64: - .4byte _08055B84 - .4byte _08055B90 - .4byte _08055B9C - .4byte _08055BA8 - .4byte _08055BB4 - .4byte _08055BC0 - .4byte _08055BCC - .4byte _08055BD8 -_08055B84: - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _08055BE8 - .pool -_08055B90: - ldr r1, =gBattleCommunication - movs r0, 0x1 - b _08055BE8 - .pool -_08055B9C: - ldr r1, =gBattleCommunication - movs r0, 0x1B - b _08055BE8 - .pool -_08055BA8: - ldr r1, =gBattleCommunication - movs r0, 0x17 - b _08055BE8 - .pool -_08055BB4: - ldr r1, =gBattleCommunication - movs r0, 0x16 - b _08055BE8 - .pool -_08055BC0: - ldr r1, =gBattleCommunication - movs r0, 0x18 - b _08055BE8 - .pool -_08055BCC: - ldr r1, =gBattleCommunication - movs r0, 0x7 - b _08055BE8 - .pool -_08055BD8: - ldr r1, =gBattleCommunication - movs r0, 0x8 - b _08055BE8 - .pool -_08055BE4: - ldr r1, =gBattleCommunication - movs r0, 0x5 -_08055BE8: - strb r0, [r1, 0x3] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end atkE4_getsecretpowereffect - - thumb_func_start atkE5_pickup -atkE5_pickup: @ 8055C00 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - bl InBattlePike - lsls r0, 24 - cmp r0, 0 - beq _08055C18 - b _08055DD8 -_08055C18: - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _08055CC4 - movs r6, 0 - mov r7, sp - ldr r0, =gBaseStats - mov r8, r0 -_08055C2A: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - strh r0, [r7] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _08055C6C - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x17] - b _08055C76 - .pool -_08055C6C: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x16] -_08055C76: - cmp r0, 0x35 - bne _08055CB6 - cmp r5, 0 - beq _08055CB6 - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _08055CB6 - ldrh r0, [r7] - cmp r0, 0 - bne _08055CB6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08055CB6 - bl CalculateBattlePyramidPickupItemId - strh r0, [r7] - movs r0, 0x64 - muls r0, r6 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xC - mov r2, sp - bl SetMonData -_08055CB6: - adds r6, 0x1 - cmp r6, 0x5 - ble _08055C2A - b _08055DD8 - .pool -_08055CC4: - movs r6, 0 - movs r1, 0x64 - mov r8, r1 - ldr r7, =gPlayerParty - mov r10, sp -_08055CCE: - mov r4, r8 - muls r4, r6 - adds r4, r7 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, r10 - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _08055D30 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - ldr r1, =gBaseStats - adds r0, r1 - ldrb r0, [r0, 0x17] - b _08055D3C - .pool -_08055D10: - mov r0, r8 - muls r0, r6 - adds r0, r7 - adds r2, r1, 0 - adds r2, 0x63 - subs r2, r4 - lsls r2, 1 - ldr r1, =gRarePickupItems - adds r2, r1 - movs r1, 0xC - bl SetMonData - b _08055DD0 - .pool -_08055D30: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - ldr r1, =gBaseStats - adds r0, r1 - ldrb r0, [r0, 0x16] -_08055D3C: - adds r1, r6, 0x1 - mov r9, r1 - cmp r0, 0x35 - bne _08055DD0 - cmp r5, 0 - beq _08055DD0 - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _08055DD0 - mov r1, r10 - ldrh r0, [r1] - cmp r0, 0 - bne _08055DD0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08055DD0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r4, r0, 16 - mov r0, r8 - muls r0, r6 - adds r0, r7 - movs r1, 0x38 - bl GetMonData - subs r0, 0x1 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9 - bls _08055D9C - movs r1, 0x9 -_08055D9C: - movs r2, 0 - b _08055DAE - .pool -_08055DA4: - adds r0, r4, 0 - subs r0, 0x62 - cmp r0, 0x1 - bls _08055D10 - adds r2, 0x1 -_08055DAE: - cmp r2, 0x8 - bgt _08055DD0 - ldr r0, =gPickupProbabilities - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, r4 - ble _08055DA4 - mov r0, r8 - muls r0, r6 - adds r0, r7 - adds r2, r1, r2 - lsls r2, 1 - ldr r1, =gPickupItems - adds r2, r1 - movs r1, 0xC - bl SetMonData -_08055DD0: - mov r6, r9 - cmp r6, 0x5 - bgt _08055DD8 - b _08055CCE -_08055DD8: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkE5_pickup - thumb_func_start atkE6_castform_change_animation atkE6_castform_change_animation: @ 8055DFC push {r4,lr} @@ -5757,7 +340,7 @@ atkEB_settypetoterrain: @ 80560BC adds r0, r3 mov r12, r0 ldr r5, =sTerrainToType - ldr r4, =gUnknown_02022FF0 + ldr r4, =gBattleTerrain ldrb r0, [r4] adds r0, r5 ldrb r2, [r0] @@ -5851,7 +434,7 @@ atkEC_pursuit_sth: @ 805616C ands r1, r0 cmp r1, 0 bne _0805620C - ldr r0, =gUnknown_0202421C + ldr r0, =gActionForBanks adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 78abd6a855..c6761bd9ac 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -47348,7 +47348,7 @@ sub_811675C: @ 811675C ldrsh r0, [r0, r1] bl sub_811583C adds r2, r0, 0 - ldr r0, =gUnknown_02022FF0 + ldr r0, =gBattleTerrain ldrb r0, [r0] cmp r0, 0x9 bhi _08116832 @@ -49759,7 +49759,7 @@ sub_8117C24: @ 8117C24 lsls r0, 24 lsrs r0, 24 ldr r2, =gBattleAnimArgs - ldr r1, =gUnknown_02022FF0 + ldr r1, =gBattleTerrain ldrb r1, [r1] strh r1, [r2] bl move_anim_task_del diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 2e48fdd729..36898e456d 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -31263,8 +31263,8 @@ _081AAA9E: .pool thumb_func_end sub_81AAA7C - thumb_func_start CalculateBattlePyramidPickupItemId -CalculateBattlePyramidPickupItemId: @ 81AAAE0 + thumb_func_start GetBattlePyramidPickupItemId +GetBattlePyramidPickupItemId: @ 81AAAE0 push {r4-r6,lr} ldr r0, =gSaveBlock2Ptr ldr r1, [r0] @@ -31331,6 +31331,6 @@ _081AAB5A: pop {r1} bx r1 .pool - thumb_func_end CalculateBattlePyramidPickupItemId + thumb_func_end GetBattlePyramidPickupItemId .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 489366fe8b..31ad9a3304 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -5476,8 +5476,8 @@ _08075028: bx r1 thumb_func_end sub_8074FE8 - thumb_func_start sub_8075034 -sub_8075034: @ 8075034 + thumb_func_start GetScaledHPFraction +GetScaledHPFraction: @ 8075034 push {r4,lr} lsls r2, 24 lsrs r2, 24 @@ -5499,7 +5499,7 @@ _08075058: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8075034 + thumb_func_end GetScaledHPFraction thumb_func_start sub_8075060 sub_8075060: @ 8075060 @@ -5514,7 +5514,7 @@ sub_8075060: @ 8075060 b _0807508E _08075072: movs r2, 0x30 - bl sub_8075034 + bl GetScaledHPFraction lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x3 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index f96a7355a5..55a843b924 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -186,7 +186,7 @@ evolution_cutscene: @ 813DA8C ldr r0, =gUnknown_02022E22 movs r1, 0 strh r1, [r0] - ldr r1, =gUnknown_02022FF0 + ldr r1, =gBattleTerrain movs r0, 0x9 strb r0, [r1] bl c2_berry_program_update_menu @@ -479,7 +479,7 @@ sub_813DD7C: @ 813DD7C strh r0, [r1] ldr r0, =gUnknown_02022E22 strh r4, [r0] - ldr r1, =gUnknown_02022FF0 + ldr r1, =gBattleTerrain movs r0, 0x9 strb r0, [r1] bl c2_berry_program_update_menu diff --git a/asm/party_menu.s b/asm/party_menu.s index 2b320f86ee..4eb080b136 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5495,7 +5495,7 @@ _081B2F04: asrs r1, 16 ldr r2, [r6] ldrb r2, [r2, 0x1A] - bl sub_8075034 + bl GetScaledHPFraction lsls r0, 24 lsrs r5, r0, 24 ldrb r0, [r6, 0x8] diff --git a/data/battle_4.s b/data/battle_4.s index 8f18727331..0b8bd6e7ed 100644 --- a/data/battle_4.s +++ b/data/battle_4.s @@ -43,18 +43,18 @@ gMovesForbiddenToCopy:: @ 831C3E0 .2byte MOVE_COVET, MOVE_TRICK, MOVE_FOCUS_PUNCH, 0xffff .align 2 -gUnknown_0831C408:: @ 831C408 +sFlailHpScaleToPowerTable:: @ 831C408 .byte 0x01, 0xc8, 0x04, 0x96, 0x09, 0x64, 0x10, 0x50 .byte 0x20, 0x28, 0x30, 0x14 .align 2 -gUnknown_0831C414:: @ 831C414 +sNaturePowerMoves:: @ 831C414 .2byte 0x004e, 0x004b, 0x0059, 0x0038 .2byte 0x0039, 0x003d, 0x009d, 0x00f7 .2byte 0x0081, 0x0081 .align 2 -gUnknown_0831C428:: @ 831C428 +sWeightToDamageTable:: @ 831C428 .2byte 0x0064, 0x0014, 0x00fa, 0x0028 .2byte 0x01f4, 0x003c, 0x03e8, 0x0050 .2byte 0x07d0, 0x0064, 0xffff, 0xffff diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 1fb6b81890..206519f40f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6,13 +6,13 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .incbin "baserom.gba", 0x2d86a8, 0x388 -gUnknown_082D8A30:: @ 82D8A30 +BattleScript_PresentDamageTarget:: @ 82D8A30 .incbin "baserom.gba", 0x2d8a30, 0x1e BattleScript_MoveEnd:: @ 82D8A4E .incbin "baserom.gba", 0x2d8a4e, 0x12 -gUnknown_082D8A60:: @ 82D8A60 +BattleScript_PauseEffectivenessSoundResultMsgEndMove:: @ 82D8A60 .incbin "baserom.gba", 0x2d8a60, 0x274 BattleScript_StatUp:: @ 82D8CD4 @@ -24,10 +24,10 @@ BattleScript_StatDown:: @ 82D8D65 BattleScript_MoveUsedMustRecharge:: @ 82D9462 .incbin "baserom.gba", 0x2d9462, 0xa7f -gUnknown_082D9EE1:: @ 82D9EE1 +BattleScript_PresentHealTarget:: @ 82D9EE1 .incbin "baserom.gba", 0x2d9ee1, 0x1a -gUnknown_082D9EFB:: @ 82D9EFB +BattleScript_AlreadyAtFullHp:: @ 82D9EFB .incbin "baserom.gba", 0x2d9efb, 0x21 BattleScript_ButItFailed:: @ 82D9F1C @@ -180,13 +180,13 @@ BattleScript_AllStatsUp:: @ 82DAF27 BattleScript_RapidSpinAway:: @ 82DAFC3 .incbin "baserom.gba", 0x2dafc3, 0x2 -gUnknown_082DAFC5:: @ 82DAFC5 +BattleScript_WrapFree:: @ 82DAFC5 .incbin "baserom.gba", 0x2dafc5, 0x11 -gUnknown_082DAFD6:: @ 82DAFD6 +BattleScript_LeechSeedFree:: @ 82DAFD6 .incbin "baserom.gba", 0x2dafd6, 0x7 -gUnknown_082DAFDD:: @ 82DAFDD +BattleScript_SpikesFree:: @ 82DAFDD .incbin "baserom.gba", 0x2dafdd, 0x7 gUnknown_082DAFE4:: @ 82DAFE4 @@ -444,7 +444,7 @@ BattleScript_SoundproofProtected:: @ 82DB61F BattleScript_AbilityNoSpecificStatLoss:: @ 82DB62F .incbin "baserom.gba", 0x2db62f, 0x10 -BattleScript_StickyHoldOnKnockOff:: @ 82DB63F +BattleScript_StickyHoldActivates:: @ 82DB63F .incbin "baserom.gba", 0x2db63f, 0xe BattleScript_ColorChangeActivates:: @ 82DB64D diff --git a/include/battle.h b/include/battle.h index f84a75cbac..a0a50faf79 100644 --- a/include/battle.h +++ b/include/battle.h @@ -112,7 +112,7 @@ #define STATUS3_ROOTED 0x400 #define STATUS3_CHARGED_UP 0x200 #define STATUS3_YAWN 0x1800 //two bits -#define STATUS3_IMPRISIONED 0x2000 +#define STATUS3_IMPRISONED_OTHERS 0x2000 #define STATUS3_GRUDGE 0x4000 #define STATUS3_CANT_SCORE_A_CRIT 0x8000 #define STATUS3_MUDSPORT 0x10000 @@ -172,7 +172,7 @@ #define ABILITYEFFECT_CHECK_BANK_SIDE 0xD #define ABILITYEFFECT_FIELD_SPORT 0xE #define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF -#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10 +#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 #define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 #define ABILITYEFFECT_COUNT_ON_FIELD 0x12 #define ABILITYEFFECT_CHECK_ON_FIELD 0x13 @@ -206,6 +206,15 @@ #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY ((WEATHER_HAIL)) +#define BATTLE_TERRAIN_GRASS 0 +#define BATTLE_TERRAIN_LONG_GRASS 1 +#define BATTLE_TERRAIN_SAND 2 +#define BATTLE_TERRAIN_UNDERWATER 3 +#define BATTLE_TERRAIN_WATER 4 +#define BATTLE_TERRAIN_POND 5 +#define BATTLE_TERRAIN_ROCK 6 +#define BATTLE_TERRAIN_CAVE 7 + // array entries for battle communication #define CURSOR_POSITION 0x1 #define MOVE_EFFECT_BYTE 0x3 @@ -554,46 +563,7 @@ struct BattleStruct u8 wildVictorySong; u8 dynamicMoveType; u8 wrappedBy[4]; - u8 field_18; - u8 field_19; - u8 field_1A; - u8 field_1B; - u8 field_1C; - u8 field_1D; - u8 field_1E; - u8 field_1F; - u8 field_20; - u8 field_21; - u8 field_22; - u8 field_23; - u8 field_24; - u8 field_25; - u8 field_26; - u8 field_27; - u8 field_28; - u8 field_29; - u8 field_2A; - u8 field_2B; - u8 field_2C; - u8 field_2D; - u8 field_2E; - u8 field_2F; - u8 field_30; - u8 field_31; - u8 field_32; - u8 field_33; - u8 field_34; - u8 field_35; - u8 field_36; - u8 field_37; - u8 field_38; - u8 field_39; - u8 field_3A; - u8 field_3B; - u8 field_3C; - u8 field_3D; - u8 field_3E; - u8 field_3F; + u16 assistPossibleMoves[5 * 4]; // 5 mons, each of them knowing 4 moves u8 field_40; u8 field_41; u8 field_42; @@ -710,28 +680,6 @@ extern struct BattleStruct* gBattleStruct; var2[offsetof(struct structName, offsetField)] = value; \ } -// This is a leftover from R/S direct use of ewram addresses -#define GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(bank, varName) \ -{ \ - void** memes1 = (void**)(&gBattleStruct); \ - void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, changedItems))); \ - varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ -} - -#define GET_USED_ITEM_PTR_VIA_MEME_ACCESS(bank, varName) \ -{ \ - void** memes1 = (void**)(&gBattleStruct); \ - void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, usedHeldItems))); \ - varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ -} - -#define GET_HP_SWITCHOUT_PTR_VIA_MEME_ACCESS(bank, varName) \ -{ \ - void** memes1 = (void**)(&gBattleStruct); \ - void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, hpOnSwitchout))); \ - varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \ -} - #define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ @@ -917,15 +865,24 @@ void BattleMainCB2(void); void ResetSentPokesToOpponentValue(void); bool8 CanRunFromBattle(u8 bank); bool8 IsRunningFromBattleImpossible(void); +void PressurePPLoseOnUsingPerishSong(u8 bankAtk); +void PressurePPLoseOnUsingImprision(u8 bankAtk); // battle_3 +#define MOVE_LIMITATION_ZEROMOVE (1 << 0) +#define MOVE_LIMITATION_PP (1 << 1) +#define MOVE_LIMITATION_DISABLED (1 << 2) +#define MOVE_LIMITATION_TORMENTED (1 << 3) +#define MOVE_LIMITATION_TAUNT (1 << 4) +#define MOVE_LIMITATION_IMPRISION (1 << 5) + void BattleScriptPush(const u8* bsPtr); void BattleScriptPushCursor(void); void BattleScriptPop(void); u8 sub_803FB4C(void); // msg, can't select a move u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); -u8 IsImprisoned(u8 bank, u16 move); +u8 GetImprisonedMovesCount(u8 bank, u16 move); u8 UpdateTurnCounters(void); u8 TurnBasedEffects(void); bool8 sub_8041364(void); diff --git a/include/battle_message.h b/include/battle_message.h index 3e28fa5e5e..6e6616cf04 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -82,6 +82,14 @@ textVar[3] = B_BUFF_EOS; \ } +#define PREPARE_ABILITY_BUFFER(textVar, abilityId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_ABILITY; \ + textVar[2] = abilityId; \ + textVar[3] = B_BUFF_EOS; \ +} + #define PREPARE_TYPE_BUFFER(textVar, typeId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ @@ -142,6 +150,15 @@ textVar[4] = B_BUFF_EOS; \ } +#define PREPARE_ITEM_BUFFER(textVar, item) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_ITEM; \ + textVar[2] = item; \ + textVar[3] = (item & 0xFF00) >> 8; \ + textVar[4] = B_BUFF_EOS; \ +} + #define PREPARE_SPECIES_BUFFER(textVar, species) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ diff --git a/include/mail.h b/include/mail.h new file mode 100644 index 0000000000..16ca1f6766 --- /dev/null +++ b/include/mail.h @@ -0,0 +1,19 @@ +#ifndef GUARD_MAIL_H +#define GUARD_MAIL_H + +#include "items.h" + +#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \ + || itemId == ITEM_HARBOR_MAIL \ + || itemId == ITEM_GLITTER_MAIL \ + || itemId == ITEM_MECH_MAIL \ + || itemId == ITEM_WOOD_MAIL \ + || itemId == ITEM_WAVE_MAIL \ + || itemId == ITEM_BEAD_MAIL \ + || itemId == ITEM_SHADOW_MAIL \ + || itemId == ITEM_TROPIC_MAIL \ + || itemId == ITEM_DREAM_MAIL \ + || itemId == ITEM_FAB_MAIL \ + || itemId == ITEM_RETRO_MAIL)) + +#endif // GUARD_MAIL_H diff --git a/src/battle_3.c b/src/battle_3.c index 1fd84a61b1..9ac439390d 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -261,7 +261,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } } - if (IsImprisoned(gActiveBank, move)) + if (GetImprisonedMovesCount(gActiveBank, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -314,13 +314,6 @@ u8 sub_803FB4C(void) // msg, can't select a move return limitations; } -#define MOVE_LIMITATION_ZEROMOVE (1 << 0) -#define MOVE_LIMITATION_PP (1 << 1) -#define MOVE_LIMITATION_DISABLED (1 << 2) -#define MOVE_LIMITATION_TORMENTED (1 << 3) -#define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) - u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) { u8 holdEffect; @@ -346,7 +339,7 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) unusableMoves |= gBitTable[i]; if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) unusableMoves |= gBitTable[i]; - if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + if (GetImprisonedMovesCount(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) unusableMoves |= gBitTable[i]; if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) unusableMoves |= gBitTable[i]; @@ -374,7 +367,7 @@ bool8 AreAllMovesUnusable(void) return (unusable == 0xF); } -u8 IsImprisoned(u8 bank, u16 move) +u8 GetImprisonedMovesCount(u8 bank, u16 move) { s32 i; u8 imprisionedMoves = 0; @@ -382,7 +375,7 @@ u8 IsImprisoned(u8 bank, u16 move) for (i = 0; i < gNoOfAllBanks; i++) { - if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) + if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) { s32 j; for (j = 0; j < 4; j++) @@ -1327,7 +1320,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 8: // imprisoned - if (IsImprisoned(gBankAttacker, gCurrentMove)) + if (GetImprisonedMovesCount(gBankAttacker, gCurrentMove)) { gProtectStructs[gBankAttacker].usedImprisionedMove = 1; CancelMultiTurnMoves(gBankAttacker); @@ -2379,7 +2372,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } } break; - case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16 + case ABILITYEFFECT_COUNT_OTHER_SIDE: // 16 side = GetBankSide(bank); for (i = 0; i < gNoOfAllBanks; i++) { @@ -6238,7 +6231,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) targetBank = Random() % gNoOfAllBanks; } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]); if (gBattleMoves[move].type == TYPE_ELECTRIC - && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) + && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) { targetBank ^= 2; diff --git a/src/battle_4.c b/src/battle_4.c index 0f52ee0dd8..9ef443b707 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -29,6 +29,7 @@ #include "pokemon_icon.h" #include "pokemon_item_effects.h" #include "m4a.h" +#include "mail.h" // variables @@ -96,6 +97,7 @@ extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; +extern u8 gUnknown_020241E9; extern struct MusicPlayerInfo gMPlay_BGM; struct TrainerMoney @@ -127,6 +129,7 @@ extern void sub_81A5BF8(void); // battle frontier 2 extern void sub_81A5D44(void); // battle frontier 2 extern void sub_81B8E80(u8 bank, u8, u8); // party menu extern bool8 sub_81B1250(void); // ? +extern u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); // battle interface // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -150,7 +153,7 @@ extern const u8 BattleScript_ItemSteal[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_KnockedOff[]; -extern const u8 BattleScript_StickyHoldOnKnockOff[]; +extern const u8 BattleScript_StickyHoldActivates[]; extern const u8 BattleScript_AllStatsUp[]; extern const u8 BattleScript_AtkDefDown[]; extern const u8 BattleScript_SAtkDown2[]; @@ -197,6 +200,7 @@ extern const u8 gUnknown_082DADD8[]; extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_SturdyPreventsOHKO[]; extern const u8 BattleScript_ObliviousPreventsAttraction[]; +extern const u8 BattleScript_PauseEffectivenessSoundResultMsgEndMove[]; // strings extern const u8 gText_BattleYesNoChoice[]; @@ -252,7 +256,7 @@ void atk11_printstring_playeronly(void); void atk12_waitmessage(void); void atk13_printfromtable(void); void atk14_printfromtable_playeronly(void); -void atk15_seteffectwithchancetarget(void); +void atk15_seteffectwithchance(void); void atk16_seteffectprimary(void); void atk17_seteffectsecondary(void); void atk18_status_effect_clear(void); @@ -421,15 +425,15 @@ void atkBA_jumpifnopursuitswitchdmg(void); void atkBB_setsunny(void); void atkBC_maxattackhalvehp(void); void atkBD_copyfoestats(void); -void atkBE_breakfree(void); +void atkBE_rapidspinfree(void); void atkBF_set_defense_curl(void); void atkC0_recoverbasedonsunlight(void); void atkC1_hidden_power(void); void atkC2_selectnexttarget(void); void atkC3_setfutureattack(void); void atkC4_beat_up(void); -void atkC5_hidepreattack(void); -void atkC6_unhidepostattack(void); +void atkC5_setsemiinvulnerablebit(void); +void atkC6_clearsemiinvulnerablebit(void); void atkC7_setminimize(void); void atkC8_sethail(void); void atkC9_jumpifattackandspecialattackcannotfall(void); @@ -458,7 +462,7 @@ void atkDF_setmagiccoat(void); void atkE0_setstealstatchange(void); void atkE1_intimidate_string_loader(void); void atkE2_switchout_abilities(void); -void atkE3_jumpiffainted(void); +void atkE3_jumpifhasnohp(void); void atkE4_getsecretpowereffect(void); void atkE5_pickup(void); void atkE6_castform_change_animation(void); @@ -504,7 +508,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk12_waitmessage, atk13_printfromtable, atk14_printfromtable_playeronly, - atk15_seteffectwithchancetarget, + atk15_seteffectwithchance, atk16_seteffectprimary, atk17_seteffectsecondary, atk18_status_effect_clear, @@ -673,15 +677,15 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkBB_setsunny, atkBC_maxattackhalvehp, atkBD_copyfoestats, - atkBE_breakfree, + atkBE_rapidspinfree, atkBF_set_defense_curl, atkC0_recoverbasedonsunlight, atkC1_hidden_power, atkC2_selectnexttarget, atkC3_setfutureattack, atkC4_beat_up, - atkC5_hidepreattack, - atkC6_unhidepostattack, + atkC5_setsemiinvulnerablebit, + atkC6_clearsemiinvulnerablebit, atkC7_setminimize, atkC8_sethail, atkC9_jumpifattackandspecialattackcannotfall, @@ -710,7 +714,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkE0_setstealstatchange, atkE1_intimidate_string_loader, atkE2_switchout_abilities, - atkE3_jumpiffainted, + atkE3_jumpifhasnohp, atkE4_getsecretpowereffect, atkE5_pickup, atkE6_castform_change_animation, @@ -871,6 +875,8 @@ static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, extern const struct SpriteTemplate SpriteTemplate_MonIconOnLvlUpBox; extern const u16 sProtectSuccessRates[]; +extern const u16 sNaturePowerMoves[]; +extern const u16 sWeightToDamageTable[]; void atk00_attackcanceler(void) { @@ -1163,7 +1169,7 @@ void atk02_attackstring(void) void atk03_ppreduce(void) { - s32 to_deduct = 1; + s32 ppToDeduct = 1; if (gBattleExecBuffer) return; @@ -1173,15 +1179,15 @@ void atk03_ppreduce(void) switch (gBattleMoves[gCurrentMove].target) { case MOVE_TARGET_FOES_AND_ALLY: - to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); + ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); break; case MOVE_TARGET_BOTH: case MOVE_TARGET_OPPONENTS_FIELD: - to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0); + ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_PRESSURE, 0, 0); break; default: if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE) - to_deduct++; + ppToDeduct++; break; } } @@ -1190,8 +1196,8 @@ void atk03_ppreduce(void) { gProtectStructs[gBankAttacker].notFirstStrike = 1; - if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct) - gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct; + if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > ppToDeduct) + gBattleMons[gBankAttacker].pp[gCurrMovePos] -= ppToDeduct; else gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0; @@ -2126,10 +2132,10 @@ void atk13_printfromtable(void) { if (gBattleExecBuffer == 0) { - u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); ptr += gBattleCommunication[MULTISTRING_CHOOSER]; - PrepareStringBattle(*(u16*)ptr, gBankAttacker); + PrepareStringBattle(*ptr, gBankAttacker); gBattlescriptCurrInstr += 5; gBattleCommunication[MSG_DISPLAY] = 1; @@ -2140,11 +2146,11 @@ void atk14_printfromtable_playeronly(void) { if (gBattleExecBuffer == 0) { - u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); ptr += gBattleCommunication[MULTISTRING_CHOOSER]; gActiveBank = gBankAttacker; - EmitPrintStringPlayerOnly(0, *(u16*)ptr); + EmitPrintStringPlayerOnly(0, *ptr); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 5; @@ -2729,23 +2735,17 @@ void SetMoveEffect(bool8 primary, u8 certain) gLastUsedAbility = gBattleMons[gBankTarget].ability; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } - else if (gBattleMons[gBankAttacker].item + else if (gBattleMons[gBankAttacker].item != 0 || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY - || (gBattleMons[gBankTarget].item > 0x78 && gBattleMons[gBankTarget].item < 0x85) + || IS_ITEM_MAIL(gBattleMons[gBankTarget].item) || gBattleMons[gBankTarget].item == 0) { gBattlescriptCurrInstr++; } else { - // This is a leftover from R/S direct use of ewram addresses - u16* changedItem; - GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(gBankAttacker, changedItem); + u16* changedItem = &gBattleStruct->changedItems[gBankAttacker]; gLastUsedItem = *changedItem = gBattleMons[gBankTarget].item; - - // A sane representation of this would simply be: - // gLastUsedItem = gBattleStruct->changedItems[gBankAttacker] = gBattleMons[gBankTarget].item; - gBattleMons[gBankTarget].item = 0; gActiveBank = gBankAttacker; @@ -2833,7 +2833,7 @@ void SetMoveEffect(bool8 primary, u8 certain) else { gLastUsedAbility = ABILITY_STICKY_HOLD; - gBattlescriptCurrInstr = BattleScript_StickyHoldOnKnockOff; + gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); } break; @@ -2868,7 +2868,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleCommunication[MOVE_EFFECT_BYTE] = 0; } -void atk15_seteffectwithchancetarget(void) +void atk15_seteffectwithchance(void) { u32 percentChance; @@ -3351,8 +3351,8 @@ void atk23_getexp(void) } else { - i = 0x149; - } + i = 0x149; + } // get exp getter bank if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -4816,8 +4816,7 @@ void atk49_moveend(void) case 7: // changed held items for (i = 0; i < gNoOfAllBanks; i++) { - u16* changedItem; - GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(i, changedItem); + u16* changedItem = &gBattleStruct->changedItems[i]; if (*changedItem != 0) { gBattleMons[i].item = *changedItem; @@ -5775,8 +5774,7 @@ void atk52_switch_in_effects(void) for (i = 0; i < gNoOfAllBanks; i++) { - u16* hpOnSwitchout; - GET_HP_SWITCHOUT_PTR_VIA_MEME_ACCESS(GetBankSide(i), hpOnSwitchout) + u16* hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(i)]; *hpOnSwitchout = gBattleMons[i].hp; } @@ -6413,7 +6411,7 @@ void atk6A_removeitem(void) gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); - GET_USED_ITEM_PTR_VIA_MEME_ACCESS(gActiveBank, usedHeldItem) + usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank]; *usedHeldItem = gBattleMons[gActiveBank].item; gBattleMons[gActiveBank].item = 0; @@ -6653,7 +6651,7 @@ bool8 sub_804F344(void) return (gBattle_BG2_X != 0x1A0); } -#define MON_ICON_LVLUP_BOX_TAG 0xD75A +#define MON_ICON_LVLUP_BOX_TAG 0xD75A #define sDestroy data0 #define sSavedLvlUpBoxXPosition data1 @@ -8148,9 +8146,9 @@ void atk97_try_infatuation(void) || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION || GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == MON_GENDERLESS || GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) == MON_GENDERLESS) - { - gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); - } + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } else { gBattleMons[gBankTarget].status2 |= STATUS2_INFATUATED_WITH(gBankAttacker); @@ -8296,8 +8294,9 @@ void atk9C_set_substitute(void) } extern const u16 gMovesForbiddenToCopy[]; -#define MIMIC_FORBIDDEN_END 0xFFFE -#define METRONOME_SLEEPTALK_FORBIDDEN_END 0xFFFF +#define MIMIC_FORBIDDEN_END 0xFFFE +#define METRONOME_FORBIDDEN_END 0xFFFF +#define ASSIST_FORBIDDEN_END 0xFFFF static bool8 IsMoveUncopyableByMimic(u16 move) { @@ -8368,11 +8367,11 @@ void atk9E_metronome(void) { if (*move == gCurrentMove) break; - if (*move == METRONOME_SLEEPTALK_FORBIDDEN_END) + if (*move == METRONOME_FORBIDDEN_END) break; } - if (*move == METRONOME_SLEEPTALK_FORBIDDEN_END) + if (*move == METRONOME_FORBIDDEN_END) break; } @@ -8974,3 +8973,1666 @@ void atkA8_copymovepermanently(void) // sketch } } +bool8 IsTwoTurnsMove(u16 move) +{ + if (gBattleMoves[move].effect == EFFECT_SKULL_BASH + || gBattleMoves[move].effect == EFFECT_RAZOR_WIND + || gBattleMoves[move].effect == EFFECT_SKY_ATTACK + || gBattleMoves[move].effect == EFFECT_SOLARBEAM + || gBattleMoves[move].effect == EFFECT_FLY + || gBattleMoves[move].effect == EFFECT_BIDE) + return TRUE; + else + return FALSE; +} + +static bool8 IsInvalidForSleepTalkOrAssist(u16 move) +{ + if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST + || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) + return TRUE; + else + return FALSE; +} + +u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 +{ + // first argument is unused + if (gBattleMoves[move].effect == EFFECT_SOLARBEAM + && (gBattleWeather & WEATHER_SUN_ANY)) + return 2; + + if (gBattleMoves[move].effect == EFFECT_SKULL_BASH + || gBattleMoves[move].effect == EFFECT_RAZOR_WIND + || gBattleMoves[move].effect == EFFECT_SKY_ATTACK + || gBattleMoves[move].effect == EFFECT_SOLARBEAM + || gBattleMoves[move].effect == EFFECT_FLY + || gBattleMoves[move].effect == EFFECT_BIDE) + { + if ((gHitMarker & HITMARKER_x8000000)) + return 1; + } + return 2; +} + +void atkA9_sleeptalk_choose_move(void) +{ + s32 i; + u8 unusableMovesBits = 0; + + for (i = 0; i < 4; i++) + { + if (IsInvalidForSleepTalkOrAssist(gBattleMons[gBankAttacker].moves[i]) + || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH + || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR + || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i])) + { + unusableMovesBits |= gBitTable[i]; + } + + } + + unusableMovesBits = CheckMoveLimitations(gBankAttacker, unusableMovesBits, ~(MOVE_LIMITATION_PP)); + if (unusableMovesBits == 0xF) // all 4 moves cannot be chosen + { + gBattlescriptCurrInstr += 5; + } + else // at least one move can be chosen + { + u32 movePosition; + + do + { + movePosition = Random() & 3; + } while ((gBitTable[movePosition] & unusableMovesBits)); + + gRandomMove = gBattleMons[gBankAttacker].moves[movePosition]; + gCurrMovePos = movePosition; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBankTarget = GetMoveTarget(gRandomMove, 0); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkAA_set_destinybond(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND; + gBattlescriptCurrInstr++; +} + +void DestinyBondFlagUpdate(void) +{ + u8 sideAttacker = GetBankSide(gBankAttacker); + u8 sideTarget = GetBankSide(gBankTarget); + if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND + && sideAttacker != sideTarget + && !(gHitMarker & HITMARKER_GRUDGE)) + { + gHitMarker |= HITMARKER_DESTINYBOND; + } +} + +void atkAB_DestinyBondFlagUpdate(void) +{ + DestinyBondFlagUpdate(); + gBattlescriptCurrInstr++; +} + +extern const u8 sFlailHpScaleToPowerTable[12]; + +void atkAC_remaininghptopower(void) +{ + s32 i; + s32 hpFraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48); + + for (i = 0; i < (s32) sizeof(sFlailHpScaleToPowerTable); i += 2) + { + if (hpFraction <= sFlailHpScaleToPowerTable[i]) + break; + } + + gDynamicBasePower = sFlailHpScaleToPowerTable[i + 1]; + gBattlescriptCurrInstr++; +} + +void atkAD_spite_ppreduce(void) +{ + if (gLastUsedMovesByBanks[gBankTarget] != 0 + && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF) + { + s32 i; + + for (i = 0; i < 4; i++) + { + if (gLastUsedMovesByBanks[gBankTarget] == gBattleMons[gBankTarget].moves[i]) + break; + } + + if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1) + { + s32 ppToDeduct = (Random() & 3) + 2; + if (gBattleMons[gBankTarget].pp[i] < ppToDeduct) + ppToDeduct = gBattleMons[gBankTarget].pp[i]; + + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget]) + + ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1); + + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 1, ppToDeduct) + + gBattleMons[gBankTarget].pp[i] -= ppToDeduct; + gActiveBank = gBankTarget; + + if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i]) + && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + { + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); + MarkBufferBankForExecution(gActiveBank); + } + + gBattlescriptCurrInstr += 5; + + if (gBattleMons[gBankTarget].pp[i] == 0) + CancelMultiTurnMoves(gBankTarget); + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkAE_heal_party_status(void) +{ + u32 zero = 0; + u8 toHeal = 0; + + if (gCurrentMove == MOVE_HEAL_BELL) + { + struct Pokemon* party; + s32 i; + + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBankAttacker].status1 = 0; + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + } + else + { + RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 1; + } + + gActiveBank = gBattleScripting.bank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBankFlags & gBitTable[gActiveBank])) + { + if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gActiveBank].status1 = 0; + gBattleMons[gActiveBank].status2 &= ~(STATUS2_NIGHTMARE); + } + else + { + RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 2; + } + } + + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&party[i], MON_DATA_SPECIES2); + u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY); + + if (species != 0 && species != SPECIES_EGG) + { + u8 ability; + + if (gBattlePartyID[gBankAttacker] == i) + ability = gBattleMons[gBankAttacker].ability; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattlePartyID[gActiveBank] == i + && !(gAbsentBankFlags & gBitTable[gActiveBank])) + ability = gBattleMons[gActiveBank].ability; + else + ability = GetAbilityBySpecies(species, abilityBit); + + if (ability != ABILITY_SOUNDPROOF) + toHeal |= (1 << i); + } + } + } + else // Aromatherapy + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + toHeal = 0x3F; + + gBattleMons[gBankAttacker].status1 = 0; + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBankFlags & gBitTable[gActiveBank])) + { + gBattleMons[gActiveBank].status1 = 0; + gBattleMons[gActiveBank].status2 &= ~(STATUS2_NIGHTMARE); + } + + } + + if (toHeal) + { + gActiveBank = gBankAttacker; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero); + MarkBufferBankForExecution(gActiveBank); + } + + gBattlescriptCurrInstr++; +} + +void atkAF_cursetarget(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_CURSED; + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + gBattlescriptCurrInstr += 5; + } +} + +void atkB0_set_spikes(void) +{ + u8 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE; + + if (gSideTimers[targetSide].spikesAmount == 3) + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gSideAffecting[targetSide] |= SIDE_STATUS_SPIKES; + gSideTimers[targetSide].spikesAmount++; + gBattlescriptCurrInstr += 5; + } +} + +void atkB1_set_foresight(void) +{ + gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT; + gBattlescriptCurrInstr++; +} + +void atkB2_setperishsong(void) +{ + s32 i; + s32 notAffectedCount = 0; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_PERISH_SONG + || gBattleMons[i].ability == ABILITY_SOUNDPROOF) + { + notAffectedCount++; + } + else + { + gStatuses3[i] |= STATUS3_PERISH_SONG; + gDisableStructs[i].perishSong1 = 3; + gDisableStructs[i].perishSong2 = 3; + } + } + + PressurePPLoseOnUsingPerishSong(gBankAttacker); + + if (notAffectedCount == gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +void atkB3_rolloutdamagecalculation(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove; + } + else + { + s32 i; + + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) // first hit + { + gDisableStructs[gBankAttacker].rolloutTimer1 = 5; + gDisableStructs[gBankAttacker].rolloutTimer2 = 5; + gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gBankAttacker] = gCurrentMove; + } + if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0) // last hit + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + } + + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + + for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutTimer1); i++) + gDynamicBasePower *= 2; + + if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL) + gDynamicBasePower *= 2; + + gBattlescriptCurrInstr++; + } +} + +void atkB4_jumpifconfusedandstatmaxed(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION + && gBattleMons[gBankTarget].statStages[gBattlescriptCurrInstr[1]] == 0xC) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +void atkB5_furycuttercalc(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gDisableStructs[gBankAttacker].furyCutterCounter = 0; + gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove; + } + else + { + s32 i; + + if (gDisableStructs[gBankAttacker].furyCutterCounter != 5) + gDisableStructs[gBankAttacker].furyCutterCounter++; + + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + + for (i = 1; i < gDisableStructs[gBankAttacker].furyCutterCounter; i++) + gDynamicBasePower *= 2; + + gBattlescriptCurrInstr++; + } +} + +void atkB6_happinesstodamagecalculation(void) +{ + if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) + gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25; + else // EFFECT_FRUSTRATION + gDynamicBasePower = 10 * (255 - gBattleMons[gBankAttacker].friendship) / 25; + + gBattlescriptCurrInstr++; +} + +extern const u8 BattleScript_PresentDamageTarget[]; +extern const u8 BattleScript_AlreadyAtFullHp[]; +extern const u8 BattleScript_PresentHealTarget[]; + +void atkB7_presentdamagecalculation(void) +{ + s32 rand = Random() & 0xFF; + + if (rand < 102) + gDynamicBasePower = 40; + else if (rand < 178) + gDynamicBasePower = 80; + else if (rand < 204) + gDynamicBasePower = 120; + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + if (rand < 204) + gBattlescriptCurrInstr = BattleScript_PresentDamageTarget; + else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp) + gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp; + else + { + gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED); + gBattlescriptCurrInstr = BattleScript_PresentHealTarget; + } +} + +void atkB8_set_safeguard(void) +{ + if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_SAFEGUARD; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].safeguardTimer = 5; + gSideTimers[GET_BANK_SIDE(gBankAttacker)].safeguardBank = gBankAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + + gBattlescriptCurrInstr++; +} + +void atkB9_magnitudedamagecalculation(void) +{ + s32 magnitude = Random() % 100; + + if (magnitude < 5) + { + gDynamicBasePower = 10; + magnitude = 4; + } + else if (magnitude < 15) + { + gDynamicBasePower = 30; + magnitude = 5; + } + else if (magnitude < 35) + { + gDynamicBasePower = 50; + magnitude = 6; + } + else if (magnitude < 65) + { + gDynamicBasePower = 70; + magnitude = 7; + } + else if (magnitude < 85) + { + gDynamicBasePower = 90; + magnitude = 8; + } + else if (magnitude < 95) + { + gDynamicBasePower = 110; + magnitude = 9; + } + else + { + gDynamicBasePower = 150; + magnitude = 10; + } + + + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 2, magnitude) + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) // a valid target was found + break; + } + + gBattlescriptCurrInstr++; +} + +void atkBA_jumpifnopursuitswitchdmg(void) +{ + if (gMultiHitCounter == 1) + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1); + } + else + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + else + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + + if (gActionForBanks[gBankTarget] == 0 + && gBankAttacker == *(gBattleStruct->moveTarget + gBankTarget) + && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + && gBattleMons[gBankAttacker].hp + && !gDisableStructs[gBankTarget].truantCounter + && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT) + { + s32 i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == gBankTarget) + gUnknown_0202407A[i] = 11; + } + + gCurrentMove = MOVE_PURSUIT; + gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovesIds + gBankTarget); + gBattlescriptCurrInstr += 5; + gBattleScripting.animTurn = 1; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkBB_setsunny(void) +{ + if (gBattleWeather & WEATHER_SUN_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SUN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gWishFutureKnock.weatherDuration = 5; + } + + gBattlescriptCurrInstr++; +} + +void atkBC_maxattackhalvehp(void) // belly drum +{ + u32 halfHp = gBattleMons[gBankAttacker].maxHP / 2; + + if (!(gBattleMons[gBankAttacker].maxHP / 2)) + halfHp = 1; + + if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12 + && gBattleMons[gBankAttacker].hp > halfHp) + { + gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] = 12; + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkBD_copyfoestats(void) // psych up +{ + s32 i; + + for (i = 0; i < BATTLE_STATS_NO; i++) + { + gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i]; + } + + gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter. +} + +extern const u8 BattleScript_WrapFree[]; +extern const u8 BattleScript_LeechSeedFree[]; +extern const u8 BattleScript_SpikesFree[]; + +void atkBE_rapidspinfree(void) +{ + if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED) + { + gBattleScripting.bank = gBankTarget; + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED); + gBankTarget = *(gBattleStruct->wrappedBy + gBankAttacker); + + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; + gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gBankAttacker * 2 + 0); + gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gBankAttacker * 2 + 1); + gBattleTextBuff1[4] = B_BUFF_EOS; + + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WrapFree; + } + else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED) + { + gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED); + gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_LeechSeedFree; + } + else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES) + { + gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES); + gSideTimers[GetBankSide(gBankAttacker)].spikesAmount = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SpikesFree; + } + else + { + gBattlescriptCurrInstr++; + } +} + +void atkBF_set_defense_curl(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL; + gBattlescriptCurrInstr++; +} + +void atkC0_recoverbasedonsunlight(void) +{ + gBankTarget = gBankAttacker; + + if (gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP) + { + if (gBattleWeather == 0 || !WEATHER_HAS_EFFECT) + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + else if (gBattleWeather & WEATHER_SUN_ANY) + gBattleMoveDamage = 20 * gBattleMons[gBankAttacker].maxHP / 30; + else // not sunny weather + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; + + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#ifdef NONMATCHING +void atkC1_hidden_power(void) +{ + s32 powerBits; + s32 typeBits; + + powerBits = ((gBattleMons[gBankAttacker].hpIV & 2) >> 1) + | ((gBattleMons[gBankAttacker].attackIV & 2) << 0) + | ((gBattleMons[gBankAttacker].defenseIV & 2) << 1) + | ((gBattleMons[gBankAttacker].speedIV & 2) << 2) + | ((gBattleMons[gBankAttacker].spAttackIV & 2) << 3) + | ((gBattleMons[gBankAttacker].spDefenseIV & 2) << 4); + + typeBits = ((gBattleMons[gBankAttacker].hpIV & 1) << 0) + | ((gBattleMons[gBankAttacker].attackIV & 1) << 1) + | ((gBattleMons[gBankAttacker].defenseIV & 1) << 2) + | ((gBattleMons[gBankAttacker].speedIV & 1) << 3) + | ((gBattleMons[gBankAttacker].spAttackIV & 1) << 4) + | ((gBattleMons[gBankAttacker].spDefenseIV & 1) << 5); + + gDynamicBasePower = (40 * powerBits) / 63 + 30; + + gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1; + if (gBattleStruct->dynamicMoveType > 8) + gBattleStruct->dynamicMoveType++; + gBattleStruct->dynamicMoveType |= 0xC0; + + gBattlescriptCurrInstr++; +} + +#else +__attribute__((naked)) +void atkC1_hidden_power(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r2, =gBattleMons\n\ + ldr r0, =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r4, r1, 0\n\ + muls r4, r0\n\ + adds r4, r2\n\ + ldrb r0, [r4, 0x14]\n\ + mov r10, r0\n\ + mov r7, r10\n\ + lsls r7, 27\n\ + adds r0, r7, 0\n\ + lsrs r0, 27\n\ + mov r10, r0\n\ + movs r1, 0x2\n\ + mov r2, r10\n\ + ands r2, r1\n\ + asrs r2, 1\n\ + ldrh r7, [r4, 0x14]\n\ + mov r9, r7\n\ + mov r0, r9\n\ + lsls r0, 22\n\ + mov r9, r0\n\ + lsrs r3, r0, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + orrs r2, r0\n\ + ldrb r7, [r4, 0x15]\n\ + mov r8, r7\n\ + mov r0, r8\n\ + lsls r0, 25\n\ + mov r8, r0\n\ + lsrs r3, r0, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 1\n\ + orrs r2, r0\n\ + ldr r6, [r4, 0x14]\n\ + lsls r6, 12\n\ + lsrs r3, r6, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 2\n\ + orrs r2, r0\n\ + ldrh r5, [r4, 0x16]\n\ + lsls r5, 23\n\ + lsrs r3, r5, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 3\n\ + orrs r2, r0\n\ + ldrb r3, [r4, 0x17]\n\ + lsls r3, 26\n\ + lsrs r0, r3, 27\n\ + ands r1, r0\n\ + lsls r1, 4\n\ + orrs r2, r1\n\ + movs r1, 0x1\n\ + adds r4, r1, 0\n\ + mov r7, r10\n\ + ands r4, r7\n\ + mov r0, r9\n\ + lsrs r0, 27\n\ + mov r9, r0\n\ + adds r0, r1, 0\n\ + mov r7, r9\n\ + ands r0, r7\n\ + lsls r0, 1\n\ + orrs r4, r0\n\ + mov r0, r8\n\ + lsrs r0, 27\n\ + mov r8, r0\n\ + adds r0, r1, 0\n\ + mov r7, r8\n\ + ands r0, r7\n\ + lsls r0, 2\n\ + orrs r4, r0\n\ + lsrs r6, 27\n\ + adds r0, r1, 0\n\ + ands r0, r6\n\ + lsls r0, 3\n\ + orrs r4, r0\n\ + lsrs r5, 27\n\ + adds r0, r1, 0\n\ + ands r0, r5\n\ + lsls r0, 4\n\ + orrs r4, r0\n\ + lsrs r3, 27\n\ + ands r1, r3\n\ + lsls r1, 5\n\ + orrs r4, r1\n\ + ldr r5, =gDynamicBasePower\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 3\n\ + movs r1, 0x3F\n\ + bl __divsi3\n\ + adds r0, 0x1E\n\ + strh r0, [r5]\n\ + ldr r6, =gBattleStruct\n\ + ldr r5, [r6]\n\ + lsls r0, r4, 4\n\ + subs r0, r4\n\ + movs r1, 0x3F\n\ + bl __divsi3\n\ + adds r0, 0x1\n\ + strb r0, [r5, 0x13]\n\ + ldr r1, [r6]\n\ + ldrb r0, [r1, 0x13]\n\ + cmp r0, 0x8\n\ + bls _080544F0\n\ + adds r0, 0x1\n\ + strb r0, [r1, 0x13]\n\ +_080544F0:\n\ + ldr r2, [r6]\n\ + ldrb r0, [r2, 0x13]\n\ + movs r1, 0xC0\n\ + orrs r0, r1\n\ + strb r0, [r2, 0x13]\n\ + ldr r1, =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\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\ + .pool\n\ + .syntax divided"); +} +#endif // NONMATCHING + +void atkC2_selectnexttarget(void) +{ + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + gBattlescriptCurrInstr++; +} + +void atkC3_setfutureattack(void) +{ + if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gSideAffecting[GET_BANK_SIDE(gBankTarget)] |= SIDE_STATUS_FUTUREATTACK; + gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove; + gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker; + gWishFutureKnock.futureSightCounter[gBankTarget] = 3; + gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + gSideAffecting[GET_BANK_SIDE(gBankTarget)], 0, + 0, gBankAttacker, gBankTarget); + + if (gProtectStructs[gBankAttacker].helpingHand) + gWishFutureKnock.futureSightDmg[gBankTarget] = gWishFutureKnock.futureSightDmg[gBankTarget] * 15 / 10; + + if (gCurrentMove == MOVE_DOOM_DESIRE) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + gBattlescriptCurrInstr += 5; + } +} + +void atkC4_beat_up(void) +{ + struct Pokemon* party; + + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleMons[gBankTarget].hp == 0) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + u8 beforeLoop = gBattleCommunication[0]; + for (;gBattleCommunication[0] < 6; gBattleCommunication[0]++) + { + if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG + && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS)) + break; + } + if (gBattleCommunication[0] < 6) + { + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBankAttacker, gBattleCommunication[0]) + + gBattlescriptCurrInstr += 9; + + gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack; + gBattleMoveDamage *= gBattleMoves[gCurrentMove].power; + gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2); + gBattleMoveDamage /= gBaseStats[gBattleMons[gBankTarget].species].baseDefense; + gBattleMoveDamage = (gBattleMoveDamage / 50) + 2; + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + + gBattleCommunication[0]++; + } + else if (beforeLoop != 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + } +} + +void atkC5_setsemiinvulnerablebit(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBankAttacker] |= STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBankAttacker] |= STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBankAttacker] |= STATUS3_UNDERWATER; + break; + } + + gBattlescriptCurrInstr++; +} + +void atkC6_clearsemiinvulnerablebit(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBankAttacker] &= ~STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBankAttacker] &= ~STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBankAttacker] &= ~STATUS3_UNDERWATER; + break; + } + + gBattlescriptCurrInstr++; +} + +void atkC7_setminimize(void) +{ + if (gHitMarker & HITMARKER_OBEYS) + gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED; + + gBattlescriptCurrInstr++; +} + +void atkC8_sethail(void) +{ + if (gBattleWeather & WEATHER_HAIL_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_HAIL; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + gWishFutureKnock.weatherDuration = 5; + } + + gBattlescriptCurrInstr++; +} + +void atkC9_jumpifattackandspecialattackcannotfall(void) // memento +{ + if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0 + && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0 + && gBattleCommunication[6] != 1) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gActiveBank = gBankAttacker; + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + EmitHealthBarUpdate(0, 0x7FFF); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } +} + +void atkCA_setforcedtarget(void) // follow me +{ + gSideTimers[GetBankSide(gBankAttacker)].followmeTimer = 1; + gSideTimers[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker; + gBattlescriptCurrInstr++; +} + +void atkCB_setcharge(void) +{ + gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP; + gDisableStructs[gBankAttacker].chargeTimer1 = 2; + gDisableStructs[gBankAttacker].chargeTimer2 = 2; + gBattlescriptCurrInstr++; +} + +void atkCC_callterrainattack(void) // nature power +{ + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = sNaturePowerMoves[gBattleTerrain]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); + gBattlescriptCurrInstr++; +} + +void atkCD_cureifburnedparalysedorpoisoned(void) // refresh +{ + if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + { + gBattleMons[gBankAttacker].status1 = 0; + gBattlescriptCurrInstr += 5; + gActiveBank = gBankAttacker; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkCE_settorment(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_TORMENT; + gBattlescriptCurrInstr += 5; + } +} + +void atkCF_jumpifnodamage(void) +{ + if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +void atkD0_settaunt(void) +{ + if (gDisableStructs[gBankTarget].tauntTimer1 == 0) + { + gDisableStructs[gBankTarget].tauntTimer1 = 2; + gDisableStructs[gBankTarget].tauntTimer2 = 2; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkD1_set_helpinghand(void) +{ + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBankFlags & gBitTable[gBankTarget]) + && !gProtectStructs[gBankAttacker].helpingHand + && !gProtectStructs[gBankTarget].helpingHand) + { + gProtectStructs[gBankTarget].helpingHand = 1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkD2_swap_items(void) // trick +{ + // opponent can't swap items with player in regular battles + if (gBattleTypeFlags & BATTLE_TYPE_x4000000 + || (GetBankSide(gBankAttacker) == SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_SECRET_BASE + | BATTLE_TYPE_x2000000)))) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + u8 sideAttacker = GetBankSide(gBankAttacker); + u8 sideTarget = GetBankSide(gBankTarget); + + // you can't swap items if they were knocked off in regular battles + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_SECRET_BASE + | BATTLE_TYPE_x2000000)) + && (gWishFutureKnock.knockedOffPokes[sideAttacker] & gBitTable[gBattlePartyID[gBankAttacker]] + || gWishFutureKnock.knockedOffPokes[sideTarget] & gBitTable[gBattlePartyID[gBankTarget]])) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + // can't swap if two pokemon don't have an item + // or if either of them is an enigma berry or a mail + else if ((gBattleMons[gBankAttacker].item == 0 && gBattleMons[gBankTarget].item == 0) + || gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY + || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY + || IS_ITEM_MAIL(gBattleMons[gBankAttacker].item) + || IS_ITEM_MAIL(gBattleMons[gBankTarget].item)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + // check if ability prevents swapping + else if (gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) + { + gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + // took a while, but all checks passed and items can be safely swapped + else + { + u16 oldItemAtk, *newItemAtk; + + newItemAtk = &gBattleStruct->changedItems[gBankAttacker]; + oldItemAtk = gBattleMons[gBankAttacker].item; + *newItemAtk = gBattleMons[gBankTarget].item; + + gBattleMons[gBankAttacker].item = 0; + gBattleMons[gBankTarget].item = oldItemAtk; + + gActiveBank = gBankAttacker; + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk); + MarkBufferBankForExecution(gBankAttacker); + + gActiveBank = gBankTarget; + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0; + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankAttacker]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankAttacker]) + 1) = 0; + + gBattlescriptCurrInstr += 5; + + PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk) + PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk) + + if (oldItemAtk != 0 && *newItemAtk != 0) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; // attacker's item -> <- target's item + else if (oldItemAtk == 0 && *newItemAtk != 0) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; // nothing -> <- target's item + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; // attacker's item -> <- nothing + } + } +} + +void atkD3_copy_ability(void) // role play +{ + if (gBattleMons[gBankTarget].ability != 0 + && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD) + { + gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkD4_wish_effect(void) +{ + switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + case 0: // use wish + if (gWishFutureKnock.wishCounter[gBankAttacker] == 0) + { + gWishFutureKnock.wishCounter[gBankAttacker] = 2; + gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker]; + gBattlescriptCurrInstr += 6; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + } + break; + case 1: // heal effect + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBankTarget, gWishFutureKnock.wishUserID[gBankTarget]) + + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + + break; + } +} + +void atkD5_setroots(void) // ingrain +{ + if (gStatuses3[gBankAttacker] & STATUS3_ROOTED) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gStatuses3[gBankAttacker] |= STATUS3_ROOTED; + gBattlescriptCurrInstr += 5; + } +} + +void atkD6_doubledamagedealtifdamaged(void) +{ + if ((gProtectStructs[gBankAttacker].physicalDmg + && gProtectStructs[gBankAttacker].physicalBank == gBankTarget) + || (gProtectStructs[gBankAttacker].specialDmg + && gProtectStructs[gBankAttacker].specialBank == gBankTarget)) + { + gBattleScripting.dmgMultiplier = 2; + } + + gBattlescriptCurrInstr++; +} + +void atkD7_setyawn(void) +{ + if (gStatuses3[gBankTarget] & STATUS3_YAWN + || gBattleMons[gBankTarget].status1 & STATUS_ANY) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gStatuses3[gBankTarget] |= 0x1000; + gBattlescriptCurrInstr += 5; + } +} + +void atkD8_setdamagetohealthdifference(void) +{ + if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].hp - gBattleMons[gBankAttacker].hp; + gBattlescriptCurrInstr += 5; + } +} + +void atkD9_scaledamagebyhealthratio(void) +{ + if (gDynamicBasePower == 0) + { + u8 power = gBattleMoves[gCurrentMove].power; + gDynamicBasePower = gBattleMons[gBankAttacker].hp * power / gBattleMons[gBankAttacker].maxHP; + if (gDynamicBasePower == 0) + gDynamicBasePower = 1; + } + gBattlescriptCurrInstr++; +} + +void atkDA_abilityswap(void) // skill swap +{ + if ((gBattleMons[gBankAttacker].ability == 0 + && gBattleMons[gBankTarget].ability == 0) + || gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD + || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD + || gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + u8 abilityAtk = gBattleMons[gBankAttacker].ability; + gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability; + gBattleMons[gBankTarget].ability = abilityAtk; + + gBattlescriptCurrInstr += 5; + } +} + +void atkDB_imprisoneffect(void) +{ + if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + u8 bank, sideAttacker; + + sideAttacker = GetBankSide(gBankAttacker); + PressurePPLoseOnUsingImprision(gBankAttacker); + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + if (sideAttacker != GetBankSide(bank)) + { + s32 attackerMoveId; + for (attackerMoveId = 0; attackerMoveId < 4; attackerMoveId++) + { + s32 i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[attackerMoveId] == gBattleMons[bank].moves[i] + && gBattleMons[gBankAttacker].moves[attackerMoveId] != MOVE_NONE) + break; + } + if (i != 4) + break; + } + if (attackerMoveId != 4) + { + gStatuses3[gBankAttacker] |= STATUS3_IMPRISONED_OTHERS; + gBattlescriptCurrInstr += 5; + break; + } + } + } + if (bank == gNoOfAllBanks) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkDC_setgrudge(void) +{ + if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gStatuses3[gBankAttacker] |= STATUS3_GRUDGE; + gBattlescriptCurrInstr += 5; + } +} + +void atkDD_weightdamagecalculation(void) +{ + s32 i; + for (i = 0; sWeightToDamageTable[i] != 0xFFFF; i += 2) + { + if (sWeightToDamageTable[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + break; + } + + if (sWeightToDamageTable[i] != 0xFFFF) + gDynamicBasePower = sWeightToDamageTable[i + 1]; + else + gDynamicBasePower = 120; + + gBattlescriptCurrInstr++; +} + +void atkDE_asistattackselect(void) +{ + s32 chooseableMovesNo = 0; + struct Pokemon* party; + s32 monId, moveId; + u16* movesArray = gBattleStruct->assistPossibleMoves; + + if (GET_BANK_SIDE(gBankAttacker) != SIDE_PLAYER) + party = gEnemyParty; + else + party = gPlayerParty; + + for (monId = 0; monId < 6; monId++) + { + if (monId == gBattlePartyID[gBankAttacker]) + continue; + if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + + for (moveId = 0; moveId < 4; moveId++) + { + s32 i = 0; + u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); + + if (IsInvalidForSleepTalkOrAssist(move)) + continue; + + for (; gMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != gMovesForbiddenToCopy[i]; i++); + + if (gMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END) + continue; + if (move == MOVE_NONE) + continue; + + movesArray[chooseableMovesNo] = move; + chooseableMovesNo++; + } + } + if (chooseableMovesNo) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gRandomMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8]; + gBankTarget = GetMoveTarget(gRandomMove, 0); + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +void atkDF_setmagiccoat(void) +{ + gBankTarget = gBankAttacker; + gSpecialStatuses[gBankAttacker].flag20 = 1; + if (gCurrentMoveTurn == gNoOfAllBanks - 1) // moves last turn + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gProtectStructs[gBankAttacker].bounceMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +void atkE0_setstealstatchange(void) // snatch +{ + gSpecialStatuses[gBankAttacker].flag20 = 1; + if (gCurrentMoveTurn == gNoOfAllBanks - 1) // moves last turn + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gProtectStructs[gBankAttacker].stealMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +void atkE1_intimidate_string_loader(void) +{ + u8 side; + + gBattleScripting.bank = gBattleStruct->intimidateBank; + side = GetBankSide(gBattleScripting.bank); + + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.bank].ability) + + for (;gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (GetBankSide(gBankTarget) == side) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + + if (gBankTarget >= gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +void atkE2_switchout_abilities(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + switch (gBattleMons[gActiveBank].ability) + { + case ABILITY_NATURAL_CURE: + gBattleMons[gActiveBank].status1 = 0; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBank)], 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + + gBattlescriptCurrInstr += 2; +} + +void atkE3_jumpifhasnohp(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleMons[gActiveBank].hp == 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +void atkE4_getsecretpowereffect(void) +{ + switch (gBattleTerrain) + { + case BATTLE_TERRAIN_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_POISON; + break; + case BATTLE_TERRAIN_LONG_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SLEEP; + break; + case BATTLE_TERRAIN_SAND: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ACC_MINUS_1; + break; + case BATTLE_TERRAIN_UNDERWATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_DEF_MINUS_1; + break; + case BATTLE_TERRAIN_WATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ATK_MINUS_1; + break; + case BATTLE_TERRAIN_POND: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1; + break; + case BATTLE_TERRAIN_ROCK: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION; + break; + case BATTLE_TERRAIN_CAVE: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH; + break; + default: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_PARALYSIS; + break; + } + gBattlescriptCurrInstr++; +} + +extern bool8 InBattlePike(void); +extern bool8 InBattlePyramid(void); +extern u16 GetBattlePyramidPickupItemId(void); + +extern const u16 gRarePickupItems[]; +extern const u16 gPickupItems[]; +extern const u8 gPickupProbabilities[]; + +void atkE5_pickup(void) +{ + if (!InBattlePike()) + { + s32 i; + u16 species, heldItem; + u8 ability; + + if (InBattlePyramid()) + { + for (i = 0; i < 6; i++) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + + if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY)) + ability = gBaseStats[species].ability2; + else + ability = gBaseStats[species].ability1; + + if (ability == ABILITY_PICKUP + && species != 0 + && species != SPECIES_EGG + && heldItem == ITEM_NONE + && (Random() % 10) == 0) + { + heldItem = GetBattlePyramidPickupItemId(); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); + } + } + } + else + { + for (i = 0; i < 6; i++) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + + if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY)) + ability = gBaseStats[species].ability2; + else + ability = gBaseStats[species].ability1; + + if (ability == ABILITY_PICKUP + && species != 0 + && species != SPECIES_EGG + && heldItem == ITEM_NONE + && (Random() % 10) == 0) + { + s32 j; + s32 rand = Random() % 100; + u8 lvlDivBy10 = (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) - 1) / 10; + if (lvlDivBy10 > 9) + lvlDivBy10 = 9; + + for (j = 0; j < 9; j++) + { + if (gPickupProbabilities[j] > rand) + { + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gPickupItems[lvlDivBy10 + j]); + break; + } + else if (rand == 99 || rand == 98) + { + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gRarePickupItems[lvlDivBy10 + (99 - rand)]); + break; + } + } + } + } + } + } + + gBattlescriptCurrInstr++; +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index d381c7544e..d44c0cb2fd 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1361,20 +1361,20 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon) void sub_806E994(void) { gLastUsedAbility = gBattleStruct->field_B0; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 4; + + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX; gBattleTextBuff1[2] = gBattleStruct->field_49; - gBattleTextBuff1[4] = EOS; + gBattleTextBuff1[4] = B_BUFF_EOS; + if (!GetBankSide(gBattleStruct->field_49)) gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[gBattleStruct->field_49]); else gBattleTextBuff1[3] = gBattlePartyID[gBattleStruct->field_49]; - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 4; - gBattleTextBuff2[2] = gBankInMenu; - gBattleTextBuff2[3] = pokemon_order_func(gBattlePartyID[gBankInMenu]); - gBattleTextBuff2[4] = EOS; - BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4); + + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBankInMenu, pokemon_order_func(gBattlePartyID[gBankInMenu])) + + BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4); } struct PokeItem @@ -1388,7 +1388,7 @@ extern const struct PokeItem gAlteringCaveWildMonHeldItems[9]; static s32 GetWildMonTableIdInAlteringCave(u16 species) { s32 i; - for (i = 0; i < 9; i++) + for (i = 0; i < (s32) ARRAY_COUNT(gAlteringCaveWildMonHeldItems); i++) if (gAlteringCaveWildMonHeldItems[i].species == species) return i; return 0; diff --git a/sym_ewram.txt b/sym_ewram.txt index 7c18d8225a..227f833852 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -268,7 +268,7 @@ gUnknown_02022F88: @ 2022F88 gBattleTypeFlags: @ 2022FEC .space 0x4 -gUnknown_02022FF0: @ 2022FF0 +gBattleTerrain: @ 2022FF0 .space 0x4 gUnknown_02022FF4: @ 2022FF4 @@ -382,7 +382,7 @@ gMultiHitCounter: @ 2024212 gBattlescriptCurrInstr: @ 2024214 .space 0x8 -gUnknown_0202421C: @ 202421C +gActionForBanks: @ 202421C .space 0x4 gUnknown_02024220: @ 2024220 From bc3b4b4d9ae6ab59c9ce3892b7d287ebd0ee13fa Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 28 Sep 2017 15:34:21 +0200 Subject: [PATCH 041/182] battle 4 commands are decompiled --- asm/battle_2.s | 30 +- asm/battle_4.s | 1923 ------------------------------ asm/battle_anim_80FE840.s | 30 +- asm/battle_frontier_1.s | 2 +- asm/contest.s | 4 +- asm/contest_link_80F57C4.s | 6 +- asm/evolution_scene.s | 14 +- asm/naming_screen.s | 6 +- asm/pokedex.s | 6 +- asm/pokemon_storage_system.s | 20 +- asm/pokenav.s | 4 +- asm/reshow_battle_screen.s | 4 +- asm/rom3.s | 12 +- asm/scrcmd.s | 2 +- asm/unknown_task.s | 2 +- data/battle_scripts_2.s | 8 +- include/battle.h | 33 +- include/battle_controllers.h | 13 +- include/battle_message.h | 2 + include/naming_screen.h | 12 + include/pokedex.h | 1 + include/pokemon_storage_system.h | 6 + ld_script.txt | 1 - src/battle_3.c | 172 ++- src/battle_4.c | 1888 +++++++++++++++++++---------- sym_ewram.txt | 2 +- 26 files changed, 1456 insertions(+), 2747 deletions(-) delete mode 100644 asm/battle_4.s create mode 100644 include/naming_screen.h create mode 100644 include/pokemon_storage_system.h diff --git a/asm/battle_2.s b/asm/battle_2.s index c96b80b1c9..9965793135 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -165,7 +165,7 @@ _080368BE: strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r1, [r0] ldr r0, =gUnknown_02022E22 strh r1, [r0] @@ -191,7 +191,7 @@ _080368FE: ldr r1, =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, =vblank_cb_08078BB4 + ldr r0, =VBlankCB_Battle bl SetVBlankCallback bl sub_803269C ldr r2, [r4] @@ -3906,8 +3906,8 @@ _08038A1E: .pool thumb_func_end sub_8038A04 - thumb_func_start vblank_cb_08078BB4 -vblank_cb_08078BB4: @ 8038A28 + thumb_func_start VBlankCB_Battle +VBlankCB_Battle: @ 8038A28 push {lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] @@ -3941,7 +3941,7 @@ _08038A3A: ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg @@ -3972,7 +3972,7 @@ _08038A3A: pop {r0} bx r0 .pool - thumb_func_end vblank_cb_08078BB4 + thumb_func_end VBlankCB_Battle thumb_func_start nullsub_17 nullsub_17: @ 8038B00 @@ -4379,7 +4379,7 @@ _08038E1A: strh r4, [r0] ldr r0, =gBattle_BG2_Y strh r4, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r4, [r0] ldr r0, =gUnknown_02022E22 strh r4, [r0] @@ -4399,7 +4399,7 @@ _08038E1A: ldr r1, =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, =vblank_cb_08078BB4 + ldr r0, =VBlankCB_Battle bl SetVBlankCallback ldr r0, =task00_0800F6FC movs r1, 0 @@ -4850,7 +4850,7 @@ sub_80392A8: @ 80392A8 strh r4, [r0] ldr r0, =gBattle_BG2_Y strh r4, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r4, [r0] ldr r0, =gUnknown_02022E22 strh r4, [r0] @@ -4873,7 +4873,7 @@ _080392FE: ldr r1, =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, =vblank_cb_08078BB4 + ldr r0, =VBlankCB_Battle bl SetVBlankCallback ldr r0, =sub_803937C bl SetMainCallback2 @@ -9307,7 +9307,7 @@ _0803B866: beq _0803B8B2 bl StopCryAndClearCrySongs ldr r0, =gUnknown_082DB8BE - bl b_call_bc_move_exec + bl BattleScriptExecute _0803B8B2: add sp, 0x4 pop {r3-r5} @@ -9561,7 +9561,7 @@ _0803BAE6: cmp r0, 0 beq _0803BB5C ldr r0, =gUnknown_082DB881 - bl b_call_bc_move_exec + bl BattleScriptExecute b _0803BB78 .pool _0803BB5C: @@ -9577,7 +9577,7 @@ _0803BB5C: cmp r0, 0 bne _0803BB78 ldr r0, =gUnknown_082DB8BE - bl b_call_bc_move_exec + bl BattleScriptExecute _0803BB78: pop {r3,r4} mov r8, r3 @@ -10866,7 +10866,7 @@ _0803C720: cmp r0, 0x3 bne _0803C760 ldr r0, =gUnknown_082DAAFE - bl b_call_bc_move_exec + bl BattleScriptExecute ldr r1, =gBattleCommunication ldrb r0, [r4] adds r0, r1 @@ -12739,7 +12739,7 @@ _0803D71C: cmp r0, 0 blt _0803D7A0 ldr r0, =gUnknown_082DB1FF - bl b_call_bc_move_exec + bl BattleScriptExecute b _0803D7E8 .pool _0803D7A0: diff --git a/asm/battle_4.s b/asm/battle_4.s deleted file mode 100644 index 096c195b0d..0000000000 --- a/asm/battle_4.s +++ /dev/null @@ -1,1923 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start atkE6_castform_change_animation -atkE6_castform_change_animation: @ 8055DFC - push {r4,lr} - ldr r4, =gActiveBank - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - strb r0, [r4] - ldr r1, =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - ldr r3, =gBattleStruct - cmp r0, 0 - beq _08055E2C - ldr r0, [r3] - adds r0, 0x7F - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_08055E2C: - ldr r0, [r3] - adds r0, 0x7F - ldrb r2, [r0] - movs r0, 0 - movs r1, 0 - bl EmitBattleAnimation - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkE6_castform_change_animation - - thumb_func_start atkE7_castform_data_change -atkE7_castform_data_change: @ 8055E64 - push {r4,lr} - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - bl CastformDataTypeChange - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08055E8E - ldr r0, =BattleScript_CastformChange - bl b_push_move_exec - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x7F - subs r1, r4, 0x1 - strb r1, [r0] -_08055E8E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkE7_castform_data_change - - thumb_func_start atkE8_settypebasedhalvers -atkE8_settypebasedhalvers: @ 8055EA4 - push {r4,lr} - movs r4, 0 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xC9 - bne _08055EF4 - ldr r1, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _08055F18 - orrs r1, r3 - str r1, [r2] - ldr r0, =gBattleCommunication - strb r4, [r0, 0x5] - b _08055F1C - .pool -_08055EF4: - ldr r1, =gStatuses3 - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 10 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _08055F18 - orrs r1, r3 - str r1, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - movs r4, 0x1 -_08055F18: - cmp r4, 0 - beq _08055F38 -_08055F1C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08055F52 - .pool -_08055F38: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08055F52: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkE8_settypebasedhalvers - - thumb_func_start atkE9_setweatherballtype -atkE9_setweatherballtype: @ 8055F5C - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08055FFC - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08055FFC - ldr r2, =gBattleWeather - ldrb r0, [r2] - cmp r0, 0 - beq _08055F9A - ldr r1, =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0xE] -_08055F9A: - ldrh r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08055FB8 - ldr r0, =gBattleStruct - ldr r1, [r0] - movs r0, 0x8B - b _08055FFA - .pool -_08055FB8: - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08055FCC - ldr r0, =gBattleStruct - ldr r1, [r0] - movs r0, 0x85 - b _08055FFA - .pool -_08055FCC: - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08055FE0 - ldr r0, =gBattleStruct - ldr r1, [r0] - movs r0, 0x8A - b _08055FFA - .pool -_08055FE0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08055FF4 - ldr r0, =gBattleStruct - ldr r1, [r0] - movs r0, 0x8F - b _08055FFA - .pool -_08055FF4: - ldr r0, =gBattleStruct - ldr r1, [r0] - movs r0, 0x80 -_08055FFA: - strb r0, [r1, 0x13] -_08055FFC: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end atkE9_setweatherballtype - - thumb_func_start atkEA_recycleitem -atkEA_recycleitem: @ 8056014 - push {r4-r7,lr} - sub sp, 0x4 - ldr r7, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r7] - ldr r1, =gBattleStruct - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, 0xB8 - ldr r1, [r1] - adds r6, r1, r0 - ldrh r5, [r6] - cmp r5, 0 - beq _08056094 - ldr r4, =gBattleMons - movs r3, 0x58 - adds r0, r2, 0 - muls r0, r3 - adds r0, r4 - ldrh r0, [r0, 0x2E] - cmp r0, 0 - bne _08056094 - ldr r1, =gLastUsedItem - strh r5, [r1] - strh r0, [r6] - ldrb r0, [r7] - muls r0, r3 - adds r0, r4 - ldrh r1, [r1] - strh r1, [r0, 0x2E] - ldrb r0, [r7] - muls r0, r3 - adds r1, r4, 0 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetMonData - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080560AE - .pool -_08056094: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080560AE: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkEA_recycleitem - - thumb_func_start atkEB_settypetoterrain -atkEB_settypetoterrain: @ 80560BC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gBattleMons - mov r8, r0 - ldr r7, =gBankAttacker - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - mov r1, r8 - adds r3, r0, r1 - movs r0, 0x21 - adds r0, r3 - mov r12, r0 - ldr r5, =sTerrainToType - ldr r4, =gBattleTerrain - ldrb r0, [r4] - adds r0, r5 - ldrb r2, [r0] - mov r1, r12 - ldrb r0, [r1] - adds r1, r2, 0 - cmp r0, r1 - beq _08056144 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - beq _08056144 - mov r0, r12 - strb r2, [r0] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - add r1, r8 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - adds r1, 0x22 - strb r0, [r1] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0805615E - .pool -_08056144: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0805615E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkEB_settypetoterrain - - thumb_func_start atkEC_pursuit_sth -atkEC_pursuit_sth: @ 805616C - push {r4-r6,lr} - ldr r5, =gBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r6, 0x1 - ands r0, r6 - cmp r0, 0 - beq _0805620C - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0805620C - ldr r0, =gActionForBanks - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0805620C - ldr r1, =gChosenMovesByBanks - lsls r0, r3, 1 - adds r0, r1 - ldrh r2, [r0] - cmp r2, 0xE4 - bne _0805620C - ldr r0, =gUnknown_0202407A - adds r0, r3, r0 - movs r1, 0xB - strb r1, [r0] - ldr r0, =gCurrentMove - strh r2, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r0, =gBattleScripting - strb r6, [r0, 0x18] - ldrb r1, [r5] - adds r0, 0x20 - strb r1, [r0] - ldrb r0, [r4] - strb r0, [r5] - b _08056226 - .pool -_0805620C: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08056226: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkEC_pursuit_sth - - thumb_func_start atkED_802B4B4 -atkED_802B4B4: @ 8056230 - push {r4,lr} - ldr r1, =gEffectBank - ldr r3, =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, =gBankTarget - lsls r0, 24 - lsrs r0, 24 - adds r4, r1, 0 - ldrb r1, [r2] - cmp r0, r1 - bne _08056264 - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x17] - strb r0, [r2] - strb r0, [r3] - b _0805626A - .pool -_08056264: - ldr r1, =gBattleScripting - ldrb r0, [r1, 0x17] - strb r0, [r2] -_0805626A: - ldrb r0, [r4] - strb r0, [r1, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkED_802B4B4 - - thumb_func_start atkEE_removelightscreenreflect -atkEE_removelightscreenreflect: @ 8056284 - push {r4,lr} - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSideTimers - lsls r3, r0, 1 - adds r0, r3, r0 - lsls r0, 2 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _080562AC - ldrb r1, [r4, 0x2] - cmp r1, 0 - beq _080562E4 -_080562AC: - ldr r2, =gSideAffecting - adds r2, r3, r2 - ldrh r1, [r2] - ldr r0, =0x0000fffe - ands r0, r1 - movs r3, 0 - ldr r1, =0x0000fffd - ands r0, r1 - strh r0, [r2] - strb r3, [r4] - strb r3, [r4, 0x2] - ldr r1, =gBattleScripting - movs r0, 0x1 - strb r0, [r1, 0x18] - strb r0, [r1, 0x19] - b _080562EA - .pool -_080562E4: - ldr r0, =gBattleScripting - strb r1, [r0, 0x18] - strb r1, [r0, 0x19] -_080562EA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkEE_removelightscreenreflect - - thumb_func_start atkEF_pokeball_catch_calculation -atkEF_pokeball_catch_calculation: @ 8056300 - push {r4-r6,lr} - movs r4, 0 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0805630E - b _08056696 -_0805630E: - ldr r5, =gActiveBank - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r6, =gBankTarget - movs r1, 0x1 - eors r0, r1 - strb r0, [r6] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0805635C - movs r0, 0 - movs r1, 0x5 - bl dp01_build_cmdbuf_x0D_a - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBE02 - b _08056694 - .pool -_0805635C: - movs r0, 0x80 - lsls r0, 2 - ands r1, r0 - cmp r1, 0 - beq _08056384 - movs r0, 0 - movs r1, 0x4 - bl dp01_build_cmdbuf_x0D_a - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBDCA - b _08056694 - .pool -_08056384: - ldr r0, =gLastUsedItem - ldrh r0, [r0] - cmp r0, 0x5 - bne _080563B0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x7C - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 8 - subs r0, r1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 24 - lsrs r5, r0, 24 - b _080563C8 - .pool -_080563B0: - ldr r3, =gBaseStats - ldr r2, =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r5, [r0, 0x8] -_080563C8: - ldr r2, =gLastUsedItem - ldrh r0, [r2] - cmp r0, 0x5 - bhi _080563D2 - b _080564C8 -_080563D2: - subs r0, 0x6 - cmp r0, 0x6 - bls _080563DA - b _080564D2 -_080563DA: - lsls r0, 2 - ldr r1, =_080563F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080563F4: - .4byte _08056410 - .4byte _08056440 - .4byte _08056452 - .4byte _08056480 - .4byte _080564B0 - .4byte _08056472 - .4byte _08056472 -_08056410: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0xB - beq _080564A4 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xB - beq _080564A4 - cmp r1, 0x6 - beq _080564A4 - cmp r0, 0x6 - beq _080564A4 - b _08056472 - .pool -_08056440: - bl sav1_map_get_light_level - lsls r0, 24 - lsrs r0, 24 - movs r4, 0xA - cmp r0, 0x5 - bne _080564D2 - movs r4, 0x23 - b _080564D2 -_08056452: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - cmp r1, 0x27 - bhi _08056472 - movs r0, 0x28 - subs r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bhi _080564D2 -_08056472: - movs r4, 0xA - b _080564D2 - .pool -_08056480: - ldr r2, =gBattleMons - ldr r0, =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - movs r4, 0xA - cmp r0, 0 - beq _080564D2 -_080564A4: - movs r4, 0x1E - b _080564D2 - .pool -_080564B0: - ldr r0, =gBattleResults - ldrb r0, [r0, 0x13] - adds r0, 0xA - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x28 - bls _080564D2 - movs r4, 0x28 - b _080564D2 - .pool -_080564C8: - ldr r1, =sBallCatchBonuses - ldrh r0, [r2] - subs r0, 0x2 - adds r0, r1 - ldrb r4, [r0] -_080564D2: - adds r0, r5, 0 - muls r0, r4 - movs r1, 0xA - bl __divsi3 - ldr r5, =gBattleMons - ldr r1, =gBankTarget - ldrb r2, [r1] - movs r1, 0x58 - adds r4, r2, 0 - muls r4, r1 - adds r3, r4, r5 - ldrh r2, [r3, 0x2C] - lsls r1, r2, 1 - adds r1, r2 - ldrh r2, [r3, 0x28] - lsls r2, 1 - subs r2, r1, r2 - muls r0, r2 - bl __divsi3 - adds r6, r0, 0 - adds r5, 0x4C - adds r4, r5 - ldr r4, [r4] - movs r0, 0x27 - ands r0, r4 - cmp r0, 0 - beq _0805650E - lsls r6, 1 -_0805650E: - movs r0, 0xD8 - ands r4, r0 - cmp r4, 0 - beq _08056522 - lsls r0, r6, 4 - subs r0, r6 - movs r1, 0xA - bl __udivsi3 - adds r6, r0, 0 -_08056522: - ldr r1, =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0x5 - beq _08056564 - cmp r0, 0x1 - bne _08056550 - ldr r0, =gBattleResults - ldrb r1, [r0, 0x5] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x5] - b _08056564 - .pool -_08056550: - ldr r0, =gBattleResults - ldrh r1, [r1] - adds r0, r1 - adds r1, r0, 0 - adds r1, 0x34 - ldrb r0, [r1] - cmp r0, 0xFE - bhi _08056564 - adds r0, 0x1 - strb r0, [r1] -_08056564: - cmp r6, 0xFE - bls _080565C8 - movs r0, 0 - movs r1, 0x4 - bl dp01_build_cmdbuf_x0D_a - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD84 - str r0, [r1] - ldr r1, =gBattlePartyID - ldr r0, =gBankTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - ldr r2, =gLastUsedItem - movs r1, 0x26 - bl SetMonData - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _08056656 - b _08056680 - .pool -_080565C8: - movs r0, 0xFF - lsls r0, 16 - adds r1, r6, 0 - bl __udivsi3 - bl Sqrt - lsls r0, 16 - lsrs r0, 16 - bl Sqrt - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, =0x000ffff0 - adds r1, r6, 0 - bl __udivsi3 - adds r6, r0, 0 - movs r4, 0 - b _080565FA - .pool -_080565F4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080565FA: - cmp r4, 0x3 - bhi _0805660A - bl Random - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcc _080565F4 -_0805660A: - ldr r5, =gLastUsedItem - ldrh r0, [r5] - cmp r0, 0x1 - bne _08056614 - movs r4, 0x4 -_08056614: - movs r0, 0 - adds r1, r4, 0 - bl dp01_build_cmdbuf_x0D_a - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - cmp r4, 0x4 - bne _0805668C - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD84 - str r0, [r1] - ldr r1, =gBattlePartyID - ldr r0, =gBankTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x26 - adds r2, r5, 0 - bl SetMonData - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _08056680 -_08056656: - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - b _08056696 - .pool -_08056680: - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08056696 - .pool -_0805668C: - ldr r0, =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBDD4 -_08056694: - str r0, [r1] -_08056696: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end atkEF_pokeball_catch_calculation - - thumb_func_start atkF0_copy_caught_poke -atkF0_copy_caught_poke: @ 80566A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattlePartyID - mov r9, r0 - ldr r5, =gBankAttacker - ldrb r0, [r5] - movs r6, 0x1 - eors r0, r6 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - movs r7, 0x64 - muls r0, r7 - ldr r1, =gEnemyParty - mov r8, r1 - add r0, r8 - bl GiveMonToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08056792 - bl sub_813B21C - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08056734 - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] - ldr r4, =gStringVar1 - ldr r0, =0x00004036 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sav3_get_box_name - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5] - eors r0, r6 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - add r0, r8 - ldr r2, =gStringVar2 - movs r1, 0x2 - bl GetMonData - b _0805677E - .pool -_08056734: - ldr r4, =gStringVar1 - ldr r0, =0x00004036 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sav3_get_box_name - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5] - eors r0, r6 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - add r0, r8 - ldr r2, =gStringVar2 - movs r1, 0x2 - bl GetMonData - ldr r4, =gStringVar3 - bl get_unknown_box_id - lsls r0, 24 - lsrs r0, 24 - bl sav3_get_box_name - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] -_0805677E: - ldr r0, =0x000008ab - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08056792 - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] -_08056792: - ldr r0, =gBattlePartyID - mov r10, r0 - ldr r1, =gBankAttacker - mov r9, r1 - ldrb r0, [r1] - movs r4, 0x1 - eors r0, r4 - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, =gEnemyParty - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - ldr r5, =gBattleResults - strh r0, [r5, 0x28] - mov r1, r9 - ldrb r0, [r1] - eors r0, r4 - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - adds r2, r5, 0 - adds r2, 0x2A - movs r1, 0x2 - bl GetMonData - mov r1, r9 - ldrb r0, [r1] - eors r4, r0 - lsls r4, 1 - add r4, r10 - ldrh r0, [r4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0x26 - movs r2, 0 - bl GetMonData - movs r1, 0xF - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0x3D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkF0_copy_caught_poke - - thumb_func_start atkF1_setpoke_as_caught -atkF1_setpoke_as_caught: @ 8056850 - push {r4,r5,lr} - ldr r4, =gEnemyParty - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl GetMonData - adds r4, r0, 0 - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080568A8 - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080568C2 - .pool -_080568A8: - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - adds r2, r4, 0 - bl HandleSetPokedexFlag - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080568C2: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end atkF1_setpoke_as_caught - - thumb_func_start atkF2_display_dex_info -atkF2_display_dex_info: @ 80568CC - push {r4,lr} - sub sp, 0x4 - ldr r0, =gEnemyParty - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x5 - bls _080568E8 - b _08056A2C -_080568E8: - lsls r0, 2 - ldr r1, =_08056900 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08056900: - .4byte _08056918 - .4byte _0805692A - .4byte _08056978 - .4byte _080569C8 - .4byte _080569E0 - .4byte _08056A18 -_08056918: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08056A06 -_0805692A: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08056938 - b _08056A2C -_08056938: - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldr r3, =gBattleMons - ldr r1, =gBankTarget - ldrb r2, [r1] - movs r1, 0x58 - muls r2, r1 - adds r1, r3, 0 - adds r1, 0x54 - adds r1, r2, r1 - ldr r1, [r1] - adds r3, 0x48 - adds r2, r3 - ldr r2, [r2] - bl sub_80BFDF4 - ldr r1, =gBattleCommunication - strb r0, [r1, 0x1] - b _08056A08 - .pool -_08056978: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08056A2C - ldr r0, =gMain - ldr r1, [r0, 0x4] - ldr r0, =BattleMainCB2 - cmp r1, r0 - bne _08056A2C - ldr r2, =gTasks - ldr r4, =gBattleCommunication - ldrb r1, [r4, 0x1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _08056A2C - ldr r0, =vblank_cb_08078BB4 - bl SetVBlankCallback - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08056A2C - .pool -_080569C8: - bl c2_berry_program_update_menu - bl sub_8035AA4 - ldr r1, =gUnknown_02022E20 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - b _08056A06 - .pool -_080569E0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08056A2C - ldr r0, =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg -_08056A06: - ldr r1, =gBattleCommunication -_08056A08: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08056A2C - .pool -_08056A18: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08056A2C - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08056A2C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end atkF2_display_dex_info - - thumb_func_start sub_8056A3C -sub_8056A3C: @ 8056A3C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r4, [sp, 0x40] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x10] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x1C] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x14] - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - movs r1, 0 - add r0, sp, 0xC - strh r1, [r0] - ldr r6, [sp, 0x10] - cmp r6, r3 - ble _08056A76 - b _08056B62 -_08056A76: - mov r4, r8 - adds r0, r6, 0x1 - str r0, [sp, 0x18] - ldr r2, [sp, 0x1C] - cmp r4, r2 - bgt _08056B58 - add r5, sp, 0xC - lsls r7, r6, 24 - mov r9, r7 -_08056A88: - ldr r0, [sp, 0x10] - cmp r6, r0 - bne _08056AB4 - cmp r4, r8 - bne _08056A9C - ldr r0, =0x00001022 - b _08056AFE - .pool -_08056A9C: - ldr r2, [sp, 0x1C] - cmp r4, r2 - bne _08056AAC - ldr r0, =0x00001024 - b _08056AFE - .pool -_08056AAC: - ldr r0, =0x00001023 - b _08056AFE - .pool -_08056AB4: - ldr r7, [sp, 0x14] - cmp r6, r7 - bne _08056AE0 - cmp r4, r8 - bne _08056AC8 - ldr r0, =0x00001028 - b _08056AFE - .pool -_08056AC8: - ldr r0, [sp, 0x1C] - cmp r4, r0 - bne _08056AD8 - ldr r0, =0x0000102a - b _08056AFE - .pool -_08056AD8: - ldr r0, =0x00001029 - b _08056AFE - .pool -_08056AE0: - cmp r4, r8 - bne _08056AEC - ldr r0, =0x00001025 - b _08056AFE - .pool -_08056AEC: - ldr r2, [sp, 0x1C] - cmp r4, r2 - bne _08056AFC - ldr r0, =0x00001027 - b _08056AFE - .pool -_08056AFC: - ldr r0, =0x00001026 -_08056AFE: - strh r0, [r5] - movs r1, 0x1 - mov r0, r10 - ands r0, r1 - cmp r0, 0 - beq _08056B0E - movs r0, 0 - strh r0, [r5] -_08056B0E: - movs r0, 0x80 - mov r7, r10 - ands r0, r7 - cmp r0, 0 - beq _08056B38 - lsls r2, r4, 24 - lsrs r2, 24 - str r1, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x1 - add r1, sp, 0xC - mov r7, r9 - lsrs r3, r7, 24 - bl CopyToBgTilemapBufferRect_ChangePalette - b _08056B50 - .pool -_08056B38: - lsls r2, r4, 24 - lsrs r2, 24 - str r1, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - mov r7, r9 - lsrs r3, r7, 24 - bl CopyToBgTilemapBufferRect_ChangePalette -_08056B50: - adds r4, 0x1 - ldr r0, [sp, 0x1C] - cmp r4, r0 - ble _08056A88 -_08056B58: - ldr r6, [sp, 0x18] - ldr r2, [sp, 0x14] - cmp r6, r2 - bgt _08056B62 - b _08056A76 -_08056B62: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8056A3C - - thumb_func_start BattleCreateCursorAt -BattleCreateCursorAt: @ 8056B74 - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - add r0, sp, 0xC - movs r2, 0x1 - strh r2, [r0] - movs r1, 0x2 - strh r1, [r0, 0x2] - lsls r3, 25 - movs r0, 0x90 - lsls r0, 20 - adds r3, r0 - lsrs r3, 24 - str r2, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - movs r2, 0x19 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - thumb_func_end BattleCreateCursorAt - - thumb_func_start BattleDestroyCursorAt -BattleDestroyCursorAt: @ 8056BAC - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - add r0, sp, 0xC - ldr r1, =0x00001016 - strh r1, [r0] - strh r1, [r0, 0x2] - lsls r3, 25 - movs r0, 0x90 - lsls r0, 20 - adds r3, r0 - lsrs r3, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - movs r2, 0x19 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - .pool - thumb_func_end BattleDestroyCursorAt - - thumb_func_start atkF3_nickname_caught_poke -atkF3_nickname_caught_poke: @ 8056BEC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x4 - bls _08056C04 - b _08056E62 -_08056C04: - lsls r0, r1, 2 - ldr r1, =_08056C18 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08056C18: - .4byte _08056C2C - .4byte _08056C60 - .4byte _08056CFC - .4byte _08056DD4 - .4byte _08056E2C -_08056C2C: - movs r4, 0 - str r4, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gText_BattleYesNoChoice - movs r1, 0xC - bl sub_814F9EC - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - strb r4, [r1, 0x1] - movs r0, 0 - bl BattleCreateCursorAt - b _08056E62 - .pool -_08056C60: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08056C86 - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08056C86 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl BattleDestroyCursorAt - movs r0, 0 - strb r0, [r4, 0x1] - bl BattleCreateCursorAt -_08056C86: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08056CAE - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08056CAE - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl BattleDestroyCursorAt - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateCursorAt -_08056CAE: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08056CE0 - movs r0, 0x5 - bl PlaySE - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08056CF2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x3 - bl BeginFastPaletteFade - b _08056E62 - .pool -_08056CE0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08056CEA - b _08056E62 -_08056CEA: - movs r0, 0x5 - bl PlaySE - ldr r1, =gBattleCommunication -_08056CF2: - movs r0, 0x4 - strb r0, [r1] - b _08056E62 - .pool -_08056CFC: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08056D0A - b _08056E62 -_08056D0A: - ldr r7, =gBattlePartyID - ldr r0, =gBankAttacker - mov r10, r0 - ldrb r0, [r0] - movs r4, 0x1 - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0x64 - mov r9, r1 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - ldr r1, =gEnemyParty - mov r8, r1 - add r0, r8 - ldr r1, =gBattleStruct - ldr r2, [r1] - adds r2, 0x6D - movs r1, 0x2 - bl GetMonData - bl FreeAllWindowBuffers - mov r2, r10 - ldrb r0, [r2] - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0xB - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - mov r2, r10 - ldrb r0, [r2] - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - bl GetMonGender - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - mov r2, r10 - ldrb r0, [r2] - eors r4, r0 - lsls r4, 1 - adds r4, r7 - ldrh r0, [r4] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0 - movs r2, 0 - bl GetMonData - ldr r2, =gBattleStruct - ldr r1, [r2] - adds r1, 0x6D - str r0, [sp] - ldr r0, =BattleMainCB2 - str r0, [sp, 0x4] - movs r0, 0x2 - adds r2, r6, 0 - adds r3, r5, 0 - bl DoNamingScreen - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08056E62 - .pool -_08056DD4: - ldr r0, =gMain - ldr r1, [r0, 0x4] - ldr r0, =BattleMainCB2 - cmp r1, r0 - bne _08056E62 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08056E62 - ldr r2, =gBattlePartyID - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - ldr r1, =gBattleStruct - ldr r2, [r1] - adds r2, 0x6D - movs r1, 0x2 - bl SetMonData - b _08056E48 - .pool -_08056E2C: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _08056E48 - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08056E62 - .pool -_08056E48: - ldr r3, =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08056E62: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end atkF3_nickname_caught_poke - - thumb_func_start atkF4_802BEF0 -atkF4_802BEF0: @ 8056E78 - ldr r2, =gBattleMons - ldr r0, =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldr r0, =gBattleMoveDamage - ldr r2, [r0] - ldrh r0, [r1, 0x28] - subs r0, r2 - strh r0, [r1, 0x28] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atkF4_802BEF0 - - thumb_func_start atkF5_removeattackerstatus1 -atkF5_removeattackerstatus1: @ 8056EA8 - ldr r1, =gBattleMons - ldr r0, =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - movs r1, 0 - str r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .pool - thumb_func_end atkF5_removeattackerstatus1 - - thumb_func_start atkF6_802BF48 -atkF6_802BF48: @ 8056ED0 - ldr r1, =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - bx lr - .pool - thumb_func_end atkF6_802BF48 - - thumb_func_start atkF7_802BF54 -atkF7_802BF54: @ 8056EDC - ldr r1, =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - ldr r1, =gCurrentMoveTurn - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r1] - bx lr - .pool - thumb_func_end atkF7_802BF54 - - thumb_func_start sub_8056EF8 -sub_8056EF8: @ 8056EF8 - push {r4,r5,lr} - ldr r5, =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBankByIdentity - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x09_9_9_9 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8056EF8 - - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index c6761bd9ac..24a553f94c 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -30134,7 +30134,7 @@ _0810DB1A: lsls r0, 24 cmp r0, 0 bne _0810DB50 - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X ldrh r0, [r4, 0x1A] lsls r0, 16 asrs r0, 24 @@ -30145,7 +30145,7 @@ _0810DB1A: b _0810DB60 .pool _0810DB50: - ldr r2, =gUnknown_02022E20 + ldr r2, =gBattle_BG3_X ldrh r1, [r4, 0x1A] lsls r1, 16 asrs r1, 24 @@ -44805,7 +44805,7 @@ _08115314: beq _08115340 cmp r0, 0x5 bne _08115380 - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r0, [r0] strh r0, [r4, 0x22] ldr r0, =sub_81153AC @@ -44907,7 +44907,7 @@ _081153DA: ands r0, r1 cmp r0, 0 bne _08115404 - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X ldrh r0, [r3, 0x26] ldrh r2, [r3, 0x22] adds r0, r2 @@ -44915,7 +44915,7 @@ _081153DA: b _0811540E .pool _08115404: - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r3, 0x22] ldrh r2, [r3, 0x26] subs r1, r2 @@ -44951,7 +44951,7 @@ _08115430: ands r1, r0 cmp r1, 0 bne _0811545C - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X ldrh r0, [r3, 0x24] ldrh r2, [r3, 0x22] adds r0, r2 @@ -44959,7 +44959,7 @@ _08115430: b _08115466 .pool _0811545C: - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r3, 0x22] ldrh r2, [r3, 0x24] subs r1, r2 @@ -44987,7 +44987,7 @@ _08115484: b _0811549C .pool _08115490: - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X ldrh r0, [r3, 0x22] strh r0, [r1] adds r0, r2, 0 @@ -45263,7 +45263,7 @@ _0811565A: movs r0, 0xFF ands r1, r0 strh r1, [r4, 0xC] - ldr r2, =gUnknown_02022E20 + ldr r2, =gBattle_BG3_X ldrh r0, [r4, 0xA] strh r0, [r2] ldr r0, =gUnknown_02022E22 @@ -45295,7 +45295,7 @@ sub_81156D0: @ 81156D0 ldrsh r0, [r2, r4] cmp r1, r0 bne _08115710 - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X movs r1, 0 strh r1, [r0] ldr r0, =gUnknown_02022E22 @@ -45305,7 +45305,7 @@ sub_81156D0: @ 81156D0 b _0811571C .pool _08115710: - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X ldrh r0, [r2, 0xA] strh r0, [r1] ldr r1, =gUnknown_02022E22 @@ -46553,7 +46553,7 @@ _081160DC: beq _081160F4 b _08116104 _081160E2: - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X b _081160F6 .pool _081160EC: @@ -46793,7 +46793,7 @@ sub_81162A4: @ 81162A4 strh r1, [r2, 0xE] ldrh r1, [r3, 0x6] strh r1, [r2, 0x18] - ldr r4, =gUnknown_02022E20 + ldr r4, =gBattle_BG3_X ldrh r1, [r3] strh r1, [r4] ldr r4, =gUnknown_02022E22 @@ -46824,7 +46824,7 @@ sub_81162F8: @ 81162F8 mov r12, r1 cmp r0, 0 bne _0811637E - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r2, [r0] movs r7, 0x8 ldrsh r1, [r3, r7] @@ -49152,7 +49152,7 @@ sub_81176D8: @ 81176D8 ldrh r7, [r1, 0x1E] adds r2, r7 strh r2, [r1, 0x1E] - ldr r6, =gUnknown_02022E20 + ldr r6, =gBattle_BG3_X lsls r0, r3, 16 asrs r0, 24 ldrh r4, [r6] diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 1a0b5ae3db..e870c87989 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -3169,7 +3169,7 @@ _0819044E: strh r4, [r0] ldr r0, =gBattle_BG1_Y strh r4, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r4, [r0] ldr r0, =gUnknown_02022E22 strh r4, [r0] diff --git a/asm/contest.s b/asm/contest.s index 7e06522224..023c6ebef1 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -58,7 +58,7 @@ sub_80D7678: @ 80D7678 strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r1, [r0] ldr r0, =gUnknown_02022E22 strh r1, [r0] @@ -1340,7 +1340,7 @@ vblank_cb_battle: @ 80D827C ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 8da1eccba0..8e2e2c61c3 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -105,7 +105,7 @@ _080F57E0: strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r1, [r0] ldr r0, =gUnknown_02022E22 strh r1, [r0] @@ -465,7 +465,7 @@ sub_80F5C24: @ 80F5C24 ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg @@ -1838,7 +1838,7 @@ _080F68A8: thumb_func_start sub_80F68B4 sub_80F68B4: @ 80F68B4 push {r4,r5,lr} - ldr r2, =gUnknown_02022E20 + ldr r2, =gBattle_BG3_X ldrh r3, [r2] adds r0, r3, 0x2 strh r0, [r2] diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 55a843b924..5d02681739 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -178,7 +178,7 @@ evolution_cutscene: @ 813DA8C strh r2, [r0] ldr r0, =gBattle_BG2_Y strh r2, [r0] - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 @@ -472,7 +472,7 @@ sub_813DD7C: @ 813DD7C strh r4, [r0] ldr r0, =gBattle_BG2_Y strh r4, [r0] - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 @@ -642,7 +642,7 @@ _0813DFE0: strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] - ldr r2, =gUnknown_02022E20 + ldr r2, =gBattle_BG3_X movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 @@ -953,7 +953,7 @@ sub_813E1D4: @ 813E1D4 strh r4, [r0] ldr r0, =gBattle_BG2_Y strh r4, [r0] - ldr r1, =gUnknown_02022E20 + ldr r1, =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 @@ -3654,7 +3654,7 @@ sub_813FCDC: @ 813FCDC ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg @@ -3698,7 +3698,7 @@ sub_813FD64: @ 813FD64 ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg @@ -3870,7 +3870,7 @@ sub_813FEE8: @ 813FEE8 b _0813FF2C .pool _0813FF28: - ldr r7, =gUnknown_02022E20 + ldr r7, =gBattle_BG3_X ldr r6, =gUnknown_02022E22 _0813FF2C: lsls r4, r5, 2 diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 1839a75683..22d7b260e8 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -840,7 +840,7 @@ pokemon_transfer_to_pc_with_message: @ 80E34E4 bl VarGet lsls r0, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy @@ -859,7 +859,7 @@ _080E3534: bl VarGet lsls r0, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy @@ -874,7 +874,7 @@ _080E3534: bl get_unknown_box_id lsls r0, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy diff --git a/asm/pokedex.s b/asm/pokedex.s index fdaacde2cc..f9ee0eeabe 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -8429,8 +8429,8 @@ _080BFDB4: .pool thumb_func_end sub_80BFD7C - thumb_func_start sub_80BFDF4 -sub_80BFDF4: @ 80BFDF4 + thumb_func_start CreateDexDisplayMonDataTask +CreateDexDisplayMonDataTask: @ 80BFDF4 push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -8460,7 +8460,7 @@ sub_80BFDF4: @ 80BFDF4 pop {r1} bx r1 .pool - thumb_func_end sub_80BFDF4 + thumb_func_end CreateDexDisplayMonDataTask thumb_func_start sub_80BFE38 sub_80BFE38: @ 80BFE38 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index d94da87b19..6c4c7ff13c 100755 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1019,7 +1019,7 @@ _080C777E: _080C779E: lsls r0, r5, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr ldr r1, =gText_Box bl StringCopy adds r4, r5, 0x1 @@ -1566,7 +1566,7 @@ sub_80C7BE4: @ 80C7BE4 lsls r4, 2 adds r0, r4 ldrb r0, [r0] - bl sav3_get_box_name + bl GetBoxNamePtr mov r10, r0 mov r1, r9 ldr r0, [r1] @@ -5424,7 +5424,7 @@ _080C9F1C: bl StorageGetCurrentBox lsls r0, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 movs r0, 0 str r0, [sp] @@ -10831,7 +10831,7 @@ sub_80CCB50: @ 80CCB50 ldr r5, =0x000021b8 adds r4, r5 mov r0, r8 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 movs r2, 0 @@ -10852,7 +10852,7 @@ sub_80CCB50: @ 80CCB50 ldr r0, [sp, 0x2C] bl LoadSpriteSheet mov r0, r8 - bl sav3_get_box_name + bl GetBoxNamePtr bl sub_80CD00C movs r4, 0 lsls r0, 16 @@ -10997,7 +10997,7 @@ _080CCDB0: ldr r5, =0x000021b8 adds r4, r5 ldr r0, [sp, 0x28] - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 movs r2, 0 @@ -11027,7 +11027,7 @@ _080CCDB0: movs r2, 0x4 bl LoadPalette ldr r0, [sp, 0x28] - bl sav3_get_box_name + bl GetBoxNamePtr bl sub_80CD00C lsls r0, 16 mov r1, r10 @@ -21085,8 +21085,8 @@ _080D20CA: bx r1 thumb_func_end GetBoxedMonPtr - thumb_func_start sav3_get_box_name -sav3_get_box_name: @ 80D20D0 + thumb_func_start GetBoxNamePtr +GetBoxNamePtr: @ 80D20D0 push {lr} lsls r0, 24 lsrs r2, r0, 24 @@ -21106,7 +21106,7 @@ _080D20EC: pop {r1} bx r1 .pool - thumb_func_end sav3_get_box_name + thumb_func_end GetBoxNamePtr thumb_func_start sub_80D20F8 sub_80D20F8: @ 80D20F8 diff --git a/asm/pokenav.s b/asm/pokenav.s index 6ae25b362f..6f47df54c9 100755 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -13136,7 +13136,7 @@ _081CD8E4: ldr r2, =0x00006325 adds r4, r2 adds r0, r3, 0 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 _081CD8F4: @@ -24164,7 +24164,7 @@ _081D2F2C: adds r4, r5, 0x5 lsls r0, r7, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 _081D2F3A: diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 77d107f3df..42ba43ec0e 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -111,7 +111,7 @@ _080A93B0: strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X strh r1, [r0] ldr r0, =gUnknown_02022E22 strh r1, [r0] @@ -286,7 +286,7 @@ _080A955C: b _080A95D2 .pool _080A95A4: - ldr r0, =vblank_cb_08078BB4 + ldr r0, =VBlankCB_Battle bl SetVBlankCallback bl sub_80A95F4 movs r0, 0x1 diff --git a/asm/rom3.s b/asm/rom3.s index 1317214931..9bd95c252c 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2337,8 +2337,8 @@ EmitTrainerSlide: @ 8033A04 .pool thumb_func_end EmitTrainerSlide - thumb_func_start dp01_build_cmdbuf_x09_9_9_9 -dp01_build_cmdbuf_x09_9_9_9: @ 8033A24 + thumb_func_start EmitTrainerSlideBack +EmitTrainerSlideBack: @ 8033A24 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2353,7 +2353,7 @@ dp01_build_cmdbuf_x09_9_9_9: @ 8033A24 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x09_9_9_9 + thumb_func_end EmitTrainerSlideBack thumb_func_start EmitFaintAnimation EmitFaintAnimation: @ 8033A44 @@ -2409,8 +2409,8 @@ dp01_build_cmdbuf_x0C_C_C_C: @ 8033A84 .pool thumb_func_end dp01_build_cmdbuf_x0C_C_C_C - thumb_func_start dp01_build_cmdbuf_x0D_a -dp01_build_cmdbuf_x0D_a: @ 8033AA4 + thumb_func_start EmitBallThrow +EmitBallThrow: @ 8033AA4 push {lr} adds r3, r1, 0 lsls r0, 24 @@ -2424,7 +2424,7 @@ dp01_build_cmdbuf_x0D_a: @ 8033AA4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x0D_a + thumb_func_end EmitBallThrow thumb_func_start sub_8033AC4 sub_8033AC4: @ 8033AC4 diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 39366d29f1..9a3505b4f2 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -4183,7 +4183,7 @@ sC6_load_textvar_box_label: @ 809B2C8 ldr r4, [r4] lsls r0, 24 lsrs r0, 24 - bl sav3_get_box_name + bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy diff --git a/asm/unknown_task.s b/asm/unknown_task.s index 9c01afe93d..99a614e378 100644 --- a/asm/unknown_task.s +++ b/asm/unknown_task.s @@ -291,7 +291,7 @@ _080BA23C: b _080BA24E .pool _080BA244: - ldr r0, =gUnknown_02022E20 + ldr r0, =gBattle_BG3_X b _080BA24E .pool _080BA24C: diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index e76bb397b9..938531a57f 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -16,14 +16,14 @@ gUnknown_082DBD54:: @ 82DBD54 gUnknown_082DBD58:: @ 82DBD58 .incbin "baserom.gba", 0x2dbd58, 0x2c -gUnknown_082DBD84:: @ 82DBD84 +BattleScript_SuccessBallThrow:: @ 82DBD84 .incbin "baserom.gba", 0x2dbd84, 0x46 -gUnknown_082DBDCA:: @ 82DBDCA +BattleScript_WallyBallThrow:: @ 82DBDCA .incbin "baserom.gba", 0x2dbdca, 0xa -gUnknown_082DBDD4:: @ 82DBDD4 +BattleScript_ShakeBallThrow:: @ 82DBDD4 .incbin "baserom.gba", 0x2dbdd4, 0x2e -gUnknown_082DBE02:: @ 82DBE02 +BattleScript_TrainerBallBlock:: @ 82DBE02 .incbin "baserom.gba", 0x2dbe02, 0xf6 diff --git a/include/battle.h b/include/battle.h index a0a50faf79..7b164caf49 100644 --- a/include/battle.h +++ b/include/battle.h @@ -205,6 +205,7 @@ #define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)) #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY ((WEATHER_HAIL)) +#define WEATHER_ANY ((WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)) #define BATTLE_TERRAIN_GRASS 0 #define BATTLE_TERRAIN_LONG_GRASS 1 @@ -216,7 +217,9 @@ #define BATTLE_TERRAIN_CAVE 7 // array entries for battle communication +#define MULTIUSE_STATE 0x0 #define CURSOR_POSITION 0x1 +#define TASK_ID 0x1 // task Id and cursor position share the same field #define MOVE_EFFECT_BYTE 0x3 #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 @@ -531,6 +534,9 @@ struct BattleResults u8 unk4; // 0x4 u8 unk5_0:1; // 0x5 u8 unk5_1:1; // 0x5 + u8 caughtMonBall:4; // 0x5 + u8 unk5_6:1; // 0x5 + u8 unk5_7:1; // 0x5 u16 poke1Species; // 0x6 u8 pokeString1[10]; // 0x8 u8 unk12; @@ -542,10 +548,10 @@ struct BattleResults u16 lastUsedMove; // 0x22 u16 opponentMove; // 0x24 u16 opponentSpecies; // 0x26 - u16 caughtPoke; // 0x28 - u8 caughtNick[10]; // 0x2A + u16 caughtMonSpecies; // 0x28 + u8 caughtMonNick[10]; // 0x2A u8 filler34[2]; - u8 unk36[10]; // usedBalls? + u8 catchAttempts[10]; // 0x36 }; extern struct BattleResults gBattleResults; @@ -588,17 +594,7 @@ struct BattleStruct u8 field_5C[4]; u8 field_60[4][3]; u8 field_6C; - u8 field_6D; - u8 field_6E; - u8 field_6F; - u8 field_70; - u8 field_71; - u8 field_72; - u8 field_73; - u8 field_74; - u8 field_75; - u8 field_76; - u8 field_77; + u8 caughtMonNick[11]; u8 field_78; u8 field_79; u8 field_7A; @@ -845,6 +841,7 @@ struct BattleScripting u8 field_1D; u8 atk6C_state; u8 learnMoveState; + u8 field_20; }; extern struct BattleScripting gBattleScripting; @@ -862,6 +859,7 @@ void SwitchInClearStructs(void); void sub_803BDA0(u8 bank); void sub_803FA70(u8 bank); void BattleMainCB2(void); +void VBlankCB_Battle(void); void ResetSentPokesToOpponentValue(void); bool8 CanRunFromBattle(u8 bank); bool8 IsRunningFromBattleImpossible(void); @@ -892,8 +890,8 @@ u8 AtkCanceller_UnableToUseMove(void); bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); u8 CastformDataTypeChange(u8 bank); u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -void b_call_bc_move_exec(const u8* BS_ptr); -void b_push_move_exec(const u8* BS_ptr); +void BattleScriptExecute(const u8* BS_ptr); +void BattleScriptPushCursorAndCallback(const u8* BS_ptr); u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); void sub_8045868(u8 bank); void sub_80458B4(void); @@ -905,9 +903,12 @@ void AI_CalcDmg(u8 bankAtk, u8 bankDef); u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 species, u8 ability); u8 BankGetTurnOrder(u8 bank); +void SetMoveEffect(bool8 primary, u8 certain); void BattleDestroyCursorAt(u8 cursorPosition); void BattleCreateCursorAt(u8 cursorPosition); void BufferMoveToLearnIntoBattleTextBuff2(void); +void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); +bool8 UproarWakeUpCheck(u8 bank); // battle_5 void AdjustFriendshipOnBattleFaint(u8 bank); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index bb58cb699a..b2846d7cf0 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -43,6 +43,7 @@ void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, const u8* arg4); void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, u8 arg2); void EmitTrainerSlide(u8 bufferId); +void EmitTrainerSlideBack(u8 bufferId); void EmitFaintingCry(u8 bufferId); void Emit_x37(u8 bufferId, u8 arg1); void EmitHitAnimation(u8 bufferId); @@ -51,12 +52,22 @@ void EmitCmd49(u8 bufferId); void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); void EmitCmd13(u8 bufferId); void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); -void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); #define RESET_ACTION_MOVE_SELECTION 0 #define RESET_ACTION_SELECTION 1 #define RESET_MOVE_SELECTION 2 +void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); + +#define BALL_NO_SHAKES 0 +#define BALL_1_SHAKE 1 +#define BALL_2_SHAKES 2 +#define BALL_3_SHAKES_FAIL 3 +#define BALL_3_SHAKES_SUCCESS 4 +#define BALL_TRAINER_BLOCK 5 + +void EmitBallThrow(u8 bufferId, u8 caseId); + void MarkBufferBankForExecution(u8 bank); #endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/include/battle_message.h b/include/battle_message.h index 6e6616cf04..3bc7117bb4 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -211,4 +211,6 @@ extern u8 gBattleTextBuff2[]; extern u8 gBattleTextBuff3[]; extern u8 gDisplayedStringBattle[]; +extern const u8* const gRefereeStringsTable[]; + #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/naming_screen.h b/include/naming_screen.h new file mode 100644 index 0000000000..55a8e75a31 --- /dev/null +++ b/include/naming_screen.h @@ -0,0 +1,12 @@ +#ifndef GUARD_NAMING_SCREEN_H +#define GUARD_NAMING_SCREEN_H + +#define NAMING_SCREEN_PLAYER 0 +#define NAMING_SCREEN_BOX 1 +#define NAMING_SCREEN_CAUGHT_MON 2 +#define NAMING_SCREEN_3 3 +#define NAMING_SCREEN_WANDA 4 + +void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void)); + +#endif // GUARD_NAMING_SCREEN_H diff --git a/include/pokedex.h b/include/pokedex.h index 15f819a2ac..38aca09158 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -6,6 +6,7 @@ const u8 *GetPokemonCategory(u16); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); +u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality); enum { diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h new file mode 100644 index 0000000000..5216e84508 --- /dev/null +++ b/include/pokemon_storage_system.h @@ -0,0 +1,6 @@ +#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H +#define GUARD_POKEMON_STORAGE_SYSTEM_H + +u8* GetBoxNamePtr(u8 boxNumber); + +#endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/ld_script.txt b/ld_script.txt index b2e996ff5f..ffa8baba60 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -60,7 +60,6 @@ SECTIONS { asm/battle_2.o(.text); src/battle_3.o(.text); src/battle_4.o(.text); - asm/battle_4.o(.text); asm/battle_5.o(.text); asm/battle_controller_player.o(.text); asm/battle_7.o(.text); diff --git a/src/battle_3.c b/src/battle_3.c index 9ac439390d..e81d527d05 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -179,13 +179,9 @@ extern const u8 gStatusConditionString_ConfusionJpn[]; extern const u8 gStatusConditionString_LoveJpn[]; extern const u16 gSoundMovesTable[]; -extern void CancelMultiTurnMoves(u8 bank); extern u8 b_first_side(u8, u8, u8); extern void sub_803CEDC(u8, u8); -extern void b_call_bc_move_exec(const u8 *); extern void BattleTurnPassed(void); -extern void SetMoveEffect(bool8 primary, u8 certainArg); -extern bool8 UproarWakeUpCheck(u8 bank); extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); extern u8 weather_get_current(void); @@ -441,7 +437,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].reflectTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; - b_call_bc_move_exec(gUnknown_082DACFA); + BattleScriptExecute(gUnknown_082DACFA); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; gBattleTextBuff1[2] = MOVE_REFLECT; @@ -470,7 +466,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].lightscreenTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; - b_call_bc_move_exec(gUnknown_082DACFA); + BattleScriptExecute(gUnknown_082DACFA); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; @@ -499,7 +495,7 @@ u8 UpdateTurnCounters(void) && --gSideTimers[sideBank].mistTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; - b_call_bc_move_exec(gUnknown_082DACFA); + BattleScriptExecute(gUnknown_082DACFA); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; @@ -528,7 +524,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].safeguardTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; - b_call_bc_move_exec(gUnknown_082DAD0B); + BattleScriptExecute(gUnknown_082DAD0B); effect++; } } @@ -551,7 +547,7 @@ u8 UpdateTurnCounters(void) && gBattleMons[gActiveBank].hp != 0) { gBankTarget = gActiveBank; - b_call_bc_move_exec(BattleScript_WishComesTrue); + BattleScriptExecute(BattleScript_WishComesTrue); effect++; } gBattleStruct->turnSideTracker++; @@ -583,7 +579,7 @@ u8 UpdateTurnCounters(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; else gBattleCommunication[MULTISTRING_CHOOSER] = 0; - b_call_bc_move_exec(gUnknown_082DAC2C); + BattleScriptExecute(gUnknown_082DAC2C); effect++; } gBattleStruct->turncountersTracker++; @@ -601,7 +597,7 @@ u8 UpdateTurnCounters(void) gBattleScripting.animArg1 = 0xC; gBattleCommunication[MULTISTRING_CHOOSER] = 0; - b_call_bc_move_exec(gBattlescriptCurrInstr); + BattleScriptExecute(gBattlescriptCurrInstr); effect++; } gBattleStruct->turncountersTracker++; @@ -617,7 +613,7 @@ u8 UpdateTurnCounters(void) else gBattlescriptCurrInstr = gUnknown_082DACD2; - b_call_bc_move_exec(gBattlescriptCurrInstr); + BattleScriptExecute(gBattlescriptCurrInstr); effect++; } gBattleStruct->turncountersTracker++; @@ -635,7 +631,7 @@ u8 UpdateTurnCounters(void) gBattleScripting.animArg1 = 0xD; gBattleCommunication[MULTISTRING_CHOOSER] = 1; - b_call_bc_move_exec(gBattlescriptCurrInstr); + BattleScriptExecute(gBattlescriptCurrInstr); effect++; } gBattleStruct->turncountersTracker++; @@ -675,7 +671,7 @@ u8 TurnBasedEffects(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; - b_call_bc_move_exec(BattleScript_IngrainTurnHeal); + BattleScriptExecute(BattleScript_IngrainTurnHeal); effect++; } gBattleStruct->turnEffectsTracker++; @@ -706,7 +702,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = 1; gBattleScripting.animArg1 = gBankTarget; gBattleScripting.animArg2 = gBankAttacker; - b_call_bc_move_exec(BattleScript_LeechSeedTurnDrain); + BattleScriptExecute(BattleScript_LeechSeedTurnDrain); effect++; } gBattleStruct->turnEffectsTracker++; @@ -717,7 +713,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_PoisonTurnDmg); + BattleScriptExecute(BattleScript_PoisonTurnDmg); effect++; } gBattleStruct->turnEffectsTracker++; @@ -731,7 +727,7 @@ u8 TurnBasedEffects(void) if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns gBattleMons[gActiveBank].status1 += 0x100; gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; - b_call_bc_move_exec(BattleScript_PoisonTurnDmg); + BattleScriptExecute(BattleScript_PoisonTurnDmg); effect++; } gBattleStruct->turnEffectsTracker++; @@ -742,7 +738,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_BurnTurnDmg); + BattleScriptExecute(BattleScript_BurnTurnDmg); effect++; } gBattleStruct->turnEffectsTracker++; @@ -757,7 +753,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_NightmareTurnDmg); + BattleScriptExecute(BattleScript_NightmareTurnDmg); effect++; } else @@ -773,7 +769,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_CurseTurnDmg); + BattleScriptExecute(BattleScript_CurseTurnDmg); effect++; } gBattleStruct->turnEffectsTracker++; @@ -806,7 +802,7 @@ u8 TurnBasedEffects(void) gBattleTextBuff1[4] = EOS; gBattlescriptCurrInstr = BattleScript_WrapEnds; } - b_call_bc_move_exec(gBattlescriptCurrInstr); + BattleScriptExecute(gBattlescriptCurrInstr); effect++; } gBattleStruct->turnEffectsTracker++; @@ -822,7 +818,7 @@ u8 TurnBasedEffects(void) gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); gBattleCommunication[MULTISTRING_CHOOSER] = 1; - b_call_bc_move_exec(gUnknown_082DB234); + BattleScriptExecute(gUnknown_082DB234); gActiveBank = gBankAttacker; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); @@ -853,7 +849,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; CancelMultiTurnMoves(gActiveBank); } - b_call_bc_move_exec(gUnknown_082DB2A6); + BattleScriptExecute(gUnknown_082DB2A6); effect = 1; } } @@ -875,7 +871,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; SetMoveEffect(1, 0); if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) - b_call_bc_move_exec(BattleScript_ThrashConfuses); + BattleScriptExecute(BattleScript_ThrashConfuses); effect++; } } @@ -899,7 +895,7 @@ u8 TurnBasedEffects(void) else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends { gDisableStructs[gActiveBank].disabledMove = 0; - b_call_bc_move_exec(BattleScript_DisabledNoMore); + BattleScriptExecute(BattleScript_DisabledNoMore); effect++; } } @@ -918,7 +914,7 @@ u8 TurnBasedEffects(void) { gDisableStructs[gActiveBank].encoredMove = 0; gDisableStructs[gActiveBank].encoreTimer1 = 0; - b_call_bc_move_exec(BattleScript_EncoredNoMore); + BattleScriptExecute(BattleScript_EncoredNoMore); effect++; } } @@ -952,7 +948,7 @@ u8 TurnBasedEffects(void) EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); gEffectBank = gActiveBank; - b_call_bc_move_exec(BattleScript_YawnMakesAsleep); + BattleScriptExecute(BattleScript_YawnMakesAsleep); effect++; } } @@ -1006,7 +1002,7 @@ bool8 sub_8041364(void) gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; - b_call_bc_move_exec(gUnknown_082DAFE4); + BattleScriptExecute(gUnknown_082DAFE4); if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0) @@ -1052,7 +1048,7 @@ bool8 sub_8041364(void) gDisableStructs[gActiveBank].perishSong1--; gBattlescriptCurrInstr = gUnknown_082DAF20; } - b_call_bc_move_exec(gBattlescriptCurrInstr); + BattleScriptExecute(gBattlescriptCurrInstr); return 1; } } @@ -1074,7 +1070,7 @@ bool8 sub_8041364(void) CancelMultiTurnMoves(i); gBattlescriptCurrInstr = gUnknown_082DB8F3; - b_call_bc_move_exec(gUnknown_082DB8F3); + BattleScriptExecute(gUnknown_082DB8F3); gBattleStruct->field_1A0++; return 1; } @@ -1114,7 +1110,7 @@ bool8 sub_8041728(void) && !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->field_4E]]) && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { - b_call_bc_move_exec(gUnknown_082DA7C4); + BattleScriptExecute(gUnknown_082DA7C4); gBattleStruct->field_4D = 2; return TRUE; } @@ -1139,7 +1135,7 @@ bool8 sub_8041728(void) if (gBattleMons[gBattleStruct->field_4E].hp == 0 && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { - b_call_bc_move_exec(gUnknown_082DA7CD); + BattleScriptExecute(gUnknown_082DA7CD); gBattleStruct->field_4D = 5; return TRUE; } @@ -1709,7 +1705,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect) { gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); - b_push_move_exec(gUnknown_082DACE7); + BattleScriptPushCursorAndCallback(gUnknown_082DACE7); } break; case ABILITY_DRIZZLE: @@ -1717,7 +1713,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) { gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); - b_push_move_exec(BattleScript_DrizzleActivates); + BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates); gBattleScripting.bank = bank; effect++; } @@ -1727,7 +1723,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) { gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); - b_push_move_exec(BattleScript_SandstreamActivates); + BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates); gBattleScripting.bank = bank; effect++; } @@ -1737,7 +1733,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) { gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); - b_push_move_exec(BattleScript_DroughtActivates); + BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates); gBattleScripting.bank = bank; effect++; } @@ -1755,7 +1751,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) effect = CastformDataTypeChange(bank); if (effect != 0) { - b_push_move_exec(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); gBattleScripting.bank = bank; gBattleStruct->formToChangeInto = effect - 1; } @@ -1779,7 +1775,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) effect = CastformDataTypeChange(i); if (effect != 0) { - b_push_move_exec(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); gBattleScripting.bank = i; gBattleStruct->formToChangeInto = effect - 1; break; @@ -1802,7 +1798,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && gBattleMons[bank].maxHP > gBattleMons[bank].hp) { gLastUsedAbility = ABILITY_RAIN_DISH; //why - b_push_move_exec(BattleScript_RainDishActivates); + BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); gBattleMoveDamage = gBattleMons[bank].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -1827,7 +1823,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[bank].status1 = 0; gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nighmare glitch gBattleScripting.bank = gActiveBank = bank; - b_push_move_exec(BattleScript_ShedSkinActivates); + BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates); EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); MarkBufferBankForExecution(gActiveBank); effect++; @@ -1840,7 +1836,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; gBattleScripting.animArg1 = 0x11; gBattleScripting.animArg2 = 0; - b_push_move_exec(BattleScript_SpeedBoostActivates); + BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates); gBattleScripting.bank = bank; effect++; } @@ -2167,7 +2163,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) effect = CastformDataTypeChange(i); if (effect) { - b_push_move_exec(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); gBattleScripting.bank = i; gBattleStruct->formToChangeInto = effect - 1; return effect; @@ -2215,7 +2211,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - b_push_move_exec(gUnknown_082DB4B8); + BattleScriptPushCursorAndCallback(gUnknown_082DB4B8); gBattleStruct->intimidateBank = i; effect++; break; @@ -2267,7 +2263,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } if (effect) { - b_push_move_exec(BattleScript_TraceActivates); + BattleScriptPushCursorAndCallback(BattleScript_TraceActivates); gStatuses3[i] &= ~(STATUS3_TRACE); gBattleScripting.bank = i; @@ -2774,7 +2770,7 @@ _08042B56:\n\ ldr r1, =gBattleCommunication\n\ strb r0, [r1, 0x5]\n\ ldr r0, =gUnknown_082DACE7\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ bl _0804441E\n\ .pool\n\ _08042B78:\n\ @@ -2789,7 +2785,7 @@ _08042B88:\n\ movs r0, 0x5\n\ strh r0, [r2]\n\ ldr r0, =BattleScript_DrizzleActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r0, =gBattleScripting\n\ mov r1, r10\n\ strb r1, [r0, 0x17]\n\ @@ -2807,7 +2803,7 @@ _08042BB8:\n\ movs r0, 0x18\n\ strh r0, [r2]\n\ ldr r0, =BattleScript_SandstreamActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r0, =gBattleScripting\n\ mov r2, r10\n\ strb r2, [r0, 0x17]\n\ @@ -2825,7 +2821,7 @@ _08042BE8:\n\ movs r0, 0x60\n\ strh r0, [r2]\n\ ldr r0, =BattleScript_DroughtActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r0, =gBattleScripting\n\ mov r3, r10\n\ strb r3, [r0, 0x17]\n\ @@ -2866,7 +2862,7 @@ _08042C3C:\n\ bl _0804443A\n\ _08042C50:\n\ ldr r0, =BattleScript_CastformChange\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r0, =gBattleScripting\n\ mov r1, r10\n\ strb r1, [r0, 0x17]\n\ @@ -2999,7 +2995,7 @@ _08042D66:\n\ _08042D72:\n\ strb r5, [r7]\n\ ldr r0, =BattleScript_RainDishActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r1, =gBattleMoveDamage\n\ ldrh r0, [r4, 0x2C]\n\ lsrs r0, 4\n\ @@ -3093,7 +3089,7 @@ _08042E24:\n\ strb r3, [r4]\n\ strb r3, [r0, 0x17]\n\ ldr r0, =BattleScript_ShedSkinActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ str r5, [sp]\n\ movs r0, 0\n\ movs r1, 0x28\n\ @@ -3131,7 +3127,7 @@ _08042EA8:\n\ strb r0, [r4, 0x10]\n\ strb r1, [r4, 0x11]\n\ ldr r0, =BattleScript_SpeedBoostActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ strb r5, [r4, 0x17]\n\ bl _080443D0\n\ .pool\n\ @@ -5288,7 +5284,7 @@ _080442C0:\n\ .pool\n\ _080442D8:\n\ ldr r0, =BattleScript_CastformChange\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r0, =gBattleScripting\n\ strb r6, [r0, 0x17]\n\ _080442E2:\n\ @@ -5302,7 +5298,7 @@ _080442E2:\n\ .pool\n\ _080442FC:\n\ ldr r0, =BattleScript_CastformChange\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r0, =gBattleScripting\n\ mov r5, r10\n\ strb r5, [r0, 0x17]\n\ @@ -5321,12 +5317,12 @@ _08044324:\n\ ands r0, r1\n\ str r0, [r2]\n\ ldr r0, =gUnknown_082DB4B8\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ b _080443C8\n\ .pool\n\ _08044340:\n\ ldr r0, =BattleScript_TraceActivates\n\ - bl b_push_move_exec\n\ + bl BattleScriptPushCursorAndCallback\n\ ldr r1, =gStatuses3\n\ ldr r0, [sp, 0x18]\n\ adds r1, r0, r1\n\ @@ -5445,7 +5441,7 @@ _0804443A:\n\ } #endif // NONMATCHING -void b_call_bc_move_exec(const u8* BS_ptr) +void BattleScriptExecute(const u8* BS_ptr) { gBattlescriptCurrInstr = BS_ptr; BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc; @@ -5453,7 +5449,7 @@ void b_call_bc_move_exec(const u8* BS_ptr) gFightStateTracker = 0; } -void b_push_move_exec(const u8* BS_ptr) +void BattleScriptPushCursorAndCallback(const u8* BS_ptr) { BattleScriptPushCursor(); gBattlescriptCurrInstr = BS_ptr; @@ -5549,7 +5545,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.bank = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; - b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); + BattleScriptExecute(BattleScript_WhiteHerbEnd2); } break; } @@ -5566,7 +5562,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); effect = 4; } break; @@ -5601,7 +5597,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[2] = move; gBattleTextBuff1[3] = move >> 8; gBattleTextBuff1[4] = 0xFF; - b_call_bc_move_exec(BattleScript_BerryPPHealEnd2); + BattleScriptExecute(BattleScript_BerryPPHealEnd2); EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBufferBankForExecution(gActiveBank); effect = ITEM_PP_CHANGE; @@ -5622,7 +5618,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.bank = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; - b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); + BattleScriptExecute(BattleScript_WhiteHerbEnd2); } break; case HOLD_EFFECT_LEFTOVERS: @@ -5634,7 +5630,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - b_call_bc_move_exec(BattleScript_ItemHealHP_End2); + BattleScriptExecute(BattleScript_ItemHealHP_End2); effect = ITEM_HP_CHANGE; RecordItemEffectBattle(bank, bankHoldEffect); } @@ -5654,9 +5650,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5674,9 +5670,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5694,9 +5690,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5714,9 +5710,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5734,9 +5730,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5759,7 +5755,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.statChanger = 0x10 + STAT_STAGE_ATK; gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK; gBattleScripting.animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5775,7 +5771,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.statChanger = 0x10 + STAT_STAGE_DEF; gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF; gBattleScripting.animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5791,7 +5787,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPEED; gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED; gBattleScripting.animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5807,7 +5803,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPATK; gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK; gBattleScripting.animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5823,7 +5819,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPDEF; gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF; gBattleScripting.animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5831,7 +5827,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY)) { gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY; - b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2); + BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2); effect = ITEM_EFFECT_OTHER; } break; @@ -5868,7 +5864,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleScripting.statChanger = 0x21 + i; gBattleScripting.animArg1 = 0x21 + i + 6; gBattleScripting.animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } } @@ -5877,7 +5873,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_PARALYSIS) { gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); - b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2); + BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -5885,7 +5881,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_PSN_ANY) { gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); - b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2); + BattleScriptExecute(BattleScript_BerryCurePsnEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -5893,7 +5889,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_BURN) { gBattleMons[bank].status1 &= ~(STATUS_BURN); - b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2); + BattleScriptExecute(BattleScript_BerryCureBrnEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -5901,7 +5897,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_FREEZE) { gBattleMons[bank].status1 &= ~(STATUS_FREEZE); - b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2); + BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -5910,7 +5906,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2); + BattleScriptExecute(BattleScript_BerryCureSlpEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -5918,7 +5914,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status2 & STATUS2_CONFUSION) { gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2); + BattleScriptExecute(BattleScript_BerryCureConfusionEnd2); effect = ITEM_EFFECT_OTHER; } break; @@ -5963,7 +5959,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleCommunication[MULTISTRING_CHOOSER] = 1; gBattleMons[bank].status1 = 0; gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_call_bc_move_exec(BattleScript_BerryCureChosenStatusEnd2); + BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -5972,7 +5968,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - b_call_bc_move_exec(BattleScript_BerryCureChosenStatusEnd2); + BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); gBattleCommunication[MULTISTRING_CHOOSER] = 0; effect = ITEM_EFFECT_OTHER; } diff --git a/src/battle_4.c b/src/battle_4.c index 9ef443b707..33ac482614 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -30,6 +30,10 @@ #include "pokemon_item_effects.h" #include "m4a.h" #include "mail.h" +#include "event_data.h" +#include "pokemon_storage_system.h" +#include "task.h" +#include "naming_screen.h" // variables @@ -98,6 +102,11 @@ extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u8 gUnknown_020241E9; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; extern struct MusicPlayerInfo gMPlay_BGM; struct TrainerMoney @@ -130,6 +139,14 @@ extern void sub_81A5D44(void); // battle frontier 2 extern void sub_81B8E80(u8 bank, u8, u8); // party menu extern bool8 sub_81B1250(void); // ? extern u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); // battle interface +extern bool8 InBattlePike(void); +extern bool8 InBattlePyramid(void); +extern u16 GetBattlePyramidPickupItemId(void); +extern u8 sav1_map_get_light_level(void); +extern u8 sub_813B21C(void); +extern u16 get_unknown_box_id(void); +extern void c2_berry_program_update_menu(void); +extern void sub_8035AA4(void); // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -201,13 +218,24 @@ extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_SturdyPreventsOHKO[]; extern const u8 BattleScript_ObliviousPreventsAttraction[]; extern const u8 BattleScript_PauseEffectivenessSoundResultMsgEndMove[]; +extern const u8 BattleScript_CastformChange[]; +extern const u8 BattleScript_TrainerBallBlock[]; +extern const u8 BattleScript_WallyBallThrow[]; +extern const u8 BattleScript_SuccessBallThrow[]; +extern const u8 BattleScript_ShakeBallThrow[]; +extern const u8 BattleScript_PresentDamageTarget[]; +extern const u8 BattleScript_AlreadyAtFullHp[]; +extern const u8 BattleScript_PresentHealTarget[]; +extern const u8 BattleScript_WrapFree[]; +extern const u8 BattleScript_LeechSeedFree[]; +extern const u8 BattleScript_SpikesFree[]; // strings extern const u8 gText_BattleYesNoChoice[]; // read via orr #define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) -#define BSScriptRead8(ptr) (((u8)((ptr)[0]))) +#define BSScriptRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) #define BSScriptReadPtr(ptr) ((void *)BSScriptRead32(ptr)) // read via add @@ -220,270 +248,269 @@ extern const u8 gText_BattleYesNoChoice[]; #define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))) // this file's functions -bool8 IsTwoTurnsMove(u16 move); -void DestinyBondFlagUpdate(void); -u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. +static bool8 IsTwoTurnsMove(u16 move); +static void DestinyBondFlagUpdate(void); +static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static void CheckWonderGuardAndLevitate(void); -u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); -void sub_8056A3C(u8 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4); -bool32 IsMonGettingExpSentOut(void); -void sub_804F17C(void); -bool8 sub_804F1CC(void); -void sub_804F100(void); -void sub_804F144(void); -bool8 sub_804F344(void); -void PutMonIconOnLvlUpBox(void); -void PutLevelAndGenderOnLvlUpBox(void); +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); +static bool32 IsMonGettingExpSentOut(void); +static void sub_804F17C(void); +static bool8 sub_804F1CC(void); +static void sub_804F100(void); +static void sub_804F144(void); +static bool8 sub_804F344(void); +static void PutMonIconOnLvlUpBox(void); +static void PutLevelAndGenderOnLvlUpBox(void); -void atk00_attackcanceler(void); -void atk01_accuracycheck(void); -void atk02_attackstring(void); -void atk03_ppreduce(void); -void atk04_critcalc(void); -void atk05_damagecalc1(void); -void atk06_typecalc(void); -void atk07_dmg_adjustment(void); -void atk08_dmg_adjustment2(void); -void atk09_attackanimation(void); -void atk0A_waitanimation(void); -void atk0B_healthbarupdate(void); -void atk0C_datahpupdate(void); -void atk0D_critmessage(void); -void atk0E_effectiveness_sound(void); -void atk0F_resultmessage(void); -void atk10_printstring(void); -void atk11_printstring_playeronly(void); -void atk12_waitmessage(void); -void atk13_printfromtable(void); -void atk14_printfromtable_playeronly(void); -void atk15_seteffectwithchance(void); -void atk16_seteffectprimary(void); -void atk17_seteffectsecondary(void); -void atk18_status_effect_clear(void); -void atk19_faint_pokemon(void); -void atk1A_faint_animation(void); -void atk1B_faint_effects_clear(void); -void atk1C_jumpifstatus(void); -void atk1D_jumpifstatus2(void); -void atk1E_jumpifability(void); -void atk1F_jumpifsideaffecting(void); -void atk20_jumpifstat(void); -void atk21_jumpifstatus3(void); -void atk22_jumpiftype(void); -void atk23_getexp(void); -void atk24(void); -void atk25_move_values_cleanup(void); -void atk26_set_multihit(void); -void atk27_decrement_multihit(void); -void atk28_goto(void); -void atk29_jumpifbyte(void); -void atk2A_jumpifhalfword(void); -void atk2B_jumpifword(void); -void atk2C_jumpifarrayequal(void); -void atk2D_jumpifarraynotequal(void); -void atk2E_setbyte(void); -void atk2F_addbyte(void); -void atk30_subbyte(void); -void atk31_copyarray(void); -void atk32_copyarray_withindex(void); -void atk33_orbyte(void); -void atk34_orhalfword(void); -void atk35_orword(void); -void atk36_bicbyte(void); -void atk37_bichalfword(void); -void atk38_bicword(void); -void atk39_pause(void); -void atk3A_waitstate(void); -void atk3B_healthbar_update(void); -void atk3C_return(void); -void atk3D_end(void); -void atk3E_end2(void); -void atk3F_end3(void); -void atk40_jump_if_move_affected_by_protect(void); -void atk41_call(void); -void atk42_jumpiftype2(void); -void atk43_jumpifabilitypresent(void); -void atk44(void); -void atk45_playanimation(void); -void atk46_playanimation2(void); -void atk47_setgraphicalstatchangevalues(void); -void atk48_playstatchangeanimation(void); -void atk49_moveend(void); -void atk4A_typecalc2(void); -void atk4B_return_atk_to_ball(void); -void atk4C_copy_poke_data(void); -void atk4D_switch_data_update(void); -void atk4E_switchin_anim(void); -void atk4F_jump_if_cannot_switch(void); -void atk50_openpartyscreen(void); -void atk51_switch_handle_order(void); -void atk52_switch_in_effects(void); -void atk53_trainer_slide(void); -void atk54_effectiveness_sound(void); -void atk55_play_sound(void); -void atk56_fainting_cry(void); -void atk57(void); -void atk58_return_to_ball(void); -void atk59_learnmove_inbattle(void); -void atk5A_yesnoboxlearnmove(void); -void atk5B_yesnoboxstoplearningmove(void); -void atk5C_hitanimation(void); -void atk5D_getmoneyreward(void); -void atk5E_8025A70(void); -void atk5F_8025B24(void); -void atk60_increment_gamestat(void); -void atk61_8025BA4(void); -void atk62_08025C6C(void); -void atk63_jumptorandomattack(void); -void atk64_statusanimation(void); -void atk65_status2animation(void); -void atk66_chosenstatusanimation(void); -void atk67_yesnobox(void); -void atk68_80246A0(void); -void atk69_dmg_adjustment3(void); -void atk6A_removeitem(void); -void atk6B_atknameinbuff1(void); -void atk6C_draw_lvlupbox(void); -void atk6D_reset_sentpokes_value(void); -void atk6E_set_atk_to_player0(void); -void atk6F_set_visible(void); -void atk70_record_last_used_ability(void); -void atk71_buffer_move_to_learn(void); -void atk72_jump_if_can_run_frombattle(void); -void atk73_hp_thresholds(void); -void atk74_hp_thresholds2(void); -void atk75_item_effect_on_opponent(void); -void atk76_various(void); -void atk77_set_protect_like(void); -void atk78_faintifabilitynotdamp(void); -void atk79_setatkhptozero(void); -void atk7A_jumpwhiletargetvalid(void); -void atk7B_healhalfHP_if_possible(void); -void atk7C_trymirrormove(void); -void atk7D_set_rain(void); -void atk7E_setreflect(void); -void atk7F_setseeded(void); -void atk80_manipulatedamage(void); -void atk81_setrest(void); -void atk82_jumpifnotfirstturn(void); -void atk83_nop(void); -void atk84_jump_if_cant_sleep(void); -void atk85_stockpile(void); -void atk86_stockpiletobasedamage(void); -void atk87_stockpiletohpheal(void); -void atk88_negativedamage(void); -void atk89_statbuffchange(void); -void atk8A_normalisebuffs(void); -void atk8B_setbide(void); -void atk8C_confuseifrepeatingattackends(void); -void atk8D_setmultihit_counter(void); -void atk8E_init_multihit_string(void); -void atk8F_forcerandomswitch(void); -void atk90_conversion_type_change(void); -void atk91_givepaydaymoney(void); -void atk92_setlightscreen(void); -void atk93_ko_move(void); -void atk94_damagetohalftargethp(void); -void atk95_setsandstorm(void); -void atk96_weatherdamage(void); -void atk97_try_infatuation(void); -void atk98_status_icon_update(void); -void atk99_setmist(void); -void atk9A_set_focusenergy(void); -void atk9B_transformdataexecution(void); -void atk9C_set_substitute(void); -void atk9D_mimicattackcopy(void); -void atk9E_metronome(void); -void atk9F_dmgtolevel(void); -void atkA0_psywavedamageeffect(void); -void atkA1_counterdamagecalculator(void); -void atkA2_mirrorcoatdamagecalculator(void); -void atkA3_disablelastusedattack(void); -void atkA4_setencore(void); -void atkA5_painsplitdmgcalc(void); -void atkA6_settypetorandomresistance(void); -void atkA7_setalwayshitflag(void); -void atkA8_copymovepermanently(void); -void atkA9_sleeptalk_choose_move(void); -void atkAA_set_destinybond(void); -void atkAB_DestinyBondFlagUpdate(void); -void atkAC_remaininghptopower(void); -void atkAD_spite_ppreduce(void); -void atkAE_heal_party_status(void); -void atkAF_cursetarget(void); -void atkB0_set_spikes(void); -void atkB1_set_foresight(void); -void atkB2_setperishsong(void); -void atkB3_rolloutdamagecalculation(void); -void atkB4_jumpifconfusedandstatmaxed(void); -void atkB5_furycuttercalc(void); -void atkB6_happinesstodamagecalculation(void); -void atkB7_presentdamagecalculation(void); -void atkB8_set_safeguard(void); -void atkB9_magnitudedamagecalculation(void); -void atkBA_jumpifnopursuitswitchdmg(void); -void atkBB_setsunny(void); -void atkBC_maxattackhalvehp(void); -void atkBD_copyfoestats(void); -void atkBE_rapidspinfree(void); -void atkBF_set_defense_curl(void); -void atkC0_recoverbasedonsunlight(void); -void atkC1_hidden_power(void); -void atkC2_selectnexttarget(void); -void atkC3_setfutureattack(void); -void atkC4_beat_up(void); -void atkC5_setsemiinvulnerablebit(void); -void atkC6_clearsemiinvulnerablebit(void); -void atkC7_setminimize(void); -void atkC8_sethail(void); -void atkC9_jumpifattackandspecialattackcannotfall(void); -void atkCA_setforcedtarget(void); -void atkCB_setcharge(void); -void atkCC_callterrainattack(void); -void atkCD_cureifburnedparalysedorpoisoned(void); -void atkCE_settorment(void); -void atkCF_jumpifnodamage(void); -void atkD0_settaunt(void); -void atkD1_set_helpinghand(void); -void atkD2_swap_items(void); -void atkD3_copy_ability(void); -void atkD4_wish_effect(void); -void atkD5_setroots(void); -void atkD6_doubledamagedealtifdamaged(void); -void atkD7_setyawn(void); -void atkD8_setdamagetohealthdifference(void); -void atkD9_scaledamagebyhealthratio(void); -void atkDA_abilityswap(void); -void atkDB_imprisoneffect(void); -void atkDC_setgrudge(void); -void atkDD_weightdamagecalculation(void); -void atkDE_asistattackselect(void); -void atkDF_setmagiccoat(void); -void atkE0_setstealstatchange(void); -void atkE1_intimidate_string_loader(void); -void atkE2_switchout_abilities(void); -void atkE3_jumpifhasnohp(void); -void atkE4_getsecretpowereffect(void); -void atkE5_pickup(void); -void atkE6_castform_change_animation(void); -void atkE7_castform_data_change(void); -void atkE8_settypebasedhalvers(void); -void atkE9_setweatherballtype(void); -void atkEA_recycleitem(void); -void atkEB_settypetoterrain(void); -void atkEC_pursuit_sth(void); -void atkED_802B4B4(void); -void atkEE_removelightscreenreflect(void); -void atkEF_pokeball_catch_calculation(void); -void atkF0_copy_caught_poke(void); -void atkF1_setpoke_as_caught(void); -void atkF2_display_dex_info(void); -void atkF3_nickname_caught_poke(void); -void atkF4_802BEF0(void); -void atkF5_removeattackerstatus1(void); -void atkF6_802BF48(void); -void atkF7_802BF54(void); -void sub_8056EF8(void); +static void atk00_attackcanceler(void); +static void atk01_accuracycheck(void); +static void atk02_attackstring(void); +static void atk03_ppreduce(void); +static void atk04_critcalc(void); +static void atk05_damagecalc1(void); +static void atk06_typecalc(void); +static void atk07_dmg_adjustment(void); +static void atk08_dmg_adjustment2(void); +static void atk09_attackanimation(void); +static void atk0A_waitanimation(void); +static void atk0B_healthbarupdate(void); +static void atk0C_datahpupdate(void); +static void atk0D_critmessage(void); +static void atk0E_effectiveness_sound(void); +static void atk0F_resultmessage(void); +static void atk10_printstring(void); +static void atk11_printstring_playeronly(void); +static void atk12_waitmessage(void); +static void atk13_printfromtable(void); +static void atk14_printfromtable_playeronly(void); +static void atk15_seteffectwithchance(void); +static void atk16_seteffectprimary(void); +static void atk17_seteffectsecondary(void); +static void atk18_status_effect_clear(void); +static void atk19_faint_pokemon(void); +static void atk1A_faint_animation(void); +static void atk1B_faint_effects_clear(void); +static void atk1C_jumpifstatus(void); +static void atk1D_jumpifstatus2(void); +static void atk1E_jumpifability(void); +static void atk1F_jumpifsideaffecting(void); +static void atk20_jumpifstat(void); +static void atk21_jumpifstatus3(void); +static void atk22_jumpiftype(void); +static void atk23_getexp(void); +static void atk24(void); +static void atk25_move_values_cleanup(void); +static void atk26_set_multihit(void); +static void atk27_decrement_multihit(void); +static void atk28_goto(void); +static void atk29_jumpifbyte(void); +static void atk2A_jumpifhalfword(void); +static void atk2B_jumpifword(void); +static void atk2C_jumpifarrayequal(void); +static void atk2D_jumpifarraynotequal(void); +static void atk2E_setbyte(void); +static void atk2F_addbyte(void); +static void atk30_subbyte(void); +static void atk31_copyarray(void); +static void atk32_copyarray_withindex(void); +static void atk33_orbyte(void); +static void atk34_orhalfword(void); +static void atk35_orword(void); +static void atk36_bicbyte(void); +static void atk37_bichalfword(void); +static void atk38_bicword(void); +static void atk39_pause(void); +static void atk3A_waitstate(void); +static void atk3B_healthbar_update(void); +static void atk3C_return(void); +static void atk3D_end(void); +static void atk3E_end2(void); +static void atk3F_end3(void); +static void atk40_jump_if_move_affected_by_protect(void); +static void atk41_call(void); +static void atk42_jumpiftype2(void); +static void atk43_jumpifabilitypresent(void); +static void atk44(void); +static void atk45_playanimation(void); +static void atk46_playanimation2(void); +static void atk47_setgraphicalstatchangevalues(void); +static void atk48_playstatchangeanimation(void); +static void atk49_moveend(void); +static void atk4A_typecalc2(void); +static void atk4B_return_atk_to_ball(void); +static void atk4C_copy_poke_data(void); +static void atk4D_switch_data_update(void); +static void atk4E_switchin_anim(void); +static void atk4F_jump_if_cannot_switch(void); +static void atk50_openpartyscreen(void); +static void atk51_switch_handle_order(void); +static void atk52_switch_in_effects(void); +static void atk53_trainer_slide(void); +static void atk54_effectiveness_sound(void); +static void atk55_play_sound(void); +static void atk56_fainting_cry(void); +static void atk57(void); +static void atk58_return_to_ball(void); +static void atk59_learnmove_inbattle(void); +static void atk5A_yesnoboxlearnmove(void); +static void atk5B_yesnoboxstoplearningmove(void); +static void atk5C_hitanimation(void); +static void atk5D_getmoneyreward(void); +static void atk5E_8025A70(void); +static void atk5F_8025B24(void); +static void atk60_increment_gamestat(void); +static void atk61_8025BA4(void); +static void atk62_08025C6C(void); +static void atk63_jumptorandomattack(void); +static void atk64_statusanimation(void); +static void atk65_status2animation(void); +static void atk66_chosenstatusanimation(void); +static void atk67_yesnobox(void); +static void atk68_80246A0(void); +static void atk69_dmg_adjustment3(void); +static void atk6A_removeitem(void); +static void atk6B_atknameinbuff1(void); +static void atk6C_draw_lvlupbox(void); +static void atk6D_reset_sentpokes_value(void); +static void atk6E_set_atk_to_player0(void); +static void atk6F_set_visible(void); +static void atk70_record_last_used_ability(void); +static void atk71_buffer_move_to_learn(void); +static void atk72_jump_if_can_run_frombattle(void); +static void atk73_hp_thresholds(void); +static void atk74_hp_thresholds2(void); +static void atk75_item_effect_on_opponent(void); +static void atk76_various(void); +static void atk77_set_protect_like(void); +static void atk78_faintifabilitynotdamp(void); +static void atk79_setatkhptozero(void); +static void atk7A_jumpwhiletargetvalid(void); +static void atk7B_healhalfHP_if_possible(void); +static void atk7C_trymirrormove(void); +static void atk7D_set_rain(void); +static void atk7E_setreflect(void); +static void atk7F_setseeded(void); +static void atk80_manipulatedamage(void); +static void atk81_setrest(void); +static void atk82_jumpifnotfirstturn(void); +static void atk83_nop(void); +static void atk84_jump_if_cant_sleep(void); +static void atk85_stockpile(void); +static void atk86_stockpiletobasedamage(void); +static void atk87_stockpiletohpheal(void); +static void atk88_negativedamage(void); +static void atk89_statbuffchange(void); +static void atk8A_normalisebuffs(void); +static void atk8B_setbide(void); +static void atk8C_confuseifrepeatingattackends(void); +static void atk8D_setmultihit_counter(void); +static void atk8E_init_multihit_string(void); +static void atk8F_forcerandomswitch(void); +static void atk90_conversion_type_change(void); +static void atk91_givepaydaymoney(void); +static void atk92_setlightscreen(void); +static void atk93_ko_move(void); +static void atk94_damagetohalftargethp(void); +static void atk95_setsandstorm(void); +static void atk96_weatherdamage(void); +static void atk97_try_infatuation(void); +static void atk98_status_icon_update(void); +static void atk99_setmist(void); +static void atk9A_set_focusenergy(void); +static void atk9B_transformdataexecution(void); +static void atk9C_set_substitute(void); +static void atk9D_mimicattackcopy(void); +static void atk9E_metronome(void); +static void atk9F_dmgtolevel(void); +static void atkA0_psywavedamageeffect(void); +static void atkA1_counterdamagecalculator(void); +static void atkA2_mirrorcoatdamagecalculator(void); +static void atkA3_disablelastusedattack(void); +static void atkA4_setencore(void); +static void atkA5_painsplitdmgcalc(void); +static void atkA6_settypetorandomresistance(void); +static void atkA7_setalwayshitflag(void); +static void atkA8_copymovepermanently(void); +static void atkA9_sleeptalk_choose_move(void); +static void atkAA_set_destinybond(void); +static void atkAB_DestinyBondFlagUpdate(void); +static void atkAC_remaininghptopower(void); +static void atkAD_spite_ppreduce(void); +static void atkAE_heal_party_status(void); +static void atkAF_cursetarget(void); +static void atkB0_set_spikes(void); +static void atkB1_set_foresight(void); +static void atkB2_setperishsong(void); +static void atkB3_rolloutdamagecalculation(void); +static void atkB4_jumpifconfusedandstatmaxed(void); +static void atkB5_furycuttercalc(void); +static void atkB6_happinesstodamagecalculation(void); +static void atkB7_presentdamagecalculation(void); +static void atkB8_set_safeguard(void); +static void atkB9_magnitudedamagecalculation(void); +static void atkBA_jumpifnopursuitswitchdmg(void); +static void atkBB_setsunny(void); +static void atkBC_maxattackhalvehp(void); +static void atkBD_copyfoestats(void); +static void atkBE_rapidspinfree(void); +static void atkBF_set_defense_curl(void); +static void atkC0_recoverbasedonsunlight(void); +static void atkC1_hidden_power(void); +static void atkC2_selectnexttarget(void); +static void atkC3_setfutureattack(void); +static void atkC4_beat_up(void); +static void atkC5_setsemiinvulnerablebit(void); +static void atkC6_clearsemiinvulnerablebit(void); +static void atkC7_setminimize(void); +static void atkC8_sethail(void); +static void atkC9_jumpifattackandspecialattackcannotfall(void); +static void atkCA_setforcedtarget(void); +static void atkCB_setcharge(void); +static void atkCC_callterrainattack(void); +static void atkCD_cureifburnedparalysedorpoisoned(void); +static void atkCE_settorment(void); +static void atkCF_jumpifnodamage(void); +static void atkD0_settaunt(void); +static void atkD1_set_helpinghand(void); +static void atkD2_swap_items(void); +static void atkD3_copy_ability(void); +static void atkD4_wish_effect(void); +static void atkD5_setroots(void); +static void atkD6_doubledamagedealtifdamaged(void); +static void atkD7_setyawn(void); +static void atkD8_setdamagetohealthdifference(void); +static void atkD9_scaledamagebyhealthratio(void); +static void atkDA_abilityswap(void); +static void atkDB_imprisoneffect(void); +static void atkDC_setgrudge(void); +static void atkDD_weightdamagecalculation(void); +static void atkDE_asistattackselect(void); +static void atkDF_setmagiccoat(void); +static void atkE0_setstealstatchange(void); +static void atkE1_intimidate_string_loader(void); +static void atkE2_switchout_abilities(void); +static void atkE3_jumpifhasnohp(void); +static void atkE4_getsecretpowereffect(void); +static void atkE5_pickup(void); +static void atkE6_castform_change_animation(void); +static void atkE7_castform_data_change(void); +static void atkE8_settypebasedhalvers(void); +static void atkE9_setweatherballtype(void); +static void atkEA_recycleitem(void); +static void atkEB_settypetoterrain(void); +static void atkEC_pursuit_sth(void); +static void atkED_802B4B4(void); +static void atkEE_removelightscreenreflect(void); +static void atkEF_pokeball_catch_calculation(void); +static void atkF0_give_caught_mon(void); +static void atkF1_set_caught_mon_dex_flags(void); +static void atkF2_display_dex_info(void); +static void atkF3_nickname_caught_poke(void); +static void atkF4_subattackerhpbydmg(void); +static void atkF5_removeattackerstatus1(void); +static void atkF6_802BF48(void); +static void atkF7_802BF54(void); +static void atkF8_trainer_slide_back(void); void (* const gBattleScriptingCommandsTable[])(void) = { @@ -727,15 +754,15 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkED_802B4B4, atkEE_removelightscreenreflect, atkEF_pokeball_catch_calculation, - atkF0_copy_caught_poke, - atkF1_setpoke_as_caught, + atkF0_give_caught_mon, + atkF1_set_caught_mon_dex_flags, atkF2_display_dex_info, atkF3_nickname_caught_poke, - atkF4_802BEF0, + atkF4_subattackerhpbydmg, atkF5_removeattackerstatus1, atkF6_802BF48, atkF7_802BF54, - sub_8056EF8 + atkF8_trainer_slide_back }; struct StatFractions @@ -877,8 +904,22 @@ extern const struct SpriteTemplate SpriteTemplate_MonIconOnLvlUpBox; extern const u16 sProtectSuccessRates[]; extern const u16 sNaturePowerMoves[]; extern const u16 sWeightToDamageTable[]; +extern const u8 sTerrainToType[]; +extern const u8 sBallCatchBonuses[]; +extern const u16 gUnknown_0831C2C8[]; +extern const u8 gUnknown_0831C2E8[]; +extern const u8 gUnknown_0831C4F8[]; +extern const u8 sFlailHpScaleToPowerTable[12]; +extern const u16 gRarePickupItems[]; +extern const u16 gPickupItems[]; +extern const u8 gPickupProbabilities[]; -void atk00_attackcanceler(void) +extern const u16 gMovesForbiddenToCopy[]; +#define MIMIC_FORBIDDEN_END 0xFFFE +#define METRONOME_FORBIDDEN_END 0xFFFF +#define ASSIST_FORBIDDEN_END 0xFFFF + +static void atk00_attackcanceler(void) { s32 i; @@ -972,7 +1013,7 @@ void atk00_attackcanceler(void) } } -void JumpIfMoveFailed(u8 adder, u16 move) +static void JumpIfMoveFailed(u8 adder, u16 move) { const void* BS_ptr = gBattlescriptCurrInstr + adder; if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) @@ -990,7 +1031,7 @@ void JumpIfMoveFailed(u8 adder, u16 move) gBattlescriptCurrInstr = BS_ptr; } -void atk40_jump_if_move_affected_by_protect(void) +static void atk40_jump_if_move_affected_by_protect(void) { if (TARGET_PROTECT_AFFECTED) { @@ -1062,7 +1103,7 @@ bool8 AccuracyCalcHelper(u16 move) return FALSE; } -void atk01_accuracycheck(void) +static void atk01_accuracycheck(void) { u16 move = BS2ScriptRead16(gBattlescriptCurrInstr + 5); @@ -1154,7 +1195,7 @@ void atk01_accuracycheck(void) } } -void atk02_attackstring(void) +static void atk02_attackstring(void) { if (gBattleExecBuffer) return; @@ -1167,7 +1208,7 @@ void atk02_attackstring(void) gBattleCommunication[MSG_DISPLAY] = 0; } -void atk03_ppreduce(void) +static void atk03_ppreduce(void) { s32 ppToDeduct = 1; @@ -1214,7 +1255,7 @@ void atk03_ppreduce(void) gBattlescriptCurrInstr++; } -void atk04_critcalc(void) +static void atk04_critcalc(void) { u8 holdEffect; u16 item, critChance; @@ -1251,7 +1292,7 @@ void atk04_critcalc(void) gBattlescriptCurrInstr++; } -void atk05_damagecalc1(void) +static void atk05_damagecalc1(void) { u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, @@ -1282,7 +1323,7 @@ void AI_CalcDmg(u8 bankAtk, u8 bankDef) gBattleMoveDamage = gBattleMoveDamage * 15 / 10; } -void ModulateDmgByType(u8 multiplier) +static void ModulateDmgByType(u8 multiplier) { gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; if (gBattleMoveDamage == 0 && multiplier != 0) @@ -1319,7 +1360,7 @@ void ModulateDmgByType(u8 multiplier) #define TYPE_FORESIGHT 0xFE #define TYPE_ENDTABLE 0xFF -void atk06_typecalc(void) +static void atk06_typecalc(void) { s32 i = 0; u8 moveType; @@ -1464,7 +1505,7 @@ static void CheckWonderGuardAndLevitate(void) } } -void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as ModulateDmgByType except different arguments +static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as ModulateDmgByType except different arguments { gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; if (gBattleMoveDamage == 0 && multiplier != 0) @@ -1615,12 +1656,12 @@ static inline void ApplyRandomDmgMultiplier(void) } } -void Unused_ApplyRandomDmgMultiplier(void) +static void Unused_ApplyRandomDmgMultiplier(void) { ApplyRandomDmgMultiplier(); } -void atk07_dmg_adjustment(void) +static void atk07_dmg_adjustment(void) { u8 holdEffect, quality; @@ -1668,7 +1709,7 @@ void atk07_dmg_adjustment(void) gBattlescriptCurrInstr++; } -void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect. +static void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect. { u8 holdEffect, quality; @@ -1714,7 +1755,7 @@ void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for gBattlescriptCurrInstr++; } -void atk09_attackanimation(void) +static void atk09_attackanimation(void) { if (gBattleExecBuffer) return; @@ -1768,20 +1809,20 @@ void atk09_attackanimation(void) } } -void atk0A_waitanimation(void) +static void atk0A_waitanimation(void) { if (gBattleExecBuffer == 0) gBattlescriptCurrInstr++; } -void atk0B_healthbarupdate(void) +static void atk0B_healthbarupdate(void) { if (gBattleExecBuffer) return; if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { @@ -1810,7 +1851,7 @@ void atk0B_healthbarupdate(void) gBattlescriptCurrInstr += 2; } -void atk0C_datahpupdate(void) +static void atk0C_datahpupdate(void) { u32 moveType; @@ -1826,7 +1867,7 @@ void atk0C_datahpupdate(void) if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage) @@ -1871,7 +1912,7 @@ void atk0C_datahpupdate(void) else { gTakenDmg[gActiveBank] += gBattleMoveDamage; - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) gTakenDmgBanks[gActiveBank] = gBankAttacker; else gTakenDmgBanks[gActiveBank] = gBankTarget; @@ -1895,7 +1936,7 @@ void atk0C_datahpupdate(void) { gProtectStructs[gActiveBank].physicalDmg = gHpDealt; gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHpDealt; - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) { gProtectStructs[gActiveBank].physicalBank = gBankAttacker; gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker; @@ -1910,7 +1951,7 @@ void atk0C_datahpupdate(void) { gProtectStructs[gActiveBank].specialDmg = gHpDealt; gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHpDealt; - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) { gProtectStructs[gActiveBank].specialBank = gBankAttacker; gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker; @@ -1929,14 +1970,14 @@ void atk0C_datahpupdate(void) } else { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF; } gBattlescriptCurrInstr += 2; } -void atk0D_critmessage(void) +static void atk0D_critmessage(void) { if (gBattleExecBuffer == 0) { @@ -1949,7 +1990,7 @@ void atk0D_critmessage(void) } } -void atk0E_effectiveness_sound(void) +static void atk0E_effectiveness_sound(void) { if (gBattleExecBuffer) return; @@ -1996,7 +2037,7 @@ void atk0E_effectiveness_sound(void) gBattlescriptCurrInstr++; } -void atk0F_resultmessage(void) +static void atk0F_resultmessage(void) { u32 stringId = 0; @@ -2085,7 +2126,7 @@ void atk0F_resultmessage(void) gBattlescriptCurrInstr++; } -void atk10_printstring(void) +static void atk10_printstring(void) { if (gBattleExecBuffer == 0) { @@ -2096,7 +2137,7 @@ void atk10_printstring(void) } } -void atk11_printstring_playeronly(void) +static void atk11_printstring_playeronly(void) { gActiveBank = gBankAttacker; @@ -2107,7 +2148,7 @@ void atk11_printstring_playeronly(void) gBattleCommunication[MSG_DISPLAY] = 1; } -void atk12_waitmessage(void) +static void atk12_waitmessage(void) { if (gBattleExecBuffer == 0) { @@ -2128,7 +2169,7 @@ void atk12_waitmessage(void) } } -void atk13_printfromtable(void) +static void atk13_printfromtable(void) { if (gBattleExecBuffer == 0) { @@ -2142,7 +2183,7 @@ void atk13_printfromtable(void) } } -void atk14_printfromtable_playeronly(void) +static void atk14_printfromtable_playeronly(void) { if (gBattleExecBuffer == 0) { @@ -2868,7 +2909,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleCommunication[MOVE_EFFECT_BYTE] = 0; } -void atk15_seteffectwithchance(void) +static void atk15_seteffectwithchance(void) { u32 percentChance; @@ -2901,19 +2942,19 @@ void atk15_seteffectwithchance(void) gBattleScripting.field_16 = 0; } -void atk16_seteffectprimary(void) +static void atk16_seteffectprimary(void) { SetMoveEffect(TRUE, 0); } -void atk17_seteffectsecondary(void) +static void atk17_seteffectsecondary(void) { SetMoveEffect(FALSE, 0); } -void atk18_status_effect_clear(void) +static void atk18_status_effect_clear(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC) gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); @@ -2925,7 +2966,7 @@ void atk18_status_effect_clear(void) gBattleScripting.field_16 = 0; } -void atk19_faint_pokemon(void) +static void atk19_faint_pokemon(void) { const u8 *BS_ptr; @@ -3012,22 +3053,22 @@ void atk19_faint_pokemon(void) } } -void atk1A_faint_animation(void) +static void atk1A_faint_animation(void) { if (gBattleExecBuffer == 0) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitFaintAnimation(0); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; } } -void atk1B_faint_effects_clear(void) +static void atk1B_faint_effects_clear(void) { if (gBattleExecBuffer == 0) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBank].hp == 0) { @@ -3041,9 +3082,9 @@ void atk1B_faint_effects_clear(void) } } -void atk1C_jumpifstatus(void) +static void atk1C_jumpifstatus(void) { - u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]); u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); @@ -3053,9 +3094,9 @@ void atk1C_jumpifstatus(void) gBattlescriptCurrInstr += 10; } -void atk1D_jumpifstatus2(void) +static void atk1D_jumpifstatus2(void) { - u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]); u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); @@ -3065,13 +3106,13 @@ void atk1D_jumpifstatus2(void) gBattlescriptCurrInstr += 10; } -void atk1E_jumpifability(void) +static void atk1E_jumpifability(void) { u8 bank; - u8 ability = BSScriptRead8(gBattlescriptCurrInstr + 2); + u8 ability = gBattlescriptCurrInstr[2]; const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_ATTACKER_SIDE) + if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER_SIDE) { bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0); if (bank) @@ -3084,7 +3125,7 @@ void atk1E_jumpifability(void) else gBattlescriptCurrInstr += 7; } - else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_NOT_ATTACKER_SIDE) + else if (gBattlescriptCurrInstr[1] == BS_GET_NOT_ATTACKER_SIDE) { bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0); if (bank) @@ -3099,7 +3140,7 @@ void atk1E_jumpifability(void) } else { - bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + bank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleMons[bank].ability == ability) { gLastUsedAbility = ability; @@ -3112,13 +3153,13 @@ void atk1E_jumpifability(void) } } -void atk1F_jumpifsideaffecting(void) +static void atk1F_jumpifsideaffecting(void) { u8 side; u16 flags; const u8* jumpPtr; - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_ATTACKER) + if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER) side = GET_BANK_SIDE(gBankAttacker); else side = GET_BANK_SIDE(gBankTarget); @@ -3132,36 +3173,36 @@ void atk1F_jumpifsideaffecting(void) gBattlescriptCurrInstr += 8; } -void atk20_jumpifstat(void) +static void atk20_jumpifstat(void) { u8 ret = 0; - u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); - u8 value = gBattleMons[bank].statStages[BSScriptRead8(gBattlescriptCurrInstr + 3)]; + u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]); + u8 value = gBattleMons[bank].statStages[gBattlescriptCurrInstr[3]]; - switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + switch (gBattlescriptCurrInstr[2]) { case CMP_EQUAL: - if (value == BSScriptRead8(gBattlescriptCurrInstr + 4)) + if (value == gBattlescriptCurrInstr[4]) ret++; break; case CMP_NOT_EQUAL: - if (value != BSScriptRead8(gBattlescriptCurrInstr + 4)) + if (value != gBattlescriptCurrInstr[4]) ret++; break; case CMP_GREATER_THAN: - if (value > BSScriptRead8(gBattlescriptCurrInstr + 4)) + if (value > gBattlescriptCurrInstr[4]) ret++; break; case CMP_LESS_THAN: - if (value < BSScriptRead8(gBattlescriptCurrInstr + 4)) + if (value < gBattlescriptCurrInstr[4]) ret++; break; case CMP_COMMON_BITS: - if (value & BSScriptRead8(gBattlescriptCurrInstr + 4)) + if (value & gBattlescriptCurrInstr[4]) ret++; break; case CMP_NO_COMMON_BITS: - if (!(value & BSScriptRead8(gBattlescriptCurrInstr + 4))) + if (!(value & gBattlescriptCurrInstr[4])) ret++; break; } @@ -3172,16 +3213,16 @@ void atk20_jumpifstat(void) gBattlescriptCurrInstr += 9; } -void atk21_jumpifstatus3(void) +static void atk21_jumpifstatus3(void) { u32 flags; const u8* jumpPtr; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); - if (BSScriptRead8(gBattlescriptCurrInstr + 6)) + if (gBattlescriptCurrInstr[6]) { if ((gStatuses3[gActiveBank] & flags) != 0) gBattlescriptCurrInstr += 11; @@ -3197,10 +3238,10 @@ void atk21_jumpifstatus3(void) } } -void atk22_jumpiftype(void) +static void atk22_jumpiftype(void) { - u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); - u8 type = BSScriptRead8(gBattlescriptCurrInstr + 2); + u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]); + u8 type = gBattlescriptCurrInstr[2]; const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type) @@ -3209,7 +3250,7 @@ void atk22_jumpiftype(void) gBattlescriptCurrInstr += 7; } -void atk23_getexp(void) +static void atk23_getexp(void) { u16 item; s32 i; // also used as stringId @@ -3219,7 +3260,7 @@ void atk23_getexp(void) s32 viaExpShare = 0; u16* exp = &gBattleStruct->expValue; - gBank1 = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]); sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1]; switch (gBattleScripting.atk23_state) @@ -3487,7 +3528,7 @@ void atk23_getexp(void) } #ifdef NONMATCHING -void atk24(void) +static void atk24(void) { u16 HP_count = 0; s32 i; @@ -3570,7 +3611,7 @@ void atk24(void) } #else __attribute__((naked)) -void atk24(void) +static void atk24(void) { asm("\n\ .syntax unified\n\ @@ -3864,7 +3905,7 @@ void atk24(void) #endif // NONMATCHING -void MoveValuesCleanUp(void) +static void MoveValuesCleanUp(void) { gBattleMoveFlags = 0; gBattleScripting.dmgMultiplier = 1; @@ -3875,19 +3916,19 @@ void MoveValuesCleanUp(void) gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); } -void atk25_move_values_cleanup(void) +static void atk25_move_values_cleanup(void) { MoveValuesCleanUp(); gBattlescriptCurrInstr += 1; } -void atk26_set_multihit(void) +static void atk26_set_multihit(void) { - gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + gMultiHitCounter = gBattlescriptCurrInstr[1]; gBattlescriptCurrInstr += 2; } -void atk27_decrement_multihit(void) +static void atk27_decrement_multihit(void) { if (--gMultiHitCounter == 0) gBattlescriptCurrInstr += 5; @@ -3895,16 +3936,16 @@ void atk27_decrement_multihit(void) gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); } -void atk28_goto(void) +static void atk28_goto(void) { gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); } -void atk29_jumpifbyte(void) +static void atk29_jumpifbyte(void) { - u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u8 caseID = gBattlescriptCurrInstr[1]; const u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); - u8 value = BSScriptRead8(gBattlescriptCurrInstr + 6); + u8 value = gBattlescriptCurrInstr[6]; const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); gBattlescriptCurrInstr += 11; @@ -3938,9 +3979,9 @@ void atk29_jumpifbyte(void) } } -void atk2A_jumpifhalfword(void) +static void atk2A_jumpifhalfword(void) { - u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u8 caseID = gBattlescriptCurrInstr[1]; const u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6); const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8); @@ -3976,9 +4017,9 @@ void atk2A_jumpifhalfword(void) } } -void atk2B_jumpifword(void) +static void atk2B_jumpifword(void) { - u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u8 caseID = gBattlescriptCurrInstr[1]; const u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6); const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); @@ -4014,11 +4055,11 @@ void atk2B_jumpifword(void) } } -void atk2C_jumpifarrayequal(void) +static void atk2C_jumpifarrayequal(void) { const u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); - u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + u32 size = gBattlescriptCurrInstr[9]; const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); u8 i; @@ -4036,12 +4077,12 @@ void atk2C_jumpifarrayequal(void) gBattlescriptCurrInstr = jumpPtr; } -void atk2D_jumpifarraynotequal(void) +static void atk2D_jumpifarraynotequal(void) { u8 equalBytes = 0; const u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); - u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + u32 size = gBattlescriptCurrInstr[9]; const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); u8 i; @@ -4060,33 +4101,33 @@ void atk2D_jumpifarraynotequal(void) gBattlescriptCurrInstr += 14; } -void atk2E_setbyte(void) +static void atk2E_setbyte(void) { u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); - *memByte = BSScriptRead8(gBattlescriptCurrInstr + 5); + *memByte = gBattlescriptCurrInstr[5]; gBattlescriptCurrInstr += 6; } -void atk2F_addbyte(void) +static void atk2F_addbyte(void) { u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); - *memByte += BSScriptRead8(gBattlescriptCurrInstr + 5); + *memByte += gBattlescriptCurrInstr[5]; gBattlescriptCurrInstr += 6; } -void atk30_subbyte(void) +static void atk30_subbyte(void) { u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); - *memByte -= BSScriptRead8(gBattlescriptCurrInstr + 5); + *memByte -= gBattlescriptCurrInstr[5]; gBattlescriptCurrInstr += 6; } -void atk31_copyarray(void) +static void atk31_copyarray(void) { u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); - s32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + s32 size = gBattlescriptCurrInstr[9]; s32 i; for (i = 0; i < size; i++) @@ -4097,12 +4138,12 @@ void atk31_copyarray(void) gBattlescriptCurrInstr += 10; } -void atk32_copyarray_withindex(void) +static void atk32_copyarray_withindex(void) { u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); const u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9); - s32 size = BSScriptRead8(gBattlescriptCurrInstr + 13); + s32 size = gBattlescriptCurrInstr[13]; s32 i; for (i = 0; i < size; i++) @@ -4113,14 +4154,14 @@ void atk32_copyarray_withindex(void) gBattlescriptCurrInstr += 14; } -void atk33_orbyte(void) +static void atk33_orbyte(void) { u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); - *memByte |= BSScriptRead8(gBattlescriptCurrInstr + 5); + *memByte |= gBattlescriptCurrInstr[5]; gBattlescriptCurrInstr += 6; } -void atk34_orhalfword(void) +static void atk34_orhalfword(void) { u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); @@ -4129,7 +4170,7 @@ void atk34_orhalfword(void) gBattlescriptCurrInstr += 7; } -void atk35_orword(void) +static void atk35_orword(void) { u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); @@ -4138,14 +4179,14 @@ void atk35_orword(void) gBattlescriptCurrInstr += 9; } -void atk36_bicbyte(void) +static void atk36_bicbyte(void) { u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); - *memByte &= ~(BSScriptRead8(gBattlescriptCurrInstr + 5)); + *memByte &= ~(gBattlescriptCurrInstr[5]); gBattlescriptCurrInstr += 6; } -void atk37_bichalfword(void) +static void atk37_bichalfword(void) { u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); @@ -4154,7 +4195,7 @@ void atk37_bichalfword(void) gBattlescriptCurrInstr += 7; } -void atk38_bicword(void) +static void atk38_bicword(void) { u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); @@ -4163,7 +4204,7 @@ void atk38_bicword(void) gBattlescriptCurrInstr += 9; } -void atk39_pause(void) +static void atk39_pause(void) { if (gBattleExecBuffer == 0) { @@ -4176,15 +4217,15 @@ void atk39_pause(void) } } -void atk3A_waitstate(void) +static void atk3A_waitstate(void) { if (gBattleExecBuffer == 0) gBattlescriptCurrInstr++; } -void atk3B_healthbar_update(void) +static void atk3B_healthbar_update(void) { - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) gActiveBank = gBankTarget; else gActiveBank = gBankAttacker; @@ -4194,12 +4235,12 @@ void atk3B_healthbar_update(void) gBattlescriptCurrInstr += 2; } -void atk3C_return(void) +static void atk3C_return(void) { BattleScriptPop(); } -void atk3D_end(void) +static void atk3D_end(void) { if (gBattleTypeFlags & BATTLE_TYPE_ARENA) sub_81A5718(gBankAttacker); @@ -4209,13 +4250,13 @@ void atk3D_end(void) gFightStateTracker = 0xB; } -void atk3E_end2(void) +static void atk3E_end2(void) { gActiveBank = 0; gFightStateTracker = 0xB; } -void atk3F_end3(void) // pops the main function stack +static void atk3F_end3(void) // pops the main function stack { BattleScriptPop(); if (BATTLE_CALLBACKS_STACK->size) @@ -4223,40 +4264,40 @@ void atk3F_end3(void) // pops the main function stack gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size]; } -void atk41_call(void) +static void atk41_call(void) { BattleScriptPush(gBattlescriptCurrInstr + 5); gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } -void atk42_jumpiftype2(void) +static void atk42_jumpiftype2(void) { - u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]); - if (BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2) + if (gBattlescriptCurrInstr[2] == gBattleMons[bank].type1 || gBattlescriptCurrInstr[2] == gBattleMons[bank].type2) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3); else gBattlescriptCurrInstr += 7; } -void atk43_jumpifabilitypresent(void) +static void atk43_jumpifabilitypresent(void) { - if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, BSScriptRead8(gBattlescriptCurrInstr + 1), 0, 0)) + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, gBattlescriptCurrInstr[1], 0, 0)) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); else gBattlescriptCurrInstr += 6; } -void atk44(void) +static void atk44(void) { *(gBankAttacker + gBattleStruct->field_54) = 1; } -void atk45_playanimation(void) +static void atk45_playanimation(void) { const u16* argumentPtr; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE @@ -4293,12 +4334,12 @@ void atk45_playanimation(void) } } -void atk46_playanimation2(void) // animation Id is stored in the first pointer +static void atk46_playanimation2(void) // animation Id is stored in the first pointer { const u16* argumentPtr; const u8* animationIdPtr; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); @@ -4335,7 +4376,7 @@ void atk46_playanimation2(void) // animation Id is stored in the first pointer } } -void atk47_setgraphicalstatchangevalues(void) +static void atk47_setgraphicalstatchangevalues(void) { u8 value = 0; switch (gBattleScripting.statChanger & 0xF0) @@ -4359,7 +4400,7 @@ void atk47_setgraphicalstatchangevalues(void) } #ifdef NONMATCHING -void atk48_playstatchangeanimation(void) +static void atk48_playstatchangeanimation(void) { u32 currStat = 0; s16 statAnimId = 0; @@ -4450,7 +4491,7 @@ void atk48_playstatchangeanimation(void) } #else __attribute__((naked)) -void atk48_playstatchangeanimation(void) +static void atk48_playstatchangeanimation(void) { asm("\n\ .syntax unified\n\ @@ -4706,7 +4747,7 @@ _0804BBBA:\n\ #define ATK49_LAST_CASE 17 -void atk49_moveend(void) +static void atk49_moveend(void) { s32 i; bool32 effect; @@ -4992,7 +5033,7 @@ void atk49_moveend(void) gBattlescriptCurrInstr += 3; } -void atk4A_typecalc2(void) +static void atk4A_typecalc2(void) { u8 flags = 0; s32 i = 0; @@ -5087,7 +5128,7 @@ void atk4A_typecalc2(void) gBattlescriptCurrInstr++; } -void atk4B_return_atk_to_ball(void) +static void atk4B_return_atk_to_ball(void) { gActiveBank = gBankAttacker; if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) @@ -5098,12 +5139,12 @@ void atk4B_return_atk_to_ball(void) gBattlescriptCurrInstr++; } -void atk4C_copy_poke_data(void) +static void atk4C_copy_poke_data(void) { if (gBattleExecBuffer) return; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); gBattlePartyID[gActiveBank] = *(gBattleStruct->field_5C + gActiveBank); @@ -5113,7 +5154,7 @@ void atk4C_copy_poke_data(void) gBattlescriptCurrInstr += 2; } -void atk4D_switch_data_update(void) +static void atk4D_switch_data_update(void) { struct BattlePokemon oldData; s32 i; @@ -5122,7 +5163,7 @@ void atk4D_switch_data_update(void) if (gBattleExecBuffer) return; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); oldData = gBattleMons[gActiveBank]; monData = (u8*)(&gBattleMons[gActiveBank]); @@ -5169,12 +5210,12 @@ void atk4D_switch_data_update(void) gBattlescriptCurrInstr += 2; } -void atk4E_switchin_anim(void) +static void atk4E_switchin_anim(void) { if (gBattleExecBuffer) return; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (GetBankSide(gActiveBank) == SIDE_OPPONENT && !(gBattleTypeFlags & (BATTLE_TYPE_LINK @@ -5195,7 +5236,7 @@ void atk4E_switchin_anim(void) sub_81A56B4(); } -void atk4F_jump_if_cannot_switch(void) +static void atk4F_jump_if_cannot_switch(void) { s32 val = 0; s32 compareVar = 0; @@ -5349,7 +5390,7 @@ void atk4F_jump_if_cannot_switch(void) } } -void sub_804CF10(u8 arg0) +static void sub_804CF10(u8 arg0) { *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; *(gBattleStruct->field_5C + gActiveBank) = 6; @@ -5359,7 +5400,7 @@ void sub_804CF10(u8 arg0) MarkBufferBankForExecution(gActiveBank); } -void atk50_openpartyscreen(void) +static void atk50_openpartyscreen(void) { u32 flags; u8 hitmarkerFaintBits; @@ -5649,15 +5690,15 @@ void atk50_openpartyscreen(void) } } -void atk51_switch_handle_order(void) +static void atk51_switch_handle_order(void) { s32 i; if (gBattleExecBuffer) return; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); - switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + switch (gBattlescriptCurrInstr[2]) { case 0: for (i = 0; i < gNoOfAllBanks; i++) @@ -5716,11 +5757,11 @@ void atk51_switch_handle_order(void) gBattlescriptCurrInstr += 3; } -void atk52_switch_in_effects(void) +static void atk52_switch_in_effects(void) { s32 i; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); sub_803FA70(gActiveBank); gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); @@ -5747,9 +5788,9 @@ void atk52_switch_in_effects(void) gBattleScripting.bank = gActiveBank; BattleScriptPushCursor(); - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + if (gBattlescriptCurrInstr[1] == 0) gBattlescriptCurrInstr = gUnknown_082DAE90; - else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1) + else if (gBattlescriptCurrInstr[1] == 1) gBattlescriptCurrInstr = gUnknown_082DAE59; else gBattlescriptCurrInstr = gUnknown_082DAEC7; @@ -5778,7 +5819,7 @@ void atk52_switch_in_effects(void) *hpOnSwitchout = gBattleMons[i].hp; } - if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5) + if (gBattlescriptCurrInstr[1] == 5) { u32 hitmarkerFaintBits = gHitMarker >> 0x1C; @@ -5797,7 +5838,7 @@ void atk52_switch_in_effects(void) } } -void atk53_trainer_slide(void) +static void atk53_trainer_slide(void) { gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); EmitTrainerSlide(0); @@ -5806,7 +5847,7 @@ void atk53_trainer_slide(void) gBattlescriptCurrInstr += 2; } -void atk54_effectiveness_sound(void) +static void atk54_effectiveness_sound(void) { gActiveBank = gBankAttacker; EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); @@ -5815,7 +5856,7 @@ void atk54_effectiveness_sound(void) gBattlescriptCurrInstr += 3; } -void atk55_play_sound(void) +static void atk55_play_sound(void) { gActiveBank = gBankAttacker; EmitPlaySound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), 0); @@ -5824,16 +5865,16 @@ void atk55_play_sound(void) gBattlescriptCurrInstr += 3; } -void atk56_fainting_cry(void) +static void atk56_fainting_cry(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitFaintingCry(0); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; } -void atk57(void) +static void atk57(void) { gActiveBank = GetBankByIdentity(0); Emit_x37(0, gBattleOutcome); @@ -5842,21 +5883,21 @@ void atk57(void) gBattlescriptCurrInstr += 1; } -void atk58_return_to_ball(void) +static void atk58_return_to_ball(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitReturnPokeToBall(0, 1); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; } -void atk59_learnmove_inbattle(void) +static void atk59_learnmove_inbattle(void) { const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); - u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], BSScriptRead8(gBattlescriptCurrInstr + 9)); + u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]); while (ret == 0xFFFE) ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], 0); @@ -5891,7 +5932,7 @@ void atk59_learnmove_inbattle(void) } } -void atk5A_yesnoboxlearnmove(void) +static void atk5A_yesnoboxlearnmove(void) { gActiveBank = 0; @@ -6010,7 +6051,7 @@ void atk5A_yesnoboxlearnmove(void) } } -void atk5B_yesnoboxstoplearningmove(void) +static void atk5B_yesnoboxstoplearningmove(void) { switch (gBattleScripting.learnMoveState) { @@ -6057,9 +6098,9 @@ void atk5B_yesnoboxstoplearningmove(void) } } -void atk5C_hitanimation(void) +static void atk5C_hitanimation(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { @@ -6134,7 +6175,7 @@ static u32 GetTrainerMoneyToGive(u16 trainerId) return moneyReward; } -void atk5D_getmoneyreward(void) +static void atk5D_getmoneyreward(void) { u32 moneyReward = GetTrainerMoneyToGive(gTrainerBattleOpponent_A); if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) @@ -6147,9 +6188,9 @@ void atk5D_getmoneyreward(void) gBattlescriptCurrInstr++; } -void atk5E_8025A70(void) +static void atk5E_8025A70(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); switch (gBattleCommunication[0]) { @@ -6174,7 +6215,7 @@ void atk5E_8025A70(void) } } -void atk5F_8025B24(void) +static void atk5F_8025B24(void) { gActiveBank = gBankAttacker; gBankAttacker = gBankTarget; @@ -6188,15 +6229,15 @@ void atk5F_8025B24(void) gBattlescriptCurrInstr++; } -void atk60_increment_gamestat(void) +static void atk60_increment_gamestat(void) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) - IncrementGameStat(BSScriptRead8(gBattlescriptCurrInstr + 1)); + IncrementGameStat(gBattlescriptCurrInstr[1]); gBattlescriptCurrInstr += 2; } -void atk61_8025BA4(void) +static void atk61_8025BA4(void) { s32 i; struct Pokemon* party; @@ -6205,7 +6246,7 @@ void atk61_8025BA4(void) if (gBattleExecBuffer) return; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (GetBankSide(gActiveBank) == SIDE_PLAYER) party = gPlayerParty; @@ -6233,18 +6274,18 @@ void atk61_8025BA4(void) gBattlescriptCurrInstr += 2; } -void atk62_08025C6C(void) +static void atk62_08025C6C(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitCmd49(0); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; } -void atk63_jumptorandomattack(void) +static void atk63_jumptorandomattack(void) { - if (BSScriptRead8(gBattlescriptCurrInstr + 1) != 0) + if (gBattlescriptCurrInstr[1] != 0) gCurrentMove = gRandomMove; else gLastUsedMove = gCurrentMove = gRandomMove; @@ -6252,11 +6293,11 @@ void atk63_jumptorandomattack(void) gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; } -void atk64_statusanimation(void) +static void atk64_statusanimation(void) { if (gBattleExecBuffer == 0) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) @@ -6268,13 +6309,13 @@ void atk64_statusanimation(void) } } -void atk65_status2animation(void) +static void atk65_status2animation(void) { u32 wantedToAnimate; if (gBattleExecBuffer == 0) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); wantedToAnimate = BSScriptRead32(gBattlescriptCurrInstr + 2); if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 @@ -6287,26 +6328,26 @@ void atk65_status2animation(void) } } -void atk66_chosenstatusanimation(void) +static void atk66_chosenstatusanimation(void) { u32 wantedStatus; if (gBattleExecBuffer == 0) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); wantedStatus = BSScriptRead32(gBattlescriptCurrInstr + 3); if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { - EmitStatusAnimation(0, BSScriptRead8(gBattlescriptCurrInstr + 2), wantedStatus); + EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus); MarkBufferBankForExecution(gActiveBank); } gBattlescriptCurrInstr += 7; } } -void atk67_yesnobox(void) +static void atk67_yesnobox(void) { switch (gBattleCommunication[0]) { @@ -6349,7 +6390,7 @@ void atk67_yesnobox(void) } } -void atk68_80246A0(void) +static void atk68_80246A0(void) { s32 i; @@ -6359,7 +6400,7 @@ void atk68_80246A0(void) gBattlescriptCurrInstr++; } -void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier. +static void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier. { u8 holdEffect, quality; @@ -6405,11 +6446,11 @@ void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random da gBattlescriptCurrInstr++; } -void atk6A_removeitem(void) +static void atk6A_removeitem(void) { u16* usedHeldItem; - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank]; *usedHeldItem = gBattleMons[gActiveBank].item; @@ -6421,19 +6462,14 @@ void atk6A_removeitem(void) gBattlescriptCurrInstr += 2; } -void atk6B_atknameinbuff1(void) +static void atk6B_atknameinbuff1(void) { PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]) gBattlescriptCurrInstr++; } -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG2_Y; - -void atk6C_draw_lvlupbox(void) +static void atk6C_draw_lvlupbox(void) { if (gBattleScripting.atk6C_state == 0) { @@ -6525,7 +6561,7 @@ void atk6C_draw_lvlupbox(void) } } -void sub_804F100(void) +static void sub_804F100(void) { struct StatsArray currentStats; @@ -6533,7 +6569,7 @@ void sub_804F100(void) sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, ¤tStats, 0xE, 0xD, 0xF); } -void sub_804F144(void) +static void sub_804F144(void) { struct StatsArray currentStats; @@ -6541,10 +6577,7 @@ void sub_804F144(void) sub_81D3784(0xD, ¤tStats, 0xE, 0xD, 0xF); } -extern const u16 gUnknown_0831C2C8[]; -extern const u8 gUnknown_0831C2E8[]; - -void sub_804F17C(void) +static void sub_804F17C(void) { gBattle_BG2_Y = 0; gBattle_BG2_X = 0x1A0; @@ -6557,7 +6590,7 @@ void sub_804F17C(void) PutMonIconOnLvlUpBox(); } -bool8 sub_804F1CC(void) +static bool8 sub_804F1CC(void) { if (IsDma3ManagerBusyWithBgCopy()) return TRUE; @@ -6575,7 +6608,7 @@ bool8 sub_804F1CC(void) return (gBattle_BG2_X != 0x200); } -void PutLevelAndGenderOnLvlUpBox(void) +static void PutLevelAndGenderOnLvlUpBox(void) { u16 monLevel; u8 monGender; @@ -6638,7 +6671,7 @@ void PutLevelAndGenderOnLvlUpBox(void) CopyWindowToVram(14, 2); } -bool8 sub_804F344(void) +static bool8 sub_804F344(void) { if (gBattle_BG2_X == 0x1A0) return FALSE; @@ -6656,7 +6689,7 @@ bool8 sub_804F344(void) #define sDestroy data0 #define sSavedLvlUpBoxXPosition data1 -void PutMonIconOnLvlUpBox(void) +static void PutMonIconOnLvlUpBox(void) { u8 spriteId; const u16* iconPal; @@ -6702,7 +6735,7 @@ void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite) #undef sDestroy #undef sSavedLvlUpBoxXPosition -bool32 IsMonGettingExpSentOut(void) +static bool32 IsMonGettingExpSentOut(void) { if (gBattlePartyID[0] == gBattleStruct->expGetterId) return TRUE; @@ -6712,30 +6745,30 @@ bool32 IsMonGettingExpSentOut(void) return FALSE; } -void atk6D_reset_sentpokes_value(void) +static void atk6D_reset_sentpokes_value(void) { ResetSentPokesToOpponentValue(); gBattlescriptCurrInstr++; } -void atk6E_set_atk_to_player0(void) +static void atk6E_set_atk_to_player0(void) { gBankAttacker = GetBankByIdentity(0); gBattlescriptCurrInstr++; } -void atk6F_set_visible(void) +static void atk6F_set_visible(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitSpriteInvisibility(0, FALSE); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; } -void atk70_record_last_used_ability(void) +static void atk70_record_last_used_ability(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); RecordAbilityBattle(gActiveBank, gLastUsedAbility); gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for bank argument. } @@ -6745,13 +6778,13 @@ void BufferMoveToLearnIntoBattleTextBuff2(void) PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn); } -void atk71_buffer_move_to_learn(void) +static void atk71_buffer_move_to_learn(void) { BufferMoveToLearnIntoBattleTextBuff2(); gBattlescriptCurrInstr++; } -void atk72_jump_if_can_run_frombattle(void) +static void atk72_jump_if_can_run_frombattle(void) { if (CanRunFromBattle(gBank1)) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -6759,14 +6792,14 @@ void atk72_jump_if_can_run_frombattle(void) gBattlescriptCurrInstr += 5; } -void atk73_hp_thresholds(void) +static void atk73_hp_thresholds(void) { u8 opposingBank; s32 result; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); opposingBank = gActiveBank ^ BIT_SIDE; result = gBattleMons[opposingBank].hp * 100 / gBattleMons[opposingBank].maxHP; @@ -6786,7 +6819,7 @@ void atk73_hp_thresholds(void) gBattlescriptCurrInstr += 2; } -void atk74_hp_thresholds2(void) +static void atk74_hp_thresholds2(void) { u8 opposingBank; s32 result; @@ -6794,7 +6827,7 @@ void atk74_hp_thresholds2(void) if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); opposingBank = gActiveBank ^ BIT_SIDE; hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBankSide(opposingBank)); result = (hpSwitchout - gBattleMons[opposingBank].hp) * 100 / hpSwitchout; @@ -6812,7 +6845,7 @@ void atk74_hp_thresholds2(void) gBattlescriptCurrInstr += 2; } -void atk75_item_effect_on_opponent(void) +static void atk75_item_effect_on_opponent(void) { gBankInMenu = gBankAttacker; ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); @@ -6820,10 +6853,7 @@ void atk75_item_effect_on_opponent(void) gBattlescriptCurrInstr += 1; } -extern const u8 gUnknown_0831C4F8[]; -extern const u8* const gRefereeStringsTable[]; - -void atk76_various(void) +static void atk76_various(void) { u8 side; s32 i; @@ -7002,7 +7032,7 @@ void atk76_various(void) gBattlescriptCurrInstr += 3; } -void atk77_set_protect_like(void) // protect and endure +static void atk77_set_protect_like(void) // protect and endure { bool8 notLastTurn = TRUE; u16 lastMove = gUnknown_02024260[gBankAttacker]; @@ -7037,7 +7067,7 @@ void atk77_set_protect_like(void) // protect and endure gBattlescriptCurrInstr++; } -void atk78_faintifabilitynotdamp(void) +static void atk78_faintifabilitynotdamp(void) { if (gBattleExecBuffer) return; @@ -7072,7 +7102,7 @@ void atk78_faintifabilitynotdamp(void) } } -void atk79_setatkhptozero(void) +static void atk79_setatkhptozero(void) { if (gBattleExecBuffer) return; @@ -7085,7 +7115,7 @@ void atk79_setatkhptozero(void) gBattlescriptCurrInstr++; } -void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all targets. +static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all targets. { const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -7108,11 +7138,11 @@ void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all gBattlescriptCurrInstr += 5; } -void atk7B_healhalfHP_if_possible(void) +static void atk7B_healhalfHP_if_possible(void) { const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); - if (BSScriptRead8(gBattlescriptCurrInstr + 5) == BS_GET_ATTACKER) + if (gBattlescriptCurrInstr[5] == BS_GET_ATTACKER) gBankTarget = gBankAttacker; gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; @@ -7126,7 +7156,7 @@ void atk7B_healhalfHP_if_possible(void) gBattlescriptCurrInstr += 6; } -void atk7C_trymirrormove(void) +static void atk7C_trymirrormove(void) { s32 validMovesCount; s32 i; @@ -7176,7 +7206,7 @@ void atk7C_trymirrormove(void) } } -void atk7D_set_rain(void) +static void atk7D_set_rain(void) { if (gBattleWeather & WEATHER_RAIN_ANY) { @@ -7192,7 +7222,7 @@ void atk7D_set_rain(void) gBattlescriptCurrInstr++; } -void atk7E_setreflect(void) +static void atk7E_setreflect(void) { if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_REFLECT) { @@ -7213,7 +7243,7 @@ void atk7E_setreflect(void) gBattlescriptCurrInstr++; } -void atk7F_setseeded(void) +static void atk7F_setseeded(void) { if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED) { @@ -7235,9 +7265,9 @@ void atk7F_setseeded(void) gBattlescriptCurrInstr++; } -void atk80_manipulatedamage(void) +static void atk80_manipulatedamage(void) { - switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + switch (gBattlescriptCurrInstr[1]) { case ATK80_DMG_CHANGE_SIGN: gBattleMoveDamage *= -1; @@ -7257,7 +7287,7 @@ void atk80_manipulatedamage(void) gBattlescriptCurrInstr += 2; } -void atk81_setrest(void) +static void atk81_setrest(void) { const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); gActiveBank = gBankTarget = gBankAttacker; @@ -7281,7 +7311,7 @@ void atk81_setrest(void) } } -void atk82_jumpifnotfirstturn(void) +static void atk82_jumpifnotfirstturn(void) { const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -7291,7 +7321,7 @@ void atk82_jumpifnotfirstturn(void) gBattlescriptCurrInstr = failJump; } -void atk83_nop(void) +static void atk83_nop(void) { gBattlescriptCurrInstr++; } @@ -7323,7 +7353,7 @@ bool8 UproarWakeUpCheck(u8 bank) return TRUE; } -void atk84_jump_if_cant_sleep(void) +static void atk84_jump_if_cant_sleep(void) { const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -7345,7 +7375,7 @@ void atk84_jump_if_cant_sleep(void) } } -void atk85_stockpile(void) +static void atk85_stockpile(void) { if (gDisableStructs[gBankAttacker].stockpileCounter == 3) { @@ -7363,7 +7393,7 @@ void atk85_stockpile(void) gBattlescriptCurrInstr++; } -void atk86_stockpiletobasedamage(void) +static void atk86_stockpiletobasedamage(void) { const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); if (gDisableStructs[gBankAttacker].stockpileCounter == 0) @@ -7389,7 +7419,7 @@ void atk86_stockpiletobasedamage(void) } } -void atk87_stockpiletohpheal(void) +static void atk87_stockpiletohpheal(void) { const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -7420,7 +7450,7 @@ void atk87_stockpiletohpheal(void) } } -void atk88_negativedamage(void) +static void atk88_negativedamage(void) { gBattleMoveDamage = -(gHpDealt / 2); if (gBattleMoveDamage == 0) @@ -7429,7 +7459,7 @@ void atk88_negativedamage(void) gBattlescriptCurrInstr++; } -u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) { bool8 certain = 0; bool8 notProtectAffected = FALSE; @@ -7599,14 +7629,14 @@ u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) return STAT_CHANGE_WORKED; } -void atk89_statbuffchange(void) +static void atk89_statbuffchange(void) { const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); - if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), BSScriptRead8(gBattlescriptCurrInstr + 1), jumpPtr) == STAT_CHANGE_WORKED) + if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), gBattlescriptCurrInstr[1], jumpPtr) == STAT_CHANGE_WORKED) gBattlescriptCurrInstr += 6; } -void atk8A_normalisebuffs(void) // haze +static void atk8A_normalisebuffs(void) // haze { s32 i, j; @@ -7619,7 +7649,7 @@ void atk8A_normalisebuffs(void) // haze gBattlescriptCurrInstr++; } -void atk8B_setbide(void) +static void atk8B_setbide(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gBankAttacker] = gCurrentMove; @@ -7629,7 +7659,7 @@ void atk8B_setbide(void) gBattlescriptCurrInstr++; } -void atk8C_confuseifrepeatingattackends(void) +static void atk8C_confuseifrepeatingattackends(void) { if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE)) gBattleCommunication[MOVE_EFFECT_BYTE] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER); @@ -7637,11 +7667,11 @@ void atk8C_confuseifrepeatingattackends(void) gBattlescriptCurrInstr++; } -void atk8D_setmultihit_counter(void) +static void atk8D_setmultihit_counter(void) { - if (BSScriptRead8(gBattlescriptCurrInstr + 1)) + if (gBattlescriptCurrInstr[1]) { - gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + gMultiHitCounter = gBattlescriptCurrInstr[1]; } else { @@ -7655,14 +7685,14 @@ void atk8D_setmultihit_counter(void) gBattlescriptCurrInstr += 2; } -void atk8E_init_multihit_string(void) +static void atk8E_init_multihit_string(void) { PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) gBattlescriptCurrInstr++; } -bool8 sub_8051064(void) +static bool8 sub_8051064(void) { if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) { @@ -7683,7 +7713,7 @@ bool8 sub_8051064(void) return TRUE; } -void atk8F_forcerandomswitch(void) +static void atk8F_forcerandomswitch(void) { s32 i; s32 bank1PartyId = 0; @@ -7844,7 +7874,7 @@ void atk8F_forcerandomswitch(void) } } -void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type +static void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type { u8 validMoves = 0; u8 moveChecked; @@ -7908,7 +7938,7 @@ void atk90_conversion_type_change(void) // randomly changes user's type to one o } } -void atk91_givepaydaymoney(void) +static void atk91_givepaydaymoney(void) { if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gPaydayMoney != 0) { @@ -7926,7 +7956,7 @@ void atk91_givepaydaymoney(void) } } -void atk92_setlightscreen(void) +static void atk92_setlightscreen(void) { if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_LIGHTSCREEN) { @@ -7948,7 +7978,7 @@ void atk92_setlightscreen(void) gBattlescriptCurrInstr++; } -void atk93_ko_move(void) +static void atk93_ko_move(void) { u8 holdEffect, param; @@ -8034,7 +8064,7 @@ void atk93_ko_move(void) } } -void atk94_damagetohalftargethp(void) // super fang +static void atk94_damagetohalftargethp(void) // super fang { gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2; if (gBattleMoveDamage == 0) @@ -8043,7 +8073,7 @@ void atk94_damagetohalftargethp(void) // super fang gBattlescriptCurrInstr++; } -void atk95_setsandstorm(void) +static void atk95_setsandstorm(void) { if (gBattleWeather & WEATHER_SANDSTORM_ANY) { @@ -8059,7 +8089,7 @@ void atk95_setsandstorm(void) gBattlescriptCurrInstr++; } -void atk96_weatherdamage(void) +static void atk96_weatherdamage(void) { if (WEATHER_HAS_EFFECT) { @@ -8112,7 +8142,7 @@ void atk96_weatherdamage(void) gBattlescriptCurrInstr++; } -void atk97_try_infatuation(void) +static void atk97_try_infatuation(void) { struct Pokemon *monAttacker, *monTarget; u16 speciesAttacker, speciesTarget; @@ -8157,14 +8187,14 @@ void atk97_try_infatuation(void) } } -void atk98_status_icon_update(void) +static void atk98_status_icon_update(void) { if (gBattleExecBuffer) return; - if (BSScriptRead8(gBattlescriptCurrInstr + 1) != BS_ATTACKER_WITH_PARTNER) + if (gBattlescriptCurrInstr[1] != BS_ATTACKER_WITH_PARTNER) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; @@ -8190,7 +8220,7 @@ void atk98_status_icon_update(void) } } -void atk99_setmist(void) +static void atk99_setmist(void) { if (gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer) { @@ -8207,7 +8237,7 @@ void atk99_setmist(void) gBattlescriptCurrInstr++; } -void atk9A_set_focusenergy(void) +static void atk9A_set_focusenergy(void) { if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) { @@ -8222,7 +8252,7 @@ void atk9A_set_focusenergy(void) gBattlescriptCurrInstr++; } -void atk9B_transformdataexecution(void) +static void atk9B_transformdataexecution(void) { gLastUsedMove = 0xFFFF; gBattlescriptCurrInstr++; @@ -8266,7 +8296,7 @@ void atk9B_transformdataexecution(void) } } -void atk9C_set_substitute(void) +static void atk9C_set_substitute(void) { u32 hp = gBattleMons[gBankAttacker].maxHP / 4; if (gBattleMons[gBankAttacker].maxHP / 4 == 0) @@ -8293,11 +8323,6 @@ void atk9C_set_substitute(void) gBattlescriptCurrInstr++; } -extern const u16 gMovesForbiddenToCopy[]; -#define MIMIC_FORBIDDEN_END 0xFFFE -#define METRONOME_FORBIDDEN_END 0xFFFF -#define ASSIST_FORBIDDEN_END 0xFFFF - static bool8 IsMoveUncopyableByMimic(u16 move) { s32 i; @@ -8307,7 +8332,7 @@ static bool8 IsMoveUncopyableByMimic(u16 move) return (gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END); } -void atk9D_mimicattackcopy(void) +static void atk9D_mimicattackcopy(void) { gLastUsedMove = 0xFFFF; @@ -8350,7 +8375,7 @@ void atk9D_mimicattackcopy(void) } #ifdef NONMATCHING -void atk9E_metronome(void) +static void atk9E_metronome(void) { while (1) { @@ -8382,7 +8407,7 @@ void atk9E_metronome(void) #else __attribute__((naked)) -void atk9E_metronome(void) +static void atk9E_metronome(void) { asm( "\n\ @@ -8459,13 +8484,13 @@ _0805251C:\n\ #endif // NONMATCHING -void atk9F_dmgtolevel(void) +static void atk9F_dmgtolevel(void) { gBattleMoveDamage = gBattleMons[gBankAttacker].level; gBattlescriptCurrInstr++; } -void atkA0_psywavedamageeffect(void) +static void atkA0_psywavedamageeffect(void) { s32 randDamage; @@ -8476,7 +8501,7 @@ void atkA0_psywavedamageeffect(void) gBattlescriptCurrInstr++; } -void atkA1_counterdamagecalculator(void) +static void atkA1_counterdamagecalculator(void) { u8 sideAttacker = GetBankSide(gBankAttacker); u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].physicalBank); @@ -8501,7 +8526,7 @@ void atkA1_counterdamagecalculator(void) } } -void atkA2_mirrorcoatdamagecalculator(void) // a copy of atkA1 with the physical -> special field changes +static void atkA2_mirrorcoatdamagecalculator(void) // a copy of atkA1 with the physical -> special field changes { u8 sideAttacker = GetBankSide(gBankAttacker); u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].specialBank); @@ -8524,7 +8549,7 @@ void atkA2_mirrorcoatdamagecalculator(void) // a copy of atkA1 with the physical } } -void atkA3_disablelastusedattack(void) +static void atkA3_disablelastusedattack(void) { s32 i; @@ -8549,7 +8574,7 @@ void atkA3_disablelastusedattack(void) } } -void atkA4_setencore(void) +static void atkA4_setencore(void) { s32 i; @@ -8581,7 +8606,7 @@ void atkA4_setencore(void) } } -void atkA5_painsplitdmgcalc(void) +static void atkA5_painsplitdmgcalc(void) { if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)) { @@ -8606,7 +8631,7 @@ void atkA5_painsplitdmgcalc(void) } #ifdef NONMATCHING -void atkA6_settypetorandomresistance(void) // conversion 2 +static void atkA6_settypetorandomresistance(void) // conversion 2 { if (gUnknown_02024250[gBankAttacker] == 0 || gUnknown_02024250[gBankAttacker] == 0xFFFF) @@ -8673,7 +8698,7 @@ void atkA6_settypetorandomresistance(void) // conversion 2 #else __attribute__((naked)) -void atkA6_settypetorandomresistance(void) // conversion 2 +static void atkA6_settypetorandomresistance(void) // conversion 2 { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -8912,7 +8937,7 @@ _08052D08:\n\ } #endif // NONMATCHING -void atkA7_setalwayshitflag(void) +static void atkA7_setalwayshitflag(void) { gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS); gStatuses3[gBankTarget] |= 0x10; @@ -8920,7 +8945,7 @@ void atkA7_setalwayshitflag(void) gBattlescriptCurrInstr++; } -void atkA8_copymovepermanently(void) // sketch +static void atkA8_copymovepermanently(void) // sketch { gLastUsedMove = 0xFFFF; @@ -8973,7 +8998,7 @@ void atkA8_copymovepermanently(void) // sketch } } -bool8 IsTwoTurnsMove(u16 move) +static bool8 IsTwoTurnsMove(u16 move) { if (gBattleMoves[move].effect == EFFECT_SKULL_BASH || gBattleMoves[move].effect == EFFECT_RAZOR_WIND @@ -8995,7 +9020,7 @@ static bool8 IsInvalidForSleepTalkOrAssist(u16 move) return FALSE; } -u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 +static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 { // first argument is unused if (gBattleMoves[move].effect == EFFECT_SOLARBEAM @@ -9015,7 +9040,7 @@ u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn return 2; } -void atkA9_sleeptalk_choose_move(void) +static void atkA9_sleeptalk_choose_move(void) { s32 i; u8 unusableMovesBits = 0; @@ -9054,13 +9079,13 @@ void atkA9_sleeptalk_choose_move(void) } } -void atkAA_set_destinybond(void) +static void atkAA_set_destinybond(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND; gBattlescriptCurrInstr++; } -void DestinyBondFlagUpdate(void) +static void DestinyBondFlagUpdate(void) { u8 sideAttacker = GetBankSide(gBankAttacker); u8 sideTarget = GetBankSide(gBankTarget); @@ -9072,15 +9097,13 @@ void DestinyBondFlagUpdate(void) } } -void atkAB_DestinyBondFlagUpdate(void) +static void atkAB_DestinyBondFlagUpdate(void) { DestinyBondFlagUpdate(); gBattlescriptCurrInstr++; } -extern const u8 sFlailHpScaleToPowerTable[12]; - -void atkAC_remaininghptopower(void) +static void atkAC_remaininghptopower(void) { s32 i; s32 hpFraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48); @@ -9095,7 +9118,7 @@ void atkAC_remaininghptopower(void) gBattlescriptCurrInstr++; } -void atkAD_spite_ppreduce(void) +static void atkAD_spite_ppreduce(void) { if (gLastUsedMovesByBanks[gBankTarget] != 0 && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF) @@ -9146,7 +9169,7 @@ void atkAD_spite_ppreduce(void) } } -void atkAE_heal_party_status(void) +static void atkAE_heal_party_status(void) { u32 zero = 0; u8 toHeal = 0; @@ -9242,7 +9265,7 @@ void atkAE_heal_party_status(void) gBattlescriptCurrInstr++; } -void atkAF_cursetarget(void) +static void atkAF_cursetarget(void) { if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED) { @@ -9259,7 +9282,7 @@ void atkAF_cursetarget(void) } } -void atkB0_set_spikes(void) +static void atkB0_set_spikes(void) { u8 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE; @@ -9276,13 +9299,13 @@ void atkB0_set_spikes(void) } } -void atkB1_set_foresight(void) +static void atkB1_set_foresight(void) { gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT; gBattlescriptCurrInstr++; } -void atkB2_setperishsong(void) +static void atkB2_setperishsong(void) { s32 i; s32 notAffectedCount = 0; @@ -9310,7 +9333,7 @@ void atkB2_setperishsong(void) gBattlescriptCurrInstr += 5; } -void atkB3_rolloutdamagecalculation(void) +static void atkB3_rolloutdamagecalculation(void) { if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { @@ -9345,7 +9368,7 @@ void atkB3_rolloutdamagecalculation(void) } } -void atkB4_jumpifconfusedandstatmaxed(void) +static void atkB4_jumpifconfusedandstatmaxed(void) { if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION && gBattleMons[gBankTarget].statStages[gBattlescriptCurrInstr[1]] == 0xC) @@ -9354,7 +9377,7 @@ void atkB4_jumpifconfusedandstatmaxed(void) gBattlescriptCurrInstr += 6; } -void atkB5_furycuttercalc(void) +static void atkB5_furycuttercalc(void) { if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { @@ -9377,7 +9400,7 @@ void atkB5_furycuttercalc(void) } } -void atkB6_happinesstodamagecalculation(void) +static void atkB6_happinesstodamagecalculation(void) { if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25; @@ -9387,11 +9410,7 @@ void atkB6_happinesstodamagecalculation(void) gBattlescriptCurrInstr++; } -extern const u8 BattleScript_PresentDamageTarget[]; -extern const u8 BattleScript_AlreadyAtFullHp[]; -extern const u8 BattleScript_PresentHealTarget[]; - -void atkB7_presentdamagecalculation(void) +static void atkB7_presentdamagecalculation(void) { s32 rand = Random() & 0xFF; @@ -9419,7 +9438,7 @@ void atkB7_presentdamagecalculation(void) } } -void atkB8_set_safeguard(void) +static void atkB8_set_safeguard(void) { if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD) { @@ -9437,7 +9456,7 @@ void atkB8_set_safeguard(void) gBattlescriptCurrInstr++; } -void atkB9_magnitudedamagecalculation(void) +static void atkB9_magnitudedamagecalculation(void) { s32 magnitude = Random() % 100; @@ -9491,7 +9510,7 @@ void atkB9_magnitudedamagecalculation(void) gBattlescriptCurrInstr++; } -void atkBA_jumpifnopursuitswitchdmg(void) +static void atkBA_jumpifnopursuitswitchdmg(void) { if (gMultiHitCounter == 1) { @@ -9535,7 +9554,7 @@ void atkBA_jumpifnopursuitswitchdmg(void) } } -void atkBB_setsunny(void) +static void atkBB_setsunny(void) { if (gBattleWeather & WEATHER_SUN_ANY) { @@ -9552,7 +9571,7 @@ void atkBB_setsunny(void) gBattlescriptCurrInstr++; } -void atkBC_maxattackhalvehp(void) // belly drum +static void atkBC_maxattackhalvehp(void) // belly drum { u32 halfHp = gBattleMons[gBankAttacker].maxHP / 2; @@ -9575,7 +9594,7 @@ void atkBC_maxattackhalvehp(void) // belly drum } } -void atkBD_copyfoestats(void) // psych up +static void atkBD_copyfoestats(void) // psych up { s32 i; @@ -9587,11 +9606,7 @@ void atkBD_copyfoestats(void) // psych up gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter. } -extern const u8 BattleScript_WrapFree[]; -extern const u8 BattleScript_LeechSeedFree[]; -extern const u8 BattleScript_SpikesFree[]; - -void atkBE_rapidspinfree(void) +static void atkBE_rapidspinfree(void) { if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED) { @@ -9628,13 +9643,13 @@ void atkBE_rapidspinfree(void) } } -void atkBF_set_defense_curl(void) +static void atkBF_set_defense_curl(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL; gBattlescriptCurrInstr++; } -void atkC0_recoverbasedonsunlight(void) +static void atkC0_recoverbasedonsunlight(void) { gBankTarget = gBankAttacker; @@ -9660,7 +9675,7 @@ void atkC0_recoverbasedonsunlight(void) } #ifdef NONMATCHING -void atkC1_hidden_power(void) +static void atkC1_hidden_power(void) { s32 powerBits; s32 typeBits; @@ -9691,7 +9706,7 @@ void atkC1_hidden_power(void) #else __attribute__((naked)) -void atkC1_hidden_power(void) +static void atkC1_hidden_power(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -9834,7 +9849,7 @@ _080544F0:\n\ } #endif // NONMATCHING -void atkC2_selectnexttarget(void) +static void atkC2_selectnexttarget(void) { for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) { @@ -9846,7 +9861,7 @@ void atkC2_selectnexttarget(void) gBattlescriptCurrInstr++; } -void atkC3_setfutureattack(void) +static void atkC3_setfutureattack(void) { if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0) { @@ -9874,7 +9889,7 @@ void atkC3_setfutureattack(void) } } -void atkC4_beat_up(void) +static void atkC4_beat_up(void) { struct Pokemon* party; @@ -9921,7 +9936,7 @@ void atkC4_beat_up(void) } } -void atkC5_setsemiinvulnerablebit(void) +static void atkC5_setsemiinvulnerablebit(void) { switch (gCurrentMove) { @@ -9940,7 +9955,7 @@ void atkC5_setsemiinvulnerablebit(void) gBattlescriptCurrInstr++; } -void atkC6_clearsemiinvulnerablebit(void) +static void atkC6_clearsemiinvulnerablebit(void) { switch (gCurrentMove) { @@ -9959,7 +9974,7 @@ void atkC6_clearsemiinvulnerablebit(void) gBattlescriptCurrInstr++; } -void atkC7_setminimize(void) +static void atkC7_setminimize(void) { if (gHitMarker & HITMARKER_OBEYS) gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED; @@ -9967,7 +9982,7 @@ void atkC7_setminimize(void) gBattlescriptCurrInstr++; } -void atkC8_sethail(void) +static void atkC8_sethail(void) { if (gBattleWeather & WEATHER_HAIL_ANY) { @@ -9984,7 +9999,7 @@ void atkC8_sethail(void) gBattlescriptCurrInstr++; } -void atkC9_jumpifattackandspecialattackcannotfall(void) // memento +static void atkC9_jumpifattackandspecialattackcannotfall(void) // memento { if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0 && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0 @@ -10002,14 +10017,14 @@ void atkC9_jumpifattackandspecialattackcannotfall(void) // memento } } -void atkCA_setforcedtarget(void) // follow me +static void atkCA_setforcedtarget(void) // follow me { gSideTimers[GetBankSide(gBankAttacker)].followmeTimer = 1; gSideTimers[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker; gBattlescriptCurrInstr++; } -void atkCB_setcharge(void) +static void atkCB_setcharge(void) { gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP; gDisableStructs[gBankAttacker].chargeTimer1 = 2; @@ -10017,7 +10032,7 @@ void atkCB_setcharge(void) gBattlescriptCurrInstr++; } -void atkCC_callterrainattack(void) // nature power +static void atkCC_callterrainattack(void) // nature power { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = sNaturePowerMoves[gBattleTerrain]; @@ -10026,7 +10041,7 @@ void atkCC_callterrainattack(void) // nature power gBattlescriptCurrInstr++; } -void atkCD_cureifburnedparalysedorpoisoned(void) // refresh +static void atkCD_cureifburnedparalysedorpoisoned(void) // refresh { if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) { @@ -10042,7 +10057,7 @@ void atkCD_cureifburnedparalysedorpoisoned(void) // refresh } } -void atkCE_settorment(void) +static void atkCE_settorment(void) { if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT) { @@ -10055,7 +10070,7 @@ void atkCE_settorment(void) } } -void atkCF_jumpifnodamage(void) +static void atkCF_jumpifnodamage(void) { if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg) gBattlescriptCurrInstr += 5; @@ -10063,7 +10078,7 @@ void atkCF_jumpifnodamage(void) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } -void atkD0_settaunt(void) +static void atkD0_settaunt(void) { if (gDisableStructs[gBankTarget].tauntTimer1 == 0) { @@ -10077,7 +10092,7 @@ void atkD0_settaunt(void) } } -void atkD1_set_helpinghand(void) +static void atkD1_set_helpinghand(void) { gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); @@ -10095,7 +10110,7 @@ void atkD1_set_helpinghand(void) } } -void atkD2_swap_items(void) // trick +static void atkD2_swap_items(void) // trick { // opponent can't swap items with player in regular battles if (gBattleTypeFlags & BATTLE_TYPE_x4000000 @@ -10182,7 +10197,7 @@ void atkD2_swap_items(void) // trick } } -void atkD3_copy_ability(void) // role play +static void atkD3_copy_ability(void) // role play { if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD) @@ -10197,9 +10212,9 @@ void atkD3_copy_ability(void) // role play } } -void atkD4_wish_effect(void) +static void atkD4_wish_effect(void) { - switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + switch (gBattlescriptCurrInstr[1]) { case 0: // use wish if (gWishFutureKnock.wishCounter[gBankAttacker] == 0) @@ -10230,7 +10245,7 @@ void atkD4_wish_effect(void) } } -void atkD5_setroots(void) // ingrain +static void atkD5_setroots(void) // ingrain { if (gStatuses3[gBankAttacker] & STATUS3_ROOTED) { @@ -10243,7 +10258,7 @@ void atkD5_setroots(void) // ingrain } } -void atkD6_doubledamagedealtifdamaged(void) +static void atkD6_doubledamagedealtifdamaged(void) { if ((gProtectStructs[gBankAttacker].physicalDmg && gProtectStructs[gBankAttacker].physicalBank == gBankTarget) @@ -10256,7 +10271,7 @@ void atkD6_doubledamagedealtifdamaged(void) gBattlescriptCurrInstr++; } -void atkD7_setyawn(void) +static void atkD7_setyawn(void) { if (gStatuses3[gBankTarget] & STATUS3_YAWN || gBattleMons[gBankTarget].status1 & STATUS_ANY) @@ -10270,7 +10285,7 @@ void atkD7_setyawn(void) } } -void atkD8_setdamagetohealthdifference(void) +static void atkD8_setdamagetohealthdifference(void) { if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp) { @@ -10283,7 +10298,7 @@ void atkD8_setdamagetohealthdifference(void) } } -void atkD9_scaledamagebyhealthratio(void) +static void atkD9_scaledamagebyhealthratio(void) { if (gDynamicBasePower == 0) { @@ -10295,7 +10310,7 @@ void atkD9_scaledamagebyhealthratio(void) gBattlescriptCurrInstr++; } -void atkDA_abilityswap(void) // skill swap +static void atkDA_abilityswap(void) // skill swap { if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0) @@ -10315,7 +10330,7 @@ void atkDA_abilityswap(void) // skill swap } } -void atkDB_imprisoneffect(void) +static void atkDB_imprisoneffect(void) { if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS)) { @@ -10357,7 +10372,7 @@ void atkDB_imprisoneffect(void) } } -void atkDC_setgrudge(void) +static void atkDC_setgrudge(void) { if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE) { @@ -10370,7 +10385,7 @@ void atkDC_setgrudge(void) } } -void atkDD_weightdamagecalculation(void) +static void atkDD_weightdamagecalculation(void) { s32 i; for (i = 0; sWeightToDamageTable[i] != 0xFFFF; i += 2) @@ -10387,7 +10402,7 @@ void atkDD_weightdamagecalculation(void) gBattlescriptCurrInstr++; } -void atkDE_asistattackselect(void) +static void atkDE_asistattackselect(void) { s32 chooseableMovesNo = 0; struct Pokemon* party; @@ -10440,7 +10455,7 @@ void atkDE_asistattackselect(void) } } -void atkDF_setmagiccoat(void) +static void atkDF_setmagiccoat(void) { gBankTarget = gBankAttacker; gSpecialStatuses[gBankAttacker].flag20 = 1; @@ -10455,7 +10470,7 @@ void atkDF_setmagiccoat(void) } } -void atkE0_setstealstatchange(void) // snatch +static void atkE0_setstealstatchange(void) // snatch { gSpecialStatuses[gBankAttacker].flag20 = 1; if (gCurrentMoveTurn == gNoOfAllBanks - 1) // moves last turn @@ -10469,7 +10484,7 @@ void atkE0_setstealstatchange(void) // snatch } } -void atkE1_intimidate_string_loader(void) +static void atkE1_intimidate_string_loader(void) { u8 side; @@ -10492,9 +10507,9 @@ void atkE1_intimidate_string_loader(void) gBattlescriptCurrInstr += 5; } -void atkE2_switchout_abilities(void) +static void atkE2_switchout_abilities(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); switch (gBattleMons[gActiveBank].ability) { @@ -10508,9 +10523,9 @@ void atkE2_switchout_abilities(void) gBattlescriptCurrInstr += 2; } -void atkE3_jumpifhasnohp(void) +static void atkE3_jumpifhasnohp(void) { - gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBank].hp == 0) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); @@ -10518,7 +10533,7 @@ void atkE3_jumpifhasnohp(void) gBattlescriptCurrInstr += 6; } -void atkE4_getsecretpowereffect(void) +static void atkE4_getsecretpowereffect(void) { switch (gBattleTerrain) { @@ -10553,15 +10568,7 @@ void atkE4_getsecretpowereffect(void) gBattlescriptCurrInstr++; } -extern bool8 InBattlePike(void); -extern bool8 InBattlePyramid(void); -extern u16 GetBattlePyramidPickupItemId(void); - -extern const u16 gRarePickupItems[]; -extern const u16 gPickupItems[]; -extern const u8 gPickupProbabilities[]; - -void atkE5_pickup(void) +static void atkE5_pickup(void) { if (!InBattlePike()) { @@ -10636,3 +10643,600 @@ void atkE5_pickup(void) gBattlescriptCurrInstr++; } + +static void atkE6_castform_change_animation(void) +{ + gActiveBank = gBattleScripting.bank; + + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) + *(&gBattleStruct->formToChangeInto) |= 0x80; + + EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr++; +} + +static void atkE7_castform_data_change(void) +{ + u8 form; + + gBattlescriptCurrInstr++; + form = CastformDataTypeChange(gBattleScripting.bank); + if (form) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + *(&gBattleStruct->formToChangeInto) = form - 1; + } +} + +static void atkE8_settypebasedhalvers(void) // water and mud sport +{ + bool8 worked = FALSE; + + if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT) + { + if (!(gStatuses3[gBankAttacker] & STATUS3_MUDSPORT)) + { + gStatuses3[gBankAttacker] |= STATUS3_MUDSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + worked = TRUE; + } + } + else // water sport + { + if (!(gStatuses3[gBankAttacker] & STATUS3_WATERSPORT)) + { + gStatuses3[gBankAttacker] |= STATUS3_WATERSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + worked = TRUE; + } + } + + if (worked) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkE9_setweatherballtype(void) +{ + if (WEATHER_HAS_EFFECT) + { + if (gBattleWeather & WEATHER_ANY) + gBattleScripting.dmgMultiplier = 2; + if (gBattleWeather & WEATHER_RAIN_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | 0x80; + else if (gBattleWeather & WEATHER_SANDSTORM_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | 0x80; + else if (gBattleWeather & WEATHER_SUN_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | 0x80; + else if (gBattleWeather & WEATHER_HAIL_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | 0x80; + else + *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | 0x80; + } + + gBattlescriptCurrInstr++; +} + +static void atkEA_recycleitem(void) +{ + u16 *usedHeldItem; + + gActiveBank = gBankAttacker; + usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank]; + if (*usedHeldItem != 0 && gBattleMons[gActiveBank].item == 0) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = 0; + gBattleMons[gActiveBank].item = gLastUsedItem; + + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkEB_settypetoterrain(void) +{ + if (gBattleMons[gBankAttacker].type1 != sTerrainToType[gBattleTerrain] + && gBattleMons[gBankAttacker].type2 != sTerrainToType[gBattleTerrain]) + { + gBattleMons[gBankAttacker].type1 = sTerrainToType[gBattleTerrain]; + gBattleMons[gBankAttacker].type2 = sTerrainToType[gBattleTerrain]; + + PREPARE_TYPE_BUFFER(gBattleTextBuff1, sTerrainToType[gBattleTerrain]) + + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkEC_pursuit_sth(void) +{ + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBankFlags & gBitTable[gActiveBank]) + && gActionForBanks[gActiveBank] == 0 + && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT) + { + gUnknown_0202407A[gActiveBank] = 11; + gCurrentMove = MOVE_PURSUIT; + gBattlescriptCurrInstr += 5; + gBattleScripting.animTurn = 1; + gBattleScripting.field_20 = gBankAttacker; + gBankAttacker = gActiveBank; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkED_802B4B4(void) +{ + gEffectBank = gBankAttacker; + + if (gBankAttacker == gBankTarget) + gBankAttacker = gBankTarget = gBattleScripting.bank; + else + gBankTarget = gBattleScripting.bank; + + gBattleScripting.bank = gEffectBank; + gBattlescriptCurrInstr++; +} + +static void atkEE_removelightscreenreflect(void) // brick break +{ + u8 opposingSide = GetBankSide(gBankAttacker) ^ BIT_SIDE; + + if (gSideTimers[opposingSide].reflectTimer || gSideTimers[opposingSide].lightscreenTimer) + { + gSideAffecting[opposingSide] &= ~(SIDE_STATUS_REFLECT); + gSideAffecting[opposingSide] &= ~(SIDE_STATUS_LIGHTSCREEN); + gSideTimers[opposingSide].reflectTimer = 0; + gSideTimers[opposingSide].lightscreenTimer = 0; + gBattleScripting.animTurn = 1; + gBattleScripting.animTargetsHit = 1; + } + else + { + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + } + + gBattlescriptCurrInstr++; +} + +static void atkEF_pokeball_catch_calculation(void) +{ + u8 ballMultiplier = 0; + + if (gBattleExecBuffer) + return; + + gActiveBank = gBankAttacker; + gBankTarget = gBankAttacker ^ BIT_SIDE; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + EmitBallThrow(0, BALL_TRAINER_BLOCK); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_TrainerBallBlock; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + { + EmitBallThrow(0, BALL_3_SHAKES_SUCCESS); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_WallyBallThrow; + } + else + { + u32 odds; + u8 catchRate; + + if (gLastUsedItem == ITEM_SAFARI_BALL) + catchRate = gBattleStruct->field_7C * 1275 / 100; + else + catchRate = gBaseStats[gBattleMons[gBankTarget].species].catchRate; + + if (gLastUsedItem > ITEM_SAFARI_BALL) + { + switch (gLastUsedItem) + { + case ITEM_NET_BALL: + if (gBattleMons[gBankTarget].type1 == TYPE_WATER + || gBattleMons[gBankTarget].type2 == TYPE_WATER + || gBattleMons[gBankTarget].type1 == TYPE_BUG + || gBattleMons[gBankTarget].type2 == TYPE_BUG) + ballMultiplier = 30; + else + ballMultiplier = 10; + break; + case ITEM_DIVE_BALL: + if (sav1_map_get_light_level() == 5) + ballMultiplier = 35; + else + ballMultiplier = 10; + break; + case ITEM_NEST_BALL: + if (gBattleMons[gBankTarget].level <= 39) + { + ballMultiplier = 40 - gBattleMons[gBankTarget].level; + if (ballMultiplier <= 9) + ballMultiplier = 10; + } + else + { + ballMultiplier = 10; + } + break; + case ITEM_REPEAT_BALL: + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), FLAG_GET_CAUGHT)) + ballMultiplier = 30; + else + ballMultiplier = 10; + break; + case ITEM_TIMER_BALL: + ballMultiplier = gBattleResults.battleTurnCounter + 10; + if (ballMultiplier > 40) + ballMultiplier = 40; + break; + case ITEM_LUXURY_BALL: + case ITEM_PREMIER_BALL: + ballMultiplier = 10; + break; + } + } + else + ballMultiplier = sBallCatchBonuses[gLastUsedItem - 2]; + + odds = (catchRate * ballMultiplier / 10) + * (gBattleMons[gBankTarget].maxHP * 3 - gBattleMons[gBankTarget].hp * 2) + / (3 * gBattleMons[gBankTarget].maxHP); + + if (gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + odds *= 2; + if (gBattleMons[gBankTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + odds = (odds * 15) / 10; + + if (gLastUsedItem != ITEM_SAFARI_BALL) + { + if (gLastUsedItem == ITEM_MASTER_BALL) + { + gBattleResults.unk5_1 = 1; + } + else + { + if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF) + gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++; + } + } + + if (odds > 254) // mon caught + { + EmitBallThrow(0, BALL_3_SHAKES_SUCCESS); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem); + + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else // mon may be caught, calculate shakes + { + u8 shakes; + + odds = Sqrt(Sqrt(16711680 / odds)); + odds = 1048560 / odds; + + for (shakes = 0; shakes < 4 && Random() < odds; shakes++); + + if (gLastUsedItem == ITEM_MASTER_BALL) + shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check? + + EmitBallThrow(0, shakes); + MarkBufferBankForExecution(gActiveBank); + + if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above + { + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem); + + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else // not caught + { + gBattleCommunication[MULTISTRING_CHOOSER] = shakes; + gBattlescriptCurrInstr = BattleScript_ShakeBallThrow; + } + } + } +} + +static void atkF0_give_caught_mon(void) +{ + if (GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY) + { + if (!sub_813B21C()) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN))); + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2); + } + else + { + StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN))); + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2); + StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id())); + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + + if (FlagGet(SYS_PC_LANETTE)) + gBattleCommunication[MULTISTRING_CHOOSER]++; + } + + gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_SPECIES, NULL); + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick); + gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_POKEBALL, NULL); + + gBattlescriptCurrInstr++; +} + +static void atkF1_set_caught_mon_dex_flags(void) +{ + u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL); + + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality); + gBattlescriptCurrInstr += 5; + } +} + +static void atkF2_display_dex_info(void) +{ + u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); + + switch (gBattleCommunication[0]) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleCommunication[0]++; + break; + case 1: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + gBattleCommunication[TASK_ID] = CreateDexDisplayMonDataTask(SpeciesToNationalPokedexNum(species), + gBattleMons[gBankTarget].otId, + gBattleMons[gBankTarget].personality); + gBattleCommunication[0]++; + } + break; + case 2: + if (!gPaletteFade.active + && gMain.callback2 == BattleMainCB2 + && !gTasks[gBattleCommunication[TASK_ID]].isActive) + { + SetVBlankCallback(VBlankCB_Battle); + gBattleCommunication[0]++; + } + break; + case 3: + c2_berry_program_update_menu(); + sub_8035AA4(); + gBattle_BG3_X = 0x100; + gBattleCommunication[0]++; + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + { + BeginNormalPaletteFade(0xFFFF, 0, 0x10, 0, 0); + ShowBg(0); + ShowBg(3); + gBattleCommunication[0]++; + } + break; + case 5: + if (!gPaletteFade.active) + gBattlescriptCurrInstr++; + break; + } +} + +void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags) +{ + s32 destY, destX; + u16 var = 0; + + for (destY = yStart; destY <= yEnd; destY++) + { + for (destX = xStart; destX <= xEnd; destX++) + { + if (destY == yStart) + { + if (destX == xStart) + var = 0x1022; + else if (destX == xEnd) + var = 0x1024; + else + var = 0x1023; + } + else if (destY == yEnd) + { + if (destX == xStart) + var = 0x1028; + else if (destX == xEnd) + var = 0x102A; + else + var = 0x1029; + } + else + { + if (destX == xStart) + var = 0x1025; + else if (destX == xEnd) + var = 0x1027; + else + var = 0x1026; + } + + if (flags & 1) + var = 0; + + if (flags & 0x80) + CopyToBgTilemapBufferRect_ChangePalette(1, &var, destX, destY, 1, 1, 0x11); + else + CopyToBgTilemapBufferRect_ChangePalette(0, &var, destX, destY, 1, 1, 0x11); + } + } +} + +void BattleCreateCursorAt(u8 cursorPosition) +{ + u16 src[2]; + src[0] = 1; + src[1] = 2; + + CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x19, 9 + (2 * cursorPosition), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +void BattleDestroyCursorAt(u8 cursorPosition) +{ + u16 src[2]; + src[0] = 0x1016; + src[1] = 0x1016; + + CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x19, 9 + (2 * cursorPosition), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +static void atkF3_nickname_caught_poke(void) +{ + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + sub_8056A3C(0x18, 8, 0x1D, 0xD, 0); + sub_814F9EC(gText_BattleYesNoChoice, 0xC); + gBattleCommunication[MULTIUSE_STATE]++; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateCursorAt(1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[CURSOR_POSITION] == 0) + { + gBattleCommunication[MULTIUSE_STATE]++; + BeginFastPaletteFade(3); + } + else + { + gBattleCommunication[MULTIUSE_STATE] = 4; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattleCommunication[MULTIUSE_STATE] = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + FreeAllWindowBuffers(); + + DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick, + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_SPECIES), + GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]), + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL), + BattleMainCB2); + + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 3: + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active ) + { + SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + break; + case 4: + if (CalculatePlayerPartyCount() == 6) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + break; + } +} + +static void atkF4_subattackerhpbydmg(void) +{ + gBattleMons[gBankAttacker].hp -= gBattleMoveDamage; + gBattlescriptCurrInstr++; +} + +static void atkF5_removeattackerstatus1(void) +{ + gBattleMons[gBankAttacker].status1 = 0; + gBattlescriptCurrInstr++; +} + +static void atkF6_802BF48(void) +{ + gFightStateTracker = 0xC; +} + +static void atkF7_802BF54(void) +{ + gFightStateTracker = 0xC; + gCurrentMoveTurn = gNoOfAllBanks; +} + +static void atkF8_trainer_slide_back(void) +{ + gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); + EmitTrainerSlideBack(0); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr += 2; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 227f833852..fa655f5ea5 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -223,7 +223,7 @@ gBattle_BG2_X: @ 2022E1C gBattle_BG2_Y: @ 2022E1E .space 0x2 -gUnknown_02022E20: @ 2022E20 +gBattle_BG3_X: @ 2022E20 .space 0x2 gUnknown_02022E22: @ 2022E22 From 7273b8f26277e3f9a1b562454e2e7f88e5523731 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 28 Sep 2017 16:51:24 +0200 Subject: [PATCH 042/182] battle 4 is all done --- data/battle_4.s | 30 ------------ include/battle.h | 2 + ld_script.txt | 1 - src/battle_4.c | 120 ++++++++++++++++++++++++++++------------------- 4 files changed, 74 insertions(+), 79 deletions(-) delete mode 100644 data/battle_4.s diff --git a/data/battle_4.s b/data/battle_4.s deleted file mode 100644 index 2831f212a0..0000000000 --- a/data/battle_4.s +++ /dev/null @@ -1,30 +0,0 @@ -@ the second big chunk of data - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - -gUnknown_0831C494:: @ 831C494 - .byte 0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c - .byte 0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55 - .byte 0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a - .byte 0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a - .byte 0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23 - .byte 0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e - .byte 0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f - .byte 0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e - .byte 0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e - .byte 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21 - .byte 0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f - .byte 0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f - .byte 0x38, 0x4e, 0x38, 0x4e - - .align 2 -gUnknown_0831C4F8:: @ 831C4F8 - .byte 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00 - .byte 0x01, 0x02, 0x02, 0x00, 0x03, 0x01, 0x03, 0x01 - .byte 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x02, 0x02 - .byte 0x03, 0x00, 0x00, 0x00 - diff --git a/include/battle.h b/include/battle.h index 7b164caf49..158ae46b2b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -910,6 +910,8 @@ void BufferMoveToLearnIntoBattleTextBuff2(void); void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 bank); +extern const u8 gUnknown_0831C494[]; + // battle_5 void AdjustFriendshipOnBattleFaint(u8 bank); void sub_80571DC(u8 bank, u8 arg1); diff --git a/ld_script.txt b/ld_script.txt index c668f32fff..5adacecf6b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -330,7 +330,6 @@ SECTIONS { src/rtc.o(.rodata); data/data2b.o(.rodata); src/battle_4.o(.rodata); - data/battle_4.o(.rodata); data/battle_controller_player.o(.rodata); data/data2b_2.o(.rodata); data/battle_controller_opponent.o(.rodata); diff --git a/src/battle_4.c b/src/battle_4.c index 4140256955..e82f785706 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -773,7 +773,7 @@ struct StatFractions u8 divisor; }; -const struct StatFractions gAccuracyStageRatios[] = +static const struct StatFractions sAccuracyStageRatios[] = { { 33, 100}, // -6 { 36, 100}, // -5 @@ -791,9 +791,9 @@ const struct StatFractions gAccuracyStageRatios[] = }; // The chance is 1/N for each stage. -const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2}; +static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2}; -const u32 gStatusFlagsForMoveEffects[] = +static const u32 sStatusFlagsForMoveEffects[] = { 0x00000000, STATUS_SLEEP, @@ -857,7 +857,7 @@ const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; -const u8* const gMoveEffectBS_Ptrs[] = +static const u8* const sMoveEffectBS_Ptrs[] = { BattleScript_MoveEffectSleep, // 0 BattleScript_MoveEffectSleep, // MOVE_EFFECT_SLEEP @@ -902,8 +902,8 @@ const u8* const gMoveEffectBS_Ptrs[] = static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; -const u16 gUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal"); -const u8 gUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_battlebox.4bpp.lz"); +static const u16 sUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal"); +static const u8 sUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_battlebox.4bpp.lz"); // unused static const u8 sRubyLevelUpStatBoxStats[] = @@ -914,7 +914,7 @@ static const u8 sRubyLevelUpStatBoxStats[] = #define MON_ICON_LVLUP_BOX_TAG 0xD75A -const struct OamData gUnknown_0831C3B8 = +static const struct OamData sOamData_MonIconOnLvlUpBox = { .y = 0, .affineMode = 0, @@ -931,24 +931,24 @@ const struct OamData gUnknown_0831C3B8 = .affineParam = 0, }; -const struct SpriteTemplate SpriteTemplate_MonIconOnLvlUpBox = +static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox = { .tileTag = MON_ICON_LVLUP_BOX_TAG, .paletteTag = MON_ICON_LVLUP_BOX_TAG, - .oam = &gUnknown_0831C3B8, + .oam = &sOamData_MonIconOnLvlUpBox, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_MonIconOnLvlUpBox }; -const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; +static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / 4, USHRT_MAX / 8}; #define MIMIC_FORBIDDEN_END 0xFFFE #define METRONOME_FORBIDDEN_END 0xFFFF #define ASSIST_FORBIDDEN_END 0xFFFF -static const u16 gMovesForbiddenToCopy[] = +static const u16 sMovesForbiddenToCopy[] = { MOVE_METRONOME, MOVE_STRUGGLE, @@ -1007,7 +1007,7 @@ static const u16 sWeightToDamageTable[] = 0xFFFF, 0xFFFF }; -static const u16 gPickupItems[] = +static const u16 sPickupItems[] = { ITEM_POTION, ITEM_ANTIDOTE, @@ -1029,7 +1029,7 @@ static const u16 gPickupItems[] = ITEM_MAX_ELIXIR, }; -static const u16 gRarePickupItems[] = +static const u16 sRarePickupItems[] = { ITEM_HYPER_POTION, ITEM_NUGGET, @@ -1044,7 +1044,7 @@ static const u16 gRarePickupItems[] = ITEM_TM26, }; -static const u8 gPickupProbabilities[] = +static const u8 sPickupProbabilities[] = { 30, 40, 50, 60, 70, 80, 90, 94, 98 }; @@ -1057,8 +1057,8 @@ static const u8 sTerrainToType[] = TYPE_WATER, // underwater TYPE_WATER, // water TYPE_WATER, // pond water - TYPE_ROCK , // rock - TYPE_ROCK , // cave + TYPE_ROCK, // rock + TYPE_ROCK, // cave TYPE_NORMAL, // building TYPE_NORMAL, // plain }; @@ -1068,7 +1068,31 @@ static const u8 sBallCatchBonuses[] = 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; -extern const u8 gUnknown_0831C4F8[]; +// could be a 2d array or a struct +const ALIGNED(4) u8 gUnknown_0831C494[] = +{ + 0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c, + 0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55, + 0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a, + 0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a, + 0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23, + 0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e, + 0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f, + 0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e, + 0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e, + 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21, + 0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f, + 0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f, + 0x38, 0x4e, 0x38, 0x4e +}; + +static const u8 sUnknown_0831C4F8[] = +{ + 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00, + 0x01, 0x02, 0x02, 0x00, 0x03, 0x01, 0x03, 0x01, + 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x02, 0x02, + 0x03, 0x00, 0x00, 0x00 +}; static void atk00_attackcanceler(void) { @@ -1304,8 +1328,8 @@ static void atk01_accuracycheck(void) if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER) moveAcc = 50; - calc = gAccuracyStageRatios[buff].dividend * moveAcc; - calc /= gAccuracyStageRatios[buff].divisor; + calc = sAccuracyStageRatios[buff].dividend * moveAcc; + calc /= sAccuracyStageRatios[buff].divisor; if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES) calc = (calc * 130) / 100; // 1.3 compound eyes boost @@ -1435,7 +1459,7 @@ static void atk04_critcalc(void) if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR) && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT) && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) - && !(Random() % gCriticalHitChance[critChance])) + && !(Random() % sCriticalHitChance[critChance])) gCritMultiplier = 2; else gCritMultiplier = 1; @@ -2411,7 +2435,7 @@ void SetMoveEffect(bool8 primary, u8 certain) if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change { - switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { case STATUS_SLEEP: // check active uproar @@ -2630,12 +2654,12 @@ void SetMoveEffect(bool8 primary, u8 certain) { BattleScriptPush(gBattlescriptCurrInstr + 1); - if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); else - gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gActiveBank = gEffectBank; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); @@ -2674,7 +2698,7 @@ void SetMoveEffect(bool8 primary, u8 certain) } else { - if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + if (gBattleMons[gEffectBank].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { gBattlescriptCurrInstr++; } @@ -2694,7 +2718,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; } break; case MOVE_EFFECT_FLINCH: @@ -2714,7 +2738,7 @@ void SetMoveEffect(bool8 primary, u8 certain) else { if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) - gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr++; } break; @@ -2727,7 +2751,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; } else { @@ -2743,7 +2767,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gPaydayMoney = 0xFFFF; } BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case MOVE_EFFECT_TRI_ATTACK: if (gBattleMons[gEffectBank].status1) @@ -2776,7 +2800,7 @@ void SetMoveEffect(bool8 primary, u8 certain) *(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++) { @@ -2793,7 +2817,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMoveDamage = 1; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case MOVE_EFFECT_ATK_PLUS_1: case MOVE_EFFECT_DEF_PLUS_1: @@ -3001,7 +3025,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattleMoveDamage = 1; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case MOVE_EFFECT_THRASH: if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE) @@ -3108,9 +3132,9 @@ static void atk18_status_effect_clear(void) gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC) - gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + gBattleMons[gActiveBank].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); else - gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + gBattleMons[gActiveBank].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); gBattleCommunication[MOVE_EFFECT_BYTE] = 0; gBattlescriptCurrInstr += 2; @@ -6733,8 +6757,8 @@ static void sub_804F17C(void) gBattle_BG2_Y = 0; gBattle_BG2_X = 0x1A0; - LoadPalette(gUnknown_0831C2C8, 0x60, 0x20); - CopyToWindowPixelBuffer(14, gUnknown_0831C2E8, 0, 0); + LoadPalette(sUnknown_0831C2C8, 0x60, 0x20); + CopyToWindowPixelBuffer(14, sUnknown_0831C2E8, 0, 0); PutWindowTilemap(14); CopyWindowToVram(14, 3); @@ -6860,7 +6884,7 @@ static void PutMonIconOnLvlUpBox(void) LoadSpriteSheet(&iconSheet); LoadSpritePalette(&iconPalSheet); - spriteId = CreateSprite(&SpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0); + spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0); gSprites[spriteId].sDestroy = FALSE; gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X; } @@ -7078,7 +7102,7 @@ static void atk76_various(void) { gBattleStruct->field_92 |= gBitTable[gActiveBank]; gBattleCommunication[0] = 1; - gBattleCommunication[MULTISTRING_CHOOSER] = gUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)]; + gBattleCommunication[MULTISTRING_CHOOSER] = sUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)]; } break; case 9: @@ -8475,10 +8499,10 @@ static void atk9C_set_substitute(void) static bool8 IsMoveUncopyableByMimic(u16 move) { s32 i; - for (i = 0; gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END - && gMovesForbiddenToCopy[i] != move; i++); + for (i = 0; sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END + && sMovesForbiddenToCopy[i] != move; i++); - return (gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END); + return (sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END); } static void atk9D_mimicattackcopy(void) @@ -8537,7 +8561,7 @@ static void atk9E_metronome(void) for (i = 0; i < 4; i++); // ? - for (move = gMovesForbiddenToCopy; ; move++) + for (move = sMovesForbiddenToCopy; ; move++) { if (*move == gCurrentMove) break; @@ -8567,7 +8591,7 @@ static void atk9E_metronome(void) ldr r7, =gCurrentMove\n\ movs r6, 0xB1\n\ lsls r6, 1\n\ - ldr r5, =gMovesForbiddenToCopy\n\ + ldr r5, =sMovesForbiddenToCopy\n\ ldr r0, =gBattlescriptCurrInstr\n\ mov r8, r0\n\ _080524EE:\n\ @@ -10580,9 +10604,9 @@ static void atkDE_asistattackselect(void) if (IsInvalidForSleepTalkOrAssist(move)) continue; - for (; gMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != gMovesForbiddenToCopy[i]; i++); + for (; sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != sMovesForbiddenToCopy[i]; i++); - if (gMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END) + if (sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END) continue; if (move == MOVE_NONE) continue; @@ -10774,14 +10798,14 @@ static void atkE5_pickup(void) for (j = 0; j < 9; j++) { - if (gPickupProbabilities[j] > rand) + if (sPickupProbabilities[j] > rand) { - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gPickupItems[lvlDivBy10 + j]); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]); break; } else if (rand == 99 || rand == 98) { - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gRarePickupItems[lvlDivBy10 + (99 - rand)]); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]); break; } } From 6d4d58a8a7759517b327a4017e05332888662e84 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 28 Sep 2017 17:38:07 +0200 Subject: [PATCH 043/182] rename battle4 and battleai --- include/battle.h | 3 ++- include/{battle_ai.h => battle_ai_script_commands.h} | 6 +++--- ld_script.txt | 8 ++++---- src/battle_3.c | 3 +-- src/{battle_ai.c => battle_ai_script_commands.c} | 2 +- src/{battle_4.c => battle_script_commands.c} | 2 +- sym_ewram.txt | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) rename include/{battle_ai.h => battle_ai_script_commands.h} (74%) rename src/{battle_ai.c => battle_ai_script_commands.c} (99%) rename src/{battle_4.c => battle_script_commands.c} (99%) diff --git a/include/battle.h b/include/battle.h index 158ae46b2b..67d3d873d7 100644 --- a/include/battle.h +++ b/include/battle.h @@ -898,7 +898,7 @@ void sub_80458B4(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsPokeDisobedient(void); -// battle_4 +// battle_script_commands void AI_CalcDmg(u8 bankAtk, u8 bankDef); u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 species, u8 ability); @@ -910,6 +910,7 @@ void BufferMoveToLearnIntoBattleTextBuff2(void); void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 bank); +extern void (* const gBattleScriptingCommandsTable[])(void); extern const u8 gUnknown_0831C494[]; // battle_5 diff --git a/include/battle_ai.h b/include/battle_ai_script_commands.h similarity index 74% rename from include/battle_ai.h rename to include/battle_ai_script_commands.h index 2a315059bf..5fb422b419 100644 --- a/include/battle_ai.h +++ b/include/battle_ai_script_commands.h @@ -1,5 +1,5 @@ -#ifndef GUARD_BATTLE_AI_H -#define GUARD_BATTLE_AI_H +#ifndef GUARD_BATTLE_AI_SCRIPT_COMMANDS_H +#define GUARD_BATTLE_AI_SCRIPT_COMMANDS_H void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves); void BattleAI_SetupAIData(u8 defaultScoreMoves); @@ -10,4 +10,4 @@ void ClearBankAbilityHistory(u8 bank); void RecordItemEffectBattle(u8 bank, u8 itemEffect); void ClearBankItemEffectHistory(u8 bank); -#endif // GUARD_BATTLE_AI_H +#endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H diff --git a/ld_script.txt b/ld_script.txt index 5adacecf6b..5e273c049c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -59,7 +59,7 @@ SECTIONS { asm/battle_1.o(.text); asm/battle_2.o(.text); src/battle_3.o(.text); - src/battle_4.o(.text); + src/battle_script_commands.o(.text); asm/battle_5.o(.text); asm/battle_controller_player.o(.text); asm/battle_7.o(.text); @@ -177,7 +177,7 @@ SECTIONS { asm/decoration.o(.text); asm/slot_machine.o(.text); asm/contest_painting.o(.text); - src/battle_ai.o(.text); + src/battle_ai_script_commands.o(.text); asm/trader.o(.text); asm/starter_choose.o(.text); asm/wallclock.o(.text); @@ -329,7 +329,7 @@ SECTIONS { data/link.o(.rodata); src/rtc.o(.rodata); data/data2b.o(.rodata); - src/battle_4.o(.rodata); + src/battle_script_commands.o(.rodata); data/battle_controller_player.o(.rodata); data/data2b_2.o(.rodata); data/battle_controller_opponent.o(.rodata); @@ -409,7 +409,7 @@ SECTIONS { data/decoration.o(.rodata); data/slot_machine.o(.rodata); data/contest_painting.o(.rodata); - src/battle_ai.o(.rodata); + src/battle_ai_script_commands.o(.rodata); data/data4.o(.rodata); data/battle_controller_link_partner.o(.rodata); data/battle_message.o(.rodata); diff --git a/src/battle_3.c b/src/battle_3.c index e81d527d05..e42d9317d2 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -13,7 +13,7 @@ #include "text.h" #include "string_util.h" #include "battle_message.h" -#include "battle_ai.h" +#include "battle_ai_script_commands.h" #include "battle_controllers.h" #include "event_data.h" #include "calculate_base_damage.h" @@ -57,7 +57,6 @@ extern u8 gCurrMovePos; extern u8 gUnknown_020241E9; extern const struct BattleMove gBattleMoves[]; -extern void (* const gBattleScriptingCommandsTable[])(void); // scripts extern const u8 gUnknown_082DAE2A[]; diff --git a/src/battle_ai.c b/src/battle_ai_script_commands.c similarity index 99% rename from src/battle_ai.c rename to src/battle_ai_script_commands.c index 8590b0f039..dae43f13c5 100644 --- a/src/battle_ai.c +++ b/src/battle_ai_script_commands.c @@ -1,5 +1,5 @@ #include "global.h" -#include "battle_ai.h" +#include "battle_ai_script_commands.h" #include "pokemon.h" #include "battle.h" #include "species.h" diff --git a/src/battle_4.c b/src/battle_script_commands.c similarity index 99% rename from src/battle_4.c rename to src/battle_script_commands.c index e82f785706..2e6b3dbaec 100644 --- a/src/battle_4.c +++ b/src/battle_script_commands.c @@ -2,7 +2,7 @@ #include "battle.h" #include "battle_move_effects.h" #include "battle_message.h" -#include "battle_ai.h" +#include "battle_ai_script_commands.h" #include "moves.h" #include "abilities.h" #include "item.h" diff --git a/sym_ewram.txt b/sym_ewram.txt index fa655f5ea5..3a1747889e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1405,7 +1405,7 @@ gUnknown_0203AB30: @ 203AB30 gUnknown_0203AB34: @ 203AB34 .space 0x4 - .include "src/battle_ai.o" + .include "src/battle_ai_script_commands.o" .align 2 gUnknown_0203AB40: @ 203AB40 From 4dad58648fe65b7df90da45972518222853b2e98 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 28 Sep 2017 19:34:13 +0200 Subject: [PATCH 044/182] take revo suggestion --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2e6b3dbaec..e0cb3e9415 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11043,7 +11043,7 @@ static void atkEF_pokeball_catch_calculation(void) ballMultiplier = 10; break; case ITEM_NEST_BALL: - if (gBattleMons[gBankTarget].level <= 39) + if (gBattleMons[gBankTarget].level < 40) { ballMultiplier = 40 - gBattleMons[gBankTarget].level; if (ballMultiplier <= 9) From f1fe0c217d5366123c057da85b28b5c10ac9798d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 28 Sep 2017 20:52:36 +0200 Subject: [PATCH 045/182] decompile roamer --- asm/roamer.s | 502 --------------------------------------------- data/rom_8158B30.s | 153 -------------- data/rom_85CECB0.s | 154 ++++++++++++++ include/roamer.h | 8 +- ld_script.txt | 4 +- src/roamer.c | 218 ++++++++++++++++++++ sym_ewram.txt | 6 +- 7 files changed, 383 insertions(+), 662 deletions(-) delete mode 100644 asm/roamer.s create mode 100644 data/rom_85CECB0.s create mode 100644 src/roamer.c diff --git a/asm/roamer.s b/asm/roamer.s deleted file mode 100644 index f6b48f10f6..0000000000 --- a/asm/roamer.s +++ /dev/null @@ -1,502 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ClearRoamerData -ClearRoamerData: @ 8161B34 - push {r4,r5,lr} - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r4, =0x000031dc - adds r0, r4 - movs r1, 0 - movs r2, 0x1C - bl memset - ldr r0, [r5] - adds r0, r4 - ldr r1, =0x00000197 - strh r1, [r0, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ClearRoamerData - - thumb_func_start ClearRoamerLocationData -ClearRoamerLocationData: @ 8161B60 - push {r4-r6,lr} - movs r2, 0 - ldr r6, =sRoamerLocation - ldr r4, =sLocationHistory - movs r3, 0 - adds r5, r4, 0x1 -_08161B6C: - lsls r1, r2, 1 - adds r0, r1, r4 - strb r3, [r0] - adds r1, r5 - strb r3, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _08161B6C - movs r0, 0 - strb r0, [r6] - strb r0, [r6, 0x1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ClearRoamerLocationData - - thumb_func_start CreateInitialRoamerMon -CreateInitialRoamerMon: @ 8161B94 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 16 - cmp r0, 0 - bne _08161BBC - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, =0x000031dc - adds r1, r2 - ldr r2, =0x00000197 - b _08161BC8 - .pool -_08161BBC: - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, =0x000031dc - adds r1, r2 - movs r2, 0xCC - lsls r2, 1 -_08161BC8: - strh r2, [r1, 0x8] - adds r7, r0, 0 - ldr r6, =gEnemyParty - ldr r0, [r7] - ldr r5, =0x000031dc - adds r0, r5 - ldrh r1, [r0, 0x8] - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - adds r0, r6, 0 - movs r2, 0x28 - movs r3, 0x20 - bl CreateMon - ldr r0, [r7] - adds r0, r5 - movs r1, 0x28 - strb r1, [r0, 0xC] - ldr r0, [r7] - adds r0, r5 - strb r4, [r0, 0xD] - ldr r0, [r7] - adds r0, r5 - movs r1, 0x1 - strb r1, [r0, 0x13] - adds r0, r6, 0 - movs r1, 0x42 - bl GetMonData - ldr r1, [r7] - adds r1, r5 - str r0, [r1] - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - ldr r1, [r7] - adds r1, r5 - str r0, [r1, 0x4] - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - ldr r1, [r7] - adds r1, r5 - movs r2, 0 - mov r8, r2 - strh r0, [r1, 0xA] - adds r0, r6, 0 - movs r1, 0x16 - bl GetMonData - ldr r1, [r7] - adds r1, r5 - strb r0, [r1, 0xE] - adds r0, r6, 0 - movs r1, 0x17 - bl GetMonData - ldr r1, [r7] - adds r1, r5 - strb r0, [r1, 0xF] - adds r0, r6, 0 - movs r1, 0x18 - bl GetMonData - ldr r1, [r7] - adds r1, r5 - strb r0, [r1, 0x10] - adds r0, r6, 0 - movs r1, 0x21 - bl GetMonData - ldr r1, [r7] - adds r1, r5 - strb r0, [r1, 0x11] - adds r0, r6, 0 - movs r1, 0x2F - bl GetMonData - ldr r1, [r7] - adds r1, r5 - strb r0, [r1, 0x12] - ldr r4, =sRoamerLocation - mov r0, r8 - strb r0, [r4] - bl Random - ldr r5, =sRoamerLocations - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - adds r1, r5 - ldrb r0, [r1] - strb r0, [r4, 0x1] - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end CreateInitialRoamerMon - - thumb_func_start InitRoamer -InitRoamer: @ 8161CBC - push {lr} - bl ClearRoamerData - bl ClearRoamerLocationData - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - bl CreateInitialRoamerMon - pop {r0} - bx r0 - .pool - thumb_func_end InitRoamer - - thumb_func_start UpdateLocationHistoryForRoamer -UpdateLocationHistoryForRoamer: @ 8161CD8 - ldr r0, =sLocationHistory - ldrb r1, [r0, 0x2] - strb r1, [r0, 0x4] - ldrb r1, [r0, 0x3] - strb r1, [r0, 0x5] - ldrb r1, [r0] - strb r1, [r0, 0x2] - ldrb r1, [r0, 0x1] - strb r1, [r0, 0x3] - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x4] - strb r1, [r0] - ldrb r1, [r2, 0x5] - strb r1, [r0, 0x1] - bx lr - .pool - thumb_func_end UpdateLocationHistoryForRoamer - - thumb_func_start RoamerMoveToOtherLocationSet -RoamerMoveToOtherLocationSet: @ 8161D00 - push {r4,r5,lr} - movs r1, 0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x000031dc - adds r0, r2 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08161D3E - ldr r0, =sRoamerLocation - strb r1, [r0] - ldr r5, =sRoamerLocations - adds r4, r0, 0 -_08161D1A: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - adds r1, r5 - ldrb r1, [r1] - ldrb r0, [r4, 0x1] - cmp r0, r1 - beq _08161D1A - strb r1, [r4, 0x1] -_08161D3E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end RoamerMoveToOtherLocationSet - - thumb_func_start RoamerMove -RoamerMove: @ 8161D54 - push {r4-r7,lr} - movs r4, 0 - bl Random - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 12 - ands r1, r0 - cmp r1, 0 - bne _08161D6E - bl RoamerMoveToOtherLocationSet - b _08161DE2 -_08161D6E: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000031dc - adds r0, r1 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08161DE2 - ldr r7, =sRoamerLocation - ldr r3, =sRoamerLocations -_08161D80: - lsls r0, r4, 1 - adds r0, r4 - lsls r2, r0, 1 - adds r1, r2, r3 - ldrb r0, [r7, 0x1] - ldrb r1, [r1] - cmp r0, r1 - bne _08161DD8 - ldr r6, =sRoamerLocations - adds r5, r2, 0x1 - ldr r4, =sLocationHistory -_08161D96: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, r5 - adds r0, r6 - ldrb r1, [r0] - ldrb r0, [r4, 0x4] - cmp r0, 0 - bne _08161DBA - ldrb r0, [r4, 0x5] - cmp r0, r1 - beq _08161D96 -_08161DBA: - cmp r1, 0xFF - beq _08161D96 - strb r1, [r7, 0x1] - b _08161DE2 - .pool -_08161DD8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _08161D80 -_08161DE2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end RoamerMove - - thumb_func_start IsRoamerAt -IsRoamerAt: @ 8161DE8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x000031dc - adds r0, r3 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08161E20 - ldr r0, =sRoamerLocation - ldrb r3, [r0] - cmp r2, r3 - bne _08161E20 - ldrb r0, [r0, 0x1] - cmp r1, r0 - bne _08161E20 - movs r0, 0x1 - b _08161E22 - .pool -_08161E20: - movs r0, 0 -_08161E22: - pop {r1} - bx r1 - thumb_func_end IsRoamerAt - - thumb_func_start CreateRoamerMonInstance -CreateRoamerMonInstance: @ 8161E28 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, =gEnemyParty - bl ZeroEnemyPartyMons - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, =0x000031dc - adds r0, r1 - ldrh r1, [r0, 0x8] - ldrb r2, [r0, 0xC] - ldr r3, [r0] - ldr r0, [r0, 0x4] - str r0, [sp] - adds r0, r5, 0 - bl CreateMonWithIVsPersonality - ldr r2, [r4] - ldr r0, =0x000031e9 - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x37 - bl SetMonData - ldr r2, [r4] - ldr r1, =0x000031e6 - adds r2, r1 - adds r0, r5, 0 - movs r1, 0x39 - bl SetMonData - ldr r2, [r4] - ldr r0, =0x000031ea - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x16 - bl SetMonData - ldr r2, [r4] - ldr r1, =0x000031eb - adds r2, r1 - adds r0, r5, 0 - movs r1, 0x17 - bl SetMonData - ldr r2, [r4] - ldr r0, =0x000031ec - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x18 - bl SetMonData - ldr r2, [r4] - ldr r1, =0x000031ed - adds r2, r1 - adds r0, r5, 0 - movs r1, 0x21 - bl SetMonData - ldr r2, [r4] - ldr r0, =0x000031ee - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x2F - bl SetMonData - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end CreateRoamerMonInstance - - thumb_func_start TryStartRoamerEncounter -TryStartRoamerEncounter: @ 8161EDC - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - bl IsRoamerAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08161F10 - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - cmp r1, 0 - bne _08161F10 - bl CreateRoamerMonInstance - movs r0, 0x1 - b _08161F12 - .pool -_08161F10: - movs r0, 0 -_08161F12: - pop {r1} - bx r1 - thumb_func_end TryStartRoamerEncounter - - thumb_func_start UpdateRoamerHPStatus -UpdateRoamerHPStatus: @ 8161F18 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x39 - bl GetMonData - ldr r5, =gSaveBlock1Ptr - ldr r1, [r5] - ldr r4, =0x000031dc - adds r1, r4 - strh r0, [r1, 0xA] - adds r0, r6, 0 - movs r1, 0x37 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0xD] - bl RoamerMoveToOtherLocationSet - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateRoamerHPStatus - - thumb_func_start SetRoamerInactive -SetRoamerInactive: @ 8161F4C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000031dc - adds r0, r1 - movs r1, 0 - strb r1, [r0, 0x13] - bx lr - .pool - thumb_func_end SetRoamerInactive - - thumb_func_start GetRoamerLocation -GetRoamerLocation: @ 8161F64 - ldr r3, =sRoamerLocation - ldrb r2, [r3] - strb r2, [r0] - ldrb r0, [r3, 0x1] - strb r0, [r1] - bx lr - .pool - thumb_func_end GetRoamerLocation - - - .align 2, 0 @ Don't pad with nop. diff --git a/data/rom_8158B30.s b/data/rom_8158B30.s index c8d9baa1a2..72cff0b337 100644 --- a/data/rom_8158B30.s +++ b/data/rom_8158B30.s @@ -81,156 +81,3 @@ gUnknown_085CEC10:: @ 85CEC10 gUnknown_085CEC28:: @ 85CEC28 .incbin "baserom.gba", 0x5cec28, 0x8 - -sRoamerLocations:: @ 85CEC30 - .incbin "baserom.gba", 0x5cec30, 0x80 - -@ 85CECB0 - .include "data/battle_frontier/battle_frontier_held_items.inc" - -@ 85CED2E - .include "data/battle_frontier/battle_frontier_trainer_mons.inc" - -@ 85D5ACC - .include "data/battle_frontier/battle_frontier_trainers.inc" - -@ 85D97BC - .include "data/battle_frontier/battle_frontier_mons.inc" - -gUnknown_085DCEDC:: @ 85DCEDC - .incbin "baserom.gba", 0x5dcedc, 0x1e - -gUnknown_085DCEFA:: @ 85DCEFA - .incbin "baserom.gba", 0x5dcefa, 0x14 - -gUnknown_085DCF0E:: @ 85DCF0E - .incbin "baserom.gba", 0x5dcf0e, 0x1e - -gUnknown_085DCF2C:: @ 85DCF2C - .incbin "baserom.gba", 0x5dcf2c, 0x14 - -gUnknown_085DCF40:: @ 85DCF40 - .incbin "baserom.gba", 0x5dcf40, 0x5c0 - -gUnknown_085DD500:: @ 85DD500 - .incbin "baserom.gba", 0x5dd500, 0x190 - -gUnknown_085DD690:: @ 85DD690 - .incbin "baserom.gba", 0x5dd690, 0x40 - -gUnknown_085DD6D0:: @ 85DD6D0 - .incbin "baserom.gba", 0x5dd6d0, 0x5 - -gUnknown_085DD6D5:: @ 85DD6D5 - .incbin "baserom.gba", 0x5dd6d5, 0x7 - -gUnknown_085DD6DC:: @ 85DD6DC - .incbin "baserom.gba", 0x5dd6dc, 0x30 - -@ 85DD70C - .include "data/battle_frontier/slateport_battle_tent_trainer_mons.inc" - -@ 85DDA14 - .include "data/battle_frontier/slateport_battle_tent_trainers.inc" - -@ 85DE02C - .include "data/battle_frontier/slateport_battle_tent_mons.inc" - -@ 85DE48C - .include "data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc" - -@ 85DE610 - .include "data/battle_frontier/verdanturf_battle_tent_trainers.inc" - -@ 85DEC28 - .include "data/battle_frontier/verdanturf_battle_tent_mons.inc" - -@ 85DEEF8 - .include "data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc" - -@ 85DF084 - .include "data/battle_frontier/fallarbor_battle_tent_trainers.inc" - -@ 85DF69C - .include "data/battle_frontier/fallarbor_battle_tent_mons.inc" - -gUnknown_085DF96C:: @ 85DF96C - .incbin "baserom.gba", 0x5df96c, 0x40 - -gUnknown_085DF9AC:: @ 85DF9AC - .incbin "baserom.gba", 0x5df9ac, 0x20 - -gUnknown_085DF9CC:: @ 85DF9CC - .incbin "baserom.gba", 0x5df9cc, 0x20 - -gUnknown_085DF9EC:: @ 85DF9EC - .incbin "baserom.gba", 0x5df9ec, 0xa - -gUnknown_085DF9F6:: @ 85DF9F6 - .incbin "baserom.gba", 0x5df9f6, 0x4 - -gUnknown_085DF9FA:: @ 85DF9FA - .incbin "baserom.gba", 0x5df9fa, 0x20 - -gUnknown_085DFA1A:: @ 85DFA1A - .incbin "baserom.gba", 0x5dfa1a, 0x28 - -gUnknown_085DFA42:: @ 85DFA42 - .incbin "baserom.gba", 0x5dfa42, 0x4 - -gUnknown_085DFA46:: @ 85DFA46 - .incbin "baserom.gba", 0x5dfa46, 0xc - -gUnknown_085DFA52:: @ 85DFA52 - .incbin "baserom.gba", 0x5dfa52, 0xe - -gUnknown_085DFA60:: @ 85DFA60 - .incbin "baserom.gba", 0x5dfa60, 0x20 - -gUnknown_085DFA80:: @ 85DFA80 - .incbin "baserom.gba", 0x5dfa80, 0xe0 - -gUnknown_085DFB60:: @ 85DFB60 - .incbin "baserom.gba", 0x5dfb60, 0xac - -gUnknown_085DFC0C:: @ 85DFC0C - .incbin "baserom.gba", 0x5dfc0c, 0xa4 - -gUnknown_085DFCB0:: @ 85DFCB0 - .incbin "baserom.gba", 0x5dfcb0, 0x14 - -gUnknown_085DFCC4:: @ 85DFCC4 - .incbin "baserom.gba", 0x5dfcc4, 0x5 - -gUnknown_085DFCC9:: @ 85DFCC9 - .incbin "baserom.gba", 0x5dfcc9, 0x3 - -gUnknown_085DFCCC:: @ 85DFCCC - .incbin "baserom.gba", 0x5dfccc, 0x10 - -gUnknown_085DFCDC:: @ 85DFCDC - .incbin "baserom.gba", 0x5dfcdc, 0x20 - -gUnknown_085DFCFC:: @ 85DFCFC - .incbin "baserom.gba", 0x5dfcfc, 0x8 - -gUnknown_085DFD04:: @ 85DFD04 - .incbin "baserom.gba", 0x5dfd04, 0x14 - -gUnknown_085DFD18:: @ 85DFD18 - .incbin "baserom.gba", 0x5dfd18, 0x8 - -gUnknown_085DFD20:: @ 85DFD20 - .incbin "baserom.gba", 0x5dfd20, 0x8 - -gUnknown_085DFD28:: @ 85DFD28 - .incbin "baserom.gba", 0x5dfd28, 0x34 - -gUnknown_085DFD5C:: @ 85DFD5C - .incbin "baserom.gba", 0x5dfd5c, 0x44 - -gUnknown_085DFDA0:: @ 85DFDA0 - .incbin "baserom.gba", 0x5dfda0, 0x18 - -gUnknown_085DFDB8:: @ 85DFDB8 - .incbin "baserom.gba", 0x5dfdb8, 0x8 diff --git a/data/rom_85CECB0.s b/data/rom_85CECB0.s new file mode 100644 index 0000000000..c0233bb8ca --- /dev/null +++ b/data/rom_85CECB0.s @@ -0,0 +1,154 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +@ 85CECB0 + .include "data/battle_frontier/battle_frontier_held_items.inc" + +@ 85CED2E + .include "data/battle_frontier/battle_frontier_trainer_mons.inc" + +@ 85D5ACC + .include "data/battle_frontier/battle_frontier_trainers.inc" + +@ 85D97BC + .include "data/battle_frontier/battle_frontier_mons.inc" + +gUnknown_085DCEDC:: @ 85DCEDC + .incbin "baserom.gba", 0x5dcedc, 0x1e + +gUnknown_085DCEFA:: @ 85DCEFA + .incbin "baserom.gba", 0x5dcefa, 0x14 + +gUnknown_085DCF0E:: @ 85DCF0E + .incbin "baserom.gba", 0x5dcf0e, 0x1e + +gUnknown_085DCF2C:: @ 85DCF2C + .incbin "baserom.gba", 0x5dcf2c, 0x14 + +gUnknown_085DCF40:: @ 85DCF40 + .incbin "baserom.gba", 0x5dcf40, 0x5c0 + +gUnknown_085DD500:: @ 85DD500 + .incbin "baserom.gba", 0x5dd500, 0x190 + +gUnknown_085DD690:: @ 85DD690 + .incbin "baserom.gba", 0x5dd690, 0x40 + +gUnknown_085DD6D0:: @ 85DD6D0 + .incbin "baserom.gba", 0x5dd6d0, 0x5 + +gUnknown_085DD6D5:: @ 85DD6D5 + .incbin "baserom.gba", 0x5dd6d5, 0x7 + +gUnknown_085DD6DC:: @ 85DD6DC + .incbin "baserom.gba", 0x5dd6dc, 0x30 + +@ 85DD70C + .include "data/battle_frontier/slateport_battle_tent_trainer_mons.inc" + +@ 85DDA14 + .include "data/battle_frontier/slateport_battle_tent_trainers.inc" + +@ 85DE02C + .include "data/battle_frontier/slateport_battle_tent_mons.inc" + +@ 85DE48C + .include "data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc" + +@ 85DE610 + .include "data/battle_frontier/verdanturf_battle_tent_trainers.inc" + +@ 85DEC28 + .include "data/battle_frontier/verdanturf_battle_tent_mons.inc" + +@ 85DEEF8 + .include "data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc" + +@ 85DF084 + .include "data/battle_frontier/fallarbor_battle_tent_trainers.inc" + +@ 85DF69C + .include "data/battle_frontier/fallarbor_battle_tent_mons.inc" + +gUnknown_085DF96C:: @ 85DF96C + .incbin "baserom.gba", 0x5df96c, 0x40 + +gUnknown_085DF9AC:: @ 85DF9AC + .incbin "baserom.gba", 0x5df9ac, 0x20 + +gUnknown_085DF9CC:: @ 85DF9CC + .incbin "baserom.gba", 0x5df9cc, 0x20 + +gUnknown_085DF9EC:: @ 85DF9EC + .incbin "baserom.gba", 0x5df9ec, 0xa + +gUnknown_085DF9F6:: @ 85DF9F6 + .incbin "baserom.gba", 0x5df9f6, 0x4 + +gUnknown_085DF9FA:: @ 85DF9FA + .incbin "baserom.gba", 0x5df9fa, 0x20 + +gUnknown_085DFA1A:: @ 85DFA1A + .incbin "baserom.gba", 0x5dfa1a, 0x28 + +gUnknown_085DFA42:: @ 85DFA42 + .incbin "baserom.gba", 0x5dfa42, 0x4 + +gUnknown_085DFA46:: @ 85DFA46 + .incbin "baserom.gba", 0x5dfa46, 0xc + +gUnknown_085DFA52:: @ 85DFA52 + .incbin "baserom.gba", 0x5dfa52, 0xe + +gUnknown_085DFA60:: @ 85DFA60 + .incbin "baserom.gba", 0x5dfa60, 0x20 + +gUnknown_085DFA80:: @ 85DFA80 + .incbin "baserom.gba", 0x5dfa80, 0xe0 + +gUnknown_085DFB60:: @ 85DFB60 + .incbin "baserom.gba", 0x5dfb60, 0xac + +gUnknown_085DFC0C:: @ 85DFC0C + .incbin "baserom.gba", 0x5dfc0c, 0xa4 + +gUnknown_085DFCB0:: @ 85DFCB0 + .incbin "baserom.gba", 0x5dfcb0, 0x14 + +gUnknown_085DFCC4:: @ 85DFCC4 + .incbin "baserom.gba", 0x5dfcc4, 0x5 + +gUnknown_085DFCC9:: @ 85DFCC9 + .incbin "baserom.gba", 0x5dfcc9, 0x3 + +gUnknown_085DFCCC:: @ 85DFCCC + .incbin "baserom.gba", 0x5dfccc, 0x10 + +gUnknown_085DFCDC:: @ 85DFCDC + .incbin "baserom.gba", 0x5dfcdc, 0x20 + +gUnknown_085DFCFC:: @ 85DFCFC + .incbin "baserom.gba", 0x5dfcfc, 0x8 + +gUnknown_085DFD04:: @ 85DFD04 + .incbin "baserom.gba", 0x5dfd04, 0x14 + +gUnknown_085DFD18:: @ 85DFD18 + .incbin "baserom.gba", 0x5dfd18, 0x8 + +gUnknown_085DFD20:: @ 85DFD20 + .incbin "baserom.gba", 0x5dfd20, 0x8 + +gUnknown_085DFD28:: @ 85DFD28 + .incbin "baserom.gba", 0x5dfd28, 0x34 + +gUnknown_085DFD5C:: @ 85DFD5C + .incbin "baserom.gba", 0x5dfd5c, 0x44 + +gUnknown_085DFDA0:: @ 85DFDA0 + .incbin "baserom.gba", 0x5dfda0, 0x18 + +gUnknown_085DFDB8:: @ 85DFDB8 + .incbin "baserom.gba", 0x5dfdb8, 0x8 diff --git a/include/roamer.h b/include/roamer.h index af7f86e794..ba1b09b54d 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -3,9 +3,15 @@ void ClearRoamerData(void); void ClearRoamerLocationData(void); +void InitRoamer(void); void UpdateLocationHistoryForRoamer(void); void RoamerMoveToOtherLocationSet(void); -void RoamerMove(); +void RoamerMove(void); +bool8 IsRoamerAt(u8 mapGroup, u8 mapNum); +void CreateRoamerMonInstance(void); u8 TryStartRoamerEncounter(void); +void UpdateRoamerHPStatus(struct Pokemon *mon); +void SetRoamerInactive(void); +void GetRoamerLocation(u8 *mapGroup, u8 *mapNum); #endif // GUARD_ROAMER_H diff --git a/ld_script.txt b/ld_script.txt index 64a43d573b..77e8ac4f4d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -211,7 +211,7 @@ SECTIONS { asm/learn_move.o(.text); asm/fldeff_softboiled.o(.text); asm/decoration_inventory.o(.text); - asm/roamer.o(.text); + src/roamer.o(.text); asm/battle_tower.o(.text); asm/use_pokeblock.o(.text); asm/battle_controller_wally.o(.text); @@ -421,6 +421,8 @@ SECTIONS { data/contest_ai.o(.rodata); data/battle_controller_safari.o(.rodata); data/rom_8158B30.o(.rodata); + src/roamer.o(.rodata); + data/rom_85CECB0.o(.rodata); data/battle_controller_wally.o(.rodata); data/player_pc.o(.rodata); data/intro.o(.rodata); diff --git a/src/roamer.c b/src/roamer.c new file mode 100644 index 0000000000..cbe1b6312d --- /dev/null +++ b/src/roamer.c @@ -0,0 +1,218 @@ +#include "global.h" +#include "roamer.h" +#include "pokemon.h" +#include "rng.h" +#include "species.h" +#include "event_data.h" + +enum +{ + MAP_GRP = 0, // map group + MAP_NUM = 1, // map number +}; + +EWRAM_DATA static u8 sLocationHistory[3][2] = {0}; +EWRAM_DATA static u8 sRoamerLocation[2] = {0}; + +static const u8 sRoamerLocations[][6] = +{ + { 0x19, 0x1A, 0x20, 0x21, 0x31, 0xFF }, + { 0x1A, 0x19, 0x20, 0x21, 0xFF, 0xFF }, + { 0x20, 0x1A, 0x19, 0x21, 0xFF, 0xFF }, + { 0x21, 0x20, 0x19, 0x1A, 0x22, 0x26 }, + { 0x22, 0x21, 0x23, 0xFF, 0xFF, 0xFF }, + { 0x23, 0x22, 0x24, 0xFF, 0xFF, 0xFF }, + { 0x24, 0x23, 0x25, 0x26, 0xFF, 0xFF }, + { 0x25, 0x24, 0x26, 0xFF, 0xFF, 0xFF }, + { 0x26, 0x25, 0x21, 0xFF, 0xFF, 0xFF }, + { 0x27, 0x24, 0x28, 0x29, 0xFF, 0xFF }, + { 0x28, 0x27, 0x2A, 0xFF, 0xFF, 0xFF }, + { 0x29, 0x27, 0x2A, 0xFF, 0xFF, 0xFF }, + { 0x2A, 0x28, 0x29, 0x2B, 0xFF, 0xFF }, + { 0x2B, 0x2A, 0x2C, 0xFF, 0xFF, 0xFF }, + { 0x2C, 0x2B, 0x2D, 0xFF, 0xFF, 0xFF }, + { 0x2D, 0x2C, 0x2E, 0xFF, 0xFF, 0xFF }, + { 0x2E, 0x2D, 0x2F, 0xFF, 0xFF, 0xFF }, + { 0x2F, 0x2E, 0x30, 0xFF, 0xFF, 0xFF }, + { 0x30, 0x2F, 0x31, 0xFF, 0xFF, 0xFF }, + { 0x31, 0x30, 0x19, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, +}; + +void ClearRoamerData(void) +{ + memset(&gSaveBlock1Ptr->roamer, 0, sizeof(struct Roamer)); + (&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIAS; +} + +void ClearRoamerLocationData(void) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + sLocationHistory[i][MAP_GRP] = 0; + sLocationHistory[i][MAP_NUM] = 0; + } + + sRoamerLocation[MAP_GRP] = 0; + sRoamerLocation[MAP_NUM] = 0; +} + +static void CreateInitialRoamerMon(bool16 createLatios) +{ + if (!createLatios) + (&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIAS; + else + (&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIOS; + + CreateMon(&gEnemyParty[0], (&gSaveBlock1Ptr->roamer)->species, 40, 0x20, 0, 0, 0, 0); + (&gSaveBlock1Ptr->roamer)->level = 40; + (&gSaveBlock1Ptr->roamer)->status = 0; + (&gSaveBlock1Ptr->roamer)->active = TRUE; + (&gSaveBlock1Ptr->roamer)->ivs = GetMonData(&gEnemyParty[0], MON_DATA_IVS); + (&gSaveBlock1Ptr->roamer)->personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY); + (&gSaveBlock1Ptr->roamer)->hp = GetMonData(&gEnemyParty[0], MON_DATA_MAX_HP); + (&gSaveBlock1Ptr->roamer)->cool = GetMonData(&gEnemyParty[0], MON_DATA_COOL); + (&gSaveBlock1Ptr->roamer)->beauty = GetMonData(&gEnemyParty[0], MON_DATA_BEAUTY); + (&gSaveBlock1Ptr->roamer)->cute = GetMonData(&gEnemyParty[0], MON_DATA_CUTE); + (&gSaveBlock1Ptr->roamer)->smart = GetMonData(&gEnemyParty[0], MON_DATA_SMART); + (&gSaveBlock1Ptr->roamer)->tough = GetMonData(&gEnemyParty[0], MON_DATA_TOUGH); + sRoamerLocation[MAP_GRP] = 0; + sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % 20][0]; +} + +void InitRoamer(void) +{ + ClearRoamerData(); + ClearRoamerLocationData(); + CreateInitialRoamerMon(gSpecialVar_0x8004); +} + +void UpdateLocationHistoryForRoamer(void) +{ + sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP]; + sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM]; + + sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP]; + sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM]; + + sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup; + sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum; +} + +void RoamerMoveToOtherLocationSet(void) +{ + u8 val = 0; + struct Roamer *roamer = &gSaveBlock1Ptr->roamer; + + if (!roamer->active) + return; + + sRoamerLocation[MAP_GRP] = val; + + while (1) + { + val = sRoamerLocations[Random() % 20][0]; + if (sRoamerLocation[MAP_NUM] != val) + { + sRoamerLocation[MAP_NUM] = val; + return; + } + } +} + +void RoamerMove(void) +{ + u8 locSet = 0; + + if ((Random() % 16) == 0) + { + RoamerMoveToOtherLocationSet(); + } + else + { + struct Roamer *roamer = &gSaveBlock1Ptr->roamer; + + if (!roamer->active) + return; + + while (locSet < 20) + { + if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0]) + { + u8 mapNum; + while (1) + { + mapNum = sRoamerLocations[locSet][(Random() % 5) + 1]; + if (!(sLocationHistory[2][MAP_GRP] == 0 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF) + break; + } + sRoamerLocation[MAP_NUM] = mapNum; + return; + } + locSet++; + } + } +} + +bool8 IsRoamerAt(u8 mapGroup, u8 mapNum) +{ + struct Roamer *roamer = &gSaveBlock1Ptr->roamer; + + if (roamer->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM]) + return TRUE; + else + return FALSE; +} + +void CreateRoamerMonInstance(void) +{ + struct Pokemon *mon; + struct Roamer *roamer; + + mon = &gEnemyParty[0]; + ZeroEnemyPartyMons(); + roamer = &gSaveBlock1Ptr->roamer; + CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality); + SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status); + SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp); + SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool); + SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty); + SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute); + SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart); + SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough); +} + +bool8 TryStartRoamerEncounter(void) +{ + if (IsRoamerAt(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum) == TRUE && (Random() % 4) == 0) + { + CreateRoamerMonInstance(); + return TRUE; + } + else + { + return FALSE; + } +} + +void UpdateRoamerHPStatus(struct Pokemon *mon) +{ + (&gSaveBlock1Ptr->roamer)->hp = GetMonData(mon, MON_DATA_HP); + (&gSaveBlock1Ptr->roamer)->status = GetMonData(mon, MON_DATA_STATUS); + + RoamerMoveToOtherLocationSet(); +} + +void SetRoamerInactive(void) +{ + struct Roamer *roamer = &gSaveBlock1Ptr->roamer; + roamer->active = FALSE; +} + +void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) +{ + *mapGroup = sRoamerLocation[MAP_GRP]; + *mapNum = sRoamerLocation[MAP_NUM]; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index d8cc646db6..149e8fd1a3 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1550,11 +1550,7 @@ gUnknown_0203BC38: @ 203BC38 gDecorationInventories: @ 203BC40 .space 0x40 -sLocationHistory: @ 203BC80 - .space 0x6 - -sRoamerLocation: @ 203BC86 - .space 0x2 + .include "src/roamer.o" gUnknown_0203BC88: @ 203BC88 .space 0x4 From e41b9cbbb37c908f77a9ce440f33b76b35139311 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Sep 2017 00:11:42 +0200 Subject: [PATCH 046/182] decompile money --- asm/item_menu.s | 2 +- asm/money.s | 311 ------------------------------------------- asm/scrcmd.s | 6 +- asm/shop.s | 8 +- data/graphics.s | 11 +- data/money.s | 13 -- data/naming_screen.s | 2 +- include/menu.h | 5 +- include/money.h | 10 ++ ld_script.txt | 3 +- src/coins.c | 3 +- src/money.c | 145 ++++++++++++++++++++ sym_ewram.txt | 9 +- 13 files changed, 180 insertions(+), 348 deletions(-) delete mode 100644 asm/money.s delete mode 100644 data/money.s diff --git a/asm/item_menu.s b/asm/item_menu.s index abac409bcf..c1f94b4e91 100755 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -6237,7 +6237,7 @@ bag_menu_AddMoney_window: @ 81AE268 adds r0, r4, 0 movs r1, 0x1 movs r2, 0xE - bl set_window_border_style_and_print_money_box + bl PrintMoneyAmountInMoneyBoxWithBorder movs r0, 0x13 movs r1, 0xB bl AddMoneyLabelObject diff --git a/asm/money.s b/asm/money.s deleted file mode 100644 index 53e795714c..0000000000 --- a/asm/money.s +++ /dev/null @@ -1,311 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - - - thumb_func_start sub_80E51B0 -sub_80E51B0: @ 80E51B0 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r1, =gSpecialVar_0x8005 - ldrh r1, [r1] - bl IsEnoughMoney - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80E51B0 - - thumb_func_start sub_80E51D4 -sub_80E51D4: @ 80E51D4 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r1, =gSpecialVar_0x8005 - ldrh r1, [r1] - bl SubtractMoney - pop {r0} - bx r0 - .pool - thumb_func_end sub_80E51D4 - - thumb_func_start PrintMoneyAmountInMoneyBox -@ void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, s8 a3) -PrintMoneyAmountInMoneyBox: @ 80E51F4 - push {lr} - sub sp, 0x4 - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - movs r1, 0x26 - movs r2, 0x1 - bl PrintMoneyAmount - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end PrintMoneyAmountInMoneyBox - - thumb_func_start PrintMoneyAmount -@ void PrintMoneyAmount(u8 windowId, char x, char y, int amount, u8 a5) -PrintMoneyAmount: @ 80E5214 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r4, [sp, 0x24] - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r4, 24 - lsrs r5, r4, 24 - ldr r4, =gStringVar1 - adds r0, r4, 0 - adds r1, r3, 0 - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - subs r1, r0 - ldr r2, =gStringVar4 - adds r0, r1, 0 - subs r1, 0x1 - cmp r0, 0 - ble _080E5264 - movs r3, 0x77 -_080E5258: - strb r3, [r2] - adds r2, 0x1 - adds r0, r1, 0 - subs r1, 0x1 - cmp r0, 0 - bgt _080E5258 -_080E5264: - ldr r1, =gText_PokedollarVar1 - adds r0, r2, 0 - bl StringExpandPlaceholders - ldr r2, =gStringVar4 - str r6, [sp] - str r5, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x1 - mov r3, r8 - bl PrintTextOnWindow - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end PrintMoneyAmount - - thumb_func_start set_window_border_style_and_print_money_box -@ void set_window_border_style_and_print_money_box(u8 windowId, u16 tileStart, u8 palette, int amount) -set_window_border_style_and_print_money_box: @ 80E5298 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - mov r8, r3 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - adds r3, r5, 0 - bl SetWindowBorderStyle - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl PrintMoneyAmountInMoneyBox - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end set_window_border_style_and_print_money_box - - thumb_func_start sub_80E52D4 -sub_80E52D4: @ 80E52D4 - push {lr} - adds r1, r0, 0 - ldr r0, =gUnknown_02039F98 - ldrb r0, [r0] - movs r2, 0 - bl PrintMoneyAmountInMoneyBox - pop {r0} - bx r0 - .pool - thumb_func_end sub_80E52D4 - - thumb_func_start sub_80E52EC -@ void sub_80E52EC(int money, int x, int y) -sub_80E52EC: @ 80E52EC - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - mov r8, r0 - adds r4, r1, 0 - adds r3, r2, 0 - lsls r4, 24 - lsls r3, 24 - lsrs r6, r4, 24 - movs r0, 0x80 - lsls r0, 17 - adds r4, r0 - lsrs r4, 24 - lsrs r5, r3, 24 - adds r3, r0 - lsrs r3, 24 - movs r0, 0xA - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0x8 - str r0, [sp, 0xC] - add r0, sp, 0x10 - movs r1, 0 - adds r2, r4, 0 - bl SetWindowTemplateFields - ldr r4, =gUnknown_02039F98 - add r0, sp, 0x10 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl FillWindowPixelBuffer - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r4] - movs r1, 0x85 - lsls r1, 2 - movs r2, 0xE - mov r3, r8 - bl set_window_border_style_and_print_money_box - lsls r6, 19 - movs r0, 0x98 - lsls r0, 13 - adds r6, r0 - lsrs r6, 16 - lsls r5, 19 - movs r0, 0xB0 - lsls r0, 12 - adds r5, r0 - lsrs r5, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl AddMoneyLabelObject - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80E52EC - - thumb_func_start sub_80E5384 -sub_80E5384: @ 80E5384 - push {r4,lr} - bl RemoveMoneyLabelObject - ldr r4, =gUnknown_02039F98 - ldrb r0, [r4] - movs r1, 0 - bl sub_8198070 - ldrb r0, [r4] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r4] - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80E5384 - - thumb_func_start AddMoneyLabelObject -AddMoneyLabelObject: @ 80E53AC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r0, =gUnknown_0858C2A4 - bl LoadCompressedObjectPic - ldr r0, =gUnknown_0858C2AC - bl LoadCompressedObjectPalette - ldr r0, =gUnknown_0858C28C - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CreateSprite - ldr r1, =gUnknown_02039F99 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end AddMoneyLabelObject - - thumb_func_start RemoveMoneyLabelObject -RemoveMoneyLabelObject: @ 80E53F4 - push {lr} - ldr r0, =gUnknown_02039F99 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - bl DestroySpriteAndFreeResources - pop {r0} - bx r0 - .pool - thumb_func_end RemoveMoneyLabelObject - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 7980ba564d..1772c563fe 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -4468,7 +4468,7 @@ s93_display_money: @ 809B500 bl GetMoney adds r1, r5, 0 adds r2, r4, 0 - bl sub_80E52EC + bl DrawMoneyBox _0809B530: movs r0, 0 pop {r4,r5} @@ -4480,7 +4480,7 @@ _0809B530: thumb_func_start s94_hide_money s94_hide_money: @ 809B53C push {lr} - bl sub_80E5384 + bl HideMoneyBox movs r0, 0 pop {r1} bx r1 @@ -4505,7 +4505,7 @@ s95_update_money: @ 809B548 lsls r1, 3 adds r0, r1 bl GetMoney - bl sub_80E52D4 + bl ChangeAmountInMoneyBox _0809B56E: movs r0, 0 pop {r1} diff --git a/asm/shop.s b/asm/shop.s index f4dacaa76d..08e935bb1a 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1125,7 +1125,7 @@ BuyMenuInitBgs: @ 80E036C BuyMenuDecompressBgGraphics: @ 80E0424 push {lr} sub sp, 0x4 - ldr r1, =gUnknown_08D9AFBC + ldr r1, =gBuyMenuFrame_Gfx movs r2, 0xE8 lsls r2, 2 ldr r3, =0x000003e3 @@ -1133,11 +1133,11 @@ BuyMenuDecompressBgGraphics: @ 80E0424 str r0, [sp] movs r0, 0x1 bl decompress_and_copy_tile_data_to_vram - ldr r0, =gUnknown_08D9B0F0 + ldr r0, =gBuyMenuFrame_Tilemap ldr r1, =gUnknown_02039F70 ldr r1, [r1] bl LZDecompressWram - ldr r0, =gUnknown_08D9B0C8 + ldr r0, =gMenuMoneyPal movs r1, 0xC0 movs r2, 0x20 bl LoadCompressedPalette @@ -1259,7 +1259,7 @@ BuyMenuDrawGraphics: @ 80E0524 movs r0, 0 movs r1, 0x1 movs r2, 0xD - bl set_window_border_style_and_print_money_box + bl PrintMoneyAmountInMoneyBoxWithBorder movs r0, 0 bl schedule_bg_copy_tilemap_to_vram movs r0, 0x1 diff --git a/data/graphics.s b/data/graphics.s index 96aaf39115..26842d4ba4 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -512,14 +512,17 @@ gUnknown_08D9AE04:: @ 8D9AE04 gUnknown_08D9AF44:: @ 8D9AF44 .incbin "baserom.gba", 0xd9af44, 0x78 -gUnknown_08D9AFBC:: @ 8D9AFBC +gBuyMenuFrame_Gfx:: @ 8D9AFBC .incbin "baserom.gba", 0xd9afbc, 0x10c -gUnknown_08D9B0C8:: @ 8D9B0C8 +gMenuMoneyPal:: @ 8D9B0C8 .incbin "baserom.gba", 0xd9b0c8, 0x28 -gUnknown_08D9B0F0:: @ 8D9B0F0 - .incbin "baserom.gba", 0xd9b0f0, 0x1c4 +gBuyMenuFrame_Tilemap:: @ 8D9B0F0 + .incbin "baserom.gba", 0xd9b0f0, 0x140 + +gMenuMoneyGfx:: @ 8D9B230 + .incbin "baserom.gba", 0xd9b230, 0x84 gUnknown_08D9B2B4:: @ 8D9B2B4 .incbin "baserom.gba", 0xd9b2b4, 0x1bc diff --git a/data/money.s b/data/money.s deleted file mode 100644 index d7457be46d..0000000000 --- a/data/money.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_0858C28C:: @ 858C28C - .incbin "baserom.gba", 0x58c28c, 0x18 - -gUnknown_0858C2A4:: @ 858C2A4 - .incbin "baserom.gba", 0x58c2a4, 0x8 - -gUnknown_0858C2AC:: @ 858C2AC - .incbin "baserom.gba", 0x58c2ac, 0x8 diff --git a/data/naming_screen.s b/data/naming_screen.s index 352fac8e4e..80cbd0b097 100644 --- a/data/naming_screen.s +++ b/data/naming_screen.s @@ -148,4 +148,4 @@ gUnknown_0858C1C8:: @ 858C1C8 .incbin "baserom.gba", 0x58c1c8, 0x68 gUnknown_0858C230:: @ 858C230 - .incbin "baserom.gba", 0x58c230, 0x5c + .incbin "baserom.gba", 0x58c230, 0x48 diff --git a/include/menu.h b/include/menu.h index 9a23401e06..766aa9d39c 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,7 +1,7 @@ #ifndef GUARD_MENU_H #define GUARD_MENU_H -#include "text.h" +#include "window.h" struct MenuAction { @@ -16,5 +16,8 @@ struct MenuAction2 }; void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); +void sub_8198070(u8 windowId, bool8 copyToVram); +void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); +void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); #endif // GUARD_MENU_H diff --git a/include/money.h b/include/money.h index 316dbd6970..22a3657f6a 100644 --- a/include/money.h +++ b/include/money.h @@ -6,5 +6,15 @@ void SetMoney(u32* moneyPtr, u32 newValue); bool8 IsEnoughMoney(u32* moneyPtr, u32 cost); void AddMoney(u32* moneyPtr, u32 toAdd); void SubtractMoney(u32* moneyPtr, u32 toSub); +bool8 IsEnoughForCostInVar0x8005(void); +void SubtractMoneyFromVar0x8005(void); +void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed); +void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed); +void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount); +void ChangeAmountInMoneyBox(int amount); +void DrawMoneyBox(int amount, u8 x, u8 y); +void HideMoneyBox(void); +void AddMoneyLabelObject(u16 x, u16 y); +void RemoveMoneyLabelObject(void); #endif // GUARD_MONEY_H diff --git a/ld_script.txt b/ld_script.txt index 64a43d573b..37c8a3933a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -148,7 +148,6 @@ SECTIONS { asm/script_menu.o(.text); asm/naming_screen.o(.text); src/money.o(.text); - asm/money.o(.text); asm/contest_effect.o(.text); asm/record_mixing.o(.text); asm/secret_base.o(.text); @@ -386,7 +385,7 @@ SECTIONS { src/berry.o(.rodata); data/script_menu.o(.rodata); data/naming_screen.o(.rodata); - data/money.o(.rodata); + src/money.o(.rodata); data/contest_effect.o(.rodata); data/record_mixing.o(.rodata); data/secret_base.o(.rodata); diff --git a/src/coins.c b/src/coins.c index 84a79f5f2b..4ee601b22f 100644 --- a/src/coins.c +++ b/src/coins.c @@ -4,14 +4,13 @@ #include "window.h" #include "text_window.h" #include "string_util.h" +#include "menu.h" #define MAX_COINS 9999 EWRAM_DATA u8 sCoinsWindowId = 0; extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); -extern void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); -extern void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, s16 tileStart, s8 palette); extern void sub_819746C(u8 windowId, bool8 copyToVram); extern const u8 gText_Coins[]; diff --git a/src/money.c b/src/money.c index be64d96331..65a45b158a 100644 --- a/src/money.c +++ b/src/money.c @@ -1,8 +1,77 @@ #include "global.h" #include "money.h" +#include "event_data.h" +#include "string_util.h" +#include "text.h" +#include "menu.h" +#include "window.h" +#include "sprite.h" +#include "decompress.h" + +extern const u8 gText_PokedollarVar1[]; + +extern const u8 gMenuMoneyGfx[]; +extern const u8 gMenuMoneyPal[]; #define MAX_MONEY 999999 +EWRAM_DATA static u8 sMoneyBoxWindowId = 0; +EWRAM_DATA static u8 sMoneyLabelSpriteId = 0; + +#define MONEY_LABEL_TAG 0x2722 + +static const struct OamData sOamData_MoneyLabel = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_MoneyLabel[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_MoneyLabel[] = +{ + sSpriteAnim_MoneyLabel, +}; + +static const struct SpriteTemplate sSpriteTemplate_MoneyLabel = +{ + .tileTag = MONEY_LABEL_TAG, + .paletteTag = MONEY_LABEL_TAG, + .oam = &sOamData_MoneyLabel, + .anims = sSpriteAnimTable_MoneyLabel, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct CompressedSpriteSheet sSpriteSheet_MoneyLabel = +{ + .data = gMenuMoneyGfx, + .size = 256, + .tag = MONEY_LABEL_TAG, +}; + +static const struct CompressedSpritePalette sSpritePalette_MoneyLabel = +{ + .data = gMenuMoneyPal, + .tag = MONEY_LABEL_TAG +}; + u32 GetMoney(u32* moneyPtr) { return *moneyPtr ^ gSaveBlock2Ptr->encryptionKey; @@ -53,3 +122,79 @@ void SubtractMoney(u32* moneyPtr, u32 toSub) SetMoney(moneyPtr, toSet); } + +bool8 IsEnoughForCostInVar0x8005(void) +{ + return IsEnoughMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005); +} + +void SubtractMoneyFromVar0x8005(void) +{ + SubtractMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005); +} + +void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed) +{ + PrintMoneyAmount(windowId, 0x26, 1, amount, speed); +} + +void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed) +{ + u8 *txtPtr; + s32 strLength; + + ConvertIntToDecimalStringN(gStringVar1, amount, STR_CONV_MODE_LEFT_ALIGN, 6); + + strLength = 6 - StringLength(gStringVar1); + txtPtr = gStringVar4; + + while (strLength-- > 0) + *(txtPtr++) = 0x77; + + StringExpandPlaceholders(txtPtr, gText_PokedollarVar1); + PrintTextOnWindow(windowId, 1, gStringVar4, x, y, speed, NULL); +} + +void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount) +{ + SetWindowBorderStyle(windowId, FALSE, tileStart, pallete); + PrintMoneyAmountInMoneyBox(windowId, amount, 0); +} + +void ChangeAmountInMoneyBox(int amount) +{ + PrintMoneyAmountInMoneyBox(sMoneyBoxWindowId, amount, 0); +} + +void DrawMoneyBox(int amount, u8 x, u8 y) +{ + struct WindowTemplate template; + + SetWindowTemplateFields(&template, 0, x + 1, y + 1, 10, 2, 15, 8); + sMoneyBoxWindowId = AddWindow(&template); + FillWindowPixelBuffer(sMoneyBoxWindowId, 0); + PutWindowTilemap(sMoneyBoxWindowId); + CopyWindowToVram(sMoneyBoxWindowId, 1); + PrintMoneyAmountInMoneyBoxWithBorder(sMoneyBoxWindowId, 0x214, 14, amount); + AddMoneyLabelObject((8 * x) + 19, (8 * y) + 11); +} + +void HideMoneyBox(void) +{ + RemoveMoneyLabelObject(); + sub_8198070(sMoneyBoxWindowId, FALSE); + CopyWindowToVram(sMoneyBoxWindowId, 2); + RemoveWindow(sMoneyBoxWindowId); +} + +void AddMoneyLabelObject(u16 x, u16 y) +{ + LoadCompressedObjectPic(&sSpriteSheet_MoneyLabel); + LoadCompressedObjectPalette(&sSpritePalette_MoneyLabel); + sMoneyLabelSpriteId = CreateSprite(&sSpriteTemplate_MoneyLabel, x, y, 0); +} + +void RemoveMoneyLabelObject(void) +{ + DestroySpriteAndFreeResources(&gSprites[sMoneyLabelSpriteId]); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index d8cc646db6..1cd5a1a609 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1148,12 +1148,9 @@ gUnknown_02039F90: @ 2039F90 gUnknown_02039F94: @ 2039F94 .space 0x4 -gUnknown_02039F98: @ 2039F98 - .space 0x1 - -gUnknown_02039F99: @ 2039F99 - .space 0x3 - + .include "src/money.o" + + .align 2 gUnknown_02039F9C: @ 2039F9C .space 0x78 From eb4f195c19ecd8aa39f033146879707dc76298bf Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Sep 2017 08:37:15 +0200 Subject: [PATCH 047/182] Update songs.h Thanks to Jughead Jones, Wobb, Lunos, Bela and anyone else who helped. --- include/songs.h | 98 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 3 deletions(-) diff --git a/include/songs.h b/include/songs.h index afd26d683e..d828e40688 100644 --- a/include/songs.h +++ b/include/songs.h @@ -15,8 +15,8 @@ enum /*0x09*/ SE_KAIDAN, /*0x0A*/ SE_DANSA, /*0x0B*/ SE_JITENSYA, - /*0x0C*/ SE_KOUKA_L, - /*0x0D*/ SE_KOUKA_M, + /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because + /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move /*0x0E*/ SE_KOUKA_H, /*0x0F*/ SE_BOWA2, /*0x10*/ SE_POKE_DEAD, @@ -359,7 +359,24 @@ enum BGM_DAIGO, BGM_THANKFOR, BGM_END, - BGM_BATTLE27, // wild + /*0x1C9*/ BGM_BATTLE_FRONTIER, // human-readable names start here because we don't know the actual filenames + BGM_BATTLE_ARENA, + BGM_ME_BATTLE_POINTS, // ME_ as in messagebox? Used for KINOMI (berries) and stuff above + BGM_ME_MATCH_CALL, + BGM_BATTLE_PYRAMID, + BGM_BATTLE_PYRAMID_SUMMIT, + BGM_BATTLE_PALACE, + BGM_FANFA_RAYQUAZA, + BGM_BATTLE_TOWER, + BGM_ME_BATTLE_SYMBOL, + BGM_BATTLE_DOME_TOURNAMENT, + BGM_BATTLE_PIKE, + BGM_BATTLE_FACTORY, + BGM_BATTLE_LEGENDARY, + BGM_BATTLE_FRONTIER_BRAIN, + BGM_BATTLE_MEW, + BGM_BATTLE_DOME, // end of the human-readable names + /*0x1DA*/ BGM_BATTLE27, // wild BGM_BATTLE31, // aqua/magma grunt BGM_BATTLE20, // trainer BGM_BATTLE32, // gym leader @@ -369,6 +386,81 @@ enum BGM_BATTLE35, // rival BGM_BATTLE38, // elite four BGM_BATTLE30, // aqua/magma leader + /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again! + BGM_FRLG_GAMECORNER, + BGM_FRLG_ROCKET_HIDEOUT, + BGM_FRLG_GYM, + BGM_FRLG_JIGGLYPUFF, + BGM_FRLG_OPENING, + BGM_FRLG_TITLE, + BGM_FRLG_CINNABAR_ISLAND, + BGM_FRLG_LAVENDER_TOWN, + BGM_FRLG_HEALING_TEST, + BGM_FRLG_BICYCLE, + BGM_FRLG_SUSPICIOUS_EYE, + BGM_FRLG_GIRL_EYE, + BGM_FRLG_BOY_EYE, + BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME, + BGM_FRLG_VIRIDIAN_FOREST, + BGM_FRLG_MT_MOON, + BGM_FRLG_POKEMON_MANSION, + BGM_FRLG_CREDITS, + BGM_FRLG_ROUTE_1, + BGM_FRLG_ROUTE_24, + BGM_FRLG_ROUTE_3, + BGM_FRLG_ROUTE_11, + BGM_FRLG_INDIGO_PLATEAU, + BGM_FRLG_BATTLE_LEADER, + BGM_FRLG_BATTLE_TRAINER, + BGM_FRLG_BATTLE_WILD_POKEMON, + BGM_FRLG_BATTLE_CHAMPION, + BGM_FRLG_PALLET_TOWN, + BGM_FRLG_OAK_LAB, + BGM_FRLG_PROF_OAK, + BGM_FRLG_POKEMON_CENTER, + BGM_FRLG_SS_ANNE, + BGM_FRLG_SURF, + BGM_FRLG_POKEMON_TOWER, + BGM_FRLG_SILPH, + BGM_FRLG_CERULEAN_CITY, + BGM_FRLG_CELADON_CITY, + BGM_FRLG_KACHI_TRAINER, // KACHI used in RS test - victory + BGM_FRLG_KACHI_WILD_POKEMON, + BGM_FRLG_KACHI_LEADER, + BGM_FRLG_VERMILION_CITY, + BGM_FRLG_VIRIDIAN_CITY, + BGM_FRLG_RIVAL, + BGM_FRLG_RIVAL_POSTBATTLE, + BGM_FRLG_ME_POKEDEX_EVAL, + BGM_FRLG_ME_KEYITEM, + BGM_FRLG_FANFA_POKEMON_CAUGHT, + BGM_FRLG_FANFA_TRAINERCARD_PHOTO, + BGM_FRLG_GAMEFREAK_LOGO, + BGM_FRLG_CAUGHT_POKEMON, + BGM_FRLG_GAME_EXPLANATION_START, + BGM_FRLG_GAME_EXPLANATION_MIDDLE, + BGM_FRLG_GAME_EXPLANATION_END, + BGM_FRLG_POKEMON_JUMP, + BGM_FRLG_UNION_ROOM, + BGM_FRLG_POKEMON_NETWORK_CENTER, + BGM_FRLG_MYSTERY_GIFT, + BGM_FRLG_DODRIO_BERRY_PICK, + BGM_FRLG_MT_EMBER, + BGM_FRLG_TEACHY_TV_EPISODE, + BGM_FRLG_SEVII_ISLANDS, + BGM_FRLG_TANOBY_RUINS, + BGM_FRLG_ISLAND_ONE, + BGM_FRLG_ISLAND_FOUR, + BGM_FRLG_ISLAND_SIX, + BGM_FRLG_FLUTE, + BGM_FRLG_BATTLE_DEOXYS, + BGM_FRLG_BATTLE_MEWTWO, + BGM_FRLG_BATTLE_LEGENDARY, + BGM_FRLG_LEADER_EYE, + BGM_FRLG_DEOXYS_EYE, + BGM_FRLG_TRAINER_TOWER, + BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, + /*0x22E*/BGM_FRLG_TEACHY_TV, }; #endif // GUARD_SONGS_H From 7b72c8376250f1f417f21fda34348fd1268e23f7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Sep 2017 10:06:36 +0200 Subject: [PATCH 048/182] finish save.c --- asm/save.s | 164 -------------------------------------------------- ld_script.txt | 1 - src/save.c | 162 ++++++++++++++++++++++++++++--------------------- 3 files changed, 95 insertions(+), 232 deletions(-) delete mode 100644 asm/save.s diff --git a/asm/save.s b/asm/save.s deleted file mode 100644 index 825da0756d..0000000000 --- a/asm/save.s +++ /dev/null @@ -1,164 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_8153688 -sub_8153688: @ 8153688 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0xB - bls _081536A2 - b _081537C2 -_081536A2: - lsls r0, 2 - ldr r1, =_081536B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081536B4: - .4byte _081536E4 - .4byte _081536F4 - .4byte _081536FE - .4byte _0815371A - .4byte _0815372C - .4byte _08153742 - .4byte _08153758 - .4byte _08153762 - .4byte _08153778 - .4byte _0815378C - .4byte _08153796 - .4byte _081537A8 -_081536E4: - ldr r0, =gSoftResetDisabled - movs r1, 0x1 - strb r1, [r0] - movs r0, 0x1 - strh r0, [r4] - b _081537C2 - .pool -_081536F4: - bl sub_800ADF8 - movs r0, 0x2 - strh r0, [r4] - b _081537C2 -_081536FE: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _081537C2 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08153714 - bl save_serialize_map -_08153714: - movs r0, 0x3 - strh r0, [r4] - b _081537C2 -_0815371A: - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08153726 - bl sub_8076D5C -_08153726: - bl sub_8153380 - b _08153752 -_0815372C: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x5 - bne _081537C2 - movs r0, 0 - strh r0, [r4, 0x2] - strh r1, [r4] - b _081537C2 -_08153742: - bl sub_81533AC - lsls r0, 24 - cmp r0, 0 - beq _08153752 - movs r0, 0x6 - strh r0, [r4] - b _081537C2 -_08153752: - movs r0, 0x4 - strh r0, [r4] - b _081537C2 -_08153758: - bl sub_81533E0 - movs r0, 0x7 - strh r0, [r4] - b _081537C2 -_08153762: - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0815376E - bl sav2_gender2_inplace_and_xFE -_0815376E: - bl sub_800ADF8 - movs r0, 0x8 - strh r0, [r4] - b _081537C2 -_08153778: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _081537C2 - bl sub_8153408 - movs r0, 0x9 - strh r0, [r4] - b _081537C2 -_0815378C: - bl sub_800ADF8 - movs r0, 0xA - strh r0, [r4] - b _081537C2 -_08153796: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _081537C2 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _081537C2 -_081537A8: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _081537C2 - ldr r1, =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - adds r0, r2, 0 - bl DestroyTask -_081537C2: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8153688 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 64a43d573b..964a736675 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -200,7 +200,6 @@ SECTIONS { asm/roulette_util.o(.text); asm/cable_car_util.o(.text); src/save.o(.text); - asm/save.o(.text); asm/mystery_event_script.o(.text); asm/field_effect_helpers.o(.text); asm/contest_ai.o(.text); diff --git a/src/save.c b/src/save.c index 5ca8552470..aee20d451d 100644 --- a/src/save.c +++ b/src/save.c @@ -2,12 +2,15 @@ #include "gba/flash_internal.h" #include "save.h" #include "game_stat.h" +#include "task.h" -extern struct SaveSectionOffsets gSaveSectionOffsets[0xE]; extern struct SaveSectionLocation gRamSaveSectionLocations[0xE]; extern u8 gDecompressionBuffer[]; extern u32 gFlashMemoryPresent; extern u16 gUnknown_03006294; +extern bool8 gSoftResetDisabled; + +extern const struct SaveSectionOffsets gSaveSectionOffsets[0xE]; extern void DoSaveFailedScreen(u8); // save_failed_screen extern void LoadSerializedGame(void); // load_save @@ -576,84 +579,27 @@ u16 CalculateChecksum(void *data, u16 size) return ((checksum >> 16) + checksum); } -#ifdef NONMATCHING -// the initial allocation of the pointer and toAdd variable doesnt match up with the original function. however, forcing it is impossible since gRamSaveSectionLocations is loaded first. void UpdateSaveAddresses(void) { int i = 0; - gRamSaveSectionLocations[i].data = gSaveBlock2Ptr + gSaveSectionOffsets[0].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[0].size; - for(i = 1; i < 5; i++) + gRamSaveSectionLocations[i].data = (void*)(gSaveBlock2Ptr) + gSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + + for (i = 1; i < 5; i++) { - gRamSaveSectionLocations[i].data = gSaveBlock1Ptr + gSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].data = (void*)(gSaveBlock1Ptr) + gSaveSectionOffsets[i].toAdd; gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; } - for(i = 5; i < 14; i++) + for (i = 5; i < 14; i++) { - gRamSaveSectionLocations[i].data = gPokemonStoragePtr + gSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + gSaveSectionOffsets[i].toAdd; gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + + i++;i--; // needed to match } } -#else -__attribute__((naked)) -void UpdateSaveAddresses(void) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - ldr r3, =gRamSaveSectionLocations\n\ - ldr r0, =gSaveBlock2Ptr\n\ - ldr r2, =gSaveSectionOffsets\n\ - ldrh r1, [r2]\n\ - ldr r0, [r0]\n\ - adds r0, r1\n\ - str r0, [r3]\n\ - ldrh r0, [r2, 0x2]\n\ - strh r0, [r3, 0x4]\n\ - ldr r5, =gSaveBlock1Ptr\n\ - adds r3, 0x8\n\ - adds r2, 0x4\n\ - movs r4, 0x3\n\ -_081531AC:\n\ - ldrh r0, [r2]\n\ - ldr r1, [r5]\n\ - adds r1, r0\n\ - str r1, [r3]\n\ - ldrh r0, [r2, 0x2]\n\ - strh r0, [r3, 0x4]\n\ - adds r3, 0x8\n\ - adds r2, 0x4\n\ - subs r4, 0x1\n\ - cmp r4, 0\n\ - bge _081531AC\n\ - movs r4, 0x5\n\ - ldr r1, =gRamSaveSectionLocations\n\ - ldr r5, =gPokemonStoragePtr\n\ - ldr r0, =gSaveSectionOffsets\n\ - adds r3, r1, 0\n\ - adds r3, 0x28\n\ - adds r2, r0, 0\n\ - adds r2, 0x14\n\ -_081531D2:\n\ - ldrh r0, [r2]\n\ - ldr r1, [r5]\n\ - adds r1, r0\n\ - str r1, [r3]\n\ - ldrh r0, [r2, 0x2]\n\ - strh r0, [r3, 0x4]\n\ - adds r3, 0x8\n\ - adds r2, 0x4\n\ - adds r4, 0x1\n\ - cmp r4, 0xD\n\ - ble _081531D2\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -} -#endif extern u32 GetGameStat(u8 index); // rom4 extern void IncrementGameStat(u8 index); // rom4 @@ -894,3 +840,85 @@ u32 sub_8153634(u8 sector, u8* src) return 0xFF; return 1; } + +extern void save_serialize_map(void); +extern void sub_8076D5C(void); +extern void sav2_gender2_inplace_and_xFE(void); +extern void sub_800ADF8(void); +extern bool8 sub_800A520(void); + +void sub_8153688(u8 taskId) +{ + s16* taskData = gTasks[taskId].data; + + switch (taskData[0]) + { + case 0: + gSoftResetDisabled = TRUE; + taskData[0] = 1; + break; + case 1: + sub_800ADF8(); + taskData[0] = 2; + break; + case 2: + if (sub_800A520()) + { + if (taskData[2] == 0) + save_serialize_map(); + taskData[0] = 3; + } + break; + case 3: + if (taskData[2] == 0) + sub_8076D5C(); + sub_8153380(); + taskData[0] = 4; + break; + case 4: + if (++taskData[1] == 5) + { + taskData[1] = 0; + taskData[0] = 5; + } + break; + case 5: + if (sub_81533AC()) + taskData[0] = 6; + else + taskData[0] = 4; + break; + case 6: + sub_81533E0(); + taskData[0] = 7; + break; + case 7: + if (taskData[2] == 0) + sav2_gender2_inplace_and_xFE(); + sub_800ADF8(); + taskData[0] = 8; + break; + case 8: + if (sub_800A520()) + { + sub_8153408(); + taskData[0] = 9; + } + break; + case 9: + sub_800ADF8(); + taskData[0] = 10; + break; + case 10: + if (sub_800A520()) + taskData[0]++; + break; + case 11: + if (++taskData[1] > 5) + { + gSoftResetDisabled = FALSE; + DestroyTask(taskId); + } + break; + } +} From 5d56361973de99d20e099e787da6d587ffb8d35f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Sep 2017 11:02:18 +0200 Subject: [PATCH 049/182] finish pokemon 2 file --- asm/pokemon_2.s | 356 ------------------------------------------------ ld_script.txt | 1 - src/pokemon_2.c | 16 +-- 3 files changed, 4 insertions(+), 369 deletions(-) delete mode 100644 asm/pokemon_2.s diff --git a/asm/pokemon_2.s b/asm/pokemon_2.s deleted file mode 100644 index 17856f6d3e..0000000000 --- a/asm/pokemon_2.s +++ /dev/null @@ -1,356 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start CopyPlayerPartyMonToBattleData -CopyPlayerPartyMonToBattleData: @ 806B9FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0x64 - mov r5, r9 - muls r5, r0 - ldr r0, =gPlayerParty - adds r5, r0 - adds r0, r5, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - ldr r1, =gBattleMons - mov r8, r1 - movs r1, 0x58 - ldr r2, [sp, 0x14] - adds r4, r2, 0 - muls r4, r1 - mov r3, r8 - adds r6, r4, r3 - strh r0, [r6] - adds r0, r5, 0 - movs r1, 0xC - movs r2, 0 - bl GetMonData - strh r0, [r6, 0x2E] - movs r6, 0 - mov r0, r8 - adds r0, 0x24 - adds r7, r4, r0 -_0806BA4E: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - movs r2, 0 - bl GetMonData - movs r1, 0xC - add r1, r8 - mov r10, r1 - adds r1, r4, r1 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r5, 0 - movs r2, 0 - bl GetMonData - strb r0, [r7] - adds r7, 0x1 - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0806BA4E - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - movs r2, 0 - bl GetMonData - movs r2, 0xC - negs r2, r2 - add r2, r10 - mov r9, r2 - movs r1, 0x58 - ldr r3, [sp, 0x14] - adds r5, r3, 0 - muls r5, r1 - adds r7, r5, r2 - adds r1, r7, 0 - adds r1, 0x3B - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0 - bl GetMonData - adds r1, r7, 0 - adds r1, 0x2B - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x19 - movs r2, 0 - bl GetMonData - mov r1, r10 - adds r1, 0x38 - adds r1, r5, r1 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - movs r2, 0 - bl GetMonData - movs r6, 0x1F - ands r0, r6 - ldrb r2, [r7, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - movs r2, 0 - bl GetMonData - movs r1, 0x1F - mov r8, r1 - mov r2, r8 - ands r0, r2 - lsls r0, 5 - ldrh r2, [r7, 0x14] - ldr r1, =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r7, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - movs r2, 0 - bl GetMonData - ands r0, r6 - lsls r0, 2 - ldrb r2, [r7, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - movs r2, 0 - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [r7, 0x14] - ldr r2, =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [r7, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - movs r2, 0 - bl GetMonData - mov r3, r8 - ands r0, r3 - lsls r0, 4 - ldrh r2, [r7, 0x16] - ldr r1, =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r7, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - movs r2, 0 - bl GetMonData - ands r0, r6 - lsls r0, 1 - ldrb r2, [r7, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x17] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl GetMonData - mov r1, r10 - adds r1, 0x3C - adds r1, r5, r1 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0x37 - movs r2, 0 - bl GetMonData - mov r1, r10 - adds r1, 0x40 - adds r1, r5, r1 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - adds r1, r7, 0 - adds r1, 0x2A - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - movs r2, 0 - bl GetMonData - strh r0, [r7, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - movs r2, 0 - bl GetMonData - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r7, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - movs r2, 0 - bl GetMonData - lsls r0, 7 - ldrb r2, [r7, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl GetMonData - mov r1, r10 - adds r1, 0x48 - adds r1, r5, r1 - str r0, [r1] - ldr r2, =gBaseStats - ldrh r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - adds r1, r7, 0 - adds r1, 0x21 - strb r0, [r1] - ldrh r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x7] - adds r1, r7, 0 - adds r1, 0x22 - strb r0, [r1] - ldrh r0, [r7] - ldrb r1, [r7, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - adds r1, r7, 0 - adds r1, 0x20 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, r10 - adds r0, 0x24 - adds r0, r5, r0 - mov r1, sp - bl StringCopy10 - mov r2, r10 - adds r2, 0x30 - adds r2, r5, r2 - adds r0, r4, 0 - movs r1, 0x7 - bl GetMonData - ldr r0, [sp, 0x14] - bl GetBankSide - ldr r1, =gBattleStruct - lsls r0, 24 - lsrs r0, 23 - adds r0, 0xA8 - ldr r1, [r1] - adds r1, r0 - ldrh r0, [r7, 0x28] - strh r0, [r1] - movs r2, 0x6 - mov r1, r9 - movs r6, 0x7 - add r5, r10 - adds r0, r5, 0 - adds r0, 0x13 -_0806BCB2: - strb r2, [r0] - subs r0, 0x1 - subs r6, 0x1 - cmp r6, 0 - bge _0806BCB2 - movs r2, 0 - movs r0, 0x58 - ldr r3, [sp, 0x14] - muls r0, r3 - adds r1, 0x50 - adds r0, r1 - str r2, [r0] - ldr r0, [sp, 0x14] - bl sub_803FA70 - ldr r0, [sp, 0x14] - movs r1, 0 - bl sub_805EF84 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end CopyPlayerPartyMonToBattleData - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 64a43d573b..f2cbf5db1d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -71,7 +71,6 @@ SECTIONS { asm/pokemon_1.o(.text); src/calculate_base_damage.o(.text); src/pokemon_2.o(.text); - asm/pokemon_2.o(.text); asm/pokemon_item_effect.o(.text); src/pokemon_3.o(.text); asm/pokemon_3.o(.text); diff --git a/src/pokemon_2.c b/src/pokemon_2.c index cf073570da..1f50988302 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1308,10 +1308,9 @@ void sub_805EF84(u8 bank, bool8); extern struct BattlePokemon gBattleMons[4]; -/* - void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex) { + u16* hpSwitchout; s32 i; u8 nickname[POKEMON_NAME_LENGTH * 2]; @@ -1352,15 +1351,9 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex) GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname); StringCopy10(gBattleMons[bank].nickname, nickname); GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[bank].otName); - // ewram memes from Ruby return - #ifdef NONMATCHING - gBattleStruct->hpOnSwitchout[GetBankSide(bank)] = gBattleMons[bank].hp; - #else - { - u32 side = GetBankSide(bank); - *(u16*)((void*)(gBattleStruct) + side) = gBattleMons[bank].hp; - } - #endif // NONMATCHING + + hpSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(bank)]; + *hpSwitchout = gBattleMons[bank].hp; for (i = 0; i < 8; i++) gBattleMons[bank].statStages[i] = 6; @@ -1369,4 +1362,3 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex) sub_803FA70(bank); sub_805EF84(bank, FALSE); } -*/ From f5387cf6b18b57f3620c05d652a9cf5b8bc2f347 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Sep 2017 19:03:50 +0200 Subject: [PATCH 050/182] decompile metatile behav --- asm/battle_setup.s | 10 +- asm/decoration.s | 28 +- asm/field_control_avatar.s | 96 +- asm/field_door.s | 8 +- asm/field_effect_helpers.s | 6 +- asm/field_player_avatar.s | 4 +- asm/field_screen.s | 4 +- asm/field_tasks.s | 32 +- asm/fldeff_80F9BCC.s | 6 +- asm/fldeff_cut.s | 10 +- asm/item_use.s | 2 +- asm/metatile_behavior.s | 2610 ------------------- asm/pokenav.s | 2 +- asm/rom4.s | 6 +- asm/secret_base.s | 16 +- asm/wild_encounter.s | 12 +- data/{metatile_behavior.s => rom_8486FEC.s} | 4 +- include/metatile_behavior.h | 156 +- include/metatile_behaviors.h | 179 ++ ld_script.txt | 5 +- src/field_map_obj.c | 2 +- src/metatile_behavior.c | 1436 ++++++++++ 22 files changed, 1889 insertions(+), 2745 deletions(-) delete mode 100644 asm/metatile_behavior.s rename data/{metatile_behavior.s => rom_8486FEC.s} (60%) create mode 100644 include/metatile_behaviors.h create mode 100644 src/metatile_behavior.c diff --git a/asm/battle_setup.s b/asm/battle_setup.s index 752e4adf14..c2c762e96b 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -704,7 +704,7 @@ _080B0C64: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089588 + bl MetatileBehavior_IsMB_0B lsls r0, 24 cmp r0, 0 beq _080B0C78 @@ -734,7 +734,7 @@ _080B0C9C: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_808962C + bl MetatileBehavior_IsDeepOrOceanWater lsls r0, 24 cmp r0, 0 bne _080B0CF2 @@ -744,7 +744,7 @@ _080B0C9C: cmp r0, 0 bne _080B0CE0 adds r0, r4, 0 - bl sub_808959C + bl MetatileBehavior_IsMountain lsls r0, 24 cmp r0, 0 beq _080B0CC8 @@ -757,7 +757,7 @@ _080B0CC8: cmp r0, 0 beq _080B0CF6 adds r0, r4, 0 - bl sub_80894D4 + bl MetatileBehavior_GetBridgeSth lsls r0, 24 cmp r0, 0 beq _080B0CE4 @@ -766,7 +766,7 @@ _080B0CE0: b _080B0D1A _080B0CE4: adds r0, r4, 0 - bl sub_80894AC + bl MetatileBehavior_IsBridge lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/decoration.s b/asm/decoration.s index 9b65c7c79b..89bfbe3bf9 100644 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -2222,7 +2222,7 @@ _08127C0A: lsls r4, r0, 16 lsls r0, r4, 8 lsrs r0, 24 - bl sub_80892D8 + bl MetatileBehavior_IsMB_B9 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2257,7 +2257,7 @@ _08127C64: bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8089328 + bl MetatileBehavior_IsMB_B7 lsls r0, 24 lsrs r0, 24 movs r6, 0x1 @@ -3189,7 +3189,7 @@ sub_8128484: @ 8128484 lsrs r0, 24 lsls r1, 16 lsrs r4, r1, 16 - bl sub_80892C4 + bl MetatileBehavior_IsMB_B3 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3257,7 +3257,7 @@ sub_81284F4: @ 81284F4 lsls r0, r6, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_80892C4 + bl MetatileBehavior_IsMB_B3 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3266,7 +3266,7 @@ sub_81284F4: @ 81284F4 cmp r0, 0x21 bne _08128522 adds r0, r4, 0 - bl sub_8089378 + bl MetatileBehavior_IsMB_C2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3274,7 +3274,7 @@ sub_81284F4: @ 81284F4 _08128522: lsls r0, r6, 24 lsrs r0, 24 - bl sub_8089314 + bl MetatileBehavior_IsNormal lsls r0, 24 cmp r0, 0 beq _08128534 @@ -3520,7 +3520,7 @@ _081286B8: adds r5, r1, 0 ands r5, r0 adds r0, r4, 0 - bl sub_8089314 + bl MetatileBehavior_IsNormal lsls r0, 24 cmp r0, 0 bne _08128724 @@ -3625,12 +3625,12 @@ _08128790: adds r5, r1, 0 ands r5, r0 adds r0, r4, 0 - bl sub_8089314 + bl MetatileBehavior_IsNormal lsls r0, 24 cmp r0, 0 bne _081287F2 adds r0, r4, 0 - bl sub_8089328 + bl MetatileBehavior_IsMB_B7 lsls r0, 24 cmp r0, 0 bne _081287F2 @@ -3707,7 +3707,7 @@ _08128868: bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8089328 + bl MetatileBehavior_IsMB_B7 lsls r0, 24 cmp r0, 0 beq _0812890C @@ -3772,7 +3772,7 @@ _081288D8: bne _08128910 _08128900: adds r0, r4, 0 - bl sub_8089364 + bl MetatileBehavior_IsMB_C3 lsls r0, 24 cmp r0, 0 bne _0812891C @@ -3781,7 +3781,7 @@ _0812890C: b _0812893E _08128910: adds r0, r4, 0 - bl sub_8089350 + bl MetatileBehavior_IsMB_B5 lsls r0, 24 cmp r0, 0 beq _08128900 @@ -6182,13 +6182,13 @@ _08129CA8: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089288 + bl MetatileBehavior_IsSecretBasePC lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08129CDE adds r0, r4, 0 - bl sub_8089404 + bl MetatileBehavior_IsMB_C5 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 5c515ae3dc..0a71a6f497 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -51,7 +51,7 @@ process_overworld_input: @ 809BF08 bl cur_mapdata_block_role_at_player_pos lsls r0, 24 lsrs r0, 24 - bl sub_808904C + bl MetatileBehavior_IsMoveTile lsls r0, 24 lsrs r7, r0, 24 cmp r6, 0x2 @@ -831,7 +831,7 @@ _0809C55C: .pool _0809C574: adds r0, r5, 0 - bl is_tile_x8B + bl MetatileBehavior_IsClosedSootopolisGymDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -841,7 +841,7 @@ _0809C574: .pool _0809C58C: adds r0, r5, 0 - bl is_tile_xEA + bl MetatileBehavior_IsUnknownClosedDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -851,7 +851,7 @@ _0809C58C: .pool _0809C5A4: adds r0, r5, 0 - bl is_tile_x84 + bl MetatileBehavior_IsCableBoxResults1 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -859,7 +859,7 @@ _0809C5A4: b _0809C6E4 _0809C5B4: adds r0, r5, 0 - bl is_tile_x87 + bl MetatileBehavior_IsPokeblockFeeder lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -869,7 +869,7 @@ _0809C5B4: .pool _0809C5CC: adds r0, r5, 0 - bl is_tile_x8C + bl MetatileBehavior_IsTrickHousePuzzleDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -879,7 +879,7 @@ _0809C5CC: .pool _0809C5E4: adds r0, r5, 0 - bl is_tile_x85 + bl MetatileBehavior_IsRegionMap lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -889,7 +889,7 @@ _0809C5E4: .pool _0809C5FC: adds r0, r5, 0 - bl sub_8089A1C + bl MetatileBehavior_IsRunningShoesInstruction lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -899,7 +899,7 @@ _0809C5FC: .pool _0809C614: adds r0, r5, 0 - bl sub_8089A30 + bl MetatileBehavior_IsPictureBookShelf lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -909,7 +909,7 @@ _0809C614: .pool _0809C62C: adds r0, r5, 0 - bl sub_8089A44 + bl MetatileBehavior_IsBookShelf lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -919,7 +919,7 @@ _0809C62C: .pool _0809C644: adds r0, r5, 0 - bl sub_8089A58 + bl MetatileBehavior_IsPokeCenterBookShelf lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -929,7 +929,7 @@ _0809C644: .pool _0809C65C: adds r0, r5, 0 - bl sub_8089A6C + bl MetatileBehavior_IsVase lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -939,7 +939,7 @@ _0809C65C: .pool _0809C674: adds r0, r5, 0 - bl sub_8089A80 + bl MetatileBehavior_IsTrashCan lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -949,7 +949,7 @@ _0809C674: .pool _0809C68C: adds r0, r5, 0 - bl sub_8089A94 + bl MetatileBehavior_IsShopShelf lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -959,7 +959,7 @@ _0809C68C: .pool _0809C6A4: adds r0, r5, 0 - bl sub_8089AA8 + bl MetatileBehavior_IsBlueprint lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -970,7 +970,7 @@ _0809C6A4: _0809C6BC: adds r0, r5, 0 adds r1, r4, 0 - bl sub_8089AD0 + bl MetatileBehavior_IsPlayerFacingWirelessBoxResults lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -981,7 +981,7 @@ _0809C6BC: _0809C6D4: adds r0, r5, 0 adds r1, r4, 0 - bl sub_8089AEC + bl MetatileBehavior_IsCableBoxResults2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1023,7 +1023,7 @@ _0809C71C: cmp r4, r0 bne _0809C7D0 adds r0, r5, 0 - bl sub_8089288 + bl MetatileBehavior_IsSecretBasePC lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1033,7 +1033,7 @@ _0809C71C: .pool _0809C74C: adds r0, r5, 0 - bl sub_808929C + bl MetatileBehavior_IsSecretBaseRegisterPC lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1043,7 +1043,7 @@ _0809C74C: .pool _0809C764: adds r0, r5, 0 - bl sub_80893DC + bl MetatileBehavior_IsMB_BF lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1053,7 +1053,7 @@ _0809C764: .pool _0809C77C: adds r0, r5, 0 - bl sub_80893F0 + bl MetatileBehavior_IsSecretBaseTvOrShield lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1063,7 +1063,7 @@ _0809C77C: .pool _0809C794: adds r0, r5, 0 - bl sub_80892EC + bl MetatileBehavior_IsMB_C6 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1072,7 +1072,7 @@ _0809C794: b _0809C7E2 _0809C7A8: adds r0, r5, 0 - bl sub_8089364 + bl MetatileBehavior_IsMB_C3 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1081,7 +1081,7 @@ _0809C7A8: b _0809C7E2 _0809C7BC: adds r0, r5, 0 - bl sub_8089350 + bl MetatileBehavior_IsMB_B5 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1090,7 +1090,7 @@ _0809C7BC: b _0809C7E2 _0809C7D0: adds r0, r5, 0 - bl sub_8089300 + bl MetatileBehavior_IsSecretBasePoster lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1297,7 +1297,7 @@ sub_809C96C: @ 809C96C lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089918 + bl MetatileBehavior_IsCrackedFloorHole lsls r0, 24 cmp r0, 0 beq _0809C988 @@ -1306,7 +1306,7 @@ sub_809C96C: @ 809C96C .pool _0809C988: adds r0, r4, 0 - bl sub_8089ABC + bl MetatileBehavior_IsBattlePyramidWarp lsls r0, 24 cmp r0, 0 beq _0809C9A4 @@ -1318,7 +1318,7 @@ _0809C996: .pool _0809C9A4: adds r0, r4, 0 - bl sub_80893C8 + bl MetatileBehavior_IsSecretBaseGlitterMat lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1327,7 +1327,7 @@ _0809C9A4: b _0809C9E8 _0809C9B8: adds r0, r4, 0 - bl sub_80893B4 + bl MetatileBehavior_IsSecretBaseSoundMat lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1376,7 +1376,7 @@ _0809CA04: bne _0809CAF8 lsls r0, r4, 24 lsrs r0, 24 - bl sub_808904C + bl MetatileBehavior_IsMoveTile lsls r0, 24 cmp r0, 0 bne _0809CAF8 @@ -1719,7 +1719,7 @@ sub_809CC9C: @ 809CC9C .pool _0809CCF8: adds r0, r4, 0 - bl sub_8089870 + bl MetatileBehavior_IsLavaridgeB1FWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1729,7 +1729,7 @@ _0809CCF8: b _0809CD8C _0809CD0E: adds r0, r4, 0 - bl is_role_x68 + bl MetatileBehavior_IsLavaridge1FWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1749,7 +1749,7 @@ _0809CD24: b _0809CD8C _0809CD3A: adds r0, r4, 0 - bl sub_80898AC + bl MetatileBehavior_IsWarpOrBridge lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1759,7 +1759,7 @@ _0809CD3A: b _0809CD8C _0809CD50: adds r0, r4, 0 - bl sub_8089904 + bl MetatileBehavior_IsMtPyreHole lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1771,7 +1771,7 @@ _0809CD50: .pool _0809CD6C: adds r0, r4, 0 - bl sub_80898C0 + bl MetatileBehavior_IsMossdeepGymWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1797,7 +1797,7 @@ is_warp_tile: @ 809CD94 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl is_tile_x69_2_warp_door + bl MetatileBehavior_IsWarpDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1815,19 +1815,19 @@ is_warp_tile: @ 809CD94 cmp r0, 0x1 beq _0809CE2A adds r0, r4, 0 - bl sub_8088F58 + bl MetatileBehavior_IsNonAnimDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0809CE2A adds r0, r4, 0 - bl sub_8089870 + bl MetatileBehavior_IsLavaridgeB1FWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0809CE2A adds r0, r4, 0 - bl is_role_x68 + bl MetatileBehavior_IsLavaridge1FWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1839,19 +1839,19 @@ is_warp_tile: @ 809CD94 cmp r0, 0x1 beq _0809CE2A adds r0, r4, 0 - bl sub_8089904 + bl MetatileBehavior_IsMtPyreHole lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0809CE2A adds r0, r4, 0 - bl sub_80898C0 + bl MetatileBehavior_IsMossdeepGymWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0809CE2A adds r0, r4, 0 - bl sub_80898AC + bl MetatileBehavior_IsWarpOrBridge lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2048,7 +2048,7 @@ map_warp_consider_2_to_inside: @ 809CF78 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089210 + bl MetatileBehavior_IsSecretBaseOpen lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2062,7 +2062,7 @@ map_warp_consider_2_to_inside: @ 809CF78 .pool _0809CFB0: adds r0, r4, 0 - bl is_tile_x69_2_warp_door + bl MetatileBehavior_IsWarpDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2322,7 +2322,7 @@ dive_warp: @ 809D16C bne _0809D1A4 lsls r0, r5, 24 lsrs r0, 24 - bl sub_80895D0 + bl MetatileBehavior_IsUnableToEmerge lsls r0, 24 cmp r0, 0 bne _0809D1A4 @@ -2340,7 +2340,7 @@ dive_warp: @ 809D16C _0809D1A4: lsls r0, r5, 24 lsrs r0, 24 - bl sub_80895B0 + bl MetatileBehavior_IsDiveable lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2394,7 +2394,7 @@ sub_809D1E8: @ 809D1E8 cmp r0, 0x5 bne _0809D244 adds r0, r5, 0 - bl sub_80895D0 + bl MetatileBehavior_IsUnableToEmerge lsls r0, 24 cmp r0, 0 bne _0809D244 @@ -2417,7 +2417,7 @@ sub_809D1E8: @ 809D1E8 .pool _0809D244: adds r0, r5, 0 - bl sub_80895B0 + bl MetatileBehavior_IsDiveable lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/field_door.s b/asm/field_door.s index 987f0bd8c4..4602158df2 100644 --- a/asm/field_door.s +++ b/asm/field_door.s @@ -589,7 +589,7 @@ sub_808A854: @ 808A854 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8088EFC + bl MetatileBehavior_IsDoor lsls r0, 24 cmp r0, 0 beq _0808A876 @@ -612,7 +612,7 @@ sub_808A880: @ 808A880 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8088EFC + bl MetatileBehavior_IsDoor lsls r0, 24 cmp r0, 0 beq _0808A8A2 @@ -635,7 +635,7 @@ sub_808A8AC: @ 808A8AC bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8088EFC + bl MetatileBehavior_IsDoor lsls r0, 24 cmp r0, 0 beq _0808A8D8 @@ -664,7 +664,7 @@ task_overworld_door_add_if_role_69_for_opening_door_at: @ 808A8E4 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8088EFC + bl MetatileBehavior_IsDoor lsls r0, 24 cmp r0, 0 beq _0808A910 diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 76ba35fd2c..223a27937e 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -130,13 +130,13 @@ npc_pal_op: @ 8153FAC cmp r0, 0 bne _08154008 ldrb r0, [r5, 0x1F] - bl sub_80894D4 + bl MetatileBehavior_GetBridgeSth lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _08153FEE ldrb r0, [r5, 0x1E] - bl sub_80894D4 + bl MetatileBehavior_GetBridgeSth lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -702,7 +702,7 @@ _08154412: cmp r0, r1 bne _08154490 ldrb r0, [r4, 0x1E] - bl sub_8088E64 + bl MetatileBehavior_IsPokeGrass lsls r0, 24 cmp r0, 0 bne _08154490 diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index aaca9b2ba9..9f47c0a557 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -1223,7 +1223,7 @@ sub_808B238: @ 808B238 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8088F58 + bl MetatileBehavior_IsNonAnimDoor lsls r0, 24 cmp r0, 0 bne _0808B2D8 @@ -2255,7 +2255,7 @@ PlayCollisionSoundIfNotFacingWarp: @ 808B9EC bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl is_tile_x69_2_warp_door + bl MetatileBehavior_IsWarpDoor lsls r0, 24 cmp r0, 0 bne _0808BA54 diff --git a/asm/field_screen.s b/asm/field_screen.s index 13f418f172..0de68b86b6 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -8248,7 +8248,7 @@ sub_80AF334: @ 80AF334 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8088EFC + bl MetatileBehavior_IsDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -8258,7 +8258,7 @@ sub_80AF334: @ 80AF334 .pool _080AF36C: adds r0, r4, 0 - bl sub_8088F58 + bl MetatileBehavior_IsNonAnimDoor lsls r0, 24 lsrs r0, 24 ldr r1, =task_map_chg_seq_0807E2CC diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 26761b8d19..6f8174fd81 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -221,7 +221,7 @@ sub_809DA30: @ 809DA30 lsls r1, 24 lsrs r4, r1, 24 adds r0, r4, 0 - bl sub_8089764 + bl MetatileBehavior_IsPacifilogVerticalLog1 lsls r0, 24 cmp r0, 0 beq _0809DA48 @@ -229,7 +229,7 @@ sub_809DA30: @ 809DA30 b _0809DA80 _0809DA48: adds r0, r4, 0 - bl sub_8089778 + bl MetatileBehavior_IsPacifilogVerticalLog2 lsls r0, 24 cmp r0, 0 beq _0809DA5A @@ -238,7 +238,7 @@ _0809DA48: b _0809DA80 _0809DA5A: adds r0, r4, 0 - bl sub_808978C + bl MetatileBehavior_IsPacifilogHorizontalLog1 lsls r0, 24 cmp r0, 0 beq _0809DA6C @@ -247,7 +247,7 @@ _0809DA5A: b _0809DA80 _0809DA6C: adds r0, r4, 0 - bl sub_80897A0 + bl MetatileBehavior_IsPacifilogHorizontalLog2 lsls r0, 24 cmp r0, 0 bne _0809DA7C @@ -414,7 +414,7 @@ sub_809DB7C: @ 809DB7C lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089764 + bl MetatileBehavior_IsPacifilogVerticalLog1 lsls r0, 24 cmp r0, 0 beq _0809DBC0 @@ -427,7 +427,7 @@ _0809DBBC: b _0809DC08 _0809DBC0: adds r0, r4, 0 - bl sub_8089778 + bl MetatileBehavior_IsPacifilogVerticalLog2 lsls r0, 24 cmp r0, 0 beq _0809DBD8 @@ -439,7 +439,7 @@ _0809DBC0: b _0809DBBC _0809DBD8: adds r0, r4, 0 - bl sub_808978C + bl MetatileBehavior_IsPacifilogHorizontalLog1 lsls r0, 24 cmp r0, 0 beq _0809DBF0 @@ -451,7 +451,7 @@ _0809DBD8: b _0809DBBC _0809DBF0: adds r0, r4, 0 - bl sub_80897A0 + bl MetatileBehavior_IsPacifilogHorizontalLog2 lsls r0, 24 cmp r0, 0 beq _0809DC06 @@ -496,7 +496,7 @@ sub_809DC18: @ 809DC18 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089764 + bl MetatileBehavior_IsPacifilogVerticalLog1 lsls r0, 24 cmp r0, 0 beq _0809DC5C @@ -509,7 +509,7 @@ _0809DC58: b _0809DCA4 _0809DC5C: adds r0, r4, 0 - bl sub_8089778 + bl MetatileBehavior_IsPacifilogVerticalLog2 lsls r0, 24 cmp r0, 0 beq _0809DC74 @@ -521,7 +521,7 @@ _0809DC5C: b _0809DC58 _0809DC74: adds r0, r4, 0 - bl sub_808978C + bl MetatileBehavior_IsPacifilogHorizontalLog1 lsls r0, 24 cmp r0, 0 beq _0809DC8C @@ -533,7 +533,7 @@ _0809DC74: b _0809DC58 _0809DC8C: adds r0, r4, 0 - bl sub_80897A0 + bl MetatileBehavior_IsPacifilogHorizontalLog2 lsls r0, 24 cmp r0, 0 beq _0809DCA2 @@ -1326,7 +1326,7 @@ _0809E29A: lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 - bl sub_8089604 + bl MetatileBehavior_IsThinIce lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1341,7 +1341,7 @@ _0809E29A: .pool _0809E2E0: adds r0, r4, 0 - bl sub_8089618 + bl MetatileBehavior_IsCrackedIce lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1630,7 +1630,7 @@ _0809E53E: lsls r0, r6, 24 lsrs r6, r0, 24 adds r0, r6, 0 - bl sub_8089918 + bl MetatileBehavior_IsCrackedFloorHole lsls r0, 24 cmp r0, 0 beq _0809E556 @@ -1658,7 +1658,7 @@ _0809E572: ldrh r0, [r4] strh r0, [r5, 0x6] adds r0, r6, 0 - bl sub_808992C + bl MetatileBehavior_IsCrackedFloor lsls r0, 24 cmp r0, 0 beq _0809E5D2 diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s index 3bc6677540..3ad2a398bd 100644 --- a/asm/fldeff_80F9BCC.s +++ b/asm/fldeff_80F9BCC.s @@ -584,7 +584,7 @@ sub_80FA004: @ 80FA004 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_808923C + bl MetatileBehavior_IsSecretBaseCave lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -599,7 +599,7 @@ sub_80FA004: @ 80FA004 .pool _080FA070: adds r0, r4, 0 - bl sub_808925C + bl MetatileBehavior_IsSecretBaseTree lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -614,7 +614,7 @@ _080FA070: .pool _080FA0A0: adds r0, r4, 0 - bl is_tile_x98 + bl MetatileBehavior_IsSecretBaseShrub lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index ce7e79de83..7f67185a98 100755 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -130,7 +130,7 @@ _080D37F6: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8088E64 + bl MetatileBehavior_IsPokeGrass lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -175,7 +175,7 @@ _080D3890: movs r0, 0x1 strb r0, [r1] adds r0, r4, 0 - bl sub_80899F8 + bl MetatileBehavior_IsCuttableGrass lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x1 @@ -309,7 +309,7 @@ _080D395A: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8088E64 + bl MetatileBehavior_IsPokeGrass lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -339,7 +339,7 @@ _080D39F4: b _080D395A _080D39F8: adds r0, r4, 0 - bl sub_80899F8 + bl MetatileBehavior_IsCuttableGrass lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x1 @@ -1344,7 +1344,7 @@ sub_80D423C: @ 80D423C bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl MetatileBehavior_IsLongGrass2 + bl MetatileBehavior_IsLongGrass_Duplicate lsls r0, 24 cmp r0, 0 beq _080D42AE diff --git a/asm/item_use.s b/asm/item_use.s index 200b0e62f7..42b2d8bc0d 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -464,7 +464,7 @@ _080FD3EC: _080FD40C: lsls r0, r6, 24 lsrs r0, 24 - bl sub_8089510 + bl MetatileBehavior_8089510 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/metatile_behavior.s b/asm/metatile_behavior.s deleted file mode 100644 index 30b0f43484..0000000000 --- a/asm/metatile_behavior.s +++ /dev/null @@ -1,2610 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ShouldDoJumpLandingDustEffect -ShouldDoJumpLandingDustEffect: @ 8088DEC - movs r0, 0x1 - bx lr - thumb_func_end ShouldDoJumpLandingDustEffect - - thumb_func_start sub_8088DF0 -sub_8088DF0: @ 8088DF0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_08486EFC - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08088E0C - movs r0, 0 - b _08088E0E - .pool -_08088E0C: - movs r0, 0x1 -_08088E0E: - pop {r1} - bx r1 - thumb_func_end sub_8088DF0 - - thumb_func_start MetatileBehavior_IsJumpEast -MetatileBehavior_IsJumpEast: @ 8088E14 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x38 - beq _08088E22 - movs r0, 0 - b _08088E24 -_08088E22: - movs r0, 0x1 -_08088E24: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpEast - - thumb_func_start MetatileBehavior_IsJumpWest -MetatileBehavior_IsJumpWest: @ 8088E28 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x39 - beq _08088E36 - movs r0, 0 - b _08088E38 -_08088E36: - movs r0, 0x1 -_08088E38: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpWest - - thumb_func_start MetatileBehavior_IsJumpNorth -MetatileBehavior_IsJumpNorth: @ 8088E3C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3A - beq _08088E4A - movs r0, 0 - b _08088E4C -_08088E4A: - movs r0, 0x1 -_08088E4C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpNorth - - thumb_func_start MetatileBehavior_IsJumpSouth -MetatileBehavior_IsJumpSouth: @ 8088E50 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - beq _08088E5E - movs r0, 0 - b _08088E60 -_08088E5E: - movs r0, 0x1 -_08088E60: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpSouth - - thumb_func_start sub_8088E64 -sub_8088E64: @ 8088E64 - push {lr} - lsls r0, 24 - movs r1, 0xFE - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08088E78 - movs r0, 0 - b _08088E7A -_08088E78: - movs r0, 0x1 -_08088E7A: - pop {r1} - bx r1 - thumb_func_end sub_8088E64 - - thumb_func_start MetatileBehavior_IsSandOrDeepSand -MetatileBehavior_IsSandOrDeepSand: @ 8088E80 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x21 - beq _08088E8E - cmp r0, 0x6 - bne _08088E92 -_08088E8E: - movs r0, 0x1 - b _08088E94 -_08088E92: - movs r0, 0 -_08088E94: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSandOrDeepSand - - thumb_func_start MetatileBehavior_IsDeepSand -MetatileBehavior_IsDeepSand: @ 8088E98 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _08088EA6 - movs r0, 0 - b _08088EA8 -_08088EA6: - movs r0, 0x1 -_08088EA8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsDeepSand - - thumb_func_start MetatileBehavior_IsReflective -MetatileBehavior_IsReflective: @ 8088EAC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _08088ECA - cmp r0, 0x16 - beq _08088ECA - cmp r0, 0x1A - beq _08088ECA - cmp r0, 0x20 - beq _08088ECA - cmp r0, 0x14 - beq _08088ECA - cmp r0, 0x2B - bne _08088ECE -_08088ECA: - movs r0, 0x1 - b _08088ED0 -_08088ECE: - movs r0, 0 -_08088ED0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsReflective - - thumb_func_start MetatileBehavior_IsIce -MetatileBehavior_IsIce: @ 8088ED4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x20 - beq _08088EE2 - movs r0, 0 - b _08088EE4 -_08088EE2: - movs r0, 0x1 -_08088EE4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIce - - thumb_func_start is_tile_x69_2_warp_door -is_tile_x69_2_warp_door: @ 8088EE8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x69 - beq _08088EF6 - movs r0, 0 - b _08088EF8 -_08088EF6: - movs r0, 0x1 -_08088EF8: - pop {r1} - bx r1 - thumb_func_end is_tile_x69_2_warp_door - - thumb_func_start sub_8088EFC -sub_8088EFC: @ 8088EFC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8D - beq _08088F0A - cmp r0, 0x69 - bne _08088F0E -_08088F0A: - movs r0, 0x1 - b _08088F10 -_08088F0E: - movs r0, 0 -_08088F10: - pop {r1} - bx r1 - thumb_func_end sub_8088EFC - - thumb_func_start MetatileBehavior_IsEscalator -MetatileBehavior_IsEscalator: @ 8088F14 - push {lr} - lsls r0, 24 - movs r1, 0x96 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08088F28 - movs r0, 0 - b _08088F2A -_08088F28: - movs r0, 0x1 -_08088F2A: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEscalator - - thumb_func_start sub_8088F30 -sub_8088F30: @ 8088F30 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _08088F3E - movs r0, 0 - b _08088F40 -_08088F3E: - movs r0, 0x1 -_08088F40: - pop {r1} - bx r1 - thumb_func_end sub_8088F30 - - thumb_func_start MetatileBehavior_IsLadder -MetatileBehavior_IsLadder: @ 8088F44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x61 - beq _08088F52 - movs r0, 0 - b _08088F54 -_08088F52: - movs r0, 0x1 -_08088F54: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLadder - - thumb_func_start sub_8088F58 -sub_8088F58: @ 8088F58 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x60 - beq _08088F6A - cmp r0, 0x6C - beq _08088F6A - cmp r0, 0x6E - bne _08088F6E -_08088F6A: - movs r0, 0x1 - b _08088F70 -_08088F6E: - movs r0, 0 -_08088F70: - pop {r1} - bx r1 - thumb_func_end sub_8088F58 - - thumb_func_start sub_8088F74 -sub_8088F74: @ 8088F74 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6E - beq _08088F82 - movs r0, 0 - b _08088F84 -_08088F82: - movs r0, 0x1 -_08088F84: - pop {r1} - bx r1 - thumb_func_end sub_8088F74 - - thumb_func_start MetatileBehavior_IsSurfableWaterOrUnderwater -MetatileBehavior_IsSurfableWaterOrUnderwater: @ 8088F88 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_08486EFC - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08088FA4 - movs r0, 0 - b _08088FA6 - .pool -_08088FA4: - movs r0, 0x1 -_08088FA6: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSurfableWaterOrUnderwater - - thumb_func_start MetatileBehavior_IsEastArrowWarp -MetatileBehavior_IsEastArrowWarp: @ 8088FAC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x62 - beq _08088FBA - movs r0, 0 - b _08088FBC -_08088FBA: - movs r0, 0x1 -_08088FBC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEastArrowWarp - - thumb_func_start MetatileBehavior_IsWestArrowWarp -MetatileBehavior_IsWestArrowWarp: @ 8088FC0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x63 - beq _08088FCE - movs r0, 0 - b _08088FD0 -_08088FCE: - movs r0, 0x1 -_08088FD0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWestArrowWarp - - thumb_func_start MetatileBehavior_IsNorthArrowWarp -MetatileBehavior_IsNorthArrowWarp: @ 8088FD4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x64 - beq _08088FE2 - cmp r0, 0x1B - bne _08088FE6 -_08088FE2: - movs r0, 0x1 - b _08088FE8 -_08088FE6: - movs r0, 0 -_08088FE8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsNorthArrowWarp - - thumb_func_start MetatileBehavior_IsSouthArrowWarp -MetatileBehavior_IsSouthArrowWarp: @ 8088FEC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x65 - beq _08088FFE - cmp r0, 0x6D - beq _08088FFE - cmp r0, 0x1C - bne _08089002 -_08088FFE: - movs r0, 0x1 - b _08089004 -_08089002: - movs r0, 0 -_08089004: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSouthArrowWarp - - thumb_func_start sub_8089008 -sub_8089008: @ 8089008 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - adds r0, r4, 0 - bl MetatileBehavior_IsEastArrowWarp - lsls r0, 24 - cmp r0, 0 - bne _08089040 - adds r0, r4, 0 - bl MetatileBehavior_IsWestArrowWarp - lsls r0, 24 - cmp r0, 0 - bne _08089040 - adds r0, r4, 0 - bl MetatileBehavior_IsNorthArrowWarp - lsls r0, 24 - cmp r0, 0 - bne _08089040 - adds r0, r4, 0 - bl MetatileBehavior_IsSouthArrowWarp - lsls r0, 24 - cmp r0, 0 - beq _08089042 -_08089040: - movs r5, 0x1 -_08089042: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8089008 - - thumb_func_start sub_808904C -sub_808904C: @ 808904C - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xC0 - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x8 - bls _08089082 - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08089082 - cmp r1, 0xD0 - beq _08089082 - cmp r1, 0xD2 - beq _08089082 - cmp r1, 0x13 - beq _08089082 - cmp r1, 0x20 - beq _08089082 - cmp r1, 0xBB - beq _08089082 - cmp r1, 0xBC - bne _08089086 -_08089082: - movs r0, 0x1 - b _08089088 -_08089086: - movs r0, 0 -_08089088: - pop {r1} - bx r1 - thumb_func_end sub_808904C - - thumb_func_start MetatileBehavior_IsIce_2 -@ bool8 MetatileBehavior_IsIce_2(u8 metatileBehavior) -MetatileBehavior_IsIce_2: @ 808908C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x20 - beq _0808909A - movs r0, 0 - b _0808909C -_0808909A: - movs r0, 0x1 -_0808909C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIce_2 - - thumb_func_start MetatileBehavior_IsTrickHouseSlipperyFloor -@ bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 metatileBehavior) -MetatileBehavior_IsTrickHouseSlipperyFloor: @ 80890A0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x48 - beq _080890AE - movs r0, 0 - b _080890B0 -_080890AE: - movs r0, 0x1 -_080890B0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsTrickHouseSlipperyFloor - - thumb_func_start MetatileBehavior_0x05 -MetatileBehavior_0x05: @ 80890B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - beq _080890C2 - movs r0, 0 - b _080890C4 -_080890C2: - movs r0, 0x1 -_080890C4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_0x05 - - thumb_func_start MetatileBehavior_IsWalkNorth -@ bool8 MetatileBehavior_IsWalkNorth(u8 metatileBehavior) -MetatileBehavior_IsWalkNorth: @ 80890C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x42 - beq _080890D6 - movs r0, 0 - b _080890D8 -_080890D6: - movs r0, 0x1 -_080890D8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkNorth - - thumb_func_start MetatileBehavior_IsWalkSouth -@ bool8 MetatileBehavior_IsWalkSouth(u8 metatileBehavior) -MetatileBehavior_IsWalkSouth: @ 80890DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x43 - beq _080890EA - movs r0, 0 - b _080890EC -_080890EA: - movs r0, 0x1 -_080890EC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkSouth - - thumb_func_start MetatileBehavior_IsWalkWest -@ bool8 MetatileBehavior_IsWalkWest(u8 metatileBehavior) -MetatileBehavior_IsWalkWest: @ 80890F0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x41 - beq _080890FE - movs r0, 0 - b _08089100 -_080890FE: - movs r0, 0x1 -_08089100: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkWest - - thumb_func_start MetatileBehavior_IsWalkEast -@ bool8 MetatileBehavior_IsWalkEast(u8 metatileBehavior) -MetatileBehavior_IsWalkEast: @ 8089104 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08089112 - movs r0, 0 - b _08089114 -_08089112: - movs r0, 0x1 -_08089114: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkEast - - thumb_func_start MetatileBehavior_IsNorthwardCurrent -@ bool8 MetatileBehavior_IsNorthwardCurrent(u8 metatileBehavior) -MetatileBehavior_IsNorthwardCurrent: @ 8089118 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x52 - beq _08089126 - movs r0, 0 - b _08089128 -_08089126: - movs r0, 0x1 -_08089128: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsNorthwardCurrent - - thumb_func_start MetatileBehavior_IsSouthwardCurrent -@ bool8 MetatileBehavior_IsSouthwardCurrent(u8 metatileBehavior) -MetatileBehavior_IsSouthwardCurrent: @ 808912C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x53 - beq _0808913A - movs r0, 0 - b _0808913C -_0808913A: - movs r0, 0x1 -_0808913C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSouthwardCurrent - - thumb_func_start MetatileBehavior_IsWestwardCurrent -@ bool8 MetatileBehavior_IsWestwardCurrent(u8 metatileBehavior) -MetatileBehavior_IsWestwardCurrent: @ 8089140 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x51 - beq _0808914E - movs r0, 0 - b _08089150 -_0808914E: - movs r0, 0x1 -_08089150: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWestwardCurrent - - thumb_func_start MetatileBehavior_IsEastwardCurrent -@ bool8 MetatileBehavior_IsEastwardCurrent(u8 metatileBehavior) -MetatileBehavior_IsEastwardCurrent: @ 8089154 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x50 - beq _08089162 - movs r0, 0 - b _08089164 -_08089162: - movs r0, 0x1 -_08089164: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEastwardCurrent - - thumb_func_start MetatileBehavior_IsSlideNorth -@ bool8 MetatileBehavior_IsSlideNorth(u8 metatileBehavior) -MetatileBehavior_IsSlideNorth: @ 8089168 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x46 - beq _08089176 - movs r0, 0 - b _08089178 -_08089176: - movs r0, 0x1 -_08089178: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideNorth - - thumb_func_start MetatileBehavior_IsSlideSouth -@ bool8 MetatileBehavior_IsSlideSouth(u8 metatileBehavior) -MetatileBehavior_IsSlideSouth: @ 808917C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x47 - beq _0808918A - movs r0, 0 - b _0808918C -_0808918A: - movs r0, 0x1 -_0808918C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideSouth - - thumb_func_start MetatileBehavior_IsSlideWest -@ bool8 MetatileBehavior_IsSlideWest(u8 metatileBehavior) -MetatileBehavior_IsSlideWest: @ 8089190 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x45 - beq _0808919E - movs r0, 0 - b _080891A0 -_0808919E: - movs r0, 0x1 -_080891A0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideWest - - thumb_func_start MetatileBehavior_IsSlideEast -@ bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior) -MetatileBehavior_IsSlideEast: @ 80891A4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x44 - beq _080891B2 - movs r0, 0 - b _080891B4 -_080891B2: - movs r0, 0x1 -_080891B4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideEast - - thumb_func_start MetatileBehavior_IsCounter -MetatileBehavior_IsCounter: @ 80891B8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x80 - beq _080891C6 - movs r0, 0 - b _080891C8 -_080891C6: - movs r0, 0x1 -_080891C8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsCounter - - thumb_func_start MetatileBehavior_IsPlayerFacingTVScreen -@ bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 behavior, u8 direction) -MetatileBehavior_IsPlayerFacingTVScreen: @ 80891CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x2 - bne _080891DE - cmp r0, 0x86 - beq _080891E2 -_080891DE: - movs r0, 0 - b _080891E4 -_080891E2: - movs r0, 0x1 -_080891E4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPlayerFacingTVScreen - - thumb_func_start MetatileBehavior_IsPC -MetatileBehavior_IsPC: @ 80891E8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x83 - beq _080891F6 - movs r0, 0 - b _080891F8 -_080891F6: - movs r0, 0x1 -_080891F8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPC - - thumb_func_start is_tile_x84 -is_tile_x84: @ 80891FC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x84 - beq _0808920A - movs r0, 0 - b _0808920C -_0808920A: - movs r0, 0x1 -_0808920C: - pop {r1} - bx r1 - thumb_func_end is_tile_x84 - - thumb_func_start sub_8089210 -sub_8089210: @ 8089210 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x91 - beq _08089232 - cmp r0, 0x93 - beq _08089232 - cmp r0, 0x95 - beq _08089232 - cmp r0, 0x97 - beq _08089232 - cmp r0, 0x99 - beq _08089232 - cmp r0, 0x9B - beq _08089232 - cmp r0, 0x9D - bne _08089236 -_08089232: - movs r0, 0x1 - b _08089238 -_08089236: - movs r0, 0 -_08089238: - pop {r1} - bx r1 - thumb_func_end sub_8089210 - - thumb_func_start sub_808923C -sub_808923C: @ 808923C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x90 - beq _08089252 - cmp r0, 0x92 - beq _08089252 - cmp r0, 0x94 - beq _08089252 - cmp r0, 0x9A - bne _08089256 -_08089252: - movs r0, 0x1 - b _08089258 -_08089256: - movs r0, 0 -_08089258: - pop {r1} - bx r1 - thumb_func_end sub_808923C - - thumb_func_start sub_808925C -sub_808925C: @ 808925C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x96 - beq _0808926A - cmp r0, 0x9C - bne _0808926E -_0808926A: - movs r0, 0x1 - b _08089270 -_0808926E: - movs r0, 0 -_08089270: - pop {r1} - bx r1 - thumb_func_end sub_808925C - - thumb_func_start is_tile_x98 -is_tile_x98: @ 8089274 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x98 - beq _08089282 - movs r0, 0 - b _08089284 -_08089282: - movs r0, 0x1 -_08089284: - pop {r1} - bx r1 - thumb_func_end is_tile_x98 - - thumb_func_start sub_8089288 -sub_8089288: @ 8089288 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB0 - beq _08089296 - movs r0, 0 - b _08089298 -_08089296: - movs r0, 0x1 -_08089298: - pop {r1} - bx r1 - thumb_func_end sub_8089288 - - thumb_func_start sub_808929C -sub_808929C: @ 808929C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB1 - beq _080892AA - movs r0, 0 - b _080892AC -_080892AA: - movs r0, 0x1 -_080892AC: - pop {r1} - bx r1 - thumb_func_end sub_808929C - - thumb_func_start sub_80892B0 -sub_80892B0: @ 80892B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB2 - beq _080892BE - movs r0, 0 - b _080892C0 -_080892BE: - movs r0, 0x1 -_080892C0: - pop {r1} - bx r1 - thumb_func_end sub_80892B0 - - thumb_func_start sub_80892C4 -sub_80892C4: @ 80892C4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB3 - beq _080892D2 - movs r0, 0 - b _080892D4 -_080892D2: - movs r0, 0x1 -_080892D4: - pop {r1} - bx r1 - thumb_func_end sub_80892C4 - - thumb_func_start sub_80892D8 -sub_80892D8: @ 80892D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB9 - beq _080892E6 - movs r0, 0 - b _080892E8 -_080892E6: - movs r0, 0x1 -_080892E8: - pop {r1} - bx r1 - thumb_func_end sub_80892D8 - - thumb_func_start sub_80892EC -sub_80892EC: @ 80892EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC6 - beq _080892FA - movs r0, 0 - b _080892FC -_080892FA: - movs r0, 0x1 -_080892FC: - pop {r1} - bx r1 - thumb_func_end sub_80892EC - - thumb_func_start sub_8089300 -sub_8089300: @ 8089300 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC7 - beq _0808930E - movs r0, 0 - b _08089310 -_0808930E: - movs r0, 0x1 -_08089310: - pop {r1} - bx r1 - thumb_func_end sub_8089300 - - thumb_func_start sub_8089314 -sub_8089314: @ 8089314 - push {lr} - lsls r0, 24 - cmp r0, 0 - beq _08089320 - movs r0, 0 - b _08089322 -_08089320: - movs r0, 0x1 -_08089322: - pop {r1} - bx r1 - thumb_func_end sub_8089314 - - thumb_func_start sub_8089328 -sub_8089328: @ 8089328 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB7 - beq _08089336 - movs r0, 0 - b _08089338 -_08089336: - movs r0, 0x1 -_08089338: - pop {r1} - bx r1 - thumb_func_end sub_8089328 - - thumb_func_start sub_808933C -sub_808933C: @ 808933C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB2 - beq _0808934A - movs r0, 0 - b _0808934C -_0808934A: - movs r0, 0x1 -_0808934C: - pop {r1} - bx r1 - thumb_func_end sub_808933C - - thumb_func_start sub_8089350 -sub_8089350: @ 8089350 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB5 - beq _0808935E - movs r0, 0 - b _08089360 -_0808935E: - movs r0, 0x1 -_08089360: - pop {r1} - bx r1 - thumb_func_end sub_8089350 - - thumb_func_start sub_8089364 -sub_8089364: @ 8089364 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC3 - beq _08089372 - movs r0, 0 - b _08089374 -_08089372: - movs r0, 0x1 -_08089374: - pop {r1} - bx r1 - thumb_func_end sub_8089364 - - thumb_func_start sub_8089378 -sub_8089378: @ 8089378 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC2 - beq _08089386 - movs r0, 0 - b _08089388 -_08089386: - movs r0, 0x1 -_08089388: - pop {r1} - bx r1 - thumb_func_end sub_8089378 - - thumb_func_start sub_808938C -sub_808938C: @ 808938C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB8 - beq _0808939A - movs r0, 0 - b _0808939C -_0808939A: - movs r0, 0x1 -_0808939C: - pop {r1} - bx r1 - thumb_func_end sub_808938C - - thumb_func_start sub_80893A0 -sub_80893A0: @ 80893A0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBE - beq _080893AE - movs r0, 0 - b _080893B0 -_080893AE: - movs r0, 0x1 -_080893B0: - pop {r1} - bx r1 - thumb_func_end sub_80893A0 - - thumb_func_start sub_80893B4 -sub_80893B4: @ 80893B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBD - beq _080893C2 - movs r0, 0 - b _080893C4 -_080893C2: - movs r0, 0x1 -_080893C4: - pop {r1} - bx r1 - thumb_func_end sub_80893B4 - - thumb_func_start sub_80893C8 -sub_80893C8: @ 80893C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBA - beq _080893D6 - movs r0, 0 - b _080893D8 -_080893D6: - movs r0, 0x1 -_080893D8: - pop {r1} - bx r1 - thumb_func_end sub_80893C8 - - thumb_func_start sub_80893DC -sub_80893DC: @ 80893DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBF - beq _080893EA - movs r0, 0 - b _080893EC -_080893EA: - movs r0, 0x1 -_080893EC: - pop {r1} - bx r1 - thumb_func_end sub_80893DC - - thumb_func_start sub_80893F0 -sub_80893F0: @ 80893F0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC4 - beq _080893FE - movs r0, 0 - b _08089400 -_080893FE: - movs r0, 0x1 -_08089400: - pop {r1} - bx r1 - thumb_func_end sub_80893F0 - - thumb_func_start sub_8089404 -sub_8089404: @ 8089404 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC5 - beq _08089412 - movs r0, 0 - b _08089414 -_08089412: - movs r0, 0x1 -_08089414: - pop {r1} - bx r1 - thumb_func_end sub_8089404 - - thumb_func_start MetatileBehavior_HasRipples -MetatileBehavior_HasRipples: @ 8089418 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _0808942A - cmp r0, 0x16 - beq _0808942A - cmp r0, 0x14 - bne _0808942E -_0808942A: - movs r0, 0x1 - b _08089430 -_0808942E: - movs r0, 0 -_08089430: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_HasRipples - - thumb_func_start MetatileBehavior_IsPuddle -MetatileBehavior_IsPuddle: @ 8089434 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x16 - beq _08089442 - movs r0, 0 - b _08089444 -_08089442: - movs r0, 0x1 -_08089444: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPuddle - - thumb_func_start MetatileBehavior_IsTallGrass -MetatileBehavior_IsTallGrass: @ 8089448 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _08089456 - movs r0, 0 - b _08089458 -_08089456: - movs r0, 0x1 -_08089458: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsTallGrass - - thumb_func_start MetatileBehavior_IsLongGrass -MetatileBehavior_IsLongGrass: @ 808945C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0808946A - movs r0, 0 - b _0808946C -_0808946A: - movs r0, 0x1 -_0808946C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLongGrass - - thumb_func_start MetatileBehavior_IsBerryTreeSoil -MetatileBehavior_IsBerryTreeSoil: @ 8089470 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA0 - beq _0808947E - movs r0, 0 - b _08089480 -_0808947E: - movs r0, 0x1 -_08089480: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsBerryTreeSoil - - thumb_func_start MetatileBehavior_IsAsh -MetatileBehavior_IsAsh: @ 8089484 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x24 - beq _08089492 - movs r0, 0 - b _08089494 -_08089492: - movs r0, 0x1 -_08089494: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsAsh - - thumb_func_start MetatileBehavior_IsUnusedFootprintMetatile -MetatileBehavior_IsUnusedFootprintMetatile: @ 8089498 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x25 - beq _080894A6 - movs r0, 0 - b _080894A8 -_080894A6: - movs r0, 0x1 -_080894A8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsUnusedFootprintMetatile - - thumb_func_start sub_80894AC -sub_80894AC: @ 80894AC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0x90 - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x3 - bls _080894CA - adds r0, r1, 0 - subs r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080894CE -_080894CA: - movs r0, 0x1 - b _080894D0 -_080894CE: - movs r0, 0 -_080894D0: - pop {r1} - bx r1 - thumb_func_end sub_80894AC - - thumb_func_start sub_80894D4 -sub_80894D4: @ 80894D4 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - adds r0, r1, 0 - subs r0, 0x70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _0808950A - adds r0, r1, 0 - subs r0, 0x7A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080894F8 - movs r0, 0x2 - b _0808950A -_080894F8: - adds r0, r2, 0 - subs r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08089508 - movs r0, 0 - b _0808950A -_08089508: - movs r0, 0x3 -_0808950A: - pop {r1} - bx r1 - thumb_func_end sub_80894D4 - - thumb_func_start sub_8089510 -sub_8089510: @ 8089510 - push {lr} - lsls r0, 24 - movs r1, 0x90 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x3 - bls _08089524 - movs r0, 0 - b _08089526 -_08089524: - movs r0, 0x1 -_08089526: - pop {r1} - bx r1 - thumb_func_end sub_8089510 - - thumb_func_start sub_808952C -sub_808952C: @ 808952C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _08089550 - adds r0, r4, 0 - bl sub_8088DF0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08089550 - movs r0, 0x1 - b _08089552 -_08089550: - movs r0, 0 -_08089552: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_808952C - - thumb_func_start sub_8089558 -sub_8089558: @ 8089558 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808957E - adds r0, r4, 0 - bl sub_8088DF0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808957E - movs r0, 0x1 - b _08089580 -_0808957E: - movs r0, 0 -_08089580: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8089558 - - thumb_func_start sub_8089588 -sub_8089588: @ 8089588 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - beq _08089596 - movs r0, 0 - b _08089598 -_08089596: - movs r0, 0x1 -_08089598: - pop {r1} - bx r1 - thumb_func_end sub_8089588 - - thumb_func_start sub_808959C -sub_808959C: @ 808959C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC - beq _080895AA - movs r0, 0 - b _080895AC -_080895AA: - movs r0, 0x1 -_080895AC: - pop {r1} - bx r1 - thumb_func_end sub_808959C - - thumb_func_start sub_80895B0 -sub_80895B0: @ 80895B0 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xEF - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x1 - bls _080895C6 - cmp r1, 0x14 - bne _080895CA -_080895C6: - movs r0, 0x1 - b _080895CC -_080895CA: - movs r0, 0 -_080895CC: - pop {r1} - bx r1 - thumb_func_end sub_80895B0 - - thumb_func_start sub_80895D0 -sub_80895D0: @ 80895D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x19 - beq _080895DE - cmp r0, 0x2A - bne _080895E2 -_080895DE: - movs r0, 0x1 - b _080895E4 -_080895E2: - movs r0, 0 -_080895E4: - pop {r1} - bx r1 - thumb_func_end sub_80895D0 - - thumb_func_start MetatileBehavior_IsShallowFlowingWater -MetatileBehavior_IsShallowFlowingWater: @ 80895E8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x17 - beq _080895FA - cmp r0, 0x1B - beq _080895FA - cmp r0, 0x1C - bne _080895FE -_080895FA: - movs r0, 0x1 - b _08089600 -_080895FE: - movs r0, 0 -_08089600: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsShallowFlowingWater - - thumb_func_start sub_8089604 -sub_8089604: @ 8089604 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x26 - beq _08089612 - movs r0, 0 - b _08089614 -_08089612: - movs r0, 0x1 -_08089614: - pop {r1} - bx r1 - thumb_func_end sub_8089604 - - thumb_func_start sub_8089618 -sub_8089618: @ 8089618 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x27 - beq _08089626 - movs r0, 0 - b _08089628 -_08089626: - movs r0, 0x1 -_08089628: - pop {r1} - bx r1 - thumb_func_end sub_8089618 - - thumb_func_start sub_808962C -sub_808962C: @ 808962C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x15 - beq _0808963E - cmp r0, 0x11 - beq _0808963E - cmp r0, 0x12 - bne _08089642 -_0808963E: - movs r0, 0x1 - b _08089644 -_08089642: - movs r0, 0 -_08089644: - pop {r1} - bx r1 - thumb_func_end sub_808962C - - thumb_func_start sub_8089648 -sub_8089648: @ 8089648 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - beq _08089656 - cmp r0, 0x1A - bne _0808965A -_08089656: - movs r0, 0x1 - b _0808965C -_0808965A: - movs r0, 0 -_0808965C: - pop {r1} - bx r1 - thumb_func_end sub_8089648 - - thumb_func_start sub_8089660 -sub_8089660: @ 8089660 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - beq _08089682 - adds r0, r4, 0 - bl MetatileBehavior_IsWaterfall - lsls r0, 24 - cmp r0, 0 - bne _08089682 - movs r0, 0x1 - b _08089684 -_08089682: - movs r0, 0 -_08089684: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8089660 - - thumb_func_start MetatileBehavior_IsEastBlocked -MetatileBehavior_IsEastBlocked: @ 808968C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x30 - beq _080896A6 - cmp r0, 0x34 - beq _080896A6 - cmp r0, 0x36 - beq _080896A6 - cmp r0, 0xC1 - beq _080896A6 - cmp r0, 0xBE - bne _080896AA -_080896A6: - movs r0, 0x1 - b _080896AC -_080896AA: - movs r0, 0 -_080896AC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEastBlocked - - thumb_func_start MetatileBehavior_IsWestBlocked -MetatileBehavior_IsWestBlocked: @ 80896B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x31 - beq _080896CA - cmp r0, 0x35 - beq _080896CA - cmp r0, 0x37 - beq _080896CA - cmp r0, 0xC1 - beq _080896CA - cmp r0, 0xBE - bne _080896CE -_080896CA: - movs r0, 0x1 - b _080896D0 -_080896CE: - movs r0, 0 -_080896D0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWestBlocked - - thumb_func_start MetatileBehavior_IsNorthBlocked -MetatileBehavior_IsNorthBlocked: @ 80896D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x32 - beq _080896EA - cmp r0, 0x34 - beq _080896EA - cmp r0, 0x35 - beq _080896EA - cmp r0, 0xC0 - bne _080896EE -_080896EA: - movs r0, 0x1 - b _080896F0 -_080896EE: - movs r0, 0 -_080896F0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsNorthBlocked - - thumb_func_start MetatileBehavior_IsSouthBlocked -MetatileBehavior_IsSouthBlocked: @ 80896F4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x33 - beq _0808970A - cmp r0, 0x36 - beq _0808970A - cmp r0, 0x37 - beq _0808970A - cmp r0, 0xC0 - bne _0808970E -_0808970A: - movs r0, 0x1 - b _08089710 -_0808970E: - movs r0, 0 -_08089710: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSouthBlocked - - thumb_func_start MetatileBehavior_IsShortGrass -MetatileBehavior_IsShortGrass: @ 8089714 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - beq _08089722 - movs r0, 0 - b _08089724 -_08089722: - movs r0, 0x1 -_08089724: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsShortGrass - - thumb_func_start MetatileBehavior_IsHotSprings -MetatileBehavior_IsHotSprings: @ 8089728 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x28 - beq _08089736 - movs r0, 0 - b _08089738 -_08089736: - movs r0, 0x1 -_08089738: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsHotSprings - - thumb_func_start MetatileBehavior_IsWaterfall -@ bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior) -MetatileBehavior_IsWaterfall: @ 808973C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - beq _0808974A - movs r0, 0 - b _0808974C -_0808974A: - movs r0, 0x1 -_0808974C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWaterfall - - thumb_func_start MetatileBehavior_IsFortreeBridge -MetatileBehavior_IsFortreeBridge: @ 8089750 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x78 - beq _0808975E - movs r0, 0 - b _08089760 -_0808975E: - movs r0, 0x1 -_08089760: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsFortreeBridge - - thumb_func_start sub_8089764 -sub_8089764: @ 8089764 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x74 - beq _08089772 - movs r0, 0 - b _08089774 -_08089772: - movs r0, 0x1 -_08089774: - pop {r1} - bx r1 - thumb_func_end sub_8089764 - - thumb_func_start sub_8089778 -sub_8089778: @ 8089778 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x75 - beq _08089786 - movs r0, 0 - b _08089788 -_08089786: - movs r0, 0x1 -_08089788: - pop {r1} - bx r1 - thumb_func_end sub_8089778 - - thumb_func_start sub_808978C -sub_808978C: @ 808978C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x76 - beq _0808979A - movs r0, 0 - b _0808979C -_0808979A: - movs r0, 0x1 -_0808979C: - pop {r1} - bx r1 - thumb_func_end sub_808978C - - thumb_func_start sub_80897A0 -sub_80897A0: @ 80897A0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - beq _080897AE - movs r0, 0 - b _080897B0 -_080897AE: - movs r0, 0x1 -_080897B0: - pop {r1} - bx r1 - thumb_func_end sub_80897A0 - - thumb_func_start MetatileBehavior_IsPacifidlogLog -MetatileBehavior_IsPacifidlogLog: @ 80897B4 - push {lr} - lsls r0, 24 - movs r1, 0x8C - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x3 - bls _080897C8 - movs r0, 0 - b _080897CA -_080897C8: - movs r0, 0x1 -_080897CA: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPacifidlogLog - - thumb_func_start is_tile_x8C -is_tile_x8C: @ 80897D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8C - beq _080897DE - movs r0, 0 - b _080897E0 -_080897DE: - movs r0, 0x1 -_080897E0: - pop {r1} - bx r1 - thumb_func_end is_tile_x8C - - thumb_func_start is_tile_x85 -is_tile_x85: @ 80897E4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x85 - beq _080897F2 - movs r0, 0 - b _080897F4 -_080897F2: - movs r0, 0x1 -_080897F4: - pop {r1} - bx r1 - thumb_func_end is_tile_x85 - - thumb_func_start is_tile_x8B -is_tile_x8B: @ 80897F8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8B - beq _08089806 - movs r0, 0 - b _08089808 -_08089806: - movs r0, 0x1 -_08089808: - pop {r1} - bx r1 - thumb_func_end is_tile_x8B - - thumb_func_start is_tile_xEA -is_tile_xEA: @ 808980C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xEA - beq _0808981A - movs r0, 0 - b _0808981C -_0808981A: - movs r0, 0x1 -_0808981C: - pop {r1} - bx r1 - thumb_func_end is_tile_xEA - - thumb_func_start is_tile_x8A -is_tile_x8A: @ 8089820 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8A - beq _0808982E - movs r0, 0 - b _08089830 -_0808982E: - movs r0, 0x1 -_08089830: - pop {r1} - bx r1 - thumb_func_end is_tile_x8A - - thumb_func_start is_tile_x87 -is_tile_x87: @ 8089834 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x87 - beq _08089842 - movs r0, 0 - b _08089844 -_08089842: - movs r0, 0x1 -_08089844: - pop {r1} - bx r1 - thumb_func_end is_tile_x87 - - thumb_func_start MetatileBehavior_0xBB -@ bool8 MetatileBehavior_0xBB(u8 metatileBehavior) -MetatileBehavior_0xBB: @ 8089848 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBB - beq _08089856 - movs r0, 0 - b _08089858 -_08089856: - movs r0, 0x1 -_08089858: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_0xBB - - thumb_func_start MetatileBehavior_0xBC -@ bool8 MetatileBehavior_0xBC(u8 metatileBehavior) -MetatileBehavior_0xBC: @ 808985C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBC - beq _0808986A - movs r0, 0 - b _0808986C -_0808986A: - movs r0, 0x1 -_0808986C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_0xBC - - thumb_func_start sub_8089870 -sub_8089870: @ 8089870 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x29 - beq _0808987E - movs r0, 0 - b _08089880 -_0808987E: - movs r0, 0x1 -_08089880: - pop {r1} - bx r1 - thumb_func_end sub_8089870 - - thumb_func_start is_role_x68 -is_role_x68: @ 8089884 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x68 - beq _08089892 - movs r0, 0 - b _08089894 -_08089892: - movs r0, 0x1 -_08089894: - pop {r1} - bx r1 - thumb_func_end is_role_x68 - - thumb_func_start MetatileBehavior_IsAquaHideoutWarp -MetatileBehavior_IsAquaHideoutWarp: @ 8089898 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x67 - beq _080898A6 - movs r0, 0 - b _080898A8 -_080898A6: - movs r0, 0x1 -_080898A8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsAquaHideoutWarp - - thumb_func_start sub_80898AC -sub_80898AC: @ 80898AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x70 - beq _080898BA - movs r0, 0 - b _080898BC -_080898BA: - movs r0, 0x1 -_080898BC: - pop {r1} - bx r1 - thumb_func_end sub_80898AC - - thumb_func_start sub_80898C0 -sub_80898C0: @ 80898C0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE - beq _080898CE - movs r0, 0 - b _080898D0 -_080898CE: - movs r0, 0x1 -_080898D0: - pop {r1} - bx r1 - thumb_func_end sub_80898C0 - - thumb_func_start MetatileBehavior_IsSurfableFishableWater -MetatileBehavior_IsSurfableFishableWater: @ 80898D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _080898F8 - cmp r0, 0x15 - beq _080898F8 - cmp r0, 0x11 - beq _080898F8 - cmp r0, 0x12 - beq _080898F8 - cmp r0, 0x14 - beq _080898F8 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080898FC -_080898F8: - movs r0, 0x1 - b _080898FE -_080898FC: - movs r0, 0 -_080898FE: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSurfableFishableWater - - thumb_func_start sub_8089904 -sub_8089904: @ 8089904 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - beq _08089912 - movs r0, 0 - b _08089914 -_08089912: - movs r0, 0x1 -_08089914: - pop {r1} - bx r1 - thumb_func_end sub_8089904 - - thumb_func_start sub_8089918 -sub_8089918: @ 8089918 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x66 - beq _08089926 - movs r0, 0 - b _08089928 -_08089926: - movs r0, 0x1 -_08089928: - pop {r1} - bx r1 - thumb_func_end sub_8089918 - - thumb_func_start sub_808992C -sub_808992C: @ 808992C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD2 - beq _0808993A - movs r0, 0 - b _0808993C -_0808993A: - movs r0, 0x1 -_0808993C: - pop {r1} - bx r1 - thumb_func_end sub_808992C - - thumb_func_start MetatileBehavior_IsMuddySlope -@ bool8 MetatileBehavior_IsMuddySlope(u8 metatileBehavior) -MetatileBehavior_IsMuddySlope: @ 8089940 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD0 - beq _0808994E - movs r0, 0 - b _08089950 -_0808994E: - movs r0, 0x1 -_08089950: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsMuddySlope - - thumb_func_start MetatileBehavior_IsBumpySlope -MetatileBehavior_IsBumpySlope: @ 8089954 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD1 - beq _08089962 - movs r0, 0 - b _08089964 -_08089962: - movs r0, 0x1 -_08089964: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsBumpySlope - - thumb_func_start MetatileBehavior_IsIsolatedVerticalRail -MetatileBehavior_IsIsolatedVerticalRail: @ 8089968 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD3 - beq _08089976 - movs r0, 0 - b _08089978 -_08089976: - movs r0, 0x1 -_08089978: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIsolatedVerticalRail - - thumb_func_start MetatileBehavior_IsIsolatedHorizontalRail -MetatileBehavior_IsIsolatedHorizontalRail: @ 808997C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD4 - beq _0808998A - movs r0, 0 - b _0808998C -_0808998A: - movs r0, 0x1 -_0808998C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIsolatedHorizontalRail - - thumb_func_start MetatileBehavior_IsVerticalRail -MetatileBehavior_IsVerticalRail: @ 8089990 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD5 - beq _0808999E - movs r0, 0 - b _080899A0 -_0808999E: - movs r0, 0x1 -_080899A0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsVerticalRail - - thumb_func_start MetatileBehavior_IsHorizontalRail -MetatileBehavior_IsHorizontalRail: @ 80899A4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD6 - beq _080899B2 - movs r0, 0 - b _080899B4 -_080899B2: - movs r0, 0x1 -_080899B4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsHorizontalRail - - thumb_func_start MetatileBehavior_IsSeaweed -MetatileBehavior_IsSeaweed: @ 80899B8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x22 - beq _080899C6 - cmp r0, 0x2A - bne _080899CA -_080899C6: - movs r0, 0x1 - b _080899CC -_080899CA: - movs r0, 0 -_080899CC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSeaweed - - thumb_func_start MetatileBehavior_IsRunningDisallowed -MetatileBehavior_IsRunningDisallowed: @ 80899D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA - beq _080899EC - cmp r0, 0x3 - beq _080899EC - cmp r0, 0x28 - beq _080899EC - bl MetatileBehavior_IsPacifidlogLog - lsls r0, 24 - cmp r0, 0 - beq _080899F0 -_080899EC: - movs r0, 0x1 - b _080899F2 -_080899F0: - movs r0, 0 -_080899F2: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsRunningDisallowed - - thumb_func_start sub_80899F8 -sub_80899F8: @ 80899F8 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xFE - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x1 - bls _08089A12 - cmp r1, 0x24 - beq _08089A12 - cmp r1, 0x9 - bne _08089A16 -_08089A12: - movs r0, 0x1 - b _08089A18 -_08089A16: - movs r0, 0 -_08089A18: - pop {r1} - bx r1 - thumb_func_end sub_80899F8 - - thumb_func_start sub_8089A1C -sub_8089A1C: @ 8089A1C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8E - beq _08089A2A - movs r0, 0 - b _08089A2C -_08089A2A: - movs r0, 0x1 -_08089A2C: - pop {r1} - bx r1 - thumb_func_end sub_8089A1C - - thumb_func_start sub_8089A30 -sub_8089A30: @ 8089A30 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE0 - beq _08089A3E - movs r0, 0 - b _08089A40 -_08089A3E: - movs r0, 0x1 -_08089A40: - pop {r1} - bx r1 - thumb_func_end sub_8089A30 - - thumb_func_start sub_8089A44 -sub_8089A44: @ 8089A44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE1 - beq _08089A52 - movs r0, 0 - b _08089A54 -_08089A52: - movs r0, 0x1 -_08089A54: - pop {r1} - bx r1 - thumb_func_end sub_8089A44 - - thumb_func_start sub_8089A58 -sub_8089A58: @ 8089A58 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE2 - beq _08089A66 - movs r0, 0 - b _08089A68 -_08089A66: - movs r0, 0x1 -_08089A68: - pop {r1} - bx r1 - thumb_func_end sub_8089A58 - - thumb_func_start sub_8089A6C -sub_8089A6C: @ 8089A6C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE3 - beq _08089A7A - movs r0, 0 - b _08089A7C -_08089A7A: - movs r0, 0x1 -_08089A7C: - pop {r1} - bx r1 - thumb_func_end sub_8089A6C - - thumb_func_start sub_8089A80 -sub_8089A80: @ 8089A80 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE4 - beq _08089A8E - movs r0, 0 - b _08089A90 -_08089A8E: - movs r0, 0x1 -_08089A90: - pop {r1} - bx r1 - thumb_func_end sub_8089A80 - - thumb_func_start sub_8089A94 -sub_8089A94: @ 8089A94 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE5 - beq _08089AA2 - movs r0, 0 - b _08089AA4 -_08089AA2: - movs r0, 0x1 -_08089AA4: - pop {r1} - bx r1 - thumb_func_end sub_8089A94 - - thumb_func_start sub_8089AA8 -sub_8089AA8: @ 8089AA8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE6 - beq _08089AB6 - movs r0, 0 - b _08089AB8 -_08089AB6: - movs r0, 0x1 -_08089AB8: - pop {r1} - bx r1 - thumb_func_end sub_8089AA8 - - thumb_func_start sub_8089ABC -sub_8089ABC: @ 8089ABC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - beq _08089ACA - movs r0, 0 - b _08089ACC -_08089ACA: - movs r0, 0x1 -_08089ACC: - pop {r1} - bx r1 - thumb_func_end sub_8089ABC - - thumb_func_start sub_8089AD0 -sub_8089AD0: @ 8089AD0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x2 - bne _08089AE2 - cmp r0, 0xE8 - beq _08089AE6 -_08089AE2: - movs r0, 0 - b _08089AE8 -_08089AE6: - movs r0, 0x1 -_08089AE8: - pop {r1} - bx r1 - thumb_func_end sub_8089AD0 - - thumb_func_start sub_8089AEC -sub_8089AEC: @ 8089AEC - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x2 - bne _08089AFE - cmp r0, 0xE7 - beq _08089B02 -_08089AFE: - movs r0, 0 - b _08089B04 -_08089B02: - movs r0, 0x1 -_08089B04: - pop {r1} - bx r1 - thumb_func_end sub_8089AEC - - thumb_func_start MetatileBehavior_IsQuestionnaire -MetatileBehavior_IsQuestionnaire: @ 8089B08 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8F - beq _08089B16 - movs r0, 0 - b _08089B18 -_08089B16: - movs r0, 0x1 -_08089B18: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsQuestionnaire - - thumb_func_start MetatileBehavior_IsLongGrass2 -MetatileBehavior_IsLongGrass2: @ 8089B1C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08089B2A - movs r0, 0 - b _08089B2C -_08089B2A: - movs r0, 0x1 -_08089B2C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLongGrass2 - - thumb_func_start MetatileBehavior_IsLongGrassSouthEdge -MetatileBehavior_IsLongGrassSouthEdge: @ 8089B30 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - beq _08089B3E - movs r0, 0 - b _08089B40 -_08089B3E: - movs r0, 0x1 -_08089B40: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLongGrassSouthEdge - - thumb_func_start MetatileBehavior_IsTrainerHillTimer -MetatileBehavior_IsTrainerHillTimer: @ 8089B44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE9 - beq _08089B52 - movs r0, 0 - b _08089B54 -_08089B52: - movs r0, 0x1 -_08089B54: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsTrainerHillTimer - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokenav.s b/asm/pokenav.s index 58e60c51d4..28f0df0ea2 100755 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -27356,7 +27356,7 @@ _081D4870: bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8088E64 + bl MetatileBehavior_IsPokeGrass lsls r0, 24 lsrs r0, 24 _081D4888: diff --git a/asm/rom4.s b/asm/rom4.s index 9fb9e2bd64..c80eb194e3 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -1699,19 +1699,19 @@ _080853AC: lsls r4, 24 lsrs r5, r4, 24 adds r0, r5, 0 - bl sub_8088F74 + bl MetatileBehavior_IsDeepSouthWarp lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080853E8 adds r0, r5, 0 - bl sub_8088F58 + bl MetatileBehavior_IsNonAnimDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08085442 adds r0, r5, 0 - bl sub_8088EFC + bl MetatileBehavior_IsDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/secret_base.s b/asm/secret_base.s index e514e88f12..0290e9f7fc 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -1163,13 +1163,13 @@ _080E941E: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8089350 + bl MetatileBehavior_IsMB_B5 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080E9462 adds r0, r4, 0 - bl sub_8089364 + bl MetatileBehavior_IsMB_C3 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3288,7 +3288,7 @@ _080EA62C: .pool _080EA668: adds r0, r5, 0 - bl sub_80893C8 + bl MetatileBehavior_IsSecretBaseGlitterMat lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3308,7 +3308,7 @@ _080EA680: .pool _080EA698: adds r0, r5, 0 - bl sub_808938C + bl MetatileBehavior_IsSecretBaseBalloon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3377,7 +3377,7 @@ _080EA714: .pool _080EA72C: adds r0, r5, 0 - bl sub_80893A0 + bl MetatileBehavior_IsMB_BE lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3409,7 +3409,7 @@ _080EA75E: .pool _080EA778: adds r0, r5, 0 - bl sub_80893B4 + bl MetatileBehavior_IsSecretBaseSoundMat lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3429,7 +3429,7 @@ _080EA778: .pool _080EA7A8: adds r0, r5, 0 - bl MetatileBehavior_0xBB + bl MetatileBehavior_IsSecretBaseJumpMat lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3449,7 +3449,7 @@ _080EA7A8: .pool _080EA7D8: adds r0, r5, 0 - bl MetatileBehavior_0xBC + bl MetatileBehavior_IsSecretBaseSpinMat lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index 2c628a5e47..9b6c901f69 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -68,7 +68,7 @@ _080B4920: bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8089660 + bl MetatileBehavior_IsSurfableAndNotWaterfall lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1424,7 +1424,7 @@ _080B539C: lsls r0, r6, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_808952C + bl MetatileBehavior_IsLandWildEncounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1498,7 +1498,7 @@ _080B5418: .pool _080B543C: adds r0, r4, 0 - bl sub_8089558 + bl MetatileBehavior_IsWaterWildEncounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1509,7 +1509,7 @@ _080B543C: cmp r0, 0 beq _080B54FE adds r0, r4, 0 - bl sub_80894AC + bl MetatileBehavior_IsBridge lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1726,7 +1726,7 @@ _080B562C: bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_808952C + bl MetatileBehavior_IsLandWildEncounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1769,7 +1769,7 @@ _080B568C: bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl sub_8089558 + bl MetatileBehavior_IsWaterWildEncounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/data/metatile_behavior.s b/data/rom_8486FEC.s similarity index 60% rename from data/metatile_behavior.s rename to data/rom_8486FEC.s index ea19a3031a..9b7834a32a 100644 --- a/data/metatile_behavior.s +++ b/data/rom_8486FEC.s @@ -4,5 +4,5 @@ .section .rodata .align 2, 0 -gUnknown_08486EFC:: @ 8486EFC - .incbin "baserom.gba", 0x486efc, 0x10090 +gUnknown_8486FEC:: @ 8486FEC + .incbin "baserom.gba", 0x486fec, 0xFFA0 diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 5ed36c6906..d6743b7887 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -1,11 +1,149 @@ -#ifndef GUARD_METATILE_BEHAVIOR_H -#define GUARD_METATILE_BEHAVIOR_H +#ifndef GUARD_METATILE_BEHAVIOR +#define GUARD_METATILE_BEHAVIOR -// Exported type declarations +bool8 ShouldDoJumpLandingDustEffect(u8); +bool8 MetatileBehavior_IsEncounterTile(u8); +bool8 MetatileBehavior_IsJumpEast(u8); +bool8 MetatileBehavior_IsJumpWest(u8); +bool8 MetatileBehavior_IsJumpNorth(u8); +bool8 MetatileBehavior_IsJumpSouth(u8); +bool8 MetatileBehavior_IsPokeGrass(u8); +bool8 MetatileBehavior_IsSandOrDeepSand(u8); +bool8 MetatileBehavior_IsDeepSand(u8); +bool8 MetatileBehavior_IsReflective(u8); +bool8 MetatileBehavior_IsIce(u8); +bool8 MetatileBehavior_IsWarpDoor(u8); +bool8 MetatileBehavior_IsDoor(u8); +bool8 MetatileBehavior_IsEscalator(u8); +bool8 MetatileBehavior_IsMB_04(u8); +bool8 MetatileBehavior_IsLadder(u8); +bool8 MetatileBehavior_IsNonAnimDoor(u8); +bool8 MetatileBehavior_IsDeepSouthWarp(u8); +bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8); +bool8 MetatileBehavior_IsEastArrowWarp(u8); +bool8 MetatileBehavior_IsWestArrowWarp(u8); +bool8 MetatileBehavior_IsNorthArrowWarp(u8); +bool8 MetatileBehavior_IsSouthArrowWarp(u8); +bool8 MetatileBehavior_IsArrowWarp(u8); +bool8 MetatileBehavior_IsMoveTile(u8); +bool8 MetatileBehavior_IsIce_2(u8); +bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8); +bool8 MetatileBehavior_IsMB_05(u8); +bool8 MetatileBehavior_IsWalkNorth(u8); +bool8 MetatileBehavior_IsWalkSouth(u8); +bool8 MetatileBehavior_IsWalkWest(u8); +bool8 MetatileBehavior_IsWalkEast(u8); +bool8 MetatileBehavior_IsNorthwardCurrent(u8); +bool8 MetatileBehavior_IsSouthwardCurrent(u8); +bool8 MetatileBehavior_IsWestwardCurrent(u8); +bool8 MetatileBehavior_IsEastwardCurrent(u8); +bool8 MetatileBehavior_IsSlideNorth(u8); +bool8 MetatileBehavior_IsSlideSouth(u8); +bool8 MetatileBehavior_IsSlideWest(u8); +bool8 MetatileBehavior_IsSlideEast(u8); +bool8 MetatileBehavior_IsCounter(u8); +bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir); +bool8 MetatileBehavior_IsPC(u8); +bool8 MetatileBehavior_IsCableBoxResults1(u8); +bool8 MetatileBehavior_IsSecretBaseOpen(u8); +bool8 MetatileBehavior_IsSecretBaseCave(u8); +bool8 MetatileBehavior_IsSecretBaseTree(u8); +bool8 MetatileBehavior_IsSecretBaseShrub(u8); +bool8 MetatileBehavior_IsSecretBasePC(u8); +bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8); +bool8 MetatileBehavior_IsMB_B2(u8); +bool8 MetatileBehavior_IsMB_B3(u8); +bool8 MetatileBehavior_IsMB_B9(u8); +bool8 MetatileBehavior_IsMB_C6(u8); +bool8 MetatileBehavior_IsSecretBasePoster(u8); +bool8 MetatileBehavior_IsNormal(u8); +bool8 MetatileBehavior_IsMB_B7(u8); +bool8 MetatileBehavior_IsMB_B2_Duplicate(u8); +bool8 MetatileBehavior_IsMB_B5(u8); +bool8 MetatileBehavior_IsMB_C3(u8); +bool8 MetatileBehavior_IsMB_C2(u8); +bool8 MetatileBehavior_IsSecretBaseBalloon(u8); +bool8 MetatileBehavior_IsMB_BE(u8); +bool8 MetatileBehavior_IsSecretBaseSoundMat(u8); +bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8); +bool8 MetatileBehavior_IsMB_BF(u8); +bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8); +bool8 MetatileBehavior_IsMB_C5(u8); +bool8 MetatileBehavior_HasRipples(u8); +bool8 MetatileBehavior_IsPuddle(u8); +bool8 MetatileBehavior_IsTallGrass(u8); +bool8 MetatileBehavior_IsLongGrass(u8); +bool8 MetatileBehavior_IsBerryTreeSoil(u8); +bool8 MetatileBehavior_IsAsh(u8); +bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8); +bool8 MetatileBehavior_IsBridge(u8); +u8 MetatileBehavior_GetBridgeSth(u8); +u8 MetatileBehavior_8089510(u8); +bool8 MetatileBehavior_IsLandWildEncounter(u8); +bool8 MetatileBehavior_IsWaterWildEncounter(u8); +bool8 MetatileBehavior_IsMB_0B(u8); +bool8 MetatileBehavior_IsMountain(u8); +bool8 MetatileBehavior_IsDiveable(u8); +bool8 MetatileBehavior_IsUnableToEmerge(u8); +bool8 MetatileBehavior_IsShallowFlowingWater(u8); +bool8 MetatileBehavior_IsThinIce(u8); +bool8 MetatileBehavior_IsCrackedIce(u8); +bool8 MetatileBehavior_IsDeepOrOceanWater(u8); +bool8 MetatileBehavior_IsMB_18_OrMB_1A(u8); +bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8); +bool8 MetatileBehavior_IsEastBlocked(u8); +bool8 MetatileBehavior_IsWestBlocked(u8); +bool8 MetatileBehavior_IsNorthBlocked(u8); +bool8 MetatileBehavior_IsSouthBlocked(u8); +bool8 MetatileBehavior_IsShortGrass(u8); +bool8 MetatileBehavior_IsHotSprings(u8); +bool8 MetatileBehavior_IsWaterfall(u8); +bool8 MetatileBehavior_IsFortreeBridge(u8); +bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8); +bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8); +bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8); +bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8); +bool8 MetatileBehavior_IsPacifidlogLog(u8); +bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8); +bool8 MetatileBehavior_IsRegionMap(u8); +bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8); +bool8 MetatileBehavior_IsUnknownClosedDoor(u8); +bool8 MetatileBehavior_IsRoulette(u8); +bool8 MetatileBehavior_IsPokeblockFeeder(u8); +bool8 MetatileBehavior_IsSecretBaseJumpMat(u8); +bool8 MetatileBehavior_IsSecretBaseSpinMat(u8); +bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8); +bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8); +bool8 MetatileBehavior_IsAquaHideoutWarp(u8); +bool8 MetatileBehavior_IsWarpOrBridge(u8); +bool8 MetatileBehavior_IsMossdeepGymWarp(u8); +bool8 MetatileBehavior_IsSurfableFishableWater(u8); +bool8 MetatileBehavior_IsMtPyreHole(u8); +bool8 MetatileBehavior_IsCrackedFloorHole(u8); +bool8 MetatileBehavior_IsCrackedFloor(u8); +bool8 MetatileBehavior_IsMuddySlope(u8); +bool8 MetatileBehavior_IsBumpySlope(u8); +bool8 MetatileBehavior_IsIsolatedVerticalRail(u8); +bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8); +bool8 MetatileBehavior_IsVerticalRail(u8); +bool8 MetatileBehavior_IsHorizontalRail(u8); +bool8 MetatileBehavior_IsSeaweed(u8); +bool8 MetatileBehavior_IsRunningDisallowed(u8); +bool8 MetatileBehavior_IsCuttableGrass(u8); +bool8 MetatileBehavior_IsRunningShoesInstruction(u8); +bool8 MetatileBehavior_IsPictureBookShelf(u8); +bool8 MetatileBehavior_IsBookShelf(u8); +bool8 MetatileBehavior_IsPokeCenterBookShelf(u8); +bool8 MetatileBehavior_IsVase(u8); +bool8 MetatileBehavior_IsTrashCan(u8); +bool8 MetatileBehavior_IsShopShelf(u8); +bool8 MetatileBehavior_IsBlueprint(u8); +bool8 MetatileBehavior_IsBattlePyramidWarp(u8); +bool8 MetatileBehavior_IsPlayerFacingWirelessBoxResults(u8 tile, u8 playerDir); +bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir); +bool8 MetatileBehavior_IsQuestionnaire(u8); +bool8 MetatileBehavior_IsLongGrass_Duplicate(u8); +bool8 MetatileBehavior_IsLongGrassSouthEdge(u8); +bool8 MetatileBehavior_IsTrainerHillTimer(u8); -// Exported RAM declarations - -// Exported ROM declarations -bool8 sub_8088E64(u8); - -#endif //GUARD_METATILE_BEHAVIOR_H +#endif // GUARD_METATILE_BEHAVIOR diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h new file mode 100644 index 0000000000..dd3a8b4f48 --- /dev/null +++ b/include/metatile_behaviors.h @@ -0,0 +1,179 @@ +#ifndef GUARD_METATILE_BEHAVIORS +#define GUARD_METATILE_BEHAVIORS + +#define MB_NORMAL 0x00 +#define MB_TALL_GRASS 0x02 +#define MB_LONG_GRASS 0x03 +#define MB_04 0x04 +#define MB_05 0x05 +#define MB_DEEP_SAND 0x06 +#define MB_SHORT_GRASS 0x07 +#define MB_CAVE 0x08 +#define MB_LONG_GRASS_SOUTH_EDGE 0x09 +#define MB_NO_RUNNING 0x0A +#define MB_0B 0x0B +#define MB_MOUNTAIN_TOP 0x0C +#define MB_BATTLE_PYRAMID_WARP 0x0D +#define MB_MOSSDEEP_GYM_WARP 0x0E +#define MB_MT_PYRE_HOLE 0x0F +#define MB_POND_WATER 0x10 +#define MB_SEMI_DEEP_WATER 0x11 +#define MB_DEEP_WATER 0x12 +#define MB_WATERFALL 0x13 +#define MB_SOOTOPOLIS_DEEP_WATER 0x14 +#define MB_OCEAN_WATER 0x15 +#define MB_PUDDLE 0x16 +#define MB_SHALLOW_WATER 0x17 +#define MB_18 0x18 +#define MB_NO_SURFACING 0x19 +#define MB_1A 0x1A +#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B +#define MB_SHOAL_CAVE_ENTRANCE 0x1C +#define MB_ICE 0x20 +#define MB_SAND 0x21 +#define MB_SEAWEED 0x22 +#define MB_ASHGRASS 0x24 +#define MB_25 0x25 +#define MB_THIN_ICE 0x26 +#define MB_CRACKED_ICE 0x27 +#define MB_HOT_SPRINGS 0x28 +#define MB_LAVARIDGE_GYM_B1F_WARP 0x29 +#define MB_SEAWEED_NO_SURFACING 0x2A +#define MB_REFLECTION_UNDER_BRIDGE 0x2B +#define MB_IMPASSABLE_EAST 0x30 +#define MB_IMPASSABLE_WEST 0x31 +#define MB_IMPASSABLE_NORTH 0x32 +#define MB_IMPASSABLE_SOUTH 0x33 +#define MB_IMPASSABLE_NORTHEAST 0x34 +#define MB_IMPASSABLE_NORTHWEST 0x35 +#define MB_IMPASSABLE_SOUTHEAST 0x36 +#define MB_IMPASSABLE_SOUTHWEST 0x37 +#define MB_JUMP_EAST 0x38 +#define MB_JUMP_WEST 0x39 +#define MB_JUMP_NORTH 0x3A +#define MB_JUMP_SOUTH 0x3B +#define MB_JUMP_SOUTHEAST 0x3E +#define MB_JUMP_SOUTHWEST 0x3F +#define MB_WALK_EAST 0x40 +#define MB_WALK_WEST 0x41 +#define MB_WALK_NORTH 0x42 +#define MB_WALK_SOUTH 0x43 +#define MB_SLIDE_EAST 0x44 +#define MB_SLIDE_WEST 0x45 +#define MB_SLIDE_NORTH 0x46 +#define MB_SLIDE_SOUTH 0x47 +#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48 +#define MB_EASTWARD_CURRENT 0x50 +#define MB_WESTWARD_CURRENT 0x51 +#define MB_NORTHWARD_CURRENT 0x52 +#define MB_SOUTHWARD_CURRENT 0x53 +#define MB_NON_ANIMATED_DOOR 0x60 +#define MB_LADDER 0x61 +#define MB_EAST_ARROW_WARP 0x62 +#define MB_WEST_ARROW_WARP 0x63 +#define MB_NORTH_ARROW_WARP 0x64 +#define MB_SOUTH_ARROW_WARP 0x65 +#define MB_CRACKED_FLOOR_HOLE 0x66 +#define MB_AQUA_HIDEOUT_WARP 0x67 +#define MB_LAVARIDGE_GYM_1F_WARP 0x68 +#define MB_ANIMATED_DOOR 0x69 +#define MB_UP_ESCALATOR 0x6A +#define MB_DOWN_ESCALATOR 0x6B +#define MB_WATER_DOOR 0x6C +#define MB_WATER_SOUTH_ARROW_WARP 0x6D +#define MB_DEEP_SOUTH_WARP 0x6E +#define MB_WARP_OR_BRIDGE 0x70 +#define MB_71 0x71 +#define MB_ROUTE120_NORTH_BRIDGE_1 0x72 +#define MB_ROUTE120_NORTH_BRIDGE_2 0x73 +#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74 +#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75 +#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76 +#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77 +#define MB_FORTREE_BRIDGE 0x78 +#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A +#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B +#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C +#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D +#define MB_7E 0x7E +#define MB_ROUTE110_BRIDGE 0x7F +#define MB_COUNTER 0x80 +#define MB_PC 0x83 +#define MB_CABLE_BOX_RESULTS_1 0x84 +#define MB_REGION_MAP 0x85 +#define MB_TELEVISION 0x86 +#define MB_POKEBLOCK_FEEDER 0x87 +#define MB_SLOT_MACHINE 0x89 +#define MB_ROULETTE 0x8A +#define MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B +#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C +#define MB_8D 0x8D +#define MB_RUNNING_SHOES_INSTRUCTION 0x8E +#define MB_QUESTIONNAIRE 0x8F +#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90 +#define MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91 +#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92 +#define MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93 +#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94 +#define MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95 +#define MB_SECRET_BASE_SPOT_TREE_LEFT 0x96 +#define MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97 +#define MB_SECRET_BASE_SPOT_SHRUB 0x98 +#define MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99 +#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A +#define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B +#define MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C +#define MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D +#define MB_BERRY_TREE_SOIL 0xA0 +#define MB_SECRET_BASE_PC 0xB0 +#define MB_SECRET_BASE_REGISTER_PC 0xB1 +#define MB_B2 0xB2 +#define MB_B3 0xB3 +#define MB_B4 0xB4 +#define MB_B5 0xB5 +#define MB_B6 0xB6 +#define MB_B7 0xB7 +#define MB_SECRET_BASE_BALLOON 0xB8 +#define MB_B9 0xB9 +#define MB_SECRET_BASE_GLITTER_MAT 0xBA +#define MB_SECRET_BASE_JUMP_MAT 0xBB +#define MB_SECRET_BASE_SPIN_MAT 0xBC +#define MB_SECRET_BASE_SOUND_MAT 0xBD +#define MB_BE 0xBE +#define MB_BF 0xBF +#define MB_BED 0xC0 +#define MB_C1 0xC1 +#define MB_C2 0xC2 +#define MB_C3 0xC3 +#define MB_SECRET_BASE_TV_SHIELD 0xC4 +#define MB_C5 0xC5 +#define MB_C6 0xC6 +#define MB_SECRET_BASE_POSTER 0xC7 +#define MB_C8 0xC8 +#define MB_C9 0xC9 +#define MB_CA 0xCA +#define MB_CB 0xCB +#define MB_CC 0xCC +#define MB_CD 0xCD +#define MB_CE 0xCE +#define MB_CF 0xCF +#define MB_MUDDY_SLOPE 0xD0 +#define MB_BUMPY_SLOPE 0xD1 +#define MB_CRACKED_FLOOR 0xD2 +#define MB_ISOLATED_VERTICAL_RAIL 0xD3 +#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4 +#define MB_VERTICAL_RAIL 0xD5 +#define MB_HORIZONTAL_RAIL 0xD6 +#define MB_PICTURE_BOOK_SHELF 0xE0 +#define MB_BOOKSHELF 0xE1 +#define MB_POKEMON_CENTER_BOOKSHELF 0xE2 +#define MB_VASE 0xE3 +#define MB_TRASH_CAN 0xE4 +#define MB_SHOP_SHELF 0xE5 +#define MB_BLUEPRINT 0xE6 +#define MB_CABLE_BOX_RESULTS_2 0xE7 +#define MB_WIRELESS_BOX_RESULTS 0xE8 +#define MB_TRAINER_HILL_TIMER 0xE9 +#define MB_UNKNOWN_CLOSED_DOOR 0xEA + +#endif // GUARD_METATILE_BEHAVIORS diff --git a/ld_script.txt b/ld_script.txt index 64a43d573b..4025a487fb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,7 +92,7 @@ SECTIONS { src/new_game.o(.text); asm/rom4.o(.text); asm/fieldmap.o(.text); - asm/metatile_behavior.o(.text); + src/metatile_behavior.o(.text); asm/field_camera.o(.text); asm/field_door.o(.text); asm/field_player_avatar.o(.text); @@ -349,7 +349,8 @@ SECTIONS { src/new_game.o(.rodata); data/rom4.o(.rodata); data/fieldmap.o(.rodata); - data/metatile_behavior.o(.rodata); + src/metatile_behavior.o(.rodata); + data/rom_8486FEC.o(.rodata); data/field_door.o(.rodata); data/field_player_avatar.o(.rodata); data/field_map_obj.o(.rodata); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 26bc513fbb..e80e402c87 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3413,7 +3413,7 @@ bool8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite) { return FALSE; } - return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), sub_8088E64); + return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), MetatileBehavior_IsPokeGrass); } bool8 sub_80925AC(struct MapObject *, struct Sprite *); diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c new file mode 100644 index 0000000000..b9760f5223 --- /dev/null +++ b/src/metatile_behavior.c @@ -0,0 +1,1436 @@ +#include "global.h" +#include "metatile_behavior.h" +#include "metatile_behaviors.h" + +#define TILE_FLAG_ENCOUNTER_TILE 1 +#define TILE_FLAG_SURFABLE 2 + +#define TILE_ATTRIBUTES(three, two, one) (((one) ? 1 : 0) | ((two) ? 2 : 0) | ((three) ? 4 : 0)) + +// wonder what the third flag is supposed to do +static const u8 sTileBitAttributes[] = +{ + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORMAL 0x00 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x01 + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_TALL_GRASS 0x02 + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_LONG_GRASS 0x03 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_04 0x04 + TILE_ATTRIBUTES(FALSE, FALSE, TRUE), // MB_05 0x05 + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_DEEP_SAND 0x06 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHORT_GRASS 0x07 + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_CAVE 0x08 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LONG_GRASS_SOUTH_EDGE 0x09 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NO_RUNNING 0x0A + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_0B 0x0B + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOUNTAIN_TOP 0x0C + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BATTLE_PYRAMID_WARP 0x0D + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOSSDEEP_GYM_WARP 0x0E + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MT_PYRE_HOLE 0x0F + TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_POND_WATER 0x10 + TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEMI_DEEP_WATER 0x11 + TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_DEEP_WATER 0x12 + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATERFALL 0x13 + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOOTOPOLIS_DEEP_WATER 0x14 + TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_OCEAN_WATER 0x15 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PUDDLE 0x16 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHALLOW_WATER 0x17 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_18 0x18 + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NO_SURFACING 0x19 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_1A 0x1A + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHOAL_CAVE_ENTRANCE 0x1C + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1D + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1E + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1F + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ICE 0x20 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SAND 0x21 + TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED 0x22 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x23 + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_ASHGRASS 0x24 + TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_25 0x25 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_THIN_ICE 0x26 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_ICE 0x27 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HOT_SPRINGS 0x28 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_B1F_WARP 0x29 + TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED_NO_SURFACING 0x2A + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_REFLECTION_UNDER_BRIDGE 0x2B + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2C + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2D + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2E + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2F + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_EAST 0x30 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST 0x31 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTH 0x32 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH 0x33 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHEAST 0x34 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHWEST 0x35 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHEAST 0x36 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHWEST 0x37 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_EAST 0x38 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_WEST 0x39 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_NORTH 0x3A + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_SOUTH 0x3B + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x3C + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x3D + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHEAST 0x3E + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHWEST 0x3F + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_EAST 0x40 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_WEST 0x41 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_NORTH 0x42 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_SOUTH 0x43 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_EAST 0x44 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_WEST 0x45 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_NORTH 0x46 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_SOUTH 0x47 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x49 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x4A + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4B + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4C + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4D + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4E + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4F + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_EASTWARD_CURRENT 0x50 + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WESTWARD_CURRENT 0x51 + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NORTHWARD_CURRENT 0x52 + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOUTHWARD_CURRENT 0x53 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x54 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x55 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x56 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x57 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x58 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x59 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5A + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5B + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5C + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5D + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5E + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5F + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NON_ANIMATED_DOOR 0x60 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LADDER 0x61 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_EAST_ARROW_WARP 0x62 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WEST_ARROW_WARP 0x63 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORTH_ARROW_WARP 0x64 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SOUTH_ARROW_WARP 0x65 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR_HOLE 0x66 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_AQUA_HIDEOUT_WARP 0x67 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_1F_WARP 0x68 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ANIMATED_DOOR 0x69 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UP_ESCALATOR 0x6A + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DOWN_ESCALATOR 0x6B + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_DOOR 0x6C + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_SOUTH_ARROW_WARP 0x6D + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DEEP_SOUTH_WARP 0x6E + TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // ? 0x6F + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WARP_OR_BRIDGE 0x70 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_71 0x71 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_1 0x72 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_2 0x73 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_1 0x74 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_2 0x75 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_FORTREE_BRIDGE 0x78 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x79 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_1 0x7A + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_2 0x7B + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_3 0x7C + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_4 0x7D + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_7E 0x7E + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE110_BRIDGE 0x7F + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_COUNTER 0x80 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x81 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x82 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PC 0x83 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_1 0x84 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_REGION_MAP 0x85 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TELEVISION 0x86 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEBLOCK_FEEDER 0x87 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x88 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SLOT_MACHINE 0x89 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROULETTE 0x8A + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_8D 0x8D + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_RUNNING_SHOES_INSTRUCTION 0x8E + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_QUESTIONNAIRE 0x8F + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE 0x90 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT 0x96 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB 0x98 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x9E + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x9F + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BERRY_TREE_SOIL 0xA0 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA1 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA2 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA3 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA4 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA5 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA6 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA7 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA8 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA9 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAA + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAB + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAC + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAD + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAE + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAF A + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_PC 0xB0 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_REGISTER_PC 0xB1 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B2 0xB2 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B3 0xB3 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B4 0xB4 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B5 0xB5 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B6 0xB6 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B7 0xB7 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BALLOON 0xB8 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B9 0xB9 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_GLITTER_MAT 0xBA + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_JUMP_MAT 0xBB + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SPIN_MAT 0xBC + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SOUND_MAT 0xBD + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BE 0xBE + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BF 0xBF + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BED 0xC0 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C1 0xC1 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C2 0xC2 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C3 0xC3 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_TV_SHIELD 0xC4 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C5 0xC5 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C6 0xC6 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_POSTER 0xC7 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C8 0xC8 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C9 0xC9 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CA 0xCA + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CB 0xCB + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CC 0xCC + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CD 0xCD + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CE 0xCE + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CF 0xCF + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MUDDY_SLOPE 0xD0 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BUMPY_SLOPE 0xD1 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR 0xD2 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_VERTICAL_RAIL 0xD3 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_HORIZONTAL_RAIL 0xD4 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_VERTICAL_RAIL 0xD5 + TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HORIZONTAL_RAIL 0xD6 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD7 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD8 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD9 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDA + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDB + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDC + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDD + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDE + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDF + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PICTURE_BOOK_SHELF 0xE0 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BOOKSHELF 0xE1 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEMON_CENTER_BOOKSHELF 0xE2 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_VASE 0xE3 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRASH_CAN 0xE4 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SHOP_SHELF 0xE5 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BLUEPRINT 0xE6 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_2 0xE7 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WIRELESS_BOX_RESULTS 0xE8 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRAINER_HILL_TIMER 0xE9 + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNKNOWN_CLOSED_DOOR 0xEA + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEB + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEC + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xED + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEE + TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEF +}; + +// only used as default case for checking jump landing in field_ground_effect. +bool8 ShouldDoJumpLandingDustEffect(u8 var) +{ + return TRUE; +} + +bool8 MetatileBehavior_IsEncounterTile(u8 var) +{ + if ((sTileBitAttributes[var] & TILE_FLAG_ENCOUNTER_TILE) != 0) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsJumpEast(u8 var) +{ + if (var == MB_JUMP_EAST) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsJumpWest(u8 var) +{ + if (var == MB_JUMP_WEST) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsJumpNorth(u8 var) +{ + if (var == MB_JUMP_NORTH) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsJumpSouth(u8 var) +{ + if (var == MB_JUMP_SOUTH) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPokeGrass(u8 var) +{ + if (var == MB_TALL_GRASS || var == MB_LONG_GRASS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSandOrDeepSand(u8 var) +{ + if (var == MB_SAND || var == MB_DEEP_SAND) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsDeepSand(u8 var) +{ + if (var == MB_DEEP_SAND) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsReflective(u8 var) +{ + if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_1A || var == MB_ICE || var == MB_SOOTOPOLIS_DEEP_WATER || var == MB_REFLECTION_UNDER_BRIDGE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsIce(u8 var) +{ + if (var == MB_ICE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWarpDoor(u8 var) +{ + if (var == MB_ANIMATED_DOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsDoor(u8 var) +{ + if (var == MB_8D || var == MB_ANIMATED_DOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsEscalator(u8 var) +{ + if (var == MB_UP_ESCALATOR || var == MB_DOWN_ESCALATOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_04(u8 var) // unused +{ + if (var == MB_04) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsLadder(u8 var) +{ + if (var == MB_LADDER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsNonAnimDoor(u8 var) +{ + if (var == MB_NON_ANIMATED_DOOR || var == MB_WATER_DOOR || var == MB_DEEP_SOUTH_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsDeepSouthWarp(u8 var) +{ + if (var == MB_DEEP_SOUTH_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 var) +{ + if ((sTileBitAttributes[var] & TILE_FLAG_SURFABLE) != 0) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsEastArrowWarp(u8 var) +{ + if (var == MB_EAST_ARROW_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWestArrowWarp(u8 var) +{ + if (var == MB_WEST_ARROW_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsNorthArrowWarp(u8 var) +{ + if (var == MB_NORTH_ARROW_WARP || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSouthArrowWarp(u8 var) +{ + if (var == MB_SOUTH_ARROW_WARP || var == MB_WATER_SOUTH_ARROW_WARP || var == MB_SHOAL_CAVE_ENTRANCE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsArrowWarp(u8 var) // unused +{ + u8 ret = FALSE; + + if (MetatileBehavior_IsEastArrowWarp(var) + || MetatileBehavior_IsWestArrowWarp(var) + || MetatileBehavior_IsNorthArrowWarp(var) + || MetatileBehavior_IsSouthArrowWarp(var)) + { + ret = TRUE; + } + + return ret; +} + +bool8 MetatileBehavior_IsMoveTile(u8 var) +{ + if ((var >= MB_WALK_EAST && var <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR) || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT) + || var == MB_MUDDY_SLOPE || var == MB_CRACKED_FLOOR || var == MB_WATERFALL || var == MB_ICE || var == MB_SECRET_BASE_JUMP_MAT || var == MB_SECRET_BASE_SPIN_MAT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsIce_2(u8 var) +{ + if (var == MB_ICE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 var) +{ + if (var == MB_TRICK_HOUSE_PUZZLE_8_FLOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_05(u8 var) +{ + if (var == MB_05) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWalkNorth(u8 var) +{ + if (var == MB_WALK_NORTH) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWalkSouth(u8 var) +{ + if (var == MB_WALK_SOUTH) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWalkWest(u8 var) +{ + if (var == MB_WALK_WEST) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWalkEast(u8 var) +{ + if (var == MB_WALK_EAST) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsNorthwardCurrent(u8 var) +{ + if (var == MB_NORTHWARD_CURRENT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSouthwardCurrent(u8 var) +{ + if (var == MB_SOUTHWARD_CURRENT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWestwardCurrent(u8 var) +{ + if (var == MB_WESTWARD_CURRENT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsEastwardCurrent(u8 var) +{ + if (var == MB_EASTWARD_CURRENT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSlideNorth(u8 var) +{ + if (var == MB_SLIDE_NORTH) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSlideSouth(u8 var) +{ + if (var == MB_SLIDE_SOUTH) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSlideWest(u8 var) +{ + if (var == MB_SLIDE_WEST) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSlideEast(u8 var) +{ + if (var == MB_SLIDE_EAST) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCounter(u8 var) +{ + if (var == MB_COUNTER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir) +{ + if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it. + return FALSE; + else if (tile == MB_TELEVISION) // is the player's north tile a TV? + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPC(u8 var) +{ + if (var == MB_PC) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCableBoxResults1(u8 var) +{ + if (var == MB_CABLE_BOX_RESULTS_1) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseOpen(u8 var) +{ + if (var == MB_SECRET_BASE_SPOT_RED_CAVE_OPEN || var == MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN + || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN || var == MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN + || var == MB_SECRET_BASE_SPOT_SHRUB_OPEN || var == MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN + || var == MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseCave(u8 var) +{ + if (var == MB_SECRET_BASE_SPOT_RED_CAVE || var == MB_SECRET_BASE_SPOT_BROWN_CAVE || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE || var == MB_SECRET_BASE_SPOT_BLUE_CAVE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseTree(u8 var) +{ + if (var == MB_SECRET_BASE_SPOT_TREE_LEFT || var == MB_SECRET_BASE_SPOT_TREE_RIGHT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseShrub(u8 var) +{ + if (var == MB_SECRET_BASE_SPOT_SHRUB) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBasePC(u8 var) +{ + if (var == MB_SECRET_BASE_PC) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8 var) +{ + if (var == MB_SECRET_BASE_REGISTER_PC) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_B2(u8 var) // unused +{ + if (var == MB_B2) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_B3(u8 var) +{ + if (var == MB_B3) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_B9(u8 var) +{ + if (var == MB_B9) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_C6(u8 var) +{ + if (var == MB_C6) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBasePoster(u8 var) +{ + if (var == MB_SECRET_BASE_POSTER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsNormal(u8 var) +{ + if (var == MB_NORMAL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_B7(u8 var) +{ + if (var == MB_B7) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_B2_Duplicate(u8 var) // unused +{ + if (var == MB_B2) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_B5(u8 var) +{ + if (var == MB_B5) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_C3(u8 var) +{ + if (var == MB_C3) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_C2(u8 var) +{ + if (var == MB_C2) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseBalloon(u8 var) +{ + if (var == MB_SECRET_BASE_BALLOON) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_BE(u8 var) +{ + if (var == MB_BE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseSoundMat(u8 var) +{ + if (var == MB_SECRET_BASE_SOUND_MAT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8 var) +{ + if (var == MB_SECRET_BASE_GLITTER_MAT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_BF(u8 var) +{ + if (var == MB_BF) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8 var) +{ + if (var == MB_SECRET_BASE_TV_SHIELD) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_C5(u8 var) +{ + if (var == MB_C5) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_HasRipples(u8 var) +{ + if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_SOOTOPOLIS_DEEP_WATER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPuddle(u8 var) +{ + if (var == MB_PUDDLE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsTallGrass(u8 var) +{ + if (var == MB_TALL_GRASS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsLongGrass(u8 var) +{ + if (var == MB_LONG_GRASS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsBerryTreeSoil(u8 var) +{ + if (var == MB_BERRY_TREE_SOIL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsAsh(u8 var) +{ + if (var == MB_ASHGRASS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8 var) +{ + if (var == MB_25) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsBridge(u8 var) +{ + if ((var == MB_WARP_OR_BRIDGE || var == MB_71 || var == MB_ROUTE120_NORTH_BRIDGE_1 || var == MB_ROUTE120_NORTH_BRIDGE_2) + || (var == MB_ROUTE120_NORTH_BRIDGE_3 || var == MB_ROUTE120_NORTH_BRIDGE_4 || var == MB_7E || var == MB_ROUTE110_BRIDGE)) + return TRUE; + else + return FALSE; +} + +u8 MetatileBehavior_GetBridgeSth(u8 var) +{ + u8 result = var - MB_WARP_OR_BRIDGE; + if (result < 4) + return result; + + result = var - MB_ROUTE120_SOUTH_BRIDGE_1; + if (result < 2) + return 2; + + result = var - MB_ROUTE120_NORTH_BRIDGE_3; + if (result < 2) + return 3; + + return 0; +} + +u8 MetatileBehavior_8089510(u8 var) +{ + u8 result = var - MB_WARP_OR_BRIDGE; + + if (result < 4) + return 1; + else + return 0; +} + +bool8 MetatileBehavior_IsLandWildEncounter(u8 var) +{ + if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == FALSE && MetatileBehavior_IsEncounterTile(var) == TRUE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWaterWildEncounter(u8 var) +{ + if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == TRUE && MetatileBehavior_IsEncounterTile(var) == TRUE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_0B(u8 var) +{ + if (var == MB_0B) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMountain(u8 var) +{ + if (var == MB_MOUNTAIN_TOP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsDiveable(u8 var) +{ + if (var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsUnableToEmerge(u8 var) +{ + if (var == MB_NO_SURFACING || var == MB_SEAWEED_NO_SURFACING) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsShallowFlowingWater(u8 var) +{ + if (var == MB_SHALLOW_WATER || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP || var == MB_SHOAL_CAVE_ENTRANCE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsThinIce(u8 var) +{ + if (var == MB_THIN_ICE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCrackedIce(u8 var) +{ + if (var == MB_CRACKED_ICE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsDeepOrOceanWater(u8 var) +{ + if (var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMB_18_OrMB_1A(u8 var) // unused +{ + if (var == MB_18 || var == MB_1A) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8 var) +{ + if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) && MetatileBehavior_IsWaterfall(var) == FALSE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsEastBlocked(u8 var) +{ + if (var == MB_IMPASSABLE_EAST || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_SOUTHEAST || var == MB_C1 || var == MB_BE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWestBlocked(u8 var) +{ + if (var == MB_IMPASSABLE_WEST || var == MB_IMPASSABLE_NORTHWEST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_C1 || var == MB_BE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsNorthBlocked(u8 var) +{ + if (var == MB_IMPASSABLE_NORTH || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_NORTHWEST || var == MB_BED) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSouthBlocked(u8 var) +{ + if (var == MB_IMPASSABLE_SOUTH || var == MB_IMPASSABLE_SOUTHEAST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_BED) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsShortGrass(u8 var) +{ + if (var == MB_SHORT_GRASS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsHotSprings(u8 var) +{ + if (var == MB_HOT_SPRINGS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWaterfall(u8 var) +{ + if (var == MB_WATERFALL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsFortreeBridge(u8 var) +{ + if (var == MB_FORTREE_BRIDGE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8 var) +{ + if (var == MB_PACIFIDLOG_VERTICAL_LOG_1) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8 var) +{ + if (var == MB_PACIFIDLOG_VERTICAL_LOG_2) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8 var) +{ + if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_1) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8 var) +{ + if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_2) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPacifidlogLog(u8 var) +{ + if (var == MB_PACIFIDLOG_VERTICAL_LOG_1 || var == MB_PACIFIDLOG_VERTICAL_LOG_2 + || var == MB_PACIFIDLOG_HORIZONTAL_LOG_1 || var == MB_PACIFIDLOG_HORIZONTAL_LOG_2) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 var) +{ + if (var == MB_TRICK_HOUSE_PUZZLE_DOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsRegionMap(u8 var) +{ + if (var == MB_REGION_MAP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8 var) +{ + if (var == MB_CLOSED_SOOTOPOLIS_GYM_DOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsUnknownClosedDoor(u8 var) +{ + if (var == MB_UNKNOWN_CLOSED_DOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsRoulette(u8 var) // unused +{ + if (var == MB_ROULETTE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPokeblockFeeder(u8 var) +{ + if (var == MB_POKEBLOCK_FEEDER) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 var) +{ + if (var == MB_SECRET_BASE_JUMP_MAT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 var) +{ + if (var == MB_SECRET_BASE_SPIN_MAT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 var) +{ + if (var == MB_LAVARIDGE_GYM_B1F_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsLavaridge1FWarp(u8 var) +{ + if (var == MB_LAVARIDGE_GYM_1F_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsAquaHideoutWarp(u8 var) +{ + if (var == MB_AQUA_HIDEOUT_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsWarpOrBridge(u8 var) +{ + if (var == MB_WARP_OR_BRIDGE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMossdeepGymWarp(u8 var) +{ + if (var == MB_MOSSDEEP_GYM_WARP) + return TRUE; + else + return FALSE; +} + + +bool8 MetatileBehavior_IsSurfableFishableWater(u8 var) +{ + if (var == MB_POND_WATER || var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER + || var == MB_SOOTOPOLIS_DEEP_WATER || (var == MB_EASTWARD_CURRENT || var == MB_WESTWARD_CURRENT + || var == MB_NORTHWARD_CURRENT || var == MB_SOUTHWARD_CURRENT)) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMtPyreHole(u8 var) +{ + if (var == MB_MT_PYRE_HOLE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCrackedFloorHole(u8 var) +{ + if (var == MB_CRACKED_FLOOR_HOLE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCrackedFloor(u8 var) +{ + if (var == MB_CRACKED_FLOOR) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsMuddySlope(u8 var) +{ + if (var == MB_MUDDY_SLOPE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsBumpySlope(u8 var) +{ + if (var == MB_BUMPY_SLOPE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 var) +{ + if (var == MB_ISOLATED_VERTICAL_RAIL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 var) +{ + if (var == MB_ISOLATED_HORIZONTAL_RAIL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsVerticalRail(u8 var) +{ + if (var == MB_VERTICAL_RAIL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsHorizontalRail(u8 var) +{ + if (var == MB_HORIZONTAL_RAIL) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsSeaweed(u8 var) +{ + if (var == MB_SEAWEED || var == MB_SEAWEED_NO_SURFACING) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsRunningDisallowed(u8 var) +{ + if (var == MB_NO_RUNNING || var == MB_LONG_GRASS || var == MB_HOT_SPRINGS || MetatileBehavior_IsPacifidlogLog(var) != FALSE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCuttableGrass(u8 var) +{ + if (var == MB_TALL_GRASS || var == MB_LONG_GRASS || var == MB_ASHGRASS || var == MB_LONG_GRASS_SOUTH_EDGE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsRunningShoesInstruction(u8 var) +{ + if (var == MB_RUNNING_SHOES_INSTRUCTION) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPictureBookShelf(u8 var) +{ + if (var == MB_PICTURE_BOOK_SHELF) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsBookShelf(u8 var) +{ + if (var == MB_BOOKSHELF) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 var) +{ + if (var == MB_POKEMON_CENTER_BOOKSHELF) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsVase(u8 var) +{ + if (var == MB_VASE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsTrashCan(u8 var) +{ + if (var == MB_TRASH_CAN) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsShopShelf(u8 var) +{ + if (var == MB_SHOP_SHELF) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsBlueprint(u8 var) +{ + if (var == MB_BLUEPRINT) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsBattlePyramidWarp(u8 var) +{ + if (var == MB_BATTLE_PYRAMID_WARP) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsPlayerFacingWirelessBoxResults(u8 tile, u8 playerDir) +{ + if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it. + return FALSE; + else if (tile == MB_WIRELESS_BOX_RESULTS) // is the player's north tile the monitor with results? + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir) +{ + if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it. + return FALSE; + else if (tile == MB_CABLE_BOX_RESULTS_2) // is the player's north tile the monitor with results? + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsQuestionnaire(u8 var) +{ + if (var == MB_QUESTIONNAIRE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsLongGrass_Duplicate(u8 var) +{ + if (var == MB_LONG_GRASS) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsLongGrassSouthEdge(u8 var) +{ + if (var == MB_LONG_GRASS_SOUTH_EDGE) + return TRUE; + else + return FALSE; +} + +bool8 MetatileBehavior_IsTrainerHillTimer(u8 var) +{ + if (var == MB_TRAINER_HILL_TIMER) + return TRUE; + else + return FALSE; +} From 6f22bf385d5aa603ec606610d2d2b1f47f500fb0 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 29 Sep 2017 17:34:39 -0500 Subject: [PATCH 051/182] Extract baseroms from battle_anim_80FE840 --- asm/battle_anim_80FE840.s | 2 +- data/battle_anim_80FE840.s | 3816 ++++++++++++++++++++++++++- data/item_use.s | 2 +- graphics/unknown/unknown_593C80.png | Bin 0 -> 286 bytes graphics/unknown/unknown_593FFC.bin | Bin 0 -> 4096 bytes 5 files changed, 3759 insertions(+), 61 deletions(-) create mode 100644 graphics/unknown/unknown_593C80.png create mode 100644 graphics/unknown/unknown_593FFC.bin diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index f35b2f7da3..441239162b 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -21902,7 +21902,7 @@ _0810987E: muls r1, r3 lsls r1, 16 asrs r1, 16 - ldr r0, =gUnknown_085955CE + ldr r0, =gUnknown_085955CC+2 adds r2, r0 movs r3, 0 ldrsh r2, [r2, r3] diff --git a/data/battle_anim_80FE840.s b/data/battle_anim_80FE840.s index 4b1a4d0470..78631ee6ed 100644 --- a/data/battle_anim_80FE840.s +++ b/data/battle_anim_80FE840.s @@ -4,176 +4,3874 @@ .section .rodata .align 2, 0 +gUnknown_085920F0:: @ 85920F0 + .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005 + .2byte 0x0008, 0x0005, 0x000a, 0x0005, 0x000c, 0x0005, 0x000e, 0x0005 + .2byte 0xfffe, 0x0000 + + .align 2 +gUnknown_08592114:: @ 8592114 + .4byte gUnknown_085920F0 + + .align 2 +gUnknown_08592118:: @ 8592118 + spr_template 0x2753, 0x2753, gUnknown_08524944, gUnknown_08592114, NULL, gDummySpriteAffineAnimTable, sub_80FE840 + spr_template 0x2754, 0x2754, gUnknown_08524944, gUnknown_08592114, NULL, gDummySpriteAffineAnimTable, sub_80FE840 + spr_template 0x2751, 0x2751, gUnknown_08524944, gUnknown_08592114, NULL, gDummySpriteAffineAnimTable, sub_80FE840 + + .align 2 +gUnknown_08592160:: @ 8592160 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592168:: @ 8592168 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592170:: @ 8592170 + .2byte 0x0002, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592178:: @ 8592178 + .2byte 0x0003, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592180:: @ 8592180 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592188:: @ 8592188 + .2byte 0x0005, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592190:: @ 8592190 + .2byte 0x0006, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592198:: @ 8592198 + .2byte 0x0007, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085921A0:: @ 85921A0 + .2byte 0x0008, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085921A8:: @ 85921A8 + .4byte gUnknown_08592160 + .4byte gUnknown_08592168 + .4byte gUnknown_08592170 + .4byte gUnknown_08592178 + .4byte gUnknown_08592180 + .4byte gUnknown_08592188 + .4byte gUnknown_08592190 + + .align 2 +gUnknown_085921C4:: @ 85921C4 + .4byte gUnknown_08592198 + + .align 2 +gUnknown_085921C8:: @ 85921C8 + .4byte gUnknown_085921A0 + + .align 2 +gUnknown_085921CC:: @ 85921CC + .2byte 0xfffb, 0xfffb, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085921DC:: @ 85921DC + .4byte gUnknown_085921CC + + .align 2 +gUnknown_085921E0:: @ 859216E0 + spr_template 0x27a3, 0x27a3, gUnknown_08524A8C, gUnknown_085921C8, NULL, gUnknown_085921DC, sub_80FE8E0 + + .align 2 +gUnknown_085921F8:: @ 859216F8 + spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_085921A8, NULL, gDummySpriteAffineAnimTable, sub_80FE930 + + .align 2 gUnknown_08592210:: @ 8592210 - .incbin "baserom.gba", 0x592210, 0x4f0 + spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_085921C4, NULL, gDummySpriteAffineAnimTable, sub_80FE988 + .align 2 +gUnknown_08592228:: @ 8592228 + .2byte 0x0140, 0x0140, 0x0000, 0x0000, 0xfff2, 0xfff2, 0x0100, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08592240:: @ 8592240 + .4byte gUnknown_08592228 + + .align 2 +gUnknown_08592244:: @ 85922144 + spr_template 0x27fb, 0x27fb, gUnknown_085249C4, gDummySpriteAnimTable, NULL, gUnknown_08592240, sub_80FE8E0 + + .align 2 +gUnknown_0859225C:: @ 859225C + .2byte 0xfffb, 0xfffb, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859226C:: @ 859226C + .4byte gUnknown_0859225C + + .align 2 +gUnknown_08592270:: @ 8592270 + spr_template 0x27a3, 0x27a3, gUnknown_08524A8C, gUnknown_085921C8, NULL, gUnknown_0859226C, sub_80FEAD8 + + .align 2 +gUnknown_08592288:: @ 8592288 + spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_085921A8, NULL, gDummySpriteAffineAnimTable, sub_80FEB44 + + .align 2 +gUnknown_085922A0:: @ 85922A0 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085922A8:: @ 85922A8 + .2byte 0x0004, 0x0007, 0x0008, 0x0007, 0xfffe, 0x0000 + + .align 2 +gUnknown_085922B4:: @ 85922B4 + .4byte gUnknown_085922A0 + .4byte gUnknown_085922A8 + + .align 2 +gUnknown_085922BC:: @ 85922BC + spr_template 0x2716, 0x2716, gUnknown_0852490C, gUnknown_085922B4, NULL, gDummySpriteAffineAnimTable, sub_80FEC48 + + .align 2 +gUnknown_085922D4:: @ 85922D4 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085922DC:: @ 85922DC + .2byte 0x0004, 0x0007, 0xffff, 0x0000 + + .align 2 +gUnknown_085922E4:: @ 85922E4 + .4byte gUnknown_085922D4 + .4byte gUnknown_085922DC + + .align 2 +gUnknown_085922EC:: @ 85922EC + spr_template 0x27ae, 0x27ae, gUnknown_0852490C, gUnknown_085922E4, NULL, gDummySpriteAffineAnimTable, sub_80FED28 + + .align 2 +gUnknown_08592304:: @ 8592304 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859230C:: @ 859230C + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592314:: @ 8592314 + .4byte gUnknown_08592304 + + .align 2 +gUnknown_08592318:: @ 8592318 + .4byte gUnknown_0859230C + + .align 2 +gUnknown_0859231C:: @ 859231C + spr_template 0x27af, 0x27af, gUnknown_0852490C, gUnknown_08592314, NULL, gDummySpriteAffineAnimTable, sub_80FEE78 + + .align 2 +gUnknown_08592334:: @ 8592334 + spr_template 0x27af, 0x27af, gUnknown_08524904, gUnknown_08592318, NULL, gDummySpriteAffineAnimTable, sub_80FEF44 + + .align 2 +gUnknown_0859234C:: @ 859234C + .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005 + .2byte 0x0010, 0x0005, 0x0014, 0x0005, 0x0010, 0x0005, 0x000c, 0x0005 + .2byte 0x0008, 0x0005, 0x0004, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_08592378:: @ 8592378 + .2byte 0x0018, 0x0005, 0x001c, 0x0005, 0x0020, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08592388:: @ 8592388 + .4byte gUnknown_0859234C + .4byte gUnknown_08592378 + + .align 2 +gUnknown_08592390:: @ 8592390 + spr_template 0x274f, 0x274f, gUnknown_0852490C, gUnknown_08592388, NULL, gDummySpriteAffineAnimTable, sub_80FEFFC + + .align 2 +gUnknown_085923A8:: @ 85923A8 + spr_template 0x274f, 0x274f, gUnknown_0852490C, gUnknown_08592388, NULL, gDummySpriteAffineAnimTable, sub_80FF268 + + .align 2 +gUnknown_085923C0:: @ 85923C0 + .2byte 0x0000, 0x0003, 0x0000, 0x0043, 0x0000, 0x00c3, 0x0000, 0x0083, 0xfffe, 0x0000 + + .align 2 +gUnknown_085923D4:: @ 85923D4 + .4byte gUnknown_085923C0 + + .align 2 +gUnknown_085923D8:: @ 85923D8 + spr_template 0x27b0, 0x27b0, gUnknown_08524934, gUnknown_085923D4, NULL, gDummySpriteAffineAnimTable, sub_80FF0F4 + + .align 2 +gUnknown_085923F0:: @ 85923F0 + .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08592400:: @ 8592400 + .4byte gUnknown_085923F0 + + .align 2 +gUnknown_08592404:: @ 8592404 + spr_template 0x27be, 0x27be, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08592400, sub_80FF0F4 + + .align 2 +gUnknown_0859241C:: @ 859241C + .2byte 0x0000, 0x0004, 0x0020, 0x0004, 0x0040, 0x0004, 0x0060, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08592430:: @ 8592430 + .2byte 0x0000, 0x0044, 0x0020, 0x0044, 0x0040, 0x0044, 0x0060, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_08592444:: @ 8592444 + .4byte gUnknown_0859241C + .4byte gUnknown_08592430 + + .align 2 +gUnknown_0859244C:: @ 859244C + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff5, 0x0000, 0x0600, 0x0000, 0x000b, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859246C:: @ 859246C + .2byte 0xff00, 0x0100, 0x0000, 0x0000, 0x000b, 0x0000, 0x0600, 0x0000, 0xfff5, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859248C:: @ 859248C + .4byte gUnknown_0859244C + .4byte gUnknown_0859246C + + .align 2 +gUnknown_08592494:: @ 8592494 + spr_template 0x27ca, 0x27ca, gUnknown_0852499C, gUnknown_08592444, NULL, gUnknown_0859248C, sub_80FF374 + + .align 2 +gUnknown_085924AC:: @ 85924AC + .2byte 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0030, 0x0e00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085924C4:: @ 85924C4 + .2byte 0xfff0, 0xfff0, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085924D4:: @ 85924D4 + .4byte gUnknown_085924AC + .4byte gUnknown_085924C4 + + .align 2 +gUnknown_085924DC:: @ 85924DC + spr_template 0x27a3, 0x27a3, gUnknown_085249CC, gUnknown_085921C8, NULL, gUnknown_085924D4, sub_80FF698 + + .align 2 +gUnknown_085924F4:: @ 85924F4 + .2byte 0x0000, 0x0007, 0x0010, 0x0007, 0x0020, 0x0007, 0x0030, 0x0007, 0xffff, 0x0000 + + .align 2 +gUnknown_08592508:: @ 8592508 + .2byte 0x0000, 0x0047, 0x0010, 0x0047, 0x0020, 0x0047, 0x0030, 0x0047, 0xffff, 0x0000 + + .align 2 +gUnknown_0859251C:: @ 859251C + .2byte 0x0000, 0x0007, 0x0010, 0x0007, 0x0020, 0x0007, 0xffff, 0x0000 + + .align 2 +gUnknown_0859252C:: @ 859252C + .2byte 0x0000, 0x0047, 0x0010, 0x0047, 0x0020, 0x0047, 0xffff, 0x0000 + + .align 2 +gUnknown_0859253C:: @ 859253C + .4byte gUnknown_085924F4 + .4byte gUnknown_08592508 + .4byte gUnknown_0859251C + .4byte gUnknown_0859252C + + .align 2 +gUnknown_0859254C:: @ 859254C + spr_template 0x27ef, 0x27ef, gUnknown_08524914, gUnknown_0859253C, NULL, gDummySpriteAffineAnimTable, sub_80FF768 + + .align 2 +gUnknown_08592564:: @ 8592564 + spr_template 0x27ef, 0x27ef, gUnknown_08524914, gUnknown_0859253C, NULL, gDummySpriteAffineAnimTable, sub_80FF7EC + + .align 2 +gUnknown_0859257C:: @ 859257C + .2byte 0x0003, 0x0003, 0x0000, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_08592588:: @ 8592588 + .4byte gUnknown_0859257C + + .align 2 +gUnknown_0859258C:: @ 859258C + spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_08592588, NULL, gDummySpriteAffineAnimTable, sub_80FF934 + + .align 2 +gUnknown_085925A4:: @ 85925A4 + .2byte 0x0000, 0x001e, 0xffff, 0x0000 + + .align 2 +gUnknown_085925AC:: @ 85925AC + .4byte gUnknown_085925A4 + + .align 2 +gUnknown_085925B0:: @ 85925B0 + .2byte 0x0000, 0x0000, 0x0afc, 0x0000, 0x0000, 0x0000, 0x1404, 0x0000 + .2byte 0x0000, 0x0000, 0x0afc, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085925D0:: @ 85925D0 + .2byte 0x0000, 0x0000, 0x02ff, 0x0000, 0x0000, 0x0000, 0x0401, 0x0000 + .2byte 0x0000, 0x0000, 0x04ff, 0x0000, 0x0000, 0x0000, 0x0401, 0x0000 + .2byte 0x0000, 0x0000, 0x04ff, 0x0000, 0x0000, 0x0000, 0x0201, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08592608:: @ 8592608 + .4byte gUnknown_085925B0 + .4byte gUnknown_085925D0 + + .align 2 +gUnknown_08592610:: @ 8592610 + spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_08592608, sub_80FFB18 + + .align 2 +gUnknown_08592628:: @ 8592628 + spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_08592608, sub_80FFBF4 + + .align 2 +gUnknown_08592640:: @ 8592640 + .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0008, 0x0004, 0x000c, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08592654:: @ 8592654 + .4byte gUnknown_08592640 + + .align 2 +gUnknown_08592658:: @ 8592658 + spr_template 0x27d3, 0x27d3, gUnknown_0852490C, gUnknown_08592654, NULL, gDummySpriteAffineAnimTable, sub_80FFC70 + + .align 2 +gUnknown_08592670:: @ 8592670 + spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_08592608, sub_80FFCB4 + + .align 2 +gUnknown_08592688:: @ 8592688 + .2byte 0x0000, 0x0000, 0x0300, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08592698:: @ 8592698 + .2byte 0x0000, 0xfff6, 0x0300, 0x0000, 0x0000, 0xfffa, 0x0300, 0x0000 + .2byte 0x0000, 0xfffe, 0x0300, 0x0000, 0x0000, 0x0000, 0x0300, 0x0000 + .2byte 0x0000, 0x0002, 0x0300, 0x0000, 0x0000, 0x0006, 0x0300, 0x0000 + .2byte 0x0000, 0x000a, 0x0300, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085926D8:: @ 85926D8 + .4byte gUnknown_08592688 + .4byte gUnknown_08592698 + .4byte gUnknown_085925B0 + .4byte gUnknown_085925D0 + + .align 2 +gUnknown_085926E8:: @ 85926E8 + spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_085926D8, sub_80FFDBC + + .align 2 gUnknown_08592700:: @ 8592700 - .incbin "baserom.gba", 0x592700, 0x78 + .2byte 0x1805, 0x0001, 0x0004, 0x1008, 0x00ff, 0x0002, 0x1008, 0x0001 + .2byte 0x0002, 0x1008, 0x0001, 0x0002, 0x1008, 0x0001, 0x0010, 0x0000 + .2byte 0x007f, 0x0000 + .align 2 +gUnknown_08592724:: @ 8592724 + .2byte 0x001c, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859272C:: @ 859272C + .2byte 0x0020, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592734:: @ 8592734 + .2byte 0x0014, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859273C:: @ 859273C + .2byte 0x001c, 0x0041, 0xffff, 0x0000 + + .align 2 +gUnknown_08592744:: @ 8592744 + .2byte 0x0010, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859274C:: @ 859274C + .2byte 0x0010, 0x0041, 0xffff, 0x0000 + + .align 2 +gUnknown_08592754:: @ 8592754 + .2byte 0x001c, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859275C:: @ 859275C + .4byte gUnknown_08592724 + .4byte gUnknown_0859272C + .4byte gUnknown_08592734 + .4byte gUnknown_0859273C + .4byte gUnknown_08592744 + .4byte gUnknown_0859274C + .4byte gUnknown_08592754 + + .align 2 gUnknown_08592778:: @ 8592778 - .incbin "baserom.gba", 0x592778, 0x100 + spr_template 0x274f, 0x274f, gUnknown_0852490C, gUnknown_0859275C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 +gUnknown_08592790:: @ 8592790 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_085927A8:: @ 85927A8 + .4byte gUnknown_08592790 + + .align 2 +gUnknown_085927AC:: @ 85927AC + spr_template 0x27af, 0x27af, gUnknown_08524904, gUnknown_08592318, NULL, gDummySpriteAffineAnimTable, sub_8100640 + + .align 2 +gUnknown_085927C4:: @ 85927C4 + spr_template 0x27af, 0x27af, gUnknown_0852496C, gUnknown_08592314, NULL, gUnknown_085927A8, sub_8100640 + + .align 2 +gUnknown_085927DC:: @ 85927DC + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f6, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_085927F4:: @ 85927F4 + .2byte 0x00c0, 0x00c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f4, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_0859280C:: @ 859280C + .2byte 0x008f, 0x008f, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f1, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08592824:: @ 8592824 + .4byte gUnknown_085927DC + + .align 2 +gUnknown_08592828:: @ 8592828 + .4byte gUnknown_085927F4 + + .align 2 +gUnknown_0859282C:: @ 859282C + .4byte gUnknown_0859280C + + .align 2 +gUnknown_08592830:: @ 8592830 + spr_template 0x281f, 0x281f, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08592824, sub_8100640 + + .align 2 +gUnknown_08592848:: @ 8592848 + spr_template 0x281f, 0x281f, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08592828, sub_8100640 + + .align 2 +gUnknown_08592860:: @ 8592860 + spr_template 0x281f, 0x281f, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859282C, sub_8100640 + + .align 2 gUnknown_08592878:: @ 8592878 - .incbin "baserom.gba", 0x592878, 0x458 + .2byte 0x001f, 0x027f, 0x03ff, 0x03e0, 0x7dc5, 0x7d56, 0x7eb6, 0x0000 + .align 2 +gUnknown_08592888:: @ 8592888 + spr_template 0x281a, 0x281a, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8100898 + + .align 2 +gUnknown_085928A0:: @ 85928A0 + .2byte 0x0040, 0x0003, 0x0050, 0x0003, 0x0060, 0x0003, 0x0070, 0x0006, 0xffff, 0x0000 + + .align 2 +gUnknown_085928B4:: @ 85928B4 + .2byte 0x0040, 0x0043, 0x0050, 0x0043, 0x0060, 0x0043, 0x0070, 0x0046, 0xffff, 0x0000 + + .align 2 +gUnknown_085928C8:: @ 85928C8 + .4byte gUnknown_085928A0 + .4byte gUnknown_085928B4 + + .align 2 +gUnknown_085928D0:: @ 85928D0 + spr_template 0x2748, 0x2748, gUnknown_08524914, gUnknown_085928C8, NULL, gDummySpriteAffineAnimTable, sub_8100A50 + + .align 2 +gUnknown_085928E8:: @ 85928E8 + spr_template 0x282f, 0x282f, gUnknown_08524914, gUnknown_085928C8, NULL, gDummySpriteAffineAnimTable, sub_8100A50 + + .align 2 +gUnknown_08592900:: @ 8592900 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0x0040, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08592918:: @ 8592918 + .4byte gUnknown_08592900 + + .align 2 +gUnknown_0859291C:: @ 859291C + spr_template 0x2725, 0x2725, gUnknown_08524914, gUnknown_08592918, NULL, gDummySpriteAffineAnimTable, sub_81009F8 + + .align 2 +gUnknown_08592934:: @ 8592934 + spr_template 0x2726, 0x2726, gUnknown_08524914, gUnknown_08592918, NULL, gDummySpriteAffineAnimTable, sub_81009F8 + + .align 2 +gUnknown_0859294C:: @ 859294C + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859295C:: @ 859295C + .2byte 0x0100, 0x0100, 0x0020, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859296C:: @ 859296C + .2byte 0x0100, 0x0100, 0x0040, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859297C:: @ 859297C + .2byte 0x0100, 0x0100, 0x0060, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859298C:: @ 859298C + .2byte 0x0100, 0x0100, 0x0080, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859299C:: @ 859299C + .2byte 0x0100, 0x0100, 0x00a0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085929AC:: @ 85929AC + .2byte 0x0100, 0x0100, 0x00c0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085929BC:: @ 85929BC + .2byte 0x0100, 0x0100, 0x00e0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085929CC:: @ 85929CC + .4byte gUnknown_0859294C + .4byte gUnknown_0859295C + .4byte gUnknown_0859296C + .4byte gUnknown_0859297C + .4byte gUnknown_0859298C + .4byte gUnknown_0859299C + .4byte gUnknown_085929AC + .4byte gUnknown_085929BC + + .align 2 +gUnknown_085929EC:: @ 85929EC + spr_template 0x279f, 0x279f, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085929CC, sub_8100A94 + + .align 2 +gUnknown_08592A04:: @ 8592A04 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A18:: @ 8592A18 + .4byte gUnknown_08592A04 + + .align 2 +gUnknown_08592A1C:: @ 8592A1C + spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_08592A18, NULL, gDummySpriteAffineAnimTable, sub_8100AE0 + + .align 2 +gUnknown_08592A34:: @ 8592A34 + spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_08592A18, NULL, gDummySpriteAffineAnimTable, sub_8100B88 + + .align 2 +gUnknown_08592A4C:: @ 8592A4C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A54:: @ 8592A54 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A5C:: @ 8592A5C + .2byte 0x0008, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A64:: @ 8592A64 + .2byte 0x000c, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A6C:: @ 8592A6C + .2byte 0x0010, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A74:: @ 8592A74 + .2byte 0x0014, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A7C:: @ 8592A7C + .2byte 0x0000, 0x0081, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A84:: @ 8592A84 + .2byte 0x0004, 0x0081, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A8C:: @ 8592A8C + .2byte 0x0008, 0x0081, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A94:: @ 8592A94 + .2byte 0x000c, 0x0081, 0xffff, 0x0000 + + .align 2 +gUnknown_08592A9C:: @ 8592A9C + .4byte gUnknown_08592A4C + .4byte gUnknown_08592A54 + .4byte gUnknown_08592A5C + .4byte gUnknown_08592A64 + .4byte gUnknown_08592A6C + .4byte gUnknown_08592A74 + .4byte gUnknown_08592A7C + .4byte gUnknown_08592A84 + .4byte gUnknown_08592A8C + .4byte gUnknown_08592A94 + + .align 2 +gUnknown_08592AC4:: @ 8592AC4 + spr_template 0x2758, 0x2758, gUnknown_0852490C, gUnknown_08592A9C, NULL, gDummySpriteAffineAnimTable, sub_8100E1C + + .align 2 +gUnknown_08592ADC:: @ 8592ADC + spr_template 0x2828, 0x2828, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8100EF0 + + .align 2 +gUnknown_08592AF4:: @ 8592AF4 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08592B04:: @ 8592B04 + .2byte 0x0000, 0x0000, 0x0c02, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000 + .2byte 0x0000, 0x0000, 0x18fe, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000 + .2byte 0x0000, 0x0000, 0x0c02, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08592B34:: @ 8592B34 + .4byte gUnknown_08592AF4 + .4byte gUnknown_08592B04 + + .align 2 +gUnknown_08592B3C:: @ 8592B3C + spr_template 0x2773, 0x2773, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08592B34, sub_81010CC + + .align 2 +gUnknown_08592B54:: @ 8592B54 + .2byte 0x0000, 0x0007, 0x0010, 0x0007, 0x0020, 0x0007, 0x0030, 0x0007 + .2byte 0x0040, 0x0007, 0x0050, 0x0007, 0x0060, 0x0007, 0x0070, 0x0007 + .2byte 0xfffe, 0x0000 + + .align 2 +gUnknown_08592B78:: @ 8592B78 + .4byte gUnknown_08592B54 + + .align 2 +gUnknown_08592B7C:: @ 8592B7C + spr_template 0x2741, 0x2741, gUnknown_08524914, gUnknown_08592B78, NULL, gDummySpriteAffineAnimTable, sub_810130C + + .align 2 +gUnknown_08592B94:: @ 8592B94 + spr_template 0x2741, 0x2741, gUnknown_08524914, gUnknown_08592B78, NULL, gDummySpriteAffineAnimTable, sub_810135C + + .align 2 +gUnknown_08592BAC:: @ 8592BAC + .2byte 0x0000, 0x000a, 0x0004, 0x000a, 0x0008, 0x000a, 0x000c, 0x000a + .2byte 0x0010, 0x001a, 0x0010, 0x0005, 0x0014, 0x0005, 0x0018, 0x000f + .2byte 0xffff, 0x0000 + + .align 2 +gUnknown_08592BD0:: @ 8592BD0 + .2byte 0x0000, 0x004a, 0x0004, 0x004a, 0x0008, 0x004a, 0x000c, 0x004a + .2byte 0x0010, 0x005a, 0x0010, 0x0045, 0x0014, 0x0045, 0x0018, 0x004f + .2byte 0xffff, 0x0000 + + .align 2 +gUnknown_08592BF4:: @ 8592BF4 + .4byte gUnknown_08592BAC + .4byte gUnknown_08592BD0 + + .align 2 +gUnknown_08592BFC:: @ 8592BFC + spr_template 0x2730, 0x2730, gUnknown_0852490C, gUnknown_08592BF4, NULL, gDummySpriteAffineAnimTable, sub_8101440 + + .align 2 +gUnknown_08592C14:: @ 8592C14 + .2byte 0x0000, 0x0028, 0xffff, 0x0000 + + .align 2 +gUnknown_08592C1C:: @ 8592C1C + .4byte gUnknown_08592C14 + + .align 2 +gUnknown_08592C20:: @ 8592C20 + .2byte 0x0014, 0x0014, 0x00e2, 0x0000, 0x0008, 0x0008, 0x1801, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000 + .2byte 0x0000, 0x0000, 0x1801, 0x0000, 0x7ffd, 0x000a, 0x0000, 0x0000 + + .align 2 +gUnknown_08592C50:: @ 8592C50 + .2byte 0x0014, 0x0014, 0x001e, 0x0000, 0x0008, 0x0008, 0x18ff, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000 + .2byte 0x0000, 0x0000, 0x18ff, 0x0000, 0x7ffd, 0x000a, 0x0000, 0x0000 + + .align 2 +gUnknown_08592C80:: @ 8592C80 + .4byte gUnknown_08592C20 + .4byte gUnknown_08592C50 + + .align 2 +gUnknown_08592C88:: @ 8592C88 + spr_template 0x27f4, 0x27f4, gUnknown_08524974, gUnknown_08592C1C, NULL, gUnknown_08592C80, sub_81014F4 + + .align 2 +gUnknown_08592CA0:: @ 8592CA0 + spr_template 0x271e, 0x271e, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81015AC + + .align 2 +gUnknown_08592CB8:: @ 8592CB8 + spr_template 0x271e, 0x271e, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101898 + + .align 2 gUnknown_08592CD0:: @ 8592CD0 - .incbin "baserom.gba", 0x592cd0, 0x1ec + .byte 0x40, 0x40, 0x00, 0xc0, 0xc0, 0x40, 0x20, 0xe0 + .align 2 +gUnknown_08592CD8:: @ 8592CD8 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101940 + + .align 2 +gUnknown_08592CF0:: @ 8592CF0 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101B90 + + .align 2 +gUnknown_08592D08:: @ 8592D08 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08592D1C:: @ 8592D1C + .2byte 0x0030, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08592D24:: @ 8592D24 + .4byte gUnknown_08592D08 + .4byte gUnknown_08592D1C + + .align 2 +gUnknown_08592D2C:: @ 8592D2C + spr_template 0x27c7, 0x27c7, gUnknown_08524914, gUnknown_08592D24, NULL, gDummySpriteAffineAnimTable, sub_8101F40 + + .align 2 +gUnknown_08592D44:: @ 8592D44 + spr_template 0x282e, 0x282e, gUnknown_08524914, gUnknown_08592D24, NULL, gDummySpriteAffineAnimTable, sub_8101FA8 + + .align 2 +gUnknown_08592D5C:: @ 8592D5C + spr_template 0x282e, 0x282e, gUnknown_08524914, gUnknown_08592D24, NULL, gDummySpriteAffineAnimTable, sub_8101FF0 + + .align 2 +gUnknown_08592D74:: @ 8592D74 + .2byte 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0004, 0x0018, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08592D88:: @ 8592D88 + .4byte gUnknown_08592D74 + + .align 2 +gUnknown_08592D8C:: @ 8592D8C + spr_template 0x27c8, 0x27c8, gUnknown_08524954, gUnknown_08592D88, NULL, gDummySpriteAffineAnimTable, sub_81020D8 + + .align 2 +gUnknown_08592DA4:: @ 8592DA4 + .2byte 0x0000, 0x0012, 0x0000, 0x0006, 0x0010, 0x0012, 0x0000, 0x0006 + .2byte 0x0010, 0x0006, 0x0020, 0x0012, 0x0010, 0x0006, 0x0020, 0x0006 + .2byte 0x0030, 0x0012, 0x0020, 0x0006, 0x0030, 0x0006, 0x0040, 0x0012 + .2byte 0x0030, 0x0006, 0x0040, 0x0036, 0xffff, 0x0000 + + .align 2 +gUnknown_08592DE0:: @ 8592DE0 + .4byte gUnknown_08592DA4 + + .align 2 +gUnknown_08592DE4:: @ 8592DE4 + spr_template 0x27c9, 0x27c9, gUnknown_08524914, gUnknown_08592DE0, NULL, gDummySpriteAffineAnimTable, sub_810217C + + .align 2 +gUnknown_08592DFC:: @ 8592DFC + spr_template 0x2721, 0x2721, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820 + + .align 2 +gUnknown_08592E14:: @ 8592E14 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003 + .2byte 0x0040, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_08592E2C:: @ 8592E2C + .4byte gUnknown_08592E14 + + .align 2 +gUnknown_08592E30:: @ 8592E30 + spr_template 0x272e, 0x272e, gUnknown_08524914, gUnknown_08592E2C, NULL, gDummySpriteAffineAnimTable, sub_80A77C8 + + .align 2 +gUnknown_08592E48:: @ 8592E48 + .2byte 0x0003, 0x0005, 0x0002, 0x0005, 0x0001, 0x0005, 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08592E5C:: @ 8592E5C + .4byte gUnknown_08592E48 + + .align 2 +gUnknown_08592E60:: @ 8592E60 + .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08592E70:: @ 8592E70 + .4byte gUnknown_08592E60 + + .align 2 +gUnknown_08592E74:: @ 8592E74 + spr_template 0x2722, 0x2722, gUnknown_08524AE4, gUnknown_08592E5C, NULL, gUnknown_08592E70, sub_8102268 + + .align 2 +gUnknown_08592E8C:: @ 8592E8C + .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08592EA0:: @ 8592EA0 + .4byte gUnknown_08592E8C + + .align 2 +gUnknown_08592EA4:: @ 8592EA4 + spr_template 0x2722, 0x2722, gUnknown_08524AE4, gUnknown_08592EA0, NULL, gUnknown_08592E70, sub_810234C + + .align 2 gUnknown_08592EBC:: @ 8592EBC - .incbin "baserom.gba", 0x592ebc, 0x30 + spr_template 0x27d2, 0x27d2, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81024E0 + .align 2 +gUnknown_08592ED4:: @ 8592ED4 + .2byte 0x0000, 0x0008, 0x0004, 0x0008, 0x0008, 0x0008, 0x000c, 0x0008, 0xfffe, 0x0000 + + .align 2 +gUnknown_08592EE8:: @ 8592EE8 + .4byte gUnknown_08592ED4 + + .align 2 gUnknown_08592EEC:: @ 8592EEC - .incbin "baserom.gba", 0x592eec, 0x134 + spr_template 0x27d3, 0x27d3, gUnknown_0852490C, gUnknown_08592EE8, NULL, gDummySpriteAffineAnimTable, sub_8102540 + .align 2 +gUnknown_08592F04:: @ 8592F04 + .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0003 + .2byte 0x0040, 0x0005, 0x0050, 0x0003, 0x0060, 0x0002, 0x0000, 0x0002 + .2byte 0xffff, 0x0000 + + .align 2 +gUnknown_08592F28:: @ 8592F28 + .4byte gUnknown_08592F04 + + .align 2 +gUnknown_08592F2C:: @ 8592F2C + spr_template 0x272f, 0x272f, gUnknown_08524914, gUnknown_08592F28, NULL, gDummySpriteAffineAnimTable, sub_80A77C8 + + .align 2 +gUnknown_08592F44:: @ 8592F44 + spr_template 0x2724, 0x2724, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8102844 + + .align 2 +gUnknown_08592F5C:: @ 8592F5C + .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_08592F70:: @ 8592F70 + .4byte gUnknown_08592F5C + + .align 2 +gUnknown_08592F74:: @ 8592F74 + spr_template 0x27d0, 0x27d0, gUnknown_08524914, gUnknown_08592F70, NULL, gDummySpriteAffineAnimTable, sub_8102BCC + + .align 2 +gUnknown_08592F8C:: @ 8592F8C + .2byte 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592F94:: @ 8592F94 + .2byte 0x0004, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592F9C:: @ 8592F9C + .2byte 0x0008, 0x0029, 0xffff, 0x0000 + + .align 2 +gUnknown_08592FA4:: @ 8592FA4 + .2byte 0x000c, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592FAC:: @ 8592FAC + .2byte 0x0010, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592FB4:: @ 8592FB4 + .2byte 0x0014, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592FBC:: @ 8592FBC + .2byte 0x0000, 0x008a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592FC4:: @ 8592FC4 + .2byte 0x0004, 0x008a, 0xffff, 0x0000 + + .align 2 +gUnknown_08592FCC:: @ 8592FCC + .4byte gUnknown_08592F8C + .4byte gUnknown_08592F94 + .4byte gUnknown_08592F9C + .4byte gUnknown_08592FA4 + .4byte gUnknown_08592FAC + .4byte gUnknown_08592FB4 + .4byte gUnknown_08592FBC + .4byte gUnknown_08592FC4 + + .align 2 +gUnknown_08592FEC:: @ 8592FEC + .2byte 0x000c, 0x000c, 0x1000, 0x0000, 0xfff4, 0xfff4, 0x1000, 0x0000 + .2byte 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593004:: @ 8593004 + .4byte gUnknown_08592FEC + + .align 2 +gUnknown_08593008:: @ 8593008 + spr_template 0x2758, 0x2758, gUnknown_085249CC, gUnknown_08592FCC, NULL, gUnknown_08593004, sub_8102CD4 + + .align 2 gUnknown_08593020:: @ 8593020 - .incbin "baserom.gba", 0x593020, 0xf4 + .2byte 0x2758, 0x7fff, 0x735f, 0x6adf, 0x623f, 0x59bf, 0x2771, 0x7fff + .2byte 0x6bf9, 0x57f4, 0x43ef, 0x33ea, 0x27c9, 0x7fff, 0x63ff, 0x47ff + .2byte 0x2bff, 0x0fff, 0x27bf, 0x7fff, 0x7f9a, 0x7f55, 0x7f10, 0x7ecc + .align 2 +gUnknown_08593050:: @ 8593050 + spr_template 0x2758, 0x2758, gUnknown_085249CC, gUnknown_08592FCC, NULL, gUnknown_08593004, sub_8102EB0 + + .align 2 +gUnknown_08593068:: @ 8593068 + spr_template 0x27d1, 0x27d1, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8102FB8 + + .align 2 +gUnknown_08593080:: @ 8593080 + .2byte 0x00a0, 0x00a0, 0x0000, 0x0000, 0x0004, 0x0004, 0x0100, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08593098:: @ 8593098 + .4byte gUnknown_08593080 + + .align 2 +gUnknown_0859309C:: @ 859309C + spr_template 0x2758, 0x2758, gUnknown_085249CC, gUnknown_08592FCC, NULL, gUnknown_08593098, sub_8103028 + + .align 2 +gUnknown_085930B4:: @ 85930B4 + .2byte 0x0000, 0x0042, 0x0010, 0x0042, 0x0020, 0x0042, 0x0030, 0x0042, 0xffff, 0x0000 + + .align 2 +gUnknown_085930C8:: @ 85930C8 + .2byte 0x0030, 0x0042, 0x0020, 0x0042, 0x0010, 0x0042, 0x0000, 0x0042, 0xffff, 0x0000 + + .align 2 +gUnknown_085930DC:: @ 85930DC + .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_085930F0:: @ 85930F0 + .2byte 0x0030, 0x0002, 0x0020, 0x0002, 0x0010, 0x0002, 0x0000, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_08593104:: @ 8593104 + .4byte gUnknown_085930B4 + .4byte gUnknown_085930DC + .4byte gUnknown_085930C8 + .4byte gUnknown_085930F0 + + .align 2 gUnknown_08593114:: @ 8593114 - .incbin "baserom.gba", 0x593114, 0x29c + spr_template 0x27e1, 0x27e1, gUnknown_08524914, gUnknown_08593104, NULL, gDummySpriteAffineAnimTable, sub_8103164 + .align 2 +gUnknown_0859312C:: @ 859312C + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x001e, 0x001e, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593144:: @ 8593144 + .2byte 0x0000, 0x0000, 0x0b04, 0x0000, 0x0000, 0x0000, 0x0bfc, 0x0000 + .2byte 0x7ffd, 0x0002, 0x0000, 0x0000, 0xffe2, 0xffe2, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0000, 0x0000 + .2byte 0x001e, 0x001e, 0x0800, 0x0000, 0x0000, 0x0000, 0x1000, 0x0000 + .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b04, 0x0000 + .2byte 0x0000, 0x0000, 0x0bfc, 0x0000, 0x7ffd, 0x0002, 0x0000, 0x0000 + .2byte 0xffe2, 0xffe2, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085931B4:: @ 85931B4 + .4byte gUnknown_0859312C + .4byte gUnknown_08593144 + + .align 2 +gUnknown_085931BC:: @ 85931BC + spr_template 0x2750, 0x2750, gUnknown_085249D4, gDummySpriteAnimTable, NULL, gUnknown_085931B4, sub_8103208 + + .align 2 +gUnknown_085931D4:: @ 85931D4 + spr_template 0x2750, 0x2750, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085931B4, sub_8103284 + + .align 2 +gUnknown_085931EC:: @ 85931EC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085931F4:: @ 85931F4 + .2byte 0x0000, 0x0041, 0xffff, 0x0000 + + .align 2 +gUnknown_085931FC:: @ 85931FC + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0010, 0x0004 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_0859321C:: @ 859321C + .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0x0010, 0x0044 + .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_0859323C:: @ 859323C + .4byte gUnknown_085931EC + .4byte gUnknown_085931F4 + .4byte gUnknown_085931FC + .4byte gUnknown_0859321C + + .align 2 +gUnknown_0859324C:: @ 859324C + spr_template 0x27e6, 0x27e6, gUnknown_08524914, gUnknown_0859323C, NULL, gDummySpriteAffineAnimTable, sub_8103390 + + .align 2 +gUnknown_08593264:: @ 8593264 + spr_template 0x2750, 0x2750, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103448 + + .align 2 +gUnknown_0859327C:: @ 859327C + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08593284:: @ 8593284 + .4byte gUnknown_0859327C + + .align 2 +gUnknown_08593288:: @ 8593288 + spr_template 0x2758, 0x2758, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103498 + + .align 2 +gUnknown_085932A0:: @ 85932A0 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810358C + + .align 2 +gUnknown_085932B8:: @ 85932B8 + spr_template 0x27a1, 0x27a1, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08597060, sub_8103620 + + .align 2 +gUnknown_085932D0:: @ 85932D0 + .2byte 0x0000, 0x0009, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085932E4:: @ 85932E4 + .4byte gUnknown_085932D0 + + .align 2 +gUnknown_085932E8:: @ 85932E8 + .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x0009, 0x0009, 0x1200, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593300:: @ 8593300 + .4byte gUnknown_085932E8 + + .align 2 +gUnknown_08593304:: @ 8593304 + spr_template 0x2717, 0x2717, gUnknown_08524974, gUnknown_085932E4, NULL, gUnknown_08593300, sub_80A77C8 + + .align 2 +gUnknown_0859331C:: @ 859331C + .2byte 0x0000, 0x0043, 0x0008, 0x0043, 0x0010, 0x0043, 0x0018, 0x0043 + .2byte 0x0020, 0x0043, 0x0028, 0x0043, 0x0030, 0x0043, 0xfffd, 0x0001 + .2byte 0xffff, 0x0000 + + .align 2 +gUnknown_08593340:: @ 8593340 + .4byte gUnknown_0859331C + + .align 2 +gUnknown_08593344:: @ 8593344 + spr_template 0x275b, 0x275b, gUnknown_08524934, gUnknown_08593340, NULL, gDummySpriteAffineAnimTable, sub_81037D8 + + .align 2 +gUnknown_0859335C:: @ 859335C + .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0014, 0x0000, 0x0c00, 0x0000 + .2byte 0x0000, 0x0000, 0x2000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859337C:: @ 859337C + .4byte gUnknown_0859335C + + .align 2 +gUnknown_08593380:: @ 8593380 + spr_template 0x2715, 0x2715, gUnknown_08524ADC, gDummySpriteAnimTable, NULL, gUnknown_0859337C, sub_810387C + + .align 2 +gUnknown_08593398:: @ 8593398 + spr_template 0x2713, 0x2713, gUnknown_08524B14, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81038C8 + + .align 2 gUnknown_085933B0:: @ 85933B0 - .incbin "baserom.gba", 0x5933b0, 0xf0 + spr_template 0x2713, 0x2713, gUnknown_08524A54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103AA4 + .align 2 +gUnknown_085933C8:: @ 85933C8 + .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0007, 0x0007, 0xc800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085933E0:: @ 85933E0 + .2byte 0x0005, 0x0005, 0x0a00, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000 + .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000 + .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000 + .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593420:: @ 8593420 + .4byte gUnknown_085933C8 + + .align 2 +gUnknown_08593424:: @ 8593424 + .4byte gUnknown_085933E0 + + .align 2 +gUnknown_08593428:: @ 8593428 + spr_template 0x27b3, 0x27b3, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_80A7820 + + .align 2 +gUnknown_08593440:: @ 8593440 + spr_template 0x27b4, 0x27b4, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_80A7820 + + .align 2 +gUnknown_08593458:: @ 8593458 + spr_template 0x2814, 0x2814, gUnknown_08524A1C, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_80A7820 + + .align 2 +gUnknown_08593470:: @ 8593470 + spr_template 0x2830, 0x2830, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593424, sub_8108C94 + + .align 2 +gUnknown_08593488:: @ 8593488 + spr_template 0x27bf, 0x27bf, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A78AC + + .align 2 gUnknown_085934A0:: @ 85934A0 - .incbin "baserom.gba", 0x5934a0, 0x148 + spr_template 0x27c2, 0x27c2, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103FE8 + .align 2 +gUnknown_085934B8:: @ 85934B8 + .2byte 0x0008, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085934C0:: @ 85934C0 + .4byte gUnknown_085934B8 + + .align 2 +gUnknown_085934C4:: @ 85934C4 + .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085934D4:: @ 85934D4 + .4byte gUnknown_085934C4 + + .align 2 +gUnknown_085934D8:: @ 85934D8 + spr_template 0x2774, 0x2774, gUnknown_0852496C, gUnknown_085934C0, NULL, gDummySpriteAffineAnimTable, sub_8104088 + + .align 2 +gUnknown_085934F0:: @ 85934F0 + spr_template 0x2774, 0x2774, gUnknown_0852496C, gUnknown_085934C0, NULL, gUnknown_085934D4, sub_810413C + + .align 2 +gUnknown_08593508:: @ 8593508 + .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593518:: @ 8593518 + .4byte gUnknown_08593508 + + .align 2 +gUnknown_0859351C:: @ 859351C + spr_template 0x2716, 0x2716, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08593518, sub_81041C4 + + .align 2 +gUnknown_08593534:: @ 8593534 + .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0004, 0x0000, 0x2800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859354C:: @ 859354C + .4byte gUnknown_08593534 + + .align 2 +gUnknown_08593550:: @ 8593550 + spr_template 0x2719, 0x2719, gUnknown_085249BC, gDummySpriteAnimTable, NULL, gUnknown_0859354C, sub_8104304 + + .align 2 +gUnknown_08593568:: @ 8593568 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0014, 0xffff, 0x0000 + + .align 2 +gUnknown_08593578:: @ 8593578 + .2byte 0x0000, 0x00c3, 0x0010, 0x00c3, 0x0020, 0x00d4, 0xffff, 0x0000 + + .align 2 +gUnknown_08593588:: @ 8593588 + .4byte gUnknown_08593568 + .4byte gUnknown_08593578 + + .align 2 +gUnknown_08593590:: @ 8593590 + spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_08593588, NULL, gDummySpriteAffineAnimTable, sub_8104364 + + .align 2 +gUnknown_085935A8:: @ 85935A8 + .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085935B8:: @ 85935B8 + .2byte 0x0000, 0x00c2, 0x0010, 0x00c2, 0x0020, 0x00c1, 0xffff, 0x0000 + + .align 2 +gUnknown_085935C8:: @ 85935C8 + .4byte gUnknown_085935A8 + .4byte gUnknown_085935B8 + + .align 2 +gUnknown_085935D0:: @ 85935D0 + spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_085935C8, NULL, gDummySpriteAffineAnimTable, sub_8104414 + + .align 2 gUnknown_085935E8:: @ 85935E8 - .incbin "baserom.gba", 0x5935e8, 0x20 + .2byte 0xfffa, 0x0004, 0x0800, 0x0000, 0x000a, 0xfff6, 0x0800, 0x0000 + .2byte 0xfffc, 0x0006, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 gUnknown_08593608:: @ 8593608 - .incbin "baserom.gba", 0x593608, 0x9c + .2byte 0xfffc, 0xfffb, 0x0c00, 0x0000, 0x0000, 0x0000, 0x1800, 0x0000 + .2byte 0x0004, 0x0005, 0x0c00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 +gUnknown_08593628:: @ 8593628 + .2byte 0x0000, 0x0044, 0x0004, 0x0068, 0x0008, 0x0044, 0x000c, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_0859363C:: @ 859363C + .2byte 0x0000, 0x0004, 0x0004, 0x0028, 0x0008, 0x0004, 0x000c, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08593650:: @ 8593650 + .4byte gUnknown_08593628 + .4byte gUnknown_0859363C + + .align 2 +gUnknown_08593658:: @ 8593658 + spr_template 0x2766, 0x2766, gUnknown_0852490C, gUnknown_08593650, NULL, gDummySpriteAffineAnimTable, sub_8104B1C + + .align 2 +gUnknown_08593670:: @ 8593670 + .2byte 0x000b, 0x000b, 0x0800, 0x0000, 0xfff5, 0xfff5, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593688:: @ 8593688 + .4byte gUnknown_08593670 + + .align 2 +gUnknown_0859368C:: @ 859368C + spr_template 0x2767, 0x2767, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08593688, sub_8104BAC + + .align 2 gUnknown_085936A4:: @ 85936A4 - .incbin "baserom.gba", 0x5936a4, 0x20c + .2byte 0xfff6, 0x0009, 0x0700, 0x0000, 0x0014, 0xffec, 0x0700, 0x0000 + .2byte 0xffec, 0x0014, 0x0700, 0x0000, 0x000a, 0xfff7, 0x0700, 0x0000 + .2byte 0x7ffd, 0x0002, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 +gUnknown_085936D4:: @ 85936D4 + spr_template 0x2712, 0x2712, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810501C + + .align 2 +gUnknown_085936EC:: @ 85936EC + spr_template 0x27d5, 0x27d5, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7938 + + .align 2 +gUnknown_08593704:: @ 8593704 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08593718:: @ 8593718 + .4byte gUnknown_08593704 + + .align 2 +gUnknown_0859371C:: @ 859371C + spr_template 0x27d6, 0x27d6, gUnknown_08524914, gUnknown_08593718, NULL, gDummySpriteAffineAnimTable, sub_80A77C8 + + .align 2 +gUnknown_08593734:: @ 8593734 + .2byte 0x0000, 0x0000, 0x02f8, 0x0000, 0x0000, 0x0000, 0x0408, 0x0000 + .2byte 0x0000, 0x0000, 0x02f8, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593754:: @ 8593754 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593764:: @ 8593764 + .2byte 0xfff8, 0x0004, 0x0800, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000 + .2byte 0x0010, 0xfff8, 0x0800, 0x0000, 0xfff0, 0x0008, 0x0800, 0x0000 + .2byte 0x7ffd, 0x0001, 0x0000, 0x0000, 0x0100, 0x0100, 0x0000, 0x0000 + .2byte 0x0000, 0x0000, 0x0f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085937A4:: @ 85937A4 + .4byte gUnknown_08593734 + .4byte gUnknown_08593754 + .4byte gUnknown_08593764 + + .align 2 +gUnknown_085937B0:: @ 85937B0 + spr_template 0x27da, 0x27da, gUnknown_08524AF4, gDummySpriteAnimTable, NULL, gUnknown_085937A4, sub_8105538 + + .align 2 +gUnknown_085937C8:: @ 85937C8 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0010, 0x0010, 0x1e00, 0x0000 + .2byte 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_085937E0:: @ 85937E0 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0020, 0x0020, 0x0f00, 0x0000 + .2byte 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_085937F8:: @ 85937F8 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x000b, 0x000b, 0x2d00, 0x0000 + .2byte 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08593810:: @ 8593810 + .4byte gUnknown_085937C8 + .4byte gUnknown_085937E0 + + .align 2 +gUnknown_08593818:: @ 8593818 + .4byte gUnknown_085937F8 + + .align 2 +gUnknown_0859381C:: @ 859381C + spr_template 0x27db, 0x27db, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_08593810, sub_80A77C8 + + .align 2 +gUnknown_08593834:: @ 8593834 + .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x1e00, 0x0000 + .2byte 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_0859384C:: @ 859384C + .4byte gUnknown_08593834 + + .align 2 +gUnknown_08593850:: @ 8593850 + spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_0859384C, sub_80A77C8 + + .align 2 +gUnknown_08593868:: @ 8593868 + spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08593810, sub_81051C4 + + .align 2 +gUnknown_08593880:: @ 8593880 + spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08593818, sub_81052A4 + + .align 2 +gUnknown_08593898:: @ 8593898 + spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08593810, sub_81054E8 + + .align 2 gUnknown_085938B0:: @ 85938B0 - .incbin "baserom.gba", 0x5938b0, 0x2c + .2byte 0x0060, 0xfff3, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 +gUnknown_085938C0:: @ 85938C0 + .2byte 0x0000, 0x0003, 0x0004, 0x0003, 0x0008, 0x0003, 0x0004, 0x0003 + .2byte 0x0000, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085938D8:: @ 85938D8 + .4byte gUnknown_085938C0 + + .align 2 gUnknown_085938DC:: @ 85938DC - .incbin "baserom.gba", 0x5938dc, 0x18 + spr_template 0x27df, 0x27df, gUnknown_0852490C, gUnknown_085938D8, NULL, gDummySpriteAffineAnimTable, sub_8105C48 + .align 2 gUnknown_085938F4:: @ 85938F4 - .incbin "baserom.gba", 0x5938f4, 0x5c + .2byte 0x1c1e, 0x18ec, 0x1a10, 0x1cf6 + .align 2 +gUnknown_085938FC:: @ 85938FC + .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x000f, 0x0010, 0x0006 + .2byte 0x0000, 0x0006, 0x0010, 0x0046, 0x0020, 0x004f, 0x0010, 0x0046 + .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x000f, 0x0010, 0x0006 + .2byte 0x0000, 0x0006, 0xffff, 0x0000 + + .align 2 +gUnknown_08593934:: @ 8593934 + .4byte gUnknown_085938FC + + .align 2 +gUnknown_08593938:: @ 8593938 + spr_template 0x27dd, 0x27dd, gUnknown_08524914, gUnknown_08593934, NULL, gDummySpriteAffineAnimTable, sub_80A77C8 + + .align 2 gUnknown_08593950:: @ 8593950 - .incbin "baserom.gba", 0x593950, 0x38 + .2byte 0x27de, 0x270f, 0x270e, 0x0000 + .align 2 +gUnknown_08593958:: @ 8593958 + spr_template 0x27de, 0x27de, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8105DE8 + + .align 2 +gUnknown_08593970:: @ 8593970 + spr_template 0x27e2, 0x27e2, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8105E60 + + .align 2 gUnknown_08593988:: @ 8593988 - .incbin "baserom.gba", 0x593988, 0x210 + .2byte 0x000a, 0xfff3, 0x0a00, 0x0000, 0xfff6, 0x000d, 0x0a00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 +gUnknown_085939A0:: @ 85939A0 + spr_template 0x27e8, 0x27e8, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8106140 + + .align 2 +gUnknown_085939B8:: @ 85939B8 + spr_template 0x27e8, 0x27e8, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81061C4 + + .align 2 +gUnknown_085939D0:: @ 85939D0 + spr_template 0x27e8, 0x27e8, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810624C + + .align 2 +gUnknown_085939E8:: @ 85939E8 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0008, 0x0008, 0x0100, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08593A00:: @ 8593A00 + .4byte gUnknown_085939E8 + + .align 2 +gUnknown_08593A04:: @ 8593A04 + spr_template 0x27e9, 0x27e9, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08593A00, sub_810673C + + .align 2 +gUnknown_08593A1C:: @ 8593A1C + spr_template 0x27e9, 0x27e9, gUnknown_085249CC, gDummySpriteAnimTable, NULL, gUnknown_08593A00, sub_8106878 + + .align 2 +gUnknown_08593A34:: @ 8593A34 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0008, 0x0008, 0x0100, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08593A4C:: @ 8593A4C + .4byte gUnknown_08593A34 + + .align 2 +gUnknown_08593A50:: @ 8593A50 + spr_template 0x27fd, 0x27fd, gUnknown_085249C4, gDummySpriteAnimTable, NULL, gUnknown_08593A4C, sub_8106944 + + .align 2 +gUnknown_08593A68:: @ 8593A68 + .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0008, 0x0004, 0x0004, 0x0004 + .2byte 0x0000, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08593A80:: @ 8593A80 + .4byte gUnknown_08593A68 + + .align 2 +gUnknown_08593A84:: @ 8593A84 + spr_template 0x27ea, 0x27ea, gUnknown_0852490C, gUnknown_08593A80, NULL, gDummySpriteAffineAnimTable, sub_81069B8 + + .align 2 +gUnknown_08593A9C:: @ 8593A9C + .2byte 0x0000, 0x0018, 0xffff, 0x0000 + + .align 2 +gUnknown_08593AA4:: @ 8593AA4 + .4byte gUnknown_08593A9C + + .align 2 +gUnknown_08593AA8:: @ 8593AA8 + spr_template 0x27ec, 0x27ec, gUnknown_08524914, gUnknown_08593AA4, NULL, gDummySpriteAffineAnimTable, sub_81069D0 + + .align 2 +gUnknown_08593AC0:: @ 8593AC0 + spr_template 0x27eb, 0x27eb, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8106AD0 + + .align 2 +gUnknown_08593AD8:: @ 8593AD8 + .2byte 0x0000, 0x0003, 0xfffe, 0x0000 + + .align 2 +gUnknown_08593AE0:: @ 8593AE0 + .2byte 0x0010, 0x0003, 0xfffe, 0x0000 + + .align 2 +gUnknown_08593AE8:: @ 8593AE8 + .4byte gUnknown_08593AD8 + .4byte gUnknown_08593AE0 + + .align 2 +gUnknown_08593AF0:: @ 8593AF0 + spr_template 0x27ed, 0x27ed, gUnknown_08524914, gUnknown_08593AE8, NULL, gDummySpriteAffineAnimTable, sub_8106B54 + + .align 2 +gUnknown_08593B08:: @ 8593B08 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08593B1C:: @ 8593B1C + .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0x0030, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_08593B30:: @ 8593B30 + .4byte gUnknown_08593B08 + .4byte gUnknown_08593B1C + + .align 2 +gUnknown_08593B38:: @ 8593B38 + spr_template 0x27ee, 0x27ee, gUnknown_08524914, gUnknown_08593B30, NULL, gDummySpriteAffineAnimTable, sub_8106C80 + + .align 2 +gUnknown_08593B50:: @ 8593B50 + .2byte 0x0000, 0x0008, 0x0010, 0x0008, 0x0020, 0x0008, 0x0010, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_08593B64:: @ 8593B64 + .2byte 0x0010, 0x0048, 0x0020, 0x0048, 0x0010, 0x0048, 0x0000, 0x0048, 0xffff, 0x0000 + + .align 2 +gUnknown_08593B78:: @ 8593B78 + .4byte gUnknown_08593B50 + .4byte gUnknown_08593B64 + + .align 2 +gUnknown_08593B80:: @ 8593B80 + spr_template 0x27e7, 0x27e7, gUnknown_08524914, gUnknown_08593B78, NULL, gDummySpriteAffineAnimTable, sub_8106CD0 + + .align 2 gUnknown_08593B98:: @ 8593B98 - .incbin "baserom.gba", 0x593b98, 0x1488 + .2byte 0xfff4, 0x0008, 0x0400, 0x0000, 0x0014, 0xffec, 0x0400, 0x0000 + .2byte 0xfff8, 0x000c, 0x0400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 +gUnknown_08593BB8:: @ 8593BB8 + spr_template 0x27f1, 0x27f1, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8106E00 + + .align 2 +gUnknown_08593BD0:: @ 8593BD0 + .2byte 0x0000, 0x0000, 0x0500, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593BE0:: @ 8593BE0 + .2byte 0x0000, 0x0000, 0x10f8, 0x0000, 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08593BF0:: @ 8593BF0 + .2byte 0x0000, 0x0000, 0x1008, 0x0000, 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08593C00:: @ 8593C00 + .4byte gUnknown_08593BD0 + .4byte gUnknown_08593BE0 + .4byte gUnknown_08593BF0 + + .align 2 +gUnknown_08593C0C:: @ 8593C0C + spr_template 0x27de, 0x27de, gUnknown_0852496C, gUnknown_08592FCC, NULL, gUnknown_08593C00, sub_8106F60 + + .align 2 +gUnknown_08593C24:: @ 8593C24 + spr_template 0x27de, 0x27de, gUnknown_0852496C, gUnknown_08592FCC, NULL, gUnknown_08593C00, sub_8106F00 + + .align 2 +gUnknown_08593C3C:: @ 8593C3C + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593C4C:: @ 8593C4C + .2byte 0x0200, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08593C5C:: @ 8593C5C + .4byte gUnknown_08593C3C + .4byte gUnknown_08593C4C + + .align 2 +gUnknown_08593C64:: @ 8593C64 + spr_template 0x2804, 0x2804, gUnknown_08524B1C, gDummySpriteAnimTable, NULL, gUnknown_08593C5C, sub_81070AC + + .align 2 + .incbin "graphics/unknown/unknown_593C80.4bpp" + + .align 2 + .incbin "graphics/unknown/unknown_593FFC.bin" + + .align 2 +gUnknown_08594FFC:: @ 8594FFC + .2byte 0x0000, 0x0002, 0x0008, 0x0002, 0x0010, 0x0002, 0x0018, 0x0006 + .2byte 0x0020, 0x0002, 0x0028, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_0859501C:: @ 859501C + .4byte gUnknown_08594FFC + + .align 2 gUnknown_08595020:: @ 8595020 - .incbin "baserom.gba", 0x595020, 0x248 + spr_template 0x2783, 0x2783, gUnknown_08524954, gUnknown_0859501C, NULL, gDummySpriteAffineAnimTable, sub_810721C + .align 2 +gUnknown_08595038:: @ 8595038 + .2byte 0xfffb, 0xfffb, 0x0a00, 0x0000, 0x0005, 0x0005, 0x0a00, 0x0000 + .2byte 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595050:: @ 8595050 + .4byte gUnknown_08595038 + + .align 2 +gUnknown_08595054:: @ 8595054 + .2byte 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08595064:: @ 8595064 + .4byte gUnknown_08595054 + + .align 2 +gUnknown_08595068:: @ 8595068 + spr_template 0x27a2, 0x27a2, gUnknown_08524A8C, gUnknown_08595064, NULL, gUnknown_08595050, sub_8107260 + + .align 2 +gUnknown_08595080:: @ 8595080 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595088:: @ 8595088 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595090:: @ 8595090 + .4byte gUnknown_08595080 + .4byte gUnknown_08595088 + + .align 2 +gUnknown_08595098:: @ 8595098 + .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x0060, 0x0060, 0x0100, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085950B0:: @ 85950B0 + .4byte gUnknown_08595098 + + .align 2 +gUnknown_085950B4:: @ 85950B4 + spr_template 0x279c, 0x279c, gUnknown_08524A04, gUnknown_08595090, NULL, gUnknown_085950B0, sub_810744C + + .align 2 +gUnknown_085950CC:: @ 85950CC + .2byte 0x0000, 0x0001, 0x0004, 0x0001, 0x0008, 0x0001, 0x000c, 0x0001, 0xfffe, 0x0000 + + .align 2 +gUnknown_085950E0:: @ 85950E0 + .4byte gUnknown_085950CC + + .align 2 +gUnknown_085950E4:: @ 85950E4 + spr_template 0x27a5, 0x27a5, gUnknown_08524A2C, gUnknown_085950E0, NULL, gDummySpriteAffineAnimTable, sub_81075EC + + .align 2 +gUnknown_085950FC:: @ 85950FC + spr_template 0x2813, 0x2813, gUnknown_08524A2C, gUnknown_085950E0, NULL, gDummySpriteAffineAnimTable, sub_81075EC + + .align 2 +gUnknown_08595114:: @ 8595114 + spr_template 0x2818, 0x2818, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81075EC + + .align 2 +gUnknown_0859512C:: @ 859512C + spr_template 0x2819, 0x2819, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81075EC + + .align 2 +gUnknown_08595144:: @ 8595144 + .2byte 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0002, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595154:: @ 8595154 + .4byte gUnknown_08595144 + + .align 2 +gUnknown_08595158:: @ 8595158 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595154, NULL, gDummySpriteAffineAnimTable, sub_81075EC + + .align 2 +gUnknown_08595170:: @ 8595170 + spr_template 0x27b5, 0x27b5, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_81075EC + + .align 2 +gUnknown_08595188:: @ 8595188 + .2byte 0x0003, 0x0003, 0x320a, 0x0000, 0x0000, 0x0000, 0x0a00, 0x0000 + .2byte 0xffec, 0xffec, 0x14f6, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085951A8:: @ 85951A8 + .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085951B8:: @ 85951B8 + .4byte gUnknown_08595188 + + .align 2 +gUnknown_085951BC:: @ 85951BC + .4byte gUnknown_085951A8 + + .align 2 +gUnknown_085951C0:: @ 85951C0 + spr_template 0x27a5, 0x27a5, gUnknown_08524AEC, gUnknown_085950E0, NULL, gUnknown_085951B8, sub_8107730 + + .align 2 +gUnknown_085951D8:: @ 85951D8 + spr_template 0x27a5, 0x27a5, gUnknown_08524AEC, gUnknown_085950E0, NULL, gUnknown_085951BC, sub_81077C0 + + .align 2 +gUnknown_085951F0:: @ 85951F0 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085951F8:: @ 85951F8 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595200:: @ 8595200 + .4byte gUnknown_085951F0 + + .align 2 +gUnknown_08595204:: @ 8595204 + .4byte gUnknown_085951F8 + + .align 2 +gUnknown_08595208:: @ 8595208 + spr_template 0x27ab, 0x27ab, gUnknown_08524A2C, gUnknown_08595200, NULL, gDummySpriteAffineAnimTable, sub_80A78AC + + .align 2 +gUnknown_08595220:: @ 8595220 + spr_template 0x27ab, 0x27ab, gUnknown_08524AEC, gUnknown_08595204, NULL, gUnknown_08596208, sub_8107894 + + .align 2 +gUnknown_08595238:: @ 8595238 + spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AB8, NULL, gDummySpriteAffineAnimTable, sub_81078D0 + + .align 2 +gUnknown_08595250:: @ 8595250 + spr_template 0x27ab, 0x27ab, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8108034 + + .align 2 gUnknown_08595268:: @ 8595268 - .incbin "baserom.gba", 0x595268, 0xa8 + spr_template 0x281c, 0x281c, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810851C + .align 2 +gUnknown_08595280:: @ 8595280 + .2byte 0x0008, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595288:: @ 8595288 + .2byte 0x0009, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595290:: @ 8595290 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595298:: @ 8595298 + .4byte gUnknown_08595280 + .4byte gUnknown_08595288 + + .align 2 +gUnknown_085952A0:: @ 85952A0 + .4byte gUnknown_08595290 + + .align 2 +gUnknown_085952A4:: @ 85952A4 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff6, 0xfff6, 0x0f00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085952BC:: @ 85952BC + .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0f00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085952D4:: @ 85952D4 + .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085952EC:: @ 85952EC + .4byte gUnknown_085952A4 + .4byte gUnknown_085952BC + + .align 2 +gUnknown_085952F4:: @ 85952F4 + .4byte gUnknown_085952D4 + + .align 2 +gUnknown_085952F8:: @ 85952F8 + spr_template 0x27ab, 0x27ab, gUnknown_08524904, gUnknown_08595298, NULL, gDummySpriteAffineAnimTable, sub_8108BE0 + + .align 2 gUnknown_08595310:: @ 8595310 - .incbin "baserom.gba", 0x595310, 0x2a4 + spr_template 0x27ab, 0x27ab, gUnknown_08524964, gUnknown_08595298, NULL, gUnknown_085952EC, sub_8108C54 + .align 2 +gUnknown_08595328:: @ 8595328 + spr_template 0x27ab, 0x27ab, gUnknown_0852496C, gUnknown_085952A0, NULL, gUnknown_085952F4, sub_80A8EE4 + + .align 2 +gUnknown_08595340:: @ 8595340 + .2byte 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595350:: @ 8595350 + .2byte 0x0010, 0x00c4, 0x0020, 0x00c4, 0x0030, 0x00c4, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595360:: @ 8595360 + .4byte gUnknown_08595340 + .4byte gUnknown_08595350 + + .align 2 +gUnknown_08595368:: @ 8595368 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595360, NULL, gDummySpriteAffineAnimTable, sub_8108EC8 + + .align 2 +gUnknown_08595380:: @ 8595380 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595360, NULL, gDummySpriteAffineAnimTable, sub_8108F08 + + .align 2 +gUnknown_08595398:: @ 8595398 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003 + .2byte 0x0040, 0x0003, 0x0050, 0x0003, 0x0060, 0x0003, 0x0070, 0x0003 + .2byte 0xfffe, 0x0000 + + .align 2 +gUnknown_085953BC:: @ 85953BC + .4byte gUnknown_08595398 + + .align 2 +gUnknown_085953C0:: @ 85953C0 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005 + .2byte 0x0040, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_085953D8:: @ 85953D8 + .4byte gUnknown_085953C0 + + .align 2 +gUnknown_085953DC:: @ 85953DC + .2byte 0x0032, 0x0100, 0x0000, 0x0000, 0x0020, 0x0000, 0x0700, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085953F4:: @ 85953F4 + .4byte gUnknown_085953DC + + .align 2 +gUnknown_085953F8:: @ 85953F8 + spr_template 0x2731, 0x2731, gUnknown_08524974, gUnknown_085953BC, NULL, gUnknown_085953F4, sub_8108FBC + + .align 2 +gUnknown_08595410:: @ 8595410 + spr_template 0x2731, 0x2731, gUnknown_08524914, gUnknown_085953BC, NULL, gDummySpriteAffineAnimTable, sub_8108FBC + + .align 2 +gUnknown_08595428:: @ 8595428 + spr_template 0x2733, 0x2733, gUnknown_08524914, gUnknown_085953D8, NULL, gDummySpriteAffineAnimTable, sub_8108F4C + + .align 2 +gUnknown_08595440:: @ 8595440 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085953D8, NULL, gDummySpriteAffineAnimTable, sub_8108F4C + + .align 2 +gUnknown_08595458:: @ 8595458 + .2byte 0x0010, 0x0006, 0x0020, 0x0006, 0x0030, 0x0006, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595468:: @ 8595468 + .4byte gUnknown_08595458 + + .align 2 +gUnknown_0859546C:: @ 859546C + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595468, NULL, gDummySpriteAffineAnimTable, sub_8109064 + + .align 2 +gUnknown_08595484:: @ 8595484 + .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x0002, 0x0002, 0x010a, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_0859549C:: @ 859549C + .4byte gUnknown_08595484 + + .align 2 +gUnknown_085954A0:: @ 85954A0 + spr_template 0x27ad, 0x27ad, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_0859549C, sub_810916C + + .align 2 +gUnknown_085954B8:: @ 85954B8 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004 + .2byte 0x0040, 0x0004, 0xfffe, 0x0000 + + .align 2 +gUnknown_085954D0:: @ 85954D0 + .4byte gUnknown_085954B8 + + .align 2 +gUnknown_085954D4:: @ 85954D4 + spr_template 0x272d, 0x272d, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820 + + .align 2 +gUnknown_085954EC:: @ 85954EC + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8109198 + + .align 2 +gUnknown_08595504:: @ 8595504 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8109200 + + .align 2 +gUnknown_0859551C:: @ 859551C + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_810921C + + .align 2 +gUnknown_08595534:: @ 8595534 + .2byte 0x0020, 0x0006, 0x0030, 0x0006, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595540:: @ 8595540 + .4byte gUnknown_08595534 + + .align 2 +gUnknown_08595544:: @ 8595544 + .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595554:: @ 8595554 + .2byte 0x00a0, 0x00a0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595564:: @ 8595564 + .4byte gUnknown_08595544 + .4byte gUnknown_08595554 + + .align 2 +gUnknown_0859556C:: @ 859556C + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595540, NULL, gDummySpriteAffineAnimTable, sub_8109364 + + .align 2 +gUnknown_08595584:: @ 8595584 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_81093A4 + + .align 2 +gUnknown_0859559C:: @ 859559C + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_80A8EE4 + + .align 2 gUnknown_085955B4:: @ 85955B4 - .incbin "baserom.gba", 0x5955b4, 0x18 + spr_template 0x27d9, 0x27d9, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81098EC + .align 2 gUnknown_085955CC:: @ 85955CC - .incbin "baserom.gba", 0x5955cc, 0x2 + .2byte 0xfffe, 0xfffb, 0xffff, 0xffff, 0x0003, 0xfffa, 0x0004, 0xfffe + .2byte 0x0002, 0xfff8, 0xfffb, 0xfffb, 0x0004, 0xfff9 -gUnknown_085955CE:: @ 85955CE - .incbin "baserom.gba", 0x5955ce, 0xb6 + .align 2 +gUnknown_085955E8:: @ 85955E8 + spr_template 0x27d9, 0x27d9, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8109A10 + .align 2 +gUnknown_08595600:: @ 8595600 + .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595614:: @ 8595614 + .2byte 0x0010, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_0859561C:: @ 859561C + .2byte 0x0014, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08595624:: @ 8595624 + .2byte 0x0014, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_0859562C:: @ 859562C + .4byte gUnknown_08595600 + .4byte gUnknown_08595614 + .4byte gUnknown_0859561C + .4byte gUnknown_08595624 + + .align 2 +gUnknown_0859563C:: @ 859563C + spr_template 0x27f7, 0x27f7, gUnknown_0852490C, gUnknown_0859562C, NULL, gDummySpriteAffineAnimTable, sub_8109AFC + + .align 2 +gUnknown_08595654:: @ 8595654 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595668:: @ 8595668 + .4byte gUnknown_08595654 + + .align 2 +gUnknown_0859566C:: @ 859566C + spr_template 0x27f8, 0x27f8, gUnknown_08524914, gUnknown_08595668, NULL, gDummySpriteAffineAnimTable, sub_8109CB0 + + .align 2 gUnknown_08595684:: @ 8595684 - .incbin "baserom.gba", 0x595684, 0x10 + .2byte 0xffff, 0x0100, 0x0001, 0xff00, 0x01ff, 0x0001, 0xff00, 0x0100 + .align 2 gUnknown_08595694:: @ 8595694 - .incbin "baserom.gba", 0x595694, 0x2c + .2byte 0x00ff, 0x0001, 0x01ff, 0xff00, 0x0100, 0xff00, 0x0100, 0x0100 + .align 2 +gUnknown_085956A4:: @ 85956A4 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0008, 0x0030, 0x0005 + .2byte 0x0040, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_085956BC:: @ 85956BC + .4byte gUnknown_085956A4 + + .align 2 gUnknown_085956C0:: @ 85956C0 - .incbin "baserom.gba", 0x5956c0, 0x168 + spr_template 0x2735, 0x2735, gUnknown_08524914, gUnknown_085956BC, NULL, gDummySpriteAffineAnimTable, sub_810A1A8 + .align 2 +gUnknown_085956D8:: @ 85956D8 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000 + .2byte 0x0000, 0x0000, 0x3cf0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085956F8:: @ 85956F8 + .4byte gUnknown_085956D8 + + .align 2 +gUnknown_085956FC:: @ 85956FC + spr_template 0x279f, 0x279f, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085956F8, sub_810A214 + + .align 2 +gUnknown_08595714:: @ 8595714 + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005 + .2byte 0x0040, 0x0005, 0x0050, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595730:: @ 8595730 + .4byte gUnknown_08595714 + + .align 2 +gUnknown_08595734:: @ 8595734 + spr_template 0x275f, 0x275f, gUnknown_08524914, gUnknown_08595730, NULL, gDummySpriteAffineAnimTable, sub_810A274 + + .align 2 +gUnknown_0859574C:: @ 859574C + spr_template 0x271b, 0x271b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A308 + + .align 2 +gUnknown_08595764:: @ 8595764 + spr_template 0x27bb, 0x27bb, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820 + + .align 2 +gUnknown_0859577C:: @ 859577C + .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859578C:: @ 859578C + .4byte gUnknown_0859577C + + .align 2 +gUnknown_08595790:: @ 8595790 + spr_template 0x271b, 0x271b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859578C, sub_810A46C + + .align 2 +gUnknown_085957A8:: @ 85957A8 + .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x0006, 0xfffe, 0x0000 + + .align 2 +gUnknown_085957B8:: @ 85957B8 + .4byte gUnknown_085957A8 + + .align 2 +gUnknown_085957BC:: @ 85957BC + .2byte 0x00e8, 0x00e8, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0a00, 0x0000 + .2byte 0x0008, 0x0008, 0x0a00, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_085957DC:: @ 85957DC + .4byte gUnknown_085957BC + + .align 2 +gUnknown_085957E0:: @ 85957E0 + spr_template 0x282a, 0x282a, gUnknown_08524974, gUnknown_085957B8, NULL, gUnknown_085957DC, sub_810A5BC + + .align 2 +gUnknown_085957F8:: @ 85957F8 + spr_template 0x271b, 0x271b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859578C, sub_810A628 + + .align 2 +gUnknown_08595810:: @ 8595810 + spr_template 0x271b, 0x271b, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A75C + + .align 2 gUnknown_08595828:: @ 8595828 - .incbin "baserom.gba", 0x595828, 0x18 + spr_template 0x2711, 0x2711, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A9DC + .align 2 gUnknown_08595840:: @ 8595840 - .incbin "baserom.gba", 0x595840, 0x18 + spr_template 0x27bd, 0x27bd, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810AA2C + .align 2 gUnknown_08595858:: @ 8595858 - .incbin "baserom.gba", 0x595858, 0x50 + .byte 0x3a, 0xc4, 0xc8, 0xdc, 0x08, 0xc8, 0xf0, 0x38 + .byte 0x3a, 0xf6, 0xc6, 0x0a, 0x30, 0xee, 0xf8, 0x38 + .byte 0x10, 0xc8, 0xc6, 0xd6, 0x3a, 0x1e, 0xd0, 0x28 + .byte 0x0c, 0xd0, 0x30, 0xf4, 0xc8, 0x12, 0x30, 0x30 + .align 2 +gUnknown_08595878:: @ 8595878 + .2byte 0x0003, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859588C:: @ 859588C + .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_085958A0:: @ 85958A0 + .4byte gUnknown_08595878 + .4byte gUnknown_0859588C + + .align 2 gUnknown_085958A8:: @ 85958A8 - .incbin "baserom.gba", 0x5958a8, 0x158 + spr_template 0x27e3, 0x27e3, gUnknown_08524904, gUnknown_085958A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 +gUnknown_085958C0:: @ 85958C0 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0004, 0x0004, 0x3c00, 0x0000 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000 + .2byte 0xfffc, 0xfffc, 0x0500, 0x0000, 0x0004, 0x0004, 0x0500, 0x0000 + .2byte 0x7ffd, 0x000a, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595900:: @ 8595900 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1e00, 0x0000 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffc, 0xfffc, 0x0500, 0x0000 + .2byte 0x0004, 0x0004, 0x0500, 0x0000, 0x7ffe, 0x0003, 0x0000, 0x0000 + + .align 2 +gUnknown_08595930:: @ 8595930 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1e00, 0x0000 + .2byte 0xfff8, 0xfff8, 0x1e00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595950:: @ 8595950 + .4byte gUnknown_085958C0 + .4byte gUnknown_08595900 + .4byte gUnknown_08595930 + + .align 2 +gUnknown_0859595C:: @ 859595C + spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810ACD8 + + .align 2 +gUnknown_08595974:: @ 8595974 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_08595988:: @ 8595988 + .4byte gUnknown_08595974 + + .align 2 +gUnknown_0859598C:: @ 859598C + spr_template 0x27e5, 0x27e5, gUnknown_08524914, gUnknown_08595988, NULL, gDummySpriteAffineAnimTable, sub_810AD30 + + .align 2 +gUnknown_085959A4:: @ 85959A4 + spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810AD98 + + .align 2 +gUnknown_085959BC:: @ 85959BC + .2byte 0x0000, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085959C4:: @ 85959C4 + .2byte 0x0002, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085959CC:: @ 85959CC + .2byte 0x0004, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085959D4:: @ 85959D4 + .2byte 0x0006, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085959DC:: @ 85959DC + .4byte gUnknown_085959BC + .4byte gUnknown_085959C4 + .4byte gUnknown_085959CC + .4byte gUnknown_085959D4 + + .align 2 +gUnknown_085959EC:: @ 85959EC + .2byte 0x0100, 0x0100, 0x0040, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085959FC:: @ 85959FC + .4byte gUnknown_085959EC + + .align 2 gUnknown_08595A00:: @ 8595A00 - .incbin "baserom.gba", 0x595a00, 0x30 + spr_template 0x2711, 0x2711, gUnknown_08524A04, gUnknown_085959DC, NULL, gUnknown_085959FC, sub_810B1F0 + .align 2 +gUnknown_08595A18:: @ 8595A18 + spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810B23C + + .align 2 gUnknown_08595A30:: @ 8595A30 - .incbin "baserom.gba", 0x595a30, 0x138 + spr_template 0x2711, 0x2711, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810B51C + .align 2 +gUnknown_08595A48:: @ 8595A48 + .2byte 0x0000, 0x0045, 0x0001, 0x0045, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595A54:: @ 8595A54 + .4byte gUnknown_08595A48 + + .align 2 +gUnknown_08595A58:: @ 8595A58 + spr_template 0x279d, 0x279d, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810B6C4 + + .align 2 +gUnknown_08595A70:: @ 8595A70 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595A78:: @ 8595A78 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595A80:: @ 8595A80 + .2byte 0x0006, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595A88:: @ 8595A88 + .2byte 0x0007, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595A90:: @ 8595A90 + .2byte 0x0008, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595A98:: @ 8595A98 + .2byte 0x000c, 0x0006, 0x000d, 0x0006, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595AA4:: @ 8595AA4 + .4byte gUnknown_08595A70 + + .align 2 +gUnknown_08595AA8:: @ 8595AA8 + .4byte gUnknown_08595A78 + + .align 2 +gUnknown_08595AAC:: @ 8595AAC + .4byte gUnknown_08595A80 + + .align 2 +gUnknown_08595AB0:: @ 8595AB0 + .4byte gUnknown_08595A88 + + .align 2 +gUnknown_08595AB4:: @ 8595AB4 + .4byte gUnknown_08595A90 + + .align 2 +gUnknown_08595AB8:: @ 8595AB8 + .4byte gUnknown_08595A98 + + .align 2 +gUnknown_08595ABC:: @ 8595ABC + .2byte 0x0000, 0x0000, 0x0128, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595ACC:: @ 8595ACC + .4byte gUnknown_08595ABC + + .align 2 +gUnknown_08595AD0:: @ 8595AD0 + spr_template 0x279d, 0x279d, gUnknown_08524B24, gUnknown_08595AA8, NULL, gUnknown_08595ACC, sub_810B8AC + + .align 2 +gUnknown_08595AE8:: @ 8595AE8 + spr_template 0x279d, 0x279d, gUnknown_08524A24, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810B8AC + + .align 2 +gUnknown_08595B00:: @ 8595B00 + .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595B10:: @ 8595B10 + .4byte gUnknown_08595B00 + + .align 2 +gUnknown_08595B14:: @ 8595B14 + spr_template 0x279d, 0x279d, gUnknown_08524AC4, gUnknown_08595AA8, NULL, gUnknown_08595B10, sub_810B8EC + + .align 2 +gUnknown_08595B2C:: @ 8595B2C + spr_template 0x279d, 0x279d, gUnknown_08524A24, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810B8EC + + .align 2 +gUnknown_08595B44:: @ 8595B44 + .2byte 0x00ce, 0x00ce, 0x0000, 0x0000, 0x0005, 0x0005, 0x0a00, 0x0000 + .2byte 0x0000, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595B64:: @ 8595B64 + .4byte gUnknown_08595B44 + + .align 2 gUnknown_08595B68:: @ 8595B68 - .incbin "baserom.gba", 0x595b68, 0xf4 + spr_template 0x279d, 0x279d, gUnknown_08524AC4, gUnknown_08595AA8, NULL, gUnknown_08595B64, sub_810B974 + .align 2 +gUnknown_08595B80:: @ 8595B80 + spr_template 0x279d, 0x279d, gUnknown_08524A84, gUnknown_08595AAC, NULL, gUnknown_08595B64, sub_810B974 + + .align 2 +gUnknown_08595B98:: @ 8595B98 + spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AB0, NULL, gDummySpriteAffineAnimTable, sub_810BA24 + + .align 2 +gUnknown_08595BB0:: @ 8595BB0 + spr_template 0x279d, 0x279d, gUnknown_0852490C, gUnknown_08595AB4, NULL, gDummySpriteAffineAnimTable, sub_810BC94 + + .align 2 +gUnknown_08595BC8:: @ 8595BC8 + spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AB0, NULL, gDummySpriteAffineAnimTable, sub_810BC94 + + .align 2 +gUnknown_08595BE0:: @ 8595BE0 + .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005 + .2byte 0x0004, 0x0005, 0x0002, 0x0005, 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08595C00:: @ 8595C00 + .4byte gUnknown_08595BE0 + + .align 2 +gUnknown_08595C04:: @ 8595C04 + spr_template 0x279e, 0x279e, gUnknown_08524A64, gUnknown_08595C00, NULL, gDummySpriteAffineAnimTable, sub_810BE48 + + .align 2 +gUnknown_08595C1C:: @ 8595C1C + .2byte 0x0000, 0x0008, 0x0008, 0x0008, 0xfffe, 0x0000 + + .align 2 +gUnknown_08595C28:: @ 8595C28 + .4byte gUnknown_08595C1C + + .align 2 +gUnknown_08595C2C:: @ 8595C2C + spr_template 0x27a0, 0x27a0, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810BED0 + + .align 2 +gUnknown_08595C44:: @ 8595C44 + spr_template 0x27bc, 0x27bc, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810BED0 + + .align 2 gUnknown_08595C5C:: @ 8595C5C - .incbin "baserom.gba", 0x595c5c, 0x2c + .byte 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x04 + .byte 0x04, 0x04, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07 + .byte 0x08, 0x08, 0x08, 0x09 + .align 2 +gUnknown_08595C70:: @ 8595C70 + spr_template 0x27ab, 0x27ab, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810C2F0 + + .align 2 gUnknown_08595C88:: @ 8595C88 - .incbin "baserom.gba", 0x595c88, 0x2c + .byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02 + .byte 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04 + .byte 0x04, 0x04, 0x04, 0x05 + .align 2 +gUnknown_08595C9C:: @ 8595C9C + spr_template 0x27bc, 0x27bc, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810C560 + + .align 2 gUnknown_08595CB4:: @ 8595CB4 - .incbin "baserom.gba", 0x595cb4, 0x78 + .byte 0x64, 0xe0, 0x01, 0x20, 0x55, 0xe0, 0x01, 0x00 + .byte 0xf2, 0xe0, 0x11, 0x10, 0x42, 0xe0, 0x21, 0x10 + .byte 0xb6, 0xe0, 0x31, 0x00, 0x3c, 0xe0, 0x01, 0x20 + .byte 0xd6, 0xe0, 0x11, 0x00, 0x71, 0xe0, 0x01, 0x10 + .byte 0xd2, 0xe0, 0x31, 0x10, 0x26, 0xe0, 0x21, 0x00 + .align 2 +gUnknown_08595CDC:: @ 8595CDC + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595CEC:: @ 8595CEC + .2byte 0x00f0, 0x00f0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595CFC:: @ 8595CFC + .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595D0C:: @ 8595D0C + .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595D1C:: @ 8595D1C + .4byte gUnknown_08595CDC + .4byte gUnknown_08595CEC + .4byte gUnknown_08595CFC + + .align 2 +gUnknown_08595D28:: @ 8595D28 + .4byte gUnknown_08595D0C + + .align 2 gUnknown_08595D2C:: @ 8595D2C - .incbin "baserom.gba", 0x595d2c, 0xa14 + spr_template 0x2817, 0x2817, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08595D1C, sub_810CB58 + .align 2 +gUnknown_08595D44:: @ 8595D44 + spr_template 0x2817, 0x2817, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08595D28, sub_80A8EE4 + + .align 2 +gUnknown_08595D5C:: @ 8595D5C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595D64:: @ 8595D64 + .2byte 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0x0040, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08595D78:: @ 8595D78 + .4byte gUnknown_08595D5C + .4byte gUnknown_08595D64 + + .align 2 +gUnknown_08595D80:: @ 8595D80 + .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595D90:: @ 8595D90 + .2byte 0x0118, 0x0118, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595DA0:: @ 8595DA0 + .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595DB0:: @ 8595DB0 + .2byte 0x0180, 0x0180, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595DC0:: @ 8595DC0 + .2byte 0x01c0, 0x01c0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08595DD0:: @ 8595DD0 + .4byte gUnknown_08595D80 + .4byte gUnknown_08595D90 + .4byte gUnknown_08595DA0 + .4byte gUnknown_08595DB0 + .4byte gUnknown_08595DC0 + + .align 2 +gUnknown_08595DE4:: @ 8595DE4 + spr_template 0x273b, 0x273b, gUnknown_085249D4, gUnknown_08595D78, NULL, gUnknown_08595DD0, unc_080B06FC + + .align 2 +gUnknown_08595DFC:: @ 8595DFC + spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810CD4C + + .align 2 +gUnknown_08595E14:: @ 8595E14 + spr_template 0x2742, 0x2742, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0 + + .align 2 +gUnknown_08595E2C:: @ 8595E2C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595E34:: @ 8595E34 + .2byte 0x0010, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595E3C:: @ 8595E3C + .2byte 0x0020, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595E44:: @ 8595E44 + .2byte 0x0030, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08595E4C:: @ 8595E4C + .2byte 0x0030, 0x0041, 0xffff, 0x0000 + + .align 2 +gUnknown_08595E54:: @ 8595E54 + .4byte gUnknown_08595E2C + + .align 2 +gUnknown_08595E58:: @ 8595E58 + .4byte gUnknown_08595E34 + .4byte gUnknown_08595E3C + + .align 2 +gUnknown_08595E60:: @ 8595E60 + .4byte gUnknown_08595E44 + .4byte gUnknown_08595E4C + + .align 2 +gUnknown_08595E68:: @ 8595E68 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CE68 + + .align 2 +gUnknown_08595E80:: @ 8595E80 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CEB4 + + .align 2 +gUnknown_08595E98:: @ 8595E98 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CEE0 + + .align 2 +gUnknown_08595EB0:: @ 8595EB0 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CF30 + + .align 2 +gUnknown_08595EC8:: @ 8595EC8 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E60, NULL, gDummySpriteAffineAnimTable, sub_810D10C + + .align 2 +gUnknown_08595EE0:: @ 8595EE0 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E58, NULL, gDummySpriteAffineAnimTable, sub_810D1B4 + + .align 2 +gUnknown_08595EF8:: @ 8595EF8 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0114, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08595F10:: @ 8595F10 + .4byte gUnknown_08595EF8 + + .align 2 +gUnknown_08595F14:: @ 8595F14 + spr_template 0x279f, 0x279f, gUnknown_085249D4, gUnknown_08595E54, NULL, gUnknown_08595F10, sub_810D278 + + .align 2 +gUnknown_08595F2C:: @ 8595F2C + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffc, 0xfffc, 0x0114, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08595F44:: @ 8595F44 + .4byte gUnknown_08595F2C + + .align 2 +gUnknown_08595F48:: @ 8595F48 + spr_template 0x279f, 0x279f, gUnknown_085249D4, gUnknown_08595E54, NULL, gUnknown_08595F44, sub_810D278 + + .align 2 +gUnknown_08595F60:: @ 8595F60 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E58, NULL, gDummySpriteAffineAnimTable, sub_810D2E4 + + .align 2 +gUnknown_08595F78:: @ 8595F78 + spr_template 0x2759, 0x2759, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D37C + + .align 2 +gUnknown_08595F90:: @ 8595F90 + spr_template 0x27b7, 0x27b7, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D40C + + .align 2 +gUnknown_08595FA8:: @ 8595FA8 + spr_template 0x27e0, 0x27e0, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D4F4 + + .align 2 +gUnknown_08595FC0:: @ 8595FC0 + .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0004, 0x0004, 0x4000, 0x0000 + .2byte 0xfffa, 0xfffa, 0x0800, 0x0000, 0x0006, 0x0006, 0x0800, 0x0000 + .2byte 0x7ffe, 0x0002, 0x0000, 0x0000 + + .align 2 +gUnknown_08595FE8:: @ 8595FE8 + .4byte gUnknown_08595FC0 + + .align 2 +gUnknown_08595FEC:: @ 8595FEC + spr_template 0x27e4, 0x27e4, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08595FE8, sub_810D608 + + .align 2 +gUnknown_08596004:: @ 8596004 + spr_template 0x2811, 0x2811, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D714 + + .align 2 +gUnknown_0859601C:: @ 859601C + spr_template 0x2810, 0x2810, gUnknown_0852491C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D874 + + .align 2 +gUnknown_08596034:: @ 8596034 + spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810D984 + + .align 2 +gUnknown_0859604C:: @ 859604C + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_0859605C:: @ 859605C + .2byte 0x0000, 0x0084, 0x0010, 0x0084, 0x0020, 0x0084, 0xffff, 0x0000 + + .align 2 +gUnknown_0859606C:: @ 859606C + .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_0859607C:: @ 859607C + .4byte gUnknown_0859604C + .4byte gUnknown_0859605C + .4byte gUnknown_0859606C + + .align 2 +gUnknown_08596088:: @ 8596088 + spr_template 0x2805, 0x2805, gUnknown_08524914, gUnknown_0859607C, NULL, gDummySpriteAffineAnimTable, sub_810DA10 + + .align 2 +gUnknown_085960A0:: @ 85960A0 + .2byte 0x0000, 0x0006, 0x0040, 0x0006, 0xffff, 0x0000 + + .align 2 +gUnknown_085960AC:: @ 85960AC + .2byte 0x0000, 0x00c6, 0x0040, 0x00c6, 0xffff, 0x0000 + + .align 2 +gUnknown_085960B8:: @ 85960B8 + .2byte 0x0000, 0x0046, 0x0040, 0x0046, 0xffff, 0x0000 + + .align 2 +gUnknown_085960C4:: @ 85960C4 + .4byte gUnknown_085960A0 + .4byte gUnknown_085960AC + .4byte gUnknown_085960B8 + + .align 2 +gUnknown_085960D0:: @ 85960D0 + spr_template 0x2806, 0x2806, gUnknown_0852491C, gUnknown_085960C4, NULL, gDummySpriteAffineAnimTable, sub_810DA10 + + .align 2 +gUnknown_085960E8:: @ 85960E8 + .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0xffe0, 0xffe0, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596100:: @ 8596100 + .4byte gUnknown_085960E8 + + .align 2 +gUnknown_08596104:: @ 8596104 + spr_template 0x279f, 0x279f, gUnknown_085249D4, gUnknown_08595E54, NULL, gUnknown_08596100, sub_810DA7C + + .align 2 +gUnknown_0859611C:: @ 859611C + .2byte 0x0000, 0x0005, 0x0008, 0x0005, 0x0010, 0x0005, 0x0018, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08596130:: @ 8596130 + .4byte gUnknown_0859611C + + .align 2 +gUnknown_08596134:: @ 8596134 + spr_template 0x27a7, 0x27a7, gUnknown_08524954, gUnknown_08596130, NULL, gDummySpriteAffineAnimTable, sub_80A77C8 + + .align 2 +gUnknown_0859614C:: @ 859614C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596154:: @ 8596154 + .2byte 0x0004, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_0859615C:: @ 859615C + .2byte 0x0008, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596164:: @ 8596164 + .4byte gUnknown_0859614C + + .align 2 +gUnknown_08596168:: @ 8596168 + .4byte gUnknown_08596154 + + .align 2 +gUnknown_0859616C:: @ 859616C + .4byte gUnknown_0859615C + + .align 2 +gUnknown_08596170:: @ 8596170 + .2byte 0x0160, 0x0160, 0x0000, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000 + .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596190:: @ 8596190 + .2byte 0x00ec, 0x00ec, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085961A0:: @ 85961A0 + .4byte gUnknown_08596170 + + .align 2 +gUnknown_085961A4:: @ 85961A4 + .4byte gUnknown_08596190 + + .align 2 +gUnknown_085961A8:: @ 85961A8 + spr_template 0x27a6, 0x27a6, gUnknown_085249CC, gUnknown_08596164, NULL, gUnknown_085961A0, sub_810DBAC + + .align 2 +gUnknown_085961C0:: @ 85961C0 + spr_template 0x27a6, 0x27a6, gUnknown_085249CC, gUnknown_08596164, NULL, gUnknown_085961A0, sub_810DC2C + + .align 2 +gUnknown_085961D8:: @ 85961D8 + spr_template 0x27a6, 0x27a6, gUnknown_0852496C, gUnknown_0859616C, NULL, gUnknown_085961A4, sub_810DCD0 + + .align 2 +gUnknown_085961F0:: @ 85961F0 + .2byte 0xfff0, 0x0010, 0x0600, 0x0000, 0x0010, 0xfff0, 0x0600, 0x0000 + .2byte 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596208:: @ 8596208 + .4byte gUnknown_085961F0 + + .align 2 +gUnknown_0859620C:: @ 859620C + spr_template 0x27a6, 0x27a6, gUnknown_085249CC, gUnknown_08596168, NULL, gUnknown_08596208, sub_810DD50 + + .align 2 +gUnknown_08596224:: @ 8596224 + .2byte 0x009c, 0x009c, 0x0000, 0x0000, 0x0005, 0x0005, 0x1400, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859623C:: @ 859623C + .4byte gUnknown_08596224 + + .align 2 +gUnknown_08596240:: @ 8596240 + spr_template 0x27a6, 0x27a6, gUnknown_0852496C, gUnknown_08596164, NULL, gUnknown_0859623C, sub_810DDC4 + + .align 2 +gUnknown_08596258:: @ 8596258 + spr_template 0x27ab, 0x27ab, gUnknown_08524A8C, gUnknown_08595200, NULL, gUnknown_0859623C, sub_810DDC4 + + .align 2 +gUnknown_08596270:: @ 8596270 + spr_template 0x2719, 0x2719, gUnknown_0852495C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810DE70 + + .align 2 +gUnknown_08596288:: @ 8596288 + .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x000a, 0x0000, 0x1800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085962A0:: @ 85962A0 + .4byte gUnknown_08596288 + + .align 2 +gUnknown_085962A4:: @ 85962A4 + spr_template 0x2719, 0x2719, gUnknown_085249BC, gDummySpriteAnimTable, NULL, gUnknown_085962A0, sub_810DFA8 + + .align 2 +gUnknown_085962BC:: @ 85962BC + .2byte 0x0000, 0x0003, 0x0000, 0x0043, 0x0000, 0x0083, 0x0000, 0x00c3, 0xfffe, 0x0000 + + .align 2 +gUnknown_085962D0:: @ 85962D0 + .4byte gUnknown_085962BC + + .align 2 +gUnknown_085962D4:: @ 85962D4 + spr_template 0x27aa, 0x27aa, gUnknown_08524934, gUnknown_085962D0, NULL, gDummySpriteAffineAnimTable, sub_810E044 + + .align 2 +gUnknown_085962EC:: @ 85962EC + .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0028, 0x0000, 0x0600, 0x0000 + .2byte 0x0000, 0xffe0, 0x0500, 0x0000, 0xfff0, 0x0020, 0x0a00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596314:: @ 8596314 + .4byte gUnknown_085962EC + + .align 2 +gUnknown_08596318:: @ 8596318 + .2byte 0x0000, 0x0000, 0x0132, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596328:: @ 8596328 + .2byte 0x0000, 0x0000, 0x01d8, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596338:: @ 8596338 + .4byte gUnknown_08596318 + .4byte gUnknown_08596328 + + .align 2 +gUnknown_08596340:: @ 8596340 + spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_08596314, sub_810E13C + + .align 2 +gUnknown_08596358:: @ 8596358 + spr_template 0x27ac, 0x27ac, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gUnknown_08596338, sub_810E1C8 + + .align 2 +gUnknown_08596370:: @ 8596370 + .2byte 0x0000, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_08596378:: @ 8596378 + .2byte 0x0010, 0x0040, 0xffff, 0x0000 + + .align 2 +gUnknown_08596380:: @ 8596380 + .4byte gUnknown_08596370 + .4byte gUnknown_08596378 + + .align 2 +gUnknown_08596388:: @ 8596388 + spr_template 0x281e, 0x281e, gUnknown_08524974, gUnknown_08596380, NULL, gDummySpriteAffineAnimTable, sub_810E314 + + .align 2 +gUnknown_085963A0:: @ 85963A0 + spr_template 0x27ab, 0x27ab, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810EA4C + + .align 2 +gUnknown_085963B8:: @ 85963B8 + .2byte 0x0000, 0x0001, 0x0008, 0x0001, 0x0010, 0x0001, 0x0008, 0x0041 + .2byte 0x0000, 0x0041, 0xffff, 0x0000 + + .align 2 +gUnknown_085963D0:: @ 85963D0 + .4byte gUnknown_085963B8 + + .align 2 +gUnknown_085963D4:: @ 85963D4 + spr_template 0x27b2, 0x27b2, gUnknown_08524934, gUnknown_085963D0, NULL, gDummySpriteAffineAnimTable, sub_810EAA0 + + .align 2 +gUnknown_085963EC:: @ 85963EC + .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0028, 0x0000, 0x0600, 0x0000 + .2byte 0x0000, 0xffe0, 0x0500, 0x0000, 0xffec, 0x0000, 0x0700, 0x0000 + .2byte 0xffec, 0xffec, 0x0500, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859641C:: @ 859641C + .4byte gUnknown_085963EC + + .align 2 +gUnknown_08596420:: @ 8596420 + spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_0859641C, sub_810EC34 + + .align 2 +gUnknown_08596438:: @ 8596438 + .2byte 0x00a0, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596448:: @ 8596448 + .4byte gUnknown_08596438 + + .align 2 +gUnknown_0859644C:: @ 859644C + spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_08596448, sub_810EC94 + + .align 2 +gUnknown_08596464:: @ 8596464 + .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0028, 0x0000, 0x0600, 0x0000 + .2byte 0x0000, 0xffe0, 0x0500, 0x0000, 0xfff0, 0x0020, 0x0a00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859648C:: @ 859648C + .4byte gUnknown_08596464 + + .align 2 +gUnknown_08596490:: @ 8596490 + spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_0859648C, sub_810ED28 + + .align 2 +gUnknown_085964A8:: @ 85964A8 + .2byte 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0c00, 0x0000 + .2byte 0x0000, 0xffe0, 0x0b00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085964C8:: @ 85964C8 + .4byte gUnknown_085964A8 + + .align 2 +gUnknown_085964CC:: @ 85964CC + spr_template 0x2820, 0x2820, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810EE14 + + .align 2 +gUnknown_085964E4:: @ 85964E4 + spr_template 0x2821, 0x2821, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810EEF8 + + .align 2 +gUnknown_085964FC:: @ 85964FC + spr_template 0x27e4, 0x27e4, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F004 + + .align 2 +gUnknown_08596514:: @ 8596514 + spr_template 0x282c, 0x282c, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F084 + + .align 2 +gUnknown_0859652C:: @ 859652C + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffe, 0xfffe, 0x78f6, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596544:: @ 8596544 + .4byte gUnknown_0859652C + + .align 2 +gUnknown_08596548:: @ 8596548 + spr_template 0x27d4, 0x27d4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08596544, sub_80A77C8 + + .align 2 +gUnknown_08596560:: @ 8596560 + spr_template 0x27b6, 0x27b6, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC + + .align 2 +gUnknown_08596578:: @ 8596578 + spr_template 0x27b7, 0x27b7, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC + + .align 2 +gUnknown_08596590:: @ 8596590 + spr_template 0x27b8, 0x27b8, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC + + .align 2 +gUnknown_085965A8:: @ 85965A8 + spr_template 0x27b9, 0x27b9, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC + + .align 2 +gUnknown_085965C0:: @ 85965C0 + spr_template 0x27ba, 0x27ba, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC + + .align 2 +gUnknown_085965D8:: @ 85965D8 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003 + .2byte 0x0040, 0x0003, 0xffff, 0x0000 + + .align 2 +gUnknown_085965F0:: @ 85965F0 + .4byte gUnknown_085965D8 + + .align 2 +gUnknown_085965F4:: @ 85965F4 + spr_template 0x2757, 0x2757, gUnknown_08524914, gUnknown_085965F0, NULL, gDummySpriteAffineAnimTable, sub_810F58C + + .align 2 +gUnknown_0859660C:: @ 859660C + .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08596620:: @ 8596620 + .4byte gUnknown_0859660C + + .align 2 +gUnknown_08596624:: @ 8596624 + spr_template 0x2756, 0x2756, gUnknown_0852490C, gUnknown_08596620, NULL, gDummySpriteAffineAnimTable, sub_810F58C + + .align 2 +gUnknown_0859663C:: @ 859663C + spr_template 0x27b3, 0x27b3, gUnknown_08524954, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820 + + .align 2 +gUnknown_08596654:: @ 8596654 + .2byte 0x0008, 0x007c, 0x0010, 0x0045, 0x0008, 0x0045, 0x0000, 0x0045 + .2byte 0x0008, 0x0056, 0xfffd, 0x0000, 0x0010, 0x0045, 0x0008, 0x0045 + .2byte 0x0000, 0x0045, 0x0008, 0x0045, 0xfffd, 0x0001, 0x0008, 0x0056 + .2byte 0x0018, 0x0043, 0x0020, 0x0043, 0x0028, 0x0056, 0xffff, 0x0000 + + .align 2 +gUnknown_08596694:: @ 8596694 + .2byte 0x0008, 0x003c, 0x0010, 0x0005, 0x0008, 0x0005, 0x0000, 0x0005 + .2byte 0x0008, 0x0016, 0xfffd, 0x0000, 0x0010, 0x0005, 0x0008, 0x0005 + .2byte 0x0000, 0x0005, 0x0008, 0x0005, 0xfffd, 0x0001, 0x0008, 0x0016 + .2byte 0x0018, 0x0003, 0x0020, 0x0003, 0x0028, 0x0016, 0xffff, 0x0000 + + .align 2 +gUnknown_085966D4:: @ 85966D4 + .4byte gUnknown_08596654 + .4byte gUnknown_08596694 + + .align 2 +gUnknown_085966DC:: @ 85966DC + spr_template 0x2771, 0x2771, gUnknown_08524954, gUnknown_085966D4, NULL, gDummySpriteAffineAnimTable, sub_810F634 + + .align 2 +gUnknown_085966F4:: @ 85966F4 + .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x0006, 0x0030, 0x0006 + .2byte 0x0040, 0x0006, 0x0050, 0x0006, 0x0060, 0x0012, 0xffff, 0x0000 + + .align 2 +gUnknown_08596714:: @ 8596714 + .4byte gUnknown_085966F4 + + .align 2 +gUnknown_08596718:: @ 8596718 + .2byte 0x0000, 0x0000, 0x0404, 0x0000, 0x0000, 0x0000, 0x08fc, 0x0000 + .2byte 0x0000, 0x0000, 0x0404, 0x0000, 0x7ffd, 0x0002, 0x0000, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 gUnknown_08596740:: @ 8596740 - .incbin "baserom.gba", 0x596740, 0x1c + .4byte gUnknown_08596718 + .align 2 +gUnknown_08596744:: @ 8596744 + spr_template 0x276d, 0x276d, gUnknown_08524914, gUnknown_08596714, NULL, gDummySpriteAffineAnimTable, sub_810F6B0 + + .align 2 gUnknown_0859675C:: @ 859675C - .incbin "baserom.gba", 0x59675c, 0x20 + .2byte 0xfff8, 0x000a, 0x1000, 0x0000, 0x0012, 0xffee, 0x1000, 0x0000 + .2byte 0xffec, 0x0010, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 gUnknown_0859677C:: @ 859677C - .incbin "baserom.gba", 0x59677c, 0x18 + .2byte 0x0040, 0xfffc, 0x1400, 0x0000, 0x0000, 0x0000, 0xc800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + .align 2 gUnknown_08596794:: @ 8596794 - .incbin "baserom.gba", 0x596794, 0xd0 + spr_template 0x2809, 0x2809, gUnknown_08524A2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 +gUnknown_085967AC:: @ 85967AC + spr_template 0x280a, 0x280a, gUnknown_0852491C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810FBA8 + + .align 2 +gUnknown_085967C4:: @ 85967C4 + .2byte 0xfff8, 0xfff8, 0x0800, 0x0000, 0x0008, 0x0008, 0x0800, 0x0000 + .2byte 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085967DC:: @ 85967DC + .2byte 0x00f0, 0x00f0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0600, 0x0000 + .2byte 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0200, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08596804:: @ 8596804 + .2byte 0x00d0, 0x00d0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0400, 0x0000 + .2byte 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0400, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_0859682C:: @ 859682C + .2byte 0x00b0, 0x00b0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0200, 0x0000 + .2byte 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0600, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08596854:: @ 8596854 + .4byte gUnknown_085967C4 + .4byte gUnknown_085967DC + .4byte gUnknown_08596804 + .4byte gUnknown_0859682C + + .align 2 gUnknown_08596864:: @ 8596864 - .incbin "baserom.gba", 0x596864, 0x35c + spr_template 0x280b, 0x280b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08596854, sub_810FDF0 + .align 2 +gUnknown_0859687C:: @ 859687C + .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0004, 0x0004, 0x7800, 0x0000 + .2byte 0x7fff, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08596894:: @ 8596894 + .4byte gUnknown_0859687C + + .align 2 +gUnknown_08596898:: @ 8596898 + spr_template 0x281b, 0x281b, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08596894, sub_80A77C8 + + .align 2 +gUnknown_085968B0:: @ 85968B0 + .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0010, 0x0010, 0x1100, 0x0000 + .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0a00, 0x0000 + .2byte 0x0008, 0x0008, 0x0a00, 0x0000, 0x7ffd, 0x0004, 0x0000, 0x0000 + .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x0500, 0x0000 + .2byte 0x0010, 0x0010, 0x0500, 0x0000, 0x7ffd, 0x0007, 0x0000, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596908:: @ 8596908 + .2byte 0xffec, 0x0018, 0x0f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596918:: @ 8596918 + .4byte gUnknown_085968B0 + .4byte gUnknown_08596908 + + .align 2 +gUnknown_08596920:: @ 8596920 + spr_template 0x27e4, 0x27e4, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08596918, sub_8110240 + + .align 2 +gUnknown_08596938:: @ 8596938 + .2byte 0x0100, 0x0100, 0x001e, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596948:: @ 8596948 + .2byte 0x0100, 0x0100, 0x009d, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596958:: @ 8596958 + .2byte 0x0100, 0x0100, 0x005e, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596968:: @ 8596968 + .4byte gUnknown_08596938 + .4byte gUnknown_08596948 + .4byte gUnknown_08596958 + + .align 2 +gUnknown_08596974:: @ 8596974 + spr_template 0x27a9, 0x27a9, gUnknown_085249F4, gDummySpriteAnimTable, NULL, gUnknown_08596968, sub_8110368 + + .align 2 +gUnknown_0859698C:: @ 859698C + .2byte 0x0000, 0x0000, 0x01df, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0859699C:: @ 859699C + .2byte 0x0000, 0x0000, 0x0160, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085969AC:: @ 85969AC + .2byte 0x0000, 0x0000, 0x01a0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085969BC:: @ 85969BC + .4byte gUnknown_0859698C + .4byte gUnknown_0859699C + .4byte gUnknown_085969AC + + .align 2 +gUnknown_085969C8:: @ 85969C8 + spr_template 0x27b1, 0x27b1, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_085969BC, sub_8110438 + + .align 2 +gUnknown_085969E0:: @ 85969E0 + spr_template 0x27c4, 0x27c4, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81104E4 + + .align 2 +gUnknown_085969F8:: @ 85969F8 + spr_template 0x27c3, 0x27c3, gUnknown_0852493C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81105B4 + + .align 2 +gUnknown_08596A10:: @ 8596A10 + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0006, 0x0006, 0x0100, 0x0000 + .2byte 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08596A28:: @ 8596A28 + .4byte gUnknown_08596A10 + + .align 2 +gUnknown_08596A2C:: @ 8596A2C + spr_template 0x27c5, 0x27c5, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08596A28, sub_811067C + + .align 2 +gUnknown_08596A44:: @ 8596A44 + spr_template 0x27b1, 0x27b1, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110720 + + .align 2 +gUnknown_08596A5C:: @ 8596A5C + spr_template 0x27b1, 0x27b1, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110850 + + .align 2 +gUnknown_08596A74:: @ 8596A74 + spr_template 0x2816, 0x2816, gUnknown_08524974, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110850 + + .align 2 +gUnknown_08596A8C:: @ 8596A8C + .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1200, 0x0000 + .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0xfffb, 0xfffb, 0x0800, 0x0000 + .2byte 0x0005, 0x0005, 0x0800, 0x0000, 0x7ffd, 0x0005, 0x0000, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596AC4:: @ 8596AC4 + .4byte gUnknown_08596A8C + + .align 2 +gUnknown_08596AC8:: @ 8596AC8 + spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08596AC4, sub_8110994 + + .align 2 +gUnknown_08596AE0:: @ 8596AE0 + .2byte 0x0020, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596AE8:: @ 8596AE8 + .2byte 0x0030, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596AF0:: @ 8596AF0 + .2byte 0x0040, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596AF8:: @ 8596AF8 + .4byte gUnknown_08596AE0 + .4byte gUnknown_08596AE8 + .4byte gUnknown_08596AF0 + + .align 2 +gUnknown_08596B04:: @ 8596B04 + spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596AF8, NULL, gDummySpriteAffineAnimTable, sub_81109F0 + + .align 2 +gUnknown_08596B1C:: @ 8596B1C + spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596AF8, NULL, gDummySpriteAffineAnimTable, sub_8110AB4 + + .align 2 +gUnknown_08596B34:: @ 8596B34 + spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110B38 + + .align 2 +gUnknown_08596B4C:: @ 8596B4C + .2byte 0x00c0, 0x00c0, 0x0000, 0x0000, 0x0002, 0xfffd, 0x0500, 0x0000 + .2byte 0xfffe, 0x0003, 0x0500, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_08596B6C:: @ 8596B6C + .4byte gUnknown_08596B4C + + .align 2 +gUnknown_08596B70:: @ 8596B70 + spr_template 0x27a5, 0x27a5, gUnknown_08524A8C, gUnknown_085950E0, NULL, gUnknown_08596B6C, sub_8110B38 + + .align 2 +gUnknown_08596B88:: @ 8596B88 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8110B38 + + .align 2 +gUnknown_08596BA0:: @ 8596BA0 + spr_template 0x2815, 0x2815, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110E4C + + .align 2 +gUnknown_08596BB8:: @ 8596BB8 + .2byte 0x00f0, 0x4009, 0x0010, 0x4089 + + .align 2 gUnknown_08596BC0:: @ 8596BC0 - .incbin "baserom.gba", 0x596bc0, 0x50 + .2byte 0x0002, 0x0000 + .align 2 +gUnknown_08596BC4:: @ 8596BC4 + .4byte gUnknown_08596BB8 + + .align 2 +gUnknown_08596BC8:: @ 8596BC8 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596BD0:: @ 8596BD0 + .2byte 0x0010, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596BD8:: @ 8596BD8 + .2byte 0x0020, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596BE0:: @ 8596BE0 + .2byte 0x0030, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596BE8:: @ 8596BE8 + .2byte 0x0040, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596BF0:: @ 8596BF0 + .2byte 0x0050, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08596BF8:: @ 8596BF8 + .4byte gUnknown_08596BC8 + .4byte gUnknown_08596BD0 + + .align 2 +gUnknown_08596C00:: @ 8596C00 + .4byte gUnknown_08596BD8 + .4byte gUnknown_08596BE0 + + .align 2 +gUnknown_08596C08:: @ 8596C08 + .4byte gUnknown_08596BE8 + .4byte gUnknown_08596BF0 + + .align 2 gUnknown_08596C10:: @ 8596C10 - .incbin "baserom.gba", 0x596c10, 0x18 + spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596BF8, NULL, gDummySpriteAffineAnimTable, sub_8110F30 + .align 2 gUnknown_08596C28:: @ 8596C28 - .incbin "baserom.gba", 0x596c28, 0x18 + spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_811131C + .align 2 gUnknown_08596C40:: @ 8596C40 - .incbin "baserom.gba", 0x596c40, 0x178 + spr_template 0x274a, 0x274a, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_811131C + .align 2 +gUnknown_08596C58:: @ 8596C58 + spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596BF8, NULL, gDummySpriteAffineAnimTable, sub_8111388 + + .align 2 +gUnknown_08596C70:: @ 8596C70 + .2byte 0x0000, 0x0000, 0x05fb, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596C80:: @ 8596C80 + .2byte 0x0000, 0x0000, 0x0505, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596C90:: @ 8596C90 + .4byte gUnknown_08596C70 + .4byte gUnknown_08596C80 + + .align 2 +gUnknown_08596C98:: @ 8596C98 + spr_template 0x274a, 0x274a, gUnknown_08524974, gUnknown_08596BF8, NULL, gUnknown_08596C90, sub_8111418 + + .align 2 +gUnknown_08596CB0:: @ 8596CB0 + spr_template 0x274a, 0x274a, gUnknown_08524974, gUnknown_08596BF8, NULL, gUnknown_08596C90, sub_8111444 + + .align 2 +gUnknown_08596CC8:: @ 8596CC8 + spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596C08, NULL, gUnknown_08596C90, sub_80FF268 + + .align 2 +gUnknown_08596CE0:: @ 8596CE0 + spr_template 0x274a, 0x274a, gUnknown_08524974, gUnknown_08596C00, NULL, gUnknown_08596C90, sub_80A8EE4 + + .align 2 +gUnknown_08596CF8:: @ 8596CF8 + .2byte 0x001e, 0x001e, 0x050a, 0x0000, 0xffe2, 0xffe2, 0x050a, 0x0000 + .2byte 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596D10:: @ 8596D10 + .4byte gUnknown_08596CF8 + + .align 2 +gUnknown_08596D14:: @ 8596D14 + spr_template 0x271d, 0x271d, gUnknown_085249CC, gDummySpriteAnimTable, NULL, gUnknown_08596D10, sub_811160C + + .align 2 +gUnknown_08596D2C:: @ 8596D2C + spr_template 0x271d, 0x271d, gUnknown_08524A2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81117F4 + + .align 2 +gUnknown_08596D44:: @ 8596D44 + .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596D54:: @ 8596D54 + .4byte gUnknown_08596D44 + + .align 2 +gUnknown_08596D58:: @ 8596D58 + spr_template 0x27c0, 0x27c0, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08596D54, sub_81119E0 + + .align 2 +gUnknown_08596D70:: @ 8596D70 + .2byte 0x0000, 0x0002, 0x0008, 0x0002, 0x0010, 0x0002, 0x0018, 0x0002 + .2byte 0x0020, 0x0002, 0xffff, 0x0000 + + .align 2 +gUnknown_08596D88:: @ 8596D88 + .4byte gUnknown_08596D70 + + .align 2 +gUnknown_08596D8C:: @ 8596D8C + spr_template 0x27c1, 0x27c1, gUnknown_08524954, gUnknown_08596D88, NULL, gDummySpriteAffineAnimTable, sub_8111B9C + + .align 2 +gUnknown_08596DA4:: @ 8596DA4 + .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596DB4:: @ 8596DB4 + .4byte gUnknown_08596DA4 + + .align 2 gUnknown_08596DB8:: @ 8596DB8 - .incbin "baserom.gba", 0x596db8, 0x78 + spr_template 0x27cc, 0x27cc, gUnknown_08524A5C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112264 + .align 2 +gUnknown_08596DD0:: @ 8596DD0 + spr_template 0x27d7, 0x27d7, gUnknown_08524A54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81129F0 + + .align 2 +gUnknown_08596DE8:: @ 8596DE8 + spr_template 0x27d8, 0x27d8, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112B78 + + .align 2 +gUnknown_08596E00:: @ 8596E00 + spr_template 0x27ed, 0x27ed, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112B78 + + .align 2 +gUnknown_08596E18:: @ 8596E18 + .2byte 0x0000, 0x0004, 0x0008, 0x0004, 0x0010, 0x0004, 0x0018, 0x0004, 0xfffe, 0x0000 + + .align 2 +gUnknown_08596E2C:: @ 8596E2C + .4byte gUnknown_08596E18 + + .align 2 gUnknown_08596E30:: @ 8596E30 - .incbin "baserom.gba", 0x596e30, 0x528 + spr_template 0x280d, 0x280d, gUnknown_08524A74, gUnknown_08596E2C, NULL, gDummySpriteAffineAnimTable, sub_8112E9C + .align 2 +gUnknown_08596E48:: @ 8596E48 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112F60 + + .align 2 +gUnknown_08596E60:: @ 8596E60 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004 + .2byte 0x0040, 0x0004, 0xfffe, 0x0000 + + .align 2 +gUnknown_08596E78:: @ 8596E78 + .4byte gUnknown_08596E60 + + .align 2 +gUnknown_08596E7C:: @ 8596E7C + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08596E78, NULL, gDummySpriteAffineAnimTable, sub_8113064 + + .align 2 +gUnknown_08596E94:: @ 8596E94 + .2byte 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xfffe, 0x0000 + + .align 2 +gUnknown_08596EA4:: @ 8596EA4 + .2byte 0x0010, 0x00c3, 0x0020, 0x00c3, 0x0030, 0x00c3, 0xfffe, 0x0000 + + .align 2 +gUnknown_08596EB4:: @ 8596EB4 + .4byte gUnknown_08596E94 + .4byte gUnknown_08596EA4 + + .align 2 +gUnknown_08596EBC:: @ 8596EBC + .2byte 0x0050, 0x0050, 0x007f, 0x0000, 0x000d, 0x000d, 0x6400, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596ED4:: @ 8596ED4 + .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x000d, 0x000d, 0x6400, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596EEC:: @ 8596EEC + .4byte gUnknown_08596EBC + .4byte gUnknown_08596ED4 + + .align 2 +gUnknown_08596EF4:: @ 8596EF4 + spr_template 0x272d, 0x272d, gUnknown_085249D4, gUnknown_08596EB4, NULL, gUnknown_08596EEC, sub_8113224 + + .align 2 +gUnknown_08596F0C:: @ 8596F0C + .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005 + .2byte 0x0040, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_08596F24:: @ 8596F24 + .4byte gUnknown_08596F0C + + .align 2 +gUnknown_08596F28:: @ 8596F28 + spr_template 0x2733, 0x2733, gUnknown_08524914, gUnknown_08596F24, NULL, gDummySpriteAffineAnimTable, sub_81131B4 + + .align 2 +gUnknown_08596F40:: @ 8596F40 + .2byte 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xfffe, 0x0000 + + .align 2 +gUnknown_08596F50:: @ 8596F50 + .4byte gUnknown_08596F40 + .4byte gUnknown_08596F40 + + .align 2 +gUnknown_08596F58:: @ 8596F58 + .2byte 0x0064, 0x0064, 0x017f, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596F68:: @ 8596F68 + .2byte 0x0064, 0x0064, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596F78:: @ 8596F78 + .4byte gUnknown_08596F58 + .4byte gUnknown_08596F68 + + .align 2 +gUnknown_08596F80:: @ 8596F80 + spr_template 0x272d, 0x272d, gUnknown_085249D4, gUnknown_08596F50, NULL, gUnknown_08596F78, sub_8113224 + + .align 2 +gUnknown_08596F98:: @ 8596F98 + spr_template 0x2809, 0x2809, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8113250 + + .align 2 +gUnknown_08596FB0:: @ 8596FB0 + spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08596E78, NULL, gDummySpriteAffineAnimTable, sub_81135EC + + .align 2 +gUnknown_08596FC8:: @ 8596FC8 + spr_template 0x271f, 0x271f, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81138D4 + + .align 2 +gUnknown_08596FE0:: @ 8596FE0 + .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08596FF0:: @ 8596FF0 + .2byte 0x0000, 0x0000, 0x0120, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597000:: @ 8597000 + .2byte 0x0000, 0x0000, 0x0140, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597010:: @ 8597010 + .2byte 0x0000, 0x0000, 0x0160, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597020:: @ 8597020 + .2byte 0x0000, 0x0000, 0x0180, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597030:: @ 8597030 + .2byte 0x0000, 0x0000, 0x01a0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597040:: @ 8597040 + .2byte 0x0000, 0x0000, 0x01c0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597050:: @ 8597050 + .2byte 0x0000, 0x0000, 0x01e0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597060:: @ 8597060 + .4byte gUnknown_08596FE0 + .4byte gUnknown_08596FF0 + .4byte gUnknown_08597000 + .4byte gUnknown_08597010 + .4byte gUnknown_08597020 + .4byte gUnknown_08597030 + .4byte gUnknown_08597040 + .4byte gUnknown_08597050 + + .align 2 +gUnknown_08597080:: @ 8597080 + spr_template 0x279b, 0x279b, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08597060, sub_81139DC + + .align 2 +gUnknown_08597098:: @ 8597098 + spr_template 0x27a1, 0x27a1, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08597060, sub_81139DC + + .align 2 +gUnknown_085970B0:: @ 85970B0 + .2byte 0x00c0, 0x00c0, 0x0050, 0x0000, 0x0000, 0x0000, 0x08fe, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085970C8:: @ 85970C8 + .2byte 0x00c0, 0x00c0, 0x00b0, 0x0000, 0x0000, 0x0000, 0x0802, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_085970E0:: @ 85970E0 + .4byte gUnknown_085970B0 + .4byte gUnknown_085970C8 + + .align 2 +gUnknown_085970E8:: @ 85970E8 + spr_template 0x27ab, 0x27ab, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_085970E0, sub_8113A90 + + .align 2 +gUnknown_08597100:: @ 8597100 + .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004 + .2byte 0x0040, 0x0004, 0xffff, 0x0000 + + .align 2 +gUnknown_08597118:: @ 8597118 + .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0x0030, 0x0044 + .2byte 0x0040, 0x0044, 0xffff, 0x0000 + + .align 2 +gUnknown_08597130:: @ 8597130 + .4byte gUnknown_08597100 + .4byte gUnknown_08597118 + + .align 2 +gUnknown_08597138:: @ 8597138 + spr_template 0x2737, 0x2737, gUnknown_08524914, gUnknown_08597130, NULL, gDummySpriteAffineAnimTable, sub_81144BC + + .align 2 +gUnknown_08597150:: @ 8597150 + .2byte 0x0000, 0x0000, 0x010f, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597160:: @ 8597160 + .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597170:: @ 8597170 + .4byte gUnknown_08597150 + + .align 2 +gUnknown_08597174:: @ 8597174 + .4byte gUnknown_08597160 + + .align 2 +gUnknown_08597178:: @ 8597178 + spr_template 0x2710, 0x2710, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08597170, sub_8114994 + + .align 2 +gUnknown_08597190:: @ 8597190 + spr_template 0x2710, 0x2710, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08597174, sub_8114A7C + + .align 2 +gUnknown_085971A8:: @ 85971A8 + spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8114AF0 + + .align 2 +gUnknown_085971C0:: @ 85971C0 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_085971C8:: @ 85971C8 + .4byte gUnknown_085971C0 + + .align 2 +gUnknown_085971CC:: @ 85971CC + spr_template 0x275a, 0x275a, gUnknown_0852490C, gUnknown_085971C8, NULL, gDummySpriteAffineAnimTable, sub_8114AF0 + + .align 2 +gUnknown_085971E4:: @ 85971E4 + spr_template 0x275a, 0x275a, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8114B80 + + .align 2 +gUnknown_085971FC:: @ 85971FC + spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81151A0 + + .align 2 +gUnknown_08597214:: @ 8597214 + spr_template 0x2829, 0x2829, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8115244 + + .align 2 +gUnknown_0859722C:: @ 859722C + .2byte 0x0000, 0x0008, 0x0004, 0x0008, 0x0000, 0x0048, 0x0008, 0x0008, 0xfffe, 0x0000 + + .align 2 +gUnknown_08597240:: @ 8597240 + .2byte 0x0000, 0x0048, 0x0004, 0x0008, 0x0000, 0x0008, 0x0008, 0x0008, 0xfffe, 0x0000 + + .align 2 +gUnknown_08597254:: @ 8597254 + .4byte gUnknown_0859722C + .4byte gUnknown_08597240 + + .align 2 +gUnknown_0859725C:: @ 859725C + spr_template 0x2759, 0x2759, gUnknown_0852490C, gUnknown_08597254, NULL, gDummySpriteAffineAnimTable, sub_811572C + + .align 2 +gUnknown_08597274:: @ 8597274 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81157FC + + .align 2 +gUnknown_0859728C:: @ 859728C + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81158A4 + + .align 2 +gUnknown_085972A4:: @ 85972A4 + .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003 + .2byte 0x0040, 0x0003, 0xfffe, 0x0000 + + .align 2 +gUnknown_085972BC:: @ 85972BC + .4byte gUnknown_085972A4 + + .align 2 +gUnknown_085972C0:: @ 85972C0 + spr_template 0x2757, 0x2757, gUnknown_08524914, gUnknown_085972BC, NULL, gDummySpriteAffineAnimTable, sub_81159B4 + + .align 2 +gUnknown_085972D8:: @ 85972D8 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81160A4 + + .align 2 +gUnknown_085972F0:: @ 85972F0 + .2byte 0x0000, 0x0000, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597300:: @ 8597300 + .2byte 0x00d8, 0x00d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597318:: @ 8597318 + .2byte 0x00b0, 0x00b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597330:: @ 8597330 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_08597348:: @ 8597348 + .4byte gUnknown_085972F0 + .4byte gUnknown_08597300 + .4byte gUnknown_08597318 + .4byte gUnknown_08597330 + + .align 2 gUnknown_08597358:: @ 8597358 - .incbin "baserom.gba", 0x597358, 0x30 + spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116388 + .align 2 +gUnknown_08597370:: @ 8597370 + spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116420 + + .align 2 gUnknown_08597388:: @ 8597388 - .incbin "baserom.gba", 0x597388, 0x60 + spr_template 0x27a4, 0x27a4, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116388 + .align 2 +gUnknown_085973A0:: @ 85973A0 + spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116458 + + .align 2 +gUnknown_085973B8:: @ 85973B8 + spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_81164F0 + + .align 2 +gUnknown_085973D0:: @ 85973D0 + spr_template 0x282d, 0x282d, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8116560 + + .align 2 gUnknown_085973E8:: @ 85973E8 - .incbin "baserom.gba", 0x5973e8, 0x30 + spr_template 0x2797, 0x2797, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_81165A8 + + .align 2 +gUnknown_08597400:: @ 8597400 + spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_81163D0 gUnknown_08597418:: @ 8597418 - .incbin "baserom.gba", 0x597418, 0x2 + .2byte 0x7fff gUnknown_0859741A:: @ 859741A - .incbin "baserom.gba", 0x59741a, 0x4 + .byte 0x08, 0x0a, 0x0c, 0x0e gUnknown_0859741E:: @ 859741E - .incbin "baserom.gba", 0x59741e, 0x6 + .byte 0x08, 0x0a, 0x0c, 0x0e + .align 2 gUnknown_08597424:: @ 8597424 - .incbin "baserom.gba", 0x597424, 0x28 + .4byte task_battle_intro_80BC47C + .4byte task_battle_intro_80BC47C + .4byte task00_battle_intro_80BC6C8 + .4byte task00_battle_intro_80BC6C8 + .4byte task00_battle_intro_80BC6C8 + .4byte task_battle_intro_80BC47C + .4byte task_battle_intro_80BC47C + .4byte task_battle_intro_80BC47C + .4byte task_battle_intro_anim + .4byte task_battle_intro_anim diff --git a/data/item_use.s b/data/item_use.s index 20ca8d6830..ca0dbbb545 100644 --- a/data/item_use.s +++ b/data/item_use.s @@ -12,4 +12,4 @@ gUnknown_085920E4:: @ 85920E4 .incbin "baserom.gba", 0x5920e4, 0x4 gUnknown_085920E8:: @ 85920E8 - .incbin "baserom.gba", 0x5920e8, 0x128 + .incbin "baserom.gba", 0x5920e8, 0x8 diff --git a/graphics/unknown/unknown_593C80.png b/graphics/unknown/unknown_593C80.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a27b929b45af7e48dd1c97fcca4701ed6f5b0d GIT binary patch literal 286 zcmV+(0pb3MP)-!>2?AX$?zvx2b3Wuksgcg5(uM_(TY-a`YntIJ=^08G*C z6kXMlXVhRfvkYxp8d0Tymlj(CUuS#+e4NX#L6kXM&)CZmmX;h)hHTE-e}; zlPBR3&5x);A}xW)EOIwS0?-nR$*46J2krNOV07*qoM6N<$g2#?=+W-In literal 0 HcmV?d00001 diff --git a/graphics/unknown/unknown_593FFC.bin b/graphics/unknown/unknown_593FFC.bin new file mode 100644 index 0000000000000000000000000000000000000000..dc2990b0a5f4dccacdb5a94bcc0edb77a8c8db13 GIT binary patch literal 4096 zcmeH|O>P1)425Z-1;nN;Q*r;B_-M?VC(Cy1bOzBKA)3Uo{rN8oZgLxIOkhl4Okhl4 zOyFfEu#-1=m;J;2D)%Md@*~&He9L{xLGZ2p`?egYY5uTq_V~y#7YMT4p>6rdU6(51 zO@ev-u6)aBf8Mu}TkbGtoR+MWch>P8z%ZkEK=UzwSbC}zcg}>_*xh;7Lc(dw-&Fo> z?9^koNERVWo~Lz^tc#rHhStlxd0J)G5~Ey}%1^F-+Q}&C8O#Zbwqqi_RsGs|)2Fv@ z@m}|#hwmUW>^tjoWtgzW(vx2CmPu-Ijy!W^tB8GXrFv)e>edUWTwB)YtM{@*ebqtq zu&h;NsbGhw~qXr Kb~k=cP2dhS()e`% literal 0 HcmV?d00001 From 3ced50a9e89c4e4e8bcabcbcda1543186e3647e5 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 29 Sep 2017 17:41:45 -0500 Subject: [PATCH 052/182] Extract baseroms from item_use --- data/item_use.s | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/data/item_use.s b/data/item_use.s index ca0dbbb545..d9bcc44f66 100644 --- a/data/item_use.s +++ b/data/item_use.s @@ -5,11 +5,17 @@ .section .rodata .align 2, 0 + .align 2 gUnknown_085920D8:: @ 85920D8 - .incbin "baserom.gba", 0x5920d8, 0xc + .4byte sub_81B617C + .4byte c2_exit_to_overworld_2_switch + .4byte NULL + .align 2 gUnknown_085920E4:: @ 85920E4 - .incbin "baserom.gba", 0x5920e4, 0x4 + .byte 0x02, 0x04, 0x01, 0x03 + .align 2 gUnknown_085920E8:: @ 85920E8 - .incbin "baserom.gba", 0x5920e8, 0x8 + .4byte sub_80FE03C + .4byte bag_menu_inits_lists_menu From 5d246842b1e4f4383094c96af150196aa43777cf Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 29 Sep 2017 17:53:48 -0500 Subject: [PATCH 053/182] Extract baseroms from battle_setup.s --- data/battle_setup.s | 171 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 157 insertions(+), 14 deletions(-) diff --git a/data/battle_setup.s b/data/battle_setup.s index e4667dc9f3..d5043aae9b 100644 --- a/data/battle_setup.s +++ b/data/battle_setup.s @@ -5,43 +5,186 @@ .align 2, 0 gUnknown_0854FE88:: @ 854FE88 - .incbin "baserom.gba", 0x54fe88, 0x8 + .byte 0x08, 0x09, 0x05, 0x0a, 0x00, 0x0a, 0x07, 0x06 gUnknown_0854FE90:: @ 854FE90 - .incbin "baserom.gba", 0x54fe90, 0x8 + .byte 0x04, 0x0b, 0x02, 0x03, 0x00, 0x0a, 0x01, 0x06 gUnknown_0854FE98:: @ 854FE98 - .incbin "baserom.gba", 0x54fe98, 0xc + .byte 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29 gUnknown_0854FEA4:: @ 854FEA4 - .incbin "baserom.gba", 0x54fea4, 0x3 + .byte 0x1f, 0x20, 0x21 gUnknown_0854FEA7:: @ 854FEA7 - .incbin "baserom.gba", 0x54fea7, 0x5 + .byte 0x1d, 0x1f, 0x20, 0x21, 0x00 + .align 2 gUnknown_0854FEAC:: @ 854FEAC - .incbin "baserom.gba", 0x54feac, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_A, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD4, 0x00000002 + .4byte gUnknown_02038BDC, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000005 + .4byte gUnknown_02038BF0, 0x00000005 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_0854FEF4:: @ 854FEF4 - .incbin "baserom.gba", 0x54fef4, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_A, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD4, 0x00000002 + .4byte gUnknown_02038BDC, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000005 + .4byte gUnknown_02038BF0, 0x00000002 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_0854FF3C:: @ 854FF3C - .incbin "baserom.gba", 0x54ff3c, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_A, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD4, 0x00000002 + .4byte gUnknown_02038BDC, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000002 + .4byte gUnknown_02038BF0, 0x00000005 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_0854FF84:: @ 854FF84 - .incbin "baserom.gba", 0x54ff84, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_A, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD4, 0x00000005 + .4byte gUnknown_02038BDC, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000005 + .4byte gUnknown_02038BF0, 0x00000005 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_0854FFCC:: @ 854FFCC - .incbin "baserom.gba", 0x54ffcc, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_A, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD4, 0x00000002 + .4byte gUnknown_02038BDC, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000002 + .4byte gUnknown_02038BF0, 0x00000002 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_08550014:: @ 8550014 - .incbin "baserom.gba", 0x550014, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_B, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD8, 0x00000002 + .4byte gUnknown_02038BE0, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000005 + .4byte gUnknown_02038BF4, 0x00000005 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_0855005C:: @ 855005C - .incbin "baserom.gba", 0x55005c, 0x48 + .4byte gUnknown_02038BC8, 0x00000000 + .4byte gTrainerBattleOpponent_B, 0x00000001 + .4byte gUnknown_02038BD0, 0x00000001 + .4byte gUnknown_02038BD8, 0x00000002 + .4byte gUnknown_02038BE0, 0x00000002 + .4byte gUnknown_02038BE4, 0x00000005 + .4byte gUnknown_02038BE8, 0x00000005 + .4byte gUnknown_02038BF4, 0x00000002 + .4byte gUnknown_02038BEC, 0x00000006 + .align 2 gUnknown_085500A4:: @ 85500A4 - .incbin "baserom.gba", 0x5500a4, 0x4e0 + .2byte 0x0025, 0x0028, 0x0029, 0x002a, 0x002b, 0x0000, 0x0021, 0x0000 + .2byte 0x02e1, 0x032c, 0x032d, 0x032e, 0x032f, 0x0000, 0x0014, 0x0000 + .2byte 0x002c, 0x002f, 0x0030, 0x0031, 0x0032, 0x0000, 0x001a, 0x0000 + .2byte 0x0039, 0x003c, 0x003d, 0x003e, 0x003f, 0x0000, 0x0018, 0x0000 + .2byte 0x0040, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0018, 0x0000 + .2byte 0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x0000, 0x0027, 0x0000 + .2byte 0x02ff, 0x033c, 0x033d, 0x033e, 0x033f, 0x0000, 0x0024, 0x0000 + .2byte 0x005e, 0x0065, 0x0066, 0x0067, 0x0068, 0x0000, 0x001a, 0x0000 + .2byte 0x004e, 0x0054, 0x0055, 0x0056, 0x0057, 0x0000, 0x001a, 0x0000 + .2byte 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0018, 0x0014, 0x0000 + .2byte 0x0072, 0x0078, 0x0079, 0x007a, 0x007b, 0x0000, 0x0013, 0x0000 + .2byte 0x0090, 0x034c, 0x034d, 0x034e, 0x034f, 0x0018, 0x0038, 0x0000 + .2byte 0x007f, 0x0084, 0x0085, 0x0086, 0x0087, 0x0000, 0x0024, 0x0000 + .2byte 0x0088, 0x008b, 0x008c, 0x008d, 0x008e, 0x0000, 0x0013, 0x0000 + .2byte 0x008f, 0x0093, 0x0094, 0x0095, 0x0096, 0x0000, 0x001d, 0x0000 + .2byte 0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x0000, 0x0016, 0x0000 + .2byte 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x0000, 0x001e, 0x0000 + .2byte 0x02a0, 0x0338, 0x0339, 0x033a, 0x033b, 0x0000, 0x002a, 0x0000 + .2byte 0x00c3, 0x0340, 0x0341, 0x0342, 0x0343, 0x0000, 0x0026, 0x0000 + .2byte 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x0000, 0x0021, 0x0000 + .2byte 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x0000, 0x001d, 0x0000 + .2byte 0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0018, 0x000d, 0x0000 + .2byte 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x0018, 0x0001, 0x0000 + .2byte 0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x0000, 0x0023, 0x0000 + .2byte 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x0000, 0x0026, 0x0000 + .2byte 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0000, 0x0026, 0x0000 + .2byte 0x00fe, 0x0101, 0x0102, 0x0103, 0x0104, 0x0000, 0x0024, 0x0000 + .2byte 0x0118, 0x011a, 0x011b, 0x011c, 0x011d, 0x0000, 0x001f, 0x0000 + .2byte 0x0111, 0x0114, 0x0115, 0x0116, 0x0117, 0x0000, 0x001f, 0x0000 + .2byte 0x011f, 0x0120, 0x0121, 0x0122, 0x0123, 0x0000, 0x0020, 0x0000 + .2byte 0x012e, 0x012f, 0x0130, 0x0131, 0x0132, 0x0000, 0x0019, 0x0000 + .2byte 0x0125, 0x0127, 0x0128, 0x0129, 0x012a, 0x0000, 0x0012, 0x0000 + .2byte 0x0133, 0x0134, 0x0135, 0x0136, 0x0137, 0x0000, 0x001e, 0x0000 + .2byte 0x0139, 0x013a, 0x013b, 0x013c, 0x013d, 0x0018, 0x000c, 0x0000 + .2byte 0x013e, 0x0148, 0x0149, 0x014a, 0x014b, 0x0000, 0x0011, 0x0000 + .2byte 0x0153, 0x015a, 0x015b, 0x015c, 0x015d, 0x0000, 0x0015, 0x0000 + .2byte 0x0178, 0x017b, 0x017c, 0x017d, 0x017e, 0x0000, 0x002b, 0x0000 + .2byte 0x0171, 0x0172, 0x0173, 0x0174, 0x0175, 0x0000, 0x0020, 0x0000 + .2byte 0x0166, 0x0168, 0x0169, 0x016a, 0x016b, 0x0000, 0x0019, 0x0000 + .2byte 0x016c, 0x016d, 0x016e, 0x016f, 0x0170, 0x0000, 0x0020, 0x0000 + .2byte 0x0182, 0x0184, 0x0185, 0x0186, 0x0187, 0x0000, 0x002b, 0x0000 + .2byte 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0000, 0x0019, 0x0000 + .2byte 0x0179, 0x0334, 0x0335, 0x0336, 0x0337, 0x0000, 0x0029, 0x0000 + .2byte 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x0018, 0x0001, 0x0000 + .2byte 0x0196, 0x0199, 0x019a, 0x019b, 0x019c, 0x0000, 0x0023, 0x0000 + .2byte 0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x0000, 0x001c, 0x0000 + .2byte 0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x0000, 0x001e, 0x0000 + .2byte 0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8, 0x0000, 0x001c, 0x0000 + .2byte 0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4, 0x0000, 0x0027, 0x0000 + .2byte 0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0, 0x0018, 0x000d, 0x0000 + .2byte 0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9, 0x0000, 0x0012, 0x0000 + .2byte 0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4, 0x0000, 0x0028, 0x0000 + .2byte 0x02e4, 0x0330, 0x0331, 0x0332, 0x0333, 0x0000, 0x0017, 0x0000 + .2byte 0x0200, 0x0203, 0x0204, 0x0205, 0x0206, 0x0000, 0x0019, 0x0000 + .2byte 0x0221, 0x0224, 0x0225, 0x0226, 0x0227, 0x0000, 0x0020, 0x0000 + .2byte 0x021a, 0x021d, 0x021e, 0x021f, 0x0220, 0x0000, 0x0020, 0x0000 + .2byte 0x0009, 0x0348, 0x0349, 0x034a, 0x034b, 0x0018, 0x0011, 0x0000 + .2byte 0x022f, 0x0232, 0x0233, 0x0234, 0x0235, 0x0000, 0x0022, 0x0000 + .2byte 0x0228, 0x022b, 0x022c, 0x022d, 0x022e, 0x0000, 0x0022, 0x0000 + .2byte 0x025c, 0x025f, 0x0260, 0x0261, 0x0262, 0x0000, 0x0013, 0x0000 + .2byte 0x026d, 0x026e, 0x026f, 0x0270, 0x0271, 0x0018, 0x000b, 0x0000 + .2byte 0x0273, 0x027c, 0x027d, 0x027e, 0x027f, 0x0000, 0x001b, 0x0000 + .2byte 0x0001, 0x0344, 0x0345, 0x0346, 0x0347, 0x0018, 0x000c, 0x0000 + .2byte 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0018, 0x003e, 0x0000 + .2byte 0x0291, 0x0292, 0x0293, 0x0294, 0x0294, 0x0018, 0x002b, 0x0000 + .2byte 0x0109, 0x0302, 0x0303, 0x0304, 0x0305, 0x0000, 0x0003, 0x0000 + .2byte 0x010a, 0x0306, 0x0307, 0x0308, 0x0309, 0x0000, 0x000b, 0x0000 + .2byte 0x010b, 0x030a, 0x030b, 0x030c, 0x030d, 0x0000, 0x0002, 0x0000 + .2byte 0x010c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0000, 0x000c, 0x0000 + .2byte 0x010d, 0x0312, 0x0313, 0x0314, 0x0315, 0x0000, 0x0000, 0x0000 + .2byte 0x010e, 0x0316, 0x0317, 0x0318, 0x0319, 0x0000, 0x0004, 0x0000 + .2byte 0x010f, 0x031a, 0x031b, 0x031c, 0x031d, 0x0000, 0x0006, 0x0000 + .2byte 0x0110, 0x031e, 0x031f, 0x0320, 0x0321, 0x0000, 0x0007, 0x0000 + .2byte 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0000, 0x0008, 0x0000 + .2byte 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0000, 0x0008, 0x0000 + .2byte 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0008, 0x0000 + .2byte 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0000, 0x0008, 0x0000 + .2byte 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0000, 0x0008, 0x0000 + .align 2 gUnknown_08550584:: @ 8550584 - .incbin "baserom.gba", 0x550584, 0x10 + .2byte 0x0867, 0x0868, 0x0869, 0x086a, 0x086b, 0x086c, 0x086d, 0x086e + From 7db6b48aa083ecffd2e3d991bd983fd9be004316 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 30 Sep 2017 02:05:47 -0400 Subject: [PATCH 054/182] move externs --- src/field_special_scene.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 20331f37c8..9c35a33daa 100755 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -12,6 +12,16 @@ #define SECONDS(value) ((signed) (60.0 * value + 0.5)) +extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h +extern void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +extern bool8 sub_80D3340(u8, u8, u8); +extern bool32 CountSSTidalStep(u16); +extern bool8 exec_movement(u8, u8, u8, u8 *); +extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); +extern void sp13E_warp_to_last_warp(void); +extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); +extern void sub_80AF8B8(void); + // porthole states enum { @@ -243,9 +253,6 @@ void EndTruckSequence(u8 taskId) } } -extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h -extern void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); - bool8 sub_80FB59C(void) { s8 mapGroup, mapNum; @@ -262,12 +269,6 @@ bool8 sub_80FB59C(void) } } -extern bool8 sub_80D3340(u8, u8, u8); -extern bool32 CountSSTidalStep(u16); -extern bool8 exec_movement(u8, u8, u8, u8 *); -extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); -extern void sp13E_warp_to_last_warp(void); - void Task_HandlePorthole(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -351,9 +352,6 @@ void sub_80FB768(void) ScriptContext2_Enable(); } -extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); -extern void sub_80AF8B8(void); - void sub_80FB7A4(void) { FlagSet(SYS_CRUISE_MODE); From cd87f47c8acd890c86cdea35b2cf03244c966161 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 30 Sep 2017 09:01:21 +0200 Subject: [PATCH 055/182] fix a bad file name --- data/{rom_8158B30.s => rom_85CE2A0.s} | 0 ld_script.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename data/{rom_8158B30.s => rom_85CE2A0.s} (100%) diff --git a/data/rom_8158B30.s b/data/rom_85CE2A0.s similarity index 100% rename from data/rom_8158B30.s rename to data/rom_85CE2A0.s diff --git a/ld_script.txt b/ld_script.txt index 77e8ac4f4d..1e2ebcaf93 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -420,7 +420,7 @@ SECTIONS { data/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); data/battle_controller_safari.o(.rodata); - data/rom_8158B30.o(.rodata); + data/rom_85CE2A0.o(.rodata); src/roamer.o(.rodata); data/rom_85CECB0.o(.rodata); data/battle_controller_wally.o(.rodata); From 5d9d9c14235c93ac35f8833cdaca8f0d0b9b9c36 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 30 Sep 2017 09:11:48 +0200 Subject: [PATCH 056/182] split, rename for real this time --- data/{rom_85CE2A0.s => battle_anim_815A0D4.s} | 17 -------------- data/learn_move.s | 22 +++++++++++++++++++ ld_script.txt | 3 ++- 3 files changed, 24 insertions(+), 18 deletions(-) rename data/{rom_85CE2A0.s => battle_anim_815A0D4.s} (78%) create mode 100644 data/learn_move.s diff --git a/data/rom_85CE2A0.s b/data/battle_anim_815A0D4.s similarity index 78% rename from data/rom_85CE2A0.s rename to data/battle_anim_815A0D4.s index 72cff0b337..be8439db71 100644 --- a/data/rom_85CE2A0.s +++ b/data/battle_anim_815A0D4.s @@ -64,20 +64,3 @@ gUnknown_085CE87C:: @ 85CE87C gUnknown_085CE9C8:: @ 85CE9C8 .incbin "baserom.gba", 0x5ce9c8, 0x1e8 -gUnknown_085CEBB0:: @ 85CEBB0 - .incbin "baserom.gba", 0x5cebb0, 0x8 - -gUnknown_085CEBB8:: @ 85CEBB8 - .incbin "baserom.gba", 0x5cebb8, 0x8 - -gUnknown_085CEBC0:: @ 85CEBC0 - .incbin "baserom.gba", 0x5cebc0, 0x10 - -gUnknown_085CEBD0:: @ 85CEBD0 - .incbin "baserom.gba", 0x5cebd0, 0x40 - -gUnknown_085CEC10:: @ 85CEC10 - .incbin "baserom.gba", 0x5cec10, 0x18 - -gUnknown_085CEC28:: @ 85CEC28 - .incbin "baserom.gba", 0x5cec28, 0x8 diff --git a/data/learn_move.s b/data/learn_move.s new file mode 100644 index 0000000000..bcb8aeba1a --- /dev/null +++ b/data/learn_move.s @@ -0,0 +1,22 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnknown_085CEBB0:: @ 85CEBB0 + .incbin "baserom.gba", 0x5cebb0, 0x8 + +gUnknown_085CEBB8:: @ 85CEBB8 + .incbin "baserom.gba", 0x5cebb8, 0x8 + +gUnknown_085CEBC0:: @ 85CEBC0 + .incbin "baserom.gba", 0x5cebc0, 0x10 + +gUnknown_085CEBD0:: @ 85CEBD0 + .incbin "baserom.gba", 0x5cebd0, 0x40 + +gUnknown_085CEC10:: @ 85CEC10 + .incbin "baserom.gba", 0x5cec10, 0x18 + +gUnknown_085CEC28:: @ 85CEC28 + .incbin "baserom.gba", 0x5cec28, 0x8 diff --git a/ld_script.txt b/ld_script.txt index 1e2ebcaf93..b1aef1319d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -420,7 +420,8 @@ SECTIONS { data/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); data/battle_controller_safari.o(.rodata); - data/rom_85CE2A0.o(.rodata); + data/battle_anim_815A0D4.o(.rodata); + data/learn_move.o(.rodata); src/roamer.o(.rodata); data/rom_85CECB0.o(.rodata); data/battle_controller_wally.o(.rodata); From 2766bd78df51c90175b66dd344fe4211121b9749 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 30 Sep 2017 09:22:59 +0200 Subject: [PATCH 057/182] split the second file --- data/{rom_85CECB0.s => battle_tower.s} | 51 ------------------------ data/use_pokeblock.s | 55 ++++++++++++++++++++++++++ ld_script.txt | 3 +- 3 files changed, 57 insertions(+), 52 deletions(-) rename data/{rom_85CECB0.s => battle_tower.s} (67%) create mode 100644 data/use_pokeblock.s diff --git a/data/rom_85CECB0.s b/data/battle_tower.s similarity index 67% rename from data/rom_85CECB0.s rename to data/battle_tower.s index c0233bb8ca..a952e07731 100644 --- a/data/rom_85CECB0.s +++ b/data/battle_tower.s @@ -101,54 +101,3 @@ gUnknown_085DFA46:: @ 85DFA46 gUnknown_085DFA52:: @ 85DFA52 .incbin "baserom.gba", 0x5dfa52, 0xe - -gUnknown_085DFA60:: @ 85DFA60 - .incbin "baserom.gba", 0x5dfa60, 0x20 - -gUnknown_085DFA80:: @ 85DFA80 - .incbin "baserom.gba", 0x5dfa80, 0xe0 - -gUnknown_085DFB60:: @ 85DFB60 - .incbin "baserom.gba", 0x5dfb60, 0xac - -gUnknown_085DFC0C:: @ 85DFC0C - .incbin "baserom.gba", 0x5dfc0c, 0xa4 - -gUnknown_085DFCB0:: @ 85DFCB0 - .incbin "baserom.gba", 0x5dfcb0, 0x14 - -gUnknown_085DFCC4:: @ 85DFCC4 - .incbin "baserom.gba", 0x5dfcc4, 0x5 - -gUnknown_085DFCC9:: @ 85DFCC9 - .incbin "baserom.gba", 0x5dfcc9, 0x3 - -gUnknown_085DFCCC:: @ 85DFCCC - .incbin "baserom.gba", 0x5dfccc, 0x10 - -gUnknown_085DFCDC:: @ 85DFCDC - .incbin "baserom.gba", 0x5dfcdc, 0x20 - -gUnknown_085DFCFC:: @ 85DFCFC - .incbin "baserom.gba", 0x5dfcfc, 0x8 - -gUnknown_085DFD04:: @ 85DFD04 - .incbin "baserom.gba", 0x5dfd04, 0x14 - -gUnknown_085DFD18:: @ 85DFD18 - .incbin "baserom.gba", 0x5dfd18, 0x8 - -gUnknown_085DFD20:: @ 85DFD20 - .incbin "baserom.gba", 0x5dfd20, 0x8 - -gUnknown_085DFD28:: @ 85DFD28 - .incbin "baserom.gba", 0x5dfd28, 0x34 - -gUnknown_085DFD5C:: @ 85DFD5C - .incbin "baserom.gba", 0x5dfd5c, 0x44 - -gUnknown_085DFDA0:: @ 85DFDA0 - .incbin "baserom.gba", 0x5dfda0, 0x18 - -gUnknown_085DFDB8:: @ 85DFDB8 - .incbin "baserom.gba", 0x5dfdb8, 0x8 diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s new file mode 100644 index 0000000000..9b557a0ddc --- /dev/null +++ b/data/use_pokeblock.s @@ -0,0 +1,55 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnknown_085DFA60:: @ 85DFA60 + .incbin "baserom.gba", 0x5dfa60, 0x20 + +gUnknown_085DFA80:: @ 85DFA80 + .incbin "baserom.gba", 0x5dfa80, 0xe0 + +gUnknown_085DFB60:: @ 85DFB60 + .incbin "baserom.gba", 0x5dfb60, 0xac + +gUnknown_085DFC0C:: @ 85DFC0C + .incbin "baserom.gba", 0x5dfc0c, 0xa4 + +gUnknown_085DFCB0:: @ 85DFCB0 + .incbin "baserom.gba", 0x5dfcb0, 0x14 + +gUnknown_085DFCC4:: @ 85DFCC4 + .incbin "baserom.gba", 0x5dfcc4, 0x5 + +gUnknown_085DFCC9:: @ 85DFCC9 + .incbin "baserom.gba", 0x5dfcc9, 0x3 + +gUnknown_085DFCCC:: @ 85DFCCC + .incbin "baserom.gba", 0x5dfccc, 0x10 + +gUnknown_085DFCDC:: @ 85DFCDC + .incbin "baserom.gba", 0x5dfcdc, 0x20 + +gUnknown_085DFCFC:: @ 85DFCFC + .incbin "baserom.gba", 0x5dfcfc, 0x8 + +gUnknown_085DFD04:: @ 85DFD04 + .incbin "baserom.gba", 0x5dfd04, 0x14 + +gUnknown_085DFD18:: @ 85DFD18 + .incbin "baserom.gba", 0x5dfd18, 0x8 + +gUnknown_085DFD20:: @ 85DFD20 + .incbin "baserom.gba", 0x5dfd20, 0x8 + +gUnknown_085DFD28:: @ 85DFD28 + .incbin "baserom.gba", 0x5dfd28, 0x34 + +gUnknown_085DFD5C:: @ 85DFD5C + .incbin "baserom.gba", 0x5dfd5c, 0x44 + +gUnknown_085DFDA0:: @ 85DFDA0 + .incbin "baserom.gba", 0x5dfda0, 0x18 + +gUnknown_085DFDB8:: @ 85DFDB8 + .incbin "baserom.gba", 0x5dfdb8, 0x8 diff --git a/ld_script.txt b/ld_script.txt index b1aef1319d..0a5a77415b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -423,7 +423,8 @@ SECTIONS { data/battle_anim_815A0D4.o(.rodata); data/learn_move.o(.rodata); src/roamer.o(.rodata); - data/rom_85CECB0.o(.rodata); + data/battle_tower.o(.rodata); + data/use_pokeblock.o(.rodata); data/battle_controller_wally.o(.rodata); data/player_pc.o(.rodata); data/intro.o(.rodata); From 87b16995ebd9758071d94d1e885f000d70ef6988 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Sep 2017 23:54:08 -0400 Subject: [PATCH 058/182] Add Avara's map_constants.h --- include/map_constants.h | 1342 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1342 insertions(+) create mode 100644 include/map_constants.h diff --git a/include/map_constants.h b/include/map_constants.h new file mode 100644 index 0000000000..6199793c8a --- /dev/null +++ b/include/map_constants.h @@ -0,0 +1,1342 @@ +#ifndef GUARD_MAP_CONSTANTS_H +#define GUARD_MAP_CONSTANTS_H + +//-------------------------------------------------- +// Map Group 0 +//-------------------------------------------------- + +enum +{ + MAP_ID_PETALBURG_CITY, + MAP_ID_SLATEPORT_CITY, + MAP_ID_MAUVILLE_CITY, + MAP_ID_RUSTBORO_CITY, + MAP_ID_FORTREE_CITY, + MAP_ID_LILYCOVE_CITY, + MAP_ID_MOSSDEEP_CITY, + MAP_ID_SOOTOPOLIS_CITY, + MAP_ID_EVER_GRANDE_CITY, + MAP_ID_LITTLEROOT_TOWN, + MAP_ID_OLDALE_TOWN, + MAP_ID_DEWFORD_TOWN, + MAP_ID_LAVARIDGE_TOWN, + MAP_ID_FALLARBOR_TOWN, + MAP_ID_VERDANTURF_TOWN, + MAP_ID_PACIFIDLOG_TOWN, + MAP_ID_ROUTE101, + MAP_ID_ROUTE102, + MAP_ID_ROUTE103, + MAP_ID_ROUTE104, + MAP_ID_ROUTE105, + MAP_ID_ROUTE106, + MAP_ID_ROUTE107, + MAP_ID_ROUTE108, + MAP_ID_ROUTE109, + MAP_ID_ROUTE110, + MAP_ID_ROUTE111, + MAP_ID_ROUTE112, + MAP_ID_ROUTE113, + MAP_ID_ROUTE114, + MAP_ID_ROUTE115, + MAP_ID_ROUTE116, + MAP_ID_ROUTE117, + MAP_ID_ROUTE118, + MAP_ID_ROUTE119, + MAP_ID_ROUTE120, + MAP_ID_ROUTE121, + MAP_ID_ROUTE122, + MAP_ID_ROUTE123, + MAP_ID_ROUTE124, + MAP_ID_ROUTE125, + MAP_ID_ROUTE126, + MAP_ID_ROUTE127, + MAP_ID_ROUTE128, + MAP_ID_ROUTE129, + MAP_ID_ROUTE130, + MAP_ID_ROUTE131, + MAP_ID_ROUTE132, + MAP_ID_ROUTE133, + MAP_ID_ROUTE134, + MAP_ID_UNDERWATER1, + MAP_ID_UNDERWATER2, + MAP_ID_UNDERWATER3, + MAP_ID_UNDERWATER4, + MAP_ID_UNDERWATER5, + MAP_ID_UNDERWATER6, + MAP_ID_UNDERWATER7, +}; + +#define MAP_GROUP_PETALBURG_CITY 0 +#define MAP_GROUP_SLATEPORT_CITY 0 +#define MAP_GROUP_MAUVILLE_CITY 0 +#define MAP_GROUP_RUSTBORO_CITY 0 +#define MAP_GROUP_FORTREE_CITY 0 +#define MAP_GROUP_LILYCOVE_CITY 0 +#define MAP_GROUP_MOSSDEEP_CITY 0 +#define MAP_GROUP_SOOTOPOLIS_CITY 0 +#define MAP_GROUP_EVER_GRANDE_CITY 0 +#define MAP_GROUP_LITTLEROOT_TOWN 0 +#define MAP_GROUP_OLDALE_TOWN 0 +#define MAP_GROUP_DEWFORD_TOWN 0 +#define MAP_GROUP_LAVARIDGE_TOWN 0 +#define MAP_GROUP_FALLARBOR_TOWN 0 +#define MAP_GROUP_VERDANTURF_TOWN 0 +#define MAP_GROUP_PACIFIDLOG_TOWN 0 +#define MAP_GROUP_ROUTE101 0 +#define MAP_GROUP_ROUTE102 0 +#define MAP_GROUP_ROUTE103 0 +#define MAP_GROUP_ROUTE104 0 +#define MAP_GROUP_ROUTE105 0 +#define MAP_GROUP_ROUTE106 0 +#define MAP_GROUP_ROUTE107 0 +#define MAP_GROUP_ROUTE108 0 +#define MAP_GROUP_ROUTE109 0 +#define MAP_GROUP_ROUTE110 0 +#define MAP_GROUP_ROUTE111 0 +#define MAP_GROUP_ROUTE112 0 +#define MAP_GROUP_ROUTE113 0 +#define MAP_GROUP_ROUTE114 0 +#define MAP_GROUP_ROUTE115 0 +#define MAP_GROUP_ROUTE116 0 +#define MAP_GROUP_ROUTE117 0 +#define MAP_GROUP_ROUTE118 0 +#define MAP_GROUP_ROUTE119 0 +#define MAP_GROUP_ROUTE120 0 +#define MAP_GROUP_ROUTE121 0 +#define MAP_GROUP_ROUTE122 0 +#define MAP_GROUP_ROUTE123 0 +#define MAP_GROUP_ROUTE124 0 +#define MAP_GROUP_ROUTE125 0 +#define MAP_GROUP_ROUTE126 0 +#define MAP_GROUP_ROUTE127 0 +#define MAP_GROUP_ROUTE128 0 +#define MAP_GROUP_ROUTE129 0 +#define MAP_GROUP_ROUTE130 0 +#define MAP_GROUP_ROUTE131 0 +#define MAP_GROUP_ROUTE132 0 +#define MAP_GROUP_ROUTE133 0 +#define MAP_GROUP_ROUTE134 0 +#define MAP_GROUP_UNDERWATER1 0 +#define MAP_GROUP_UNDERWATER2 0 +#define MAP_GROUP_UNDERWATER3 0 +#define MAP_GROUP_UNDERWATER4 0 +#define MAP_GROUP_UNDERWATER5 0 +#define MAP_GROUP_UNDERWATER6 0 +#define MAP_GROUP_UNDERWATER7 0 +//-------------------------------------------------- +// Map Group 1 +//-------------------------------------------------- + +enum +{ + MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F, + MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, + MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F, + MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, + MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB, +}; + +#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1 +#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1 +#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1 +#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1 +#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1 + +//-------------------------------------------------- +// Map Group 2 +//-------------------------------------------------- + +enum +{ + MAP_ID_OLDALE_TOWN_HOUSE1, + MAP_ID_OLDALE_TOWN_HOUSE2, + MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F, + MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F, + MAP_ID_OLDALE_TOWN_MART, +}; + +#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2 +#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2 +#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2 +#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2 +#define MAP_GROUP_OLDALE_TOWN_MART 2 + +//-------------------------------------------------- +// Map Group 3 +//-------------------------------------------------- + +enum +{ + MAP_ID_DEWFORD_TOWN_HOUSE1, + MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F, + MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F, + MAP_ID_DEWFORD_TOWN_GYM, + MAP_ID_DEWFORD_TOWN_HALL, + MAP_ID_DEWFORD_TOWN_HOUSE2, +}; + +#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3 +#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3 +#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3 +#define MAP_GROUP_DEWFORD_TOWN_GYM 3 +#define MAP_GROUP_DEWFORD_TOWN_HALL 3 +#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3 + +//-------------------------------------------------- +// Map Group 4 +//-------------------------------------------------- + +enum +{ + MAP_ID_LAVARIDGE_TOWN_HERB_SHOP, + MAP_ID_LAVARIDGE_TOWN_GYM_1F, + MAP_ID_LAVARIDGE_TOWN_GYM_B1F, + MAP_ID_LAVARIDGE_TOWN_HOUSE, + MAP_ID_LAVARIDGE_TOWN_MART, + MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F, + MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F, +}; + +#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4 +#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4 +#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4 +#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4 +#define MAP_GROUP_LAVARIDGE_TOWN_MART 4 +#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4 +#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4 + +//-------------------------------------------------- +// Map Group 5 +//-------------------------------------------------- + +enum +{ + MAP_ID_FALLARBOR_TOWN_MART, + MAP_ID_FALLARBOR_TOWN_TENT_LOBBY, + MAP_ID_FALLARBOR_TOWN_TENT_HALL, + MAP_ID_FALLARBOR_TOWN_TENT_ARENA, + MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F, + MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F, + MAP_ID_FALLARBOR_TOWN_HOUSE1, + MAP_ID_FALLARBOR_TOWN_HOUSE2, +}; + +#define MAP_GROUP_FALLARBOR_TOWN_MART 5 +#define MAP_GROUP_FALLARBOR_TOWN_TENT_LOBBY 5 +#define MAP_GROUP_FALLARBOR_TOWN_TENT_HALL 5 +#define MAP_GROUP_FALLARBOR_TOWN_TENT_ARENA 5 +#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5 +#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5 +#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5 +#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5 + +//-------------------------------------------------- +// Map Group 6 +//-------------------------------------------------- + +enum +{ + MAP_ID_VERDANTURF_TOWN_TENT_LOBBY, + MAP_ID_VERDANTURF_TOWN_TENT_HALL, + MAP_ID_VERDANTURF_TOWN_TENT_ARENA, + MAP_ID_VERDANTURF_TOWN_MART, + MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F, + MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F, + MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE, + MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE, + MAP_ID_VERDANTURF_TOWN_HOUSE, +}; + +#define MAP_GROUP_VERDANTURF_TOWN_TENT_LOBBY 6 +#define MAP_GROUP_VERDANTURF_TOWN_TENT_HALL 6 +#define MAP_GROUP_VERDANTURF_TOWN_TENT_ARENA 6 +#define MAP_GROUP_VERDANTURF_TOWN_MART 6 +#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6 +#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6 +#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6 +#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6 +#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6 + +//-------------------------------------------------- +// Map Group 7 +//-------------------------------------------------- + +enum +{ + MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F, + MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F, + MAP_ID_PACIFIDLOG_TOWN_HOUSE1, + MAP_ID_PACIFIDLOG_TOWN_HOUSE2, + MAP_ID_PACIFIDLOG_TOWN_HOUSE3, + MAP_ID_PACIFIDLOG_TOWN_HOUSE4, + MAP_ID_PACIFIDLOG_TOWN_HOUSE5, +}; + +#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7 + +//-------------------------------------------------- +// Map Group 8 +//-------------------------------------------------- + +enum +{ + MAP_ID_PETALBURG_CITY_WALLYS_HOUSE, + MAP_ID_PETALBURG_CITY_GYM, + MAP_ID_PETALBURG_CITY_HOUSE1, + MAP_ID_PETALBURG_CITY_HOUSE2, + MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F, + MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F, + MAP_ID_PETALBURG_CITY_MART, +}; + +#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8 +#define MAP_GROUP_PETALBURG_CITY_GYM 8 +#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8 +#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8 +#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8 +#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8 +#define MAP_GROUP_PETALBURG_CITY_MART 8 + +//-------------------------------------------------- +// Map Group 9 +//-------------------------------------------------- + +enum +{ + MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F, + MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F, + MAP_ID_SLATEPORT_CITY_TENT_LOBBY, + MAP_ID_SLATEPORT_CITY_TENT_HALL, + MAP_ID_SLATEPORT_CITY_TENT_ARENA, + MAP_ID_SLATEPORT_CITY_HOUSE1, + MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB, + MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F, + MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F, + MAP_ID_SLATEPORT_CITY_HARBOR, + MAP_ID_SLATEPORT_CITY_HOUSE2, + MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F, + MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F, + MAP_ID_SLATEPORT_CITY_MART, +}; + +#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9 +#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9 +#define MAP_GROUP_SLATEPORT_CITY_TENT_LOBBY 9 +#define MAP_GROUP_SLATEPORT_CITY_TENT_HALL 9 +#define MAP_GROUP_SLATEPORT_CITY_TENT_ARENA 9 +#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9 +#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9 +#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9 +#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9 +#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9 +#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9 +#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9 +#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9 +#define MAP_GROUP_SLATEPORT_CITY_MART 9 + +//-------------------------------------------------- +// Map Group 10 +//-------------------------------------------------- + +enum +{ + MAP_ID_MAUVILLE_CITY_GYM, + MAP_ID_MAUVILLE_CITY_BIKE_SHOP, + MAP_ID_MAUVILLE_CITY_HOUSE1, + MAP_ID_MAUVILLE_CITY_GAME_CORNER, + MAP_ID_MAUVILLE_CITY_HOUSE2, + MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F, + MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F, + MAP_ID_MAUVILLE_CITY_MART, +}; + +#define MAP_GROUP_MAUVILLE_CITY_GYM 10 +#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10 +#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10 +#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10 +#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10 +#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10 +#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10 +#define MAP_GROUP_MAUVILLE_CITY_MART 10 + +//-------------------------------------------------- +// Map Group 11 +//-------------------------------------------------- + +enum +{ + MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F, + MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F, + MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F, + MAP_ID_RUSTBORO_CITY_GYM, + MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL, + MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F, + MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F, + MAP_ID_RUSTBORO_CITY_MART, + MAP_ID_RUSTBORO_CITY_FLAT1_1F, + MAP_ID_RUSTBORO_CITY_FLAT1_2F, + MAP_ID_RUSTBORO_CITY_HOUSE1, + MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE, + MAP_ID_RUSTBORO_CITY_HOUSE2, + MAP_ID_RUSTBORO_CITY_FLAT2_1F, + MAP_ID_RUSTBORO_CITY_FLAT2_2F, + MAP_ID_RUSTBORO_CITY_FLAT2_3F, + MAP_ID_RUSTBORO_CITY_HOUSE3, +}; + +#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11 +#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11 +#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11 +#define MAP_GROUP_RUSTBORO_CITY_GYM 11 +#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11 +#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11 +#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11 +#define MAP_GROUP_RUSTBORO_CITY_MART 11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11 +#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11 +#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11 +#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11 +#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11 + +//-------------------------------------------------- +// Map Group 12 +//-------------------------------------------------- + +enum +{ + MAP_ID_FORTREE_CITY_HOUSE1, + MAP_ID_FORTREE_CITY_GYM, + MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F, + MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F, + MAP_ID_FORTREE_CITY_MART, + MAP_ID_FORTREE_CITY_HOUSE2, + MAP_ID_FORTREE_CITY_HOUSE3, + MAP_ID_FORTREE_CITY_HOUSE4, + MAP_ID_FORTREE_CITY_HOUSE5, + MAP_ID_FORTREE_CITY_DECORATION_SHOP, +}; + +#define MAP_GROUP_FORTREE_CITY_HOUSE1 12 +#define MAP_GROUP_FORTREE_CITY_GYM 12 +#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12 +#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12 +#define MAP_GROUP_FORTREE_CITY_MART 12 +#define MAP_GROUP_FORTREE_CITY_HOUSE2 12 +#define MAP_GROUP_FORTREE_CITY_HOUSE3 12 +#define MAP_GROUP_FORTREE_CITY_HOUSE4 12 +#define MAP_GROUP_FORTREE_CITY_HOUSE5 12 +#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12 + +//-------------------------------------------------- +// Map Group 13 +//-------------------------------------------------- + +enum +{ + MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F, + MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F, + MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F, + MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, + MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY, + MAP_ID_LILYCOVE_CITY_CONTEST_HALL, + MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F, + MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F, + MAP_ID_LILYCOVE_CITY_UNUSED_MART, + MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB, + MAP_ID_LILYCOVE_CITY_HARBOR, + MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE, + MAP_ID_LILYCOVE_CITY_HOUSE1, + MAP_ID_LILYCOVE_CITY_HOUSE2, + MAP_ID_LILYCOVE_CITY_HOUSE3, + MAP_ID_LILYCOVE_CITY_HOUSE4, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP, + MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR, +}; + +#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13 +#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13 +#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13 +#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13 +#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13 +#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13 +#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13 +#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13 +#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13 +#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13 +#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13 +#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13 + +//-------------------------------------------------- +// Map Group 14 +//-------------------------------------------------- + +enum +{ + MAP_ID_MOSSDEEP_CITY_GYM, + MAP_ID_MOSSDEEP_CITY_HOUSE1, + MAP_ID_MOSSDEEP_CITY_HOUSE2, + MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F, + MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F, + MAP_ID_MOSSDEEP_CITY_MART, + MAP_ID_MOSSDEEP_CITY_HOUSE3, + MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE, + MAP_ID_MOSSDEEP_CITY_HOUSE4, + MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F, + MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F, + MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F, + MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F, +}; + +#define MAP_GROUP_MOSSDEEP_CITY_GYM 14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14 +#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14 +#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14 +#define MAP_GROUP_MOSSDEEP_CITY_MART 14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14 +#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14 +#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14 +#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14 +#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14 +#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14 + +//-------------------------------------------------- +// Map Group 15 +//-------------------------------------------------- + +enum +{ + MAP_ID_SOOTOPOLIS_CITY_GYM_1F, + MAP_ID_SOOTOPOLIS_CITY_GYM_B1F, + MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F, + MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F, + MAP_ID_SOOTOPOLIS_CITY_MART, + MAP_ID_SOOTOPOLIS_CITY_HOUSE1, + MAP_ID_SOOTOPOLIS_CITY_HOUSE2, + MAP_ID_SOOTOPOLIS_CITY_HOUSE3, + MAP_ID_SOOTOPOLIS_CITY_HOUSE4, + MAP_ID_SOOTOPOLIS_CITY_HOUSE5, + MAP_ID_SOOTOPOLIS_CITY_HOUSE6, + MAP_ID_SOOTOPOLIS_CITY_HOUSE7, + MAP_ID_SOOTOPOLIS_CITY_HOUSE8, + MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1, + MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2, +}; + +#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15 +#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1 15 +#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2 15 +//-------------------------------------------------- +// Map Group 16 +//-------------------------------------------------- + +enum +{ + MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM, + MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM, + MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM, + MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM, + MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM, + MAP_ID_EVER_GRANDE_CITY_CORRIDOR1, + MAP_ID_EVER_GRANDE_CITY_CORRIDOR2, + MAP_ID_EVER_GRANDE_CITY_CORRIDOR3, + MAP_ID_EVER_GRANDE_CITY_CORRIDOR4, + MAP_ID_EVER_GRANDE_CITY_CORRIDOR5, + MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F, + MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME, + MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F, + MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F, + MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F, +}; + +#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16 +#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16 +#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16 +#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16 +#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F 16 +#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F 16 + +//-------------------------------------------------- +// Map Group 17 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE104_MR_BRINEYS_HOUSE, + MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP, +}; + +#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17 +#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17 + +//-------------------------------------------------- +// Map Group 18 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE, + MAP_ID_ROUTE111_OLD_LADYS_REST_STOP, +}; + +#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18 +#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18 + +//-------------------------------------------------- +// Map Group 19 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE112_CABLE_CAR_STATION, + MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, +}; + +#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19 +#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19 + +//-------------------------------------------------- +// Map Group 20 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE, + MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL, + MAP_ID_ROUTE114_LANETTES_HOUSE, +}; + +#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20 +#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20 +#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20 + +//-------------------------------------------------- +// Map Group 21 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE, +}; + +#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21 + +//-------------------------------------------------- +// Map Group 22 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE117_POKEMON_DAY_CARE, +}; + +#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22 + +//-------------------------------------------------- +// Map Group 23 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE, +}; + +#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23 + +//-------------------------------------------------- +// Map Group 24 +//-------------------------------------------------- + +enum +{ + MAP_ID_METEOR_FALLS_1F_1R, + MAP_ID_METEOR_FALLS_1F_2R, + MAP_ID_METEOR_FALLS_B1F_1R, + MAP_ID_METEOR_FALLS_B1F_2R, + MAP_ID_RUSTURF_TUNNEL, + MAP_ID_UNDERWATER_SOOTOPOLIS_CITY, + MAP_ID_DESERT_RUINS, + MAP_ID_GRANITE_CAVE_1F, + MAP_ID_GRANITE_CAVE_B1F, + MAP_ID_GRANITE_CAVE_B2F, + MAP_ID_GRANITE_CAVE_STEVENS_ROOM, + MAP_ID_PETALBURG_WOODS, + MAP_ID_MT_CHIMNEY, + MAP_ID_JAGGED_PASS, + MAP_ID_FIERY_PATH, + MAP_ID_MT_PYRE_1F, + MAP_ID_MT_PYRE_2F, + MAP_ID_MT_PYRE_3F, + MAP_ID_MT_PYRE_4F, + MAP_ID_MT_PYRE_5F, + MAP_ID_MT_PYRE_6F, + MAP_ID_MT_PYRE_EXTERIOR, + MAP_ID_MT_PYRE_SUMMIT, + MAP_ID_AQUA_HIDEOUT_1F, + MAP_ID_AQUA_HIDEOUT_B1F, + MAP_ID_AQUA_HIDEOUT_B2F, + MAP_ID_UNDERWATER_SEAFLOOR_CAVERN, + MAP_ID_SEAFLOOR_CAVERN_ENTRANCE, + MAP_ID_SEAFLOOR_CAVERN_ROOM1, + MAP_ID_SEAFLOOR_CAVERN_ROOM2, + MAP_ID_SEAFLOOR_CAVERN_ROOM3, + MAP_ID_SEAFLOOR_CAVERN_ROOM4, + MAP_ID_SEAFLOOR_CAVERN_ROOM5, + MAP_ID_SEAFLOOR_CAVERN_ROOM6, + MAP_ID_SEAFLOOR_CAVERN_ROOM7, + MAP_ID_SEAFLOOR_CAVERN_ROOM8, + MAP_ID_SEAFLOOR_CAVERN_ROOM9, + MAP_ID_CAVE_OF_ORIGIN_ENTRANCE, + MAP_ID_CAVE_OF_ORIGIN_1F, + MAP_ID_CAVE_OF_ORIGIN_B1F, + MAP_ID_CAVE_OF_ORIGIN_B2F, + MAP_ID_CAVE_OF_ORIGIN_B3F, + MAP_ID_CAVE_OF_ORIGIN_B4F, + MAP_ID_VICTORY_ROAD_1F, + MAP_ID_VICTORY_ROAD_B1F, + MAP_ID_VICTORY_ROAD_B2F, + MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM, + MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM, + MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM, + MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM, + MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM, + MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM, + MAP_ID_NEW_MAUVILLE_ENTRANCE, + MAP_ID_NEW_MAUVILLE_INSIDE, + MAP_ID_ABANDONED_SHIP_DECK, + MAP_ID_ABANDONED_SHIP_CORRIDORS_1F, + MAP_ID_ABANDONED_SHIP_ROOMS_1F, + MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F, + MAP_ID_ABANDONED_SHIP_ROOMS_B1F, + MAP_ID_ABANDONED_SHIP_ROOMS2_B1F, + MAP_ID_ABANDONED_SHIP_UNDERWATER1, + MAP_ID_ABANDONED_SHIP_ROOM_B1F, + MAP_ID_ABANDONED_SHIP_ROOMS2_1F, + MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE, + MAP_ID_ABANDONED_SHIP_UNDERWATER2, + MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS, + MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS, + MAP_ID_ISLAND_CAVE, + MAP_ID_ANCIENT_TOMB, + MAP_ID_UNDERWATER_ROUTE134, + MAP_ID_UNDERWATER_SEALED_CHAMBER, + MAP_ID_SEALED_CHAMBER_OUTER_ROOM, + MAP_ID_SEALED_CHAMBER_INNER_ROOM, + MAP_ID_SCORCHED_SLAB, + MAP_ID_UNUSED_AQUA_HIDEOUT_1F, + MAP_ID_UNUSED_AQUA_HIDEOUT_B1F, + MAP_ID_UNUSED_AQUA_HIDEOUT_B2F, + MAP_ID_SKY_PILLAR_ENTRANCE, + MAP_ID_SKY_PILLAR_OUTSIDE, + MAP_ID_SKY_PILLAR_1F, + MAP_ID_SKY_PILLAR_2F, + MAP_ID_SKY_PILLAR_3F, + MAP_ID_SKY_PILLAR_4F, + MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, + MAP_ID_SKY_PILLAR_5F, + MAP_ID_SKY_PILLAR_TOP, + MAP_ID_MAGMA_HIDEOUT_ENTRANCE, + MAP_ID_MAGMA_HIDEOUT_B1F, + MAP_ID_MAGMA_HIDEOUT_B2F, + MAP_ID_MAGMA_HIDEOUT_B3F, + MAP_ID_MAGMA_HIDEOUT_B4F, + MAP_ID_MAGMA_HIDEOUT_B5F, + MAP_ID_MAGMA_HIDEOUT_B6F, + MAP_ID_MAGMA_HIDEOUT_B7F, + MAP_ID_MIRAGE_TOWER_1F, + MAP_ID_MIRAGE_TOWER_2F, + MAP_ID_MIRAGE_TOWER_3F, + MAP_ID_MIRAGE_TOWER_4F, + MAP_ID_DESERT_UNDERPASS, + MAP_ID_ARTISAN_CAVE_1F, + MAP_ID_ARTISAN_CAVE_2F, + MAP_ID_UNKNOWN_UNDERWATER, + MAP_ID_MARINE_CAVE_1F, + MAP_ID_MARINE_CAVE_2F, + MAP_ID_TERRA_CAVE_1F, + MAP_ID_TERRA_CAVE_2F, + MAP_ID_ALTERING_CAVE, + MAP_ID_METEOR_FALLS_B1F_3R, +}; + +#define MAP_GROUP_METEOR_FALLS_1F_1R 24 +#define MAP_GROUP_METEOR_FALLS_1F_2R 24 +#define MAP_GROUP_METEOR_FALLS_B1F_1R 24 +#define MAP_GROUP_METEOR_FALLS_B1F_2R 24 +#define MAP_GROUP_RUSTURF_TUNNEL 24 +#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24 +#define MAP_GROUP_DESERT_RUINS 24 +#define MAP_GROUP_GRANITE_CAVE_1F 24 +#define MAP_GROUP_GRANITE_CAVE_B1F 24 +#define MAP_GROUP_GRANITE_CAVE_B2F 24 +#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24 +#define MAP_GROUP_PETALBURG_WOODS 24 +#define MAP_GROUP_MT_CHIMNEY 24 +#define MAP_GROUP_JAGGED_PASS 24 +#define MAP_GROUP_FIERY_PATH 24 +#define MAP_GROUP_MT_PYRE_1F 24 +#define MAP_GROUP_MT_PYRE_2F 24 +#define MAP_GROUP_MT_PYRE_3F 24 +#define MAP_GROUP_MT_PYRE_4F 24 +#define MAP_GROUP_MT_PYRE_5F 24 +#define MAP_GROUP_MT_PYRE_6F 24 +#define MAP_GROUP_MT_PYRE_EXTERIOR 24 +#define MAP_GROUP_MT_PYRE_SUMMIT 24 +#define MAP_GROUP_AQUA_HIDEOUT_1F 24 +#define MAP_GROUP_AQUA_HIDEOUT_B1F 24 +#define MAP_GROUP_AQUA_HIDEOUT_B2F 24 +#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24 +#define MAP_GROUP_VICTORY_ROAD_1F 24 +#define MAP_GROUP_VICTORY_ROAD_B1F 24 +#define MAP_GROUP_VICTORY_ROAD_B2F 24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24 +#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24 +#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24 +#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24 +#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24 +#define MAP_GROUP_ABANDONED_SHIP_DECK 24 +#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24 +#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24 +#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24 +#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24 +#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24 +#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24 +#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24 +#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24 +#define MAP_GROUP_ISLAND_CAVE 24 +#define MAP_GROUP_ANCIENT_TOMB 24 +#define MAP_GROUP_UNDERWATER_ROUTE134 24 +#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24 +#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24 +#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24 +#define MAP_GROUP_SCORCHED_SLAB 24 +#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_1F 24 +#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B1F 24 +#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B2F 24 +#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24 +#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24 +#define MAP_GROUP_SKY_PILLAR_1F 24 +#define MAP_GROUP_SKY_PILLAR_2F 24 +#define MAP_GROUP_SKY_PILLAR_3F 24 +#define MAP_GROUP_SKY_PILLAR_4F 24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24 +#define MAP_GROUP_SKY_PILLAR_5F 24 +#define MAP_GROUP_SKY_PILLAR_TOP 24 +#define MAP_GROUP_MAGMA_HIDEOUT_ENTRANCE 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B3F 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B4F 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B5F 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B6F 24 +#define MAP_GROUP_MAGMA_HIDEOUT_B7F 24 +#define MAP_GROUP_MIRAGE_TOWER_1F 24 +#define MAP_GROUP_MIRAGE_TOWER_2F 24 +#define MAP_GROUP_MIRAGE_TOWER_3F 24 +#define MAP_GROUP_MIRAGE_TOWER_4F 24 +#define MAP_GROUP_DESERT_UNDERPASS 24 +#define MAP_GROUP_ARTISAN_CAVE_1F 24 +#define MAP_GROUP_ARTISAN_CAVE_2F 24 +#define MAP_GROUP_UNKNOWN_UNDERWATER 24 +#define MAP_GROUP_MARINE_CAVE_1F 24 +#define MAP_GROUP_MARINE_CAVE_2F 24 +#define MAP_GROUP_TERRA_CAVE_1F 24 +#define MAP_GROUP_TERRA_CAVE_2F 24 +#define MAP_GROUP_ALTERING_CAVE 24 +#define MAP_GROUP_METEOR_FALLS_B1F_3R 24 + +//-------------------------------------------------- +// Map Group 25 +//-------------------------------------------------- + +enum +{ + MAP_ID_SECRET_BASE_RED_CAVE1, + MAP_ID_SECRET_BASE_BROWN_CAVE1, + MAP_ID_SECRET_BASE_BLUE_CAVE1, + MAP_ID_SECRET_BASE_YELLOW_CAVE1, + MAP_ID_SECRET_BASE_TREE1, + MAP_ID_SECRET_BASE_SHRUB1, + MAP_ID_SECRET_BASE_RED_CAVE2, + MAP_ID_SECRET_BASE_BROWN_CAVE2, + MAP_ID_SECRET_BASE_BLUE_CAVE2, + MAP_ID_SECRET_BASE_YELLOW_CAVE2, + MAP_ID_SECRET_BASE_TREE2, + MAP_ID_SECRET_BASE_SHRUB2, + MAP_ID_SECRET_BASE_RED_CAVE3, + MAP_ID_SECRET_BASE_BROWN_CAVE3, + MAP_ID_SECRET_BASE_BLUE_CAVE3, + MAP_ID_SECRET_BASE_YELLOW_CAVE3, + MAP_ID_SECRET_BASE_TREE3, + MAP_ID_SECRET_BASE_SHRUB3, + MAP_ID_SECRET_BASE_RED_CAVE4, + MAP_ID_SECRET_BASE_BROWN_CAVE4, + MAP_ID_SECRET_BASE_BLUE_CAVE4, + MAP_ID_SECRET_BASE_YELLOW_CAVE4, + MAP_ID_SECRET_BASE_TREE4, + MAP_ID_SECRET_BASE_SHRUB4, + MAP_ID_SINGLE_BATTLE_COLOSSEUM, + MAP_ID_TRADE_CENTER, + MAP_ID_RECORD_CORNER, + MAP_ID_DOUBLE_BATTLE_COLOSSEUM, + MAP_ID_LINK_CONTEST_ROOM1, + MAP_ID_UNKNOWN_MAP_25_29, + MAP_ID_UNKNOWN_MAP_25_30, + MAP_ID_UNKNOWN_MAP_25_31, + MAP_ID_UNKNOWN_MAP_25_32, + MAP_ID_UNKNOWN_MAP_25_33, + MAP_ID_UNKNOWN_MAP_25_34, + MAP_ID_LINK_CONTEST_ROOM2, + MAP_ID_LINK_CONTEST_ROOM3, + MAP_ID_LINK_CONTEST_ROOM4, + MAP_ID_LINK_CONTEST_ROOM5, + MAP_ID_LINK_CONTEST_ROOM6, + MAP_ID_INSIDE_OF_TRUCK, + MAP_ID_SS_TIDAL_CORRIDOR, + MAP_ID_SS_TIDAL_LOWER_DECK, + MAP_ID_SS_TIDAL_ROOMS, + MAP_ID_TEST_ROOM_1, + MAP_ID_TEST_ROOM_2, + MAP_ID_TEST_ROOM_3, + MAP_ID_TEST_ROOM_4, + MAP_ID_TEST_ROOM_5, + MAP_ID_TEST_ROOM_6, + MAP_ID_TEST_ROOM_7, + MAP_ID_TEST_ROOM_8, + MAP_ID_TEST_ROOM_9, + MAP_ID_TEST_ROOM_10, + MAP_ID_TEST_ROOM_11, + MAP_ID_TEST_ROOM_12, + MAP_ID_TEST_ROOM_13, + MAP_ID_TEST_ROOM_14, + MAP_ID_TEST_ROOM_15, + MAP_ID_TEST_ROOM_16, + MAP_ID_UNION_ROOM, +}; + +#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25 +#define MAP_GROUP_SECRET_BASE_TREE1 25 +#define MAP_GROUP_SECRET_BASE_SHRUB1 25 +#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25 +#define MAP_GROUP_SECRET_BASE_TREE2 25 +#define MAP_GROUP_SECRET_BASE_SHRUB2 25 +#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25 +#define MAP_GROUP_SECRET_BASE_TREE3 25 +#define MAP_GROUP_SECRET_BASE_SHRUB3 25 +#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25 +#define MAP_GROUP_SECRET_BASE_TREE4 25 +#define MAP_GROUP_SECRET_BASE_SHRUB4 25 +#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25 +#define MAP_GROUP_TRADE_CENTER 25 +#define MAP_GROUP_RECORD_CORNER 25 +#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25 +#define MAP_GROUP_LINK_CONTEST_ROOM1 25 +#define MAP_GROUP_UNKNOWN_MAP_25_29 25 +#define MAP_GROUP_UNKNOWN_MAP_25_30 25 +#define MAP_GROUP_UNKNOWN_MAP_25_31 25 +#define MAP_GROUP_UNKNOWN_MAP_25_32 25 +#define MAP_GROUP_UNKNOWN_MAP_25_33 25 +#define MAP_GROUP_UNKNOWN_MAP_25_34 25 +#define MAP_GROUP_LINK_CONTEST_ROOM2 25 +#define MAP_GROUP_LINK_CONTEST_ROOM3 25 +#define MAP_GROUP_LINK_CONTEST_ROOM4 25 +#define MAP_GROUP_LINK_CONTEST_ROOM5 25 +#define MAP_GROUP_LINK_CONTEST_ROOM6 25 +#define MAP_GROUP_INSIDE_OF_TRUCK 25 +#define MAP_GROUP_SS_TIDAL_CORRIDOR 25 +#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25 +#define MAP_GROUP_SS_TIDAL_ROOMS 25 +#define MAP_GROUP_TEST_ROOM_1 25 +#define MAP_GROUP_TEST_ROOM_2 25 +#define MAP_GROUP_TEST_ROOM_3 25 +#define MAP_GROUP_TEST_ROOM_4 25 +#define MAP_GROUP_TEST_ROOM_5 25 +#define MAP_GROUP_TEST_ROOM_6 25 +#define MAP_GROUP_TEST_ROOM_7 25 +#define MAP_GROUP_TEST_ROOM_8 25 +#define MAP_GROUP_TEST_ROOM_9 25 +#define MAP_GROUP_TEST_ROOM_10 25 +#define MAP_GROUP_TEST_ROOM_11 25 +#define MAP_GROUP_TEST_ROOM_12 25 +#define MAP_GROUP_TEST_ROOM_13 25 +#define MAP_GROUP_TEST_ROOM_14 25 +#define MAP_GROUP_TEST_ROOM_15 25 +#define MAP_GROUP_TEST_ROOM_16 25 +#define MAP_GROUP_UNION_ROOM 25 +//-------------------------------------------------- +// Map Group 26 +//-------------------------------------------------- + +enum +{ + MAP_ID_SAFARI_ZONE_NORTHWEST, + MAP_ID_SAFARI_ZONE_NORTHEAST, + MAP_ID_SAFARI_ZONE_SOUTHWEST, + MAP_ID_SAFARI_ZONE_SOUTHEAST, + MAP_ID_BATTLE_FRONTIER_OUTSIDE_WEST, + MAP_ID_BATTLE_TOWER_LOBBY, + MAP_ID_BATTLE_TOWER_ELEVATOR, + MAP_ID_BATTLE_TOWER_CORRIDOR, + MAP_ID_BATTLE_TOWER_BATTLE_ROOM, + MAP_ID_SOUTHERN_ISLAND_EXTERIOR, + MAP_ID_SOUTHERN_ISLAND_INTERIOR, + MAP_ID_SAFARI_ZONE_REST_HOUSE, + MAP_ID_SAFARI_ZONE_EM_1, + MAP_ID_SAFARI_ZONE_EM_2, + MAP_ID_BATTLE_FRONTIER_OUTSIDE_EAST, + MAP_ID_BATTLE_FRONTIER_TAG_LINK, + MAP_ID_BATTLE_FRONTIER_TAG_LINK_CORRIDOR, + MAP_ID_BATTLE_FRONTIER_TAG_LINK_ARENA, + MAP_ID_BATTLE_DOME_LOBBY, + MAP_ID_BATTLE_DOME_CORRIDOR, + MAP_ID_BATTLE_DOME_ROOM, + MAP_ID_BATTLE_DOME_ARENA, + MAP_ID_BATTLE_PALACE_LOBBY, + MAP_ID_BATTLE_PALACE_CORRIDOR, + MAP_ID_BATTLE_PALACE_1F, + MAP_ID_BATTLE_PYRAMID_LOBBY, + MAP_ID_BATTLE_PYRAMID_UNKNOWN, + MAP_ID_BATTLE_PYRAMID_PEAK, + MAP_ID_BATTLE_ARENA_LOBBY, + MAP_ID_BATTLE_ARENA_CORRIDOR, + MAP_ID_BATTLE_ARENA_ARENA, + MAP_ID_BATTLE_FACTORY_LOBBY, + MAP_ID_BATTLE_FACTORY_CORRIDOR, + MAP_ID_BATTLE_FACTORY_ARENA, + MAP_ID_BATTLE_PALACE_2F, + MAP_ID_BATTLE_PALACE_3F, + MAP_ID_BATTLE_PALACE_4F, + MAP_ID_BATTLE_PALACE_5F, + MAP_ID_BATTLE_PALACE_6F, + MAP_ID_BATTLE_PALACE_TEST_ROOM, + MAP_ID_RANKING_HALL, + MAP_ID_STAT_RATER_HOUSE, + MAP_ID_BATTLE_FRONTIER_EXCHANGE, + MAP_ID_BATTLE_FRONTIER_MANIAC_HOUSE, + MAP_ID_BATTLE_FRONTIER_GAMBLING_HOUSE, + MAP_ID_BATTLE_FRONTIER_HOUSE1, + MAP_ID_BATTLE_FRONTIER_SCOTTS_HOUSE, + MAP_ID_BATTLE_FRONTIER_HOUSE2, + MAP_ID_BATTLE_FRONTIER_HOUSE3, + MAP_ID_BATTLE_FRONTIER_HOUSE4, + MAP_ID_BATTLE_FRONTIER_ENTRANCE_HALL, + MAP_ID_BATTLE_FRONTIER_HOUSE5, + MAP_ID_BATTLE_FRONTIER_UNUSED_HOUSE, + MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_1F, + MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_2F, + MAP_ID_BATTLE_FRONTIER_MART, + MAP_ID_FARAWAY_ISLAND_OUTSIDE, + MAP_ID_FARAWAY_ISLAND_FOREST, + MAP_ID_BIRTH_ISLAND_OUTSIDE, + MAP_ID_BIRTH_ISLAND_DOCKS, + MAP_ID_TRAINER_HILL_LOBBY, + MAP_ID_TRAINER_HILL_1F, + MAP_ID_TRAINER_HILL_2F, + MAP_ID_TRAINER_HILL_3F, + MAP_ID_TRAINER_HILL_4F, + MAP_ID_TRAINER_HILL_5F, + MAP_ID_NAVEL_ROCK_OUTSIDE, + MAP_ID_NAVEL_ROCK_DOCKS, + MAP_ID_NAVEL_ROCK_1F, + MAP_ID_NAVEL_ROCK_2F, + MAP_ID_NAVEL_ROCK_3F, + MAP_ID_NAVEL_ROCK_4F, + MAP_ID_NAVEL_ROCK_5F, + MAP_ID_NAVEL_ROCK_6F, + MAP_ID_NAVEL_ROCK_7F, + MAP_ID_NAVEL_ROCK_PEAK, + MAP_ID_NAVEL_ROCK_B1F, + MAP_ID_NAVEL_ROCK_B2F, + MAP_ID_NAVEL_ROCK_B3F, + MAP_ID_NAVEL_ROCK_B4F, + MAP_ID_NAVEL_ROCK_B5F, + MAP_ID_NAVEL_ROCK_B6F, + MAP_ID_NAVEL_ROCK_B7F, + MAP_ID_NAVEL_ROCK_B8F, + MAP_ID_NAVEL_ROCK_B9F, + MAP_ID_NAVEL_ROCK_B10F, + MAP_ID_NAVEL_ROCK_B11F, + MAP_ID_NAVEL_ROCK_INNER, + MAP_ID_TRAINER_HILL_ELEVATOR, +}; + +#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26 +#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26 +#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26 +#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26 +#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_WEST 26 +#define MAP_GROUP_BATTLE_TOWER_LOBBY 26 +#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26 +#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26 +#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26 +#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26 +#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26 +#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26 +#define MAP_GROUP_SAFARI_ZONE_EM_1 26 +#define MAP_GROUP_SAFARI_ZONE_EM_2 26 +#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_EAST 26 +#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK 26 +#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_CORRIDOR 26 +#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_ARENA 26 +#define MAP_GROUP_BATTLE_DOME_LOBBY 26 +#define MAP_GROUP_BATTLE_DOME_CORRIDOR 26 +#define MAP_GROUP_BATTLE_DOME_ROOM 26 +#define MAP_GROUP_BATTLE_DOME_ARENA 26 +#define MAP_GROUP_BATTLE_PALACE_LOBBY 26 +#define MAP_GROUP_BATTLE_PALACE_CORRIDOR 26 +#define MAP_GROUP_BATTLE_PALACE_1F 26 +#define MAP_GROUP_BATTLE_PYRAMID_LOBBY 26 +#define MAP_GROUP_BATTLE_PYRAMID_UNKNOWN 26 +#define MAP_GROUP_BATTLE_PYRAMID_PEAK 26 +#define MAP_GROUP_BATTLE_ARENA_LOBBY 26 +#define MAP_GROUP_BATTLE_ARENA_CORRIDOR 26 +#define MAP_GROUP_BATTLE_ARENA_ARENA 26 // rename +#define MAP_GROUP_BATTLE_FACTORY_LOBBY 26 +#define MAP_GROUP_BATTLE_FACTORY_CORRIDOR 26 +#define MAP_GROUP_BATTLE_FACTORY_ARENA 26 +#define MAP_GROUP_BATTLE_PALACE_2F 26 +#define MAP_GROUP_BATTLE_PALACE_3F 26 +#define MAP_GROUP_BATTLE_PALACE_4F 26 +#define MAP_GROUP_BATTLE_PALACE_5F 26 +#define MAP_GROUP_BATTLE_PALACE_6F 26 +#define MAP_GROUP_BATTLE_PALACE_TEST_ROOM 26 +#define MAP_GROUP_RANKING_HALL 26 +#define MAP_GROUP_STAT_RATER_HOUSE 26 +#define MAP_GROUP_BATTLE_FRONTIER_EXCHANGE 26 +#define MAP_GROUP_BATTLE_FRONTIER_MANIAC_HOUSE 26 +#define MAP_GROUP_BATTLE_FRONTIER_GAMBLING_HOUSE 26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE1 26 +#define MAP_GROUP_BATTLE_FRONTIER_SCOTTS_HOUSE 26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE2 26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE3 26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE4 26 +#define MAP_GROUP_BATTLE_FRONTIER_ENTRANCE_HALL 26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE5 26 +#define MAP_GROUP_BATTLE_FRONTIER_UNUSED_HOUSE 26 +#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_1F 26 +#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_2F 26 +#define MAP_GROUP_BATTLE_FRONTIER_MART 26 +#define MAP_GROUP_FARAWAY_ISLAND_OUTSIDE 26 +#define MAP_GROUP_FARAWAY_ISLAND_FOREST 26 +#define MAP_GROUP_BIRTH_ISLAND_OUTSIDE 26 +#define MAP_GROUP_BIRTH_ISLAND_DOCKS 26 +#define MAP_GROUP_TRAINER_HILL_LOBBY 26 +#define MAP_GROUP_TRAINER_HILL_1F 26 +#define MAP_GROUP_TRAINER_HILL_2F 26 +#define MAP_GROUP_TRAINER_HILL_3F 26 +#define MAP_GROUP_TRAINER_HILL_4F 26 +#define MAP_GROUP_TRAINER_HILL_5F 26 +#define MAP_GROUP_NAVEL_ROCK_OUTSIDE 26 +#define MAP_GROUP_NAVEL_ROCK_DOCKS 26 +#define MAP_GROUP_NAVEL_ROCK_1F 26 +#define MAP_GROUP_NAVEL_ROCK_2F 26 +#define MAP_GROUP_NAVEL_ROCK_3F 26 +#define MAP_GROUP_NAVEL_ROCK_4F 26 +#define MAP_GROUP_NAVEL_ROCK_5F 26 +#define MAP_GROUP_NAVEL_ROCK_6F 26 +#define MAP_GROUP_NAVEL_ROCK_7F 26 +#define MAP_GROUP_NAVEL_ROCK_PEAK 26 +#define MAP_GROUP_NAVEL_ROCK_B1F 26 +#define MAP_GROUP_NAVEL_ROCK_B2F 26 +#define MAP_GROUP_NAVEL_ROCK_B3F 26 +#define MAP_GROUP_NAVEL_ROCK_B4F 26 +#define MAP_GROUP_NAVEL_ROCK_B5F 26 +#define MAP_GROUP_NAVEL_ROCK_B6F 26 +#define MAP_GROUP_NAVEL_ROCK_B7F 26 +#define MAP_GROUP_NAVEL_ROCK_B8F 26 +#define MAP_GROUP_NAVEL_ROCK_B9F 26 +#define MAP_GROUP_NAVEL_ROCK_B10F 26 +#define MAP_GROUP_NAVEL_ROCK_B11F 26 +#define MAP_GROUP_NAVEL_ROCK_INNER 26 +#define MAP_GROUP_TRAINER_HILL_ELEVATOR 26 +//-------------------------------------------------- +// Map Group 27 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE104_PROTOTYPE, + MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP, +}; + +#define MAP_GROUP_ROUTE104_PROTOTYPE 27 +#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27 + +//-------------------------------------------------- +// Map Group 28 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE109_SEASHORE_HOUSE, +}; + +#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28 + +//-------------------------------------------------- +// Map Group 29 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE, + MAP_ID_ROUTE110_TRICK_HOUSE_END, + MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7, + MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8, + MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE, + MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE, +}; + +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29 +#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29 +#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29 + +//-------------------------------------------------- +// Map Group 30 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE113_GLASS_WORKSHOP, +}; + +#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30 + +//-------------------------------------------------- +// Map Group 31 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE, +}; + +#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31 + +//-------------------------------------------------- +// Map Group 32 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F, + MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F, + MAP_ID_ROUTE119_HOUSE, +}; + +#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32 +#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32 +#define MAP_GROUP_ROUTE119_HOUSE 32 + +//-------------------------------------------------- +// Map Group 33 +//-------------------------------------------------- + +enum +{ + MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE, +}; + +#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33 + +#endif // GUARD_MAP_CONSTANTS_H \ No newline at end of file From ef0b022707bd6e4167f43fa0c9396dc507ef9042 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 09:32:46 -0400 Subject: [PATCH 059/182] BSS: src/main.o, src/dma3_manager.o --- asm/librfu.s | 4 ++-- include/dma3.h | 14 -------------- src/dma3_manager.c | 18 ++++++++++++++---- src/main.c | 2 +- src/malloc.c | 1 + sym_bss.txt | 24 ++---------------------- 6 files changed, 20 insertions(+), 43 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index d8ca7538c2..129e0f34aa 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -2762,7 +2762,7 @@ sub_82E424C: @ 82E424C b _082E4266 .align 2, 0 _082E4254: .4byte gUnknown_089A324C -_082E4258: .4byte gUnknown_030000F0 +_082E4258: .4byte gDma3Requests + 0xE0 thumb_func_end sub_82E424C thumb_func_start sub_82E425C @@ -2810,7 +2810,7 @@ _082E4274: movs r0, 0 b _082E42BE .align 2, 0 -_082E42B0: .4byte gUnknown_030000FA +_082E42B0: .4byte gDma3Requests + 0xEA _082E42B4: .4byte gUnknown_03007890 _082E42B8: .4byte gUnknown_03007894 _082E42BC: diff --git a/include/dma3.h b/include/dma3.h index db75ea9e3f..265b478243 100644 --- a/include/dma3.h +++ b/include/dma3.h @@ -1,20 +1,6 @@ #ifndef GUARD_DMA3_H #define GUARD_DMA3_H -extern u8 gDma3ManagerLocked; -extern u8 gDma3RequestCursor; - -struct DmaRequestsStruct -{ - /* 0x00 */ const u8 *src; - /* 0x04 */ u8 *dest; - /* 0x08 */ u16 size; - /* 0x0A */ u16 mode; - /* 0x0C */ u32 value; -}; - -extern struct DmaRequestsStruct gDma3Requests[128]; - void ClearDma3Requests(void); void ProcessDma3Requests(void); int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); diff --git a/src/dma3_manager.c b/src/dma3_manager.c index 7cce06c150..bb015c5cfe 100644 --- a/src/dma3_manager.c +++ b/src/dma3_manager.c @@ -1,12 +1,23 @@ #include "global.h" #include "dma3.h" +IWRAM_DATA struct { + /* 0x00 */ const u8 *src; + /* 0x04 */ u8 *dest; + /* 0x08 */ u16 size; + /* 0x0A */ u16 mode; + /* 0x0C */ u32 value; +} gDma3Requests[128]; + +static bool8 gDma3ManagerLocked; +static u8 gDma3RequestCursor; + void ClearDma3Requests(void) { int i; gDma3ManagerLocked = TRUE; - gDma3RequestCursor = FALSE; + gDma3RequestCursor = 0; for(i = 0; i < (u8)ARRAY_COUNT(gDma3Requests); i++) { @@ -22,7 +33,6 @@ void ClearDma3Requests(void) void ProcessDma3Requests(void) { // NOTE: the fillerA member of the DMA struct is actually u32 value; - // NOTE: gUnknown_0300001C is just a pointer inside the gDma3Requests structure, not a true symbol; feel free to remove u16 total_size; if (gDma3ManagerLocked) @@ -331,7 +341,7 @@ _08000DB2:\n\ mov r5, r12\n\ ldrb r0, [r5]\n\ lsls r0, 4\n\ - ldr r3, =gUnknown_0300001C\n\ + ldr r3, =gDma3Requests + 0x0C\n\ adds r0, r3\n\ ldr r0, [r0]\n\ strh r0, [r1]\n\ @@ -347,7 +357,7 @@ _08000DB2:\n\ bhi _08000DB2\n\ ldrb r0, [r5]\n\ lsls r0, 4\n\ - ldr r5, =gUnknown_0300001C\n\ + ldr r5, =gDma3Requests + 0x0C\n\ adds r0, r5\n\ ldr r0, [r0]\n\ strh r0, [r1]\n\ diff --git a/src/main.c b/src/main.c index 5707e18aff..665a4dd84c 100644 --- a/src/main.c +++ b/src/main.c @@ -77,7 +77,7 @@ const IntrFunc gIntrTableTemplate[] = #define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc))) -extern u16 gUnknown_03000000; +static u16 gUnknown_03000000; extern u16 gKeyRepeatStartDelay; extern u8 gUnknown_030022B4; diff --git a/src/malloc.c b/src/malloc.c index ccb2f7d20a..1d64351c31 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -2,6 +2,7 @@ static void *sHeapStart; static u32 sHeapSize; +static u32 malloc_c_unused_0300000c; // needed to align dma3_manager.o(.bss) #define MALLOC_SYSTEM_ID 0xA3A3 diff --git a/sym_bss.txt b/sym_bss.txt index aacfa59a05..2cc5279f36 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -1,27 +1,7 @@ gUnknown_03000000: @ 3000000 - .space 0x4 - + .include "src/main.o" .include "src/malloc.o" - - .align 4 -gDma3Requests: @ 3000010 - .space 0xC - -gUnknown_0300001C: @ 300001C - .space 0xD4 - -gUnknown_030000F0: @ 30000F0 - .space 0xA - -gUnknown_030000FA: @ 30000FA - .space 0x716 - -gDma3ManagerLocked: @ 3000810 - .space 0x1 - -gDma3RequestCursor: @ 3000811 - .space 0x7 - + .include "src/dma3_manager.o" .include "src/gpu_regs.o" .include "src/bg.o" .include "src/text.o" From f4827632f2c2e78cdc798176f61e7ff26539a957 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 09:56:08 -0400 Subject: [PATCH 060/182] BSS: link.o --- src/link.c | 56 ++++++++++++++++++++++++++++++++++++++++ sym_bss.txt | 74 +---------------------------------------------------- 2 files changed, 57 insertions(+), 73 deletions(-) create mode 100644 src/link.c diff --git a/src/link.c b/src/link.c new file mode 100644 index 0000000000..ae2cd1992f --- /dev/null +++ b/src/link.c @@ -0,0 +1,56 @@ + +// Includes +#include "global.h" + +// Static type declarations + +struct BlockTransfer +{ + u16 pos; + u16 size; + void *src; + bool8 active; + u8 multiplayerId; +}; + +struct LinkTestBGInfo +{ + u32 screenBaseBlock; + u32 paletteNum; + u32 dummy_8; + u32 dummy_C; +}; + +// Static RAM declarations + +IWRAM_DATA struct BlockTransfer gUnknown_03000D10; +IWRAM_DATA u32 link_c_unused_03000d1c; +IWRAM_DATA struct BlockTransfer gUnknown_03000D20[4]; +IWRAM_DATA u32 gUnknown_03000D50; +IWRAM_DATA u32 gUnknown_03000D54; +IWRAM_DATA u8 gUnknown_03000D58; +IWRAM_DATA u32 gUnknown_03000D5C; +IWRAM_DATA u32 gUnknown_03000D60; +IWRAM_DATA u8 gUnknown_03000D64[4]; // not really, but won't match otherwise +IWRAM_DATA u8 gUnknown_03000D68[4]; +IWRAM_DATA u8 gUnknown_03000D6C; +IWRAM_DATA bool8 gUnknown_03000D6D; +IWRAM_DATA u16 gUnknown_03000D6E; +IWRAM_DATA u16 gUnknown_03000D70; +IWRAM_DATA u8 gUnknown_03000D72; +IWRAM_DATA u8 gUnknown_03000D73; +IWRAM_DATA u8 gUnknown_03000D74[4]; // not really, but won't match otherwise +IWRAM_DATA u8 gUnknown_03000D78[8]; // not really, but won't match otherwise +IWRAM_DATA u8 gUnknown_03000D80[16]; +IWRAM_DATA u16 gUnknown_03000D90[8]; +IWRAM_DATA u32 gUnknown_03000DA0; +IWRAM_DATA u32 gUnknown_03000DA4; +IWRAM_DATA void *gUnknown_03000DA8; +IWRAM_DATA void *gUnknown_03000DAC; +IWRAM_DATA bool32 gUnknown_03000DB0; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index 2cc5279f36..efd129fd77 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -6,79 +6,7 @@ gUnknown_03000000: @ 3000000 .include "src/bg.o" .include "src/text.o" .include "src/sprite.o" - -gUnknown_03000D10: @ 3000D10 - .space 0x10 - -gUnknown_03000D20: @ 3000D20 - .space 0x30 - -gUnknown_03000D50: @ 3000D50 - .space 0x4 - -gUnknown_03000D54: @ 3000D54 - .space 0x4 - -gUnknown_03000D58: @ 3000D58 - .space 0x4 - -gUnknown_03000D5C: @ 3000D5C - .space 0x4 - -gUnknown_03000D60: @ 3000D60 - .space 0x4 - -gUnknown_03000D64: @ 3000D64 - .space 0x4 - -gUnknown_03000D68: @ 3000D68 - .space 0x4 - -gUnknown_03000D6C: @ 3000D6C - .space 0x1 - -gUnknown_03000D6D: @ 3000D6D - .space 0x1 - -gUnknown_03000D6E: @ 3000D6E - .space 0x2 - -gUnknown_03000D70: @ 3000D70 - .space 0x2 - -gUnknown_03000D72: @ 3000D72 - .space 0x1 - -gUnknown_03000D73: @ 3000D73 - .space 0x1 - -gUnknown_03000D74: @ 3000D74 - .space 0x4 - -gUnknown_03000D78: @ 3000D78 - .space 0x8 - -gUnknown_03000D80: @ 3000D80 - .space 0x10 - -gUnknown_03000D90: @ 3000D90 - .space 0x10 - -gUnknown_03000DA0: @ 3000DA0 - .space 0x4 - -gUnknown_03000DA4: @ 3000DA4 - .space 0x4 - -gUnknown_03000DA8: @ 3000DA8 - .space 0x4 - -gUnknown_03000DAC: @ 3000DAC - .space 0x4 - -gUnknown_03000DB0: @ 3000DB0 - .space 0x8 - + .include "src/link.o" .include "src/rtc.o" gUnknown_03000DD0: @ 3000DD0 From 24da6e48ffe63916d1ffeb8fec720c63fdfac172 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 10:01:52 -0400 Subject: [PATCH 061/182] BSS: main_menu.o, battle_1.o --- src/battle_1.c | 17 +++++++++++++++++ src/main_menu.c | 15 +++++++++++++++ sym_bss.txt | 15 ++------------- 3 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 src/battle_1.c create mode 100644 src/main_menu.c diff --git a/src/battle_1.c b/src/battle_1.c new file mode 100644 index 0000000000..5e4ef55832 --- /dev/null +++ b/src/battle_1.c @@ -0,0 +1,17 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u32 gUnknown_03000DD4; +IWRAM_DATA u32 gUnknown_03000DD8; +IWRAM_DATA u32 gUnknown_03000DDC; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/main_menu.c b/src/main_menu.c new file mode 100644 index 0000000000..8608159c27 --- /dev/null +++ b/src/main_menu.c @@ -0,0 +1,15 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u8 gUnknown_03000DD0; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index efd129fd77..f9ce07a4bd 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -8,19 +8,8 @@ gUnknown_03000000: @ 3000000 .include "src/sprite.o" .include "src/link.o" .include "src/rtc.o" - -gUnknown_03000DD0: @ 3000DD0 - .space 0x4 - -gUnknown_03000DD4: @ 3000DD4 - .space 0x4 - -gUnknown_03000DD8: @ 3000DD8 - .space 0x4 - -gUnknown_03000DDC: @ 3000DDC - .space 0x4 - + .include "src/main_menu.o" + .include "src/battle_1.o" .include "src/egg_hatch.o" .space 0x4 @ why the gap? From 8620b9203d876764404622d2d6d8711812928979 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 10:12:35 -0400 Subject: [PATCH 062/182] BSS: berry_blender.o --- src/berry_blender.c | 18 ++++++++++++++++++ sym_bss.txt | 16 +--------------- 2 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 src/berry_blender.c diff --git a/src/berry_blender.c b/src/berry_blender.c new file mode 100644 index 0000000000..d9cc86f7ff --- /dev/null +++ b/src/berry_blender.c @@ -0,0 +1,18 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations +IWRAM_DATA u32 berry_blender_c_unused_03000de4; +IWRAM_DATA s16 gUnknown_03000DE8[8]; +IWRAM_DATA s16 gUnknown_03000DF8[6]; +IWRAM_DATA s16 gUnknown_03000E04; +IWRAM_DATA s16 gUnknown_03000E06; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index f9ce07a4bd..b05a40e98c 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -11,21 +11,7 @@ gUnknown_03000000: @ 3000000 .include "src/main_menu.o" .include "src/battle_1.o" .include "src/egg_hatch.o" - -.space 0x4 @ why the gap? - -gUnknown_03000DE8: @ 3000DE8 - .space 0x10 - -gUnknown_03000DF8: @ 3000DF8 - .space 0xC - -gUnknown_03000E04: @ 3000E04 - .space 0x2 - -gUnknown_03000E06: @ 3000E06 - .space 0x2 - + .include "src/berry_blender.o" .include "src/play_time.o" .align 2 From 64631bac9365cf8df3798d9d3be8746d4d641685 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 13:08:28 -0400 Subject: [PATCH 063/182] BSS: rom4.o, field_camera.o --- src/berry_blender.c | 2 +- src/field_camera.c | 28 ++++++++++++++++++++++++++++ src/rom4.c | 19 +++++++++++++++++++ sym_bss.txt | 37 +++---------------------------------- 4 files changed, 51 insertions(+), 35 deletions(-) create mode 100644 src/field_camera.c create mode 100644 src/rom4.c diff --git a/src/berry_blender.c b/src/berry_blender.c index d9cc86f7ff..db50fe4c42 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -5,7 +5,7 @@ // Static type declarations // Static RAM declarations -IWRAM_DATA u32 berry_blender_c_unused_03000de4; +IWRAM_DATA void *berry_blender_c_unused_03000de4; IWRAM_DATA s16 gUnknown_03000DE8[8]; IWRAM_DATA s16 gUnknown_03000DF8[6]; IWRAM_DATA s16 gUnknown_03000E04; diff --git a/src/field_camera.c b/src/field_camera.c new file mode 100644 index 0000000000..17ced6aa51 --- /dev/null +++ b/src/field_camera.c @@ -0,0 +1,28 @@ + +// Includes +#include "global.h" + +// Static type declarations + +struct FieldCameraUnknownStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + bool8 unk4; +}; + +// Static RAM declarations + +IWRAM_DATA struct FieldCameraUnknownStruct gUnknown_03000E20; +IWRAM_DATA s16 gUnknown_03000E28; +IWRAM_DATA s16 gUnknown_03000E2A; +IWRAM_DATA u8 gUnknown_03000E2C; +IWRAM_DATA void (*gUnknown_03000E30)(void); + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/rom4.c b/src/rom4.c new file mode 100644 index 0000000000..c538595f22 --- /dev/null +++ b/src/rom4.c @@ -0,0 +1,19 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations +IWRAM_DATA void *gUnknown_03000E0C; +IWRAM_DATA u8 gUnknown_03000E10[4]; +IWRAM_DATA u8 (*gUnknown_03000E14)(u32); +IWRAM_DATA u8 gUnknown_03000E18; +IWRAM_DATA u8 gUnknown_03000E19; +IWRAM_DATA void *rom4_c_unused_03000e1c; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index b05a40e98c..c81ce12beb 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -13,40 +13,9 @@ gUnknown_03000000: @ 3000000 .include "src/egg_hatch.o" .include "src/berry_blender.o" .include "src/play_time.o" - -.align 2 - -gUnknown_03000E0C: @ 3000E0C - .space 0x4 - -gUnknown_03000E10: @ 3000E10 - .space 0x4 - -gUnknown_03000E14: @ 3000E14 - .space 0x4 - -gUnknown_03000E18: @ 3000E18 - .space 0x1 - -gUnknown_03000E19: @ 3000E19 - .space 0x7 - -gUnknown_03000E20: @ 3000E20 - .space 0x8 - -gUnknown_03000E28: @ 3000E28 - .space 0x2 - -gUnknown_03000E2A: @ 3000E2A - .space 0x2 - -gUnknown_03000E2C: @ 3000E2C - .space 0x4 - -gUnknown_03000E30: @ 3000E30 - .space 0x8 - -.include "src/script.o" + .include "src/rom4.o" + .include "src/field_camera.o" + .include "src/script.o" .align 2 gUnknown_03000F30: @ 3000F30 From 1a55966f1b0341881e268379f976d919aa1e257a Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sat, 30 Sep 2017 16:37:53 -0500 Subject: [PATCH 064/182] Extract baseroms from battle_interface --- data/battle_7.s | 6 +- data/battle_interface.s | 158 ++++++++++++++++-- data/graphics.s | 27 ++- graphics/battle_interface/ball_display.pal | 19 +++ graphics/battle_interface/ball_display.png | Bin 0 -> 191 bytes graphics/battle_interface/ball_status_bar.pal | 19 +++ graphics/battle_interface/ball_status_bar.png | Bin 0 -> 174 bytes 7 files changed, 202 insertions(+), 27 deletions(-) create mode 100644 graphics/battle_interface/ball_display.pal create mode 100644 graphics/battle_interface/ball_display.png create mode 100644 graphics/battle_interface/ball_status_bar.pal create mode 100644 graphics/battle_interface/ball_status_bar.png diff --git a/data/battle_7.s b/data/battle_7.s index 4b0eea65a3..ffd2e8daaf 100644 --- a/data/battle_7.s +++ b/data/battle_7.s @@ -40,7 +40,5 @@ gUnknown_0832C108:: @ 832C108 .align 2 gUnknown_0832C128:: @ 832C128 - obj_pal gUnknown_08C11B9C, 0xd6ff - obj_pal gUnknown_08C11BBC, 0xd704 - - .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 + obj_pal gBattleInterface_BallStatusBarPal, 0xd6ff + obj_pal gBattleInterface_BallDisplayPal, 0xd704 diff --git a/data/battle_interface.s b/data/battle_interface.s index 3fd9060fd4..766f34752e 100644 --- a/data/battle_interface.s +++ b/data/battle_interface.s @@ -4,53 +4,177 @@ .section .rodata .align 2, 0 +gUnknown_0832C138:: @ 832C138 + .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 + + .align 2 gUnknown_0832C140:: @ 832C140 - .incbin "baserom.gba", 0x32c140, 0x30 + spr_template 0xd6ff, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 +gUnknown_0832C158:: @ 832C158 + spr_template 0xd700, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + + .align 2 gUnknown_0832C170:: @ 832C170 - .incbin "baserom.gba", 0x32c170, 0x30 + spr_template 0xd701, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 +gUnknown_0832C188:: @ 832C188 + spr_template 0xd702, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + + .align 2 gUnknown_0832C1A0:: @ 832C1A0 - .incbin "baserom.gba", 0x32c1a0, 0x20 + spr_template 0xd70b, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 +gUnknown_0832C1B8:: @ 832C1B8 + .byte 0x00, 0x40, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00 + + .align 2 gUnknown_0832C1C0:: @ 832C1C0 - .incbin "baserom.gba", 0x32c1c0, 0xcc + spr_template 0xd704, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 + .align 2 +gUnknown_0832C1D8:: @ 832C1D8 + spr_template 0xd705, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 + + .align 2 +gUnknown_0832C1F0:: @ 832C1F0 + spr_template 0xd706, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 + + .align 2 +gUnknown_0832C208:: @ 832C208 + spr_template 0xd707, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 + + .align 2 +gUnknown_0832C220:: @ 832C220 + .byte 0xf0, 0x00, 0x0d, 0x40, 0x30, 0x00, 0x08, 0x42 + .byte 0xf0, 0x20, 0x05, 0x43, 0x10, 0x20, 0x45, 0x43 + .byte 0x30, 0x20, 0x85, 0x43 + + .align 2 +gUnknown_0832C234:: @ 832C234 + .byte 0xf0, 0x00, 0x0d, 0x44, 0x30, 0x00, 0x08, 0x46 + .byte 0xf0, 0x20, 0x05, 0x47, 0x10, 0x20, 0x45, 0x47 + .byte 0x30, 0x20, 0x85, 0x47 + + .align 2 +gUnknown_0832C248:: @ 832C248 + .byte 0xf0, 0x00, 0x0d, 0x40, 0x30, 0x00, 0x08, 0x42 + + .align 2 +gUnknown_0832C250:: @ 832C250 + .byte 0xf0, 0x00, 0x0d, 0x40, 0x30, 0x00, 0x08, 0x42 + + .align 2 +gUnknown_0832C258:: @ 832C258 + .byte 0xf0, 0x00, 0x05, 0x40, 0x10, 0x00, 0x45, 0x40 + + .align 2 +gUnknown_0832C260:: @ 832C260 + .byte 0xf0, 0x00, 0x05, 0x40, 0x10, 0x00, 0x45, 0x40 + .byte 0xe0, 0x00, 0x80, 0x40 + + .align 2 +gUnknown_0832C26C:: @ 832C26C + .4byte 0x00000005, gUnknown_0832C220 + .4byte 0x00000002, gUnknown_0832C248 + .4byte 0x00000005, gUnknown_0832C234 + .4byte 0x00000002, gUnknown_0832C250 + + .align 2 gUnknown_0832C28C:: @ 832C28C - .incbin "baserom.gba", 0x32c28c, 0x38 + .4byte 0x00000002, gUnknown_0832C258 + .4byte 0x00000003, gUnknown_0832C260 + .align 2 +gUnknown_0832C29C:: @ 832C29C + .byte 0xa0, 0x00, 0x05, 0x40, 0xc0, 0x00, 0x45, 0x40 + .byte 0xe0, 0x00, 0x85, 0x40, 0x00, 0x00, 0xc5, 0x40 + + .align 2 +gUnknown_0832C2AC:: @ 832C2AC + .byte 0xa0, 0x00, 0x05, 0x40, 0xc0, 0x00, 0x45, 0x40 + .byte 0xe0, 0x00, 0x85, 0x40, 0x00, 0x00, 0x85, 0x40 + .byte 0x20, 0x00, 0x85, 0x40, 0x40, 0x00, 0xc5, 0x40 + + .align 2 gUnknown_0832C2C4:: @ 832C2C4 - .incbin "baserom.gba", 0x32c2c4, 0x8 + .4byte 0x00000004, gUnknown_0832C29C + .align 2 gUnknown_0832C2CC:: @ 832C2CC - .incbin "baserom.gba", 0x32c2cc, 0x68 + .4byte 0x00000006, gUnknown_0832C2AC + .align 2 +gUnknown_0832C2D4:: @ 832C2D4 + .2byte 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222 + .2byte 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777 + + .2byte 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222 + .2byte 0x7777, 0x7777, 0x7777, 0x7717, 0x1777, 0x7177, 0x7777, 0x7771 + + .2byte 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222 + .2byte 0x7777, 0x7777, 0x7777, 0x7111, 0x7777, 0x7171, 0x7777, 0x7111 + + .align 2 gUnknown_0832C334:: @ 832C334 - .incbin "baserom.gba", 0x32c334, 0x8 + obj_tiles gBattleInterface_BallStatusBarGfx, 0x0200, 0xd70c + .align 2 gUnknown_0832C33C:: @ 832C33C - .incbin "baserom.gba", 0x32c33c, 0x8 + obj_pal gBattleInterface_BallStatusBarPal, 0xd710 + .align 2 gUnknown_0832C344:: @ 832C344 - .incbin "baserom.gba", 0x32c344, 0x8 + obj_pal gBattleInterface_BallDisplayPal, 0xd712 + .align 2 gUnknown_0832C34C:: @ 832C34C - .incbin "baserom.gba", 0x32c34c, 0x18 + obj_tiles gBattleInterface_BallDisplayGfx, 0x0080, 0xd714 + .align 2 +gUnknown_0832C354:: @ 832C354 + .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 + + .align 2 +gUnknown_0832C35C:: @ 832C35C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00 + + .align 2 gUnknown_0832C364:: @ 832C364 - .incbin "baserom.gba", 0x32c364, 0x30 + spr_template 0xd70c, 0xd710, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8074078 + .align 2 +gUnknown_0832C37C:: @ 832C37C + spr_template 0xd70c, 0xd710, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8074078 + + .align 2 gUnknown_0832C394:: @ 832C394 - .incbin "baserom.gba", 0x32c394, 0x30 + spr_template 0xd714, 0xd712, gUnknown_0832C35C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80740C4 + .align 2 +gUnknown_0832C3AC:: @ 832C3AC + spr_template 0xd714, 0xd712, gUnknown_0832C35C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80740C4 + + .align 2 gUnknown_0832C3C4:: @ 832C3C4 - .incbin "baserom.gba", 0x32c3c4, 0x14 + .byte 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x02, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .align 2 gUnknown_0832C3D8:: @ 832C3D8 - .incbin "baserom.gba", 0x32c3d8, 0x14 + .byte 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .align 2 gUnknown_0832C3EC:: @ 832C3EC - .incbin "baserom.gba", 0x32c3ec, 0xc + .byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72 + .byte 0xdc, 0x29, 0x00, 0x00 + .align 2 gUnknown_0832C3F8:: @ 832C3F8 - .incbin "baserom.gba", 0x32c3f8, 0x8 + .byte 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00 diff --git a/data/graphics.s b/data/graphics.s index 0fa256449f..e206a46f12 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -30,14 +30,25 @@ gUnknown_08C0237C:: @ 8C0237C gUnknown_08C093F0:: @ 8C093F0 .incbin "baserom.gba", 0xc093f0, 0x87ac -gUnknown_08C11B9C:: @ 8C11B9C - .incbin "baserom.gba", 0xc11b9c, 0x20 + .align 2 +gBattleInterface_BallStatusBarPal:: @ 8C11B9C + .incbin "graphics/battle_interface/ball_status_bar.gbapal" -gUnknown_08C11BBC:: @ 8C11BBC - .incbin "baserom.gba", 0xc11bbc, 0x20 + .align 2 +gBattleInterface_BallDisplayPal:: @ 8C11BBC + .incbin "graphics/battle_interface/ball_display.gbapal" + .align 2 gUnknown_08C11BDC:: @ 8C11BDC - .incbin "baserom.gba", 0xc11bdc, 0x52b4 + .incbin "baserom.gba", 0xc11bdc, 0x840 + + .align 2 +gBattleInterface_BallDisplayGfx:: @ 8C1241C + .incbin "graphics/battle_interface/ball_display.4bpp" + + .align 2 +gUnknown_08C1249C:: @ 8C1249C + .incbin "baserom.gba", 0xc1249c, 0x49f4 gUnknown_08C16E90:: @ 8C16E90 .incbin "baserom.gba", 0xc16e90, 0x118 @@ -506,7 +517,11 @@ gUnknown_08D8FB9C:: @ 8D8FB9C .incbin "baserom.gba", 0xd8fb9c, 0x24 gUnknown_08D8FBC0:: @ 8D8FBC0 - .incbin "baserom.gba", 0xd8fbc0, 0xb4 + .incbin "baserom.gba", 0xd8fbc0, 0x30 + + .align 2 +gBattleInterface_BallStatusBarGfx:: @ 8D8FBF0 + .incbin "graphics/battle_interface/ball_status_bar.4bpp.lz" .align 2 gMonIcon_Egg:: @ 8D8FC74 diff --git a/graphics/battle_interface/ball_display.pal b/graphics/battle_interface/ball_display.pal new file mode 100644 index 0000000000..ea646bb82f --- /dev/null +++ b/graphics/battle_interface/ball_display.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +57 57 57 +255 255 255 +213 205 189 +131 131 139 +74 65 90 +82 106 90 +255 180 123 +246 148 115 +222 106 90 +115 255 172 +90 213 131 +255 230 57 +205 172 8 +255 90 57 +172 65 74 diff --git a/graphics/battle_interface/ball_display.png b/graphics/battle_interface/ball_display.png new file mode 100644 index 0000000000000000000000000000000000000000..0c49d7ac42b4d9bf27c624c6bafd8c9fa6aefff9 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!VDy{RzH{nqznRlLR^8grKRQn|NpO^-P_#U z?d2F1loj=VOZB%Y#rLwJivO>Py4w8zndR9v9RH&%*Eo9hJn>=&>hbb)aSY*@nVi7E zo8WM8ja0B?grkA()W)kvr#31sN={=4uu;&_)m1ohRJB3zh^mMl!yz8WQ^yJ#6Otb@ mu!SWDw@5meF}LZyU|{%ECHCn39eqWhsSKX3elF{r5}E)6n?q6n literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/ball_status_bar.pal b/graphics/battle_interface/ball_status_bar.pal new file mode 100644 index 0000000000..bc8e8f2bc1 --- /dev/null +++ b/graphics/battle_interface/ball_status_bar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +65 65 65 +255 255 222 +222 213 180 +197 189 115 +123 148 131 +82 106 98 +32 57 0 +57 82 65 +255 230 0 +255 156 148 +65 205 255 +0 0 255 +0 255 0 +255 0 0 +106 148 255 diff --git a/graphics/battle_interface/ball_status_bar.png b/graphics/battle_interface/ball_status_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..b947a7803a93d36dc0c993d8776f6f5235072a70 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^4M5Dn!VDx2e}3f)qznRlLR^8gqod>h|M%`)-Ewqq zarKnupsXYXO9smz$N$e5{?D1>c=kU7!+$Vj$eQw>-|C(aP>-dji(`n!#N>p81dsFu zJWHkruaZ~KU~l46IKj|lqQJr26ri9GR$s{~(7= Date: Sun, 1 Oct 2017 01:12:42 +0200 Subject: [PATCH 065/182] start decompiling battle2 --- asm/battle_1.s | 12 +- asm/battle_2.s | 3235 +-------------------- asm/battle_5.s | 6 +- asm/battle_7.s | 56 +- asm/battle_anim.s | 8 +- asm/battle_anim_80FE840.s | 152 +- asm/battle_anim_815A0D4.s | 26 +- asm/battle_anim_8170478.s | 8 +- asm/battle_controller_linkopponent.s | 4 +- asm/battle_controller_linkpartner.s | 4 +- asm/battle_controller_opponent.s | 6 +- asm/battle_controller_player.s | 28 +- asm/battle_controller_player_partner.s | 4 +- asm/battle_controller_recorded_opponent.s | 4 +- asm/battle_controller_recorded_player.s | 4 +- asm/battle_controller_safari.s | 10 +- asm/battle_controller_wally.s | 12 +- asm/battle_frontier_1.s | 74 +- asm/battle_frontier_2.s | 4 +- asm/battle_interface.s | 16 +- asm/battle_setup.s | 10 +- asm/battle_tower.s | 22 +- asm/battle_transition.s | 12 +- asm/berry_blender.s | 48 +- asm/cable_club.s | 34 +- asm/contest.s | 48 +- asm/contest_link_80F57C4.s | 60 +- asm/contest_link_80FC4F4.s | 40 +- asm/contest_link_81D9DE4.s | 10 +- asm/contest_painting.s | 6 +- asm/evolution_scene.s | 54 +- asm/field_screen.s | 2 +- asm/link.s | 298 +- asm/menu_helpers.s | 2 +- asm/mystery_event_menu.s | 8 +- asm/pokeblock_feed.s | 4 +- asm/pokemon_summary_screen.s | 10 +- asm/pokenav.s | 10 +- asm/record_mixing.s | 8 +- asm/recorded_battle.s | 10 +- asm/reshow_battle_screen.s | 10 +- asm/rom3.s | 26 +- asm/rom6.s | 14 +- asm/rom_80A5C6C.s | 12 +- asm/script_pokemon_util_80F87D8.s | 10 +- asm/trade.s | 66 +- asm/trainer_card.s | 20 +- asm/unknown_task.s | 6 +- include/battle.h | 51 +- include/battle_setup.h | 6 + include/flags.h | 2 + include/global.berry.h | 13 +- include/global.h | 9 +- include/link.h | 18 +- include/load_save.h | 1 + include/pokemon.h | 1 + include/recorded_battle.h | 5 + include/unknown_task.h | 12 +- ld_script.txt | 1 + src/battle_2.c | 1343 +++++++++ src/battle_script_commands.c | 3 +- src/egg_hatch.c | 6 +- src/pokemon_2.c | 12 +- src/pokemon_3.c | 4 +- sym_common.txt | 4 +- sym_ewram.txt | 25 +- 66 files changed, 2143 insertions(+), 3906 deletions(-) create mode 100644 include/battle_setup.h create mode 100644 src/battle_2.c diff --git a/asm/battle_1.s b/asm/battle_1.s index 636bafbea0..168f16ccae 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1667,8 +1667,8 @@ _08035A8A: .pool thumb_func_end load_battle_oval_graphics - thumb_func_start sub_8035AA4 -sub_8035AA4: @ 8035AA4 + thumb_func_start LoadBattleTextboxAndBackground +LoadBattleTextboxAndBackground: @ 8035AA4 push {lr} ldr r0, =gUnknown_08C00000 movs r1, 0xC0 @@ -1690,7 +1690,7 @@ sub_8035AA4: @ 8035AA4 pop {r0} bx r0 .pool - thumb_func_end sub_8035AA4 + thumb_func_end LoadBattleTextboxAndBackground thumb_func_start sub_8035AE4 sub_8035AE4: @ 8035AE4 @@ -2457,8 +2457,8 @@ _08036138: .pool thumb_func_end task00_0800F6FC - thumb_func_start sub_8036154 -sub_8036154: @ 8036154 + thumb_func_start LoadBattleEntryBackground +LoadBattleEntryBackground: @ 8036154 push {r4,r5,lr} ldr r0, =gBattleTypeFlags ldr r1, [r0] @@ -2668,7 +2668,7 @@ _080363AC: pop {r0} bx r0 .pool - thumb_func_end sub_8036154 + thumb_func_end LoadBattleEntryBackground thumb_func_start sub_80363C4 sub_80363C4: @ 80363C4 diff --git a/asm/battle_2.s b/asm/battle_2.s index 9965793135..0f4ec2bea0 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4,3157 +4,6 @@ .syntax unified .text - - - thumb_func_start sub_8036760 -sub_8036760: @ 8036760 - push {lr} - bl MoveSaveBlocks_ResetHeap - bl sub_8056F28 - bl dp11_init - bl init_uns_table_pokemon_copy - bl sub_8185F84 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080367CC - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _08036798 - bl InitBattle - b _080367BA - .pool -_08036798: - movs r0, 0x80 - lsls r0, 15 - ands r1, r0 - cmp r1, 0 - bne _080367B4 - bl battle_wireless_setup_if_required_maybe - ldr r0, =sub_8037ADC - bl SetMainCallback2 - b _080367BA - .pool -_080367B4: - ldr r0, =intro_end - bl SetMainCallback2 -_080367BA: - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1] - b _080367D0 - .pool -_080367CC: - bl InitBattle -_080367D0: - pop {r0} - bx r0 - thumb_func_end sub_8036760 - - thumb_func_start InitBattle -InitBattle: @ 80367D4 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - mov r0, sp - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r1, =0x00005051 - movs r0, 0x44 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - ldr r0, =gUnknown_02022E24 - movs r2, 0xF0 - strh r2, [r0] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _08036870 - ldr r0, =gPartnerTrainerId - ldrh r1, [r0] - ldr r0, =0x00000c03 - cmp r1, r0 - beq _08036870 - ldr r1, =gUnknown_02022E26 - movs r0, 0x9F - strh r0, [r1] - ldr r0, =gUnknown_02022E28 - strh r2, [r0] - ldr r1, =gUnknown_02022E2A - movs r0, 0x20 - strh r0, [r1] - b _080368BE - .pool -_08036870: - ldr r0, =gUnknown_02022E26 - ldr r2, =0x00005051 - adds r1, r2, 0 - strh r1, [r0] - bl dp12_8087EA4 - ldr r0, =gUnknown_02038C28 - movs r3, 0xF0 - movs r5, 0xF0 - lsls r5, 3 - adds r2, r0, r5 - movs r1, 0x4F -_08036888: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08036888 - movs r1, 0x50 - ldr r4, =gUnknown_0831AC70 - ldr r0, =gUnknown_02038C28 - ldr r3, =0x0000ff10 - movs r5, 0x82 - lsls r5, 4 - adds r2, r0, r5 - adds r0, 0xA0 -_080368A6: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _080368A6 - ldr r0, [r4] - ldr r1, [r4, 0x4] - ldr r2, [r4, 0x8] - bl sub_80BA038 -_080368BE: - bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldr r0, =gBattle_BG1_X - strh r1, [r0] - ldr r0, =gBattle_BG1_Y - strh r1, [r0] - ldr r0, =gBattle_BG2_X - strh r1, [r0] - ldr r0, =gBattle_BG2_Y - strh r1, [r0] - ldr r0, =gBattle_BG3_X - strh r1, [r0] - ldr r0, =gUnknown_02022E22 - strh r1, [r0] - bl sub_80B0BD0 - ldr r2, =gBattleTerrain - strb r0, [r2] - ldr r4, =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _080368FE - movs r0, 0x8 - strb r0, [r2] -_080368FE: - bl c2_berry_program_update_menu - bl sub_8035AA4 - bl ResetSpriteData - bl ResetTasks - bl sub_8036154 - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, =VBlankCB_Battle - bl SetVBlankCallback - bl sub_803269C - ldr r2, [r4] - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _0803693E - ldr r1, =0x00400040 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - bne _08036994 -_0803693E: - ldr r0, =sub_8037458 - bl SetMainCallback2 - b _080369AE - .pool -_08036994: - movs r0, 0x40 - ands r2, r0 - cmp r2, 0 - beq _080369A8 - ldr r0, =sub_8037DF4 - bl SetMainCallback2 - b _080369AE - .pool -_080369A8: - ldr r0, =sub_8036FAC - bl SetMainCallback2 -_080369AE: - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - ldr r1, =0x01000002 - ands r0, r1 - cmp r0, 0 - bne _080369E8 - ldr r4, =gEnemyParty - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - adds r0, r4, 0 - movs r2, 0x1 - bl CreateNPCTrainerParty - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080369E4 - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - ldr r1, =gTrainerBattleOpponent_B - ldrh r1, [r1] - movs r2, 0 - bl CreateNPCTrainerParty -_080369E4: - bl SetWildMonHeldItem -_080369E8: - ldr r1, =gMain - ldr r2, =0x00000439 - adds r1, r2 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r5, =0x00000ca9 - adds r1, r5 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r4, =gPlayerParty - movs r0, 0xFA - lsls r0, 1 - adds r5, r4, r0 -_08036A10: - adds r0, r4, 0 - movs r1, 0x3 - bl AdjustFriendship - adds r4, 0x64 - cmp r4, r5 - ble _08036A10 - movs r1, 0 - ldr r0, =gBattleCommunication - strb r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end InitBattle - - thumb_func_start sub_8036A5C -sub_8036A5C: @ 8036A5C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - mov r9, r6 - movs r0, 0xCE - lsls r0, 1 - mov r10, r0 - mov r8, r6 -_08036A72: - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08036AEE - cmp r5, r10 - beq _08036ABA - cmp r7, 0 - beq _08036ABA - cmp r1, 0 - bne _08036ABA - movs r0, 0x1 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08036ABA: - cmp r5, 0 - beq _08036AEE - cmp r7, 0 - beq _08036AD6 - cmp r5, r10 - beq _08036ACA - cmp r1, 0 - beq _08036AD6 -_08036ACA: - movs r0, 0x2 - mov r1, r8 - lsls r0, r1 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08036AD6: - cmp r5, 0 - beq _08036AEE - cmp r5, r10 - beq _08036AEE - cmp r7, 0 - bne _08036AEE - movs r0, 0x3 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08036AEE: - movs r0, 0x2 - add r8, r0 - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x5 - ble _08036A72 - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r1, 0xC1 - lsls r1, 1 - adds r0, r1 - strb r6, [r0] - ldr r0, [r4] - ldr r5, =0x00000183 - adds r0, r5 - lsrs r1, r6, 8 - strb r1, [r0] - ldr r0, =0x000008d2 - bl FlagGet - ldr r1, [r4] - adds r1, r5 - lsls r0, 7 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8036A5C - - thumb_func_start sub_8036B44 -sub_8036B44: @ 8036B44 - push {r4-r7,lr} - ldr r0, =gBattleStruct - ldr r5, [r0] - movs r0, 0xC2 - lsls r0, 1 - adds r4, r5, r0 - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _08036BC0 - movs r2, 0 - ldr r7, =gSaveBlock1Ptr - movs r1, 0xC6 - lsls r1, 1 - adds r5, r1 - adds r6, r7, 0 - ldr r3, =0x000031f8 -_08036B66: - adds r0, r4, r2 - ldr r1, [r6] - adds r1, r3 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _08036B66 - adds r1, r4, r2 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 - adds r3, r5, 0 - ldr r6, =gSaveBlock1Ptr - ldr r5, =0x00003214 -_08036B86: - adds r0, r3, r2 - ldr r1, [r6] - adds r1, r5 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x11 - ble _08036B86 - ldr r0, [r7] - ldr r1, =0x00003226 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4, 0x7] - ldr r0, [r7] - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - b _08036C00 - .pool -_08036BC0: - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r3, r0, 0 - movs r2, 0 - movs r0, 0xC6 - lsls r0, 1 - adds r5, r0 -_08036BD8: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _08036BD8 - adds r1, r4, r2 - movs r0, 0xFF - strb r0, [r1] - adds r0, r5, 0 - movs r2, 0 - adds r1, r0, 0 - adds r1, 0x11 -_08036BF4: - strb r2, [r1] - subs r1, 0x1 - cmp r1, r0 - bge _08036BF4 - movs r0, 0 - strb r0, [r4, 0x7] -_08036C00: - strb r0, [r4, 0x1A] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8036B44 - - thumb_func_start berry_801017C -berry_801017C: @ 8036C08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08036C20 - b _08036D4C -_08036C20: - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _08036CDC - movs r5, 0 - ldr r3, =gEnigmaBerries - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - adds r6, r3, 0 - mov r4, r8 - ldr r2, =0x000031f8 - adds r7, r3, 0 - adds r7, 0x38 -_08036C3A: - adds r1, r5, r6 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, r7 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x5 - ble _08036C3A - adds r1, r5, r3 - movs r0, 0xFF - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r5, r0 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - movs r5, 0 - adds r7, r3, 0 - adds r7, 0x8 - ldr r4, =gSaveBlock1Ptr - ldr r2, =0x00003214 - adds r6, r3, 0 - adds r6, 0x40 -_08036C78: - adds r1, r5, r7 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, r6 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x11 - ble _08036C78 - mov r1, r8 - ldr r0, [r1] - ldr r2, =0x00003226 - adds r0, r2 - ldrb r1, [r0] - strb r1, [r3, 0x7] - ldrb r0, [r0] - adds r1, r3, 0 - adds r1, 0x3F - strb r0, [r1] - mov r4, r8 - ldr r0, [r4] - ldr r1, =0x00003227 - adds r0, r1 - ldrb r1, [r0] - strb r1, [r3, 0x1A] - ldrb r1, [r0] - adds r0, r3, 0 - adds r0, 0x52 - strb r1, [r0] - b _08036EA0 - .pool -_08036CDC: - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r6, r0, 0 - movs r5, 0 - ldr r4, =gEnigmaBerries - adds r7, r4, 0 - adds r7, 0x38 - adds r3, r4, 0 -_08036CF6: - adds r1, r5, r4 - adds r2, r6, r5 - ldrb r0, [r2] - strb r0, [r1] - adds r1, r5, r7 - ldrb r0, [r2] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x5 - ble _08036CF6 - adds r1, r5, r3 - movs r0, 0xFF - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r5, r0 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - movs r5, 0 - adds r4, r3, 0 - adds r4, 0x8 - movs r1, 0 - adds r2, r3, 0 - adds r2, 0x40 -_08036D28: - adds r0, r5, r4 - strb r1, [r0] - adds r0, r5, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x11 - ble _08036D28 - movs r1, 0 - strb r1, [r3, 0x7] - adds r0, r3, 0 - adds r0, 0x3F - strb r1, [r0] - strb r1, [r3, 0x1A] - adds r0, 0x13 - strb r1, [r0] - b _08036EA0 - .pool -_08036D4C: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08036DF0 - movs r0, 0x80 - lsls r0, 1 - ands r1, r0 - movs r2, 0x4 - mov r8, r2 - cmp r1, 0 - beq _08036D66 - movs r4, 0x2 - mov r8, r4 -_08036D66: - movs r5, 0 - cmp r5, r8 - blt _08036D6E - b _08036EA0 -_08036D6E: - ldr r0, =gLinkPlayers - mov r12, r0 - ldr r3, =gEnigmaBerries - adds r6, r3, 0 - movs r1, 0x8 - adds r1, r6 - mov r9, r1 -_08036D7C: - lsls r1, r5, 8 - ldr r0, =gUnknown_020223C8 - adds r7, r1, r0 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrb r3, [r0, 0x18] - movs r4, 0 - adds r5, 0x1 - mov r10, r5 - lsls r1, r3, 3 - subs r0, r1, r3 - adds r5, r1, 0 - lsls r0, 2 - adds r1, r0, r6 -_08036D9C: - adds r0, r7, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x5 - ble _08036D9C - subs r0, r5, r3 - lsls r0, 2 - adds r1, r4, r0 - adds r1, r6 - movs r2, 0xFF - strb r2, [r1] - movs r4, 0 - mov r2, r9 - adds r1, r0, r2 - adds r2, r7, 0 - adds r2, 0x8 -_08036DC0: - adds r0, r2, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x11 - ble _08036DC0 - subs r0, r5, r3 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r7, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r7, 0x1A] - strb r1, [r0, 0x1A] - mov r5, r10 - cmp r5, r8 - blt _08036D7C - b _08036EA0 - .pool -_08036DF0: - movs r5, 0 - ldr r4, =gEnigmaBerries - mov r9, r4 -_08036DF6: - lsls r0, r5, 8 - ldr r1, =gUnknown_020223C8 - adds r7, r0, r1 - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 - lsls r0, r5, 3 - mov r8, r0 - adds r1, r5, 0x2 - mov r12, r1 - subs r1, r0, r5 - mov r2, r12 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - mov r2, r9 - adds r3, r0, r2 - lsls r1, 2 - adds r2, r1, r2 -_08036E1C: - adds r0, r7, r4 - ldrb r1, [r0] - strb r1, [r2] - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - adds r4, 0x1 - cmp r4, 0x5 - ble _08036E1C - mov r0, r8 - subs r3, r0, r5 - lsls r3, 2 - adds r1, r4, r3 - add r1, r9 - ldrb r0, [r1] - movs r2, 0xFF - orrs r0, r2 - strb r0, [r1] - mov r0, r12 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r1, r4, r2 - add r1, r9 - ldrb r0, [r1] - movs r4, 0xFF - orrs r0, r4 - strb r0, [r1] - movs r4, 0 - ldr r0, =gEnigmaBerries - adds r0, 0x8 - adds r2, r0 - adds r3, r0 - adds r6, r7, 0 - adds r6, 0x8 -_08036E64: - adds r0, r6, r4 - ldrb r1, [r0] - strb r1, [r3] - ldrb r0, [r0] - strb r0, [r2] - adds r2, 0x1 - adds r3, 0x1 - adds r4, 0x1 - cmp r4, 0x11 - ble _08036E64 - mov r0, r8 - subs r2, r0, r5 - lsls r2, 2 - add r2, r9 - ldrb r0, [r7, 0x7] - strb r0, [r2, 0x7] - mov r1, r12 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r7, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r7, 0x1A] - strb r1, [r2, 0x1A] - ldrb r1, [r7, 0x1A] - strb r1, [r0, 0x1A] - mov r5, r10 - cmp r5, 0x1 - ble _08036DF6 -_08036EA0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end berry_801017C - - thumb_func_start sub_8036EB8 -sub_8036EB8: @ 8036EB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - movs r6, 0 - ldr r0, =gUnknown_020223C4 - ldrh r2, [r0] - movs r1, 0x80 - lsls r1, 1 - mov r12, r0 - cmp r2, r1 - bne _08036EFC - cmp r3, 0 - bne _08036EEC - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0xC - b _08036EF2 - .pool -_08036EEC: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x8 -_08036EF2: - orrs r1, r2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08036EFC: - cmp r6, 0 - bne _08036FA0 - movs r2, 0 - cmp r2, r4 - bge _08036F20 - ldr r1, =gUnknown_020223C4 - mov r8, r1 - movs r5, 0x80 - lsls r5, 1 -_08036F0E: - adds r1, r5 - adds r2, 0x1 - cmp r2, r4 - bge _08036F20 - mov r7, r8 - ldrh r0, [r7] - ldrh r7, [r1] - cmp r0, r7 - beq _08036F0E -_08036F20: - cmp r2, r4 - bne _08036F48 - cmp r3, 0 - bne _08036F38 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0xC - b _08036F3E - .pool -_08036F38: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x8 -_08036F3E: - orrs r1, r2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08036F48: - cmp r6, 0 - bne _08036FA0 - movs r2, 0 - ldr r5, =gBattleTypeFlags - cmp r2, r4 - bge _08036F8A - mov r0, r12 - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 2 - cmp r1, r0 - beq _08036F82 -_08036F60: - lsls r0, r2, 8 - add r0, r12 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 2 - cmp r0, r1 - bls _08036F72 - cmp r2, r3 - bne _08036F8A -_08036F72: - adds r2, 0x1 - cmp r2, r4 - bge _08036F8A - lsls r0, r2, 8 - add r0, r12 - ldrh r0, [r0] - cmp r0, r1 - bne _08036F60 -_08036F82: - cmp r2, r3 - beq _08036F60 - cmp r2, r3 - bge _08036F60 -_08036F8A: - cmp r2, r4 - bne _08036F98 - ldr r0, [r5] - movs r1, 0xC - b _08036F9C - .pool -_08036F98: - ldr r0, [r5] - movs r1, 0x8 -_08036F9C: - orrs r0, r1 - str r0, [r5] -_08036FA0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8036EB8 - - thumb_func_start sub_8036FAC -sub_8036FAC: @ 8036FAC - push {r4-r6,lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - strb r6, [r0] - movs r0, 0x1 - adds r5, r6, 0 - eors r5, r0 - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x12 - bls _08036FD8 - b _0803744C -_08036FD8: - lsls r0, 2 - ldr r1, =_08036FF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08036FF0: - .4byte _0803703C - .4byte _08037080 - .4byte _08037144 - .4byte _080371D8 - .4byte _08037200 - .4byte _0803742C - .4byte _08037438 - .4byte _08037230 - .4byte _08037258 - .4byte _0803742C - .4byte _08037438 - .4byte _08037288 - .4byte _080372B0 - .4byte _0803742C - .4byte _08037438 - .4byte _08037318 - .4byte _08037378 - .4byte _080373A0 - .4byte _080373E0 -_0803703C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08037068 - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_805EF14 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_08037068: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08037072 - b _0803744C -_08037072: - bl sub_800E0E8 - b _0803744C - .pool -_08037080: - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r6, 0x2 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _08037124 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037098 - b _0803744C -_08037098: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080370EE - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x00000181 - adds r1, r0, r2 - movs r0, 0x3 - strb r0, [r1] - bl sub_8036A5C - bl sub_8036B44 - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _080370D8 - ldr r0, =gLinkPlayers - movs r1, 0 - strh r1, [r0, 0x18] - movs r1, 0x1 - strh r1, [r0, 0x34] -_080370D8: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl link_0800A448 - ldr r0, =gBattleCommunication - strb r6, [r0] -_080370EE: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080370F8 - b _0803744C -_080370F8: - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _0803744C - .pool -_08037124: - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _08037134 - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] -_08037134: - ldr r1, =gBattleCommunication - movs r0, 0xF - strb r0, [r1] - bl berry_801017C - b _0803744C - .pool -_08037144: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037152 - b _0803744C -_08037152: - bl sub_800A5B4 - movs r0, 0x2 - adds r1, r6, 0 - bl sub_8036EB8 - bl berry_801017C - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - movs r1, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r2, 0xA] - movs r0, 0x5A - strh r0, [r2, 0xC] - strh r1, [r2, 0x12] - ldr r0, =gBattleStruct - ldr r3, [r0] - movs r4, 0xC1 - lsls r4, 1 - adds r0, r3, r4 - ldrb r1, [r0] - adds r4, 0x1 - adds r0, r3, r4 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - strh r1, [r2, 0xE] - ldr r1, =gUnknown_020223C4 - lsls r4, r5, 8 - adds r1, 0x2 - adds r4, r1 - ldrh r0, [r4] - strh r0, [r2, 0x10] - lsls r0, r6, 8 - adds r0, r1 - ldrh r0, [r0] - bl sub_8185F90 - ldrh r0, [r4] - bl sub_8185F90 - bl sub_8068AA4 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080371D8: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080371E4 - b _0803744C -_080371E4: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty - movs r2, 0xC8 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037200: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0803720E - b _0803744C -_0803720E: - bl sub_800A5B4 - ldr r0, =gEnemyParty - lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0xC8 - bl memcpy - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037230: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803723C - b _0803744C -_0803723C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 200 - movs r2, 0xC8 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037258: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037266 - b _0803744C -_08037266: - bl sub_800A5B4 - ldr r0, =gEnemyParty + 200 - lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0xC8 - bl memcpy - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037288: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037294 - b _0803744C -_08037294: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 400 - movs r2, 0xC8 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080372B0: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _080372BE - b _0803744C -_080372BE: - bl sub_800A5B4 - ldr r4, =gEnemyParty + 400 - lsls r1, r5, 8 - ldr r0, =gUnknown_020223C4 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - ldr r1, =0xfffffe70 - adds r0, r4, r1 - bl shedinja_something - ldr r2, =0xfffffed4 - adds r0, r4, r2 - bl shedinja_something - adds r0, r4, 0 - subs r0, 0xC8 - bl shedinja_something - adds r0, r4, 0 - subs r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037318: - bl sub_8032768 - bl sub_8184E58 - ldr r2, =gBattleCommunication - movs r0, 0 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037372 - movs r3, 0 - ldr r1, =gLinkPlayers - ldrb r0, [r1] - adds r5, r2, 0 - cmp r0, 0x3 - bne _08037356 - movs r4, 0xFF - adds r2, r1, 0 -_08037344: - adds r2, 0x1C - adds r3, 0x1 - cmp r3, 0x1 - bgt _08037356 - ldrh r1, [r2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x3 - beq _08037344 -_08037356: - cmp r3, 0x2 - bne _0803736C - movs r0, 0x10 - strb r0, [r5] - b _0803744C - .pool -_0803736C: - movs r0, 0x12 - strb r0, [r5] - b _0803744C -_08037372: - movs r0, 0x12 - strb r0, [r2] - b _0803744C -_08037378: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _0803744C - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203BD2C - movs r2, 0x4 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080373A0: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - bne _0803744C - bl sub_800A5B4 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080373CA - ldr r0, =gUnknown_0203BD2C - lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0x4 - bl memcpy -_080373CA: - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080373E0: - ldr r0, =gUnknown_02024333 - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _0803744C - ldr r2, =gUnknown_03005D00 - ldr r1, =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, =sub_8039EF0 - str r0, [r1] - ldr r0, =BattleMainCB2 - bl SetMainCallback2 - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803744C - movs r0, 0x20 - orrs r1, r0 - str r1, [r2] - b _0803744C - .pool -_0803742C: - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] -_08037438: - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r1, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _0803744C -_08037446: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0803744C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8036FAC - - thumb_func_start sub_8037458 -sub_8037458: @ 8037458 - push {r4-r7,lr} - sub sp, 0x4 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - strb r6, [r0] - movs r0, 0x1 - adds r7, r6, 0 - eors r7, r0 - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x10 - bls _08037486 - b _080379D6 -_08037486: - lsls r0, 2 - ldr r1, =_0803749C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803749C: - .4byte _080374E0 - .4byte _08037518 - .4byte _0803761C - .4byte _08037670 - .4byte _08037694 - .4byte _08037710 - .4byte _08037734 - .4byte _080377B0 - .4byte _080377CC - .4byte _080377FC - .4byte _08037818 - .4byte _08037848 - .4byte _08037864 - .4byte _08037908 - .4byte _0803793A - .4byte _0803795C - .4byte _080379A0 -_080374E0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0803750C - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_805EF14 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_0803750C: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08037518 - bl sub_800E0E8 -_08037518: - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r3, 0x2 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _080375FC - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037530 - b _080379D6 -_08037530: - ldr r6, =gLinkPlayers - movs r0, 0 - strh r0, [r6, 0x18] - strh r3, [r6, 0x34] - adds r1, r6, 0 - adds r1, 0x50 - movs r0, 0x1 - strh r0, [r1] - adds r1, 0x1C - movs r0, 0x3 - strh r0, [r1] - adds r0, r6, 0 - adds r0, 0x40 - ldr r4, =gTrainerBattleOpponent_A - ldrh r1, [r4] - bl GetFrontierTrainerName - adds r0, r6, 0 - adds r0, 0x5C - ldr r5, =gTrainerBattleOpponent_B - ldrh r1, [r5] - bl GetFrontierTrainerName - ldrh r1, [r4] - mov r0, sp - bl sub_8165B88 - mov r0, sp - ldrb r0, [r0] - adds r1, r6, 0 - adds r1, 0x52 - strh r0, [r1] - ldrh r1, [r5] - mov r0, sp - bl sub_8165B88 - mov r0, sp - ldrb r1, [r0] - adds r0, r6, 0 - adds r0, 0x6E - strh r1, [r0] - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080375C4 - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x00000181 - adds r1, r0, r2 - movs r0, 0x3 - strb r0, [r1] - bl sub_8036A5C - bl sub_8036B44 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl link_0800A448 - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1] -_080375C4: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080375CE - b _080379D6 -_080375CE: - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _080379D6 - .pool -_080375FC: - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _0803760C - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] -_0803760C: - ldr r1, =gBattleCommunication - movs r0, 0xD - strb r0, [r1] - bl berry_801017C - b _080379D6 - .pool -_0803761C: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0803762A - b _080379D6 -_0803762A: - bl sub_800A5B4 - movs r0, 0x2 - adds r1, r6, 0 - bl sub_8036EB8 - bl berry_801017C - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r1, 0xA] - movs r0, 0x5A - strh r0, [r1, 0xC] - strh r2, [r1, 0x12] - adds r0, 0xEB - strh r0, [r1, 0xE] - strh r0, [r1, 0x10] - b _08037986 - .pool -_08037670: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803767C - b _080379D6 -_0803767C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty -_08037686: - movs r2, 0xC8 - bl link_0800A448 - b _08037986 - .pool -_08037694: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _080376A2 - b _080379D6 -_080376A2: - bl sub_800A5B4 - ldr r0, =gLinkPlayers - lsls r1, r6, 3 - subs r1, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x18] - cmp r0, 0 - beq _080376E8 - ldr r4, =gPlayerParty - lsls r1, r7, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - movs r0, 0x96 - lsls r0, 1 - adds r4, r0 - lsls r1, r6, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - b _08037986 - .pool -_080376E8: - ldr r4, =gPlayerParty - lsls r1, r6, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - movs r1, 0x96 - lsls r1, 1 - adds r4, r1 - lsls r1, r7, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - b _08037982 - .pool -_08037710: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803771C - b _080379D6 -_0803771C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 200 - movs r2, 0x64 - bl link_0800A448 - b _08037986 - .pool -_08037734: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037742 - b _080379D6 -_08037742: - bl sub_800A5B4 - ldr r0, =gLinkPlayers - lsls r1, r6, 3 - subs r1, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x18] - cmp r0, 0 - beq _08037788 - ldr r4, =gPlayerParty + 200 - lsls r1, r7, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - movs r2, 0x96 - lsls r2, 1 - adds r4, r2 - lsls r1, r6, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - b _08037986 - .pool -_08037788: - ldr r4, =gPlayerParty + 200 - lsls r1, r6, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - movs r0, 0x96 - lsls r0, 1 - adds r4, r0 - lsls r1, r7, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - b _08037982 - .pool -_080377B0: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080377BC - b _080379D6 -_080377BC: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty - b _08037686 - .pool -_080377CC: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _080377DA - b _080379D6 -_080377DA: - bl sub_800A5B4 - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _080377EA - b _08037986 -_080377EA: - ldr r0, =gEnemyParty - ldr r1, =gUnknown_020223C4 - movs r2, 0xC8 - b _08037982 - .pool -_080377FC: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037808 - b _080379D6 -_08037808: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty + 200 - b _08037686 - .pool -_08037818: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037826 - b _080379D6 -_08037826: - bl sub_800A5B4 - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08037836 - b _08037986 -_08037836: - ldr r0, =gEnemyParty + 200 - ldr r1, =gUnknown_020223C4 - movs r2, 0xC8 - b _08037982 - .pool -_08037848: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037854 - b _080379D6 -_08037854: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty + 400 - b _08037686 - .pool -_08037864: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037872 - b _080379D6 -_08037872: - bl sub_800A5B4 - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0803788A - ldr r0, =gEnemyParty + 400 - ldr r1, =gUnknown_020223C4 - movs r2, 0xC8 - bl memcpy -_0803788A: - ldr r4, =gPlayerParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xC8 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xFA - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - ldr r4, =gEnemyParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r2, 0x96 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xFA - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - b _08037986 - .pool -_08037908: - bl sub_8032768 - bl sub_8184E58 - ldr r2, =gBattleCommunication - movs r0, 0 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037934 - movs r0, 0xE - strb r0, [r2] - b _080379D6 - .pool -_08037934: - movs r0, 0x10 - strb r0, [r2] - b _080379D6 -_0803793A: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080379D6 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203BD2C - movs r2, 0x4 - bl link_0800A448 - b _08037986 - .pool -_0803795C: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - bne _080379D6 - bl sub_800A5B4 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08037986 - ldr r0, =gUnknown_0203BD2C - lsls r1, r7, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0x4 -_08037982: - bl memcpy -_08037986: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080379D6 - .pool -_080379A0: - ldr r0, =gUnknown_02024333 - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _080379D6 - bl sub_8166188 - ldr r2, =gUnknown_03005D00 - ldr r1, =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, =sub_8039EF0 - str r0, [r1] - ldr r0, =BattleMainCB2 - bl SetMainCallback2 - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080379D6 - movs r0, 0x20 - orrs r1, r0 - str r1, [r2] -_080379D6: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8037458 - - thumb_func_start sub_80379F8 -sub_80379F8: @ 80379F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - mov r8, r0 - ldr r6, =gUnknown_02022FF8 - mov r10, r6 -_08037A12: - ldr r1, [sp] - add r1, r8 - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, r8 - lsls r5, r1, 5 - strh r0, [r6] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - strh r0, [r6, 0x2] - movs r0, 0x4 - add r0, r10 - mov r9, r0 - adds r7, r5, r0 - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r7, 0 - bl GetMonData - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - strb r0, [r6, 0xF] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r6, 0x10] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r6, 0x12] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - mov r1, r10 - adds r1, 0x14 - adds r5, r1 - str r0, [r5] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [r6, 0x18] - adds r0, r4, 0 - bl GetMonGender - strb r0, [r6, 0x1C] - adds r0, r7, 0 - bl StripExtCtrlCodes - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - beq _08037AA4 - adds r0, r7, 0 - movs r1, 0 - bl sub_81DB4DC -_08037AA4: - adds r6, 0x20 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08037A12 - ldr r0, =gUnknown_02023058 - ldr r0, [r0] - mov r1, r9 - subs r1, 0x4 - movs r2, 0x60 - bl memcpy - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80379F8 - - thumb_func_start sub_8037ADC -sub_8037ADC: @ 8037ADC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0x4 - mov r9, r0 - movs r4, 0xF - ldr r6, =gBattleTypeFlags - ldr r0, [r6] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - beq _08037B02 - movs r1, 0x2 - mov r9, r1 - movs r4, 0x3 -_08037B02: - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - movs r2, 0 - mov r8, r2 - strb r7, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xB4 - str r1, [sp] - adds r0, 0xAC - mov r10, r0 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r5, =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0x1 - beq _08037BA4 - cmp r0, 0x1 - bgt _08037B50 - cmp r0, 0 - beq _08037B5E - b _08037D0A - .pool -_08037B50: - cmp r0, 0x2 - bne _08037B56 - b _08037C64 -_08037B56: - cmp r0, 0x3 - bne _08037B5C - b _08037C9E -_08037B5C: - b _08037D0A -_08037B5E: - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037B68 - b _08037D0A -_08037B68: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037B74 - b _08037D0A -_08037B74: - ldr r4, =gUnknown_02023058 - movs r0, 0x60 - bl Alloc - str r0, [r4] - movs r0, 0 - bl sub_80379F8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r2, 0x60 - bl link_0800A448 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08037D0A - .pool -_08037BA4: - bl sub_800A550 - adds r1, r4, 0 - ands r1, r0 - cmp r1, r4 - beq _08037BB2 - b _08037D0A -_08037BB2: - bl sub_800A5B4 - movs r5, 0 - cmp r8, r9 - bge _08037C2E - lsls r0, r7, 3 - subs r0, r7 - lsls r6, r0, 2 - mov r8, r5 - ldr r4, =gUnknown_020223C4 -_08037BC6: - cmp r5, r7 - beq _08037C1E - mov r2, r9 - cmp r2, 0x4 - bne _08037C14 - ldr r2, =gLinkPlayers - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08037BF8 - adds r0, r6, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08037C04 - b _08037C1E - .pool -_08037BF8: - adds r0, r6, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08037C1E -_08037C04: - ldr r0, =gUnknown_02022FF8 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy - b _08037C1E - .pool -_08037C14: - ldr r0, =gUnknown_02022FF8 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy -_08037C1E: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - movs r0, 0x1C - add r8, r0 - adds r5, 0x1 - cmp r5, r9 - blt _08037BC6 -_08037C2E: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gMain - ldr r0, [r1, 0x8] - ldr r2, [sp] - str r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - mov r2, r10 - str r0, [r2] - ldr r0, =sub_8037ADC - str r0, [r1, 0x8] - bl sub_81B9150 - b _08037D0A - .pool -_08037C64: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _08037D0A - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08037D0A - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08037C98 - bl sub_800ADF8 - b _08037D0A - .pool -_08037C98: - bl sub_800AC34 - b _08037D0A -_08037C9E: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08037CE4 - bl sub_8010500 - lsls r0, 24 - cmp r0, 0 - beq _08037D0A - mov r1, r10 - ldr r0, [r1] - str r0, [r6] - ldr r1, =gMain - ldr r2, [sp] - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, =InitBattle - bl SetMainCallback2 - ldr r4, =gUnknown_02023058 - ldr r0, [r4] - bl Free - mov r0, r8 - str r0, [r4] - b _08037D0A - .pool -_08037CE4: - ldr r0, =gUnknown_03003124 - ldrb r5, [r0] - cmp r5, 0 - bne _08037D0A - mov r1, r10 - ldr r0, [r1] - str r0, [r6] - ldr r1, =gMain - ldr r2, [sp] - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, =InitBattle - bl SetMainCallback2 - ldr r4, =gUnknown_02023058 - ldr r0, [r4] - bl Free - str r5, [r4] -_08037D0A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8037ADC - - thumb_func_start intro_end -intro_end: @ 8037D2C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gBattleStruct - ldr r0, [r0] - movs r1, 0xB4 - adds r1, r0 - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xAC - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r5, =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0 - beq _08037D64 - cmp r0, 0x1 - beq _08037DA4 - b _08037DD6 - .pool -_08037D64: - ldr r4, =gUnknown_02023058 - movs r0, 0x60 - bl Alloc - str r0, [r4] - movs r0, 0x3 - bl sub_80379F8 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, =gMain - ldr r0, [r1, 0x8] - mov r2, r8 - str r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - str r0, [r7] - ldr r0, =intro_end - str r0, [r1, 0x8] - bl sub_81B9150 - b _08037DD6 - .pool -_08037DA4: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _08037DD6 - movs r0, 0x2 - strb r0, [r5] - ldr r1, =gBattleTypeFlags - ldr r0, [r7] - str r0, [r1] - ldr r1, =gMain - mov r2, r8 - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, =InitBattle - bl SetMainCallback2 - ldr r4, =gUnknown_02023058 - ldr r0, [r4] - bl Free - str r6, [r4] -_08037DD6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end intro_end - - thumb_func_start sub_8037DF4 -sub_8037DF4: @ 8037DF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - strb r7, [r0] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0xA - bls _08037E20 - b _080383F8 -_08037E20: - lsls r0, 2 - ldr r1, =_08037E38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08037E38: - .4byte _08037E64 - .4byte _08037EA8 - .4byte _08037F50 - .4byte _08038026 - .4byte _0803804C - .4byte _08038140 - .4byte _08038164 - .4byte _080382CC - .4byte _0803832C - .4byte _0803836C - .4byte _080383BC -_08037E64: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08037E90 - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_805EF14 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_08037E90: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08037E9A - b _080383F8 -_08037E9A: - bl sub_800E0E8 - b _080383F8 - .pool -_08037EA8: - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037F30 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037EBE - b _080383F8 -_08037EBE: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _08037F02 - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x00000181 - adds r1, r0, r2 - movs r0, 0x3 - strb r0, [r1] - bl sub_8036A5C - bl sub_8036B44 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl link_0800A448 - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08037F02: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08037F0C - b _080383F8 -_08037F0C: - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _080383F8 - .pool -_08037F30: - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _08037F40 - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] -_08037F40: - ldr r1, =gBattleCommunication - movs r0, 0x7 - strb r0, [r1] - bl berry_801017C - b _080383F8 - .pool -_08037F50: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08037F5E - b _080383F8 -_08037F5E: - bl sub_800A5B4 - movs r0, 0x4 - adds r1, r7, 0 - bl sub_8036EB8 - bl berry_801017C - bl sub_8068AA4 - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x87 - lsls r1, 1 - strh r1, [r0, 0xA] - movs r1, 0x5A - strh r1, [r0, 0xC] - strh r2, [r0, 0x12] - strh r2, [r0, 0xE] - strh r2, [r0, 0x10] - ldr r1, =gUnknown_020223C4 - adds r4, r0, 0 - adds r5, r1, 0x2 - movs r7, 0x3F - movs r6, 0x3 -_08037FA4: - ldrh r0, [r5] - str r2, [sp] - bl sub_8185F90 - ldr r0, =gLinkPlayers - ldr r2, [sp] - adds r0, r2, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x1 - beq _08037FE6 - cmp r0, 0x1 - bgt _08037FD4 - cmp r0, 0 - beq _08037FDE - b _0803800C - .pool -_08037FD4: - cmp r0, 0x2 - beq _08037FEE - cmp r0, 0x3 - beq _08037FFE - b _0803800C -_08037FDE: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - b _08037FF6 -_08037FE6: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - b _08038006 -_08037FEE: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 6 -_08037FF6: - ldrh r0, [r4, 0xE] - orrs r1, r0 - strh r1, [r4, 0xE] - b _0803800C -_08037FFE: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 6 -_08038006: - ldrh r0, [r4, 0x10] - orrs r1, r0 - strh r1, [r4, 0x10] -_0803800C: - movs r0, 0x80 - lsls r0, 1 - adds r5, r0 - adds r2, 0x1C - subs r6, 0x1 - cmp r6, 0 - bge _08037FA4 - bl ZeroEnemyPartyMons - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08038026: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08038032 - b _080383F8 -_08038032: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty - movs r2, 0xC8 - bl link_0800A448 - b _080383A6 - .pool -_0803804C: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _0803805A - b _080383F8 -_0803805A: - bl sub_800A5B4 - movs r6, 0 - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, =gUnknown_020223C4 - movs r5, 0 -_0803806C: - cmp r6, r7 - bne _080380A0 - ldr r0, =gLinkPlayers - adds r0, r5, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0803808C - cmp r0, 0x1 - bge _08038098 - cmp r0, 0 - beq _08038090 - b _0803812A - .pool -_0803808C: - cmp r0, 0x3 - bne _0803812A -_08038090: - ldr r0, =gPlayerParty - b _08038110 - .pool -_08038098: - ldr r0, =gPlayerParty + 300 - b _08038110 - .pool -_080380A0: - ldr r2, =gLinkPlayers - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080380C4 - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080380D2 - b _080380F8 - .pool -_080380C4: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080380F8 -_080380D2: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _080380E4 - cmp r0, 0x1 - bge _080380F0 - cmp r0, 0 - beq _080380E8 - b _0803812A -_080380E4: - cmp r0, 0x3 - bne _0803812A -_080380E8: - ldr r0, =gPlayerParty - b _08038110 - .pool -_080380F0: - ldr r0, =gPlayerParty + 300 - b _08038110 - .pool -_080380F8: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0803810A - cmp r0, 0x1 - bge _08038120 - cmp r0, 0 - beq _0803810E - b _0803812A -_0803810A: - cmp r0, 0x3 - bne _0803812A -_0803810E: - ldr r0, =gEnemyParty -_08038110: - adds r1, r4, 0 - movs r2, 0xC8 - bl memcpy - b _0803812A - .pool -_08038120: - ldr r0, =gEnemyParty + 300 - adds r1, r4, 0 - movs r2, 0xC8 - bl memcpy -_0803812A: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _0803806C - b _080383A6 - .pool -_08038140: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803814C - b _080383F8 -_0803814C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 200 - movs r2, 0x64 - bl link_0800A448 - b _080383A6 - .pool -_08038164: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08038172 - b _080383F8 -_08038172: - bl sub_800A5B4 - movs r6, 0 - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, =gUnknown_020223C4 - movs r5, 0 -_08038184: - cmp r6, r7 - bne _080381B8 - ldr r0, =gLinkPlayers - adds r0, r5, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _080381A4 - cmp r0, 0x1 - bge _080381B0 - cmp r0, 0 - beq _080381A8 - b _08038242 - .pool -_080381A4: - cmp r0, 0x3 - bne _08038242 -_080381A8: - ldr r0, =gPlayerParty + 200 - b _08038228 - .pool -_080381B0: - ldr r0, =gPlayerParty + 500 - b _08038228 - .pool -_080381B8: - ldr r2, =gLinkPlayers - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080381DC - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080381EA - b _08038210 - .pool -_080381DC: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08038210 -_080381EA: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _080381FC - cmp r0, 0x1 - bge _08038208 - cmp r0, 0 - beq _08038200 - b _08038242 -_080381FC: - cmp r0, 0x3 - bne _08038242 -_08038200: - ldr r0, =gPlayerParty + 200 - b _08038228 - .pool -_08038208: - ldr r0, =gPlayerParty + 500 - b _08038228 - .pool -_08038210: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _08038222 - cmp r0, 0x1 - bge _08038238 - cmp r0, 0 - beq _08038226 - b _08038242 -_08038222: - cmp r0, 0x3 - bne _08038242 -_08038226: - ldr r0, =gEnemyParty + 200 -_08038228: - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - b _08038242 - .pool -_08038238: - ldr r0, =gEnemyParty + 500 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy -_08038242: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _08038184 - ldr r4, =gPlayerParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xC8 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xFA - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - ldr r4, =gEnemyParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r2, 0x96 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xFA - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - b _080383A6 - .pool -_080382CC: - bl sub_8032768 - bl sub_8184E58 - ldr r3, =gBattleCommunication - movs r0, 0 - strb r0, [r3, 0x1] - strb r0, [r3, 0x2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08038326 - movs r6, 0 - ldr r0, =gLinkPlayers - ldrb r1, [r0] - adds r4, r3, 0 - adds r2, r0, 0 - cmp r1, 0x3 - bne _0803830A - movs r3, 0xFF -_080382F8: - adds r2, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - bgt _0803830A - ldrh r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0x3 - beq _080382F8 -_0803830A: - cmp r6, 0x4 - bne _08038320 - movs r0, 0x8 - strb r0, [r4] - b _080383F8 - .pool -_08038320: - movs r0, 0xA - strb r0, [r4] - b _080383F8 -_08038326: - movs r0, 0xA - strb r0, [r3] - b _080383F8 -_0803832C: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080383F8 - ldr r0, =gBattleStruct - ldr r4, [r0] - movs r0, 0xC0 - lsls r0, 1 - adds r4, r0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - str r0, [r4] - ldr r0, =gUnknown_0203BD2C - ldr r0, [r0] - str r0, [r4, 0x4] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0x8 - bl link_0800A448 - b _080383A6 - .pool -_0803836C: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - bne _080383F8 - bl sub_800A5B4 - movs r2, 0 - b _08038386 -_08038380: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_08038386: - cmp r2, 0x3 - bhi _080383A6 - ldr r4, =gUnknown_020223C4 - lsls r3, r2, 8 - adds r0, r3, r4 - ldrh r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08038380 - adds r1, r4, 0x4 - adds r1, r3, r1 - ldr r0, =gUnknown_0203BD2C - movs r2, 0x4 - bl memcpy -_080383A6: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080383F8 - .pool -_080383BC: - ldr r0, =gUnknown_02024333 - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _080383F8 - ldr r2, =gUnknown_03005D00 - ldr r1, =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, =sub_8039EF0 - str r0, [r1] - ldr r0, =BattleMainCB2 - bl SetMainCallback2 - ldr r3, =gBattleTypeFlags - ldr r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080383F8 - ldr r0, =gTrainerBattleOpponent_A - movs r4, 0x80 - lsls r4, 4 - adds r1, r4, 0 - strh r1, [r0] - movs r0, 0x20 - orrs r2, r0 - str r2, [r3] -_080383F8: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8037DF4 thumb_func_start BattleMainCB2 BattleMainCB2: @ 8038420 @@ -3209,7 +58,7 @@ _08038482: sub_803849C: @ 803849C push {lr} ldr r1, =gMain - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r1] ldr r2, =gUnknown_02039B28 @@ -3351,7 +200,7 @@ _080385C8: asrs r0, 16 cmp r0, 0x14 bne _080385DC - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 _080385DC: pop {r4,r5} @@ -3917,11 +766,11 @@ VBlankCB_Battle: @ 8038A28 bne _08038A3A bl Random _08038A3A: - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg @@ -3945,23 +794,23 @@ _08038A3A: ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x40 bl SetGpuReg - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x44 bl SetGpuReg - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H ldrh r1, [r0] movs r0, 0x42 bl SetGpuReg - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V ldrh r1, [r0] movs r0, 0x46 bl SetGpuReg @@ -4330,10 +1179,10 @@ _08038DAC: movs r0, 0x4A movs r1, 0 bl SetGpuReg - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H movs r0, 0xF0 strh r0, [r1] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r4, [r0] bl dp12_8087EA4 ldr r0, =gUnknown_02038C28 @@ -4366,10 +1215,10 @@ _08038E1A: cmp r1, 0x9F ble _08038E1A bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r4, 0 strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r0, =gBattle_BG1_X strh r4, [r0] @@ -4381,7 +1230,7 @@ _08038E1A: strh r4, [r0] ldr r0, =gBattle_BG3_X strh r4, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r4, [r0] bl c2_berry_program_update_menu ldr r0, =gUnknown_08C004E0 @@ -4391,7 +1240,7 @@ _08038E1A: bl sub_803570C bl ResetSpriteData bl ResetTasks - bl sub_8036154 + bl LoadBattleEntryBackground movs r0, 0x4A movs r1, 0x37 bl SetGpuReg @@ -4588,7 +1437,7 @@ _08039074: b _080390B0 .pool _08039090: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08039172 @@ -4705,7 +1554,7 @@ _08039184: ldrb r0, [r0] cmp r0, 0 bne _080391A6 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 beq _080391C6 @@ -4838,9 +1687,9 @@ sub_80392A8: @ 80392A8 add r0, sp, 0x4 bl CpuSet bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r0, =gBattle_BG1_X strh r4, [r0] @@ -4852,7 +1701,7 @@ sub_80392A8: @ 80392A8 strh r4, [r0] ldr r0, =gBattle_BG3_X strh r4, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r4, [r0] bl c2_berry_program_update_menu movs r1, 0x82 @@ -4960,7 +1809,7 @@ _08039414: ands r0, r1 cmp r0, 0 beq _08039434 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08039434 @@ -5179,7 +2028,7 @@ _08039610: ldrb r0, [r0] cmp r0, 0 bne _08039634 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _08039634 @@ -5708,7 +2557,7 @@ _08039A7C: lsls r0, 24 lsrs r0, 24 bl GetBankIdentity - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsls r0, 24 lsrs r0, 22 @@ -6298,8 +3147,8 @@ sub_8039ECC: @ 8039ECC .pool thumb_func_end sub_8039ECC - thumb_func_start sub_8039EF0 -sub_8039EF0: @ 8039EF0 + thumb_func_start BattleMainCB1 +BattleMainCB1: @ 8039EF0 push {r4,r5,lr} ldr r0, =gBattleMainFunc ldr r0, [r0] @@ -6333,7 +3182,7 @@ _08039F2A: pop {r0} bx r0 .pool - thumb_func_end sub_8039EF0 + thumb_func_end BattleMainCB1 thumb_func_start sub_8039F40 sub_8039F40: @ 8039F40 @@ -13508,7 +10357,7 @@ _0803DF8C: ands r0, r5 cmp r0, 0 beq _0803DF9E - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0803DFEC @@ -13525,7 +10374,7 @@ _0803DF9E: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r3] movs r0, 0x80 @@ -14455,10 +11304,10 @@ bs2_8016374: @ 803E868 adds r0, r1 ldrb r0, [r0] strb r0, [r3] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r2, 0 strh r2, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r2, [r0] ldr r1, =gUnknown_020244AC ldrb r0, [r3] @@ -14521,10 +11370,10 @@ sub_803E90C: @ 803E90C ldrb r0, [r0] strb r0, [r2] strb r0, [r4] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldrb r0, [r4] bl sub_8045868 @@ -15219,10 +12068,10 @@ sub_803EFA8: @ 803EFA8 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DBD58 @@ -15244,10 +12093,10 @@ bs5_8016AC0: @ 803EFF0 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r1, =gNumSafariBalls ldrb r0, [r1] @@ -15277,10 +12126,10 @@ sub_803F050: @ 803F050 adds r0, r1 ldrb r0, [r0] strb r0, [r3] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r6, =gBattleCommunication ldr r2, =gBattleBufferB @@ -15364,10 +12213,10 @@ sub_803F120: @ 803F120 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r4, 0 strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r3, =gBattleStruct ldr r0, [r3] @@ -15473,10 +12322,10 @@ bs9_8016C9C: @ 803F22C adds r0, r1 ldrb r2, [r0] strb r2, [r3] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r1, =gBattleTextBuff1 movs r0, 0xFD diff --git a/asm/battle_5.s b/asm/battle_5.s index bb5b406e53..3163631a9c 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -6,8 +6,8 @@ .text - thumb_func_start sub_8056F28 -sub_8056F28: @ 8056F28 + thumb_func_start AllocateBattleResrouces +AllocateBattleResrouces: @ 8056F28 push {r4-r6,lr} ldr r5, =gBattleResources ldr r6, =gBattleTypeFlags @@ -102,7 +102,7 @@ _08056FFA: pop {r0} bx r0 .pool - thumb_func_end sub_8056F28 + thumb_func_end AllocateBattleResrouces thumb_func_start sub_8057028 sub_8057028: @ 8057028 diff --git a/asm/battle_7.s b/asm/battle_7.s index 0115598196..82298fbf4c 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -5,8 +5,8 @@ .text - thumb_func_start dp11_init -dp11_init: @ 805D118 + thumb_func_start AllocateBattleSpritesData +AllocateBattleSpritesData: @ 805D118 push {r4,lr} ldr r4, =gUnknown_020244D0 movs r0, 0x10 @@ -32,7 +32,7 @@ dp11_init: @ 805D118 pop {r0} bx r0 .pool - thumb_func_end dp11_init + thumb_func_end AllocateBattleSpritesData thumb_func_start dp11_free dp11_free: @ 805D158 @@ -1371,7 +1371,7 @@ _0805DC58: lsls r2, r5, 3 ldr r1, =gMonFrontPicTable adds r2, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsrs r0, 22 adds r1, 0x4 @@ -1543,7 +1543,7 @@ _0805DE00: lsls r0, r5, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsls r2, r7, 2 adds r1, 0x4 @@ -1558,7 +1558,7 @@ _0805DE2C: lsls r0, r5, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsls r2, r7, 2 adds r1, 0x4 @@ -1684,7 +1684,7 @@ sub_805DF38: @ 805DF38 lsls r4, 3 ldr r2, =gTrainerFrontPicTable adds r2, r4, r2 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsrs r0, 22 adds r1, 0x4 @@ -1718,7 +1718,7 @@ sub_805DF84: @ 805DF84 lsls r5, 3 ldr r2, =gTrainerBackPicTable adds r2, r5, r2 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsrs r0, 22 adds r1, 0x4 @@ -1959,7 +1959,7 @@ _0805E1AE: load_gfxc_health_bar: @ 805E1B8 push {lr} ldr r0, =gUnknown_08C093F0 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBA lsls r2, 1 @@ -1971,8 +1971,8 @@ load_gfxc_health_bar: @ 805E1B8 .pool thumb_func_end load_gfxc_health_bar - thumb_func_start battle_load_something -battle_load_something: @ 805E1D8 + thumb_func_start BattleInitAllSprites +BattleInitAllSprites: @ 805E1D8 push {r4-r6,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -2136,7 +2136,7 @@ _0805E346: pop {r4-r6} pop {r1} bx r1 - thumb_func_end battle_load_something + thumb_func_end BattleInitAllSprites thumb_func_start sub_805E350 sub_805E350: @ 805E350 @@ -2364,7 +2364,7 @@ _0805E51C: lsls r0, r1, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x4] ldr r3, [r2, 0x10] @@ -2434,7 +2434,7 @@ _0805E59C: lsls r0, r1, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] mov r3, r10 lsls r2, r3, 2 @@ -2472,7 +2472,7 @@ _0805E618: lsls r0, r1, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] mov r3, r10 lsls r2, r3, 2 @@ -2486,7 +2486,7 @@ _0805E618: mov r2, r8 bl HandleLoadSpecialPokePic_DontHandleDeoxys _0805E662: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] mov r2, r10 lsls r1, r2, 2 @@ -2666,7 +2666,7 @@ _0805E814: beq _0805E83C ldr r0, =gUnknown_08C2CEE0 _0805E822: - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsls r4, 2 adds r1, 0x4 @@ -2677,7 +2677,7 @@ _0805E822: .pool _0805E83C: ldr r0, =gUnknown_08C2D120 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] lsls r4, 2 adds r1, 0x4 @@ -2688,7 +2688,7 @@ _0805E84E: movs r3, 0x1 lsls r6, r5, 4 ldr r7, =gUnknown_08C2CEBC - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] adds r0, 0x4 adds r4, r0, r4 @@ -3600,15 +3600,15 @@ _0805EFAC: .pool thumb_func_end sub_805EF84 - thumb_func_start init_uns_table_pokemon_copy -init_uns_table_pokemon_copy: @ 805EFBC + thumb_func_start AllocateMonSpritesGfx +AllocateMonSpritesGfx: @ 805EFBC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 - ldr r4, =gBattleSpritesGfx + ldr r4, =gMonSpritesGfxPtr str r6, [r4] movs r0, 0xC0 lsls r0, 1 @@ -3620,7 +3620,7 @@ init_uns_table_pokemon_copy: @ 805EFBC ldr r1, [r4] str r0, [r1] _0805EFE2: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r1, [r0] lsls r4, r6, 2 adds r2, r1, 0x4 @@ -3649,7 +3649,7 @@ _0805EFE2: mov r12, r8 adds r7, r4, 0 _0805F01A: - ldr r2, =gBattleSpritesGfx + ldr r2, =gMonSpritesGfxPtr ldr r1, [r2] lsls r4, r5, 3 add r4, r12 @@ -3672,7 +3672,7 @@ _0805F01A: lsrs r5, r0, 24 cmp r5, 0x3 bls _0805F01A - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r2, [r1] mov r5, r9 adds r0, r5, r6 @@ -3692,7 +3692,7 @@ _0805F01A: movs r0, 0x80 lsls r0, 5 bl AllocZeroed - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBA lsls r2, 1 @@ -3706,12 +3706,12 @@ _0805F01A: pop {r0} bx r0 .pool - thumb_func_end init_uns_table_pokemon_copy + thumb_func_end AllocateMonSpritesGfx thumb_func_start sub_805F094 sub_805F094: @ 805F094 push {r4-r6,lr} - ldr r6, =gBattleSpritesGfx + ldr r6, =gMonSpritesGfxPtr ldr r0, [r6] cmp r0, 0 beq _0805F106 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 9c0190214d..b9ab95165a 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -264,14 +264,14 @@ _080A3BAA: movs r2, 0x80 bl m4aMPlayVolumeControl _080A3BC2: - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H strh r1, [r0] - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V strh r1, [r0] add sp, 0x4 pop {r3-r5} diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 860f1a6cb9..5cec1cbc5b 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -14561,7 +14561,7 @@ _08105CCC: lsls r0, 6 bl AllocZeroed adds r1, r0, 0 - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r2, 0xBE lsls r2, 1 @@ -14571,7 +14571,7 @@ _08105CCC: bl LZDecompressWram movs r4, 0 _08105D00: - ldr r5, =gBattleSpritesGfx + ldr r5, =gMonSpritesGfxPtr ldr r0, [r5] movs r1, 0xBE lsls r1, 1 @@ -14785,9 +14785,9 @@ sub_8105EB0: @ 8105EB0 movs r6, 0x98 _08105EC4: movs r5, 0 - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H strh r6, [r1] - ldr r4, =gUnknown_02022E26 + ldr r4, =gBattle_WIN0V movs r0, 0xA0 strh r0, [r4] ldrh r1, [r1] @@ -14845,7 +14845,7 @@ sub_8105F30: @ 8105F30 lsls r0, r2, 16 cmp r1, r0 blt _08105F70 - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, =sub_8105F84 @@ -14853,7 +14853,7 @@ sub_8105F30: @ 8105F30 b _08105F78 .pool _08105F70: - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H lsls r0, r4, 8 orrs r2, r0 strh r2, [r1] @@ -14905,9 +14905,9 @@ sub_8105F84: @ 8105F84 _08105FD8: cmp r0, 0x4 ble _0810600C - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r4, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r4, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -30154,7 +30154,7 @@ _0810DB50: strh r0, [r2] adds r7, r2, 0 _0810DB60: - ldr r3, =gUnknown_02022E22 + ldr r3, =gBattle_BG3_Y ldrh r2, [r4, 0x1C] lsls r0, r2, 16 asrs r0, 24 @@ -37347,7 +37347,7 @@ sub_811152C: @ 811152C movs r0, 0xC8 strh r0, [r5, 0xA] _0811154E: - ldr r4, =gUnknown_02022E22 + ldr r4, =gBattle_BG3_Y movs r1, 0xA ldrsh r0, [r5, r1] movs r1, 0xA @@ -37396,7 +37396,7 @@ sub_8111590: @ 8111590 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y ldrh r0, [r0] strh r0, [r4, 0xC] _081115BC: @@ -37405,7 +37405,7 @@ _081115BC: movs r1, 0xFF ands r0, r1 strh r0, [r4, 0xA] - ldr r6, =gUnknown_02022E22 + ldr r6, =gBattle_BG3_Y movs r2, 0xA ldrsh r1, [r4, r2] movs r0, 0x4 @@ -39577,10 +39577,10 @@ sub_8112758: @ 8112758 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r1, =0x00003f3f movs r0, 0x48 @@ -39611,13 +39611,13 @@ _081127A0: _081127B8: movs r6, 0xC8 _081127BA: - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H lsls r3, r6, 16 asrs r2, r3, 16 lsls r0, r2, 8 orrs r0, r2 strh r0, [r1] - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V movs r5, 0x28 ldr r0, =0x00002828 strh r0, [r1] @@ -39798,12 +39798,12 @@ _08112938: ldr r0, _08112988 @=sub_8112994 str r0, [r4] _08112966: - ldr r1, _0811298C @=gUnknown_02022E24 + ldr r1, _0811298C @=gBattle_WIN0H mov r2, r9 lsls r0, r2, 8 orrs r7, r0 strh r7, [r1] - ldr r1, _08112990 @=gUnknown_02022E26 + ldr r1, _08112990 @=gBattle_WIN0V lsls r0, r6, 8 orrs r5, r0 strh r5, [r1] @@ -39819,9 +39819,9 @@ _08112966: _08112988: .4byte sub_8112994 _0811298C: - .4byte gUnknown_02022E24 + .4byte gBattle_WIN0H _08112990: - .4byte gUnknown_02022E26 + .4byte gBattle_WIN0V thumb_func_end sub_811280C thumb_func_start sub_8112994 @@ -39837,9 +39837,9 @@ sub_8112994: @ 8112994 lsrs r1, r0, 24 cmp r1, 0 bne _081129DA - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -40042,10 +40042,10 @@ sub_8112B44: @ 8112B44 movs r0, 0x52 movs r1, 0 bl SetGpuReg - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] adds r0, r4, 0 bl move_anim_8072740 @@ -42202,13 +42202,13 @@ _08113CDC: ldr r1, =0x00003f3f movs r0, 0x48 bl SetGpuReg - ldr r2, =gUnknown_02022E24 + ldr r2, =gBattle_WIN0H ldrh r0, [r5, 0x24] lsls r0, 8 ldrh r1, [r5, 0x26] orrs r0, r1 strh r0, [r2] - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V movs r0, 0xA0 strh r0, [r1] ldr r0, =sub_8113D60 @@ -42331,7 +42331,7 @@ _08113E1C: blt _08113E3E strh r2, [r4, 0x24] _08113E3E: - ldr r3, =gUnknown_02022E24 + ldr r3, =gBattle_WIN0H ldrh r2, [r4, 0x24] lsls r0, r2, 8 ldrh r1, [r4, 0x26] @@ -42398,10 +42398,10 @@ _08113EBC: lsrs r0, 24 cmp r0, 0x1 bne _08113EF8 - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -42588,13 +42588,13 @@ _08114078: ldr r1, =0x00003f3f movs r0, 0x48 bl SetGpuReg - ldr r2, =gUnknown_02022E24 + ldr r2, =gBattle_WIN0H ldrh r0, [r5, 0x24] lsls r0, 8 ldrh r1, [r5, 0x26] orrs r0, r1 strh r0, [r2] - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V movs r0, 0xA0 strh r0, [r1] movs r0, 0 @@ -42686,7 +42686,7 @@ _08114150: movs r0, 0x1 strh r0, [r4, 0xA] _08114154: - ldr r2, =gUnknown_02022E24 + ldr r2, =gBattle_WIN0H ldrh r0, [r4, 0x24] lsls r0, 8 ldrh r1, [r4, 0x26] @@ -42782,10 +42782,10 @@ _08114204: b _08114232 .pool _08114210: - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -43157,9 +43157,9 @@ sub_81144F8: @ 81144F8 lsls r0, 24 lsrs r7, r0, 24 movs r6, 0 - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r6, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r6, [r0] ldr r1, =0x00003f3f movs r0, 0x48 @@ -43485,9 +43485,9 @@ _081147B8: _08114824: cmp r0, 0x3 bne _08114886 - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r5, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r5, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -45266,7 +45266,7 @@ _0811565A: ldr r2, =gBattle_BG3_X ldrh r0, [r4, 0xA] strh r0, [r2] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r1, [r0] ldrh r0, [r6, 0x4] strh r0, [r4, 0xE] @@ -45298,7 +45298,7 @@ sub_81156D0: @ 81156D0 ldr r0, =gBattle_BG3_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r1, [r0] adds r0, r3, 0 bl DestroyTask @@ -45308,7 +45308,7 @@ _08115710: ldr r1, =gBattle_BG3_X ldrh r0, [r2, 0xA] strh r0, [r1] - ldr r1, =gUnknown_02022E22 + ldr r1, =gBattle_BG3_Y ldrh r0, [r2, 0xC] strh r0, [r1] _0811571C: @@ -46557,7 +46557,7 @@ _081160E2: b _081160F6 .pool _081160EC: - ldr r1, =gUnknown_02022E22 + ldr r1, =gBattle_BG3_Y b _081160F6 .pool _081160F4: @@ -46796,7 +46796,7 @@ sub_81162A4: @ 81162A4 ldr r4, =gBattle_BG3_X ldrh r1, [r3] strh r1, [r4] - ldr r4, =gUnknown_02022E22 + ldr r4, =gBattle_BG3_Y ldrh r1, [r3, 0x2] strh r1, [r4] ldr r1, =sub_81162F8 @@ -46839,7 +46839,7 @@ _08116330: ldrh r0, [r3, 0x8] _08116332: strh r0, [r6] - ldr r2, =gUnknown_02022E22 + ldr r2, =gBattle_BG3_Y ldrh r3, [r2] lsls r1, r5, 2 adds r0, r1, r5 @@ -47805,9 +47805,9 @@ sub_8116B14: @ 8116B14 lsrs r0, 24 mov r9, r0 movs r7, 0 - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r7, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r7, [r0] ldr r1, =0x00003f3f movs r0, 0x48 @@ -48072,10 +48072,10 @@ sub_8116D64: @ 8116D64 bne _08116E86 movs r0, 0 bl sub_80A477C - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H mov r1, r8 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -48256,10 +48256,10 @@ _08116F56: movs r0, 0 strh r0, [r1, 0xA] _08116F5C: - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r1, =0x00003f3f movs r0, 0x48 @@ -48746,10 +48746,10 @@ _081173AE: strh r0, [r5, 0x26] b _08117478 _081173B6: - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -49158,7 +49158,7 @@ sub_81176D8: @ 81176D8 ldrh r4, [r6] adds r0, r4 strh r0, [r6] - ldr r4, =gUnknown_02022E22 + ldr r4, =gBattle_BG3_Y lsls r0, r2, 16 asrs r0, 24 ldrh r7, [r4] @@ -49363,10 +49363,10 @@ _081178B6: movs r2, 0 mov r8, r2 _081178BA: - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r1, =0x00003f3f movs r0, 0x48 @@ -49676,9 +49676,9 @@ _08117B34: bne _08117C0C movs r0, 0 bl sub_80A477C - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r4, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r4, [r0] ldr r4, =0x00003f3f movs r0, 0x48 @@ -49777,7 +49777,7 @@ sub_8117C44: @ 8117C44 movs r0, 0x80 lsls r0, 6 bl AllocZeroed - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBE lsls r2, 1 @@ -49797,7 +49797,7 @@ sub_8117C70: @ 8117C70 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r6, =gBattleSpritesGfx + ldr r6, =gMonSpritesGfxPtr ldr r0, [r6] movs r5, 0xBE lsls r5, 1 @@ -49866,7 +49866,7 @@ _08117CF6: adds r4, r0, 0 adds r4, 0x10 _08117CFC: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r1, [r0] ldr r0, =gBattleAnimArgs movs r2, 0x2 @@ -49944,7 +49944,7 @@ _08117D98: lsls r0, r4, 5 ldr r1, =gPlttBufferUnfaded adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r2, [r1] ldr r1, =gBattleAnimArgs movs r3, 0x2 @@ -50646,7 +50646,7 @@ _0811838C: bl SetGpuReg b _0811852A _0811839C: - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V ldrh r0, [r1] subs r0, 0xFF strh r0, [r1] @@ -50715,7 +50715,7 @@ _08118420: _0811842C: strh r0, [r2] _0811842E: - ldr r2, =gUnknown_02022E26 + ldr r2, =gBattle_WIN0V ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 @@ -50988,7 +50988,7 @@ _08118662: b _0811881A .pool _08118678: - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V ldrh r0, [r1] subs r0, 0xFF strh r0, [r1] @@ -51065,7 +51065,7 @@ _08118708: movs r0, 0x4 strh r0, [r1, 0x12] _08118728: - ldr r2, =gUnknown_02022E26 + ldr r2, =gBattle_WIN0V ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 @@ -51288,7 +51288,7 @@ _08118908: b _08118A96 .pool _0811891C: - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V ldrh r0, [r1] subs r0, 0xFF strh r0, [r1] @@ -51354,7 +51354,7 @@ _08118986: movs r0, 0x6 strh r0, [r2, 0x12] _081189A6: - ldr r2, =gUnknown_02022E26 + ldr r2, =gBattle_WIN0V ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 @@ -51652,7 +51652,7 @@ _08118BA8: b _08118D5A .pool _08118C38: - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V ldrh r0, [r1] subs r0, 0xFF strh r0, [r1] @@ -51683,7 +51683,7 @@ _08118C50: b _08118D5A .pool _08118C7C: - ldr r2, =gUnknown_02022E26 + ldr r2, =gBattle_WIN0V ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 @@ -51874,7 +51874,7 @@ _08118DD4: ldr r1, =0x00003f3f movs r0, 0x4A bl SetGpuReg - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y ldr r2, =0x0000ffd0 adds r0, r2, 0 strh r0, [r1] @@ -51888,7 +51888,7 @@ _08118DD4: b _08118FB2 .pool _08118E4C: - ldr r2, =gUnknown_02022E26 + ldr r2, =gBattle_WIN0V ldrh r3, [r2] movs r1, 0x80 lsls r1, 1 @@ -51932,7 +51932,7 @@ _08118E7E: b _08118FB2 .pool _08118EA8: - ldr r3, =gUnknown_02022E26 + ldr r3, =gBattle_WIN0V ldrh r2, [r3] movs r0, 0xFF lsls r0, 8 @@ -51973,7 +51973,7 @@ _08118ED8: b _08118FB2 .pool _08118F00: - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y ldrh r0, [r1] adds r3, r0, 0x2 strh r3, [r1] @@ -51981,7 +51981,7 @@ _08118F00: ldrh r0, [r1] adds r0, 0x2 strh r0, [r1] - ldr r5, =gUnknown_02022E26 + ldr r5, =gBattle_WIN0V ldrh r2, [r5] movs r0, 0xFF lsls r0, 8 @@ -52081,7 +52081,7 @@ sub_8118FBC: @ 8118FBC bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r2, [r1] lsls r4, 2 adds r2, 0x4 @@ -52189,7 +52189,7 @@ sub_8119094: @ 8119094 lsls r0, 24 mov r9, r0 ldr r4, =0x040000d4 - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] lsrs r2, 22 adds r0, 0x4 diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index f219c6988d..849655fe53 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -1077,10 +1077,10 @@ sub_815A934: @ 815A934 lsls r1, 8 movs r0, 0 bl SetGpuRegBits - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E26 + ldr r4, =gBattle_WIN0V strh r1, [r4] movs r0, 0x40 movs r1, 0 @@ -1416,18 +1416,18 @@ sub_815ABEC: @ 815ABEC ldr r1, =0x00001f3f movs r0, 0x48 bl SetGpuReg - ldr r1, =gUnknown_02022E28 + ldr r1, =gBattle_WIN1H ldr r2, =0x000098f0 adds r0, r2, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E2A + ldr r1, =gBattle_WIN1V movs r0, 0xA0 strh r0, [r1] - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x42 bl SetGpuReg - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x46 bl SetGpuReg @@ -1437,10 +1437,10 @@ _0815AC40: ldr r1, =0x00001f3f movs r0, 0x48 bl SetGpuReg - ldr r1, =gUnknown_02022E28 + ldr r1, =gBattle_WIN1H movs r0, 0xF0 strh r0, [r1] - ldr r4, =gUnknown_02022E2A + ldr r4, =gBattle_WIN1V ldr r1, =0x000078a0 adds r0, r1, 0 strh r0, [r4] @@ -1471,10 +1471,10 @@ sub_815AC8C: @ 815AC8C ldr r1, =0x00003f3f movs r0, 0x48 bl SetGpuReg - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V strh r1, [r0] bl IsContest lsls r0, 24 @@ -3024,7 +3024,7 @@ _0815B8E0: lsls r0, 24 lsrs r1, r0, 24 _0815B8EA: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r2, [r0] lsls r0, r1, 2 adds r2, 0x4 @@ -5397,10 +5397,10 @@ sub_815CC94: @ 815CC94 lsls r1, 8 movs r0, 0 bl SetGpuRegBits - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E26 + ldr r4, =gBattle_WIN0V strh r1, [r4] movs r0, 0x40 movs r1, 0 diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index 85f94c20e6..cb6391cee2 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -18,10 +18,10 @@ sub_8170478: @ 8170478 str r0, [sp, 0x10] ldr r0, =gAnimationBankAttacker ldrb r4, [r0] - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] ldr r1, =0x00003f3f movs r0, 0x48 @@ -317,9 +317,9 @@ _08170708: bne _08170814 movs r0, 0 bl sub_80A477C - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r4, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r4, [r0] ldr r4, =0x00003f3f movs r0, 0x48 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 5a762a174a..a7168623cc 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5031,10 +5031,10 @@ _08066FE4: thumb_func_start sub_8066FF4 sub_8066FF4: @ 8066FF4 push {r4,r5,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r5, =gActiveBank ldrb r4, [r5] diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 3a1b21ed7d..5b0ac04910 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4340,10 +4340,10 @@ _0814D580: thumb_func_start sub_814D590 sub_814D590: @ 814D590 push {r4,r5,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r5, =gActiveBank ldrb r4, [r5] diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 69d4776d4d..f54896ca76 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5171,10 +5171,10 @@ _08061F24: thumb_func_start sub_8061F34 sub_8061F34: @ 8061F34 push {r4,r5,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r5, =gActiveBank ldrb r4, [r5] @@ -6655,7 +6655,7 @@ sub_8062BB0: @ 8062BB0 negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 5f7e1b9544..b829296d88 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -1287,10 +1287,10 @@ _08057FD6: beq _08057FF8 movs r0, 0x5 bl PlaySE - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 @@ -2123,7 +2123,7 @@ sub_80586F8: @ 80586F8 ldrb r0, [r0] cmp r0, 0 bne _0805875C - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08058798 @@ -2137,7 +2137,7 @@ sub_80586F8: @ 80586F8 negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r3] ldr r0, =sub_8038D64 @@ -2166,7 +2166,7 @@ _0805875C: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r3] ldr r0, =sub_8038D64 @@ -2233,7 +2233,7 @@ _08058810: negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] @@ -4711,10 +4711,10 @@ b_link_standby_message: @ 8059DC0 ands r0, r1 cmp r0, 0 beq _08059DE0 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gText_LinkStandby movs r1, 0 @@ -8444,10 +8444,10 @@ _0805BF70: thumb_func_start sub_805BF80 sub_805BF80: @ 805BF80 push {r4,r5,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r5, =gActiveBank ldrb r4, [r5] @@ -8503,9 +8503,9 @@ sub_805C004: @ 805C004 lsrs r1, r0, 24 cmp r1, 0 bne _0805C02A - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r1, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gBattleBankFunc @@ -8611,9 +8611,9 @@ sub_805C114: @ 805C114 lsrs r1, r0, 24 cmp r1, 0 bne _0805C13E - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r1, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 784eacab11..185b8d5caf 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4952,10 +4952,10 @@ _081BDA3C: thumb_func_start sub_81BDA4C sub_81BDA4C: @ 81BDA4C push {r4,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r4, =gActiveBank ldrb r0, [r4] diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 90928e7d4a..5c420158a5 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4708,10 +4708,10 @@ _08188E80: thumb_func_start sub_8188E90 sub_8188E90: @ 8188E90 push {r4,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r4, =gActiveBank ldrb r0, [r4] diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 534f340681..6ab274da21 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4808,10 +4808,10 @@ _0818C42C: thumb_func_start sub_818C43C sub_818C43C: @ 818C43C push {r4,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r4, =gActiveBank ldrb r0, [r4] diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index cc149ea4f7..dac3034a95 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -318,7 +318,7 @@ sub_81595E4: @ 81595E4 negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, =gUnknown_03005D00 + ldr r0, =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] @@ -778,10 +778,10 @@ sub_81599D0: @ 81599D0 thumb_func_start dp01t_10_6_message dp01t_10_6_message: @ 81599DC push {r4,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r4, =gActiveBank ldrb r0, [r4] @@ -832,9 +832,9 @@ sub_8159A54: @ 8159A54 lsrs r1, r0, 24 cmp r1, 0 bne _08159A7A - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r1, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index eab7174664..51193024fd 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3592,10 +3592,10 @@ _0816A3AC: thumb_func_start sub_816A3B8 sub_816A3B8: @ 816A3B8 push {r4,lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r4, =gActiveBank ldrb r0, [r4] @@ -3646,9 +3646,9 @@ sub_816A430: @ 816A430 lsrs r1, r0, 24 cmp r1, 0 bne _0816A456 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r1, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r1, =gBattleBankFunc @@ -3749,9 +3749,9 @@ _0816A522: lsrs r1, r0, 24 cmp r1, 0 bne _0816A574 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r1, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index e870c87989..4c44855f99 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -3161,9 +3161,9 @@ _0819044E: ldr r0, =gUnknown_0860CEB4 bl InitWindows bl DeactivateAllTextPrinters - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r0, =gBattle_BG1_X strh r4, [r0] @@ -3171,7 +3171,7 @@ _0819044E: strh r4, [r0] ldr r0, =gBattle_BG3_X strh r4, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r4, [r0] mov r2, r9 cmp r2, 0x2 @@ -4366,10 +4366,10 @@ _08190E98: ldrsh r2, [r0, r5] cmp r2, 0 beq _08190ED4 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG1_X strh r1, [r0] @@ -4379,9 +4379,9 @@ _08190E98: b _08190EE6 .pool _08190ED4: - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r2, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r0, =gBattle_BG1_X @@ -4765,10 +4765,10 @@ _08191234: ldrsh r2, [r0, r5] cmp r2, 0 beq _08191278 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG1_X strh r1, [r0] @@ -4779,9 +4779,9 @@ _08191234: b _0819128C .pool _08191278: - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r2, [r0] - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y ldr r3, =0x0000ff60 adds r0, r3, 0 strh r0, [r1] @@ -5157,10 +5157,10 @@ _081915CC: ldrsh r2, [r0, r5] cmp r2, 0 beq _0819160C - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r2, =gBattle_BG1_X movs r6, 0x80 @@ -5172,12 +5172,12 @@ _081915CC: b _08191622 .pool _0819160C: - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r2, [r0] ldr r0, =gBattle_BG1_X strh r2, [r0] @@ -5457,10 +5457,10 @@ _0819187C: ldrsh r2, [r0, r5] cmp r2, 0 beq _081918BC - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r2, =gBattle_BG1_X movs r6, 0x80 @@ -5472,12 +5472,12 @@ _0819187C: b _081918D2 .pool _081918BC: - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r2, [r0] ldr r0, =gBattle_BG1_X strh r2, [r0] @@ -5744,10 +5744,10 @@ _08191B08: ldrsh r2, [r0, r5] cmp r2, 0 beq _08191B48 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r2, =gBattle_BG1_X movs r6, 0xFF @@ -5759,12 +5759,12 @@ _08191B08: b _08191B5E .pool _08191B48: - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X movs r3, 0xFF lsls r3, 8 adds r0, r3, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r2, [r0] ldr r0, =gBattle_BG1_X strh r2, [r0] @@ -6011,10 +6011,10 @@ _08191D68: ldrsh r2, [r0, r5] cmp r2, 0 beq _08191DA8 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r2, =gBattle_BG1_X movs r6, 0xFF @@ -6026,12 +6026,12 @@ _08191D68: b _08191DBE .pool _08191DA8: - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X movs r3, 0xFF lsls r3, 8 adds r0, r3, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r2, [r0] ldr r0, =gBattle_BG1_X strh r2, [r0] @@ -6306,7 +6306,7 @@ _08191FF8: asrs r0, 16 cmp r0, 0x29 beq _08192100 - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y ldrh r0, [r1] subs r0, 0x4 strh r0, [r1] @@ -6331,7 +6331,7 @@ _08192038: asrs r0, 16 cmp r0, 0x29 beq _08192100 - ldr r1, =gUnknown_02022E16 + ldr r1, =gBattle_BG0_Y ldrh r0, [r1] adds r0, 0x4 strh r0, [r1] @@ -6356,7 +6356,7 @@ _08192078: asrs r0, 16 cmp r0, 0x41 beq _08192100 - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X ldrh r0, [r1] subs r0, 0x4 strh r0, [r1] @@ -6385,7 +6385,7 @@ _081920BC: asrs r0, 16 cmp r0, 0x41 beq _08192100 - ldr r1, =gUnknown_02022E14 + ldr r1, =gBattle_BG0_X ldrh r0, [r1] adds r0, 0x4 strh r0, [r1] @@ -10400,9 +10400,9 @@ _0819427C: ldr r0, =gUnknown_0860CE94 bl InitWindows bl DeactivateAllTextPrinters - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r0, =gBattle_BG1_X strh r4, [r0] @@ -11358,11 +11358,11 @@ sub_8194B70: @ 8194B70 movs r1, 0x80 movs r2, 0x2 bl ChangeBgY - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg @@ -11486,11 +11486,11 @@ _08194CD4: thumb_func_start sub_8194CE4 sub_8194CE4: @ 8194CE4 push {lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 36898e456d..3d3fba02b2 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -20533,10 +20533,10 @@ _081A52A4: lsls r1, 1 movs r2, 0x20 bl LoadCompressedPalette - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H movs r0, 0xFF strh r0, [r1] - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V movs r0, 0x70 strh r0, [r1] b _081A553E diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 31ad9a3304..8bc9553f77 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -1317,7 +1317,7 @@ _08072D86: movs r2, 0x1 movs r3, 0x3 bl ConvertIntToDecimalStringN - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r1, 0xBA lsls r1, 1 @@ -1333,7 +1333,7 @@ _08072D86: lsls r0, 2 adds r5, r0, r1 _08072DB8: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r1, 0xBA lsls r1, 1 @@ -1536,7 +1536,7 @@ _08072F52: ldr r1, =gText_Slash bl StringCopy _08072F82: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r1, 0xBA lsls r1, 1 @@ -1556,7 +1556,7 @@ _08072F82: _08072FA6: cmp r4, 0x2 bhi _08072FF0 - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r2, 0xBA lsls r2, 1 @@ -1579,7 +1579,7 @@ _08072FA6: b _0807301A .pool _08072FF0: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r1, 0xBA lsls r1, 1 @@ -1609,7 +1609,7 @@ _08073024: mov r3, r8 cmp r3, 0 bne _08073084 - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] movs r1, 0xBA lsls r1, 1 @@ -1702,7 +1702,7 @@ sub_80730D4: @ 80730D4 lsls r0, 24 lsrs r0, 24 bl GetBankIdentity - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r2, [r1] movs r3, 0xBA lsls r3, 1 @@ -1877,7 +1877,7 @@ _08073236: strb r0, [r1, 0x5] movs r0, 0xBA strb r0, [r1, 0x8] - ldr r5, =gBattleSpritesGfx + ldr r5, =gMonSpritesGfxPtr ldr r0, [r5] movs r2, 0xBA lsls r2, 1 diff --git a/asm/battle_setup.s b/asm/battle_setup.s index c2c762e96b..fcc0de95bd 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -41,7 +41,7 @@ _080B062E: cmp r0, 0x1 bne _080B0652 bl overworld_free_bg_tilemaps - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 bl prev_quest_postbuffer_cursor_backup_reset bl overworld_poison_timer_set @@ -638,8 +638,8 @@ _080B0BC6: .pool thumb_func_end sub_80B0B6C - thumb_func_start sub_80B0BD0 -sub_80B0BD0: @ 80B0BD0 + thumb_func_start BattleSetup_GetTerrainId +BattleSetup_GetTerrainId: @ 80B0BD0 push {r4,r5,lr} sub sp, 0x4 mov r4, sp @@ -798,7 +798,7 @@ _080B0D1A: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_80B0BD0 + thumb_func_end BattleSetup_GetTerrainId thumb_func_start sub_80B0D24 sub_80B0D24: @ 80B0D24 @@ -1387,7 +1387,7 @@ sub_80B11A8: @ 80B11A8 ldr r0, =sub_80B1204 str r0, [r1, 0x8] bl FreeAllWindowBuffers - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 bl prev_quest_postbuffer_cursor_backup_reset bl overworld_poison_timer_set diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 0782b86095..eb91121aea 100755 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -3194,7 +3194,7 @@ sub_8163A8C: @ 8163A8C ldr r0, =gMain ldr r1, =sub_81639AC str r1, [r0, 0x8] - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask @@ -5125,21 +5125,21 @@ _08164C18: lsrs r0, 24 mov r1, sp movs r2, 0x4 - bl link_0800A448 + bl SendBlock ldr r1, =gScriptResult movs r0, 0x1 b _08164DB4 .pool _08164C3C: - bl sub_800A550 + bl GetBlockReceivedStatus movs r1, 0x3 ands r1, r0 cmp r1, 0x3 beq _08164C4A b _08164DB6 _08164C4A: - bl sub_800A5B4 - ldr r1, =gUnknown_020223C4 + bl ResetBlockReceivedFlags + ldr r1, =gBlockRecvBuffer movs r0, 0x80 lsls r0, 1 adds r2, r1, r0 @@ -5221,23 +5221,23 @@ _08164CE0: ldr r3, =0x00000cb4 adds r1, r3 movs r2, 0x28 - bl link_0800A448 + bl SendBlock ldr r1, =gScriptResult movs r0, 0x3 b _08164DB4 .pool _08164D14: - bl sub_800A550 + bl GetBlockReceivedStatus movs r1, 0x3 ands r1, r0 cmp r1, 0x3 bne _08164DB6 - bl sub_800A5B4 + bl ResetBlockReceivedFlags ldr r4, =gSaveBlock2Ptr ldr r0, [r4] ldr r5, =0x00000cb4 adds r0, r5 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer movs r2, 0x28 bl memcpy ldr r2, =gTrainerBattleOpponent_A @@ -5260,7 +5260,7 @@ _08164D14: ldrh r0, [r4] movs r1, 0x1 bl sub_8162614 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08164DB0 @@ -5279,7 +5279,7 @@ _08164D98: b _08164DB4 .pool _08164DA8: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08164DB6 diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 6406a3f249..a6e44f0872 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -9513,11 +9513,11 @@ sub_814ABE4: @ 814ABE4 strh r0, [r6, 0xC] cmp r0, 0 bne _0814AC24 - ldr r5, =gUnknown_02022E14 + ldr r5, =gBattle_BG0_X ldrh r1, [r5] movs r0, 0x12 bl SetGpuReg - ldr r4, =gUnknown_02022E16 + ldr r4, =gBattle_BG0_Y ldrh r1, [r4] movs r0, 0x10 bl SetGpuReg @@ -9562,9 +9562,9 @@ sub_814AC38: @ 814AC38 movs r1, 0xF0 movs r2, 0x20 bl LoadPalette - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r5, [r0] - ldr r4, =gUnknown_02022E16 + ldr r4, =gBattle_BG0_Y strh r5, [r4] movs r0, 0x12 movs r1, 0 @@ -9781,10 +9781,10 @@ sub_814AE40: @ 814AE40 push {r4,r5,lr} sub sp, 0x8 adds r5, r0, 0 - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r4, =gUnknown_02022E16 + ldr r4, =gBattle_BG0_Y strh r1, [r4] movs r0, 0x12 movs r1, 0 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 0599fa1539..277a49d2f5 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -512,7 +512,7 @@ _0807FBBE: adds r4, 0x1 cmp r4, 0x3 ble _0807FBBE - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0807FC14 @@ -1116,7 +1116,7 @@ _08080126: adds r5, 0x1 cmp r5, 0x3 ble _08080126 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0808016A @@ -1213,7 +1213,7 @@ _08080248: bne _08080254 b _08080546 _08080254: - bl sub_800A5B4 + bl ResetBlockReceivedFlags bl GetMultiplayerId lsls r0, 24 cmp r0, 0 @@ -1239,7 +1239,7 @@ _08080282: movs r0, 0x4 movs r1, 0x1 bl sub_8197DF8 - bl sub_800A550 + bl GetBlockReceivedStatus adds r4, r0, 0 bl sub_800A9D8 lsls r4, 24 @@ -1260,7 +1260,7 @@ _080802AC: adds r0, r4, r0 adds r0, r6 lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x10 bl memcpy @@ -1280,7 +1280,7 @@ _080802D4: lsrs r0, 24 cmp r5, r0 blt _080802AC - bl sub_800A5B4 + bl ResetBlockReceivedFlags b _080804F8 .pool _080802EC: @@ -1876,7 +1876,7 @@ sub_80807BC: @ 80807BC sub sp, 0x1C movs r0, 0 mov r10, r0 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080807DE @@ -3330,7 +3330,7 @@ sub_80814B0: @ 80814B0 lsrs r1, 16 lsls r2, 16 lsrs r2, 16 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080814E4 @@ -3633,7 +3633,7 @@ sub_8081744: @ 8081744 push {r4-r6,lr} movs r4, 0 movs r6, 0 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0808175A @@ -4702,7 +4702,7 @@ _08081F7C: sub_8081F94: @ 8081F94 push {lr} adds r1, r0, 0 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08081FB8 @@ -4810,7 +4810,7 @@ _08082078: adds r1, 0x4C movs r0, 0 strh r0, [r1] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080820B0 @@ -4848,7 +4848,7 @@ _080820E0: bne _080820EC b _0808249E _080820EC: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0808218C @@ -4911,7 +4911,7 @@ _08082132: adds r1, r4 movs r0, 0 movs r2, 0x20 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 bne _08082172 @@ -4941,7 +4941,7 @@ _0808218C: strh r2, [r0] movs r0, 0 movs r2, 0x28 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 bne _080821BE @@ -4951,20 +4951,20 @@ _080821BE: b _0808245C .pool _080821C8: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 cmp r0, 0 bne _080821D4 b _0808249E _080821D4: - bl sub_800A5B4 + bl ResetBlockReceivedFlags ldr r5, =gUnknown_020322A4 ldr r1, [r5] adds r1, 0x63 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08082254 @@ -4972,7 +4972,7 @@ _080821D4: ldrb r0, [r0] cmp r0, 0 beq _08082254 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer ldr r3, [r5] ldrh r0, [r2, 0x4] adds r1, r3, 0 @@ -5016,7 +5016,7 @@ _08082220: b _0808249E .pool _08082254: - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer ldr r0, =gUnknown_020322A4 ldr r3, [r0] ldrh r0, [r2, 0x4] @@ -5748,7 +5748,7 @@ _080828BC: strb r0, [r1] b _080828DC _080828C6: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r4, [r0] cmp r4, 0 bne _080828DC @@ -5966,7 +5966,7 @@ _08082A92: thumb_func_start sub_8082AD4 sub_8082AD4: @ 8082AD4 push {r4-r7,lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08082AE0 @@ -6242,7 +6242,7 @@ sub_8082D18: @ 8082D18 sub_8082D28: @ 8082D28 push {r4,lr} movs r1, 0 - ldr r4, =gUnknown_03003124 + ldr r4, =gReceivedRemoteLinkPlayers ldrb r0, [r4] cmp r0, 0 beq _08082D3C @@ -7909,7 +7909,7 @@ _08083A80: cmp r5, r0 bcc _08083A80 _08083A9E: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08083AB4 @@ -8514,7 +8514,7 @@ sub_8083F94: @ 8083F94 strb r0, [r7, 0xC] movs r0, 0xFF strb r0, [r7] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080840C4 diff --git a/asm/cable_club.s b/asm/cable_club.s index 80d9a09165..d5d3af1514 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1030,7 +1030,7 @@ sub_80B2C30: @ 80B2C30 bl sub_80B24F8 cmp r0, 0x1 beq _080B2C9C - bl sub_800A550 + bl GetBlockReceivedStatus adds r4, r0, 0 bl sub_800A9A8 lsls r4, 24 @@ -1047,7 +1047,7 @@ _080B2C5C: ldr r1, =gUnknown_02039B58 adds r0, r1 lsls r1, r4, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 lsls r2, r4, 3 subs r2, r4 @@ -1066,7 +1066,7 @@ _080B2C7E: bcc _080B2C5C movs r0, 0 bl sub_800B330 - bl sub_800A5B4 + bl ResetBlockReceivedFlags ldr r0, =gScriptResult adds r1, r5, 0 bl task_map_chg_seq_0807EC34 @@ -1082,7 +1082,7 @@ sub_80B2CB0: @ 80B2CB0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080B2CDE @@ -1434,7 +1434,7 @@ _080B2FA8: bl DestroyTask b _080B2FC6 _080B2FB4: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080B2FC6 @@ -1706,7 +1706,7 @@ sub_80B3220: @ 80B3220 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080B3248 @@ -1836,7 +1836,7 @@ _080B3338: bl sub_800AC34 b _080B3346 _080B333E: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] _080B3342: cmp r0, 0 @@ -1872,7 +1872,7 @@ _080B3378: lsls r2, 4 adds r0, r2, 0 strh r0, [r1] - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 ldr r1, =gMain ldr r0, =sub_80B360C @@ -1948,13 +1948,13 @@ _080B3444: ldr r1, =gUnknown_020229CC movs r0, 0 movs r2, 0x1C - bl link_0800A448 + bl SendBlock movs r0, 0x3 strh r0, [r6] b _080B3532 .pool _080B3458: - bl sub_800A550 + bl GetBlockReceivedStatus adds r4, r0, 0 bl sub_800A9D8 lsls r4, 24 @@ -1967,7 +1967,7 @@ _080B3458: .pool _080B3474: lsls r1, r4, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r0, r5, 0 adds r1, r2 ldm r1!, {r2,r3,r7} @@ -2045,7 +2045,7 @@ _080B3504: lsls r3, 4 adds r0, r3, 0 strh r0, [r1] - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 ldr r1, =gMain ldr r0, =sub_80B360C @@ -2128,7 +2128,7 @@ _080B35C8: b _080B35FE .pool _080B35E0: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080B35FE @@ -2425,7 +2425,7 @@ _080B3864: b _080B3884 .pool _080B3870: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080B3884 @@ -2657,7 +2657,7 @@ task00_08081A90: @ 80B3A30 adds r0, r4, 0 bl DestroyTask _080B3A62: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080B3AA6 @@ -2691,7 +2691,7 @@ sub_80B3AAC: @ 80B3AAC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080B3AC4 @@ -2804,7 +2804,7 @@ _080B3B96: strh r0, [r5] b _080B3BB8 _080B3B9E: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080B3BB8 diff --git a/asm/contest.s b/asm/contest.s index 023c6ebef1..b469dd8eba 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -45,10 +45,10 @@ sub_80D7678: @ 80D7678 lsls r1, 7 movs r0, 0 bl SetGpuRegBits - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG1_X strh r1, [r0] @@ -60,15 +60,15 @@ sub_80D7678: @ 80D7678 strh r1, [r0] ldr r0, =gBattle_BG3_X strh r1, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r1, [r0] - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H strh r1, [r0] - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V strh r1, [r0] pop {r4} pop {r0} @@ -546,8 +546,8 @@ _080D7B4E: ldr r0, =gUnknown_02039F38 strb r5, [r0] bl sub_80D7988 - bl init_uns_table_pokemon_copy - ldr r4, =gBattleSpritesGfx + bl AllocateMonSpritesGfx + ldr r4, =gMonSpritesGfxPtr ldr r0, [r4] ldr r0, [r0] bl Free @@ -1316,11 +1316,11 @@ _080D8266: thumb_func_start vblank_cb_battle vblank_cb_battle: @ 80D827C push {lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg @@ -1344,23 +1344,23 @@ vblank_cb_battle: @ 80D827C ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x40 bl SetGpuReg - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x44 bl SetGpuReg - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H ldrh r1, [r0] movs r0, 0x42 bl SetGpuReg - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V ldrh r1, [r0] movs r0, 0x46 bl SetGpuReg @@ -1387,7 +1387,7 @@ sub_80D833C: @ 80D833C ldrsh r1, [r4, r0] cmp r1, 0 bne _080D840C - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] @@ -1517,7 +1517,7 @@ sub_80D8490: @ 80D8490 lsls r0, 24 lsrs r0, 24 mov r9, r0 - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y movs r1, 0xA0 strh r1, [r0] ldr r0, =gBattle_BG2_Y @@ -1770,7 +1770,7 @@ _080D86E4: adds r0, r4, 0 movs r1, 0 bl sub_80DEC30 - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG2_Y @@ -2041,7 +2041,7 @@ sub_80D895C: @ 80D895C lsls r0, 24 lsrs r7, r0, 24 bl sub_80DB89C - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG2_Y @@ -5322,7 +5322,7 @@ sub_80DA5E8: @ 80DA5E8 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG2_Y @@ -6741,7 +6741,7 @@ sub_80DB174: @ 80DB174 lsls r0, r5, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x4] adds r2, r5, 0 @@ -6753,7 +6753,7 @@ _080DB1B8: lsls r0, r5, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x4] adds r2, r5, 0 @@ -8516,7 +8516,7 @@ _080DBF62: thumb_func_start sub_80DBF68 sub_80DBF68: @ 80DBF68 push {lr} - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG2_Y diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 8e2e2c61c3..8a1bf00f11 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -92,10 +92,10 @@ _080F57E0: lsls r1, 8 movs r0, 0 bl SetGpuRegBits - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG1_X strh r1, [r0] @@ -107,15 +107,15 @@ _080F57E0: strh r1, [r0] ldr r0, =gBattle_BG3_X strh r1, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r1, [r0] - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H strh r1, [r0] - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V strh r1, [r0] - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H strh r1, [r0] - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V strh r1, [r0] pop {r4} pop {r0} @@ -387,10 +387,10 @@ sub_80F5B00: @ 80F5B00 strb r0, [r1, 0x2] ldr r0, =sub_80F5C00 bl SetMainCallback2 - ldr r1, =gUnknown_02022E28 + ldr r1, =gBattle_WIN1H movs r0, 0xF0 strh r0, [r1] - ldr r1, =gUnknown_02022E2A + ldr r1, =gBattle_WIN1V ldr r2, =0x000080a0 adds r0, r2, 0 strh r0, [r1] @@ -441,11 +441,11 @@ sub_80F5C00: @ 80F5C00 thumb_func_start sub_80F5C24 sub_80F5C24: @ 80F5C24 push {lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg @@ -469,23 +469,23 @@ sub_80F5C24: @ 80F5C24 ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg - ldr r0, =gUnknown_02022E24 + ldr r0, =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x40 bl SetGpuReg - ldr r0, =gUnknown_02022E26 + ldr r0, =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x44 bl SetGpuReg - ldr r0, =gUnknown_02022E28 + ldr r0, =gBattle_WIN1H ldrh r1, [r0] movs r0, 0x42 bl SetGpuReg - ldr r0, =gUnknown_02022E2A + ldr r0, =gBattle_WIN1V ldrh r1, [r0] movs r0, 0x46 bl SetGpuReg @@ -702,7 +702,7 @@ sub_80F5ED8: @ 80F5ED8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080F5EFC @@ -1347,10 +1347,10 @@ _080F643C: .4byte _080F6638 .4byte _080F667C _080F6454: - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H movs r0, 0xF0 strh r0, [r1] - ldr r1, =gUnknown_02022E26 + ldr r1, =gBattle_WIN0V ldr r3, =0x00005050 adds r0, r3, 0 strh r0, [r1] @@ -1364,7 +1364,7 @@ _080F6454: mov r9, r4 ldr r4, =gMonFrontPicTable mov r12, r4 - ldr r4, =gBattleSpritesGfx + ldr r4, =gMonSpritesGfxPtr mov r8, r4 cmp r0, 0 beq _080F648C @@ -1494,7 +1494,7 @@ _080F65A4: strh r0, [r4, 0xC] _080F65BA: ldrb r2, [r4, 0xC] - ldr r3, =gUnknown_02022E26 + ldr r3, =gBattle_WIN0V movs r0, 0x50 subs r0, r2 lsls r0, 8 @@ -1556,7 +1556,7 @@ _080F6638: ldrb r0, [r0, 0x6] cmp r0, 0x2 bne _080F669C - ldr r3, =gUnknown_02022E26 + ldr r3, =gBattle_WIN0V ldrh r0, [r3] lsrs r2, r0, 8 adds r0, r2, 0x2 @@ -1706,7 +1706,7 @@ sub_80F677C: @ 80F677C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080F67AC @@ -1842,7 +1842,7 @@ sub_80F68B4: @ 80F68B4 ldrh r3, [r2] adds r0, r3, 0x2 strh r0, [r2] - ldr r4, =gUnknown_02022E22 + ldr r4, =gBattle_BG3_Y ldrh r5, [r4] adds r1, r5, 0x1 strh r1, [r4] @@ -2870,10 +2870,10 @@ _080F70BE: adds r5, 0x1 cmp r5, 0x2 ble _080F70BE - ldr r1, =gUnknown_02022E24 + ldr r1, =gBattle_WIN0H movs r0, 0xF0 strh r0, [r1] - ldr r2, =gUnknown_02022E26 + ldr r2, =gBattle_WIN0V ldrh r1, [r4, 0x22] adds r0, r1, 0 subs r0, 0x10 @@ -2910,8 +2910,8 @@ sub_80F7144: @ 80F7144 orrs r0, r1 mov r1, r12 strb r0, [r1] - ldr r7, =gUnknown_02022E24 - ldr r6, =gUnknown_02022E26 + ldr r7, =gBattle_WIN0H + ldr r6, =gBattle_WIN0V adds r5, r3, 0 movs r4, 0x4 adds r2, 0x2E @@ -4522,7 +4522,7 @@ sub_80F7DF4: @ 80F7DF4 bl AllocZeroed ldr r1, [r4] str r0, [r1, 0x1C] - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx pop {r4,r5} pop {r0} bx r0 @@ -5633,7 +5633,7 @@ sub_80F87B4: @ 80F87B4 push {lr} lsls r0, 24 lsrs r1, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080F87D0 diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s index 0d61167667..ad22946c50 100644 --- a/asm/contest_link_80FC4F4.s +++ b/asm/contest_link_80FC4F4.s @@ -21,7 +21,7 @@ sub_80FC4F4: @ 80FC4F4 lsrs r0, 24 adds r1, r5, 0 adds r2, r4, 0 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 bne _080FC528 @@ -45,7 +45,7 @@ sub_80FC530: @ 80FC530 lsls r4, 17 lsls r4, r5 lsrs r4, 24 - bl sub_800A550 + bl GetBlockReceivedStatus ands r4, r0 cmp r4, 0 beq _080FC552 @@ -64,7 +64,7 @@ _080FC554: thumb_func_start sub_80FC55C sub_80FC55C: @ 80FC55C push {r4,lr} - bl sub_800A550 + bl GetBlockReceivedStatus adds r4, r0, 0 bl sub_800A9D8 lsls r4, 24 @@ -74,7 +74,7 @@ sub_80FC55C: @ 80FC55C movs r0, 0 b _080FC57A _080FC574: - bl sub_800A5B4 + bl ResetBlockReceivedFlags movs r0, 0x1 _080FC57A: pop {r4} @@ -90,7 +90,7 @@ sub_80FC580: @ 80FC580 movs r1, 0 ldr r5, =gTasks ldr r6, =sub_80FC5C0 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer movs r3, 0xFF _080FC590: lsls r0, r1, 8 @@ -134,7 +134,7 @@ sub_80FC5DC: @ 80FC5DC push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080FC650 @@ -324,7 +324,7 @@ _080FC770: ldr r0, =gUnknown_02039E00 adds r4, r0 lsls r1, r5, 8 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer adds r1, r0 adds r0, r4, 0 movs r2, 0x40 @@ -430,7 +430,7 @@ _080FC858: cmp r0, 0 beq _080FC880 ldr r0, =gRngValue - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer adds r1, r4, 0 movs r2, 0x4 bl memcpy @@ -517,7 +517,7 @@ _080FC90C: ldrb r0, [r1] cmp r3, r0 bge _080FC93A - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer adds r0, r7, 0x2 adds r2, r5, r0 movs r5, 0x80 @@ -690,7 +690,7 @@ _080FCA68: bge _080FCAA4 ldr r1, =gUnknown_02039F34 mov r8, r1 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer movs r3, 0 movs r7, 0x80 lsls r7, 1 @@ -784,7 +784,7 @@ _080FCB50: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 b _080FCC50 @@ -827,7 +827,7 @@ _080FCBA4: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 b _080FCC50 @@ -850,7 +850,7 @@ _080FCBE0: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 b _080FCC50 @@ -885,7 +885,7 @@ _080FCC38: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x4 _080FCC50: @@ -974,7 +974,7 @@ _080FCD10: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x70 b _080FCE10 @@ -1021,7 +1021,7 @@ _080FCD6C: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x14 b _080FCE10 @@ -1078,7 +1078,7 @@ _080FCE04: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x4 _080FCE10: @@ -1169,7 +1169,7 @@ _080FCEC0: beq _080FCF2E mov r1, r8 mov r8, r9 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer adds r0, r7, 0 adds r0, 0xA adds r2, r5, r0 @@ -1278,7 +1278,7 @@ _080FCF9C: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 bl memcpy @@ -1344,7 +1344,7 @@ _080FD02C: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x4 bl memcpy diff --git a/asm/contest_link_81D9DE4.s b/asm/contest_link_81D9DE4.s index cec1c6e5d4..3fd8f56f1d 100755 --- a/asm/contest_link_81D9DE4.s +++ b/asm/contest_link_81D9DE4.s @@ -469,7 +469,7 @@ _081DA1EC: ldr r0, =gUnknown_02039E00 adds r4, r0 lsls r1, r5, 8 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer adds r1, r0 adds r0, r4, 0 movs r2, 0x40 @@ -554,7 +554,7 @@ _081DA2AC: cmp r0, 0 beq _081DA2D4 ldr r0, =gRngValue - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer adds r1, r4, 0 movs r2, 0x4 bl memcpy @@ -641,7 +641,7 @@ _081DA35A: mov r0, r8 adds r0, 0xA adds r3, r5, r0 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer mov r2, sp movs r5, 0x80 lsls r5, 1 @@ -744,7 +744,7 @@ _081DA42A: mov r0, r8 adds r0, 0x2 adds r3, r5, r0 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer mov r2, sp movs r5, 0x80 lsls r5, 1 @@ -849,7 +849,7 @@ _081DA50C: lsls r0, r3, 6 ldr r5, =gUnknown_02039E00 adds r0, r5 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer movs r2, 0x4 subs r2, r3 lsls r2, 6 diff --git a/asm/contest_painting.s b/asm/contest_painting.s index 62359497c6..03fa9b05ac 100644 --- a/asm/contest_painting.s +++ b/asm/contest_painting.s @@ -110,7 +110,7 @@ _0812FE94: bl remove_some_task movs r0, 0 bl SetVBlankCallback - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx ldr r1, =gUnknown_030061C0 ldr r0, =gUnknown_02039F3C str r0, [r1] @@ -581,7 +581,7 @@ sub_81302E8: @ 81302E8 lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r4, =gBattleSpritesGfx + ldr r4, =gMonSpritesGfxPtr ldr r1, [r4] ldr r1, [r1, 0x8] ldr r2, [r6] @@ -600,7 +600,7 @@ _08130348: lsls r0, r5, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r4, =gBattleSpritesGfx + ldr r4, =gMonSpritesGfxPtr ldr r1, [r4] ldr r1, [r1, 0x4] ldr r2, [r6] diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 5d02681739..0fa0c5eb3e 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -165,10 +165,10 @@ evolution_cutscene: @ 813DA8C movs r1, 0 bl SetGpuReg bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r2, 0 strh r2, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r2, [r0] ldr r0, =gBattle_BG1_X strh r2, [r0] @@ -183,14 +183,14 @@ evolution_cutscene: @ 813DA8C lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y movs r1, 0 strh r1, [r0] ldr r1, =gBattleTerrain movs r0, 0x9 strb r0, [r1] bl c2_berry_program_update_menu - bl sub_8035AA4 + bl LoadBattleTextboxAndBackground bl ResetSpriteData bl remove_some_task bl ResetTasks @@ -202,7 +202,7 @@ evolution_cutscene: @ 813DA8C bl AllocZeroed ldr r1, =gUnknown_0203AB80 str r0, [r1] - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx adds r0, r4, 0 movs r1, 0x2 mov r2, sp @@ -235,7 +235,7 @@ evolution_cutscene: @ 813DA8C lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r2, =gBattleSpritesGfx + ldr r2, =gMonSpritesGfxPtr ldr r1, [r2] ldr r1, [r1, 0x8] adds r2, r5, 0 @@ -291,7 +291,7 @@ evolution_cutscene: @ 813DA8C lsls r0, r1, 3 ldr r2, =gMonFrontPicTable adds r0, r2 - ldr r2, =gBattleSpritesGfx + ldr r2, =gMonSpritesGfxPtr ldr r1, [r2] ldr r1, [r1, 0x10] mov r2, r10 @@ -460,9 +460,9 @@ sub_813DD7C: @ 813DD7C movs r1, 0 bl SetGpuReg bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r0, =gBattle_BG1_X strh r4, [r0] @@ -477,13 +477,13 @@ sub_813DD7C: @ 813DD7C lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r4, [r0] ldr r1, =gBattleTerrain movs r0, 0x9 strb r0, [r1] bl c2_berry_program_update_menu - bl sub_8035AA4 + bl LoadBattleTextboxAndBackground bl ResetSpriteData bl FreeAllSpritePalettes ldr r1, =gReservedSpritePaletteCount @@ -492,7 +492,7 @@ sub_813DD7C: @ 813DD7C lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x10] adds r2, r5, 0 @@ -629,10 +629,10 @@ _0813DFE0: ldr r1, =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG1_X strh r1, [r0] @@ -647,7 +647,7 @@ _0813DFE0: lsls r3, 1 adds r0, r3, 0 strh r0, [r2] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r1, [r0] b _0813E180 .pool @@ -697,7 +697,7 @@ _0813E0A8: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x10] adds r2, r6, 0 @@ -867,7 +867,7 @@ sub_813E1D4: @ 813E1D4 lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] adds r2, r5, 0 @@ -941,9 +941,9 @@ sub_813E1D4: @ 813E1D4 mov r1, sp ldrh r1, [r1, 0x14] strh r1, [r0, 0x1C] - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X strh r4, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r4, [r0] ldr r0, =gBattle_BG1_X strh r4, [r0] @@ -958,7 +958,7 @@ sub_813E1D4: @ 813E1D4 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r4, [r0] ldr r2, =gTextFlags ldrb r0, [r2] @@ -3630,11 +3630,11 @@ nullsub_83: @ 813FCD8 thumb_func_start sub_813FCDC sub_813FCDC: @ 813FCDC push {lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg @@ -3658,7 +3658,7 @@ sub_813FCDC: @ 813FCDC ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg @@ -3674,11 +3674,11 @@ sub_813FCDC: @ 813FCDC thumb_func_start sub_813FD64 sub_813FD64: @ 813FD64 push {lr} - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg @@ -3702,7 +3702,7 @@ sub_813FD64: @ 813FD64 ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg @@ -3871,7 +3871,7 @@ sub_813FEE8: @ 813FEE8 .pool _0813FF28: ldr r7, =gBattle_BG3_X - ldr r6, =gUnknown_02022E22 + ldr r6, =gBattle_BG3_Y _0813FF2C: lsls r4, r5, 2 adds r4, r5 diff --git a/asm/field_screen.s b/asm/field_screen.s index 0de68b86b6..83fea2f44b 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -9010,7 +9010,7 @@ _080AF9C8: strh r0, [r4] b _080AF9E8 _080AF9D0: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080AF9E8 diff --git a/asm/link.s b/asm/link.s index d1c8d0542d..0386337583 100644 --- a/asm/link.s +++ b/asm/link.s @@ -402,7 +402,7 @@ sub_8009734: @ 8009734 strb r4, [r0] ldr r0, =gUnknown_030030F8 strb r4, [r0] - bl sub_800A5B4 + bl ResetBlockReceivedFlags bl sub_800A2E0 ldr r0, =gUnknown_03000D54 str r4, [r0] @@ -420,7 +420,7 @@ sub_8009734: @ 8009734 _080097A8: bl sub_800E700 _080097AC: - ldr r1, =gUnknown_03003124 + ldr r1, =gReceivedRemoteLinkPlayers movs r0, 0 strb r0, [r1] movs r1, 0 @@ -448,7 +448,7 @@ _080097BE: thumb_func_start sub_80097E8 sub_80097E8: @ 80097E8 push {r4,lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers movs r4, 0 strb r4, [r0] ldr r0, =gLinkVSyncDisabled @@ -514,7 +514,7 @@ _08009868: lsrs r5, r0, 24 cmp r5, 0x3 bls _08009840 - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0xF @@ -532,7 +532,7 @@ _08009888: cmp r0, 0 beq _080098C4 lsls r0, r5, 8 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r0, r1 lsls r4, r5, 1 adds r1, r4, r5 @@ -752,7 +752,7 @@ _08009A78: blt _08009A70 cmp r5, 0 bne _08009A94 - ldr r1, =gUnknown_03003124 + ldr r1, =gReceivedRemoteLinkPlayers ldrb r0, [r1] cmp r0, 0 bne _08009A94 @@ -952,7 +952,7 @@ _08009C14: .pool _08009C40: movs r2, 0 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer mov r9, r1 adds r7, r3, 0 ldr r3, =gUnknown_03003090 @@ -996,7 +996,7 @@ _08009C70: cmp r0, 0x1 bne _08009D16 lsls r1, r6, 8 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer adds r1, r0 mov r8, r1 lsls r0, r6, 3 @@ -1080,7 +1080,7 @@ _08009D3E: adds r2, r3 ldrh r2, [r2] movs r0, 0 - bl link_0800A448 + bl SendBlock b _08009D6E .pool _08009D64: @@ -1321,7 +1321,7 @@ _08009F6A: thumb_func_start sub_8009F70 sub_8009F70: @ 8009F70 push {lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _08009F80 @@ -1526,7 +1526,7 @@ sub_800A0C8: @ 800A0C8 adds r5, r0, 0 adds r6, r1, 0 movs r7, 0 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r4, [r0] cmp r4, 0x1 beq _0800A0DA @@ -2008,8 +2008,8 @@ bitmask_all_link_players_but_self: @ 800A490 bx r1 thumb_func_end bitmask_all_link_players_but_self - thumb_func_start link_0800A448 -link_0800A448: @ 800A4AC + thumb_func_start SendBlock +SendBlock: @ 800A4AC push {lr} adds r3, r1, 0 lsls r2, 16 @@ -2030,7 +2030,7 @@ _0800A4CE: lsrs r0, 24 pop {r1} bx r1 - thumb_func_end link_0800A448 + thumb_func_end SendBlock thumb_func_start sub_800A4D8 sub_800A4D8: @ 800A4D8 @@ -2095,8 +2095,8 @@ _0800A546: .pool thumb_func_end sub_800A520 - thumb_func_start sub_800A550 -sub_800A550: @ 800A550 + thumb_func_start GetBlockReceivedStatus +GetBlockReceivedStatus: @ 800A550 push {lr} ldr r0, =gLinkVSyncDisabled ldrb r0, [r0] @@ -2122,7 +2122,7 @@ _0800A580: lsrs r0, 24 pop {r1} bx r1 - thumb_func_end sub_800A550 + thumb_func_end GetBlockReceivedStatus thumb_func_start sub_800A588 sub_800A588: @ 800A588 @@ -2148,8 +2148,8 @@ _0800A5AC: .pool thumb_func_end sub_800A588 - thumb_func_start sub_800A5B4 -sub_800A5B4: @ 800A5B4 + thumb_func_start ResetBlockReceivedFlags +ResetBlockReceivedFlags: @ 800A5B4 push {r4,lr} ldr r0, =gLinkVSyncDisabled ldrb r0, [r0] @@ -2179,7 +2179,7 @@ _0800A5E2: pop {r0} bx r0 .pool - thumb_func_end sub_800A5B4 + thumb_func_end ResetBlockReceivedFlags thumb_func_start sub_800A5EC sub_800A5EC: @ 800A5EC @@ -2573,7 +2573,7 @@ task00_link_test: @ 800A850 movs r2, 0x2 movs r3, 0x2 bl sub_800A6E8 - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 movs r1, 0xF @@ -3813,7 +3813,7 @@ sub_800B3A4: @ 800B3A4 lsls r0, 24 lsrs r0, 24 lsls r2, r0, 8 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r4, r2, r1 lsls r2, r0, 3 subs r2, r0 @@ -3907,7 +3907,7 @@ _0800B482: thumb_func_start sub_800B488 sub_800B488: @ 800B488 push {lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0800B498 @@ -3923,7 +3923,7 @@ _0800B498: thumb_func_start sub_800B4A4 sub_800B4A4: @ 800B4A4 push {lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r1, [r0] cmp r1, 0 bne _0800B4B2 @@ -3938,7 +3938,7 @@ _0800B4B2: thumb_func_start sub_800B4C0 sub_800B4C0: @ 800B4C0 push {lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r1, [r0] cmp r1, 0 bne _0800B4CE @@ -11500,7 +11500,7 @@ _0800F18C: cmp r4, 0 bne _0800F1A8 bl sub_800EDD4 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers strb r4, [r0] b _0800F1D2 .pool @@ -11976,7 +11976,7 @@ _0800F514: bl sub_8011A64 _0800F58C: bl rfu_clearAllSlot - ldr r1, =gUnknown_03003124 + ldr r1, =gReceivedRemoteLinkPlayers movs r0, 0 strb r0, [r1] ldr r0, =gUnknown_03005000 @@ -12224,7 +12224,7 @@ _0800F786: thumb_func_start rfu_func_080F97B8 rfu_func_080F97B8: @ 800F794 push {lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0800F7C6 @@ -12430,7 +12430,7 @@ _0800F90E: ldrb r0, [r4, 0xC] cmp r0, 0 bne _0800F920 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0800F920 @@ -12536,7 +12536,7 @@ _0800F9EA: orrs r0, r3 str r0, [r1] movs r4, 0 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer mov r9, r0 mov r12, r2 mov r1, r8 @@ -12599,7 +12599,7 @@ _0800FA5C: beq _0800FA7E b _0800FC08 _0800FA7E: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0800FA88 @@ -12610,7 +12610,7 @@ _0800FA88: beq _0800FA90 b _0800FC08 _0800FA90: - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer bl sub_8010A70 b _0800FC08 .pool @@ -12662,7 +12662,7 @@ _0800FB10: ldrb r2, [r7, 0xC] cmp r2, 0 bne _0800FB78 - ldr r3, =gUnknown_03003124 + ldr r3, =gReceivedRemoteLinkPlayers ldrb r0, [r3] mov r6, r8 adds r6, 0x1 @@ -13410,7 +13410,7 @@ sub_801011C: @ 801011C push {lr} bl rfu_clearAllSlot bl sub_800C048 - ldr r1, =gUnknown_03003124 + ldr r1, =gReceivedRemoteLinkPlayers movs r0, 0 strb r0, [r1] ldr r2, =gUnknown_03005000 @@ -14374,14 +14374,14 @@ _080108B6: bne _080108C2 b _080109D2 _080108C2: - bl sub_800A5B4 + bl ResetBlockReceivedFlags bl sub_800B348 b _08010948 _080108CC: ldrb r0, [r5, 0xC] cmp r0, 0x1 bne _0801090C - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080108E8 @@ -14471,7 +14471,7 @@ _0801096E: _08010984: adds r0, r6, 0 bl DestroyTask - ldr r1, =gUnknown_03003124 + ldr r1, =gReceivedRemoteLinkPlayers movs r0, 0x1 strb r0, [r1] ldr r0, =0x00000ce8 @@ -14702,7 +14702,7 @@ _08010B6A: b _08010C52 .pool _08010B78: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 asrs r0, r4 @@ -14715,7 +14715,7 @@ _08010B8C: adds r0, r4, 0 bl sub_800A5EC lsls r2, r4, 8 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer adds r2, r0 ldr r1, =gLinkPlayers lsls r0, r4, 3 @@ -14799,7 +14799,7 @@ _08010C20: ldr r1, =gUnknown_020228C4 movs r0, 0 movs r2, 0xA0 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _08010CF0 @@ -14833,7 +14833,7 @@ _08010C94: lsls r0, 24 cmp r0, 0 beq _08010CF0 - bl sub_800A550 + bl GetBlockReceivedStatus movs r1, 0x1 ands r1, r0 cmp r1, 0 @@ -14841,7 +14841,7 @@ _08010C94: mov r0, sp movs r4, 0 strh r4, [r0] - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer ldr r2, =0x0100007e bl CpuSet movs r0, 0 @@ -14924,7 +14924,7 @@ _08010D56: ldr r1, =gUnknown_020228C4 movs r0, 0 movs r2, 0x3C - bl link_0800A448 + bl SendBlock b _08010D7A .pool _08010D70: @@ -14938,17 +14938,17 @@ _08010D7A: strh r0, [r4, 0x8] b _08010DA6 _08010D82: - bl sub_800A550 + bl GetBlockReceivedStatus movs r4, 0x1 adds r1, r4, 0 ands r1, r0 cmp r1, 0 beq _08010DA6 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer bl sub_8010A14 movs r0, 0 bl sub_800A5EC - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers strb r4, [r0] adds r0, r5, 0 bl DestroyTask @@ -15701,7 +15701,7 @@ _0801136C: bics r3, r2 adds r2, r3, 0 strb r2, [r1] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080113B0 @@ -15912,7 +15912,7 @@ _08011544: movs r1, 0x5 movs r2, 0x5 bl nullsub_5 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080115DE @@ -16397,7 +16397,7 @@ _08011958: ldrb r0, [r2, 0xC] cmp r0, 0x1 bne _08011996 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080119B4 @@ -16423,7 +16423,7 @@ _08011996: ldrb r0, [r0] cmp r0, 0x2 beq _080119B4 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080119B4 @@ -17502,7 +17502,7 @@ sub_801229C: @ 801229C push {r4-r7,lr} mov r7, r8 push {r7} - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 movs r1, 0x1C @@ -18913,7 +18913,7 @@ _08012F14: strb r0, [r6, 0xC] b _08012F50 _08012F22: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08012F50 @@ -19861,7 +19861,7 @@ _080137A6: b _08013A86 .pool _080137C4: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0801387A @@ -20806,11 +20806,11 @@ _08013FDE: adds r1, r0 movs r0, 0 movs r2, 0x64 - bl link_0800A448 + bl SendBlock b _080140BC .pool _08013FFC: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 @@ -20822,13 +20822,13 @@ _08013FFC: eors r1, r2 lsls r1, 24 lsrs r1, 16 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x64 bl memcpy movs r0, 0x32 bl IncrementGameStat - bl sub_800A5B4 + bl ResetBlockReceivedFlags b _0801405A .pool _08014038: @@ -20843,7 +20843,7 @@ _08014038: movs r0, 0 adds r1, r4, 0 movs r2, 0xDC - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _080140BC @@ -20854,7 +20854,7 @@ _0801405A: b _080140BC .pool _08014070: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 @@ -20866,12 +20866,12 @@ _08014070: eors r1, r0 lsls r1, 24 lsrs r1, 16 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer adds r1, r0 adds r0, r4, 0 movs r2, 0xD8 bl memcpy - bl sub_800A5B4 + bl ResetBlockReceivedFlags ldr r1, =gUnknown_02032298 strb r7, [r1] movs r0, 0x6 @@ -20925,7 +20925,7 @@ _08014114: strh r0, [r4, 0x8] b _0801419E _0801411C: - bl sub_800A550 + bl GetBlockReceivedStatus adds r4, r0, 0 bl sub_800A9D8 lsls r4, 24 @@ -20938,7 +20938,7 @@ _0801411C: .pool _08014138: lsls r1, r4, 8 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer adds r3, r1, r0 movs r0, 0x64 muls r0, r4 @@ -20965,7 +20965,7 @@ _08014152: eors r0, r1 lsls r0, 24 lsrs r0, 16 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r3, r0, r1 adds r0, r3, 0 adds r0, 0x60 @@ -20976,7 +20976,7 @@ _08014152: _08014190: bl sub_801B940 _08014194: - bl sub_800A5B4 + bl ResetBlockReceivedFlags adds r0, r6, 0 bl DestroyTask _0801419E: @@ -21665,7 +21665,7 @@ _08014854: movs r0, 0x4 strh r0, [r7] bl sub_800E3A8 - bl sub_800A5B4 + bl ResetBlockReceivedFlags b _080149B2 .pool _080148B8: @@ -21723,7 +21723,7 @@ _08014934: movs r0, 0 adds r1, r2, 0 movs r2, 0xE - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _080149B2 @@ -21731,13 +21731,13 @@ _08014934: strh r0, [r7] b _080149B2 _0801494A: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bne _080149B2 - bl sub_800A5B4 - ldr r0, =gUnknown_020223C4 + bl ResetBlockReceivedFlags + ldr r0, =gBlockRecvBuffer movs r2, 0x80 lsls r2, 1 adds r1, r0, r2 @@ -21766,7 +21766,7 @@ _08014992: strh r0, [r7] b _080149B2 _0801499C: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080149B2 @@ -22316,7 +22316,7 @@ _08014E8C: strb r0, [r5, 0xC] b _08014EF2 _08014E92: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08014EF2 @@ -22636,7 +22636,7 @@ _08015180: b _080152A0 .pool _080151A4: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080151C2 @@ -23002,7 +23002,7 @@ _080154E0: b _08015604 .pool _08015504: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08015522 @@ -23714,7 +23714,7 @@ _08015BB8: movs r0, 0x40 strb r0, [r1] _08015BBE: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08015BCA @@ -23750,7 +23750,7 @@ _08015C24: movs r0, 0x5 bl _08016876 _08015C2A: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08015C36 @@ -23785,7 +23785,7 @@ _08015C54: bne _08015C78 bl _08016878 _08015C78: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08015C94 @@ -23918,7 +23918,7 @@ _08015DA6: bl _08016876 .pool _08015DD0: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08015DF4 @@ -24212,7 +24212,7 @@ _08016084: movs r0, 0x1E bl sub_8015664 _08016092: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801609E @@ -24241,7 +24241,7 @@ _080160C6: movs r0, 0x2 bl _08016876 _080160DA: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080160E4 @@ -24452,7 +24452,7 @@ _080162D4: movs r0, 0x24 b _08016876 _080162DC: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r4, [r0] cmp r4, 0 beq _080162E6 @@ -30478,7 +30478,7 @@ _08019406: strb r0, [r5, 0x8] b _08019922 _0801940C: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0801942C @@ -30646,7 +30646,7 @@ _0801956A: strb r0, [r5, 0x8] b _08019922 _08019574: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0801957E @@ -30981,7 +30981,7 @@ _080197EE: strb r0, [r5, 0x8] b _08019922 _080197F8: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08019810 @@ -31050,7 +31050,7 @@ _08019884: b _08019922 .pool _080198A0: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08019922 @@ -33417,7 +33417,7 @@ _0801AB1E: lsls r2, 4 adds r1, r2, 0 strh r1, [r0] - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 pop {r4-r7} pop {r0} @@ -33741,7 +33741,7 @@ _0801AE7A: ldr r1, =gUnknown_020228C4 movs r0, 0 movs r2, 0x20 - bl link_0800A448 + bl SendBlock ldr r1, =gMain movs r2, 0x87 lsls r2, 3 @@ -33749,14 +33749,14 @@ _0801AE7A: b _0801AF8A .pool _0801AE98: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 beq _0801AEA6 b _0801AFAE _0801AEA6: - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer ldrh r0, [r1] cmp r0, 0x51 bne _0801AEE0 @@ -33782,7 +33782,7 @@ _0801AEA6: .pool _0801AEE0: bl sub_800AC34 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer bl GetMultiplayerId lsls r0, 24 lsrs r0, 16 @@ -33805,7 +33805,7 @@ _0801AF0C: movs r1, 0x8 _0801AF16: strb r1, [r0] - bl sub_800A5B4 + bl ResetBlockReceivedFlags b _0801AFAE .pool _0801AF24: @@ -33842,7 +33842,7 @@ _0801AF58: b _0801AFAE .pool _0801AF7C: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801AFAE @@ -39072,7 +39072,7 @@ sub_801D938: @ 801D938 adds r3, r0, 0 adds r0, r1, 0 lsls r3, 8 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r3, r1 adds r1, r3, 0 bl memcpy @@ -39085,7 +39085,7 @@ sub_801D938: @ 801D938 sub_801D954: @ 801D954 push {r4,lr} adds r4, r0, 0 - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 asrs r0, r4 @@ -39273,7 +39273,7 @@ _0801DA7C: movs r0, 0 mov r1, sp movs r2, 0x8 - bl link_0800A448 + bl SendBlock b _0801DB3E .pool _0801DAC8: @@ -39300,7 +39300,7 @@ _0801DAC8: lsls r2, r0, 16 lsrs r2, 16 movs r0, 0 - bl link_0800A448 + bl SendBlock ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] @@ -39310,7 +39310,7 @@ _0801DB08: adds r1, r3 movs r0, 0 movs r2, 0xFC - bl link_0800A448 + bl SendBlock ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] @@ -39942,7 +39942,7 @@ _0801DFE0: adds r1, r0 movs r0, 0 movs r2, 0x28 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _0801E028 @@ -40416,7 +40416,7 @@ _0801E3D4: adds r1, r0 movs r0, 0 movs r2, 0x28 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _0801E414 @@ -40432,14 +40432,14 @@ _0801E410: _0801E412: strh r0, [r1, 0x6] _0801E414: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801E458 b _0801E42C .pool _0801E424: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801E438 @@ -40556,7 +40556,7 @@ _0801E50C: adds r1, r0 movs r0, 0 movs r2, 0x28 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _0801E5BC @@ -40564,7 +40564,7 @@ _0801E50C: b _0801E59A .pool _0801E540: - bl sub_800A550 + bl GetBlockReceivedStatus movs r1, 0x1 ands r1, r0 cmp r1, 0 @@ -40599,7 +40599,7 @@ _0801E584: adds r0, 0x1 strh r0, [r1, 0xA] _0801E590: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801E5BC @@ -40683,7 +40683,7 @@ _0801E62E: adds r0, 0x1 strh r0, [r1, 0xA] _0801E638: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801E662 @@ -40798,7 +40798,7 @@ _0801E724: adds r0, 0x1 strh r0, [r1, 0xA] _0801E730: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801E75C @@ -40849,7 +40849,7 @@ _0801E784: .4byte _0801E802 .4byte _0801E820 _0801E798: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801E7AC @@ -40883,7 +40883,7 @@ _0801E7C0: adds r1, r0 movs r0, 0 movs r2, 0x28 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _0801E830 @@ -42276,7 +42276,7 @@ _0801F2E0: .4byte _0801F494 .4byte _0801F438 _0801F300: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0801F30A @@ -42304,7 +42304,7 @@ _0801F30E: b _0801F4C4 .pool _0801F33C: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x6] @@ -42365,7 +42365,7 @@ _0801F3A2: movs r1, 0x2 ldrsh r0, [r4, r1] lsls r0, 8 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r0, r1 ldrb r0, [r0] subs r0, 0x1 @@ -42406,7 +42406,7 @@ _0801F3F6: movs r2, 0x2 ldrsh r1, [r4, r2] lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 bl sub_801EFF8 cmp r0, 0 @@ -45486,7 +45486,7 @@ sub_8020C70: @ 8020C70 adds r4, r0, 0 movs r0, 0 mov r8, r0 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08020C8E @@ -49731,7 +49731,7 @@ _08022F7A: movs r0, 0 adds r1, r4, 0 movs r2, 0x2 - bl link_0800A448 + bl SendBlock b _08023060 _08022FAA: bl sub_800A520 @@ -49742,7 +49742,7 @@ _08022FAA: strh r0, [r5, 0x10] b _08023060 _08022FBA: - bl sub_800A550 + bl GetBlockReceivedStatus ldr r2, =gUnknown_082F4448 ldrb r4, [r5, 0x9] subs r1, r4, 0x2 @@ -49755,7 +49755,7 @@ _08022FBA: movs r3, 0 cmp r3, r4 bcs _0802301E - ldr r7, =gUnknown_020223C4 + ldr r7, =gBlockRecvBuffer movs r6, 0 ldr r4, =gUnknown_0858AB24 _08022FDC: @@ -49796,7 +49796,7 @@ _08022FF6: _0802301E: movs r0, 0 strh r0, [r5, 0x10] - bl sub_800A5B4 + bl ResetBlockReceivedFlags movs r1, 0x18 ldrsh r0, [r5, r1] lsls r0, 8 @@ -51445,7 +51445,7 @@ _08023D12: movs r0, 0 adds r1, r4, 0 movs r2, 0x2 - bl link_0800A448 + bl SendBlock b _0802402E _08023D2A: bl sub_800A520 @@ -51456,7 +51456,7 @@ _08023D2A: _08023D36: b _08024004 _08023D38: - bl sub_800A550 + bl GetBlockReceivedStatus ldr r2, =gUnknown_082F4448 ldrb r3, [r7, 0x9] subs r1, r3, 0x2 @@ -51474,7 +51474,7 @@ _08023D50: adds r4, 0x42 cmp r8, r3 bcs _08023D7E - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer _08023D5E: mov r3, r8 lsls r1, r3, 5 @@ -51496,7 +51496,7 @@ _08023D7E: movs r0, 0 strh r0, [r7, 0x10] strh r0, [r4] - bl sub_800A5B4 + bl ResetBlockReceivedFlags ldrb r0, [r7, 0x8] cmp r0, 0 bne _08023D9C @@ -51788,7 +51788,7 @@ _08023FC4: movs r0, 0 ldr r1, [sp, 0xC] movs r2, 0x30 - bl link_0800A448 + bl SendBlock b _0802402E _08023FD0: bl sub_800A520 @@ -51797,7 +51797,7 @@ _08023FD0: beq _08024034 b _08024004 _08023FDC: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -51808,11 +51808,11 @@ _08023FDC: movs r1, 0 movs r2, 0x30 bl memset - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r0, r4, 0 movs r2, 0x30 bl memcpy - bl sub_800A5B4 + bl ResetBlockReceivedFlags _08024004: movs r0, 0 strh r0, [r7, 0x10] @@ -52207,7 +52207,7 @@ _08024306: strh r5, [r0] movs r0, 0 movs r2, 0x2 - bl link_0800A448 + bl SendBlock b _080243AC _08024328: bl sub_800A520 @@ -52217,7 +52217,7 @@ _08024328: strh r5, [r4, 0x10] b _080243AC _08024336: - bl sub_800A550 + bl GetBlockReceivedStatus ldr r2, =gUnknown_082F4448 ldrb r3, [r4, 0x9] subs r1, r3, 0x2 @@ -52234,7 +52234,7 @@ _08024336: cmp r5, r3 bcs _08024374 adds r1, r6, 0 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer _0802435C: lsls r0, r5, 8 adds r0, r2 @@ -52264,7 +52264,7 @@ _08024390: movs r2, 0 bl sub_8022BEC _0802439A: - bl sub_800A5B4 + bl ResetBlockReceivedFlags movs r1, 0 movs r0, 0 strh r0, [r7] @@ -52485,7 +52485,7 @@ _08024528: bl sub_800AC34 b _08024558 _08024538: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0802455E @@ -53023,7 +53023,7 @@ sub_802493C: @ 802493C ldr r1, =gUnknown_03000DB0 movs r0, 0 str r0, [r1] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08024A10 @@ -53382,7 +53382,7 @@ _08024C5A: lsls r0, 24 cmp r0, 0 beq _08024D40 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08024D20 @@ -53989,7 +53989,7 @@ _0802516C: thumb_func_start sub_8025170 sub_8025170: @ 8025170 push {r4,lr} - bl sub_800A550 + bl GetBlockReceivedStatus adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -54001,7 +54001,7 @@ sub_8025170: @ 8025170 movs r0, 0 b _08025192 _0802518C: - bl sub_800A5B4 + bl ResetBlockReceivedFlags movs r0, 0x1 _08025192: pop {r4} @@ -54031,7 +54031,7 @@ _080251BA: adds r1, 0x4A movs r0, 0 movs r2, 0x3C - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _08025226 @@ -54115,7 +54115,7 @@ _08025252: adds r1, r2, r1 movs r0, 0 movs r2, 0x3C - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _08025316 @@ -54139,7 +54139,7 @@ _08025282: _0802528E: ldr r0, [r5] adds r0, 0x4A - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer movs r2, 0x3C bl memcpy ldr r1, [r5] @@ -54265,7 +54265,7 @@ _0802539C: strb r0, [r1] movs r0, 0 movs r2, 0x1 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _08025466 @@ -54302,7 +54302,7 @@ _080253DC: adds r3, r1, 0 movs r5, 0x86 lsls r5, 1 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer _080253FA: ldr r1, [r3] adds r1, r2, r1 @@ -54452,7 +54452,7 @@ _0802553C: strb r0, [r1] movs r0, 0 movs r2, 0x1 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _0802563C @@ -54486,7 +54486,7 @@ _08025578: adds r3, r1, 0 movs r5, 0x86 lsls r5, 1 - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer _08025596: ldr r1, [r3] adds r1, r2, r1 @@ -54617,7 +54617,7 @@ _08025688: strb r0, [r1, 0x10] b _080256A0 _08025692: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080256A0 @@ -54829,7 +54829,7 @@ _0802585C: bl sub_802903C ldr r0, [r4] bl sub_8024A30 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08025882 @@ -54946,7 +54946,7 @@ _0802593E: adds r1, r0 movs r0, 0 movs r2, 0x1 - bl link_0800A448 + bl SendBlock lsls r0, 24 cmp r0, 0 beq _080259E8 @@ -54976,7 +54976,7 @@ _0802597E: cmp r2, r0 bcs _080259C4 adds r3, r1, 0 - ldr r5, =gUnknown_020223C4 + ldr r5, =gBlockRecvBuffer ldr r4, =0x0000318c _0802599A: ldr r0, [r3] @@ -58643,7 +58643,7 @@ sub_8027660: @ 8027660 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0802768C @@ -64818,7 +64818,7 @@ sub_802A9A8: @ 802A9A8 adds r6, r1, 0 lsls r0, 16 lsrs r7, r0, 16 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0802AA3C @@ -67232,7 +67232,7 @@ _0802BD02: b _0802BD24 .pool _0802BD14: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0802BD24 @@ -73081,7 +73081,7 @@ sub_802EAB0: @ 802EAB0 lsls r1, 3 ldr r0, =gTasks + 0x8 adds r4, r1, r0 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0802EB14 diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index acc3065eae..423f653d98 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -533,7 +533,7 @@ sub_81221AC: @ 81221AC bl is_c1_link_related_active cmp r0, 0x1 beq _081221BE - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _081221C8 diff --git a/asm/mystery_event_menu.s b/asm/mystery_event_menu.s index 49de578487..df8e443a19 100644 --- a/asm/mystery_event_menu.s +++ b/asm/mystery_event_menu.s @@ -337,7 +337,7 @@ _08178C54: lsls r0, 24 cmp r0, 0 beq _08178D00 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08178C68 @@ -435,13 +435,13 @@ _08178D28: _08178D36: b _08178E34 _08178D38: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 cmp r0, 0 bne _08178D44 b _08178E58 _08178D44: - bl sub_800A5B4 + bl ResetBlockReceivedFlags ldr r1, =gMain movs r2, 0x87 lsls r2, 3 @@ -462,7 +462,7 @@ _08178D60: b _08178E3C .pool _08178D74: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r6, [r0] cmp r6, 0 bne _08178E58 diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s index d82c5df07e..bc402d91c1 100644 --- a/asm/pokeblock_feed.s +++ b/asm/pokeblock_feed.s @@ -95,7 +95,7 @@ _08179C48: bl FreeAllSpritePalettes b _08179D32 _08179C4E: - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx ldr r1, =gMain movs r2, 0x87 lsls r2, 3 @@ -322,7 +322,7 @@ _08179E48: lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] adds r2, r5, 0 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 2ad67ba5a3..bcc52c1720 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -127,7 +127,7 @@ _081BF9EE: strb r1, [r0] movs r0, 0xFF bl sub_81C488C - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] cmp r0, 0 bne _081BFA12 @@ -1284,7 +1284,7 @@ sub_81C0484: @ 81C0484 movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r0, [r0] cmp r0, 0 bne _081C04E2 @@ -8807,7 +8807,7 @@ _081C4620: lsls r0, r2, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] b _081C46D6 @@ -8817,12 +8817,12 @@ _081C4668: lsls r0, r2, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] b _081C46B0 .pool _081C4680: - ldr r0, =gBattleSpritesGfx + ldr r0, =gMonSpritesGfxPtr ldr r3, [r0] adds r4, r0, 0 cmp r3, 0 diff --git a/asm/pokenav.s b/asm/pokenav.s index fa0aaa9d05..0c7a80742a 100755 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -28252,7 +28252,7 @@ _081D4FB6: lsls r0, 24 cmp r0, 0 beq _081D500C - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _081D4FE6 @@ -28280,7 +28280,7 @@ _081D4FEC: strb r0, [r4] b _081D500C _081D4FF8: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _081D500C @@ -28673,13 +28673,13 @@ _081D5374: bl sub_80097E8 b _081D53C0 _081D537A: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 cmp r0, 0 bne _081D5386 b _081D548A _081D5386: - bl sub_800A5B4 + bl ResetBlockReceivedFlags movs r0, 0xF strb r0, [r4, 0x8] b _081D548A @@ -28694,7 +28694,7 @@ _081D5390: b _081D548A .pool _081D53A8: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _081D548A diff --git a/asm/record_mixing.s b/asm/record_mixing.s index a62022cc71..aacc5baa08 100644 --- a/asm/record_mixing.s +++ b/asm/record_mixing.s @@ -849,7 +849,7 @@ _080E745A: strh r0, [r5, 0x20] b _080E7566 _080E7464: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080E746E @@ -1066,7 +1066,7 @@ sub_80E7630: @ 80E7630 ldr r1, =gTasks adds r0, r1 mov r10, r0 - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] @@ -1302,7 +1302,7 @@ sub_80E7810: @ 80E7810 sub_80E7820: @ 80E7820 lsls r0, 24 lsrs r0, 16 - ldr r1, =gUnknown_020223C4 + ldr r1, =gBlockRecvBuffer adds r0, r1 bx lr .pool @@ -2368,7 +2368,7 @@ _080E807C: bl sub_800AC34 b _080E80F2 _080E8090: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080E810A diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s index c84b518c3e..48325cfed9 100644 --- a/asm/recorded_battle.s +++ b/asm/recorded_battle.s @@ -95,7 +95,7 @@ sub_8184E58: @ 8184E58 ldrb r0, [r0] cmp r0, 0x1 bne _08184EA0 - ldr r1, =gUnknown_0203BD2C + ldr r1, =gRecordedBattleRngSeed ldr r0, =gRngValue ldr r0, [r0] str r0, [r1] @@ -112,7 +112,7 @@ _08184EA0: cmp r0, 0x2 bne _08184EAC ldr r0, =gRngValue - ldr r1, =gUnknown_0203BD2C + ldr r1, =gRecordedBattleRngSeed ldr r1, [r1] str r1, [r0] _08184EAC: @@ -779,7 +779,7 @@ _081853BA: movs r4, 0x9D lsls r4, 3 adds r1, r7, r4 - ldr r5, =gUnknown_0203BD2C + ldr r5, =gRecordedBattleRngSeed ldr r0, [r5] str r0, [r1] ldr r0, =gUnknown_0203C7B8 @@ -1576,7 +1576,7 @@ sub_8185B1C: @ 8185B1C ldr r0, =gMain ldr r1, =sub_8185AB0 str r1, [r0, 0x8] - ldr r0, =sub_8036760 + ldr r0, =CB2_InitBattle bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask @@ -1701,7 +1701,7 @@ _08185C2A: adds r6, 0x1 cmp r6, 0x3 ble _08185BBE - ldr r1, =gUnknown_0203BD2C + ldr r1, =gRecordedBattleRngSeed movs r3, 0x9D lsls r3, 3 adds r0, r7, r3 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 42ba43ec0e..8bc97b45aa 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -98,10 +98,10 @@ _080A93B0: movs r0, 0x3 bl ShowBg bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r0, =gBattle_BG1_X strh r1, [r0] @@ -113,7 +113,7 @@ _080A93B0: strh r1, [r0] ldr r0, =gBattle_BG3_X strh r1, [r0] - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y strh r1, [r0] b _080A95D2 .pool @@ -128,7 +128,7 @@ _080A942C: b _080A95D2 .pool _080A9444: - bl sub_8035AA4 + bl LoadBattleTextboxAndBackground b _080A95D2 _080A944A: bl ResetSpriteData @@ -275,7 +275,7 @@ _080A955C: ldrb r0, [r0] cmp r0, 0 beq _080A95D2 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080A95D2 diff --git a/asm/rom3.s b/asm/rom3.s index 9bd95c252c..23d3204741 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -5,8 +5,8 @@ .text - thumb_func_start battle_wireless_setup_if_required_maybe -battle_wireless_setup_if_required_maybe: @ 8032654 + thumb_func_start HandleLinkBattleSetup +HandleLinkBattleSetup: @ 8032654 push {lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] @@ -20,7 +20,7 @@ battle_wireless_setup_if_required_maybe: @ 8032654 beq _0803266E bl sub_800B488 _0803266E: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0803267A @@ -34,10 +34,10 @@ _08032686: pop {r0} bx r0 .pool - thumb_func_end battle_wireless_setup_if_required_maybe + thumb_func_end HandleLinkBattleSetup - thumb_func_start sub_803269C -sub_803269C: @ 803269C + thumb_func_start SetUpBattleVarsAndBirchZigzagoon +SetUpBattleVarsAndBirchZigzagoon: @ 803269C push {r4-r7,lr} sub sp, 0x14 ldr r0, =gBattleMainFunc @@ -71,7 +71,7 @@ _080326B8: adds r1, r0, 0 cmp r1, 0x3 ble _080326B8 - bl battle_wireless_setup_if_required_maybe + bl HandleLinkBattleSetup ldr r0, =gBattleExecBuffer movs r5, 0 str r5, [r0] @@ -112,7 +112,7 @@ _08032728: pop {r0} bx r0 .pool - thumb_func_end sub_803269C + thumb_func_end SetUpBattleVarsAndBirchZigzagoon thumb_func_start sub_8032768 sub_8032768: @ 8032768 @@ -1790,7 +1790,7 @@ _080335A0: ldr r1, [r5] adds r1, r2 adds r2, r6, 0 - bl link_0800A448 + bl SendBlock ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] @@ -1857,7 +1857,7 @@ sub_8033648: @ 8033648 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _08033738 @@ -1869,12 +1869,12 @@ sub_8033648: @ 8033648 beq _08033738 bl sub_8011BD0 movs r4, 0 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer mov r10, r0 b _0803372C .pool _08033680: - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 ldr r2, =gBitTable @@ -1891,7 +1891,7 @@ _08033680: lsls r0, r4, 8 mov r4, r10 adds r3, r0, r4 - ldr r1, =gUnknown_020223C8 + ldr r1, =gBlockRecvBuffer + 4 adds r0, r1 ldrh r6, [r0] ldr r7, =gTasks diff --git a/asm/rom6.s b/asm/rom6.s index cd1421b4fa..44cdaea65d 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -11564,7 +11564,7 @@ sub_813B534: @ 813B534 str r0, [r2] movs r0, 0 str r0, [r1] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0813B552 @@ -11651,11 +11651,11 @@ _0813B5FE: lsrs r0, 24 ldr r1, =gSpecialVar_0x8004 movs r2, 0x2 - bl link_0800A448 + bl SendBlock b _0813B708 .pool _0813B614: - bl sub_800A550 + bl GetBlockReceivedStatus movs r1, 0x2 ands r1, r0 cmp r1, 0 @@ -11669,7 +11669,7 @@ _0813B622: b _0813B790 _0813B62E: ldr r5, =gSpecialVar_0x8005 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer movs r1, 0x80 lsls r1, 1 adds r0, r1 @@ -11738,11 +11738,11 @@ _0813B6C2: lsrs r0, 24 ldr r1, =gScriptResult movs r2, 0x2 - bl link_0800A448 + bl SendBlock b _0813B708 .pool _0813B6E4: - bl sub_800A550 + bl GetBlockReceivedStatus movs r1, 0x1 ands r1, r0 cmp r1, 0 @@ -11752,7 +11752,7 @@ _0813B6E4: cmp r0, 0 beq _0813B790 ldr r1, =gScriptResult - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer ldrh r0, [r0] strh r0, [r1] movs r0, 0 diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index 267045179b..6135f81e0e 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -5155,7 +5155,7 @@ sub_80A8394: @ 80A8394 bl AllocSpritePalette lsls r0, 24 lsrs r5, r0, 24 - ldr r4, =gBattleSpritesGfx + ldr r4, =gMonSpritesGfxPtr ldr r0, [r4] cmp r0, 0 beq _080A8412 @@ -5213,7 +5213,7 @@ _080A845E: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r3, 0xBE lsls r3, 1 @@ -5226,7 +5226,7 @@ _080A8488: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBE lsls r2, 1 @@ -5276,7 +5276,7 @@ _080A84F6: lsls r0, r6, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBE lsls r2, 1 @@ -5294,7 +5294,7 @@ _080A8524: lsls r0, r6, 3 ldr r1, =gMonBackPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] movs r3, 0xBE lsls r3, 1 @@ -5305,7 +5305,7 @@ _080A8524: mov r3, r8 bl LoadSpecialPokePic_2 _080A8540: - ldr r5, =gBattleSpritesGfx + ldr r5, =gMonSpritesGfxPtr ldr r0, [r5] movs r4, 0xBE lsls r4, 1 diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s index e261942984..e5f69eeacf 100644 --- a/asm/script_pokemon_util_80F87D8.s +++ b/asm/script_pokemon_util_80F87D8.s @@ -670,7 +670,7 @@ sub_80F8D28: @ 80F8D28 beq _080F8D44 b _080F8E9C _080F8D44: - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx movs r0, 0xA mov r9, r0 movs r1, 0x3 @@ -710,7 +710,7 @@ _080F8D44: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] adds r2, r6, 0 @@ -722,7 +722,7 @@ _080F8DC4: lsls r0, r6, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] adds r2, r6, 0 @@ -1093,7 +1093,7 @@ sub_80F90DC: @ 80F90DC ands r0, r1 cmp r0, 0 beq _080F90FE - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080F90FE @@ -1116,7 +1116,7 @@ sub_80F910C: @ 80F910C ands r0, r1 cmp r0, 0 beq _080F9126 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080F9126 diff --git a/asm/trade.s b/asm/trade.s index 8712567c7a..42ed85948f 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -18,7 +18,7 @@ sub_8077170: @ 8077170 lsrs r2, 16 movs r0, 0 adds r1, r4, 0 - bl link_0800A448 + bl SendBlock lsls r0, 24 lsrs r0, 24 b _080771A2 @@ -83,7 +83,7 @@ _080771F8: thumb_func_start sub_8077200 sub_8077200: @ 8077200 push {lr} - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 pop {r1} @@ -103,7 +103,7 @@ sub_8077210: @ 8077210 b _08077230 .pool _0807722C: - bl sub_800A5B4 + bl ResetBlockReceivedFlags _08077230: pop {r0} bx r0 @@ -397,7 +397,7 @@ _080774B2: bl sub_807A19C movs r0, 0 bl ShowBg - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r2, [r0] cmp r2, 0 bne _0807754C @@ -504,7 +504,7 @@ _080775D8: b _08077B22 .pool _080775E8: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 beq _080775F2 @@ -1832,7 +1832,7 @@ sub_80781C8: @ 80781C8 b _08078244 .pool _08078220: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r4, [r0] cmp r4, 0 bne _08078244 @@ -2198,7 +2198,7 @@ _08078552: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl sub_8078438 @@ -2237,7 +2237,7 @@ _080785B6: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl sub_8078438 @@ -2276,7 +2276,7 @@ _0807861A: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl sub_8078438 @@ -2318,7 +2318,7 @@ _0807868A: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0xD8 bl sub_8078438 @@ -2360,7 +2360,7 @@ _080786F0: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0xB bl sub_8078438 @@ -2467,7 +2467,7 @@ sub_80787E0: @ 80787E0 ands r0, r2 cmp r0, 0 beq _08078864 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer ldrh r1, [r0] ldr r0, =0x0000bbbb cmp r1, r0 @@ -2521,7 +2521,7 @@ _08078864: ands r0, r2 cmp r0, 0 beq _080788F6 - ldr r3, =gUnknown_020223C4 + ldr r3, =gBlockRecvBuffer movs r1, 0x80 lsls r1, 1 adds r0, r3, r1 @@ -2597,7 +2597,7 @@ sub_8078900: @ 8078900 ands r0, r5 cmp r0, 0 beq _080789E2 - ldr r2, =gUnknown_020223C4 + ldr r2, =gBlockRecvBuffer ldrh r1, [r2] ldr r0, =0x0000ddee cmp r1, r0 @@ -4052,7 +4052,7 @@ sub_80794CC: @ 80794CC b _0807953A .pool _08079518: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0807953A @@ -6279,7 +6279,7 @@ _0807A718: thumb_func_start sub_807A728 sub_807A728: @ 807A728 push {r4-r7,lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0807A7B4 @@ -7054,7 +7054,7 @@ _0807ACC4: thumb_func_start sub_807ACDC sub_807ACDC: @ 807ACDC push {lr} - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0807ACF0 @@ -7128,7 +7128,7 @@ _0807AD58: lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] adds r2, r5, 0 @@ -7141,7 +7141,7 @@ _0807AD94: lsls r0, r5, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r2, [r1] lsls r4, r6, 1 adds r1, r4, 0x1 @@ -7254,7 +7254,7 @@ _0807AE78: .4byte _0807B0D4 .4byte _0807B0F0 _0807AEAC: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0807AEC0 @@ -7270,7 +7270,7 @@ _0807AEC0: adds r0, r5, 0 bl AllocZeroed str r0, [r4] - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx bl ResetTasks bl ResetSpriteData bl FreeAllSpritePalettes @@ -7321,7 +7321,7 @@ _0807AEC0: b _0807B116 .pool _0807AF58: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r5, [r0] cmp r5, 0 bne _0807AF90 @@ -7401,7 +7401,7 @@ _0807B000: b _0807B116 _0807B006: bl sub_807AC64 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 beq _0807B014 @@ -7729,7 +7729,7 @@ _0807B2D0: adds r0, r5, 0 bl AllocZeroed str r0, [r4] - bl init_uns_table_pokemon_copy + bl AllocateMonSpritesGfx bl ResetTasks bl ResetSpriteData bl FreeAllSpritePalettes @@ -7989,7 +7989,7 @@ _0807B566: _0807B57C: mov r0, r9 bl sub_807B464 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0807B58E @@ -8029,7 +8029,7 @@ _0807B5D0: ldr r1, [r4] adds r1, 0x74 movs r2, 0x14 - bl link_0800A448 + bl SendBlock ldr r1, [r4] adds r1, 0x93 ldrb r0, [r1] @@ -10369,7 +10369,7 @@ _0807CCEE: lsls r0, r2, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x10] ldr r3, [r3, 0x6C] @@ -12474,7 +12474,7 @@ _0807E13A: lsls r0, r2, 3 ldr r1, =gMonFrontPicTable adds r0, r1 - ldr r1, =gBattleSpritesGfx + ldr r1, =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x10] ldr r3, [r3, 0x6C] @@ -12877,7 +12877,7 @@ _0807E4C2: sub_807E4DC: @ 807E4DC push {r4-r6,lr} bl sub_807ACDC - bl sub_800A550 + bl GetBlockReceivedStatus lsls r0, 24 lsrs r5, r0, 24 movs r6, 0x1 @@ -12885,7 +12885,7 @@ sub_807E4DC: @ 807E4DC ands r0, r6 cmp r0, 0 beq _0807E51A - ldr r4, =gUnknown_020223C4 + ldr r4, =gBlockRecvBuffer ldrh r1, [r4] ldr r0, =0x0000dcba cmp r1, r0 @@ -12909,7 +12909,7 @@ _0807E51A: ands r0, r5 cmp r0, 0 beq _0807E542 - ldr r0, =gUnknown_020223C4 + ldr r0, =gBlockRecvBuffer movs r1, 0x80 lsls r1, 1 adds r0, r1 @@ -13600,7 +13600,7 @@ _0807EAEC: ldr r1, [r4] adds r1, 0x74 movs r2, 0x14 - bl link_0800A448 + bl SendBlock ldr r0, [r4] adds r0, 0x72 movs r1, 0x2 @@ -14090,7 +14090,7 @@ _0807EFF0: b _0807F03A .pool _0807F028: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r1, [r0] cmp r1, 0 bne _0807F03A diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 7552d7acee..bee1f4f7f2 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -191,7 +191,7 @@ _080C2836: ldrb r0, [r0] cmp r0, 0x1 bne _080C2852 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080C2852 @@ -261,7 +261,7 @@ _080C28D8: b _080C2ACA .pool _080C28E4: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r5, [r0] cmp r5, 0 bne _080C290A @@ -301,7 +301,7 @@ _080C293C: bne _080C2946 b _080C2ACA _080C2946: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080C2960 @@ -346,7 +346,7 @@ _080C299C: ands r0, r1 cmp r0, 0 beq _080C29F4 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080C29DC @@ -358,7 +358,7 @@ _080C299C: cmp r0, 0x1 beq _080C2A14 _080C29C0: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080C29DC @@ -382,7 +382,7 @@ _080C29F4: ands r0, r1 cmp r0, 0 beq _080C2ACA - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080C2A20 @@ -430,7 +430,7 @@ _080C2A2C: b _080C2ACA .pool _080C2A68: - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080C2ACA @@ -1403,7 +1403,7 @@ sub_80C3278: @ 80C3278 movs r0, 0x40 movs r1, 0xF0 bl SetGpuReg - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080C32E0 @@ -4267,7 +4267,7 @@ _080C4BF6: ldrb r0, [r1, 0x4] adds r0, 0x1 strb r0, [r1, 0x4] - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080C4B20 @@ -4745,7 +4745,7 @@ sub_80C4FF0: @ 80C4FF0 bl InUnionRoom cmp r0, 0x1 bne _080C5060 - ldr r0, =gUnknown_03003124 + ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _080C5060 diff --git a/asm/unknown_task.s b/asm/unknown_task.s index 99a614e378..f6b96287e9 100644 --- a/asm/unknown_task.s +++ b/asm/unknown_task.s @@ -267,11 +267,11 @@ _080BA1D8: .4byte _080BA250 .4byte _080BA24C _080BA214: - ldr r0, =gUnknown_02022E14 + ldr r0, =gBattle_BG0_X b _080BA24E .pool _080BA21C: - ldr r0, =gUnknown_02022E16 + ldr r0, =gBattle_BG0_Y b _080BA24E .pool _080BA224: @@ -295,7 +295,7 @@ _080BA244: b _080BA24E .pool _080BA24C: - ldr r0, =gUnknown_02022E22 + ldr r0, =gBattle_BG3_Y _080BA24E: ldrh r6, [r0] _080BA250: diff --git a/include/battle.h b/include/battle.h index 67d3d873d7..72168aa604 100644 --- a/include/battle.h +++ b/include/battle.h @@ -55,6 +55,8 @@ #define BATTLE_TYPE_KYORGE 0x20000000 #define BATTLE_TYPE_RAYQUAZA 0x40000000 +#define TRAINER_OPPONENT_C00 0xC00 +#define TRAINER_OPPONENT_800 0x800 #define STEVEN_PARTNER_ID 0xC03 #define SECRET_BASE_OPPONENT 0x400 @@ -215,14 +217,17 @@ #define BATTLE_TERRAIN_POND 5 #define BATTLE_TERRAIN_ROCK 6 #define BATTLE_TERRAIN_CAVE 7 +#define BATTLE_TERRAIN_INSIDE 8 // array entries for battle communication -#define MULTIUSE_STATE 0x0 -#define CURSOR_POSITION 0x1 -#define TASK_ID 0x1 // task Id and cursor position share the same field -#define MOVE_EFFECT_BYTE 0x3 -#define MULTISTRING_CHOOSER 0x5 -#define MSG_DISPLAY 0x7 +#define MULTIUSE_STATE 0x0 +#define CURSOR_POSITION 0x1 +#define TASK_ID 0x1 // task Id and cursor position share the same field +#define SPRITES_INIT_STATE1 0x1 // shares the Id as well +#define SPRITES_INIT_STATE2 0x2 +#define MOVE_EFFECT_BYTE 0x3 +#define MULTISTRING_CHOOSER 0x5 +#define MSG_DISPLAY 0x7 #define MOVE_TARGET_SELECTED 0x0 #define MOVE_TARGET_DEPENDS 0x1 @@ -633,15 +638,13 @@ struct BattleStruct u8 field_A5; u8 field_A6; u8 field_A7; - u16 hpOnSwitchout[4]; + u16 hpOnSwitchout[2]; + u32 savedBattleTypeFlags; u8 field_B0; u8 hpScale; u8 synchronizeMoveEffect; u8 field_B3; - u8 field_B4; - u8 field_B5; - u8 field_B6; - u8 field_B7; + void (*savedCallback)(void); u16 usedHeldItems[BATTLE_BANKS_COUNT]; u8 field_C0[8]; u16 choicedMove[BATTLE_BANKS_COUNT]; @@ -654,7 +657,11 @@ struct BattleStruct u8 field_DF; u8 mirrorMoveArrays[32]; u16 castformPalette[4][16]; - u8 field_180[32]; + u8 field_180; + u8 field_181; + u8 field_182; + u8 field_183; + struct BattleEnigmaBerry battleEnigmaBerry; u8 field_1A0; u8 field_1A1; u8 filler1A2; @@ -842,13 +849,24 @@ struct BattleScripting u8 atk6C_state; u8 learnMoveState; u8 field_20; + u8 field_21; + u8 field_22; + u8 field_23; + u8 field_24; + u8 multiplayerId; }; extern struct BattleScripting gBattleScripting; // functions +// battle_1 +void LoadBattleTextboxAndBackground(void); +void LoadBattleEntryBackground(void); +void task00_0800F6FC(u8 taskId); + // battle_2 +void CB2_InitBattle(void); void CancelMultiTurnMoves(u8 bank); void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); void PrepareStringBattle(u16 stringId, u8 bank); @@ -914,13 +932,18 @@ extern void (* const gBattleScriptingCommandsTable[])(void); extern const u8 gUnknown_0831C494[]; // battle_5 +void AllocateBattleResrouces(void); void AdjustFriendshipOnBattleFaint(u8 bank); void sub_80571DC(u8 bank, u8 arg1); u32 sub_805725C(u8 bank); // battle 7 +void AllocateBattleSpritesData(void); void BattleMusicStop(void); void sub_805E990(struct Pokemon* mon, u8 bank); +void AllocateMonSpritesGfx(void); +void sub_805EF14(void); +bool8 BattleInitAllSprites(u8 *state1, u8 *state2); // rom_80A5C6C u8 GetBankSide(u8 bank); @@ -931,13 +954,13 @@ u8 GetBankByIdentity(u8 bank); #include "sprite.h" -struct BattleSpritesGfx +struct MonSpritesGfx { void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon void* sprites[4]; struct SpriteTemplate templates[4]; }; -extern struct BattleSpritesGfx* gBattleSpritesGfx; +extern struct MonSpritesGfx* gMonSpritesGfxPtr; #endif // GUARD_BATTLE_H diff --git a/include/battle_setup.h b/include/battle_setup.h new file mode 100644 index 0000000000..80fb55da22 --- /dev/null +++ b/include/battle_setup.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_SETUP_H +#define GUARD_BATTLE_SETUP_H + +u8 BattleSetup_GetTerrainId(void); + +#endif // GUARD_BATTLE_SETUP_H diff --git a/include/flags.h b/include/flags.h index 19ec01b562..020fc59cba 100644 --- a/include/flags.h +++ b/include/flags.h @@ -84,6 +84,8 @@ #define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61 #define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62 +#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72 + #define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77 #define SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B diff --git a/include/global.berry.h b/include/global.berry.h index a77da20ba0..5c8a43a021 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -1,9 +1,12 @@ #ifndef GUARD_GLOBAL_BERRY_H #define GUARD_GLOBAL_BERRY_H +#define BERRY_NAME_COUNT 7 +#define BERRY_ITEM_EFFECT_COUNT 18 + struct Berry { - const u8 name[7]; + const u8 name[BERRY_NAME_COUNT]; u8 firmness; u16 size; u8 maxYield; @@ -23,7 +26,7 @@ struct Berry struct Berry2 { - u8 name[7]; + u8 name[BERRY_NAME_COUNT]; u8 firmness; u16 size; u8 maxYield; @@ -42,7 +45,7 @@ struct Berry2 struct EnigmaBerry { struct Berry2 berry; - u8 itemEffect[18]; + u8 itemEffect[BERRY_ITEM_EFFECT_COUNT]; u8 holdEffect; u8 holdEffectParam; u32 checksum; @@ -50,9 +53,9 @@ struct EnigmaBerry struct BattleEnigmaBerry { - /*0x00*/ u8 name[7]; + /*0x00*/ u8 name[BERRY_NAME_COUNT]; /*0x07*/ u8 holdEffect; - /*0x08*/ u8 itemEffect[18]; + /*0x08*/ u8 itemEffect[BERRY_ITEM_EFFECT_COUNT]; /*0x1A*/ u8 holdEffectParam; }; diff --git a/include/global.h b/include/global.h index 4014c6dde8..e0c09d29aa 100644 --- a/include/global.h +++ b/include/global.h @@ -198,8 +198,13 @@ struct SaveBlock2 // All below could be a one giant struct /*0x64C*/ u8 field_64C[1629]; - /*0xCA9*/ u8 frontierChosenLvl : 2; - /*0xCA9*/ u8 field_CA9_a : 6; + /*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3 + /*0xCA9*/ u8 field_CA9_a : 1; // 0x4 + /*0xCA9*/ u8 field_CA9_b : 1; // 0x8 + /*0xCA9*/ u8 field_CA9_c : 1; // 0x10 + /*0xCA9*/ u8 field_CA9_d : 1; // 0x20 + /*0xCA9*/ u8 field_CA9_e : 1; // 0x40 + /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 /*0xCAA*/ u8 field_CAA[368]; /*0xE1A*/ u16 battlePyramidFloor; // possibly? /*0xE1C*/ u8 field_E1C[16]; diff --git a/include/link.h b/include/link.h index 5db3ff3d21..b719371dac 100644 --- a/include/link.h +++ b/include/link.h @@ -143,7 +143,6 @@ extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; void Task_DestroySelf(u8); -void sub_8007270(u8); void OpenLink(void); void CloseLink(void); u16 LinkMain2(u16 *); @@ -162,24 +161,12 @@ void sub_8007E4C(void); u8 GetMultiplayerId(void); u8 bitmask_all_link_players_but_self(void); bool8 SendBlock(u8, void *, u16); -bool8 sub_8007E9C(u8); -bool8 sub_8007ECC(void); u8 GetBlockReceivedStatus(void); void ResetBlockReceivedFlags(void); void ResetBlockReceivedFlag(u8); -void sub_8007F4C(void); void SetLinkDebugValues(u32, u32); -u8 sub_8008198(void); -void sub_80081C8(u8); -u8 sub_800820C(void); -u8 sub_8008218(void); -void sub_800826C(void); -void sub_80082EC(void); u8 GetLinkPlayerCount_2(void); bool8 IsLinkMaster(void); -void sub_800832C(void); -void sub_8008480(void); -void sub_80084A4(void); void CB2_LinkError(void); u8 GetSioMultiSI(void); bool8 IsLinkConnectionEstablished(void); @@ -191,4 +178,9 @@ void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); +void sub_800E0E8(void); +bool8 sub_800A520(void); +bool8 sub_8010500(void); +void sub_800DFB4(u8, u8); + #endif // GUARD_LINK_H diff --git a/include/load_save.h b/include/load_save.h index 20848e1a79..1f406bbad1 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -19,5 +19,6 @@ void LoadSerializedGame(void); void LoadPlayerBag(void); void SavePlayerBag(void); void SetSaveBlocksPointers(u16); +void MoveSaveBlocks_ResetHeap(void); #endif // GUARD_LOAD_SAVE_H diff --git a/include/pokemon.h b/include/pokemon.h index 20e904f39d..5ebb9afb17 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -632,6 +632,7 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); s32 sub_806D864(u16 a1); bool16 sub_806D82C(u8 id); u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); +void sub_8068AA4(void); // sets stats for deoxys #include "sprite.h" diff --git a/include/recorded_battle.h b/include/recorded_battle.h index d19a2b7131..407d0caf7b 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -1,6 +1,11 @@ #ifndef GUARD_RECORDED_BATTLE_H #define GUARD_RECORDED_BATTLE_H +extern u32 gRecordedBattleRngSeed; + +void sub_8185F84(void); +void sub_8184E58(void); void RecordedBattle_SetBankAction(u8 bank, u8 action); +void sub_8185F90(u16 arg0); #endif // GUARD_RECORDED_BATTLE_H diff --git a/include/unknown_task.h b/include/unknown_task.h index f59ca9ac3c..7457451a88 100644 --- a/include/unknown_task.h +++ b/include/unknown_task.h @@ -2,10 +2,20 @@ #define GUARD_unknown_task_H // Exported type declarations +struct UnknownTaskStruct +{ + volatile void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + +extern struct UnknownTaskStruct gUnknown_0831AC70; // Exported RAM declarations // Exported ROM declarations void remove_some_task(void); +void sub_80BA038(struct UnknownTaskStruct arg0); -#endif //GUARD_unknown_task_H +#endif // GUARD_unknown_task_H diff --git a/ld_script.txt b/ld_script.txt index c2f8af5958..ac335b17c6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -57,6 +57,7 @@ SECTIONS { asm/rom3.o(.text); src/decompress.o(.text); asm/battle_1.o(.text); + src/battle_2.o(.text); asm/battle_2.o(.text); src/battle_3.o(.text); src/battle_script_commands.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c new file mode 100644 index 0000000000..8448273265 --- /dev/null +++ b/src/battle_2.c @@ -0,0 +1,1343 @@ +#include "global.h" +#include "battle.h" +#include "recorded_battle.h" +#include "main.h" +#include "load_save.h" +#include "gpu_regs.h" +#include "unknown_task.h" +#include "battle_setup.h" +#include "pokemon.h" +#include "palette.h" +#include "task.h" +#include "event_data.h" +#include "species.h" +#include "berry.h" +#include "text.h" +#include "items.h" +#include "hold_effects.h" +#include "link.h" +#include "bg.h" +#include "dma3.h" +#include "string_util.h" +#include "malloc.h" + +struct UnknownStruct6 +{ + u16 unk0[0xA0]; + u8 fillerA0[0x640]; + u16 unk780[0xA0]; +}; + +struct UnknownPokemonStruct2 +{ + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0F*/ u8 level; + /*0x10*/ u16 hp; + /*0x12*/ u16 maxhp; + /*0x14*/ u32 status; + /*0x18*/ u32 personality; + /*0x1C*/ u8 gender; + /*0x1D*/ u8 language; +}; + +extern u32 gBattleTypeFlags; +extern u8 gBattleCommunication[]; +extern u8 gBattleTerrain; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u16 gPartnerTrainerId; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; +extern u16 gTrainerBattleOpponent_A; +extern u16 gTrainerBattleOpponent_B; +extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; +extern void (*gPreBattleCallback1)(void); +extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for? +extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for? + +extern struct UnknownStruct6 gUnknown_02038C28; // todo: identify & document + +extern void HandleLinkBattleSetup(void); // rom_3 +extern void SetUpBattleVarsAndBirchZigzagoon(void); // rom_3 +extern void sub_8032768(void); // rom_3 +extern void dp12_8087EA4(void); +extern void c2_berry_program_update_menu(void); +extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower +extern void sub_8166188(void); // battle tower, sets link battle mons level but why? +extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language +extern void sub_81DB4DC(u8* dst, u8 arg2); // +extern void sub_81B9150(void); +extern void sub_800ADF8(void); +extern void sub_800AC34(void); + +// this file's functions +static void CB2_InitBattleInternal(void); +static void CB2_PreInitMultiBattle(void); +static void CB2_PreInitIngamePlayerPartnerBattle(void); +static void CB2_HandleStartMultiPartnerBattle(void); +static void CB2_HandleStartMultiBattle(void); +static void CB2_HandleStartBattle(void); +void shedinja_something(struct Pokemon *mon); +void CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer); +void BattleMainCB1(void); + +void CB2_InitBattle(void) +{ + MoveSaveBlocks_ResetHeap(); + AllocateBattleResrouces(); + AllocateBattleSpritesData(); + AllocateMonSpritesGfx(); + sub_8185F84(); + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + { + CB2_InitBattleInternal(); + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)) + { + HandleLinkBattleSetup(); + SetMainCallback2(CB2_PreInitMultiBattle); + } + else + { + SetMainCallback2(CB2_PreInitIngamePlayerPartnerBattle); + } + gBattleCommunication[MULTIUSE_STATE] = 0; + } + else + { + CB2_InitBattleInternal(); + } +} + +static void CB2_InitBattleInternal(void) +{ + s32 i; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, 240); + SetGpuReg(REG_OFFSET_WIN0V, 0x5051); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + + gBattle_WIN0H = 240; + + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != STEVEN_PARTNER_ID) + { + gBattle_WIN0V = 159; + gBattle_WIN1H = 240; + gBattle_WIN1V = 32; + } + else + { + gBattle_WIN0V = 0x5051; + dp12_8087EA4(); + + for (i = 0; i < 80; i++) + { + gUnknown_02038C28.unk0[i] = 0xF0; + gUnknown_02038C28.unk780[i] = 0xF0; + } + for (i = 80; i < 160; i++) + { + #ifndef NONMATCHING + asm(""::"r"(i)); // needed to match + #endif // NONMATCHING + + gUnknown_02038C28.unk0[i] = 0xFF10; + gUnknown_02038C28.unk780[i] = 0xFF10; + } + + sub_80BA038(gUnknown_0831AC70); + } + + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + + gBattleTerrain = BattleSetup_GetTerrainId(); + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + gBattleTerrain = BATTLE_TERRAIN_INSIDE; + + c2_berry_program_update_menu(); + LoadBattleTextboxAndBackground(); + ResetSpriteData(); + ResetTasks(); + LoadBattleEntryBackground(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(VBlankCB_Battle); + SetUpBattleVarsAndBirchZigzagoon(); + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + SetMainCallback2(CB2_HandleStartMultiPartnerBattle); + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + SetMainCallback2(CB2_HandleStartMultiPartnerBattle); + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + SetMainCallback2(CB2_HandleStartMultiBattle); + else + SetMainCallback2(CB2_HandleStartBattle); + + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))) + { + CreateNPCTrainerParty(&gEnemyParty[0], gTrainerBattleOpponent_A, TRUE); + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + CreateNPCTrainerParty(&gEnemyParty[3], gTrainerBattleOpponent_B, FALSE); + SetWildMonHeldItem(); + } + + gMain.inBattle = TRUE; + gSaveBlock2Ptr->field_CA9_b = 0; + + for (i = 0; i < 6; i++) + AdjustFriendship(&gPlayerParty[i], 3); + + gBattleCommunication[MULTIUSE_STATE] = 0; +} + +static void sub_8036A5C(void) +{ + u16 r6 = 0; + u16 species = 0; + u16 hp = 0; + u32 status = 0; + s32 i; + + for (i = 0; i < 6; i++) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r6 |= 1 << i * 2; + + if (species == SPECIES_NONE) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r6 |= 2 << i * 2; + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp == 0) + r6 |= 3 << i * 2; + } + + gBattleStruct->field_182 = r6; + *(&gBattleStruct->field_183) = r6 >> 8; + gBattleStruct->field_183 |= FlagGet(SYS_FRONTIER_PASS) << 7; +} + +static void SetPlayerBerryDataInBattleStruct(void) +{ + s32 i; + struct BattleStruct *battleStruct = gBattleStruct; + struct BattleEnigmaBerry *battleBerry = &battleStruct->battleEnigmaBerry; + + if (IsEnigmaBerryValid() == TRUE) + { + for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + battleBerry->name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; + battleBerry->name[i] = EOS; + + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) + battleBerry->itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; + + battleBerry->holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + battleBerry->holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + } + else + { + const struct Berry* berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); + + for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + battleBerry->name[i] = berryData->name[i]; + battleBerry->name[i] = EOS; + + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) + battleBerry->itemEffect[i] = 0; + + battleBerry->holdEffect = HOLD_EFFECT_NONE; + battleBerry->holdEffectParam = 0; + } +} + +static void SetAllPlayersBerryData(void) +{ + s32 i; + s32 j; + + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + if (IsEnigmaBerryValid() == TRUE) + { + for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + { + gEnigmaBerries[0].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; + gEnigmaBerries[2].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; + } + gEnigmaBerries[0].name[i] = EOS; + gEnigmaBerries[2].name[i] = EOS; + + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) + { + gEnigmaBerries[0].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; + gEnigmaBerries[2].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; + } + + gEnigmaBerries[0].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + gEnigmaBerries[2].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + gEnigmaBerries[0].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + gEnigmaBerries[2].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + } + else + { + const struct Berry* berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); + + for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + { + gEnigmaBerries[0].name[i] = berryData->name[i]; + gEnigmaBerries[2].name[i] = berryData->name[i]; + } + gEnigmaBerries[0].name[i] = EOS; + gEnigmaBerries[2].name[i] = EOS; + + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) + { + gEnigmaBerries[0].itemEffect[i] = 0; + gEnigmaBerries[2].itemEffect[i] = 0; + } + + gEnigmaBerries[0].holdEffect = 0; + gEnigmaBerries[2].holdEffect = 0; + gEnigmaBerries[0].holdEffectParam = 0; + gEnigmaBerries[2].holdEffectParam = 0; + } + } + else + { + s32 numPlayers; + struct BattleEnigmaBerry *src; + u8 r4; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + numPlayers = 2; + else + numPlayers = 4; + + for (i = 0; i < numPlayers; i++) + { + src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); + r4 = gLinkPlayers[i].lp_field_18; + + for (j = 0; j < BERRY_NAME_COUNT - 1; j++) + gEnigmaBerries[r4].name[j] = src->name[j]; + gEnigmaBerries[r4].name[j] = EOS; + + for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; j++) + gEnigmaBerries[r4].itemEffect[j] = src->itemEffect[j]; + + gEnigmaBerries[r4].holdEffect = src->holdEffect; + gEnigmaBerries[r4].holdEffectParam = src->holdEffectParam; + } + } + else + { + for (i = 0; i < 2; i++) + { + src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); + + for (j = 0; j < BERRY_NAME_COUNT - 1; j++) + { + gEnigmaBerries[i].name[j] = src->name[j]; + gEnigmaBerries[i + 2].name[j] = src->name[j]; + } + gEnigmaBerries[i].name[j] = EOS; + gEnigmaBerries[i + 2].name[j] = EOS; + + for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; j++) + { + gEnigmaBerries[i].itemEffect[j] = src->itemEffect[j]; + gEnigmaBerries[i + 2].itemEffect[j] = src->itemEffect[j]; + } + + gEnigmaBerries[i].holdEffect = src->holdEffect; + gEnigmaBerries[i + 2].holdEffect = src->holdEffect; + gEnigmaBerries[i].holdEffectParam = src->holdEffectParam; + gEnigmaBerries[i + 2].holdEffectParam = src->holdEffectParam; + } + } + } +} + +static void sub_8036EB8(u8 arg0, u8 arg1) +{ + u8 var = 0; + + if (gBlockRecvBuffer[0][0] == 256) + { + if (arg1 == 0) + gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER; + else + gBattleTypeFlags |= BATTLE_TYPE_TRAINER; + var++; + } + + if (var == 0) + { + s32 i; + + for (i = 0; i < arg0; i++) + { + if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0]) + break; + } + + if (i == arg0) + { + if (arg1 == 0) + gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER; + else + gBattleTypeFlags |= BATTLE_TYPE_TRAINER; + var++; + } + + if (var == 0) + { + for (i = 0; i < arg0; i++) + { + if (gBlockRecvBuffer[i][0] == 0x300) + { + if (i != arg1 && i < arg1) + break; + } + if (gBlockRecvBuffer[i][0] > 0x300 && i != arg1) + break; + } + + if (i == arg0) + gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER; + else + gBattleTypeFlags |= BATTLE_TYPE_TRAINER; + } + } +} + +static void CB2_HandleStartBattle(void) +{ + u8 playerMultiplayerId; + u8 enemyMultiplayerId; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + playerMultiplayerId = GetMultiplayerId(); + gBattleScripting.multiplayerId = playerMultiplayerId; + enemyMultiplayerId = playerMultiplayerId ^ BIT_SIDE; + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + sub_805EF14(); + gBattleCommunication[MULTIUSE_STATE] = 1; + } + if (gLinkVSyncDisabled) + sub_800E0E8(); + break; + case 1: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gReceivedRemoteLinkPlayers != 0) + { + if (sub_800A520()) + { + *(&gBattleStruct->field_180) = 0; + *(&gBattleStruct->field_181) = 3; + sub_8036A5C(); + SetPlayerBerryDataInBattleStruct(); + + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + { + gLinkPlayers[0].lp_field_18 = 0; + gLinkPlayers[1].lp_field_18 = 1; + } + + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32); + gBattleCommunication[MULTIUSE_STATE] = 2; + } + if (gLinkVSyncDisabled) + sub_800DFB4(0, 0); + } + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + gBattleTypeFlags |= BATTLE_TYPE_WILD; + gBattleCommunication[MULTIUSE_STATE] = 15; + SetAllPlayersBerryData(); + } + break; + case 2: + if ((GetBlockReceivedStatus() & 3) == 3) + { + u8 taskId; + + ResetBlockReceivedFlags(); + sub_8036EB8(2, playerMultiplayerId); + SetAllPlayersBerryData(); + taskId = CreateTask(task00_0800F6FC, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = gBattleStruct->field_182 | (gBattleStruct->field_183 << 8); + gTasks[taskId].data[4] = gBlockRecvBuffer[enemyMultiplayerId][1]; + sub_8185F90(gBlockRecvBuffer[playerMultiplayerId][1]); + sub_8185F90(gBlockRecvBuffer[enemyMultiplayerId][1]); + sub_8068AA4(); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 3: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 4: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 7: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 8: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 11: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 12: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty + 4, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + shedinja_something(&gEnemyParty[0]); + shedinja_something(&gEnemyParty[1]); + shedinja_something(&gEnemyParty[2]); + shedinja_something(&gEnemyParty[3]); + shedinja_something(&gEnemyParty[4]); + shedinja_something(&gEnemyParty[5]); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 15: + sub_8032768(); + sub_8184E58(); + gBattleCommunication[SPRITES_INIT_STATE1] = 0; + gBattleCommunication[SPRITES_INIT_STATE2] = 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + s32 i; + + for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == 3; i++); + + if (i == 2) + gBattleCommunication[MULTIUSE_STATE] = 16; + else + gBattleCommunication[MULTIUSE_STATE] = 18; + } + else + { + gBattleCommunication[MULTIUSE_STATE] = 18; + } + break; + case 16: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed)); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 17: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) + memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed)); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 18: + if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2])) + { + gPreBattleCallback1 = gMain.callback1; + gMain.callback1 = BattleMainCB1; + SetMainCallback2(BattleMainCB2); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTypeFlags |= BATTLE_TYPE_20; + } + } + break; + case 5: + case 9: + case 13: + gBattleCommunication[MULTIUSE_STATE]++; + gBattleCommunication[1] = 1; + case 6: + case 10: + case 14: + if (--gBattleCommunication[1] == 0) + gBattleCommunication[MULTIUSE_STATE]++; + break; + } +} + +static void CB2_HandleStartMultiPartnerBattle(void) +{ + u8 playerMultiplayerId; + u8 enemyMultiplayerId; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + playerMultiplayerId = GetMultiplayerId(); + gBattleScripting.multiplayerId = playerMultiplayerId; + enemyMultiplayerId = playerMultiplayerId ^ BIT_SIDE; + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + sub_805EF14(); + gBattleCommunication[MULTIUSE_STATE] = 1; + } + if (gLinkVSyncDisabled) + sub_800E0E8(); + // fall through + case 1: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gReceivedRemoteLinkPlayers != 0) + { + u8 language; + + gLinkPlayers[0].lp_field_18 = 0; + gLinkPlayers[1].lp_field_18 = 2; + gLinkPlayers[2].lp_field_18 = 1; + gLinkPlayers[3].lp_field_18 = 3; + GetFrontierTrainerName(gLinkPlayers[2].name, gTrainerBattleOpponent_A); + GetFrontierTrainerName(gLinkPlayers[3].name, gTrainerBattleOpponent_B); + sub_8165B88(&language, gTrainerBattleOpponent_A); + gLinkPlayers[2].language = language; + sub_8165B88(&language, gTrainerBattleOpponent_B); + gLinkPlayers[3].language = language; + + if (sub_800A520()) + { + *(&gBattleStruct->field_180) = 0; + *(&gBattleStruct->field_181) = 3; + sub_8036A5C(); + SetPlayerBerryDataInBattleStruct(); + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32); + gBattleCommunication[MULTIUSE_STATE] = 2; + } + + if (gLinkVSyncDisabled) + sub_800DFB4(0, 0); + } + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + gBattleTypeFlags |= BATTLE_TYPE_WILD; + gBattleCommunication[MULTIUSE_STATE] = 13; + SetAllPlayersBerryData(); + } + break; + case 2: + if ((GetBlockReceivedStatus() & 3) == 3) + { + u8 taskId; + + ResetBlockReceivedFlags(); + sub_8036EB8(2, playerMultiplayerId); + SetAllPlayersBerryData(); + taskId = CreateTask(task00_0800F6FC, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = 0x145; + gTasks[taskId].data[4] = 0x145; + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 3: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 4: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (gLinkPlayers[playerMultiplayerId].lp_field_18 != 0) + { + memcpy(gPlayerParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + memcpy(gPlayerParty + 3, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2); + } + else + { + memcpy(gPlayerParty, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2); + memcpy(gPlayerParty + 3, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 5: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon)); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 6: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (gLinkPlayers[playerMultiplayerId].lp_field_18 != 0) + { + memcpy(gPlayerParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon)); + memcpy(gPlayerParty + 5, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon)); + } + else + { + memcpy(gPlayerParty + 2, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon)); + memcpy(gPlayerParty + 5, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon)); + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 7: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gEnemyParty, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 8: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() != 0) + { + memcpy(gEnemyParty, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2); + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 9: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gEnemyParty + 2, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 10: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() != 0) + { + memcpy(gEnemyParty + 2, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2); + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 11: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gEnemyParty + 4, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 12: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() != 0) + memcpy(gEnemyParty + 4, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2); + shedinja_something(&gPlayerParty[0]); + shedinja_something(&gPlayerParty[1]); + shedinja_something(&gPlayerParty[2]); + shedinja_something(&gPlayerParty[3]); + shedinja_something(&gPlayerParty[4]); + shedinja_something(&gPlayerParty[5]); + shedinja_something(&gEnemyParty[0]); + shedinja_something(&gEnemyParty[1]); + shedinja_something(&gEnemyParty[2]); + shedinja_something(&gEnemyParty[3]); + shedinja_something(&gEnemyParty[4]); + shedinja_something(&gEnemyParty[5]); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 13: + sub_8032768(); + sub_8184E58(); + gBattleCommunication[SPRITES_INIT_STATE1] = 0; + gBattleCommunication[SPRITES_INIT_STATE2] = 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleCommunication[MULTIUSE_STATE] = 14; + } + else + { + gBattleCommunication[MULTIUSE_STATE] = 16; + } + break; + case 14: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed)); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 15: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) + memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed)); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 16: + if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2])) + { + sub_8166188(); + gPreBattleCallback1 = gMain.callback1; + gMain.callback1 = BattleMainCB1; + SetMainCallback2(BattleMainCB2); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTypeFlags |= BATTLE_TYPE_20; + } + } + break; + } +} + +static void sub_80379F8(u8 arrayIdPlus) +{ + s32 i; + + for (i = 0; i < 3; i++) + { + gUnknown_02022FF8[i].species = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_SPECIES); + gUnknown_02022FF8[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM); + GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gUnknown_02022FF8[i].nickname); + gUnknown_02022FF8[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL); + gUnknown_02022FF8[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP); + gUnknown_02022FF8[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP); + gUnknown_02022FF8[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS); + gUnknown_02022FF8[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY); + gUnknown_02022FF8[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]); + StripExtCtrlCodes(gUnknown_02022FF8[i].nickname); + if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) + sub_81DB4DC(gUnknown_02022FF8[i].nickname, 0); + } + memcpy(gUnknown_02023058, gUnknown_02022FF8, sizeof(gUnknown_02022FF8)); +} + +static void CB2_PreInitMultiBattle(void) +{ + s32 i; + u8 playerMultiplierId; + s32 numPlayers = 4; + u8 r4 = 0xF; + u32* savedBattleTypeFlags; + void (**savedCallback)(void); + + if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + numPlayers = 2; + r4 = 3; + } + + playerMultiplierId = GetMultiplayerId(); + gBattleScripting.multiplayerId = playerMultiplierId; + savedCallback = &gBattleStruct->savedCallback; + savedBattleTypeFlags = &gBattleStruct->savedBattleTypeFlags; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (gReceivedRemoteLinkPlayers != 0 && sub_800A520()) + { + gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct2) * 3); + sub_80379F8(0); + SendBlock(bitmask_all_link_players_but_self(), gUnknown_02023058, sizeof(struct UnknownPokemonStruct2) * 3); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 1: + if ((GetBlockReceivedStatus() & r4) == r4) + { + ResetBlockReceivedFlags(); + for (i = 0; i < numPlayers; i++) + { + if (i == playerMultiplierId) + continue; + + if (numPlayers == 4) + { + if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerMultiplierId].lp_field_18 & 1)) + || (gLinkPlayers[i].lp_field_18 & 1 && gLinkPlayers[playerMultiplierId].lp_field_18 & 1)) + { + memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct2) * 3); + } + } + else + { + memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct2) * 3); + } + } + gBattleCommunication[MULTIUSE_STATE]++; + *savedCallback = gMain.savedCallback; + *savedBattleTypeFlags = gBattleTypeFlags; + gMain.savedCallback = CB2_PreInitMultiBattle; + sub_81B9150(); + } + break; + case 2: + if (sub_800A520() && !gPaletteFade.active) + { + gBattleCommunication[MULTIUSE_STATE]++; + if (gLinkVSyncDisabled) + sub_800ADF8(); + else + sub_800AC34(); + } + break; + case 3: + if (gLinkVSyncDisabled) + { + if (sub_8010500()) + { + gBattleTypeFlags = *savedBattleTypeFlags; + gMain.savedCallback = *savedCallback; + SetMainCallback2(CB2_InitBattleInternal); + Free(gUnknown_02023058); + gUnknown_02023058 = NULL; + } + } + else if (gReceivedRemoteLinkPlayers == 0) + { + gBattleTypeFlags = *savedBattleTypeFlags; + gMain.savedCallback = *savedCallback; + SetMainCallback2(CB2_InitBattleInternal); + Free(gUnknown_02023058); + gUnknown_02023058 = NULL; + } + break; + } +} + +static void CB2_PreInitIngamePlayerPartnerBattle(void) +{ + u32* savedBattleTypeFlags; + void (**savedCallback)(void); + + savedCallback = &gBattleStruct->savedCallback; + savedBattleTypeFlags = &gBattleStruct->savedBattleTypeFlags; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct2) * 3); + sub_80379F8(3); + gBattleCommunication[MULTIUSE_STATE]++; + *savedCallback = gMain.savedCallback; + *savedBattleTypeFlags = gBattleTypeFlags; + gMain.savedCallback = CB2_PreInitIngamePlayerPartnerBattle; + sub_81B9150(); + break; + case 1: + if (!gPaletteFade.active) + { + gBattleCommunication[MULTIUSE_STATE] = 2; + gBattleTypeFlags = *savedBattleTypeFlags; + gMain.savedCallback = *savedCallback; + SetMainCallback2(CB2_InitBattleInternal); + Free(gUnknown_02023058); + gUnknown_02023058 = NULL; + } + break; + } +} + +static void CB2_HandleStartMultiBattle(void) +{ + u8 playerMultiplayerId; + s32 id; + u8 var; + + playerMultiplayerId = GetMultiplayerId(); + gBattleScripting.multiplayerId = playerMultiplayerId; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + sub_805EF14(); + gBattleCommunication[MULTIUSE_STATE] = 1; + } + if (gLinkVSyncDisabled) + sub_800E0E8(); + break; + case 1: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gReceivedRemoteLinkPlayers != 0) + { + if (sub_800A520()) + { + *(&gBattleStruct->field_180) = 0; + *(&gBattleStruct->field_181) = 3; + sub_8036A5C(); + SetPlayerBerryDataInBattleStruct(); + + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32); + gBattleCommunication[MULTIUSE_STATE]++; + } + if (gLinkVSyncDisabled) + sub_800DFB4(0, 0); + } + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + gBattleTypeFlags |= BATTLE_TYPE_WILD; + gBattleCommunication[MULTIUSE_STATE] = 7; + SetAllPlayersBerryData(); + } + break; + case 2: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + sub_8036EB8(4, playerMultiplayerId); + SetAllPlayersBerryData(); + sub_8068AA4(); + var = CreateTask(task00_0800F6FC, 0); + gTasks[var].data[1] = 0x10E; + gTasks[var].data[2] = 0x5A; + gTasks[var].data[5] = 0; + gTasks[var].data[3] = 0; + gTasks[var].data[4] = 0; + + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + sub_8185F90(gBlockRecvBuffer[id][1]); + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + gTasks[var].data[3] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 1: + gTasks[var].data[4] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 2: + gTasks[var].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + case 3: + gTasks[var].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + } + } + ZeroEnemyPartyMons(); + gBattleCommunication[MULTIUSE_STATE]++; + } + else + break; + // fall through + case 3: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 4: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + if (id == playerMultiplayerId) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + else + { + if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerMultiplayerId].lp_field_18 & 1)) + || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerMultiplayerId].lp_field_18 & 1))) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + else + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + } + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 5: + if (sub_800A520()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon)); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 6: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + if (id == playerMultiplayerId) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerMultiplayerId].lp_field_18 & 1)) + || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerMultiplayerId].lp_field_18 & 1))) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + } + } + shedinja_something(&gPlayerParty[0]); + shedinja_something(&gPlayerParty[1]); + shedinja_something(&gPlayerParty[2]); + shedinja_something(&gPlayerParty[3]); + shedinja_something(&gPlayerParty[4]); + shedinja_something(&gPlayerParty[5]); + + shedinja_something(&gEnemyParty[0]); + shedinja_something(&gEnemyParty[1]); + shedinja_something(&gEnemyParty[2]); + shedinja_something(&gEnemyParty[3]); + shedinja_something(&gEnemyParty[4]); + shedinja_something(&gEnemyParty[5]); + + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 7: + sub_8032768(); + sub_8184E58(); + gBattleCommunication[SPRITES_INIT_STATE1] = 0; + gBattleCommunication[SPRITES_INIT_STATE2] = 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + for (id = 0; id < 4 && (gLinkPlayers[id].version & 0xFF) == 3; id++); + + if (id == 4) + gBattleCommunication[MULTIUSE_STATE] = 8; + else + gBattleCommunication[MULTIUSE_STATE] = 10; + } + else + { + gBattleCommunication[MULTIUSE_STATE] = 10; + } + break; + case 8: + if (sub_800A520()) + { + u32* ptr = (u32*)(&gBattleStruct->field_180); + ptr[0] = gBattleTypeFlags; + ptr[1] = gRecordedBattleRngSeed; // UB: overwrites berry data + SendBlock(bitmask_all_link_players_but_self(), ptr, 8); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 9: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (var = 0; var < 4; var++) + { + u32 blockValue = gBlockRecvBuffer[var][0]; + if (blockValue & 4) + { + memcpy(&gRecordedBattleRngSeed, &gBlockRecvBuffer[var][2], sizeof(gRecordedBattleRngSeed)); + break; + } + } + + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 10: + if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2])) + { + gPreBattleCallback1 = gMain.callback1; + gMain.callback1 = BattleMainCB1; + SetMainCallback2(BattleMainCB2); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTrainerBattleOpponent_A = TRAINER_OPPONENT_800; + gBattleTypeFlags |= BATTLE_TYPE_20; + } + } + break; + } +} + diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e0cb3e9415..3b719b8ed7 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -146,7 +146,6 @@ extern u8 sav1_map_get_light_level(void); extern u8 sub_813B21C(void); extern u16 get_unknown_box_id(void); extern void c2_berry_program_update_menu(void); -extern void sub_8035AA4(void); // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -11218,7 +11217,7 @@ static void atkF2_display_dex_info(void) break; case 3: c2_berry_program_update_menu(); - sub_8035AA4(); + LoadBattleTextboxAndBackground(); gBattle_BG3_X = 0x100; gBattleCommunication[0]++; break; diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 6d14e92f0c..c5cee63579 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -64,7 +64,7 @@ extern void sub_806A068(u16, u8); extern void fade_screen(u8, u8); extern void overworld_free_bg_tilemaps(void); extern void sub_80AF168(void); -extern void init_uns_table_pokemon_copy(void); +extern void AllocateMonSpritesGfx(void); extern void sub_805F094(void); extern void remove_some_task(void); extern void reset_temp_tile_data_buffers(void); @@ -439,7 +439,7 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], - gBattleSpritesGfx->sprites[(a0 * 2) + 1], + gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid); LoadCompressedObjectPalette(sub_806E794(mon)); *speciesLoc = species; @@ -488,7 +488,7 @@ static void CB2_EggHatch_0(void) SetGpuReg(REG_OFFSET_DISPCNT, 0); sEggHatchData = Alloc(sizeof(struct EggHatchData)); - init_uns_table_pokemon_copy(); + AllocateMonSpritesGfx(); sEggHatchData->eggPartyID = gSpecialVar_0x8004; sEggHatchData->eggShardVelocityID = 0; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index c5c36c793d..8a16954a7c 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -152,8 +152,8 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality) void sub_806A068(u16 species, u8 bankIdentity) { - if (gBattleSpritesGfx != NULL) - gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity]; + if (gMonSpritesGfxPtr != NULL) + gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity]; else if (gUnknown_020249B4[0]) gUnknown_0202499C = gUnknown_020249B4[0]->templates[bankIdentity]; else if (gUnknown_020249B4[1]) @@ -180,8 +180,8 @@ void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity) } else { - if (gBattleSpritesGfx != NULL) - gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity]; + if (gMonSpritesGfxPtr != NULL) + gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity]; else gUnknown_0202499C = gUnknown_08329D98[bankIdentity]; gUnknown_0202499C.anims = gUnknown_0830536C[trainerSpriteId]; @@ -190,8 +190,8 @@ void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity) void sub_806A1C0(u16 arg0, u8 bankIdentity) { - if (gBattleSpritesGfx != NULL) - gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity]; + if (gMonSpritesGfxPtr != NULL) + gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity]; else gUnknown_0202499C = gUnknown_08329D98[bankIdentity]; gUnknown_0202499C.paletteTag = arg0; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index d44c0cb2fd..e4934306cc 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -486,8 +486,8 @@ u16 SpeciesToCryId(u16 species) void sub_806D544(u16 species, u32 personality, u8 *dest) { if (species == SPECIES_SPINDA - && dest != gBattleSpritesGfx->sprites[0] - && dest != gBattleSpritesGfx->sprites[2]) + && dest != gMonSpritesGfxPtr->sprites[0] + && dest != gMonSpritesGfxPtr->sprites[2]) { int i; for (i = 0; i < 4; i++) diff --git a/sym_common.txt b/sym_common.txt index 834f239185..7ba414cab2 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -117,7 +117,7 @@ gUnknown_03003110: @ 3003110 gUnknown_03003120: @ 3003120 .space 0x4 -gUnknown_03003124: @ 3003124 +gReceivedRemoteLinkPlayers: @ 3003124 .space 0xC gUnknown_03003130: @ 3003130 @@ -203,7 +203,7 @@ gUnknown_03005CDE: @ 3005CDE .include "rtc.o" -gUnknown_03005D00: @ 3005D00 +gPreBattleCallback1: @ 3005D00 .space 0x4 gBattleMainFunc: @ 3005D04 diff --git a/sym_ewram.txt b/sym_ewram.txt index e49b941605..ce3b4f2502 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -31,11 +31,8 @@ gUnknown_020223BD: @ 20223BD gUnknown_020223C0: @ 20223C0 .space 0x4 -gUnknown_020223C4: @ 20223C4 - .space 0x4 - -gUnknown_020223C8: @ 20223C8 - .space 0x4FC +gBlockRecvBuffer: @ 20223C4 + .space 0x500 gUnknown_020228C4: @ 20228C4 gBlockSendBuffer .space 0x100 @@ -205,10 +202,10 @@ gUnknown_02022D10: @ 2022D10 gUnknown_02022E10: @ 2022E10 .space 0x4 -gUnknown_02022E14: @ 2022E14 +gBattle_BG0_X: @ 2022E14 .space 0x2 -gUnknown_02022E16: @ 2022E16 +gBattle_BG0_Y: @ 2022E16 .space 0x2 gBattle_BG1_X: @ 2022E18 @@ -226,19 +223,19 @@ gBattle_BG2_Y: @ 2022E1E gBattle_BG3_X: @ 2022E20 .space 0x2 -gUnknown_02022E22: @ 2022E22 +gBattle_BG3_Y: @ 2022E22 .space 0x2 -gUnknown_02022E24: @ 2022E24 +gBattle_WIN0H: @ 2022E24 .space 0x2 -gUnknown_02022E26: @ 2022E26 +gBattle_WIN0V: @ 2022E26 .space 0x2 -gUnknown_02022E28: @ 2022E28 +gBattle_WIN1H: @ 2022E28 .space 0x2 -gUnknown_02022E2A: @ 2022E2A +gBattle_WIN1V: @ 2022E2A .space 0x2 gDisplayedStringBattle: @ 2022E2C @@ -526,7 +523,7 @@ gUnknown_020244CC: @ 20244CC gUnknown_020244D0: @ 20244D0 .space 0x4 -gBattleSpritesGfx: @ 20244D4 +gMonSpritesGfxPtr: @ 20244D4 .space 0x4 gUnknown_020244D8: @ 20244D8 @@ -1671,7 +1668,7 @@ gUnknown_0203BD26: @ 203BD26 gUnknown_0203BD28: @ 203BD28 .space 0x4 -gUnknown_0203BD2C: @ 203BD2C +gRecordedBattleRngSeed: @ 203BD2C .space 0x4 gUnknown_0203BD30: @ 203BD30 From 20ed9ad0ac92cddcbfe66ccc9c2ae3cb1000ed71 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 21:19:29 -0400 Subject: [PATCH 066/182] Decompile asm/tileset.s into src/palette.c --- asm/tileset.s | 1785 --------------------------------------------- data/graphics.s | 14 +- data/palette.s | 18 - data/start_menu.s | 2 +- data/tileset.s | 3 + ld_script.txt | 3 +- src/palette.c | 880 +++++++++++++++++++++- src/scrcmd.c | 15 + sym_bss.txt | 28 +- sym_ewram.txt | 3 - 10 files changed, 891 insertions(+), 1860 deletions(-) delete mode 100644 data/palette.s create mode 100644 src/scrcmd.c diff --git a/asm/tileset.s b/asm/tileset.s index 0605c76219..2428f2984b 100644 --- a/asm/tileset.s +++ b/asm/tileset.s @@ -5,1789 +5,4 @@ .text - thumb_func_start sub_80A0954 -@ void sub_80A0954() -sub_80A0954: @ 80A0954 - push {lr} - sub sp, 0x4 - ldr r1, =gUnknown_03000F34 - movs r0, 0 - strb r0, [r1] - movs r0, 0 - str r0, [sp] - ldr r1, =gUnknown_02037624 - ldr r2, =0x0500003c - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0954 - - thumb_func_start sub_80A0980 -sub_80A0980: @ 80A0980 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r3, =gUnknown_03000F34 - ldrb r0, [r3] - cmp r0, 0x13 - bhi _080A09C0 - ldr r2, =gUnknown_02037624 - adds r1, r0, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - str r4, [r0] - ldrb r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0x4 - adds r0, r1 - str r5, [r0] - ldrb r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x8] - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] -_080A09C0: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0980 - - thumb_func_start sub_80A09D0 -sub_80A09D0: @ 80A09D0 - push {r4-r6,lr} - movs r3, 0 - ldr r4, =gUnknown_03000F34 - adds r6, r4, 0 - ldrb r0, [r4] - cmp r3, r0 - bge _080A0A02 - ldr r2, =0x040000d4 - ldr r1, =gUnknown_02037624 - movs r5, 0x80 - lsls r5, 24 -_080A09E6: - ldr r0, [r1] - str r0, [r2] - ldr r0, [r1, 0x4] - str r0, [r2, 0x4] - ldrh r0, [r1, 0x8] - lsrs r0, 1 - orrs r0, r5 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r1, 0xC - adds r3, 0x1 - ldrb r0, [r4] - cmp r3, r0 - blt _080A09E6 -_080A0A02: - movs r0, 0 - strb r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A09D0 - - thumb_func_start cur_mapheader_run_tileset_funcs_after_some_cpuset -cur_mapheader_run_tileset_funcs_after_some_cpuset: @ 80A0A18 - push {lr} - bl sub_80A0954 - bl cur_mapheader_run_tileset1_func - bl cur_mapheader_run_tileset2_func - pop {r0} - bx r0 - thumb_func_end cur_mapheader_run_tileset_funcs_after_some_cpuset - - thumb_func_start sub_80A0A2C -sub_80A0A2C: @ 80A0A2C - push {lr} - bl cur_mapheader_run_tileset2_func - pop {r0} - bx r0 - thumb_func_end sub_80A0A2C - - thumb_func_start sub_80A0A38 -sub_80A0A38: @ 80A0A38 - push {r4,lr} - bl sub_80A0954 - ldr r2, =gUnknown_03000F36 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - ldr r1, =gUnknown_03000F38 - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - cmp r0, r1 - bcc _080A0A56 - movs r0, 0 - strh r0, [r2] -_080A0A56: - ldr r4, =gUnknown_03000F3A - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ldr r1, =gUnknown_03000F3C - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - cmp r0, r1 - bcc _080A0A6E - movs r0, 0 - strh r0, [r4] -_080A0A6E: - ldr r0, =gUnknown_03000F40 - ldr r1, [r0] - cmp r1, 0 - beq _080A0A7C - ldrh r0, [r2] - bl _call_via_r1 -_080A0A7C: - ldr r0, =gUnknown_03000F44 - ldr r1, [r0] - cmp r1, 0 - beq _080A0A8A - ldrh r0, [r4] - bl _call_via_r1 -_080A0A8A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0A38 - - thumb_func_start cur_mapheader_run_tileset1_func -cur_mapheader_run_tileset1_func: @ 80A0AA8 - push {lr} - ldr r0, =gUnknown_03000F36 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_03000F38 - strh r1, [r0] - ldr r1, =gUnknown_03000F40 - movs r0, 0 - str r0, [r1] - ldr r0, =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x10] - cmp r0, 0 - beq _080A0ACE - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _080A0ACE - bl _call_via_r0 -_080A0ACE: - pop {r0} - bx r0 - .pool - thumb_func_end cur_mapheader_run_tileset1_func - - thumb_func_start cur_mapheader_run_tileset2_func -cur_mapheader_run_tileset2_func: @ 80A0AE4 - push {lr} - ldr r0, =gUnknown_03000F3A - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_03000F3C - strh r1, [r0] - ldr r1, =gUnknown_03000F44 - movs r0, 0 - str r0, [r1] - ldr r0, =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _080A0B0A - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _080A0B0A - bl _call_via_r0 -_080A0B0A: - pop {r0} - bx r0 - .pool - thumb_func_end cur_mapheader_run_tileset2_func - - thumb_func_start TilesetCb_General -TilesetCb_General: @ 80A0B20 - ldr r1, =gUnknown_03000F36 - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F38 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F40 - ldr r0, =sub_80A0B70 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_General - - thumb_func_start TilesetCb_InsideBuilding -TilesetCb_InsideBuilding: @ 80A0B48 - ldr r1, =gUnknown_03000F36 - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F38 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F40 - ldr r0, =sub_80A0BB4 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_InsideBuilding - - thumb_func_start sub_80A0B70 -sub_80A0B70: @ 80A0B70 - push {r4,r5,lr} - lsls r5, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r5 - lsrs r4, r0, 16 - cmp r4, 0 - bne _080A0B86 - lsrs r0, r5, 20 - bl sub_80A0BCC -_080A0B86: - cmp r4, 0x1 - bne _080A0B90 - lsrs r0, r5, 20 - bl sub_80A0BF4 -_080A0B90: - cmp r4, 0x2 - bne _080A0B9A - lsrs r0, r5, 20 - bl sub_80A0C1C -_080A0B9A: - cmp r4, 0x3 - bne _080A0BA4 - lsrs r0, r5, 20 - bl sub_80A0C44 -_080A0BA4: - cmp r4, 0x4 - bne _080A0BAE - lsrs r0, r5, 20 - bl sub_80A12AC -_080A0BAE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A0B70 - - thumb_func_start sub_80A0BB4 -sub_80A0BB4: @ 80A0BB4 - push {lr} - lsls r1, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - bne _080A0BC8 - lsrs r0, r1, 19 - bl sub_80A1688 -_080A0BC8: - pop {r0} - bx r0 - thumb_func_end sub_80A0BB4 - - thumb_func_start sub_80A0BCC -sub_80A0BCC: @ 80A0BCC - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08510764 - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06003f80 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0BCC - - thumb_func_start sub_80A0BF4 -sub_80A0BF4: @ 80A0BF4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - ands r0, r1 - ldr r1, =gUnknown_08512574 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x06003600 - movs r2, 0xF0 - lsls r2, 2 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0BF4 - - thumb_func_start sub_80A0C1C -sub_80A0C1C: @ 80A0C1C - push {lr} - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - ldr r0, =gUnknown_08512E54 - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06003a00 - movs r2, 0xA0 - lsls r2, 1 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0C1C - - thumb_func_start sub_80A0C44 -sub_80A0C44: @ 80A0C44 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08513174 - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06003e00 - movs r2, 0xC0 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A0C44 - - thumb_func_start TilesetCb_Petalburg -TilesetCb_Petalburg: @ 80A0C6C - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - movs r0, 0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Petalburg - - thumb_func_start TilesetCb_Rustboro -TilesetCb_Rustboro: @ 80A0C94 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A103C - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Rustboro - - thumb_func_start TilesetCb_Dewford -TilesetCb_Dewford: @ 80A0CC0 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A10B8 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Dewford - - thumb_func_start TilesetCb_Slateport -TilesetCb_Slateport: @ 80A0CEC - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A10D0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Slateport - - thumb_func_start TilesetCb_Mauville -TilesetCb_Mauville: @ 80A0D18 - ldr r1, =gUnknown_03000F3A - ldr r0, =gUnknown_03000F36 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A10E8 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Mauville - - thumb_func_start TilesetCb_Lavaridge -TilesetCb_Lavaridge: @ 80A0D48 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A115C - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Lavaridge - - thumb_func_start TilesetCb_Fallarbor -TilesetCb_Fallarbor: @ 80A0D74 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - movs r0, 0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Fallarbor - - thumb_func_start TilesetCb_Fortree -TilesetCb_Fortree: @ 80A0D9C - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - movs r0, 0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Fortree - - thumb_func_start TilesetCb_Lilycove -TilesetCb_Lilycove: @ 80A0DC4 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - movs r0, 0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Lilycove - - thumb_func_start TilesetCb_Mossdeep -TilesetCb_Mossdeep: @ 80A0DEC - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - movs r0, 0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Mossdeep - - thumb_func_start TilesetCb_EverGrande -TilesetCb_EverGrande: @ 80A0E14 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A1188 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_EverGrande - - thumb_func_start TilesetCb_Pacifidlog -TilesetCb_Pacifidlog: @ 80A0E40 - ldr r1, =gUnknown_03000F3A - ldr r0, =gUnknown_03000F36 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A11FC - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Pacifidlog - - thumb_func_start TilesetCb_Sootopolis -TilesetCb_Sootopolis: @ 80A0E70 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A122C - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Sootopolis - - thumb_func_start TilesetCb_BattleFrontierOutsideWest -TilesetCb_BattleFrontierOutsideWest: @ 80A0E9C - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A127C - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_BattleFrontierOutsideWest - - thumb_func_start TilesetCb_BattleFrontierOutsideEast -TilesetCb_BattleFrontierOutsideEast: @ 80A0EC8 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A1294 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_BattleFrontierOutsideEast - - thumb_func_start TilesetCb_Underwater -TilesetCb_Underwater: @ 80A0EF4 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - movs r0, 0x80 - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A1244 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Underwater - - thumb_func_start TilesetCb_SootopolisGym -TilesetCb_SootopolisGym: @ 80A0F18 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - movs r0, 0xF0 - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A15D8 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_SootopolisGym - - thumb_func_start TilesetCb_Cave -TilesetCb_Cave: @ 80A0F3C - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A1260 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_Cave - - thumb_func_start TilesetCb_EliteFour -TilesetCb_EliteFour: @ 80A0F68 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - movs r0, 0x80 - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A15F0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_EliteFour - - thumb_func_start TilesetCb_MauvilleGym -TilesetCb_MauvilleGym: @ 80A0F8C - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A15C0 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_MauvilleGym - - thumb_func_start TilesetCb_BikeShop -TilesetCb_BikeShop: @ 80A0FB8 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A161C - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_BikeShop - - thumb_func_start TilesetCb_BattlePyramid -TilesetCb_BattlePyramid: @ 80A0FE4 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A1634 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_BattlePyramid - - thumb_func_start TilesetCb_BattleDome -TilesetCb_BattleDome: @ 80A1010 - ldr r1, =gUnknown_03000F3A - movs r0, 0 - strh r0, [r1] - ldr r1, =gUnknown_03000F3C - ldr r0, =gUnknown_03000F38 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, =gUnknown_03000F44 - ldr r0, =sub_80A1658 - str r0, [r1] - bx lr - .pool - thumb_func_end TilesetCb_BattleDome - - thumb_func_start sub_80A103C -sub_80A103C: @ 80A103C - push {r4-r6,lr} - lsls r5, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r5 - lsrs r6, r0, 16 - cmp r6, 0 - bne _080A105C - lsrs r4, r5, 19 - adds r0, r4, 0 - movs r1, 0 - bl sub_80A1434 - adds r0, r4, 0 - bl sub_80A1470 -_080A105C: - cmp r6, 0x1 - bne _080A1068 - lsrs r0, r5, 19 - movs r1, 0x1 - bl sub_80A1434 -_080A1068: - cmp r6, 0x2 - bne _080A1074 - lsrs r0, r5, 19 - movs r1, 0x2 - bl sub_80A1434 -_080A1074: - cmp r6, 0x3 - bne _080A1080 - lsrs r0, r5, 19 - movs r1, 0x3 - bl sub_80A1434 -_080A1080: - cmp r6, 0x4 - bne _080A108C - lsrs r0, r5, 19 - movs r1, 0x4 - bl sub_80A1434 -_080A108C: - cmp r6, 0x5 - bne _080A1098 - lsrs r0, r5, 19 - movs r1, 0x5 - bl sub_80A1434 -_080A1098: - cmp r6, 0x6 - bne _080A10A4 - lsrs r0, r5, 19 - movs r1, 0x6 - bl sub_80A1434 -_080A10A4: - cmp r6, 0x7 - bne _080A10B0 - lsrs r0, r5, 19 - movs r1, 0x7 - bl sub_80A1434 -_080A10B0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A103C - - thumb_func_start sub_80A10B8 -sub_80A10B8: @ 80A10B8 - push {lr} - lsls r1, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - bne _080A10CC - lsrs r0, r1, 19 - bl sub_80A1520 -_080A10CC: - pop {r0} - bx r0 - thumb_func_end sub_80A10B8 - - thumb_func_start sub_80A10D0 -sub_80A10D0: @ 80A10D0 - push {lr} - lsls r1, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - bne _080A10E4 - lsrs r0, r1, 20 - bl sub_80A1598 -_080A10E4: - pop {r0} - bx r0 - thumb_func_end sub_80A10D0 - - thumb_func_start sub_80A10E8 -sub_80A10E8: @ 80A10E8 - push {r4,r5,lr} - lsls r4, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r4 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080A1100 - lsrs r0, r4, 19 - movs r1, 0 - bl sub_80A1394 -_080A1100: - cmp r5, 0x1 - bne _080A110C - lsrs r0, r4, 19 - movs r1, 0x1 - bl sub_80A1394 -_080A110C: - cmp r5, 0x2 - bne _080A1118 - lsrs r0, r4, 19 - movs r1, 0x2 - bl sub_80A1394 -_080A1118: - cmp r5, 0x3 - bne _080A1124 - lsrs r0, r4, 19 - movs r1, 0x3 - bl sub_80A1394 -_080A1124: - cmp r5, 0x4 - bne _080A1130 - lsrs r0, r4, 19 - movs r1, 0x4 - bl sub_80A1394 -_080A1130: - cmp r5, 0x5 - bne _080A113C - lsrs r0, r4, 19 - movs r1, 0x5 - bl sub_80A1394 -_080A113C: - cmp r5, 0x6 - bne _080A1148 - lsrs r0, r4, 19 - movs r1, 0x6 - bl sub_80A1394 -_080A1148: - cmp r5, 0x7 - bne _080A1154 - lsrs r0, r4, 19 - movs r1, 0x7 - bl sub_80A1394 -_080A1154: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A10E8 - - thumb_func_start sub_80A115C -sub_80A115C: @ 80A115C - push {r4,r5,lr} - lsls r4, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r4 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080A1176 - lsrs r0, r4, 20 - lsls r0, 24 - lsrs r0, 24 - bl sub_80A12D4 -_080A1176: - cmp r5, 0x1 - bne _080A1180 - lsrs r0, r4, 20 - bl sub_80A1498 -_080A1180: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A115C - - thumb_func_start sub_80A1188 -sub_80A1188: @ 80A1188 - push {r4,r5,lr} - lsls r4, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r4 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080A11A0 - lsrs r0, r4, 19 - movs r1, 0 - bl sub_80A14C0 -_080A11A0: - cmp r5, 0x1 - bne _080A11AC - lsrs r0, r4, 19 - movs r1, 0x1 - bl sub_80A14C0 -_080A11AC: - cmp r5, 0x2 - bne _080A11B8 - lsrs r0, r4, 19 - movs r1, 0x2 - bl sub_80A14C0 -_080A11B8: - cmp r5, 0x3 - bne _080A11C4 - lsrs r0, r4, 19 - movs r1, 0x3 - bl sub_80A14C0 -_080A11C4: - cmp r5, 0x4 - bne _080A11D0 - lsrs r0, r4, 19 - movs r1, 0x4 - bl sub_80A14C0 -_080A11D0: - cmp r5, 0x5 - bne _080A11DC - lsrs r0, r4, 19 - movs r1, 0x5 - bl sub_80A14C0 -_080A11DC: - cmp r5, 0x6 - bne _080A11E8 - lsrs r0, r4, 19 - movs r1, 0x6 - bl sub_80A14C0 -_080A11E8: - cmp r5, 0x7 - bne _080A11F4 - lsrs r0, r4, 19 - movs r1, 0x7 - bl sub_80A14C0 -_080A11F4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A1188 - - thumb_func_start sub_80A11FC -sub_80A11FC: @ 80A11FC - push {r4,r5,lr} - lsls r4, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r4 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080A1216 - lsrs r0, r4, 20 - lsls r0, 24 - lsrs r0, 24 - bl sub_80A131C -_080A1216: - cmp r5, 0x1 - bne _080A1224 - lsrs r0, r4, 20 - lsls r0, 24 - lsrs r0, 24 - bl sub_80A136C -_080A1224: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A11FC - - thumb_func_start sub_80A122C -sub_80A122C: @ 80A122C - push {lr} - lsls r1, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - bne _080A1240 - lsrs r0, r1, 20 - bl sub_80A1798 -_080A1240: - pop {r0} - bx r0 - thumb_func_end sub_80A122C - - thumb_func_start sub_80A1244 -sub_80A1244: @ 80A1244 - push {lr} - lsls r1, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - bne _080A125C - lsrs r0, r1, 20 - lsls r0, 24 - lsrs r0, 24 - bl sub_80A1344 -_080A125C: - pop {r0} - bx r0 - thumb_func_end sub_80A1244 - - thumb_func_start sub_80A1260 -sub_80A1260: @ 80A1260 - push {lr} - lsls r1, r0, 16 - movs r0, 0xF0 - lsls r0, 12 - ands r0, r1 - lsrs r0, 16 - cmp r0, 0x1 - bne _080A1276 - lsrs r0, r1, 20 - bl sub_80A14F8 -_080A1276: - pop {r0} - bx r0 - thumb_func_end sub_80A1260 - - thumb_func_start sub_80A127C -sub_80A127C: @ 80A127C - push {lr} - lsls r1, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - bne _080A1290 - lsrs r0, r1, 19 - bl sub_80A1548 -_080A1290: - pop {r0} - bx r0 - thumb_func_end sub_80A127C - - thumb_func_start sub_80A1294 -sub_80A1294: @ 80A1294 - push {lr} - lsls r1, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - bne _080A12A8 - lsrs r0, r1, 19 - bl sub_80A1570 -_080A12A8: - pop {r0} - bx r0 - thumb_func_end sub_80A1294 - - thumb_func_start sub_80A12AC -sub_80A12AC: @ 80A12AC - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08513684 - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06003c00 - movs r2, 0xA0 - lsls r2, 1 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A12AC - - thumb_func_start sub_80A12D4 -sub_80A12D4: @ 80A12D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x3 - ands r0, r4 - ldr r5, =gUnknown_08513894 - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - ldr r1, =0x06006400 - movs r2, 0x80 - bl sub_80A0980 - adds r1, r4, 0x2 - adds r0, r1, 0 - asrs r0, 2 - lsls r0, 2 - subs r0, r1, r0 - lsls r0, 24 - lsrs r0, 22 - adds r0, r5 - ldr r0, [r0] - ldr r1, =0x06006480 - movs r2, 0x80 - bl sub_80A0980 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A12D4 - - thumb_func_start sub_80A131C -sub_80A131C: @ 80A131C - push {lr} - lsls r0, 24 - movs r1, 0xC0 - lsls r1, 18 - ands r1, r0 - ldr r0, =gUnknown_085143E4 - lsrs r1, 22 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06007a00 - movs r2, 0xF0 - lsls r2, 2 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A131C - - thumb_func_start sub_80A1344 -sub_80A1344: @ 80A1344 - push {lr} - lsls r0, 24 - movs r1, 0xC0 - lsls r1, 18 - ands r1, r0 - ldr r0, =gUnknown_085145F4 - lsrs r1, 22 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06007e00 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1344 - - thumb_func_start sub_80A136C -sub_80A136C: @ 80A136C - push {lr} - lsls r0, 24 - movs r1, 0xE0 - lsls r1, 19 - ands r1, r0 - ldr r0, =gUnknown_08514E04 - lsrs r1, 22 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06007e00 - movs r2, 0x80 - lsls r2, 1 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A136C - - thumb_func_start sub_80A1394 -sub_80A1394: @ 80A1394 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - subs r0, r5, r6 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xB - bhi _080A13F0 - adds r0, r5, 0 - movs r1, 0xC - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 16 - ldr r0, =gUnknown_08515384 - lsrs r4, 14 - adds r0, r4, r0 - ldr r0, [r0] - ldr r1, =gUnknown_08515344 - lsls r5, r6, 2 - adds r1, r5, r1 - ldr r1, [r1] - movs r2, 0x80 - bl sub_80A0980 - ldr r0, =gUnknown_085153B4 - adds r4, r0 - ldr r0, [r4] - ldr r1, =gUnknown_08515364 - adds r5, r1 - ldr r1, [r5] - movs r2, 0x80 - bl sub_80A0980 - b _080A141C - .pool -_080A13F0: - movs r0, 0x3 - ands r5, r0 - ldr r0, =gUnknown_085153E4 - lsls r5, 2 - adds r0, r5, r0 - ldr r0, [r0] - ldr r1, =gUnknown_08515344 - lsls r4, r6, 2 - adds r1, r4, r1 - ldr r1, [r1] - movs r2, 0x80 - bl sub_80A0980 - ldr r0, =gUnknown_085153F4 - adds r5, r0 - ldr r0, [r5] - ldr r1, =gUnknown_08515364 - adds r4, r1 - ldr r1, [r4] - movs r2, 0x80 - bl sub_80A0980 -_080A141C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1394 - - thumb_func_start sub_80A1434 -sub_80A1434: @ 80A1434 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r3, r1, 24 - subs r0, r3 - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - ldr r0, =gUnknown_08515824 - lsrs r1, 14 - adds r1, r0 - ldr r2, [r1] - cmp r2, 0 - beq _080A1464 - ldr r0, =gUnknown_08515804 - lsls r1, r3, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - movs r2, 0x80 - bl sub_80A0980 -_080A1464: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1434 - - thumb_func_start sub_80A1470 -sub_80A1470: @ 80A1470 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - ldr r1, =gUnknown_08515964 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x06007800 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1470 - - thumb_func_start sub_80A1498 -sub_80A1498: @ 80A1498 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08515D8C - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06005400 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1498 - - thumb_func_start sub_80A14C0 -sub_80A14C0: @ 80A14C0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - subs r0, r1 - lsls r0, 16 - movs r2, 0xE0 - lsls r2, 11 - ands r2, r0 - ldr r0, =gUnknown_085161DC - lsrs r2, 14 - adds r2, r0 - ldr r0, [r2] - ldr r2, =gUnknown_085161BC - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A14C0 - - thumb_func_start sub_80A14F8 -sub_80A14F8: @ 80A14F8 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08515D8C - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06007400 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A14F8 - - thumb_func_start sub_80A1520 -sub_80A1520: @ 80A1520 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_085164FC - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06005540 - movs r2, 0xC0 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1520 - - thumb_func_start sub_80A1548 -sub_80A1548: @ 80A1548 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_0851680C - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06005b40 - movs r2, 0xC0 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1548 - - thumb_func_start sub_80A1570 -sub_80A1570: @ 80A1570 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08516B1C - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06005b40 - movs r2, 0xC0 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1570 - - thumb_func_start sub_80A1598 -sub_80A1598: @ 80A1598 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08516D2C - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06005c00 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1598 - - thumb_func_start sub_80A15C0 -sub_80A15C0: @ 80A15C0 - push {lr} - lsls r2, r0, 16 - lsrs r0, r2, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A15D4 - lsrs r0, r2, 17 - bl sub_80A1748 -_080A15D4: - pop {r0} - bx r0 - thumb_func_end sub_80A15C0 - - thumb_func_start sub_80A15D8 -sub_80A15D8: @ 80A15D8 - push {lr} - lsls r1, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - bne _080A15EC - lsrs r0, r1, 19 - bl sub_80A16B0 -_080A15EC: - pop {r0} - bx r0 - thumb_func_end sub_80A15D8 - - thumb_func_start sub_80A15F0 -sub_80A15F0: @ 80A15F0 - push {r4,r5,lr} - lsls r4, r0, 16 - lsrs r0, r4, 16 - adds r5, r0, 0 - movs r0, 0x3F - ands r0, r5 - cmp r0, 0x1 - bne _080A1606 - lsrs r0, r4, 22 - bl sub_80A1720 -_080A1606: - movs r0, 0x7 - ands r0, r5 - cmp r0, 0x1 - bne _080A1614 - lsrs r0, r4, 19 - bl sub_80A16F8 -_080A1614: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A15F0 - - thumb_func_start sub_80A161C -sub_80A161C: @ 80A161C - push {lr} - lsls r1, r0, 16 - movs r0, 0xC0 - lsls r0, 10 - ands r0, r1 - cmp r0, 0 - bne _080A1630 - lsrs r0, r1, 18 - bl sub_80A1770 -_080A1630: - pop {r0} - bx r0 - thumb_func_end sub_80A161C - - thumb_func_start sub_80A1634 -sub_80A1634: @ 80A1634 - push {r4,lr} - lsls r4, r0, 16 - movs r0, 0xE0 - lsls r0, 11 - ands r0, r4 - cmp r0, 0 - bne _080A1650 - lsrs r4, 19 - adds r0, r4, 0 - bl sub_80A17C0 - adds r0, r4, 0 - bl sub_80A17EC -_080A1650: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A1634 - - thumb_func_start sub_80A1658 -sub_80A1658: @ 80A1658 - push {lr} - lsls r1, r0, 16 - movs r0, 0xC0 - lsls r0, 10 - ands r0, r1 - cmp r0, 0 - bne _080A166C - lsrs r0, r1, 18 - bl sub_80A1818 -_080A166C: - pop {r0} - bx r0 - thumb_func_end sub_80A1658 - - thumb_func_start sub_80A1670 -sub_80A1670: @ 80A1670 - push {lr} - lsls r1, r0, 16 - movs r0, 0xC0 - lsls r0, 10 - ands r0, r1 - cmp r0, 0 - bne _080A1684 - lsrs r0, r1, 18 - bl sub_80A1884 -_080A1684: - pop {r0} - bx r0 - thumb_func_end sub_80A1670 - - thumb_func_start sub_80A1688 -sub_80A1688: @ 80A1688 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - ldr r1, =gUnknown_08516E3C - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x06003e00 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1688 - - thumb_func_start sub_80A16B0 -sub_80A16B0: @ 80A16B0 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 16 - ldr r0, =gUnknown_08517A44 - lsrs r4, 14 - adds r0, r4, r0 - ldr r0, [r0] - ldr r1, =0x06007e00 - movs r2, 0xC0 - lsls r2, 1 - bl sub_80A0980 - ldr r0, =gUnknown_08517A50 - adds r4, r0 - ldr r0, [r4] - ldr r1, =0x06007a00 - movs r2, 0xA0 - lsls r2, 2 - bl sub_80A0980 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A16B0 - - thumb_func_start sub_80A16F8 -sub_80A16F8: @ 80A16F8 - push {lr} - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - ldr r0, =gUnknown_08517BFC - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06007f00 - movs r2, 0x20 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A16F8 - - thumb_func_start sub_80A1720 -sub_80A1720: @ 80A1720 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - ldr r1, =gUnknown_08517C0C - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x06007c00 - movs r2, 0x80 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1720 - - thumb_func_start sub_80A1748 -sub_80A1748: @ 80A1748 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - ldr r1, =gUnknown_08518034 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x06005200 - movs r2, 0x80 - lsls r2, 2 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1748 - - thumb_func_start sub_80A1770 -sub_80A1770: @ 80A1770 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - ldr r1, =gUnknown_0851829C - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x06007e00 - movs r2, 0x90 - lsls r2, 1 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1770 - - thumb_func_start sub_80A1798 -sub_80A1798: @ 80A1798 - push {lr} - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - ldr r0, =gUnknown_085202C4 - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - ldr r1, =0x06005e00 - movs r2, 0xC0 - lsls r2, 4 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A1798 - - thumb_func_start sub_80A17C0 -sub_80A17C0: @ 80A17C0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - ldr r1, =gUnknown_08524864 - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x060052e0 - movs r2, 0x80 - lsls r2, 1 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A17C0 - - thumb_func_start sub_80A17EC -sub_80A17EC: @ 80A17EC - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - ldr r1, =gUnknown_08524870 - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x060050e0 - movs r2, 0x80 - lsls r2, 1 - bl sub_80A0980 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A17EC - .align 2, 0 @ Don't pad with nop. diff --git a/data/graphics.s b/data/graphics.s index 0fa256449f..a64dc13326 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -354,7 +354,19 @@ gUnknown_08D85600:: @ 8D85600 .incbin "baserom.gba", 0xd85600, 0x20 gUnknown_08D85620:: @ 8D85620 - .incbin "baserom.gba", 0xd85620, 0xa8 + .incbin "baserom.gba", 0xd85620, 0x20 + +gUnknown_08D85640:: @ 8D85640 + .incbin "baserom.gba", 0xd85640, 0x20 + +gUnknown_08D85660:: @ 8D85660 + .incbin "baserom.gba", 0xd85660, 0x20 + +gUnknown_08D85680:: @ 8D85680 + .incbin "baserom.gba", 0xd85680, 0x20 + +gUnknown_08D856A0:: @ 8D856A0 + .incbin "baserom.gba", 0xd856a0, 0x28 gUnknown_08D856C8:: @ 8D856C8 .incbin "baserom.gba", 0xd856c8, 0xe0 diff --git a/data/palette.s b/data/palette.s deleted file mode 100644 index 2dbfed8d2a..0000000000 --- a/data/palette.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_0852487C:: @ 852487C - .incbin "baserom.gba", 0x52487c, 0x10 - -gDummyPaletteStructTemplate:: @ 852488C - .2byte 0xFFFF - .space 9 - .byte 0x20 - .space 4 - - .align 2 -gUnknown_0852489C:: @ 852489C - .incbin "baserom.gba", 0x52489c, 0x20 diff --git a/data/start_menu.s b/data/start_menu.s index eaba0b8e1b..07e428d0d9 100644 --- a/data/start_menu.s +++ b/data/start_menu.s @@ -26,4 +26,4 @@ gUnknown_085105AC:: @ 85105AC .incbin "baserom.gba", 0x5105ac, 0x10 gUnknown_085105BC:: @ 85105BC - .incbin "baserom.gba", 0x5105bc, 0x1a8 + .incbin "baserom.gba", 0x5105bc, 0x8 diff --git a/data/tileset.s b/data/tileset.s index 1221d89676..a69e53acf9 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -4,6 +4,9 @@ .section .rodata .align 2, 0 +Unknown_085105C4:: + .incbin "baserom.gba", 0x5105C4, 0x1A0 + gUnknown_08510764:: @ 8510764 .incbin "baserom.gba", 0x510764, 0xb60 diff --git a/ld_script.txt b/ld_script.txt index c2f8af5958..78d27eb7fe 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -110,7 +110,6 @@ SECTIONS { asm/reset_rtc_screen.o(.text); src/start_menu.o(.text); asm/start_menu.o(.text); - asm/tileset.o(.text); src/palette.o(.text); src/sound.o(.text); asm/battle_anim.o(.text); @@ -357,7 +356,7 @@ SECTIONS { data/reset_rtc_screen.o(.rodata); data/start_menu.o(.rodata); data/tileset.o(.rodata); - data/palette.o(.rodata); + src/palette.o(.rodata); data/fanfares.o(.rodata); data/battle_anims.o(.rodata); data/title_screen.o(.rodata); diff --git a/src/palette.c b/src/palette.c index aa9a84e4cf..4c09206ba9 100644 --- a/src/palette.c +++ b/src/palette.c @@ -28,7 +28,7 @@ struct PaletteStructTemplate struct PaletteStruct { - struct PaletteStructTemplate *base; + const struct PaletteStructTemplate *base; u32 ps_field_4_0:1; u16 ps_field_4_1:1; u32 baseDestOffset:9; @@ -48,6 +48,11 @@ extern void _call_via_r1(u32 a1, void *a2); extern void BlendPalette(u16, u16, u8, u16); +static EWRAM_DATA struct { + const u16 *src; + u16 *dest; + u16 size; +} sTilesetDMA3TransferBuffer[20] = {0}; EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0}; EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0}; EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; @@ -56,13 +61,72 @@ EWRAM_DATA u32 gFiller_2037FE0 = 0; EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0}; -extern struct PaletteStructTemplate gDummyPaletteStructTemplate; -extern void *gUnknown_0852487C; -extern u8 gUnknown_0852489C[]; +extern const u16 *const gUnknown_08510764[]; +extern const u16 *const gUnknown_085112C4[]; +extern const u16 *const gUnknown_08511BCC[]; +extern const u16 *const gUnknown_08512574[]; +extern const u16 *const gUnknown_08512E54[]; +extern const u16 *const gUnknown_08513174[]; +extern const u16 *const gUnknown_08513684[]; +extern const u16 *const gUnknown_08513894[]; +extern const u16 *const gUnknown_085143E4[]; +extern const u16 *const gUnknown_085145F4[]; +extern const u16 *const gUnknown_08514E04[]; +extern u16 *const gUnknown_08515344[]; +extern u16 *const gUnknown_08515364[]; +extern const u16 *const gUnknown_08515384[]; +extern const u16 *const gUnknown_085153B4[]; +extern const u16 *const gUnknown_085153E4[]; +extern const u16 *const gUnknown_085153F4[]; +extern u16 *const gUnknown_08515804[]; +extern const u16 *const gUnknown_08515824[]; +extern const u16 *const gUnknown_08515964[]; +extern const u16 *const gUnknown_08515D8C[]; +extern u16 *const gUnknown_085161BC[]; +extern const u16 *const gUnknown_085161DC[]; +extern const u16 *const gUnknown_085164FC[]; +extern const u16 *const gUnknown_0851680C[]; +extern const u16 *const gUnknown_08516B1C[]; +extern const u16 *const gUnknown_08516D2C[]; +extern const u16 *const gUnknown_08516E3C[]; +extern const u16 *const gUnknown_08517A44[]; +extern const u16 *const gUnknown_08517A50[]; +extern const u16 *const gUnknown_08517BFC[]; +extern const u16 *const gUnknown_08517C0C[]; +extern const u16 *const gUnknown_08518034[]; +extern const u16 *const gUnknown_0851829C[]; +extern const u16 *const gUnknown_085202C4[]; +extern const u16 *const gUnknown_08524864[]; +extern const u16 *const gUnknown_08524870[]; -extern u16 gUnknown_03000F3C; -extern void *gUnknown_03000F44; +extern const u16 gUnknown_08D85640[]; +extern const u16 gUnknown_08D85660[]; +extern const u16 gUnknown_08D85680[]; +extern const u16 gUnknown_08D856A0[]; +static const u16 *const gUnknown_0852487C[] = { + gUnknown_08D85640, + gUnknown_08D85660, + gUnknown_08D85680, + gUnknown_08D856A0, +}; + +static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { + .uid = 0xFFFF, + .pst_field_B_5 = 1 +}; +static const u8 gUnknown_0852489C[] = { + 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, + 11, 11, 11, 11, 11, + 16, 16, 16, 16, 16, + 21, 21, 21, 21, 21, + 27, 27, 27, 27, 27, + 31, 31 +}; + +void cur_mapheader_run_tileset1_func(void); +void cur_mapheader_run_tileset2_func(void); static void unused_sub_80A1CDC(struct PaletteStruct *, u32 *); static void unused_sub_80A1E40(struct PaletteStruct *, u32 *); static void unused_sub_80A1F00(struct PaletteStruct *); @@ -74,30 +138,798 @@ static u8 UpdateHardwarePaletteFade(void); static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); +// tileset + +IWRAM_DATA u8 sTilesetDMA3TransferBufferSize; +IWRAM_DATA u16 sPrimaryTilesetCBCounter; +IWRAM_DATA u16 sPrimaryTilesetCBBufferSize; +IWRAM_DATA u16 sSecondaryTilesetCBCounter; +IWRAM_DATA u16 sSecondaryTilesetCBBufferSize; +IWRAM_DATA void (*sPrimaryTilesetCB)(u16); +IWRAM_DATA void (*sSecondaryTilesetCB)(u16); + +void sub_80A0954(void) +{ + sTilesetDMA3TransferBufferSize = 0; + CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer); +} + +void sub_80A0980(const u16 *a0, u16 *a1, u16 a2) +{ + if (sTilesetDMA3TransferBufferSize < 20) + { + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = a0; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = a1; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = a2; + sTilesetDMA3TransferBufferSize ++; + } +} + +void sub_80A09D0(void) +{ + int i; + + for (i = 0; i < sTilesetDMA3TransferBufferSize; i ++) + { + DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size); + } + sTilesetDMA3TransferBufferSize = 0; +} + +void cur_mapheader_run_tileset_funcs_after_some_cpuset(void) +{ + sub_80A0954(); + cur_mapheader_run_tileset1_func(); + cur_mapheader_run_tileset2_func(); +} + +void sub_80A0A2C(void) +{ + cur_mapheader_run_tileset2_func(); +} + +void sub_80A0A38(void) +{ + sub_80A0954(); + if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize) + sPrimaryTilesetCBCounter = 0; + if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize) + sSecondaryTilesetCBCounter = 0; + if (sPrimaryTilesetCB) + sPrimaryTilesetCB(sPrimaryTilesetCBCounter); + if (sSecondaryTilesetCB) + sSecondaryTilesetCB(sSecondaryTilesetCBCounter); +} + +void cur_mapheader_run_tileset1_func(void) +{ + sPrimaryTilesetCBCounter = 0; + sPrimaryTilesetCBBufferSize = 0; + sPrimaryTilesetCB = NULL; + if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback) + gMapHeader.mapData->primaryTileset->callback(); +} + +void cur_mapheader_run_tileset2_func(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 0; + sSecondaryTilesetCB = NULL; + if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback) + gMapHeader.mapData->secondaryTileset->callback(); +} + +void TilesetCb_General(void) +{ + void sub_80A0B70(u16); + + sPrimaryTilesetCBCounter = 0; + sPrimaryTilesetCBBufferSize = 0x100; + sPrimaryTilesetCB = sub_80A0B70; +} + +void TilesetCb_InsideBuilding(void) +{ + void sub_80A0BB4(u16); + + sPrimaryTilesetCBCounter = 0; + sPrimaryTilesetCBBufferSize = 0x100; + sPrimaryTilesetCB = sub_80A0BB4; +} + +void sub_80A0B70(u16 timer) +{ + void sub_80A0BCC(u16); + void sub_80A0BF4(u16); + void sub_80A0C1C(u16); + void sub_80A0C44(u16); + void sub_80A12AC(u16); + + if ((timer & 0x0F) == 0) + sub_80A0BCC(timer >> 4); + if ((timer & 0x0F) == 1) + sub_80A0BF4(timer >> 4); + if ((timer & 0x0F) == 2) + sub_80A0C1C(timer >> 4); + if ((timer & 0x0F) == 3) + sub_80A0C44(timer >> 4); + if ((timer & 0x0F) == 4) + sub_80A12AC(timer >> 4); +} + +void sub_80A0BB4(u16 timer) +{ + void sub_80A1688(u16); + if ((timer & 0x7) == 0) + sub_80A1688(timer >> 3); +} + +void sub_80A0BCC(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08510764[idx], (u16 *)(VRAM + 0x3F80), 0x80); +} + +void sub_80A0BF4(u16 timer) +{ + u8 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_08512574[idx], (u16 *)(VRAM + 0x3600), 0x3C0); +} + +void sub_80A0C1C(u16 timer) +{ + u16 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_08512E54[idx], (u16 *)(VRAM + 0x3a00), 0x140); +} + +void sub_80A0C44(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08513174[idx], (u16 *)(VRAM + 0x3e00), 0xc0); +} + +void TilesetCb_Petalburg(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Rustboro(void) +{ + void sub_80A103C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A103C; +} + +void TilesetCb_Dewford(void) +{ + void sub_80A10B8(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A10B8; +} + +void TilesetCb_Slateport(void) +{ + void sub_80A10D0(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A10D0; +} + +void TilesetCb_Mauville(void) +{ + void sub_80A10E8(u16); + + sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A10E8; +} + +void TilesetCb_Lavaridge(void) +{ + void sub_80A115C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A115C; +} + +void TilesetCb_Fallarbor(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Fortree(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Lilycove(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Mossdeep(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_EverGrande(void) +{ + void sub_80A1188(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1188; +} + +void TilesetCb_Pacifidlog(void) +{ + void sub_80A11FC(u16); + + sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A11FC; +} + +void TilesetCb_Sootopolis(void) +{ + void sub_80A122C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A122C; +} + +void TilesetCb_BattleFrontierOutsideWest(void) +{ + void sub_80A127C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A127C; +} + +void TilesetCb_BattleFrontierOutsideEast(void) +{ + void sub_80A1294(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1294; +} + +void TilesetCb_Underwater(void) +{ + void sub_80A1244(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 128; + sSecondaryTilesetCB = sub_80A1244; +} + +void TilesetCb_SootopolisGym(void) +{ + void sub_80A15D8(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 240; + sSecondaryTilesetCB = sub_80A15D8; +} + +void TilesetCb_Cave(void) +{ + void sub_80A1260(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1260; +} + +void TilesetCb_EliteFour(void) +{ + void sub_80A15F0(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 128; + sSecondaryTilesetCB = sub_80A15F0; +} + +void TilesetCb_MauvilleGym(void) +{ + void sub_80A15C0(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A15C0; +} + +void TilesetCb_BikeShop(void) +{ + void sub_80A161C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A161C; +} + +void TilesetCb_BattlePyramid(void) +{ + void sub_80A1634(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1634; +} + +void TilesetCb_BattleDome(void) +{ + void sub_80A1658(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1658; +} + +void sub_80A103C(u16 timer) +{ + void sub_80A1434(u16, u8); + void sub_80A1470(u16); + + if ((timer & 0x07) == 0) + { + sub_80A1434(timer >> 3, 0); + sub_80A1470(timer >> 3); + } + if ((timer & 0x07) == 1) + sub_80A1434(timer >> 3, 1); + if ((timer & 0x07) == 2) + sub_80A1434(timer >> 3, 2); + if ((timer & 0x07) == 3) + sub_80A1434(timer >> 3, 3); + if ((timer & 0x07) == 4) + sub_80A1434(timer >> 3, 4); + if ((timer & 0x07) == 5) + sub_80A1434(timer >> 3, 5); + if ((timer & 0x07) == 6) + sub_80A1434(timer >> 3, 6); + if ((timer & 0x07) == 7) + sub_80A1434(timer >> 3, 7); +} + +void sub_80A10B8(u16 timer) +{ + void sub_80A1520(u16); + + if ((timer & 7) == 0) + sub_80A1520(timer >> 3); +} + +void sub_80A10D0(u16 timer) +{ + void sub_80A1598(u16); + + if ((timer & 15) == 0) + sub_80A1598(timer >> 4); +} + +void sub_80A10E8(u16 timer) +{ + void sub_80A1394(u16, u8); + + if ((timer & 0x07) == 0) + sub_80A1394(timer >> 3, 0); + if ((timer & 0x07) == 1) + sub_80A1394(timer >> 3, 1); + if ((timer & 0x07) == 2) + sub_80A1394(timer >> 3, 2); + if ((timer & 0x07) == 3) + sub_80A1394(timer >> 3, 3); + if ((timer & 0x07) == 4) + sub_80A1394(timer >> 3, 4); + if ((timer & 0x07) == 5) + sub_80A1394(timer >> 3, 5); + if ((timer & 0x07) == 6) + sub_80A1394(timer >> 3, 6); + if ((timer & 0x07) == 7) + sub_80A1394(timer >> 3, 7); +} + +void sub_80A115C(u16 timer) +{ + void sub_80A12D4(u8); + void sub_80A1498(u16); + + if ((timer & 0x0F) == 0) + sub_80A12D4(timer >> 4); + if ((timer & 0x0F) == 1) + sub_80A1498(timer >> 4); +} + +void sub_80A1188(u16 timer) +{ + void sub_80A14C0(u16, u8); + + if ((timer & 0x07) == 0) + sub_80A14C0(timer >> 3, 0); + if ((timer & 0x07) == 1) + sub_80A14C0(timer >> 3, 1); + if ((timer & 0x07) == 2) + sub_80A14C0(timer >> 3, 2); + if ((timer & 0x07) == 3) + sub_80A14C0(timer >> 3, 3); + if ((timer & 0x07) == 4) + sub_80A14C0(timer >> 3, 4); + if ((timer & 0x07) == 5) + sub_80A14C0(timer >> 3, 5); + if ((timer & 0x07) == 6) + sub_80A14C0(timer >> 3, 6); + if ((timer & 0x07) == 7) + sub_80A14C0(timer >> 3, 7); +} + +void sub_80A11FC(u16 timer) +{ + void sub_80A131C(u8); + void sub_80A136C(u8); + + if ((timer & 0x0F) == 0) + sub_80A131C(timer >> 4); + if ((timer & 0x0F) == 1) + sub_80A136C(timer >> 4); +} + +void sub_80A122C(u16 timer) +{ + void sub_80A1798(u16); + + if ((timer & 0x0F) == 0) + sub_80A1798(timer >> 4); +} + +void sub_80A1244(u16 timer) +{ + void sub_80A1344(u8); + + if ((timer & 0x0F) == 0) + sub_80A1344(timer >> 4); +} + +void sub_80A1260(u16 timer) +{ + void sub_80A14F8(u16); + + if ((timer & 0x0F) == 1) + sub_80A14F8(timer >> 4); +} + +void sub_80A127C(u16 timer) +{ + void sub_80A1548(u16); + + if ((timer & 0x07) == 0) + sub_80A1548(timer >> 3); +} + +void sub_80A1294(u16 timer) +{ + void sub_80A1570(u16); + + if ((timer & 0x07) == 0) + sub_80A1570(timer >> 3); +} + +void sub_80A12AC(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08513684[idx], (u16 *)(VRAM + 0x3c00), 0x140); +} + +void sub_80A12D4(u8 timer) +{ + u8 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08513894[idx], (u16 *)(VRAM + 0x6400), 0x80); + + idx = (timer + 2) % 4; + sub_80A0980(gUnknown_08513894[idx], (u16 *)(VRAM + 0x6480), 0x80); +} + +void sub_80A131C(u8 timer) +{ + u8 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_085143E4[idx], (u16 *)(VRAM + 0x7a00), 0x3C0); +} + +void sub_80A1344(u8 timer) +{ + u8 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_085145F4[idx], (u16 *)(VRAM + 0x7e00), 0x80); +} + +void sub_80A136C(u8 timer) +{ + u8 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_08514E04[idx], (u16 *)(VRAM + 0x7e00), 0x100); +} + +void sub_80A1394(u16 timer_div, u8 timer_mod) +{ + timer_div -= timer_mod; + if (timer_div < 12) // almost certainly a typo + { + timer_div %= 12; + sub_80A0980(gUnknown_08515384[timer_div], gUnknown_08515344[timer_mod], 0x80); + sub_80A0980(gUnknown_085153B4[timer_div], gUnknown_08515364[timer_mod], 0x80); + } + else + { + timer_div &= 3; + sub_80A0980(gUnknown_085153E4[timer_div], gUnknown_08515344[timer_mod], 0x80); + sub_80A0980(gUnknown_085153F4[timer_div], gUnknown_08515364[timer_mod], 0x80); + } +} + +void sub_80A1434(u16 timer_div, u8 timer_mod) +{ + timer_div -= timer_mod; + timer_div &= 0x7; + if (gUnknown_08515824[timer_div]) + sub_80A0980(gUnknown_08515824[timer_div], gUnknown_08515804[timer_mod], 0x80); +} + +void sub_80A1470(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08515964[idx], (u16 *)(VRAM + 0x7800), 0x80); +} + +void sub_80A1498(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(VRAM + 0x5400), 0x80); +} + +void sub_80A14C0(u16 timer_div, u8 timer_mod) +{ + timer_div -= timer_mod; + timer_div &= 7; + + sub_80A0980(gUnknown_085161DC[timer_div], gUnknown_085161BC[timer_mod], 0x80); +} + +void sub_80A14F8(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(VRAM + 0x7400), 0x80); +} + +void sub_80A1520(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_085164FC[idx], (u16 *)(VRAM + 0x5540), 0xC0); +} + +void sub_80A1548(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_0851680C[idx], (u16 *)(VRAM + 0x5b40), 0xC0); +} + +void sub_80A1570(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08516B1C[idx], (u16 *)(VRAM + 0x5b40), 0xC0); +} + +void sub_80A1598(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08516D2C[idx], (u16 *)(VRAM + 0x5c00), 0x80); +} + +void sub_80A15C0(u16 timer) +{ + void sub_80A1748(u16); + + if ((timer & 1) == 0) + sub_80A1748(timer >> 1); +} + +void sub_80A15D8(u16 timer) +{ + void sub_80A16B0(u16); + + if ((timer & 7) == 0) + sub_80A16B0(timer >> 3); +} + +void sub_80A15F0(u16 timer) +{ + void sub_80A1720(u16); + void sub_80A16F8(u16); + + if ((timer & 0x3f) == 1) + sub_80A1720(timer >> 6); + if ((timer & 0x07) == 1) + sub_80A16F8(timer >> 3); +} +void sub_80A161C(u16 timer) +{ + void sub_80A1770(u16); + + if ((timer & 3) == 0) + sub_80A1770(timer >> 2); +} + +void sub_80A1634(u16 timer) +{ + void sub_80A17C0(u16); + void sub_80A17EC(u16); + + if ((timer & 7) == 0) + { + sub_80A17C0(timer >> 3); + sub_80A17EC(timer >> 3); + } +} + +void sub_80A1658(u16 timer) +{ + void sub_80A1818(u16); + + if ((timer & 3) == 0) + sub_80A1818(timer >> 2); +} + +void sub_80A1670(u16 timer) +{ + void sub_80A1884(u16); + + if ((timer & 3) == 0) + sub_80A1884(timer >> 2); +} + +void sub_80A1688(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08516E3C[idx], (u16 *)(VRAM + 0x3e00), 0x80); +} + +void sub_80A16B0(u16 timer) +{ + u16 idx; + + idx = timer % 3; + sub_80A0980(gUnknown_08517A44[idx], (u16 *)(VRAM + 0x7e00), 0x180); + sub_80A0980(gUnknown_08517A50[idx], (u16 *)(VRAM + 0x7a00), 0x280); +} + +void sub_80A16F8(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08517BFC[idx], (u16 *)(VRAM + 0x7f00), 0x20); +} + +void sub_80A1720(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08517C0C[idx], (u16 *)(VRAM + 0x7c00), 0x80); +} + +void sub_80A1748(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08518034[idx], (u16 *)(VRAM + 0x5200), 0x200); +} + +void sub_80A1770(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_0851829C[idx], (u16 *)(VRAM + 0x7e00), 0x120); +} + +void sub_80A1798(u16 timer) +{ + u16 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_085202C4[idx], (u16 *)(VRAM + 0x5e00), 0xc00); +} + +void sub_80A17C0(u16 timer) +{ + u16 idx; + + idx = timer % 3; + sub_80A0980(gUnknown_08524864[idx], (u16 *)(VRAM + 0x52e0), 0x100); +} + +void sub_80A17EC(u16 timer) +{ + u16 idx; + + idx = timer % 3; + sub_80A0980(gUnknown_08524870[idx], (u16 *)(VRAM + 0x50e0), 0x100); +} + +// palette + void sub_80A1818(u16 a1) { - void **v1 = &gUnknown_0852487C; - CpuSet(v1[a1 & 0x3], gPlttBufferUnfaded + 0x80, 0x10); - BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); - if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF ) - { - gUnknown_03000F44 = sub_80A1670; - gUnknown_03000F3C = 0x20; - } - return; + CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); + BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); + if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF ) + { + sSecondaryTilesetCB = sub_80A1670; + sSecondaryTilesetCBBufferSize = 0x20; + } } void sub_80A1884(u16 a1) { - void **v1 = &gUnknown_0852487C; - CpuSet(v1[a1 & 0x3], gPlttBufferUnfaded + 0x80, 0x10); - if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF ) - { - BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); - if (!--gUnknown_03000F3C) - gUnknown_03000F44 = 0; - } - return; + CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); + if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF ) + { + BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); + if (!--sSecondaryTilesetCBBufferSize) + sSecondaryTilesetCB = NULL; + } } void LoadCompressedPalette(const void *src, u16 offset, u16 size) diff --git a/src/scrcmd.c b/src/scrcmd.c new file mode 100644 index 0000000000..b56a53cafb --- /dev/null +++ b/src/scrcmd.c @@ -0,0 +1,15 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u8 gUnknown_03000F30; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index c81ce12beb..16f14da516 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -16,32 +16,8 @@ gUnknown_03000000: @ 3000000 .include "src/rom4.o" .include "src/field_camera.o" .include "src/script.o" - -.align 2 -gUnknown_03000F30: @ 3000F30 - .space 0x4 - -gUnknown_03000F34: @ 3000F34 - .space 0x2 - -gUnknown_03000F36: @ 3000F36 - .space 0x2 - -gUnknown_03000F38: @ 3000F38 - .space 0x2 - -gUnknown_03000F3A: @ 3000F3A - .space 0x2 - -gUnknown_03000F3C: @ 3000F3C - .space 0x4 - -gUnknown_03000F40: @ 3000F40 - .space 0x4 - -gUnknown_03000F44: @ 3000F44 - .space 0x4 - + .include "src/scrcmd.o" + .include "src/palette.o" .include "src/sound.o" gUnknown_03000F50: @ 3000F50 diff --git a/sym_ewram.txt b/sym_ewram.txt index e49b941605..8549f16794 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -747,9 +747,6 @@ gUnknown_02037621: @ 2037621 gUnknown_02037622: @ 2037622 .space 0x2 -gUnknown_02037624: @ 2037624 - .space 0xF0 - .include "src/palette.o" .include "src/sound.o" From a1ccd78218cf920bbf62278d02f143b903f1314e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 22:16:51 -0400 Subject: [PATCH 067/182] Disassemble pointer tables in data/tileset.s --- asm/tileset.s | 8 - data/tileset.s | 651 ++++++++++++++++++++++++++++++++++++++++++++++--- src/palette.c | 8 +- 3 files changed, 616 insertions(+), 51 deletions(-) delete mode 100644 asm/tileset.s diff --git a/asm/tileset.s b/asm/tileset.s deleted file mode 100644 index 2428f2984b..0000000000 --- a/asm/tileset.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - .align 2, 0 @ Don't pad with nop. diff --git a/data/tileset.s b/data/tileset.s index a69e53acf9..3a1efb5fcf 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -4,116 +4,691 @@ .section .rodata .align 2, 0 -Unknown_085105C4:: - .incbin "baserom.gba", 0x5105C4, 0x1A0 +gUnknown_085105C4:: + .incbin "baserom.gba", 0x5105c4, 0x80 + +gUnknown_08510644:: + .incbin "baserom.gba", 0x510644, 0x80 + +gUnknown_085106C4:: + .incbin "baserom.gba", 0x5106c4, 0xa0 + gUnknown_08510764:: @ 8510764 - .incbin "baserom.gba", 0x510764, 0xb60 +@ replacing .incbin "baserom.gba", 0x00510764, 0x10 + .4byte gUnknown_08510644 + .4byte gUnknown_085105C4 + .4byte gUnknown_08510644 + .4byte gUnknown_085106C4 + +gUnknown_08510774:: + .incbin "baserom.gba", 0x510774, 0x3c0 + +gUnknown_08510B34:: + .incbin "baserom.gba", 0x510b34, 0x3c0 + +gUnknown_08510EF4:: + .incbin "baserom.gba", 0x510ef4, 0x3c0 + +gUnknown_085112B4:: + .incbin "baserom.gba", 0x5112b4, 0x10 + gUnknown_085112C4:: @ 85112C4 - .incbin "baserom.gba", 0x5112c4, 0x908 + .incbin "baserom.gba", 0x5112c4, 0x3b0 + +gUnknown_08511674:: + .incbin "baserom.gba", 0x511674, 0x3c0 + +gUnknown_08511A34:: + .incbin "baserom.gba", 0x511a34, 0x198 + gUnknown_08511BCC:: @ 8511BCC - .incbin "baserom.gba", 0x511bcc, 0x9a8 + .incbin "baserom.gba", 0x511bcc, 0x228 + +gUnknown_08511DF4:: + .incbin "baserom.gba", 0x511df4, 0x3c0 + +gUnknown_085121B4:: + .incbin "baserom.gba", 0x5121b4, 0x3c0 + gUnknown_08512574:: @ 8512574 - .incbin "baserom.gba", 0x512574, 0x8e0 +@ replacing .incbin "baserom.gba", 0x00512574, 0x20 + .4byte gUnknown_08510774 + .4byte gUnknown_08510B34 + .4byte gUnknown_08510EF4 + .4byte gUnknown_085112B4 + .4byte gUnknown_08511674 + .4byte gUnknown_08511A34 + .4byte gUnknown_08511DF4 + .4byte gUnknown_085121B4 + +gUnknown_08512594:: + .incbin "baserom.gba", 0x512594, 0x140 + +gUnknown_085126D4:: + .incbin "baserom.gba", 0x5126d4, 0x140 + +gUnknown_08512814:: + .incbin "baserom.gba", 0x512814, 0x140 + +gUnknown_08512954:: + .incbin "baserom.gba", 0x512954, 0x140 + +gUnknown_08512A94:: + .incbin "baserom.gba", 0x512a94, 0x140 + +gUnknown_08512BD4:: + .incbin "baserom.gba", 0x512bd4, 0x140 + +gUnknown_08512D14:: + .incbin "baserom.gba", 0x512d14, 0x140 + gUnknown_08512E54:: @ 8512E54 - .incbin "baserom.gba", 0x512e54, 0x320 +@ replacing .incbin "baserom.gba", 0x00512e54, 0x20 + .4byte gUnknown_08512594 + .4byte gUnknown_085126D4 + .4byte gUnknown_08512814 + .4byte gUnknown_08512954 + .4byte gUnknown_08512A94 + .4byte gUnknown_08512BD4 + .4byte gUnknown_08512D14 + .4byte gUnknown_08512594 + +gUnknown_08512E74:: + .incbin "baserom.gba", 0x512e74, 0xc0 + +gUnknown_08512F34:: + .incbin "baserom.gba", 0x512f34, 0xc0 + +gUnknown_08512FF4:: + .incbin "baserom.gba", 0x512ff4, 0xc0 + +gUnknown_085130B4:: + .incbin "baserom.gba", 0x5130b4, 0xc0 + gUnknown_08513174:: @ 8513174 - .incbin "baserom.gba", 0x513174, 0x510 +@ replacing .incbin "baserom.gba", 0x00513174, 0x10 + .4byte gUnknown_08512E74 + .4byte gUnknown_08512F34 + .4byte gUnknown_08512FF4 + .4byte gUnknown_085130B4 + +gUnknown_08513184:: + .incbin "baserom.gba", 0x513184, 0x140 + +gUnknown_085132C4:: + .incbin "baserom.gba", 0x5132c4, 0x140 + +gUnknown_08513404:: + .incbin "baserom.gba", 0x513404, 0x140 + +gUnknown_08513544:: + .incbin "baserom.gba", 0x513544, 0x140 + gUnknown_08513684:: @ 8513684 - .incbin "baserom.gba", 0x513684, 0x210 +@ replacing .incbin "baserom.gba", 0x00513684, 0x10 + .4byte gUnknown_08513184 + .4byte gUnknown_085132C4 + .4byte gUnknown_08513404 + .4byte gUnknown_08513544 + +gUnknown_08513694:: + .incbin "baserom.gba", 0x513694, 0x80 + +gUnknown_08513714:: + .incbin "baserom.gba", 0x513714, 0x80 + +gUnknown_08513794:: + .incbin "baserom.gba", 0x513794, 0x80 + +gUnknown_08513814:: + .incbin "baserom.gba", 0x513814, 0x80 + gUnknown_08513894:: @ 8513894 - .incbin "baserom.gba", 0x513894, 0xb50 +@ replacing .incbin "baserom.gba", 0x00513894, 0x10 + .4byte gUnknown_08513694 + .4byte gUnknown_08513714 + .4byte gUnknown_08513794 + .4byte gUnknown_08513814 + +gUnknown_085138A4:: + .incbin "baserom.gba", 0x5138a4, 0x3c0 + +gUnknown_08513C64:: + .incbin "baserom.gba", 0x513c64, 0x3c0 + +gUnknown_08514024:: + .incbin "baserom.gba", 0x514024, 0x3c0 + gUnknown_085143E4:: @ 85143E4 - .incbin "baserom.gba", 0x5143e4, 0x210 +@ replacing .incbin "baserom.gba", 0x005143e4, 0x10 + .4byte gUnknown_085138A4 + .4byte gUnknown_08513C64 + .4byte gUnknown_08514024 + .4byte gUnknown_08513C64 + +gUnknown_085143F4:: + .incbin "baserom.gba", 0x5143f4, 0x80 + +gUnknown_08514474:: + .incbin "baserom.gba", 0x514474, 0x80 + +gUnknown_085144F4:: + .incbin "baserom.gba", 0x5144f4, 0x80 + +gUnknown_08514574:: + .incbin "baserom.gba", 0x514574, 0x80 + gUnknown_085145F4:: @ 85145F4 - .incbin "baserom.gba", 0x5145f4, 0x810 +@ replacing .incbin "baserom.gba", 0x005145f4, 0x10 + .4byte gUnknown_085143F4 + .4byte gUnknown_08514474 + .4byte gUnknown_085144F4 + .4byte gUnknown_08514574 + +gUnknown_08514604:: + .incbin "baserom.gba", 0x514604, 0x100 + +gUnknown_08514704:: + .incbin "baserom.gba", 0x514704, 0x100 + +gUnknown_08514804:: + .incbin "baserom.gba", 0x514804, 0x100 + +gUnknown_08514904:: + .incbin "baserom.gba", 0x514904, 0x100 + +gUnknown_08514A04:: + .incbin "baserom.gba", 0x514a04, 0x100 + +gUnknown_08514B04:: + .incbin "baserom.gba", 0x514b04, 0x100 + +gUnknown_08514C04:: + .incbin "baserom.gba", 0x514c04, 0x100 + +gUnknown_08514D04:: + .incbin "baserom.gba", 0x514d04, 0x100 + gUnknown_08514E04:: @ 8514E04 - .incbin "baserom.gba", 0x514e04, 0x540 +@ replacing .incbin "baserom.gba", 0x00514e04, 0x20 + .4byte gUnknown_08514604 + .4byte gUnknown_08514704 + .4byte gUnknown_08514804 + .4byte gUnknown_08514904 + .4byte gUnknown_08514A04 + .4byte gUnknown_08514B04 + .4byte gUnknown_08514C04 + .4byte gUnknown_08514D04 + +gUnknown_08514E24:: + .incbin "baserom.gba", 0x514e24, 0x80 + +gUnknown_08514EA4:: + .incbin "baserom.gba", 0x514ea4, 0x80 + +gUnknown_08514F24:: + .incbin "baserom.gba", 0x514f24, 0x80 + +gUnknown_08514FA4:: + .incbin "baserom.gba", 0x514fa4, 0x80 + +gUnknown_08515024:: + .incbin "baserom.gba", 0x515024, 0x80 + +gUnknown_085150A4:: + .incbin "baserom.gba", 0x5150a4, 0x80 + +gUnknown_08515124:: + .incbin "baserom.gba", 0x515124, 0x80 + +gUnknown_085151A4:: + .incbin "baserom.gba", 0x5151a4, 0x80 + +gUnknown_08515224:: + .incbin "baserom.gba", 0x515224, 0x80 + +gUnknown_085152A4:: + .incbin "baserom.gba", 0x5152a4, 0xa0 + gUnknown_08515344:: @ 8515344 - .incbin "baserom.gba", 0x515344, 0x20 +@ replacing .incbin "baserom.gba", 0x00515344, 0x20 + .4byte VRAM + 0x4c00 + .4byte VRAM + 0x4c80 + .4byte VRAM + 0x4d00 + .4byte VRAM + 0x4d80 + .4byte VRAM + 0x4e00 + .4byte VRAM + 0x4e80 + .4byte VRAM + 0x4f00 + .4byte VRAM + 0x4f80 gUnknown_08515364:: @ 8515364 - .incbin "baserom.gba", 0x515364, 0x20 +@ replacing .incbin "baserom.gba", 0x00515364, 0x20 + .4byte VRAM + 0x5000 + .4byte VRAM + 0x5080 + .4byte VRAM + 0x5100 + .4byte VRAM + 0x5180 + .4byte VRAM + 0x5200 + .4byte VRAM + 0x5280 + .4byte VRAM + 0x5300 + .4byte VRAM + 0x5380 gUnknown_08515384:: @ 8515384 - .incbin "baserom.gba", 0x515384, 0x30 +@ replacing .incbin "baserom.gba", 0x00515384, 0x30 + .4byte gUnknown_08514E24 + .4byte gUnknown_08514E24 + .4byte gUnknown_08514EA4 + .4byte gUnknown_08514F24 + .4byte gUnknown_08514FA4 + .4byte gUnknown_08514FA4 + .4byte gUnknown_08514FA4 + .4byte gUnknown_08514FA4 + .4byte gUnknown_08514FA4 + .4byte gUnknown_08514FA4 + .4byte gUnknown_08514F24 + .4byte gUnknown_08514EA4 gUnknown_085153B4:: @ 85153B4 - .incbin "baserom.gba", 0x5153b4, 0x30 +@ replacing .incbin "baserom.gba", 0x005153b4, 0x30 + .4byte gUnknown_085150A4 + .4byte gUnknown_085150A4 + .4byte gUnknown_08515124 + .4byte gUnknown_085151A4 + .4byte gUnknown_08515224 + .4byte gUnknown_08515224 + .4byte gUnknown_08515224 + .4byte gUnknown_08515224 + .4byte gUnknown_08515224 + .4byte gUnknown_08515224 + .4byte gUnknown_085151A4 + .4byte gUnknown_08515124 gUnknown_085153E4:: @ 85153E4 - .incbin "baserom.gba", 0x5153e4, 0x10 +@ replacing .incbin "baserom.gba", 0x005153e4, 0x10 + .4byte gUnknown_08514E24 + .4byte gUnknown_08514E24 + .4byte gUnknown_08515024 + .4byte gUnknown_08515024 gUnknown_085153F4:: @ 85153F4 - .incbin "baserom.gba", 0x5153f4, 0x410 +@ replacing .incbin "baserom.gba", 0x005153f4, 0x10 + .4byte gUnknown_085150A4 + .4byte gUnknown_085150A4 + .4byte gUnknown_085152A4 + .4byte gUnknown_085152A4 + +gUnknown_08515404:: + .incbin "baserom.gba", 0x515404, 0x80 + +gUnknown_08515484:: + .incbin "baserom.gba", 0x515484, 0x80 + +gUnknown_08515504:: + .incbin "baserom.gba", 0x515504, 0x80 + +gUnknown_08515584:: + .incbin "baserom.gba", 0x515584, 0x80 + +gUnknown_08515604:: + .incbin "baserom.gba", 0x515604, 0x80 + +gUnknown_08515684:: + .incbin "baserom.gba", 0x515684, 0x80 + +gUnknown_08515704:: + .incbin "baserom.gba", 0x515704, 0x80 + +gUnknown_08515784:: + .incbin "baserom.gba", 0x515784, 0x80 + gUnknown_08515804:: @ 8515804 .incbin "baserom.gba", 0x515804, 0x20 + gUnknown_08515824:: @ 8515824 - .incbin "baserom.gba", 0x515824, 0x140 +@ replacing .incbin "baserom.gba", 0x00515824, 0x20 + .4byte gUnknown_08515404 + .4byte gUnknown_08515484 + .4byte gUnknown_08515504 + .4byte gUnknown_08515584 + .4byte gUnknown_08515604 + .4byte gUnknown_08515684 + .4byte gUnknown_08515704 + .4byte gUnknown_08515784 + +gUnknown_08515844:: + .incbin "baserom.gba", 0x515844, 0x80 + +gUnknown_085158C4:: + .incbin "baserom.gba", 0x5158c4, 0xa0 + gUnknown_08515964:: @ 8515964 - .incbin "baserom.gba", 0x515964, 0x428 +@ replacing .incbin "baserom.gba", 0x00515964, 0x8 + .4byte gUnknown_08515844 + .4byte gUnknown_085158C4 + +gUnknown_0851596C:: + .incbin "baserom.gba", 0x51596c, 0x80 + +gUnknown_085159EC:: + .incbin "baserom.gba", 0x5159ec, 0x80 + +gUnknown_08515A6C:: + .incbin "baserom.gba", 0x515a6c, 0x80 + +gUnknown_08515AEC:: + .incbin "baserom.gba", 0x515aec, 0x2a0 + gUnknown_08515D8C:: @ 8515D8C - .incbin "baserom.gba", 0x515d8c, 0x430 +@ replacing .incbin "baserom.gba", 0x00515d8c, 0x10 + .4byte gUnknown_0851596C + .4byte gUnknown_085159EC + .4byte gUnknown_08515A6C + .4byte gUnknown_08515AEC + +gUnknown_08515D9C:: + .incbin "baserom.gba", 0x515d9c, 0x80 + +gUnknown_08515E1C:: + .incbin "baserom.gba", 0x515e1c, 0x80 + +gUnknown_08515E9C:: + .incbin "baserom.gba", 0x515e9c, 0x80 + +gUnknown_08515F1C:: + .incbin "baserom.gba", 0x515f1c, 0x80 + +gUnknown_08515F9C:: + .incbin "baserom.gba", 0x515f9c, 0x80 + +gUnknown_0851601C:: + .incbin "baserom.gba", 0x51601c, 0x80 + +gUnknown_0851609C:: + .incbin "baserom.gba", 0x51609c, 0x80 + +gUnknown_0851611C:: + .incbin "baserom.gba", 0x51611c, 0xa0 + gUnknown_085161BC:: @ 85161BC - .incbin "baserom.gba", 0x5161bc, 0x20 +@ replacing .incbin "baserom.gba", 0x005161bc, 0x20 + .4byte VRAM + 0x5c00 + .4byte VRAM + 0x5c80 + .4byte VRAM + 0x5d00 + .4byte VRAM + 0x5d80 + .4byte VRAM + 0x5e00 + .4byte VRAM + 0x5e80 + .4byte VRAM + 0x5f00 + .4byte VRAM + 0x5f80 gUnknown_085161DC:: @ 85161DC - .incbin "baserom.gba", 0x5161dc, 0x320 +@ replacing .incbin "baserom.gba", 0x005161dc, 0x20 + .4byte gUnknown_08515D9C + .4byte gUnknown_08515E1C + .4byte gUnknown_08515E9C + .4byte gUnknown_08515F1C + .4byte gUnknown_08515F9C + .4byte gUnknown_0851601C + .4byte gUnknown_0851609C + .4byte gUnknown_0851611C + +gUnknown_085161FC:: + .incbin "baserom.gba", 0x5161fc, 0xc0 + +gUnknown_085162BC:: + .incbin "baserom.gba", 0x5162bc, 0xc0 + +gUnknown_0851637C:: + .incbin "baserom.gba", 0x51637c, 0xc0 + +gUnknown_0851643C:: + .incbin "baserom.gba", 0x51643c, 0xc0 + gUnknown_085164FC:: @ 85164FC - .incbin "baserom.gba", 0x5164fc, 0x310 +@ replacing .incbin "baserom.gba", 0x005164fc, 0x10 + .4byte gUnknown_085161FC + .4byte gUnknown_085162BC + .4byte gUnknown_0851637C + .4byte gUnknown_0851643C + +gUnknown_0851650C:: + .incbin "baserom.gba", 0x51650c, 0xc0 + +gUnknown_085165CC:: + .incbin "baserom.gba", 0x5165cc, 0xc0 + +gUnknown_0851668C:: + .incbin "baserom.gba", 0x51668c, 0xc0 + +gUnknown_0851674C:: + .incbin "baserom.gba", 0x51674c, 0xc0 + gUnknown_0851680C:: @ 851680C - .incbin "baserom.gba", 0x51680c, 0x310 +@ replacing .incbin "baserom.gba", 0x0051680c, 0x10 + .4byte gUnknown_0851650C + .4byte gUnknown_085165CC + .4byte gUnknown_0851668C + .4byte gUnknown_0851674C + +gUnknown_0851681C:: @ 851680C + .incbin "baserom.gba", 0x51681c, 0xc0 + +gUnknown_085168DC:: + .incbin "baserom.gba", 0x5168dc, 0xc0 + +gUnknown_0851699C:: + .incbin "baserom.gba", 0x51699c, 0xc0 + +gUnknown_08516A5C:: + .incbin "baserom.gba", 0x516a5c, 0xc0 + gUnknown_08516B1C:: @ 8516B1C - .incbin "baserom.gba", 0x516b1c, 0x210 +@ replacing .incbin "baserom.gba", 0x00516b1c, 0x10 + .4byte gUnknown_0851681C + .4byte gUnknown_085168DC + .4byte gUnknown_0851699C + .4byte gUnknown_08516A5C + +gUnknown_08516B2C:: + .incbin "baserom.gba", 0x516b2c, 0x80 + +gUnknown_08516BAC:: + .incbin "baserom.gba", 0x516bac, 0x80 + +gUnknown_08516C2C:: + .incbin "baserom.gba", 0x516c2c, 0x80 + +gUnknown_08516CAC:: + .incbin "baserom.gba", 0x516cac, 0x80 + gUnknown_08516D2C:: @ 8516D2C - .incbin "baserom.gba", 0x516d2c, 0x110 +@ replacing .incbin "baserom.gba", 0x00516d2c, 0x10 + .4byte gUnknown_08516B2C + .4byte gUnknown_08516BAC + .4byte gUnknown_08516C2C + .4byte gUnknown_08516CAC + +gUnknown_08516D3C:: + .incbin "baserom.gba", 0x516d3c, 0x80 + +gUnknown_08516DBC:: + .incbin "baserom.gba", 0x516dbc, 0x80 + gUnknown_08516E3C:: @ 8516E3C - .incbin "baserom.gba", 0x516e3c, 0xc08 +@ replacing .incbin "baserom.gba", 0x00516e3c, 0x8 + .4byte gUnknown_08516D3C + .4byte gUnknown_08516DBC + +gUnknown_08516E44:: + .incbin "baserom.gba", 0x516e44, 0x180 + +gUnknown_08516FC4:: + .incbin "baserom.gba", 0x516fc4, 0x180 + +gUnknown_08517144:: + .incbin "baserom.gba", 0x517144, 0x180 + +gUnknown_085172C4:: + .incbin "baserom.gba", 0x5172c4, 0x280 + +gUnknown_08517544:: + .incbin "baserom.gba", 0x517544, 0x280 + +gUnknown_085177C4:: + .incbin "baserom.gba", 0x5177c4, 0x280 + gUnknown_08517A44:: @ 8517A44 - .incbin "baserom.gba", 0x517a44, 0xc +@ replacing .incbin "baserom.gba", 0x00517a44, 0xc + .4byte gUnknown_08516E44 + .4byte gUnknown_08516FC4 + .4byte gUnknown_08517144 gUnknown_08517A50:: @ 8517A50 - .incbin "baserom.gba", 0x517a50, 0x1ac +@ replacing .incbin "baserom.gba", 0x00517a50, 0xc + .4byte gUnknown_085172C4 + .4byte gUnknown_08517544 + .4byte gUnknown_085177C4 + +gUnknown_08517A5C:: + .incbin "baserom.gba", 0x517a5c, 0x80 + +gUnknown_08517ADC:: + .incbin "baserom.gba", 0x517adc, 0x80 + +gUnknown_08517B5C:: + .incbin "baserom.gba", 0x517b5c, 0x20 + +gUnknown_08517B7C:: + .incbin "baserom.gba", 0x517b7c, 0x20 + +gUnknown_08517B9C:: + .incbin "baserom.gba", 0x517b9c, 0x20 + +gUnknown_08517BBC:: + .incbin "baserom.gba", 0x517bbc, 0x40 + gUnknown_08517BFC:: @ 8517BFC - .incbin "baserom.gba", 0x517bfc, 0x10 +@ replacing .incbin "baserom.gba", 0x00517bfc, 0x10 + .4byte gUnknown_08517B5C + .4byte gUnknown_08517B7C + .4byte gUnknown_08517B9C + .4byte gUnknown_08517BBC gUnknown_08517C0C:: @ 8517C0C - .incbin "baserom.gba", 0x517c0c, 0x428 +@ replacing .incbin "baserom.gba", 0x00517c0c, 0x8 + .4byte gUnknown_08517A5C + .4byte gUnknown_08517ADC + +gUnknown_08517C14:: + .incbin "baserom.gba", 0x517c14, 0x200 + +gUnknown_08517E14:: + .incbin "baserom.gba", 0x517e14, 0x220 + gUnknown_08518034:: @ 8518034 - .incbin "baserom.gba", 0x518034, 0x268 +@ replacing .incbin "baserom.gba", 0x00518034, 0x8 + .4byte gUnknown_08517C14 + .4byte gUnknown_08517E14 + +gUnknown_0851803C:: + .incbin "baserom.gba", 0x51803c, 0x120 + +gUnknown_0851815C:: + .incbin "baserom.gba", 0x51815c, 0x140 + gUnknown_0851829C:: @ 851829C - .incbin "baserom.gba", 0x51829c, 0x8028 +@ replacing .incbin "baserom.gba", 0x0051829c, 0x8 + .4byte gUnknown_0851803C + .4byte gUnknown_0851815C + +gUnknown_085182A4:: + .incbin "baserom.gba", 0x5182a4, 0xc00 + +gUnknown_08518EA4:: + .incbin "baserom.gba", 0x518ea4, 0xc00 + +gUnknown_08519AA4:: + .incbin "baserom.gba", 0x519aa4, 0xc00 + +gUnknown_0851A6A4:: + .incbin "baserom.gba", 0x51a6a4, 0xc00 + +gUnknown_0851B2A4:: + .incbin "baserom.gba", 0x51b2a4, 0xc00 + +gUnknown_0851BEA4:: + .incbin "baserom.gba", 0x51bea4, 0xc00 + +gUnknown_0851CAA4:: + .incbin "baserom.gba", 0x51caa4, 0xc00 + +gUnknown_0851D6A4:: + .incbin "baserom.gba", 0x51d6a4, 0x2c20 + gUnknown_085202C4:: @ 85202C4 - .incbin "baserom.gba", 0x5202c4, 0x45a0 +@ replacing .incbin "baserom.gba", 0x005202c4, 0x20 + .4byte gUnknown_085182A4 + .4byte gUnknown_08518EA4 + .4byte gUnknown_08519AA4 + .4byte gUnknown_0851A6A4 + .4byte gUnknown_0851B2A4 + .4byte gUnknown_0851BEA4 + .4byte gUnknown_0851CAA4 + .4byte gUnknown_0851D6A4 + +gUnknown_085202E4:: + .incbin "baserom.gba", 0x5202e4, 0x100 + +gUnknown_085203E4:: + .incbin "baserom.gba", 0x5203e4, 0x100 + +gUnknown_085204E4:: + .incbin "baserom.gba", 0x5204e4, 0x120 + +gUnknown_08520604:: + .incbin "baserom.gba", 0x520604, 0x100 + +gUnknown_08520704:: + .incbin "baserom.gba", 0x520704, 0x100 + +gUnknown_08520804:: + .incbin "baserom.gba", 0x520804, 0x4060 + gUnknown_08524864:: @ 8524864 - .incbin "baserom.gba", 0x524864, 0xc +@ replacing .incbin "baserom.gba", 0x00524864, 0xc + .4byte gUnknown_085202E4 + .4byte gUnknown_085203E4 + .4byte gUnknown_085204E4 gUnknown_08524870:: @ 8524870 - .incbin "baserom.gba", 0x524870, 0xc +@ replacing .incbin "baserom.gba", 0x00524870, 0xc + .4byte gUnknown_08520604 + .4byte gUnknown_08520704 + .4byte gUnknown_08520804 + diff --git a/src/palette.c b/src/palette.c index 4c09206ba9..da03516d0f 100644 --- a/src/palette.c +++ b/src/palette.c @@ -62,8 +62,6 @@ EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0}; extern const u16 *const gUnknown_08510764[]; -extern const u16 *const gUnknown_085112C4[]; -extern const u16 *const gUnknown_08511BCC[]; extern const u16 *const gUnknown_08512574[]; extern const u16 *const gUnknown_08512E54[]; extern const u16 *const gUnknown_08513174[]; @@ -695,7 +693,7 @@ void sub_80A1394(u16 timer_div, u8 timer_mod) } else { - timer_div &= 3; + timer_div %= 4; sub_80A0980(gUnknown_085153E4[timer_div], gUnknown_08515344[timer_mod], 0x80); sub_80A0980(gUnknown_085153F4[timer_div], gUnknown_08515364[timer_mod], 0x80); } @@ -704,7 +702,7 @@ void sub_80A1394(u16 timer_div, u8 timer_mod) void sub_80A1434(u16 timer_div, u8 timer_mod) { timer_div -= timer_mod; - timer_div &= 0x7; + timer_div %= 8; if (gUnknown_08515824[timer_div]) sub_80A0980(gUnknown_08515824[timer_div], gUnknown_08515804[timer_mod], 0x80); } @@ -728,7 +726,7 @@ void sub_80A1498(u16 timer) void sub_80A14C0(u16 timer_div, u8 timer_mod) { timer_div -= timer_mod; - timer_div &= 7; + timer_div %= 8; sub_80A0980(gUnknown_085161DC[timer_div], gUnknown_085161BC[timer_mod], 0x80); } From 4d78e62fd90531a1469b7a1a3e279a5a734f62b2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Sep 2017 22:23:00 -0400 Subject: [PATCH 068/182] Sanitize data/tilesets.s --- asm/battle_anim.s | 4 ++-- data/tileset.s | 26 ++++++++++++-------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 9c0190214d..ee85f55656 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -449,10 +449,10 @@ ma00_load_graphics: @ 80A3D24 lsls r0, 8 orrs r4, r0 lsls r5, r4, 3 - ldr r0, =gUnknown_085112C4 + ldr r0, =gUnknown_085112B4 + 0x10 adds r0, r5, r0 bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_08511BCC + ldr r0, =gUnknown_08511A34 + 0x198 adds r5, r0 adds r0, r5, 0 bl LoadCompressedObjectPaletteUsingHeap diff --git a/data/tileset.s b/data/tileset.s index 3a1efb5fcf..c60d83d61c 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -11,8 +11,9 @@ gUnknown_08510644:: .incbin "baserom.gba", 0x510644, 0x80 gUnknown_085106C4:: - .incbin "baserom.gba", 0x5106c4, 0xa0 + .incbin "baserom.gba", 0x5106c4, 0x80 + .space 0x20 gUnknown_08510764:: @ 8510764 @ replacing .incbin "baserom.gba", 0x00510764, 0x10 @@ -31,21 +32,13 @@ gUnknown_08510EF4:: .incbin "baserom.gba", 0x510ef4, 0x3c0 gUnknown_085112B4:: - .incbin "baserom.gba", 0x5112b4, 0x10 - - -gUnknown_085112C4:: @ 85112C4 - .incbin "baserom.gba", 0x5112c4, 0x3b0 + .incbin "baserom.gba", 0x5112b4, 0x3c0 gUnknown_08511674:: .incbin "baserom.gba", 0x511674, 0x3c0 gUnknown_08511A34:: - .incbin "baserom.gba", 0x511a34, 0x198 - - -gUnknown_08511BCC:: @ 8511BCC - .incbin "baserom.gba", 0x511bcc, 0x228 + .incbin "baserom.gba", 0x511a34, 0x3c0 gUnknown_08511DF4:: .incbin "baserom.gba", 0x511df4, 0x3c0 @@ -259,8 +252,9 @@ gUnknown_08515224:: .incbin "baserom.gba", 0x515224, 0x80 gUnknown_085152A4:: - .incbin "baserom.gba", 0x5152a4, 0xa0 + .incbin "baserom.gba", 0x5152a4, 0x80 + .space 0x20 gUnknown_08515344:: @ 8515344 @ replacing .incbin "baserom.gba", 0x00515344, 0x20 @@ -372,7 +366,9 @@ gUnknown_08515844:: .incbin "baserom.gba", 0x515844, 0x80 gUnknown_085158C4:: - .incbin "baserom.gba", 0x5158c4, 0xa0 + .incbin "baserom.gba", 0x5158c4, 0x80 + + .space 0x20 gUnknown_08515964:: @ 8515964 @@ -422,7 +418,9 @@ gUnknown_0851609C:: .incbin "baserom.gba", 0x51609c, 0x80 gUnknown_0851611C:: - .incbin "baserom.gba", 0x51611c, 0xa0 + .incbin "baserom.gba", 0x51611c, 0x80 + + .space 0x20 gUnknown_085161BC:: @ 85161BC From c9cad220de5c7946d523dd18de5c61f4f09d63fc Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sun, 1 Oct 2017 03:08:19 -0500 Subject: [PATCH 069/182] Extract baseroms from intro_credits_graphics.s --- asm/intro.s | 18 +- data/evolution_graphics.s | 2 +- data/graphics.s | 71 +-- data/intro.s | 108 ++--- data/intro_credits_graphics.s | 407 +++++++++++++++--- graphics/intro/85F0CFC.pal | 51 +++ graphics/intro/85F0D5C.pal | 51 +++ graphics/intro/85F231C.pal | 35 ++ .../intro/{leaves_gflogo.png => intro.png} | Bin ...aves_foreground.bin => intro1_bg0_map.bin} | Bin ...eaves_midground.bin => intro1_bg1_map.bin} | Bin ...leaves_bgleaves.bin => intro1_bg2_map.bin} | Bin ...ves_bgmountains.bin => intro1_bg3_map.bin} | Bin .../intro/{leaves.pal => intro1_bgpal.pal} | 0 .../{leaves_drops.pal => intro1_drops.pal} | 0 graphics/intro/{latis.png => intro1_eon.png} | Bin ...lying_silhouette.pal => intro1_flygon.pal} | 0 ...lygon_silhouette.png => intro1_flygon.png} | Bin .../{leaves_gflogo.pal => intro1_gflogo.pal} | 0 ...droplet_sparkle.png => intro1_sparkle.png} | Bin graphics/intro/intro2_bgclouds.pal | 19 + graphics/intro/intro2_bgclouds.png | Bin 0 -> 718 bytes graphics/intro/intro2_bgclouds2.png | Bin 0 -> 296 bytes graphics/intro/intro2_bgclouds_afternoon.pal | 19 + graphics/intro/intro2_bgclouds_map.bin | Bin 0 -> 4096 bytes graphics/intro/intro2_bgnight.pal | 19 + graphics/intro/intro2_bgnight.png | Bin 0 -> 536 bytes graphics/intro/intro2_bgnight_map.bin | Bin 0 -> 4096 bytes graphics/intro/intro2_bgtrees.pal | 19 + graphics/intro/intro2_bgtrees.png | Bin 0 -> 1023 bytes graphics/intro/intro2_bgtrees2.pal | 19 + graphics/intro/intro2_bgtrees2_afternoon.pal | 19 + graphics/intro/intro2_bgtrees_map.bin | Bin 0 -> 4096 bytes graphics/intro/intro2_bgtreessmall.png | Bin 0 -> 360 bytes graphics/intro/intro2_bicycle.png | Bin 0 -> 735 bytes graphics/intro/intro2_brendan.pal | 19 + graphics/intro/intro2_brendan.png | Bin 0 -> 1476 bytes graphics/intro/intro2_brendan_noturn.pal | 19 + graphics/intro/intro2_brendan_noturn.png | Bin 0 -> 1165 bytes ...{kyogre_bubbles.pal => intro2_bubbles.pal} | 0 ...{kyogre_bubbles.png => intro2_bubbles.png} | Bin graphics/intro/intro2_flygon.pal | 19 + graphics/intro/intro2_flygon.png | Bin 0 -> 942 bytes graphics/intro/intro2_grass.pal | 19 + graphics/intro/intro2_grass.png | Bin 0 -> 399 bytes graphics/intro/intro2_grass_afternoon.pal | 19 + graphics/intro/intro2_grass_map.bin | Bin 0 -> 2048 bytes graphics/intro/intro2_grass_night.pal | 19 + graphics/intro/intro2_latias.pal | 19 + graphics/intro/intro2_latias.png | Bin 0 -> 680 bytes graphics/intro/intro2_latios.pal | 19 + graphics/intro/intro2_latios.png | Bin 0 -> 796 bytes .../{manectric.pal => intro2_manectric.pal} | 0 .../{manectric.png => intro2_manectric.png} | Bin graphics/intro/intro2_may.pal | 19 + graphics/intro/intro2_may.png | Bin 0 -> 1644 bytes graphics/intro/intro2_may_noturn.png | Bin 0 -> 1275 bytes graphics/intro/intro2_night.png | Bin 0 -> 254 bytes .../intro/{torchic.pal => intro2_torchic.pal} | 0 .../intro/{torchic.png => intro2_torchic.png} | Bin .../intro/{volbeat.pal => intro2_volbeat.pal} | 0 .../intro/{volbeat.png => intro2_volbeat.png} | Bin ...aza_lightning.pal => intro3_lightning.pal} | 0 ...aza_lightning.png => intro3_lightning.png} | Bin .../{battle_circle.png => intro3_misc.png} | Bin .../{battle_circle_1.pal => intro3_misc1.pal} | 0 .../{battle_circle_2.pal => intro3_misc2.pal} | 0 ...attle_pokeball.pal => intro3_pokeball.pal} | 0 ...attle_pokeball.png => intro3_pokeball.png} | Bin ...e_pokeball.bin => intro3_pokeball_map.bin} | Bin ...{battle_streaks.pal => intro3_streaks.pal} | 0 ...{battle_streaks.png => intro3_streaks.png} | Bin ...tle_streaks.bin => intro3_streaks_map.bin} | Bin .../intro/{leaves_bg.png => introgfx.png} | Bin 74 files changed, 888 insertions(+), 140 deletions(-) create mode 100644 graphics/intro/85F0CFC.pal create mode 100644 graphics/intro/85F0D5C.pal create mode 100644 graphics/intro/85F231C.pal rename graphics/intro/{leaves_gflogo.png => intro.png} (100%) rename graphics/intro/{leaves_foreground.bin => intro1_bg0_map.bin} (100%) rename graphics/intro/{leaves_midground.bin => intro1_bg1_map.bin} (100%) rename graphics/intro/{leaves_bgleaves.bin => intro1_bg2_map.bin} (100%) rename graphics/intro/{leaves_bgmountains.bin => intro1_bg3_map.bin} (100%) rename graphics/intro/{leaves.pal => intro1_bgpal.pal} (100%) rename graphics/intro/{leaves_drops.pal => intro1_drops.pal} (100%) rename graphics/intro/{latis.png => intro1_eon.png} (100%) rename graphics/intro/{flying_silhouette.pal => intro1_flygon.pal} (100%) rename graphics/intro/{flygon_silhouette.png => intro1_flygon.png} (100%) rename graphics/intro/{leaves_gflogo.pal => intro1_gflogo.pal} (100%) rename graphics/intro/{droplet_sparkle.png => intro1_sparkle.png} (100%) create mode 100644 graphics/intro/intro2_bgclouds.pal create mode 100644 graphics/intro/intro2_bgclouds.png create mode 100644 graphics/intro/intro2_bgclouds2.png create mode 100644 graphics/intro/intro2_bgclouds_afternoon.pal create mode 100644 graphics/intro/intro2_bgclouds_map.bin create mode 100644 graphics/intro/intro2_bgnight.pal create mode 100644 graphics/intro/intro2_bgnight.png create mode 100644 graphics/intro/intro2_bgnight_map.bin create mode 100644 graphics/intro/intro2_bgtrees.pal create mode 100644 graphics/intro/intro2_bgtrees.png create mode 100644 graphics/intro/intro2_bgtrees2.pal create mode 100644 graphics/intro/intro2_bgtrees2_afternoon.pal create mode 100644 graphics/intro/intro2_bgtrees_map.bin create mode 100644 graphics/intro/intro2_bgtreessmall.png create mode 100644 graphics/intro/intro2_bicycle.png create mode 100644 graphics/intro/intro2_brendan.pal create mode 100644 graphics/intro/intro2_brendan.png create mode 100644 graphics/intro/intro2_brendan_noturn.pal create mode 100644 graphics/intro/intro2_brendan_noturn.png rename graphics/intro/{kyogre_bubbles.pal => intro2_bubbles.pal} (100%) rename graphics/intro/{kyogre_bubbles.png => intro2_bubbles.png} (100%) create mode 100644 graphics/intro/intro2_flygon.pal create mode 100644 graphics/intro/intro2_flygon.png create mode 100644 graphics/intro/intro2_grass.pal create mode 100644 graphics/intro/intro2_grass.png create mode 100644 graphics/intro/intro2_grass_afternoon.pal create mode 100644 graphics/intro/intro2_grass_map.bin create mode 100644 graphics/intro/intro2_grass_night.pal create mode 100644 graphics/intro/intro2_latias.pal create mode 100644 graphics/intro/intro2_latias.png create mode 100644 graphics/intro/intro2_latios.pal create mode 100644 graphics/intro/intro2_latios.png rename graphics/intro/{manectric.pal => intro2_manectric.pal} (100%) rename graphics/intro/{manectric.png => intro2_manectric.png} (100%) create mode 100644 graphics/intro/intro2_may.pal create mode 100644 graphics/intro/intro2_may.png create mode 100644 graphics/intro/intro2_may_noturn.png create mode 100644 graphics/intro/intro2_night.png rename graphics/intro/{torchic.pal => intro2_torchic.pal} (100%) rename graphics/intro/{torchic.png => intro2_torchic.png} (100%) rename graphics/intro/{volbeat.pal => intro2_volbeat.pal} (100%) rename graphics/intro/{volbeat.png => intro2_volbeat.png} (100%) rename graphics/intro/{rayquaza_lightning.pal => intro3_lightning.pal} (100%) rename graphics/intro/{rayquaza_lightning.png => intro3_lightning.png} (100%) rename graphics/intro/{battle_circle.png => intro3_misc.png} (100%) rename graphics/intro/{battle_circle_1.pal => intro3_misc1.pal} (100%) rename graphics/intro/{battle_circle_2.pal => intro3_misc2.pal} (100%) rename graphics/intro/{battle_pokeball.pal => intro3_pokeball.pal} (100%) rename graphics/intro/{battle_pokeball.png => intro3_pokeball.png} (100%) rename graphics/intro/{battle_pokeball.bin => intro3_pokeball_map.bin} (100%) rename graphics/intro/{battle_streaks.pal => intro3_streaks.pal} (100%) rename graphics/intro/{battle_streaks.png => intro3_streaks.png} (100%) rename graphics/intro/{battle_streaks.bin => intro3_streaks_map.bin} (100%) rename graphics/intro/{leaves_bg.png => introgfx.png} (100%) diff --git a/asm/intro.s b/asm/intro.s index 01ac2204bc..cd8f7c2d87 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -376,11 +376,11 @@ task_intro_1: @ 816CF18 movs r0, 0x12 movs r1, 0x28 bl SetGpuReg - ldr r0, =gIntroLeavesBgGfx + ldr r0, =gIntro1BGLeavesGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram - ldr r0, =gIntroLeavesForegroundTilemap + ldr r0, =gIntro1BG0_Tilemap ldr r1, =0x06008000 bl LZ77UnCompVram ldr r1, =0x06008800 @@ -393,7 +393,7 @@ task_intro_1: @ 816CF18 ldr r5, =0x81000400 str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gIntroLeavesMidgroundTilemap + ldr r0, =gIntro1BG1_Tilemap ldr r1, =0x06009000 bl LZ77UnCompVram ldr r1, =0x06009800 @@ -403,7 +403,7 @@ task_intro_1: @ 816CF18 str r1, [r4, 0x4] str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gIntroLeavesBgLeavesTilemap + ldr r0, =gIntro1BG2_Tilemap ldr r1, =0x0600a000 bl LZ77UnCompVram ldr r1, =0x0600a800 @@ -413,7 +413,7 @@ task_intro_1: @ 816CF18 str r1, [r4, 0x4] str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gIntroLeavesBgMountainsTilemap + ldr r0, =gIntro1BG3_Tilemap ldr r1, =0x0600b000 bl LZ77UnCompVram ldr r1, =0x0600b800 @@ -423,7 +423,7 @@ task_intro_1: @ 816CF18 str r1, [r4, 0x4] str r5, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, =gIntroLeavesPal + ldr r0, =gIntro1BGPals movs r5, 0x80 lsls r5, 2 movs r1, 0 @@ -1779,14 +1779,14 @@ task_intro_10: @ 816DBAC lsls r5, 24 lsrs r5, 24 bl intro_reset_and_hide_bgs - ldr r0, =gIntroBattlePokeBallGfx + ldr r0, =gIntro3Pokeball_Gfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram - ldr r0, =gIntroBattlePokeBallTilemap + ldr r0, =gIntro3Pokeball_Tilemap ldr r1, =0x06004000 bl LZ77UnCompVram - ldr r0, =gIntroBattlePokeBallPal + ldr r0, =gIntro3PokeballPal movs r2, 0x80 lsls r2, 2 movs r1, 0 diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s index c357efb129..d6ad2e5780 100644 --- a/data/evolution_graphics.s +++ b/data/evolution_graphics.s @@ -3,7 +3,7 @@ .section .rodata - .incbin "baserom.gba", 0x5f53c4, 0x48 + .incbin "baserom.gba", 0x5f53cc, 0x40 gUnknown_085F540C:: @ 85F540C .incbin "baserom.gba", 0x5f540c, 0x10 diff --git a/data/graphics.s b/data/graphics.s index e206a46f12..e5c8ad49f0 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -377,8 +377,13 @@ gUnknown_08D85A1C:: @ 8D85A1C .incbin "baserom.gba", 0xd85a1c, 0x234 gUnknown_08D85C50:: @ 8D85C50 - .incbin "baserom.gba", 0xd85c50, 0x80 + .incbin "baserom.gba", 0xd85c50, 0x60 + .align 2 +gIntro2BrendanNoTurnPal:: @ 8D85CB0 + .incbin "graphics/intro/intro2_brendan_noturn.gbapal" + + .align 2 gUnknown_08D85CD0:: @ 8D85CD0 .incbin "baserom.gba", 0xd85cd0, 0x182 @@ -392,36 +397,46 @@ gUnknown_08D85E7C:: @ 8D85E7C .incbin "baserom.gba", 0xd85e7c, 0x54 .align 2 -gIntroVolbeatPal:: @ 8D85ED0 - .incbin "graphics/intro/volbeat.gbapal" +gIntro2VolbeatPal:: @ 8D85ED0 + .incbin "graphics/intro/intro2_volbeat.gbapal" .align 2 -gIntroTorchicPal:: @ 8D85EF0 - .incbin "graphics/intro/torchic.gbapal" +gIntro2TorchicPal:: @ 8D85EF0 + .incbin "graphics/intro/intro2_torchic.gbapal" .align 2 -gIntroManectricPal:: @ 8D85ED0 - .incbin "graphics/intro/manectric.gbapal" +gIntro2ManectricPal:: @ 8D85ED0 + .incbin "graphics/intro/intro2_manectric.gbapal" .align 2 -gUnknown_08D85F30:: @ 8D85ED0 - .incbin "baserom.gba", 0xd85f30, 0x20 +gIntro2FlygonPal:: @ 8D85F30 + .incbin "graphics/intro/intro2_flygon.gbapal" .align 2 -gIntroVolbeatGfx:: @ 8D85F50 - .incbin "graphics/intro/volbeat.4bpp.lz" +gIntro2VolbeatGfx:: @ 8D85F50 + .incbin "graphics/intro/intro2_volbeat.4bpp.lz" .align 2 -gIntroTorchicGfx:: @ 8D86130 - .incbin "graphics/intro/torchic.4bpp.lz" +gIntro2TorchicGfx:: @ 8D86130 + .incbin "graphics/intro/intro2_torchic.4bpp.lz" .align 2 -gIntroManectricGfx:: @ 8D86550 - .incbin "graphics/intro/manectric.4bpp.lz" +gIntro2ManectricGfx:: @ 8D86550 + .incbin "graphics/intro/intro2_manectric.4bpp.lz" .align 2 - .incbin "baserom.gba", 0xd8702c, 0x1468 +gIntro2FlygonGfx:: @ 8D8702C + .incbin "graphics/intro/intro2_flygon.4bpp.lz" + .align 2 +gIntro2BrendanNoTurnGfx:: @ 8D87568 + .incbin "graphics/intro/intro2_brendan_noturn.4bpp.lz" + + .align 2 +gIntro2MayNoTurnGfx:: @ 8D87CA4 + .incbin "graphics/intro/intro2_may_noturn.4bpp.lz" + + .align 2 gUnknown_08D88494:: @ 8D88494 .incbin "baserom.gba", 0xd88494, 0x8ac @@ -456,12 +471,12 @@ gUnknown_08D8B6E8:: @ 8D8B6E8 .incbin "baserom.gba", 0xd8b6e8, 0x124 .align 2 -gIntroRayquazaLightningGfx:: @ 8D8B80C - .incbin "graphics/intro/rayquaza_lightning.4bpp.lz" +gIntro3LightningGfx:: @ 8D8B80C + .incbin "graphics/intro/intro3_lightning.4bpp.lz" .align 2 -gIntroRayquazaLightningPal:: @ 8D8BA54 - .incbin "graphics/intro/rayquaza_lightning.gbapal" +gIntro3LightningPal:: @ 8D8BA54 + .incbin "graphics/intro/intro3_lightning.gbapal" .align 2 gUnknown_08D8BA74:: @ 8D8BA74 @@ -477,20 +492,20 @@ gUnknown_08D8CCC8:: @ 8D8CCC8 .incbin "baserom.gba", 0xd8ccc8, 0x27c .align 2 -gIntroKyogreBubblesGfx:: @ 8D8CF44 - .incbin "graphics/intro/kyogre_bubbles.4bpp.lz" +gIntro2BubblesGfx:: @ 8D8CF44 + .incbin "graphics/intro/intro2_bubbles.4bpp.lz" .align 2 -gIntroKyogreBubblesPal:: @ 8D8D110 - .incbin "graphics/intro/kyogre_bubbles.gbapal" +gIntro2BubblesPal:: @ 8D8D110 + .incbin "graphics/intro/intro2_bubbles.gbapal" .align 2 -gIntroFlygonSilhouette:: @ 8D8D130 - .incbin "graphics/intro/flygon_silhouette.4bpp.lz" +gIntro1FlygonGfx:: @ 8D8D130 + .incbin "graphics/intro/intro1_flygon.4bpp.lz" .align 2 -gIntroLeavesDropletSparkleGfx:: @ 8D8D208 - .incbin "graphics/intro/droplet_sparkle.4bpp.lz" +gIntro1SparkleGfx:: @ 8D8D208 + .incbin "graphics/intro/intro1_sparkle.4bpp.lz" .align 2 .incbin "baserom.gba", 0xd8d2a4, 0x16c diff --git a/data/intro.s b/data/intro.s index ea6223c7ea..d43a579724 100644 --- a/data/intro.s +++ b/data/intro.s @@ -4,79 +4,79 @@ .section .rodata .align 2 -gIntroLeavesDropsPal:: @ 85DFF90 - .incbin "graphics/intro/leaves_drops.gbapal" +gIntro1DropsPal:: @ 85DFF90 + .incbin "graphics/intro/intro1_drops.gbapal" .align 2 -gIntroLeavesGFLogoPal:: @ 85DFFB0 - .incbin "graphics/intro/leaves_gflogo.gbapal" +gIntro1GFLogoPal:: @ 85DFFB0 + .incbin "graphics/intro/intro1_gflogo.gbapal" .align 2 -gIntroLeavesGFLogoGfx:: @ 85DFFD0 - .incbin "graphics/intro/leaves_gflogo.4bpp.lz" +gIntroTiles:: @ 85DFFD0 + .incbin "graphics/intro/intro.4bpp.lz" .align 2 -gIntroLeavesPal:: @ 85E05C4 - .incbin "graphics/intro/leaves.gbapal" +gIntro1BGPals:: @ 85E05C4 + .incbin "graphics/intro/intro1_bgpal.gbapal" .align 2 -gIntroLeavesForegroundTilemap:: @ 85E07C4 - .incbin "graphics/intro/leaves_foreground.bin.lz" +gIntro1BG0_Tilemap:: @ 85E07C4 + .incbin "graphics/intro/intro1_bg0_map.bin.lz" .align 2 -gIntroLeavesMidgroundTilemap:: @ 85E0B78 - .incbin "graphics/intro/leaves_midground.bin.lz" +gIntro1BG1_Tilemap:: @ 85E0B78 + .incbin "graphics/intro/intro1_bg1_map.bin.lz" .align 2 -gIntroLeavesBgLeavesTilemap:: @ 85E0EAC - .incbin "graphics/intro/leaves_bgleaves.bin.lz" +gIntro1BG2_Tilemap:: @ 85E0EAC + .incbin "graphics/intro/intro1_bg2_map.bin.lz" .align 2 -gIntroLeavesBgMountainsTilemap:: @ 85E119C - .incbin "graphics/intro/leaves_bgmountains.bin.lz" +gIntro1BG3_Tilemap:: @ 85E119C + .incbin "graphics/intro/intro1_bg3_map.bin.lz" .align 2 -gIntroLeavesBgGfx:: @ 85E13B4 - .incbin "graphics/intro/leaves_bg.4bpp.lz" +gIntro1BGLeavesGfx:: @ 85E13B4 + .incbin "graphics/intro/introgfx.4bpp.lz" .align 2 -gIntroBattlePokeBallPal:: @ 85E3524 - .incbin "graphics/intro/battle_pokeball.gbapal" +gIntro3PokeballPal:: @ 85E3524 + .incbin "graphics/intro/intro3_pokeball.gbapal" .align 2 -gIntroBattlePokeBallTilemap:: @ 85E3724 - .incbin "graphics/intro/battle_pokeball.bin.lz" +gIntro3Pokeball_Tilemap:: @ 85E3724 + .incbin "graphics/intro/intro3_pokeball_map.bin.lz" .align 2 -gIntroBattlePokeBallGfx:: @ 85E3854 - .incbin "graphics/intro/battle_pokeball.8bpp.lz" +gIntro3Pokeball_Gfx:: @ 85E3854 + .incbin "graphics/intro/intro3_pokeball.8bpp.lz" .align 2 - .incbin "graphics/intro/battle_streaks.gbapal" + .incbin "graphics/intro/intro3_streaks.gbapal" .align 2 - .incbin "graphics/intro/battle_streaks.4bpp.lz" + .incbin "graphics/intro/intro3_streaks.4bpp.lz" .align 2 - .incbin "graphics/intro/battle_streaks.bin.lz" + .incbin "graphics/intro/intro3_streaks_map.bin.lz" .align 2 -gIntroBattleCirclePal:: @ 85E4570 - .incbin "graphics/intro/battle_circle_1.gbapal" +gIntro3Misc1Pal:: @ 85E4570 + .incbin "graphics/intro/intro3_misc1.gbapal" .align 2 - .incbin "graphics/intro/battle_circle_2.gbapal" + .incbin "graphics/intro/intro3_misc2.gbapal" .align 2 -gIntroBattleCircleGfx:: @ 85E45B0 - .incbin "graphics/intro/battle_circle.4bpp.lz" +gIntro3MiscTiles:: @ 85E45B0 + .incbin "graphics/intro/intro3_misc.4bpp.lz" .align 2 -gIntroFlyingPkmnSilhouettePal:: @ 85E492C - .incbin "graphics/intro/flying_silhouette.gbapal" +gIntro1FlygonPal:: @ 85E492C + .incbin "graphics/intro/intro1_flygon.gbapal" .align 2 - .incbin "graphics/intro/latis.4bpp.lz" + .incbin "graphics/intro/intro1_eon.4bpp.lz" .align 2 .byte 0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x06 @@ -90,12 +90,12 @@ gIntroFlyingPkmnSilhouettePal:: @ 85E492C .align 2 gUnknown_085E4A74:: @ 85E4A74 - obj_tiles gIntroLeavesDropletSparkleGfx, 0x0400, 0x05e1 + obj_tiles gIntro1SparkleGfx, 0x0400, 0x05e1 null_obj_tiles .align 2 gUnknown_085E4A84:: @ 85E4A84 - obj_pal gIntroRayquazaLightningPal, 0x05e1 + obj_pal gIntro3LightningPal, 0x05e1 null_obj_pal .align 2 @@ -122,16 +122,16 @@ gUnknown_085E4AD0:: @ 85E4AD0 .align 2 gUnknown_085E4AE8:: @ 85E4AE8 - obj_tiles gIntroVolbeatGfx, 0x0400, 0x05dc - obj_tiles gIntroTorchicGfx, 0x0c00, 0x05dd - obj_tiles gIntroManectricGfx, 0x2000, 0x05de + obj_tiles gIntro2VolbeatGfx, 0x0400, 0x05dc + obj_tiles gIntro2TorchicGfx, 0x0c00, 0x05dd + obj_tiles gIntro2ManectricGfx, 0x2000, 0x05de null_obj_tiles .align 2 gUnknown_085E4B08:: @ 85E4B08 - obj_pal gIntroVolbeatPal, 0x05dc - obj_pal gIntroTorchicPal, 0x05dd - obj_pal gIntroManectricPal, 0x05de + obj_pal gIntro2VolbeatPal, 0x05dc + obj_pal gIntro2TorchicPal, 0x05dd + obj_pal gIntro2ManectricPal, 0x05de null_obj_pal .align 2 @@ -194,12 +194,12 @@ gUnknown_085E4BDC:: @ 85E4BDC .align 2 gUnknown_085E4BF4:: @ 85E4BF4 - obj_tiles gIntroRayquazaLightningGfx, 0x0c00, 0x05df + obj_tiles gIntro3LightningGfx, 0x0c00, 0x05df null_obj_tiles .align 2 gUnknown_085E4C04:: @ 85E4C04 - obj_pal gIntroRayquazaLightningPal, 0x05df + obj_pal gIntro3LightningPal, 0x05df null_obj_pal .align 2 @@ -236,12 +236,12 @@ gUnknown_085E4C64:: @ 85E4C64 .align 2 gUnknown_085E4C88:: @ 85E4C88 - obj_tiles gIntroKyogreBubblesGfx, 0x0600, 0x05e0 + obj_tiles gIntro2BubblesGfx, 0x0600, 0x05e0 null_obj_tiles .align 2 gUnknown_085E4C98:: @ 85E4C98 - obj_pal gIntroKyogreBubblesPal, 0x05e0 + obj_pal gIntro2BubblesPal, 0x05e0 null_obj_pal .align 2 @@ -488,18 +488,18 @@ gUnknown_085E4FC4:: @ 85E4FC4 .align 2 gUnknown_085E4FDC:: @ 85E4FDC - obj_tiles gIntroLeavesGFLogoGfx, 0x1400, 0x07d0 + obj_tiles gIntroTiles, 0x1400, 0x07d0 null_obj_tiles gUnknown_085E4FEC:: @ 85E4FEC - obj_tiles gIntroFlygonSilhouette, 0x0400, 0x07d2 + obj_tiles gIntro1FlygonGfx, 0x0400, 0x07d2 null_obj_tiles .align 2 gUnknown_085E4FFC:: @ 85E4FFC - obj_pal gIntroLeavesDropsPal, 0x07d0 - obj_pal gIntroLeavesGFLogoPal, 0x07d1 - obj_pal gIntroFlyingPkmnSilhouettePal, 0x07d2 + obj_pal gIntro1DropsPal, 0x07d0 + obj_pal gIntro1GFLogoPal, 0x07d1 + obj_pal gIntro1FlygonPal, 0x07d2 null_obj_pal .align 2 @@ -520,10 +520,10 @@ gUnknown_085E5030:: @ 85E5030 .align 2 gUnknown_085E5048:: @ 85E5048 - obj_tiles gIntroBattleCircleGfx, 0x0a00, 0x07d3 + obj_tiles gIntro3MiscTiles, 0x0a00, 0x07d3 null_obj_tiles gUnknown_085E5058:: @ 85E5058 - obj_pal gIntroBattleCirclePal, 0x07d3 + obj_pal gIntro3Misc1Pal, 0x07d3 null_obj_pal diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s index a1a0eb4609..636c1a8fbd 100644 --- a/data/intro_credits_graphics.s +++ b/data/intro_credits_graphics.s @@ -3,146 +3,457 @@ .section .rodata + .align 2 gUnknown_085F06E0:: @ 85F06E0 - .incbin "baserom.gba", 0x5f06e0, 0x20 + .incbin "graphics/intro/intro2_grass.gbapal" + .align 2 gUnknown_085F0700:: @ 85F0700 - .incbin "baserom.gba", 0x5f0700, 0x20 + .incbin "graphics/intro/intro2_grass_afternoon.gbapal" + .align 2 gUnknown_085F0720:: @ 85F0720 - .incbin "baserom.gba", 0x5f0720, 0x20 + .incbin "graphics/intro/intro2_grass_night.gbapal" + .align 2 gUnknown_085F0740:: @ 85F0740 - .incbin "baserom.gba", 0x5f0740, 0x480 + .incbin "graphics/intro/intro2_grass.4bpp.lz" + .align 2 gUnknown_085F0BC0:: @ 85F0BC0 - .incbin "baserom.gba", 0x5f0bc0, 0x13c + .incbin "graphics/intro/intro2_grass_map.bin.lz" + .align 2 gUnknown_085F0CFC:: @ 85F0CFC - .incbin "baserom.gba", 0x5f0cfc, 0x60 + .incbin "graphics/intro/85F0CFC.gbapal" + .align 2 gUnknown_085F0D5C:: @ 85F0D5C - .incbin "baserom.gba", 0x5f0d5c, 0x60 + .incbin "graphics/intro/85F0D5C.gbapal" + .align 2 gUnknown_085F0DBC:: @ 85F0DBC - .incbin "baserom.gba", 0x5f0dbc, 0x5dc + .incbin "graphics/intro/intro2_bgclouds.4bpp.lz" + .align 2 gUnknown_085F1398:: @ 85F1398 - .incbin "baserom.gba", 0x5f1398, 0x2d0 + .incbin "graphics/intro/intro2_bgclouds_map.bin.lz" + .align 2 gUnknown_085F1668:: @ 85F1668 - .incbin "baserom.gba", 0x5f1668, 0x20 + .incbin "graphics/intro/intro2_bgclouds.gbapal" + .align 2 gUnknown_085F1688:: @ 85F1688 - .incbin "baserom.gba", 0x5f1688, 0x20 + .incbin "graphics/intro/intro2_bgclouds_afternoon.gbapal" + .align 2 gUnknown_085F16A8:: @ 85F16A8 - .incbin "baserom.gba", 0x5f16a8, 0x13c + .incbin "graphics/intro/intro2_bgclouds2.4bpp.lz" + .align 2 gUnknown_085F17E4:: @ 85F17E4 - .incbin "baserom.gba", 0x5f17e4, 0x20 + .incbin "graphics/intro/intro2_bgtrees2.gbapal" + .align 2 gUnknown_085F1804:: @ 85F1804 - .incbin "baserom.gba", 0x5f1804, 0x20 + .incbin "graphics/intro/intro2_bgtrees2_afternoon.gbapal" + .align 2 gUnknown_085F1824:: @ 85F1824 - .incbin "baserom.gba", 0x5f1824, 0x688 + .incbin "graphics/intro/intro2_bgtrees.4bpp.lz" + .align 2 gUnknown_085F1EAC:: @ 85F1EAC - .incbin "baserom.gba", 0x5f1eac, 0x304 + .incbin "graphics/intro/intro2_bgtrees_map.bin.lz" + .align 2 gUnknown_085F21B0:: @ 85F21B0 - .incbin "baserom.gba", 0x5f21b0, 0x16c + .incbin "graphics/intro/intro2_bgtrees.gbapal" + .align 2 +gIntro2TreeGfx:: @ 85F21D0 + .incbin "graphics/intro/intro2_bgtreessmall.4bpp.lz" + + .align 2 gUnknown_085F231C:: @ 85F231C - .incbin "baserom.gba", 0x5f231c, 0x40 + .incbin "graphics/intro/85F231C.gbapal" + .align 2 gUnknown_085F235C:: @ 85F235C - .incbin "baserom.gba", 0x5f235c, 0x1ec + .incbin "graphics/intro/intro2_bgnight.4bpp.lz" + .align 2 gUnknown_085F2548:: @ 85F2548 - .incbin "baserom.gba", 0x5f2548, 0x20 + .incbin "graphics/intro/intro2_bgnight.gbapal" + .align 2 gUnknown_085F2568:: @ 85F2568 - .incbin "baserom.gba", 0x5f2568, 0x2ae4 + .incbin "graphics/intro/intro2_bgnight_map.bin.lz" + .align 2 +gIntro2NightGfx:: @ 85F2814 + .incbin "graphics/intro/intro2_night.4bpp.lz" + + .align 2 +gIntro2BrendanPal:: @ 85F2898 + .incbin "graphics/intro/intro2_brendan.gbapal" + + .align 2 +gIntro2BrendanGfx:: @ 85F28B8 + .incbin "graphics/intro/intro2_brendan.4bpp.lz" + + .align 2 +gIntro2MayPal:: @ 85F3470 + .incbin "graphics/intro/intro2_may.gbapal" + + .align 2 +gUnknown_085F3490:: @ 85F3490 + .space 0x1E0 + + .align 2 +gIntro2MayGfx:: @ 85F3670 + .incbin "graphics/intro/intro2_may.4bpp.lz" + + .align 2 +gIntro2BicycleGfx:: @ 85F4318 + .incbin "graphics/intro/intro2_bicycle.4bpp.lz" + + .align 2 +gIntro2LatiosPal:: @ 85F4744 + .incbin "graphics/intro/intro2_latios.gbapal" + + .align 2 +gIntro2LatiosGfx:: @ 85F4764 + .incbin "graphics/intro/intro2_latios.4bpp.lz" + + .align 2 +gIntro2LatiasPal:: @ 85F4C08 + .incbin "graphics/intro/intro2_latias.gbapal" + + .align 2 +gIntro2LatiasGfx:: @ 85F4C28 + .incbin "graphics/intro/intro2_latias.4bpp.lz" + + .align 2 gUnknown_085F504C:: @ 85F504C - .incbin "baserom.gba", 0x5f504c, 0x18 + spr_template 0x07d0, 0xffff, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817B62C + .align 2 gUnknown_085F5064:: @ 85F5064 - .incbin "baserom.gba", 0x5f5064, 0x30 + obj_tiles gUnknown_085F16A8, 0x0400, 0x07d0 + null_obj_tiles + .align 2 +gUnknown_085F5074:: @ 85F5074 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gUnknown_085F507C:: @ 85F507C + obj_image_anim_frame 16, 30 + obj_image_anim_end + + .align 2 +gUnknown_085F5084:: @ 85F5084 + obj_image_anim_frame 20, 30 + obj_image_anim_end + + .align 2 +gUnknown_085F508C:: @ 85F508C + obj_image_anim_frame 22, 30 + obj_image_anim_end + + .align 2 gUnknown_085F5094:: @ 85F5094 - .incbin "baserom.gba", 0x5f5094, 0x10 + .4byte gUnknown_085F5074 + .4byte gUnknown_085F507C + .4byte gUnknown_085F5084 + .4byte gUnknown_085F508C + .align 2 gUnknown_085F50A4:: @ 85F50A4 - .incbin "baserom.gba", 0x5f50a4, 0x48 + .byte -128, 72, 32, 100 + .2byte 0xC00 + .space 2 + .byte -128, -98, 32, 100 + .2byte 0xC00 + .space 2 + .byte 65, -64, 40, 101 + .2byte 0x800 + .space 2 + .byte 65, 56, 40, 101 + .2byte 0x800 + .space 2 + .byte 18, 100, 44, 102 + .2byte 0x400 + .space 2 + .byte 18, -104, 44, 102 + .2byte 0x400 + .space 2 + .byte 19, 8, 46, 103 + .2byte 0x100 + .space 2 + .byte 19, 56, 46, 103 + .2byte 0x100 + .space 2 + .byte 19, -16, 46, 103 + .2byte 0x100 + .space 2 + .align 2 gUnknown_085F50EC:: @ 85F50EC - .incbin "baserom.gba", 0x5f50ec, 0x28 + obj_tiles gIntro2TreeGfx, 0x0400, 0x07d0 + null_obj_tiles + .align 2 +gUnknown_085F50FC:: @ 85F50FC + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gUnknown_085F5104:: @ 85F5104 + obj_image_anim_frame 16, 30 + obj_image_anim_end + + .align 2 +gUnknown_085F510C:: @ 85F510C + obj_image_anim_frame 24, 30 + obj_image_anim_end + + .align 2 gUnknown_085F5114:: @ 85F5114 - .incbin "baserom.gba", 0x5f5114, 0xc + .4byte gUnknown_085F50FC + .4byte gUnknown_085F5104 + .4byte gUnknown_085F510C + .align 2 gUnknown_085F5120:: @ 85F5120 - .incbin "baserom.gba", 0x5f5120, 0x60 + .byte -128, 16, 88, 100 + .2byte 0x2000 + .space 2 + .byte -128, 80, 88, 100 + .2byte 0x2000 + .space 2 + .byte -128, -112, 88, 100 + .2byte 0x2000 + .space 2 + .byte -128, -48, 88, 100 + .2byte 0x2000 + .space 2 + .byte -95, 40, 88, 101 + .2byte 0x1000 + .space 2 + .byte -95, 104, 88, 101 + .2byte 0x1000 + .space 2 + .byte -95, -88, 88, 101 + .2byte 0x1000 + .space 2 + .byte -95, -24, 88, 101 + .2byte 0x1000 + .space 2 + .byte -94, 56, 88, 102 + .2byte 0x800 + .space 2 + .byte -94, 120, 88, 102 + .2byte 0x800 + .space 2 + .byte -94, -72, 88, 102 + .2byte 0x800 + .space 2 + .byte -94, -8, 88, 102 + .2byte 0x800 + .space 2 + .align 2 gUnknown_085F5180:: @ 85F5180 - .incbin "baserom.gba", 0x5f5180, 0x18 + obj_tiles gIntro2NightGfx, 0x0400, 0x07d0 + null_obj_tiles + .align 2 +gUnknown_085F5190:: @ 85F5190 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 gUnknown_085F5198:: @ 85F5198 - .incbin "baserom.gba", 0x5f5198, 0x4 + .4byte gUnknown_085F5190 + .align 2 gUnknown_085F519C:: @ 85F519C - .incbin "baserom.gba", 0x5f519c, 0x50 + .byte -128, 24, 88, 100 + .2byte 0x1000 + .space 2 + .byte -128, 64, 88, 100 + .2byte 0x1000 + .space 2 + .byte -128, 104, 88, 100 + .2byte 0x1000 + .space 2 + .byte -128, -112, 88, 100 + .2byte 0x1000 + .space 2 + .byte -128, -72, 88, 100 + .2byte 0x1000 + .space 2 + .byte -128, -32, 88, 100 + .2byte 0x1000 + .space 2 + .align 2 +gOamData_85F51CC:: @ 85F51CC + .2byte 0x00A0 + .2byte 0xC000 + .2byte 0x0400 + + .align 2 +gUnknown_085F51D4:: @ 85F51D4 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 64, 8 + obj_image_anim_frame 128, 8 + obj_image_anim_frame 192, 8 + obj_image_anim_jump 0 + + .align 2 +gUnknown_085F51E8:: @ 85F51E8 + .4byte gUnknown_085F51D4 + + .align 2 gUnknown_085F51EC:: @ 85F51EC - .incbin "baserom.gba", 0x5f51ec, 0x18 + spr_template 0x03ea, 0x03ea, gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65 + .align 2 gUnknown_085F5204:: @ 85F5204 - .incbin "baserom.gba", 0x5f5204, 0x38 + spr_template 0x03eb, 0x03eb, gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65 + .align 2 +gUnknown_085F521C:: @ 85F521C + .2byte 0x40A0 + .2byte 0xC000 + .2byte 0x0400 + + .align 2 +gUnknown_085F5224:: @ 85F5224 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 32, 8 + obj_image_anim_frame 64, 8 + obj_image_anim_frame 96, 8 + obj_image_anim_jump 0 + + .align 2 +gUnknown_085F5238:: @ 85F5238 + .4byte gUnknown_085F5224 + + .align 2 gUnknown_085F523C:: @ 85F523C - .incbin "baserom.gba", 0x5f523c, 0x18 + spr_template 0x03e9, 0x03ea, gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4 + .align 2 gUnknown_085F5254:: @ 85F5254 - .incbin "baserom.gba", 0x5f5254, 0x38 + spr_template 0x03e9, 0x03eb, gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4 + .align 2 +gUnknown_085F526C:: @ 85F526C + .2byte 0x00A0 + .2byte 0xC000 + .2byte 0x0400 + + .align 2 +gUnknown_085F5274:: @ 85F5274 + obj_image_anim_frame 0, 16 + obj_image_anim_end + + .align 2 +gUnknown_085F527C:: @ 85F527C + obj_image_anim_frame 64, 16 + obj_image_anim_end + + .align 2 +gUnknown_085F5284:: @ 85F5284 + .4byte gUnknown_085F5274 + .4byte gUnknown_085F527C + + .align 2 gUnknown_085F528C:: @ 85F528C - .incbin "baserom.gba", 0x5f528c, 0x18 + spr_template 0x03ec, 0x03ec, gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66 + .align 2 gUnknown_085F52A4:: @ 85F52A4 - .incbin "baserom.gba", 0x5f52a4, 0x18 + spr_template 0x03ed, 0x03ed, gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66 + .align 2 gUnknown_085F52BC:: @ 85F52BC - .incbin "baserom.gba", 0x5f52bc, 0x10 + obj_tiles gIntro2BrendanNoTurnGfx, 0x2000, 0x03ea + null_obj_tiles + .align 2 gUnknown_085F52CC:: @ 85F52CC - .incbin "baserom.gba", 0x5f52cc, 0x10 + obj_tiles gIntro2MayNoTurnGfx, 0x2000, 0x03eb + null_obj_tiles + .align 2 gUnknown_085F52DC:: @ 85F52DC - .incbin "baserom.gba", 0x5f52dc, 0x20 + obj_tiles gIntro2BicycleGfx, 0x1000, 0x03e9 + null_obj_tiles + .align 2 +gUnknown_085F52EC:: @ 85F52EC + obj_tiles gIntro2FlygonGfx, 0x1000, 0x03ec + null_obj_tiles + + .align 2 gUnknown_085F52FC:: @ 85F52FC - .incbin "baserom.gba", 0x5f52fc, 0x10 + obj_tiles gIntro2FlygonGfx, 0x1000, 0x03ed + null_obj_tiles + .align 2 gUnknown_085F530C:: @ 85F530C - .incbin "baserom.gba", 0x5f530c, 0x28 + obj_pal gIntro2BrendanNoTurnPal, 0x03ea + obj_pal gIntro2BrendanNoTurnPal, 0x03eb + obj_pal gIntro2FlygonPal, 0x03ec + obj_pal gIntro2FlygonPal, 0x03ed + null_obj_pal + .align 2 gUnknown_085F5334:: @ 85F5334 - .incbin "baserom.gba", 0x5f5334, 0x10 + obj_tiles gIntro2BrendanGfx, 0x3800, 0x03ea + null_obj_tiles + .align 2 gUnknown_085F5344:: @ 85F5344 - .incbin "baserom.gba", 0x5f5344, 0x10 + obj_tiles gIntro2MayGfx, 0x3800, 0x03eb + null_obj_tiles + .align 2 gUnknown_085F5354:: @ 85F5354 - .incbin "baserom.gba", 0x5f5354, 0x30 + obj_tiles gIntro2BicycleGfx, 0x1000, 0x03e9 + null_obj_tiles + .align 2 +gUnknown_085F5364:: @ 85F5364 + obj_tiles gIntro2LatiosGfx, 0x1000, 0x03ec + null_obj_tiles + + .align 2 +gUnknown_085F5374:: @ 85F5374 + obj_tiles gIntro2LatiasGfx, 0x1000, 0x03ed + null_obj_pal + + .align 2 gUnknown_085F5384:: @ 85F5384 - .incbin "baserom.gba", 0x5f5384, 0x28 + obj_pal gIntro2BrendanPal, 0x03ea + obj_pal gIntro2MayPal, 0x03eb + obj_pal gIntro2LatiosPal, 0x03ec + obj_pal gIntro2LatiasPal, 0x03ed + null_obj_pal + .align 2 gUnknown_085F53AC:: @ 85F53AC - .incbin "baserom.gba", 0x5f53ac, 0x10 + obj_tiles gIntro2BrendanGfx, 0x2000, 0x03ea + null_obj_tiles + .align 2 gUnknown_085F53BC:: @ 85F53BC - .incbin "baserom.gba", 0x5f53bc, 0x8 + obj_tiles gIntro2MayGfx, 0x2000, 0x03eb + null_obj_tiles diff --git a/graphics/intro/85F0CFC.pal b/graphics/intro/85F0CFC.pal new file mode 100644 index 0000000000..09a1ee7283 --- /dev/null +++ b/graphics/intro/85F0CFC.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +74 82 82 +90 123 123 +205 205 197 +255 255 255 +82 131 246 +115 164 246 +139 197 246 +180 222 230 +197 246 230 +164 230 246 +131 164 255 +189 197 255 +156 197 255 +180 230 255 +189 197 255 +0 0 0 +255 255 255 +230 246 255 +205 238 255 +180 230 255 +164 222 255 +139 213 255 +115 205 255 +98 197 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 255 255 +230 246 255 +205 238 255 +180 230 255 +164 222 255 +139 213 255 +115 205 255 +98 197 255 +230 230 255 +246 255 255 +213 222 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/85F0D5C.pal b/graphics/intro/85F0D5C.pal new file mode 100644 index 0000000000..4ff388f486 --- /dev/null +++ b/graphics/intro/85F0D5C.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +74 82 82 +90 123 123 +205 205 197 +255 255 255 +255 98 82 +255 123 106 +255 148 139 +255 172 172 +255 197 205 +255 222 238 +156 180 172 +197 197 156 +172 189 164 +255 222 156 +222 172 106 +0 0 0 +255 255 255 +255 238 205 +255 222 156 +255 222 156 +255 213 131 +255 197 106 +255 172 98 +255 156 90 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 255 255 +255 238 205 +255 222 156 +255 222 156 +255 213 131 +255 197 106 +255 172 98 +255 156 90 +255 238 205 +246 255 255 +255 222 156 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/85F231C.pal b/graphics/intro/85F231C.pal new file mode 100644 index 0000000000..82855d9387 --- /dev/null +++ b/graphics/intro/85F231C.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +0 0 0 +49 115 246 +57 74 123 +57 74 123 +57 74 123 +49 57 98 +49 49 82 +49 32 57 +49 24 41 +0 0 0 +0 0 0 +0 0 0 +57 74 123 +57 74 123 +246 246 123 +41 65 90 +0 0 0 +0 0 0 +0 0 0 +82 90 148 +148 131 164 +57 74 123 +131 106 156 +98 90 123 +156 164 197 +139 148 172 +90 131 139 +189 197 213 +90 115 164 +230 230 82 +131 131 164 +246 246 123 diff --git a/graphics/intro/leaves_gflogo.png b/graphics/intro/intro.png similarity index 100% rename from graphics/intro/leaves_gflogo.png rename to graphics/intro/intro.png diff --git a/graphics/intro/leaves_foreground.bin b/graphics/intro/intro1_bg0_map.bin similarity index 100% rename from graphics/intro/leaves_foreground.bin rename to graphics/intro/intro1_bg0_map.bin diff --git a/graphics/intro/leaves_midground.bin b/graphics/intro/intro1_bg1_map.bin similarity index 100% rename from graphics/intro/leaves_midground.bin rename to graphics/intro/intro1_bg1_map.bin diff --git a/graphics/intro/leaves_bgleaves.bin b/graphics/intro/intro1_bg2_map.bin similarity index 100% rename from graphics/intro/leaves_bgleaves.bin rename to graphics/intro/intro1_bg2_map.bin diff --git a/graphics/intro/leaves_bgmountains.bin b/graphics/intro/intro1_bg3_map.bin similarity index 100% rename from graphics/intro/leaves_bgmountains.bin rename to graphics/intro/intro1_bg3_map.bin diff --git a/graphics/intro/leaves.pal b/graphics/intro/intro1_bgpal.pal similarity index 100% rename from graphics/intro/leaves.pal rename to graphics/intro/intro1_bgpal.pal diff --git a/graphics/intro/leaves_drops.pal b/graphics/intro/intro1_drops.pal similarity index 100% rename from graphics/intro/leaves_drops.pal rename to graphics/intro/intro1_drops.pal diff --git a/graphics/intro/latis.png b/graphics/intro/intro1_eon.png similarity index 100% rename from graphics/intro/latis.png rename to graphics/intro/intro1_eon.png diff --git a/graphics/intro/flying_silhouette.pal b/graphics/intro/intro1_flygon.pal similarity index 100% rename from graphics/intro/flying_silhouette.pal rename to graphics/intro/intro1_flygon.pal diff --git a/graphics/intro/flygon_silhouette.png b/graphics/intro/intro1_flygon.png similarity index 100% rename from graphics/intro/flygon_silhouette.png rename to graphics/intro/intro1_flygon.png diff --git a/graphics/intro/leaves_gflogo.pal b/graphics/intro/intro1_gflogo.pal similarity index 100% rename from graphics/intro/leaves_gflogo.pal rename to graphics/intro/intro1_gflogo.pal diff --git a/graphics/intro/droplet_sparkle.png b/graphics/intro/intro1_sparkle.png similarity index 100% rename from graphics/intro/droplet_sparkle.png rename to graphics/intro/intro1_sparkle.png diff --git a/graphics/intro/intro2_bgclouds.pal b/graphics/intro/intro2_bgclouds.pal new file mode 100644 index 0000000000..6b312a16cc --- /dev/null +++ b/graphics/intro/intro2_bgclouds.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +230 246 255 +205 238 255 +180 230 255 +164 222 255 +139 213 255 +115 205 255 +98 197 255 +230 230 255 +246 255 255 +213 222 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/intro2_bgclouds.png b/graphics/intro/intro2_bgclouds.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba3d78f45aed3ff5bf85954d12356a977cdd13a GIT binary patch literal 718 zcmV;<0x|uGP)Xa7JLR#4Ez;Xw%JBZxDN;e%1s(=i6(p95c(n|n>G$Dvi zw8LjB4ltzsQ3*z zWblso1c*<7aDdb4KS}Tf`KttwckgUPbLr<@MxDWWc z5BK=>v2-7x#}|F36xTiL>H@BlpT4`zlHk^FsV=`~XYx^lj7`c>wMU31*L{p5 z2Iowe+s6{f7^;h-2AdRD(L^N*WQX1EwmoCl;~yC0I=#r6+BusQ*LV}N>a79l^9}&o zK%n%_jaq!z!1w?psN|vrG#K|Y*cosD@WrG{24i-J${^&oY+&LrYHyhxtQxaR2Efg@ z8I8c$V+JoI<_-WtGb7si??()LX2SshILk!G4`C=WZ0@98{B;l78T#RsnRT<7NXErq z_gEWRU)O4@_s!~12yFCV%+uBlXPwn@9i^g^DQggpN^d58a@fTT32g3U()5x+PEIA+ zqY(k(G*;cF&(CF688ks{rNP7oi>Q3zO{4F3li~{lh+B`kCG7GTl73lIe0iP5Fq=5= zP!dim1#6lqBna8WG4f4(%sFgZHN<&cVB!>JbDe1Op{GI1ZFM;7x=1NZDAeaz%K~`_ zP2=myg5M`jzUV{b3bvQ}^%+XPDHNCFsa{{CBb#%hOKQkl==OLMPh<{0QNEpbkTw~8 zXp@lX>O+5sg+ifFC=?2XLZMJ76bgkxq400<6FDWmP$>2Nd;kCd07*qoM6N<$g1}NAZN3ui(`mI@7qa+V$B9T&XKWt z=T{Xl*_1y0S=5`PZlUw`ir!VHFY_lRAKvsQY|-(vtCgDB8MkpyVf!Gn;Md|N+t3S( zk2AQ=?iVRNzDU<*I6Q@2&+ zTvEBgLJ8Hr?Cg$7o literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_bgclouds_afternoon.pal b/graphics/intro/intro2_bgclouds_afternoon.pal new file mode 100644 index 0000000000..6d5d9dbcd1 --- /dev/null +++ b/graphics/intro/intro2_bgclouds_afternoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +255 238 205 +255 222 156 +255 222 156 +255 213 131 +255 197 106 +255 172 98 +255 156 90 +255 238 205 +246 255 255 +255 222 156 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/intro2_bgclouds_map.bin b/graphics/intro/intro2_bgclouds_map.bin new file mode 100644 index 0000000000000000000000000000000000000000..25b65f7662058ccf38bdea02be4414c075c5c066 GIT binary patch literal 4096 zcmeHE*GdFI5UkTSAU@3Hd{>vuiUG`u0Ssrr0A~IF&v0*-VRu~xVSKZvVCn9ys%dIc zCgp@7V+&ZWuFe7&mU1Fm5nNBZDk*$fJNFN+_d(Dr%^sfhL;Lkh;{Q zDitY9Ns3aCyyPS+8A*FjH;E*O7TV~biynH?m5#KfCH$6~RO>_&&;&FAP2e{PAaRzt z!d0#jnC1*;ImdY}c-_w@&O6{Ck9f>=Zg7)Z+~y8-Y;VtiY&l8^VjOXn0 zf|tJDI!Dz&oVUm&Uh&%FKk$)HeC7*Z`R41bb9|3DZ;$&vH@M@SAAUD*4JLzca*yCf k%djfj1J*U***(Jle_Ks4^o!QvR4YwD6VL=Sf&ZSsC-{_SH~;_u literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_bgnight.pal b/graphics/intro/intro2_bgnight.pal new file mode 100644 index 0000000000..765aad45a8 --- /dev/null +++ b/graphics/intro/intro2_bgnight.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +82 90 148 +148 131 164 +57 74 123 +131 106 156 +98 90 123 +156 164 197 +139 148 172 +90 131 139 +189 197 213 +90 115 164 +230 230 82 +131 131 164 +246 246 123 diff --git a/graphics/intro/intro2_bgnight.png b/graphics/intro/intro2_bgnight.png new file mode 100644 index 0000000000000000000000000000000000000000..cb95bb04fece529ea4a64d5f8afdb2844e705122 GIT binary patch literal 536 zcmV+z0_XjSP)N_&H9oMKvgoTSBzl&o5Vi@n9wT63i4=2C-$r1tiEn2e8a0004_ zNkll0Ji_4)4tH>v6~$rifyUU&4hFz@ zhQppfW9rKeFldGS4*T~&27`^{UNVq}%vs>DXO8SV;2aEqDelf3aFw6rW`RM)4)+nD z4p|ChDS!+dR0Noz1N%&X+MdKNGGmv5VfEV))wW;pD){iyjR@=XD&fNqz^@bAkE``p z8Beg?x&+A3jwa~3kW84scqM?p$_8~p?{S7r$Pk_$Zf!ItD{`YVhyV-{D_+A&x$b1r zMnJ}y4gj7z(R7-V1KU8$sHx@dV@b8IRhP`VGL60f_hFm_;*q;O{eh#2Iwc aFu!k^{<#RbO?W5(00001u>3^Yw!dI3`yZUp5%1^@qdt-E-$NlAF%33W5l+T-zf6HBQ`jJ5rNQ$v1@EouE@)>eE>JiTN3-ru{CnQ)ilL z(ao@_rrT6=+Kr~`{R-voO^o6LVs zxjw}Vb1bmLk_*l`<1{m&T(6^nF(x?TgcFaPaLfkle!?}qiyrzIV2BY$9CE-ud+d7u tHGPc@w%B2h0}kAC$1OKpd;c|kbc{x zl3ITucBYDA%FT+V_36DQDFqY-sc%>}_;ri*1HTqnMW#5G!19_B@EuD6eqv1m++ZmM zShIqO3U0N4+l3bJFWx1LTSSr9+2@Zhk>-%yv!2xOm z7)P)GDWHB-06&K1{Yjt&$n_6p8Aw5{aQ2Q^lh^^fImBfy!EzU246 z66+;-Z2-eu84z47u?hW?wFcBgy>qe5#j?Oy%}>_F%HE)`R@io2ax|#jZCR9e@$Si5 zsZ7>tJrc~K;;hAkjoMu{TVntyHukCjxetxAY6ko_09lo}7?T0}&jtwb$$(0T{Zv4u z1q>1<0xAjEPXx$?LKq1X0hd^))XED0%KQZxsHGQWAT3lHu>YDFXut&-sJ$=AK+u|Q z;Y(knibU`^A^yYa&+Hv@fcG{TM*cc{KYT_X;?+ zX#t60)+Kt-W&k)G>ID(^B;Y9p03Hpq{yhQB09Y^omJK&c^^R@QgN%ST{&t|Ceoq4u z52B8e$fgd55tl1 zW=DHGlE4NFkpzHF1H_K>hF}Dp8$1LOm>DJ>NKcSnn@j|_vMO1BS?)PO<{}XQKLxxWd019w12E%-VPtl8oUr7lJ zJO?C&t6+Zxjbb@b%->)2c%qlBC`0}G%Gm%GWk_Gr86FtK!!QQm2d?!7qE32X;clB) t)JZ^ijnqX7M16RWbImo^TyxE(>n}%8`gP_!mKOj3002ovPDHLkV1i7F!~p;R literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_bgtrees2.pal b/graphics/intro/intro2_bgtrees2.pal new file mode 100644 index 0000000000..5c506481a2 --- /dev/null +++ b/graphics/intro/intro2_bgtrees2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +156 189 246 +172 205 246 +197 230 255 +213 246 255 +238 255 255 +156 180 172 +197 197 156 +172 189 164 +98 139 98 +98 156 57 +123 164 131 +156 213 82 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/intro2_bgtrees2_afternoon.pal b/graphics/intro/intro2_bgtrees2_afternoon.pal new file mode 100644 index 0000000000..9736a6e953 --- /dev/null +++ b/graphics/intro/intro2_bgtrees2_afternoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 106 57 +255 131 82 +255 197 106 +255 213 131 +255 222 156 +156 180 172 +197 197 156 +172 189 164 +115 139 57 +98 156 57 +131 172 57 +189 197 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/intro2_bgtrees_map.bin b/graphics/intro/intro2_bgtrees_map.bin new file mode 100644 index 0000000000000000000000000000000000000000..d1c23cc3662c54e1fa87200e06cf729db8ccb827 GIT binary patch literal 4096 zcmeIu*;3D89LMq3OybOzJqbmUrAtt5Ah`i@18GCWRI;W9Em~-#y=bhVFruWp@;h|) z%=~{x|C#4`AAAqq^Er6lIdW35Njh?+W3zN@k&f+l*eTC0yX~>pKKmVz@1O#Q6bkvn zjyS4Fv15)aaYCt+%A9iA8E1ujx$Neg3YE^w^j5i`+C`b(OD?N%MW%O~NGuQw!~)q_ zKzvzUpw?A&>NO<4Xw>AI>u&t_qmXaYuETAe$>xr`?z!)QW-VIXbW6xT_QX@Y`jUOW z0nZE?@=%vYy7dV8m&Uv@ZX(%Fnlf$1tYIUbdtp?_zxB?0AAC&qpDg<9i?8O)d+m({ lA^+2gUw&In_G|uF_t%Cc%f9*UhmhYY5(~rvu|Ref_y@*Y=tTek literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_bgtreessmall.png b/graphics/intro/intro2_bgtreessmall.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7213b89b0419d24c1a435d13947ceebaa983c GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQU(D&A+A7r&fafp&VD=k?Elqo z|KI)pKWEFDqethg*}EjEJ1J?7W%ZKgIafjYA;7idks^@w+0(@_#GRmOfQ}G z&7WAz#C9ddpznd-FA3)`m(wR+z1Kb?64=S^68csueD-D~hUM4WPKOD|oI4$+^}tI& zWT&E~DML?9sH?&GpBowY&Ho51GuAY4Ejc{(#k&)1VzJ6ca+%gkCmCO0;N?`X+*G~m zu|cGZ)Pc)$^wORu3V42V)aC8(z5UvD8;74-pN*ixfg{_xPKURuq&L^7=5YAtiO20w zxq0O6Kd(*J2RHp@`;k2H_wvuDJ&aDu1r{4m|HJwBIm0QNb9y*YD(|ASJ+T7#rPl8nL`0007N zNklB>G#($`;~$=n^L)6~KUhMX2LAvz#Xs!M?Wd0& RYUls}002ovPDHLkV1m~-RXYFx literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_brendan.pal b/graphics/intro/intro2_brendan.pal new file mode 100644 index 0000000000..a948fb920c --- /dev/null +++ b/graphics/intro/intro2_brendan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +74 189 172 +82 74 74 +139 139 123 +197 189 222 +255 255 255 +230 49 0 +246 148 0 +0 0 0 +255 213 148 +222 164 139 +0 0 0 +246 57 131 +189 57 115 +131 255 131 +82 197 90 +131 164 65 diff --git a/graphics/intro/intro2_brendan.png b/graphics/intro/intro2_brendan.png new file mode 100644 index 0000000000000000000000000000000000000000..045953002df62aecb21ea823705a433daa6fca1e GIT binary patch literal 1476 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 literal 0 HcmV?d00001 diff --git a/graphics/intro/kyogre_bubbles.pal b/graphics/intro/intro2_bubbles.pal similarity index 100% rename from graphics/intro/kyogre_bubbles.pal rename to graphics/intro/intro2_bubbles.pal diff --git a/graphics/intro/kyogre_bubbles.png b/graphics/intro/intro2_bubbles.png similarity index 100% rename from graphics/intro/kyogre_bubbles.png rename to graphics/intro/intro2_bubbles.png diff --git a/graphics/intro/intro2_flygon.pal b/graphics/intro/intro2_flygon.pal new file mode 100644 index 0000000000..09607ac173 --- /dev/null +++ b/graphics/intro/intro2_flygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +74 189 172 +82 74 74 +139 139 123 +197 189 222 +255 255 255 +164 98 106 +238 57 115 +255 106 139 +255 197 180 +246 255 139 +213 238 106 +172 213 65 +164 222 139 +123 197 115 +90 148 82 +0 0 0 diff --git a/graphics/intro/intro2_flygon.png b/graphics/intro/intro2_flygon.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0b8d72857deda53b33e82b917c742f2fa0e712 GIT binary patch literal 942 zcmV;f15x~mP)?G0{OaH~01~Q{+cdS$h z>Zyq*?2NYSxS0+I?a5fG0AsyC`hqd`wqB#1Mx1}@eF;6CuErIJfEslOIgIkV(X1*- zBV>0V-|aMr5JEqPUW4d-W;g_mw7c)#G!Iz!A&?4afZ4d?I0uYP=RhW)fpeR7oHp;Xi?11w3J_gt z^O`!%Hs?GgwmPu@A;fXuxgxe{8wL!42;)V7z_rdg$I;@kAh954Oo52qf+FtgY*Jgp z5<+1sCN2V8d+b0O<9T5WIARC|_YncxxZi;N<^z>GaL6zdqK7$Gm^0XXyg*d6MxUL- zihMu-^*pph40)9AGafMZJ_o>(L4)&wR9a|rJMmUSTb6{FbPca%Nx%? zsCPB4_1%THiDv_$()&7vTz5#lXj#VXz3`dl!mj z3QL9HL5PuX7d=|TYQ=Oh0Ls+6=jH(P2r65tBJ8Rl+FpE@11i~Eu>dkfzEBAm=c`b+ z)j&k(^I)w5^byft*3y~CE0qBVmjRpD#3ue*kcT(Ja$ww~og#obaQzek&;eW@7de1G zt50P>;S3sZN`PVusLTQ?vw+GhAVG>}K*U)E5R&zA&hd&FwkXYhUAdDsZxtHbI{9E1 z5_a3>mj#5{wof<^$y2zHGy-h(yP8OCdSl&UhPwZOTL#aVyc0Fr+NSkn2y}|Nk?;Y! zWfSjCX#V7q)>8}8^WYMO&szpfhq@2+9aH1k3K3jhEB literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_grass.pal b/graphics/intro/intro2_grass.pal new file mode 100644 index 0000000000..389977abfb --- /dev/null +++ b/graphics/intro/intro2_grass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +74 82 82 +90 123 123 +205 205 197 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 164 98 +115 197 98 +164 230 90 diff --git a/graphics/intro/intro2_grass.png b/graphics/intro/intro2_grass.png new file mode 100644 index 0000000000000000000000000000000000000000..e573ca45ecf5fc74f43fd0fb537951c830f12527 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLDIg8-ipS0L>b6cklmefI3p|Ns93 zxmZEglBD9JNlTtZo&3(w$H2fS<>}%WlF|5f^26T43OsI!%sW_b)N5?8V%Q|XQ0!MF z;L4df_0IYCoSLEbzY~vk8G41BVZ9c&boPPV|6k^p@S`6{i5_yk*`Zm%#nUNW7V|IYp07=`+QdHn7h^Q%DP z+XTH$>shAr9BkLGJ6F%~W9EbW^V?Z#!PuYW^}P8UkCYkF1IzpetDUj*^%+^=ejq7N LS3j3^P6^!94 literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_grass_afternoon.pal b/graphics/intro/intro2_grass_afternoon.pal new file mode 100644 index 0000000000..20b1e45f57 --- /dev/null +++ b/graphics/intro/intro2_grass_afternoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +74 82 82 +90 123 123 +205 205 197 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 164 98 +106 197 98 +164 197 131 diff --git a/graphics/intro/intro2_grass_map.bin b/graphics/intro/intro2_grass_map.bin new file mode 100644 index 0000000000000000000000000000000000000000..2a6f1a72bd06509f062f65b6fe39bc11f63bf850 GIT binary patch literal 2048 zcmeIuOB#Uy7(mh92o)j9Bm3XnS%M`rH0b~C@Xk&mi9%qt0-0Q)RN2_tsqGycHCmmM frGM7DxVjnKJ&Yz#FK-{Suce=gLLdY};6DOCeul=* literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_grass_night.pal b/graphics/intro/intro2_grass_night.pal new file mode 100644 index 0000000000..e44980f782 --- /dev/null +++ b/graphics/intro/intro2_grass_night.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +74 82 82 +90 123 123 +205 205 197 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 164 98 +106 197 98 +131 197 164 diff --git a/graphics/intro/intro2_latias.pal b/graphics/intro/intro2_latias.pal new file mode 100644 index 0000000000..0af96be298 --- /dev/null +++ b/graphics/intro/intro2_latias.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +123 106 106 +115 131 164 +222 213 238 +255 255 255 +213 65 57 +238 106 32 +172 74 65 +255 90 65 +180 172 197 +189 139 57 +189 98 41 +90 115 180 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/intro/intro2_latias.png b/graphics/intro/intro2_latias.png new file mode 100644 index 0000000000000000000000000000000000000000..5623895ceecb6b6841526c2fd6be31cd49706a5f GIT binary patch literal 680 zcmV;Z0$2TsP)HIlW>jT644j0000000000brxEX0006r zNklg3J^BoR|NhNJ0q+rpu`2l_pl?5kShuRgv8Cs2HYda2qBbi8)MQs{Tsdr zAf}WiO(R2(finGkAfzK?n~!o-4G`a!0er1TNGaRO3DbaDgY z$PLKR2n|7c= z8|RQ^sq(Rm_sTp^I|K77g>s}aFgNgJMHyHcU{S%>xn&7DhikP&b_c{RG-&H)KsIO% z><*}{Tj$UPFarTE5bGM49Jn|L%+)|ETY+;K(!u~h){h5Zh8B;Yi_OogxPRYtWJahv zTtj9vZC?SudSI5KdzJJ(eop}!$v4T*zC$)8*lsI&Xep;e4u7J-0?!HYOEiQm${8Uh zcGK7Q94i<71$RWvsgF?bf~y79Hf5(xfp0L!CG1N$48Yfre~&yYTkHdUS5erH7u(=- z+2YmLQ~GGA3*Z&;*?u5|xj2~WJKlIWo$tBd|8Gef)43XVyaX)z9{mHSkmm6Owbo?- O00000o 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 literal 0 HcmV?d00001 diff --git a/graphics/intro/intro2_night.png b/graphics/intro/intro2_night.png new file mode 100644 index 0000000000000000000000000000000000000000..9a10567bbe0bd9ca9474dba028e2f7512488b7c0 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-A0X`wFKpFyqqNYq~USjE0-JCTiDXMzTlB3;I)%}os(8t>XF<)) zOTK-pp3&2v57fX};1OBOz`%DHgc*%YzM5WfZQOb371pX=0s|kY~3r-gLWI{)EPj oMh>Y@JwmwuI{v!7@iAM6zP|4Vqk~RSD?kqQboFyt=akR{03|3|B>(^b literal 0 HcmV?d00001 diff --git a/graphics/intro/torchic.pal b/graphics/intro/intro2_torchic.pal similarity index 100% rename from graphics/intro/torchic.pal rename to graphics/intro/intro2_torchic.pal diff --git a/graphics/intro/torchic.png b/graphics/intro/intro2_torchic.png similarity index 100% rename from graphics/intro/torchic.png rename to graphics/intro/intro2_torchic.png diff --git a/graphics/intro/volbeat.pal b/graphics/intro/intro2_volbeat.pal similarity index 100% rename from graphics/intro/volbeat.pal rename to graphics/intro/intro2_volbeat.pal diff --git a/graphics/intro/volbeat.png b/graphics/intro/intro2_volbeat.png similarity index 100% rename from graphics/intro/volbeat.png rename to graphics/intro/intro2_volbeat.png diff --git a/graphics/intro/rayquaza_lightning.pal b/graphics/intro/intro3_lightning.pal similarity index 100% rename from graphics/intro/rayquaza_lightning.pal rename to graphics/intro/intro3_lightning.pal diff --git a/graphics/intro/rayquaza_lightning.png b/graphics/intro/intro3_lightning.png similarity index 100% rename from graphics/intro/rayquaza_lightning.png rename to graphics/intro/intro3_lightning.png diff --git a/graphics/intro/battle_circle.png b/graphics/intro/intro3_misc.png similarity index 100% rename from graphics/intro/battle_circle.png rename to graphics/intro/intro3_misc.png diff --git a/graphics/intro/battle_circle_1.pal b/graphics/intro/intro3_misc1.pal similarity index 100% rename from graphics/intro/battle_circle_1.pal rename to graphics/intro/intro3_misc1.pal diff --git a/graphics/intro/battle_circle_2.pal b/graphics/intro/intro3_misc2.pal similarity index 100% rename from graphics/intro/battle_circle_2.pal rename to graphics/intro/intro3_misc2.pal diff --git a/graphics/intro/battle_pokeball.pal b/graphics/intro/intro3_pokeball.pal similarity index 100% rename from graphics/intro/battle_pokeball.pal rename to graphics/intro/intro3_pokeball.pal diff --git a/graphics/intro/battle_pokeball.png b/graphics/intro/intro3_pokeball.png similarity index 100% rename from graphics/intro/battle_pokeball.png rename to graphics/intro/intro3_pokeball.png diff --git a/graphics/intro/battle_pokeball.bin b/graphics/intro/intro3_pokeball_map.bin similarity index 100% rename from graphics/intro/battle_pokeball.bin rename to graphics/intro/intro3_pokeball_map.bin diff --git a/graphics/intro/battle_streaks.pal b/graphics/intro/intro3_streaks.pal similarity index 100% rename from graphics/intro/battle_streaks.pal rename to graphics/intro/intro3_streaks.pal diff --git a/graphics/intro/battle_streaks.png b/graphics/intro/intro3_streaks.png similarity index 100% rename from graphics/intro/battle_streaks.png rename to graphics/intro/intro3_streaks.png diff --git a/graphics/intro/battle_streaks.bin b/graphics/intro/intro3_streaks_map.bin similarity index 100% rename from graphics/intro/battle_streaks.bin rename to graphics/intro/intro3_streaks_map.bin diff --git a/graphics/intro/leaves_bg.png b/graphics/intro/introgfx.png similarity index 100% rename from graphics/intro/leaves_bg.png rename to graphics/intro/introgfx.png From 1fcafaf35aaf92251e7802e1e3ea36e8d5a6067b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 1 Oct 2017 18:54:01 +0200 Subject: [PATCH 070/182] more of battle2 done --- asm/battle_1.s | 22 +- asm/battle_2.s | 2681 +-------------------- asm/battle_5.s | 6 +- asm/battle_7.s | 84 +- asm/battle_anim.s | 6 +- asm/battle_anim_80A9C70.s | 4 +- asm/battle_anim_80FE840.s | 6 +- asm/battle_anim_815A0D4.s | 16 +- asm/battle_anim_8170478.s | 38 +- asm/battle_controller_linkopponent.s | 60 +- asm/battle_controller_linkpartner.s | 44 +- asm/battle_controller_opponent.s | 58 +- asm/battle_controller_player.s | 56 +- asm/battle_controller_player_partner.s | 46 +- asm/battle_controller_recorded_opponent.s | 56 +- asm/battle_controller_recorded_player.s | 52 +- asm/battle_controller_safari.s | 10 +- asm/battle_controller_wally.s | 26 +- asm/battle_frontier_2.s | 2 +- asm/battle_interface.s | 38 +- asm/contest.s | 2 +- asm/contest_link_80F57C4.s | 2 +- asm/contest_painting.s | 2 +- asm/evolution_scene.s | 6 +- asm/link.s | 2 +- asm/pokeball.s | 20 +- asm/pokeblock_feed.s | 2 +- asm/recorded_battle.s | 14 +- asm/reshow_battle_screen.s | 12 +- asm/rom_80A5C6C.s | 46 +- asm/script_pokemon_util_80F87D8.s | 2 +- asm/trade.s | 14 +- data/battle_anims.s | 2 +- data/data2b.s | 11 +- data/event_scripts.s | 6 +- include/battle.h | 48 +- include/link.h | 1 + include/main.h | 1 + include/pokemon.h | 1 + include/recorded_battle.h | 3 + include/unknown_task.h | 1 + src/battle_2.c | 1105 ++++++++- src/battle_script_commands.c | 4 +- src/egg_hatch.c | 6 +- sym_ewram.txt | 2 +- 45 files changed, 1518 insertions(+), 3108 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index 168f16ccae..849736cb48 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1358,8 +1358,8 @@ _080356AA: .pool thumb_func_end trs_config - thumb_func_start c2_berry_program_update_menu -c2_berry_program_update_menu: @ 80356D0 + thumb_func_start sub_80356D0 +sub_80356D0: @ 80356D0 push {lr} movs r0, 0x2 bl DisableInterrupts @@ -1381,10 +1381,10 @@ c2_berry_program_update_menu: @ 80356D0 pop {r0} bx r0 .pool - thumb_func_end c2_berry_program_update_menu + thumb_func_end sub_80356D0 - thumb_func_start sub_803570C -sub_803570C: @ 803570C + thumb_func_start ApplyPlayerChosenFrameToBattleMenu +ApplyPlayerChosenFrameToBattleMenu: @ 803570C push {lr} movs r0, 0x2 movs r1, 0x12 @@ -1422,7 +1422,7 @@ _0803575A: pop {r0} bx r0 .pool - thumb_func_end sub_803570C + thumb_func_end ApplyPlayerChosenFrameToBattleMenu thumb_func_start load_battle_oval_graphics load_battle_oval_graphics: @ 8035770 @@ -1685,7 +1685,7 @@ LoadBattleTextboxAndBackground: @ 8035AA4 movs r1, 0 movs r2, 0x40 bl LoadCompressedPalette - bl sub_803570C + bl ApplyPlayerChosenFrameToBattleMenu bl load_battle_oval_graphics pop {r0} bx r0 @@ -2670,8 +2670,8 @@ _080363AC: .pool thumb_func_end LoadBattleEntryBackground - thumb_func_start sub_80363C4 -sub_80363C4: @ 80363C4 + thumb_func_start LoadChosenBattleElement +LoadChosenBattleElement: @ 80363C4 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -3051,7 +3051,7 @@ _08036742: b _08036758 .pool _08036750: - bl sub_803570C + bl ApplyPlayerChosenFrameToBattleMenu b _08036758 _08036756: movs r4, 0x1 @@ -3060,6 +3060,6 @@ _08036758: pop {r4} pop {r1} bx r1 - thumb_func_end sub_80363C4 + thumb_func_end LoadChosenBattleElement .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_2.s b/asm/battle_2.s index 0f4ec2bea0..a4fa43fa22 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -5,2670 +5,7 @@ .text - thumb_func_start BattleMainCB2 -BattleMainCB2: @ 8038420 - push {lr} - sub sp, 0x4 - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - ldr r0, =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08038482 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _08038482 - bl rfu_lacks_rfufunc - lsls r0, 24 - cmp r0, 0 - beq _08038482 - ldr r2, =gScriptResult - ldr r1, =gBattleOutcome - movs r0, 0x5 - strb r0, [r1] - movs r0, 0x5 - strh r0, [r2] - bl ResetPaletteFadeControl - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =sub_80384E4 - bl SetMainCallback2 -_08038482: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end BattleMainCB2 - thumb_func_start sub_803849C -sub_803849C: @ 803849C - push {lr} - ldr r1, =gMain - ldr r0, =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r1] - ldr r2, =gUnknown_02039B28 - movs r0, 0x3 - strb r0, [r2, 0x15] - ldr r0, =0x00000439 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl ZeroEnemyPartyMons - movs r0, 0x5A - bl m4aSongNumStop - bl sub_805F094 - bl dp11_free - bl sub_8057028 - pop {r0} - bx r0 - .pool - thumb_func_end sub_803849C - - thumb_func_start sub_80384E4 -sub_80384E4: @ 80384E4 - push {lr} - bl UpdatePaletteFade - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08038512 - ldr r0, =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, =gMPlay_SE2 - bl m4aMPlayStop - bl sub_803849C - bl FreeAllWindowBuffers - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_08038512: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80384E4 - - thumb_func_start sub_8038528 -sub_8038528: @ 8038528 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, =sub_8038538 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8038528 - - thumb_func_start sub_8038538 -sub_8038538: @ 8038538 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r5, =0x0201c000 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _0803856C - cmp r1, 0x1 - bgt _08038554 - cmp r1, 0 - beq _0803855A - b _080385DC - .pool -_08038554: - cmp r1, 0x2 - beq _080385C8 - b _080385DC -_0803855A: - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - strh r1, [r3, 0x30] - ldr r0, =0x00000281 - strh r0, [r3, 0x32] - strh r1, [r3, 0x34] - movs r0, 0x1 - strh r0, [r3, 0x36] -_0803856C: - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _080385DC - movs r0, 0x2 - strh r0, [r3, 0x36] - movs r4, 0x30 - ldrsh r2, [r3, r4] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r1, 5 - adds r2, r1 - movs r4, 0x32 - ldrsh r0, [r3, r4] - subs r0, r1 - movs r4, 0x3D - lsls r0, 1 - adds r0, r5 - lsls r2, 1 - adds r2, r5 - movs r1, 0x1C -_0803859A: - strh r4, [r2] - strh r4, [r0] - adds r0, 0x4 - adds r2, 0x4 - subs r1, 0x2 - cmp r1, 0 - bge _0803859A - ldrh r0, [r3, 0x34] - adds r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080385DC - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - movs r0, 0x20 - strh r0, [r3, 0x30] - b _080385DC - .pool -_080385C8: - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _080385DC - ldr r0, =CB2_InitBattle - bl SetMainCallback2 -_080385DC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038538 - - thumb_func_start CreateNPCTrainerParty -CreateNPCTrainerParty: @ 80385E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - str r0, [sp, 0x10] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x14] - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - mov r9, r0 - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08038610 - movs r0, 0 - b _080389E2 -_08038610: - ldr r4, =gBattleTypeFlags - ldr r0, [r4] - ldr r1, =0x043f0908 - ands r0, r1 - ldr r1, [sp, 0x14] - lsls r1, 2 - str r1, [sp, 0x20] - cmp r0, 0x8 - beq _08038624 - b _080389D2 -_08038624: - cmp r2, 0x1 - bne _0803862C - bl ZeroEnemyPartyMons -_0803862C: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _08038668 - ldr r0, =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r1, r2, r3 - lsls r1, 3 - adds r1, r0 - adds r2, r1, 0 - adds r2, 0x20 - ldrb r1, [r2] - movs r4, 0x3 - str r4, [sp, 0x1C] - adds r4, r0, 0 - cmp r1, 0x3 - bhi _0803867C - adds r2, r1, 0 - str r2, [sp, 0x1C] - b _0803867C - .pool -_08038668: - ldr r1, =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - str r0, [sp, 0x1C] - adds r4, r1, 0 -_0803867C: - movs r0, 0 - str r0, [sp, 0x18] - b _080389B4 - .pool -_08038688: - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r2, r3 - lsls r0, 3 - adds r1, r0, r4 - ldrb r0, [r1, 0x18] - cmp r0, 0x1 - bne _0803869E - movs r0, 0x80 - mov r10, r0 - b _080386B0 -_0803869E: - ldrb r1, [r1, 0x2] - movs r0, 0x80 - ands r0, r1 - movs r1, 0x88 - mov r10, r1 - cmp r0, 0 - beq _080386B0 - movs r2, 0x78 - mov r10, r2 -_080386B0: - movs r6, 0 - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r2, r3 - lsls r0, 3 - adds r1, r4, 0x4 - adds r0, r1 - ldrb r0, [r0] - ldr r3, [sp, 0x18] - adds r3, 0x1 - str r3, [sp, 0x24] - cmp r0, 0xFF - beq _080386E6 - adds r3, r1, 0 -_080386CC: - ldr r0, [sp, 0x14] - adds r1, r2, r0 - lsls r1, 3 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080386CC -_080386E6: - ldr r1, [sp, 0x20] - ldr r2, [sp, 0x14] - adds r0, r1, r2 - lsls r1, r0, 3 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08038794 - cmp r0, 0x1 - bgt _08038700 - cmp r0, 0 - beq _0803870E - b _080389AC -_08038700: - cmp r0, 0x2 - bne _08038706 - b _08038854 -_08038706: - cmp r0, 0x3 - bne _0803870C - b _080388E8 -_0803870C: - b _080389AC -_0803870E: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r3, [sp, 0x18] - lsls r2, r3, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _08038750 - adds r3, r1, 0 - movs r7, 0xB -_08038734: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08038734 -_08038750: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r4, r5, r4 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r1, 0x64 - adds r0, r3, 0 - muls r0, r1 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r3, 0x1 - str r3, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r3, 0x2 - str r3, [sp, 0x8] - movs r3, 0 - str r3, [sp, 0xC] - adds r3, r6, 0 - bl CreateMon - b _080389AC - .pool -_08038794: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _080387D6 - adds r3, r1, 0 - movs r4, 0xB -_080387BA: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080387BA -_080387D6: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r4, r3, r7 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r2, [sp, 0x10] - adds r5, r2, r5 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r5, 0 - adds r3, r6, 0 - bl CreateMon - movs r6, 0 - mov r0, r8 - adds r0, 0x6 - adds r4, r7, r0 -_08038820: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, =gBattleMoves + 0x4 @ PP offset - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08038820 - b _080389AC - .pool -_08038854: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r0, [sp, 0x18] - lsls r2, r0, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _08038896 - adds r3, r1, 0 - movs r7, 0xB -_0803887A: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0803887A -_08038896: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r5, r4 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r1, [sp, 0x10] - adds r4, r1, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - b _080389AC - .pool -_080388E8: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _0803892A - adds r3, r1, 0 - movs r4, 0xB -_0803890E: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0803890E -_0803892A: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r5, r3, r7 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r2, [sp, 0x10] - adds r4, r2, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - movs r6, 0 - adds r5, r4, 0 - mov r0, r8 - adds r0, 0x8 - adds r4, r7, r0 -_08038982: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, =gBattleMoves + 0x4 @ PP offset - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08038982 -_080389AC: - ldr r4, [sp, 0x24] - str r4, [sp, 0x18] - ldr r4, =gTrainers - ldr r0, [sp, 0x18] -_080389B4: - ldr r1, [sp, 0x1C] - cmp r0, r1 - bge _080389BC - b _08038688 -_080389BC: - ldr r2, =gBattleTypeFlags - ldr r1, =gTrainers - ldr r3, [sp, 0x20] - ldr r4, [sp, 0x14] - adds r0, r3, r4 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x18] - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] -_080389D2: - ldr r0, =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r1, r2, r3 - lsls r1, 3 - adds r1, r0 - adds r1, 0x20 - ldrb r0, [r1] -_080389E2: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end CreateNPCTrainerParty - - thumb_func_start sub_8038A04 -sub_8038A04: @ 8038A04 - push {lr} - ldr r0, =0x04000006 - ldrh r0, [r0] - subs r0, 0x6F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x30 - bhi _08038A1E - movs r1, 0x98 - lsls r1, 8 - movs r0, 0x8 - bl SetGpuReg -_08038A1E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038A04 - - thumb_func_start VBlankCB_Battle -VBlankCB_Battle: @ 8038A28 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x013f0102 - ands r0, r1 - cmp r0, 0 - bne _08038A3A - bl Random -_08038A3A: - ldr r0, =gBattle_BG0_X - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, =gBattle_BG0_Y - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r0, =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, =gBattle_BG1_Y - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, =gBattle_BG2_X - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - ldr r0, =gBattle_BG2_Y - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, =gBattle_BG3_X - ldrh r1, [r0] - movs r0, 0x1C - bl SetGpuReg - ldr r0, =gBattle_BG3_Y - ldrh r1, [r0] - movs r0, 0x1E - bl SetGpuReg - ldr r0, =gBattle_WIN0H - ldrh r1, [r0] - movs r0, 0x40 - bl SetGpuReg - ldr r0, =gBattle_WIN0V - ldrh r1, [r0] - movs r0, 0x44 - bl SetGpuReg - ldr r0, =gBattle_WIN1H - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, =gBattle_WIN1V - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_80BA0A8 - pop {r0} - bx r0 - .pool - thumb_func_end VBlankCB_Battle - - thumb_func_start nullsub_17 -nullsub_17: @ 8038B00 - bx lr - thumb_func_end nullsub_17 - - thumb_func_start sub_8038B04 -sub_8038B04: @ 8038B04 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08038B24 - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - lsrs r0, 8 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x20] - b _08038B36 -_08038B24: - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - asrs r0, 8 - ldrh r1, [r5, 0x30] - subs r1, r0 - strh r1, [r5, 0x20] -_08038B36: - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08038B6A - ldr r4, =0x00002710 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl FreeSpriteOamMatrix - adds r0, r5, 0 - bl DestroySprite -_08038B6A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038B04 - - thumb_func_start sub_8038B74 -sub_8038B74: @ 8038B74 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, =sub_8038B04 - str r0, [r4, 0x1C] - movs r0, 0x68 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038B74 - - thumb_func_start sub_8038B94 -sub_8038B94: @ 8038B94 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r2, [r0] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08038C04 - ldr r1, =gLinkPlayers - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x1 - beq _08038BF0 - cmp r0, 0x1 - bgt _08038BE8 - cmp r0, 0 - beq _08038C04 - b _08038C0C - .pool -_08038BE8: - cmp r0, 0x2 - beq _08038C04 - cmp r0, 0x3 - bne _08038C0C -_08038BF0: - ldr r0, =gEnemyParty - str r0, [sp, 0x4] - ldr r1, =gPlayerParty - str r1, [sp, 0x8] - b _08038C0C - .pool -_08038C04: - ldr r2, =gPlayerParty - str r2, [sp, 0x4] - ldr r3, =gEnemyParty - str r3, [sp, 0x8] -_08038C0C: - movs r7, 0 - movs r0, 0 - mov r8, r0 - ldr r1, [sp] - lsls r1, 2 - str r1, [sp, 0xC] - movs r2, 0xCE - lsls r2, 1 - mov r10, r2 - mov r9, r0 -_08038C20: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r3, [sp, 0x4] - adds r4, r3, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08038C90 - cmp r5, r10 - beq _08038C64 - cmp r6, 0 - beq _08038C64 - cmp r1, 0 - bne _08038C64 - movs r0, 0x1 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_08038C64: - cmp r5, 0 - beq _08038C90 - cmp r6, 0 - beq _08038C7C - cmp r5, r10 - beq _08038C74 - cmp r1, 0 - beq _08038C7C -_08038C74: - movs r0, 0x2 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_08038C7C: - cmp r5, 0 - beq _08038C90 - cmp r5, r10 - beq _08038C90 - cmp r6, 0 - bne _08038C90 - movs r0, 0x3 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_08038C90: - movs r2, 0x2 - add r9, r2 - movs r3, 0x1 - add r8, r3 - mov r0, r8 - cmp r0, 0x5 - ble _08038C20 - ldr r1, =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0xE] - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r1, 0xCE - lsls r1, 1 - mov r10, r1 - mov r9, r0 -_08038CBA: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r2, [sp, 0x8] - adds r4, r2, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08038D2A - cmp r5, r10 - beq _08038CFE - cmp r6, 0 - beq _08038CFE - cmp r1, 0 - bne _08038CFE - movs r0, 0x1 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_08038CFE: - cmp r5, 0 - beq _08038D2A - cmp r6, 0 - beq _08038D16 - cmp r5, r10 - beq _08038D0E - cmp r1, 0 - beq _08038D16 -_08038D0E: - movs r0, 0x2 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_08038D16: - cmp r5, 0 - beq _08038D2A - cmp r5, r10 - beq _08038D2A - cmp r6, 0 - bne _08038D2A - movs r0, 0x3 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_08038D2A: - movs r3, 0x2 - add r9, r3 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x5 - ble _08038CBA - ldr r1, =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x10] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038B94 - - thumb_func_start sub_8038D64 -sub_8038D64: @ 8038D64 - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x21 - negs r2, r2 - ands r1, r2 - str r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _08038DAC - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 - b _08038EB6 - .pool -_08038DAC: - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - mov r0, sp - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r4, =0x00005051 - movs r0, 0x44 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - ldr r1, =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r0, =gBattle_WIN0V - strh r4, [r0] - bl dp12_8087EA4 - ldr r0, =gUnknown_02038C28 - movs r3, 0xF0 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r0, r1 - movs r1, 0x4F -_08038DFE: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08038DFE - movs r1, 0x50 - ldr r0, =gUnknown_02038C28 - ldr r3, =0x0000ff10 - movs r4, 0x82 - lsls r4, 4 - adds r2, r0, r4 - adds r0, 0xA0 -_08038E1A: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _08038E1A - bl ResetPaletteFade - ldr r0, =gBattle_BG0_X - movs r4, 0 - strh r4, [r0] - ldr r0, =gBattle_BG0_Y - strh r4, [r0] - ldr r0, =gBattle_BG1_X - strh r4, [r0] - ldr r0, =gBattle_BG1_Y - strh r4, [r0] - ldr r0, =gBattle_BG2_X - strh r4, [r0] - ldr r0, =gBattle_BG2_Y - strh r4, [r0] - ldr r0, =gBattle_BG3_X - strh r4, [r0] - ldr r0, =gBattle_BG3_Y - strh r4, [r0] - bl c2_berry_program_update_menu - ldr r0, =gUnknown_08C004E0 - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - bl sub_803570C - bl ResetSpriteData - bl ResetTasks - bl LoadBattleEntryBackground - movs r0, 0x4A - movs r1, 0x37 - bl SetGpuReg - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, =VBlankCB_Battle - bl SetVBlankCallback - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x87 - lsls r2, 1 - strh r2, [r1, 0xA] - movs r2, 0x5A - strh r2, [r1, 0xC] - movs r2, 0x1 - strh r2, [r1, 0x12] - bl sub_8038B94 - ldr r0, =sub_8038F14 - bl SetMainCallback2 - ldr r0, =gBattleCommunication - strb r4, [r0] -_08038EB6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038D64 - - thumb_func_start sub_8038F14 -sub_8038F14: @ 8038F14 - push {lr} - bl sub_8038F34 - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_8038F14 - - thumb_func_start sub_8038F34 -sub_8038F34: @ 8038F34 - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x9 - bls _08038F44 - b _080391C6 -_08038F44: - lsls r0, r1, 2 - ldr r1, =_08038F58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08038F58: - .4byte _08038F80 - .4byte _08038FA0 - .4byte _08038FC2 - .4byte _080390C8 - .4byte _08039100 - .4byte _08039118 - .4byte _0803912C - .4byte _0803914C - .4byte _08039166 - .4byte _08039184 -_08038F80: - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r1, =gBattleCommunication - movs r0, 0xFF - strb r0, [r1, 0x1] - b _08039174 - .pool -_08038FA0: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08038FB0 - b _080391C6 -_08038FB0: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0803910C -_08038FC2: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08038FD0 - b _080391C6 -_08038FD0: - bl sub_8185FAC - ldr r2, =gMain - ldr r1, =0x00000439 - adds r2, r1 - movs r1, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - movs r3, 0x2 - cmp r0, 0 - beq _08038FFC - movs r3, 0x4 -_08038FFC: - movs r4, 0 - ldr r6, =gSaveBlock2Ptr - cmp r4, r3 - bge _08039022 - ldr r1, =gLinkPlayers - ldrb r0, [r1] - cmp r0, 0x3 - bne _08039022 - movs r5, 0xFF - adds r2, r1, 0 -_08039010: - adds r2, 0x1C - adds r4, 0x1 - cmp r4, r3 - bge _08039022 - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0x3 - beq _08039010 -_08039022: - ldr r0, [r6] - ldr r1, =0x00000ca9 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080390AC - cmp r4, r3 - bne _080390AC - ldr r0, =0x000008d2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08039074 - bl FreeAllWindowBuffers - ldr r0, =sub_80392A8 - bl SetMainCallback2 - b _080391C6 - .pool -_08039074: - ldr r2, =gMain - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08039090 - ldr r0, [r2, 0x8] - b _080390B0 - .pool -_08039090: - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08039172 - ldr r0, =sub_80B3AF8 - movs r1, 0x5 - bl CreateTask - b _08039172 - .pool -_080390AC: - ldr r0, =gMain - ldr r0, [r0, 0x8] -_080390B0: - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 - b _080391C6 - .pool -_080390C8: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - add r0, sp, 0x4 - bl CpuSet - movs r4, 0 -_080390DA: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80363C4 - adds r4, 0x1 - cmp r4, 0x1 - ble _080390DA - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08039172 - .pool -_08039100: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080391C6 -_0803910C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _080391C6 - .pool -_08039118: - ldr r0, =sub_80B3AF8 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _080391C6 - b _08039172 - .pool -_0803912C: - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080391C6 - bl sub_800ADF8 - ldr r0, =gUnknown_0824978D - movs r1, 0 - bl sub_814F9EC - b _08039172 - .pool -_0803914C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080391C6 - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080391C6 - b _08039172 -_08039166: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08039172 - bl sub_800AC34 -_08039172: - ldr r1, =gBattleCommunication -_08039174: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080391C6 - .pool -_08039184: - ldr r2, =gMain - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _080391A6 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080391A6 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _080391C6 -_080391A6: - ldr r0, =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r3, 0x8] - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 -_080391C6: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038F34 - - thumb_func_start sub_80391E0 -sub_80391E0: @ 80391E0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - cmp r1, 0x6 - bhi _080392A0 - lsls r0, r1, 2 - ldr r1, =_08039200 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08039200: - .4byte _0803921C - .4byte _08039230 - .4byte _08039244 - .4byte _08039258 - .4byte _0803926C - .4byte _08039280 - .4byte _08039294 -_0803921C: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - lsrs r0, 30 - b _080392A0 - .pool -_08039230: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - lsrs r0, 30 - b _080392A0 - .pool -_08039244: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrh r0, [r1] - lsls r0, 23 - lsrs r0, 27 - b _080392A0 - .pool -_08039258: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 29 - lsrs r0, 30 - b _080392A0 - .pool -_0803926C: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 28 - lsrs r0, 31 - b _080392A0 - .pool -_08039280: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 26 - lsrs r0, 30 - b _080392A0 - .pool -_08039294: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - lsls r0, 8 - lsrs r0, 22 -_080392A0: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80391E0 - - thumb_func_start sub_80392A8 -sub_80392A8: @ 80392A8 - push {r4,lr} - sub sp, 0x8 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r4, 0 - str r4, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - add r0, sp, 0x4 - bl CpuSet - bl ResetPaletteFade - ldr r0, =gBattle_BG0_X - strh r4, [r0] - ldr r0, =gBattle_BG0_Y - strh r4, [r0] - ldr r0, =gBattle_BG1_X - strh r4, [r0] - ldr r0, =gBattle_BG1_Y - strh r4, [r0] - ldr r0, =gBattle_BG2_X - strh r4, [r0] - ldr r0, =gBattle_BG2_Y - strh r4, [r0] - ldr r0, =gBattle_BG3_X - strh r4, [r0] - ldr r0, =gBattle_BG3_Y - strh r4, [r0] - bl c2_berry_program_update_menu - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - bl sub_803570C -_080392FE: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80363C4 - adds r4, 0x1 - cmp r4, 0x1 - ble _080392FE - bl ResetSpriteData - bl ResetTasks - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, =VBlankCB_Battle - bl SetVBlankCallback - ldr r0, =sub_803937C - bl SetMainCallback2 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =gBattleCommunication - strb r4, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80392A8 - - thumb_func_start sub_803937C -sub_803937C: @ 803937C - push {lr} - bl sub_803939C - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_803937C - - thumb_func_start sub_803939C -sub_803939C: @ 803939C - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0xC - bls _080393AC - b _0803975E -_080393AC: - lsls r0, r1, 2 - ldr r1, =_080393C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080393C0: - .4byte _080393F4 - .4byte _08039414 - .4byte _08039450 - .4byte _08039470 - .4byte _0803949C - .4byte _080394D8 - .4byte _0803957C - .4byte _08039704 - .4byte _080395CC - .4byte _08039610 - .4byte _08039678 - .4byte _080396A8 - .4byte _08039704 -_080393F4: - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039414: - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08039434 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08039434 - ldr r0, =sub_80B3AF8 - movs r1, 0x5 - bl CreateTask -_08039434: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039450: - ldr r0, =sub_80B3AF8 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _0803945E - b _0803975E -_0803945E: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039470: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0803947E - b _0803975E -_0803947E: - ldr r0, =gText_RecordBattleToPass - movs r1, 0 - bl sub_814F9EC - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_0803949C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080394AC - b _0803975E -_080394AC: - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gText_BattleYesNoChoice - movs r1, 0xC - bl sub_814F9EC - ldr r4, =gBattleCommunication - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateCursorAt - b _080396EA - .pool -_080394D8: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08039500 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _080394EC - b _0803975E -_080394EC: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl BattleDestroyCursorAt - movs r0, 0 - b _0803951E - .pool -_08039500: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08039526 - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08039510 - b _0803975E -_08039510: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl BattleDestroyCursorAt - movs r0, 0x1 -_0803951E: - strb r0, [r4, 0x1] - bl BattleCreateCursorAt - b _0803975E -_08039526: - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08039560 - movs r0, 0x5 - bl PlaySE - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08039540 - b _080396EA -_08039540: - str r5, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - bl sub_8185338 - strb r0, [r4, 0x1] - movs r0, 0xA - strb r0, [r4] - b _0803975E - .pool -_08039560: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0803956A - b _0803975E -_0803956A: - movs r0, 0x5 - bl PlaySE - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_0803957C: - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0803958A - b _0803975E -_0803958A: - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080395B4 - bl sub_800ADF8 - ldr r0, =gUnknown_0824978D - movs r1, 0 - bl sub_814F9EC -_080395B4: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_080395CC: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - cmp r0, 0 - beq _080395DA - b _0803975E -_080395DA: - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080395F6 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080395F6 - bl sub_800AC34 -_080395F6: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039610: - ldr r2, =gMain - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _08039634 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08039634 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _08039634 - b _0803975E -_08039634: - ldr r0, =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08039650 - b _0803975E -_08039650: - ldr r0, [r3, 0x8] - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 - b _0803975E - .pool -_08039678: - ldrb r0, [r4, 0x1] - cmp r0, 0x1 - bne _080396A0 - movs r0, 0x37 - bl PlaySE - ldr r0, =gText_BattleRecordedOnPass -_08039686: - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, =gDisplayedStringBattle - movs r1, 0 - bl sub_814F9EC - movs r0, 0x80 - strb r0, [r4, 0x1] - b _080396EA - .pool -_080396A0: - ldr r0, =gUnknown_08242481 - b _08039686 - .pool -_080396A8: - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803975E - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0803975E - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _0803975E - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080396EA - bl sub_800ADF8 - ldr r0, =gUnknown_0824978D - movs r1, 0 - bl sub_814F9EC -_080396EA: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0803975E - .pool -_08039704: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _0803975E - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08039744 - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803975E - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - b _0803974A - .pool -_08039744: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] -_0803974A: - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gBattleCommunication - movs r0, 0x20 - strb r0, [r1, 0x1] - movs r0, 0x8 -_0803975C: - strb r0, [r1] -_0803975E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803939C - - thumb_func_start shedinja_something -shedinja_something: @ 803976C - push {r4,r5,lr} - sub sp, 0x10 - adds r4, r0, 0 - add r5, sp, 0xC - movs r0, 0x1 - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, =0x0000012f - cmp r0, r1 - bne _080397B4 - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - ldrb r1, [r5] - cmp r0, r1 - beq _080397B4 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r1, =gUnknown_0831ACA0 - mov r0, sp - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _080397B4 - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - bl SetMonData -_080397B4: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end shedinja_something - - thumb_func_start sub_80397C4 -sub_80397C4: @ 80397C4 - ldr r2, =gUnknown_0831ABA0 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x3] - lsls r0, 3 - bx lr - .pool - thumb_func_end sub_80397C4 - - thumb_func_start oac_poke_opponent -oac_poke_opponent: @ 80397DC - push {lr} - sub sp, 0x4 - ldr r1, =sub_803980C - str r1, [r0, 0x1C] - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, =0x00002108 - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0xA - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end oac_poke_opponent - - thumb_func_start sub_803980C -sub_803980C: @ 803980C - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_020243FC - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803982C - ldrh r0, [r2, 0x24] - adds r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _0803982C - ldr r0, =sub_8039838 - str r0, [r2, 0x1C] -_0803982C: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803980C - - thumb_func_start sub_8039838 -sub_8039838: @ 8039838 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08039880 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076918 - ldr r1, =gHealthBoxesIds - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - bl sub_80729D0 - ldr r0, =sub_8039894 - str r0, [r4, 0x1C] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, =0x00002108 - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0 - bl BeginNormalPaletteFade -_08039880: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039838 - - thumb_func_start sub_8039894 -sub_8039894: @ 8039894 - push {lr} - adds r2, r0, 0 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080398B0 - ldrh r1, [r2, 0x32] - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x1 - bl BattleAnimateFrontSprite -_080398B0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039894 - - thumb_func_start SpriteCallbackDummy_2 -SpriteCallbackDummy_2: @ 80398B8 - bx lr - thumb_func_end SpriteCallbackDummy_2 - - thumb_func_start sub_80398BC -sub_80398BC: @ 80398BC - movs r1, 0x6 - strh r1, [r0, 0x34] - movs r1, 0x1 - strh r1, [r0, 0x36] - ldr r1, =sub_80398D0 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_80398BC - - thumb_func_start sub_80398D0 -sub_80398D0: @ 80398D0 - push {r4,lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08039924 - movs r0, 0x8 - strh r0, [r3, 0x36] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r4, 0x5 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _08039924 - ldrb r1, [r1] - adds r0, r4, 0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r0, =SpriteCallbackDummy_2 - str r0, [r3, 0x1C] - ldr r0, =gUnknown_02022F88 - str r2, [r0] -_08039924: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80398D0 - - thumb_func_start sub_8039934 -sub_8039934: @ 8039934 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gUnknown_020244D0 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r6, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _0803995C - adds r4, r0, 0 - b _08039960 - .pool -_0803995C: - mov r0, r9 - ldrh r4, [r0, 0x32] -_08039960: - ldr r1, =gBattlePartyID - lsls r0, r6, 1 - adds r5, r0, r1 - ldrh r0, [r5] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, =gEnemyParty - adds r0, r7 - movs r1, 0 - bl GetMonData - cmp r4, 0xC9 - bne _080399E4 - ldrh r0, [r5] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080399D0 - movs r0, 0xC9 - b _080399DA - .pool -_080399D0: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_080399DA: - ldr r1, =gUnknown_08300D38 - lsls r0, 2 - b _08039A1C - .pool -_080399E4: - ldr r0, =0x00000181 - cmp r4, r0 - bne _08039A08 - ldr r0, =gUnknown_08525F78 - ldr r1, =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _08039A20 - .pool -_08039A08: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08039A18 - ldr r0, =gUnknown_08300D38 - b _08039A1E - .pool -_08039A18: - ldr r1, =gUnknown_08300D38 - lsls r0, r4, 2 -_08039A1C: - adds r0, r1 -_08039A1E: - ldrb r0, [r0, 0x1] -_08039A20: - lsrs r1, r0, 3 - movs r0, 0x8 - subs r0, r1 - mov r1, r9 - strh r0, [r1, 0x34] - movs r0, 0x1 - strh r0, [r1, 0x36] - ldr r0, =sub_8039A48 - str r0, [r1, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039934 - - thumb_func_start sub_8039A48 -sub_8039A48: @ 8039A48 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x36] - subs r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08039AC8 - movs r0, 0x2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x26] - adds r0, 0x8 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - cmp r0, 0 - bge _08039A7C - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _08039AC8 -_08039A7C: - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl GetBankIdentity - ldr r1, =gMonSpritesGfxPtr - ldr r1, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r1, 0x4 - adds r1, r0 - ldr r2, =gBattleMonForms - movs r3, 0x2E - ldrsh r0, [r4, r3] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 11 - ldr r1, [r1] - adds r1, r0 - movs r2, 0x34 - ldrsh r0, [r4, r2] - lsls r0, 8 - adds r1, r0 - movs r2, 0 - movs r0, 0xFF -_08039AAE: - strb r2, [r1] - adds r1, 0x1 - subs r0, 0x1 - cmp r0, 0 - bge _08039AAE - ldr r0, =gBattleMonForms - movs r3, 0x2E - ldrsh r1, [r4, r3] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - bl StartSpriteAnim -_08039AC8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039A48 - - thumb_func_start sub_8039AD8 -sub_8039AD8: @ 8039AD8 - movs r1, 0x8 - strh r1, [r0, 0x34] - adds r1, r0, 0 - adds r1, 0x3E - ldrb r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r0, 0x36] - ldr r1, =sub_8039AF4 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039AD8 - - thumb_func_start sub_8039AF4 -sub_8039AF4: @ 8039AF4 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _08039B26 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r0, 0x8 - strh r0, [r3, 0x34] -_08039B26: - pop {r0} - bx r0 - thumb_func_end sub_8039AF4 - - thumb_func_start sub_8039B2C -sub_8039B2C: @ 8039B2C - movs r1, 0x3E - adds r1, r0 - mov r12, r1 - movs r1, 0x1 - ldrh r2, [r0, 0x36] - ands r2, r1 - lsls r2, 2 - mov r1, r12 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - movs r1, 0 - strh r1, [r0, 0x36] - ldr r1, =SpriteCallbackDummy_2 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039B2C thumb_func_start sub_8039B58 sub_8039B58: @ 8039B58 @@ -2805,7 +142,7 @@ dp11b_obj_instanciate: @ 8039C28 mov r10, r3 cmp r1, 0 beq _08039C64 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r2, r4, 1 @@ -2817,7 +154,7 @@ dp11b_obj_instanciate: @ 8039C28 b _08039C76 .pool _08039C64: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r2, r4, 1 @@ -2841,7 +178,7 @@ _08039C76: ldr r0, =gHealthBoxesIds adds r0, r4, r0 ldrb r7, [r0] - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr ldr r0, [r2] ldr r0, [r0, 0x4] adds r1, r6, r4 @@ -2867,7 +204,7 @@ _08039CD0: ldr r0, =gBankSpriteIds adds r0, r4, r0 ldrb r7, [r0] - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr ldr r0, [r2] ldr r0, [r0, 0x4] adds r1, r6, r4 @@ -2931,7 +268,7 @@ dp11b_obj_free: @ 8039D48 lsrs r1, 24 cmp r1, 0x1 bne _08039D9C - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -2962,7 +299,7 @@ dp11b_obj_free: @ 8039D48 b _08039DD6 .pool _08039D9C: - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -10246,9 +7583,9 @@ _0803DE86: ands r0, r1 cmp r0, 0 bne _0803DEA2 - bl sub_805F094 - bl sub_8057028 - bl dp11_free + bl FreeMonSpritesGfx + bl FreeBattleResources + bl FreeBattleSpritesData _0803DEA2: pop {r0} bx r0 diff --git a/asm/battle_5.s b/asm/battle_5.s index 3163631a9c..4d02a59429 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -104,8 +104,8 @@ _08056FFA: .pool thumb_func_end AllocateBattleResrouces - thumb_func_start sub_8057028 -sub_8057028: @ 8057028 + thumb_func_start FreeBattleResources +FreeBattleResources: @ 8057028 push {r4-r6,lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] @@ -181,7 +181,7 @@ _080570D0: pop {r0} bx r0 .pool - thumb_func_end sub_8057028 + thumb_func_end FreeBattleResources thumb_func_start AdjustFriendshipOnBattleFaint AdjustFriendshipOnBattleFaint: @ 80570F4 diff --git a/asm/battle_7.s b/asm/battle_7.s index 82298fbf4c..7f82e790a2 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -8,7 +8,7 @@ thumb_func_start AllocateBattleSpritesData AllocateBattleSpritesData: @ 805D118 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr movs r0, 0x10 bl AllocZeroed str r0, [r4] @@ -34,10 +34,10 @@ AllocateBattleSpritesData: @ 805D118 .pool thumb_func_end AllocateBattleSpritesData - thumb_func_start dp11_free -dp11_free: @ 805D158 + thumb_func_start FreeBattleSpritesData +FreeBattleSpritesData: @ 805D158 push {r4,r5,lr} - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] cmp r0, 0 beq _0805D192 @@ -65,7 +65,7 @@ _0805D192: pop {r0} bx r0 .pool - thumb_func_end dp11_free + thumb_func_end FreeBattleSpritesData thumb_func_start sub_805D19C sub_805D19C: @ 805D19C @@ -839,7 +839,7 @@ move_anim_start_t2_for_situation: @ 805D808 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r1, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1001,7 +1001,7 @@ move_anim_start_t3: @ 805D908 b _0805DA1E .pool _0805D950: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr mov r9, r0 ldr r0, [r0] ldr r0, [r0] @@ -1063,7 +1063,7 @@ _0805D9CC: mov r1, sp ldrb r1, [r1] strb r1, [r0] - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r0, [r0, 0x8] strh r7, [r0] @@ -1119,7 +1119,7 @@ task0A_0803415C: @ 805DA48 ldrb r0, [r0] cmp r0, 0 bne _0805DA8A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r1, =gTasks lsls r0, r4, 2 @@ -1199,7 +1199,7 @@ move_anim_start_t4: @ 805DAC4 lsls r1, 3 adds r1, r2 strh r4, [r1, 0x8] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] movs r2, 0x8 ldrsh r1, [r1, r2] @@ -1230,7 +1230,7 @@ task0A_08034248: @ 805DB34 ldrb r0, [r0] cmp r0, 0 bne _0805DB76 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r1, =gTasks lsls r0, r4, 2 @@ -1274,7 +1274,7 @@ mplay_80342A4: @ 805DB90 lsls r0, 24 cmp r0, 0 beq _0805DBD8 - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr ldr r0, [r2] ldr r1, [r0, 0x4] lsls r0, r4, 1 @@ -1307,7 +1307,7 @@ _0805DBDC: b _0805DC02 .pool _0805DBF0: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r4, 1 @@ -1338,7 +1338,7 @@ sub_805DC0C: @ 805DC0C movs r1, 0 bl GetMonData str r0, [sp] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r2, r8 @@ -1386,7 +1386,7 @@ _0805DC58: movs r0, 0x80 lsls r0, 1 adds r7, r2, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r3, 2 @@ -1444,7 +1444,7 @@ _0805DCC6: movs r2, 0x20 bl LoadPalette _0805DD1A: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] ldr r1, [sp, 0x4] @@ -1491,7 +1491,7 @@ sub_805DD7C: @ 805DD7C movs r1, 0 bl GetMonData str r0, [sp] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r2, r8 @@ -1532,7 +1532,7 @@ _0805DDC8: mov r10, r1 cmp r0, 0x1 beq _0805DE00 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] add r0, r10 @@ -1573,7 +1573,7 @@ _0805DE46: movs r0, 0x80 lsls r0, 1 adds r7, r1, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] add r0, r10 @@ -1629,7 +1629,7 @@ _0805DE7E: movs r2, 0x20 bl LoadPalette _0805DED2: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] add r0, r10 @@ -2141,7 +2141,7 @@ _0805E346: thumb_func_start sub_805E350 sub_805E350: @ 805E350 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r0, [r0, 0x4] movs r1, 0 @@ -2162,7 +2162,7 @@ sub_805E350: @ 805E350 sub_805E378: @ 805E378 push {lr} bl sub_805E350 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] movs r1, 0 @@ -2191,7 +2191,7 @@ sub_805E394: @ 805E394 movs r0, 0x2 negs r0, r0 mov r8, r0 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r6, =gBankSpriteIds _0805E3B8: ldr r0, [r7] @@ -2233,7 +2233,7 @@ _0805E3EA: sub_805E408: @ 805E408 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r1, [r1] lsls r3, r0, 2 @@ -2285,7 +2285,7 @@ sub_805E448: @ 805E448 ldr r1, =gSprites mov r8, r1 add r0, r8 - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r1, [r1, 0x8] ldrb r1, [r1] @@ -2582,7 +2582,7 @@ _0805E70A: lsls r0, 24 cmp r0, 0 bne _0805E74A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r7, 2 @@ -2804,7 +2804,7 @@ sub_805E94C: @ 805E94C lsrs r1, 16 cmp r1, 0xA4 bne _0805E96C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r2, 2 @@ -2822,7 +2822,7 @@ _0805E96C: thumb_func_start sub_805E974 sub_805E974: @ 805E974 lsls r0, 24 - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r1, [r1] lsrs r0, 22 @@ -2862,7 +2862,7 @@ sub_805E990: @ 805E990 lsrs r0, 24 cmp r0, 0x1 bne _0805EA08 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r0, [r7] ldr r2, [r0] lsls r4, r6, 2 @@ -2895,7 +2895,7 @@ _0805E9F6: b _0805EA5A .pool _0805EA08: - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r0, [r0] lsls r1, r6, 2 @@ -2944,7 +2944,7 @@ BattleMusicStop: @ 805EA60 bl GetBankByIdentity lsls r0, 24 lsrs r4, r0, 24 - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r0, [r0] lsls r1, r4, 2 @@ -3134,7 +3134,7 @@ _0805EBC8: mov r7, r8 cmp r7, 0 bne _0805EC3C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x4] adds r2, r6, r2 @@ -3164,7 +3164,7 @@ _0805EC3C: adds r2, r0 lsls r2, 2 adds r2, r4 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] adds r0, r6, r0 @@ -3229,7 +3229,7 @@ sub_805EC84: @ 805EC84 adds r1, r4, 0 movs r3, 0xC8 bl CreateSprite - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r1, [r6] ldr r2, [r1, 0x4] lsls r1, r5, 1 @@ -3351,12 +3351,12 @@ _0805EDC0: _0805EDD2: movs r0, 0x1 mov r8, r0 - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr lsls r4, 2 b _0805EE06 .pool _0805EDE4: - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr ldr r0, [r2] ldr r0, [r0] lsls r1, r4, 2 @@ -3431,7 +3431,7 @@ sub_805EE54: @ 805EE54 lsls r0, 24 cmp r0, 0 beq _0805EED0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r3, [r0] ldr r1, [r3] lsls r0, r4, 2 @@ -3489,7 +3489,7 @@ sub_805EEE0: @ 805EEE0 lsls r0, 24 lsrs r0, 24 ldr r2, =gSprites - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r3, [r1, 0x4] lsls r1, r0, 1 @@ -3578,7 +3578,7 @@ sub_805EF84: @ 805EF84 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0] lsls r0, r4, 2 @@ -3708,8 +3708,8 @@ _0805F01A: .pool thumb_func_end AllocateMonSpritesGfx - thumb_func_start sub_805F094 -sub_805F094: @ 805F094 + thumb_func_start FreeMonSpritesGfx +FreeMonSpritesGfx: @ 805F094 push {r4-r6,lr} ldr r6, =gMonSpritesGfxPtr ldr r0, [r6] @@ -3769,7 +3769,7 @@ _0805F106: pop {r0} bx r0 .pool - thumb_func_end sub_805F094 + thumb_func_end FreeMonSpritesGfx thumb_func_start sub_805F110 sub_805F110: @ 805F110 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index b9ab95165a..975a7a4018 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -1150,7 +1150,7 @@ _080A4330: lsls r0, 24 cmp r0, 0 bne _080A4374 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -2864,7 +2864,7 @@ BattleAnimGetPanControl: @ 80A5178 lsls r0, 24 cmp r0, 0 bne _080A51C0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gAnimationBankAttacker ldrb r2, [r0] @@ -2986,7 +2986,7 @@ sub_80A5278: @ 80A5278 lsls r0, 24 cmp r0, 0 bne _080A52C0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gAnimationBankAttacker ldrb r2, [r0] diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s index 16366988e4..ca6572e1ad 100644 --- a/asm/battle_anim_80A9C70.s +++ b/asm/battle_anim_80A9C70.s @@ -629,7 +629,7 @@ sub_80AA18C: @ 80AA18C lsls r0, 24 lsrs r4, r0, 24 movs r3, 0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrh r0, [r0] @@ -899,7 +899,7 @@ task0A_80788BC: @ 80AA3B4 ldrb r0, [r0] cmp r0, 0 bne _080AA3F6 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r1, =gTasks lsls r0, r4, 2 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 5cec1cbc5b..58eb2ebf08 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -38602,7 +38602,7 @@ _08111F0C: adds r2, r0 lsls r2, 2 adds r2, r4 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gAnimationBankTarget ldrb r0, [r0] @@ -50163,7 +50163,7 @@ _08117F78: adds r3, r4 lsls r3, 3 adds r3, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r4, [r0] ldr r2, =gAnimationBankAttacker ldrb r0, [r2] @@ -50207,7 +50207,7 @@ sub_8117FD0: @ 8117FD0 lsls r0, 5 cmp r1, r0 bne _08118014 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gAnimationBankAttacker ldrb r3, [r0] diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 849655fe53..81e4f9163d 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -3250,7 +3250,7 @@ _0815BAB6: cmp r0, 0 bne _0815BAF6 ldrb r0, [r4] - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r2, [r1] lsls r1, r0, 2 @@ -5723,7 +5723,7 @@ _0815CF18: movs r1, 0x1 bl GetMonData mov r8, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -5791,7 +5791,7 @@ _0815CFC4: movs r1, 0x1 bl GetMonData mov r8, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -10637,7 +10637,7 @@ _0815F67C: adds r0, r2 movs r1, 0x2 strh r1, [r0, 0x8] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gAnimationBankTarget ldrb r0, [r0] @@ -10762,7 +10762,7 @@ sub_815F7C4: @ 815F7C4 ble _0815F80E movs r0, 0 strh r0, [r4, 0x30] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gAnimationBankTarget ldrb r0, [r0] @@ -11072,7 +11072,7 @@ _0815FA28: movs r1, 0x1 bl GetMonData mov r9, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -11136,7 +11136,7 @@ _0815FAC8: movs r1, 0x1 bl GetMonData mov r9, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -11202,7 +11202,7 @@ _0815FB50: bl sub_80A8394 lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldrb r0, [r4] ldr r1, [r1] diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index cb6391cee2..dd992a8cd3 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -1035,7 +1035,7 @@ sub_8170D4C: @ 8170D4C push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -1183,7 +1183,7 @@ sub_8170E04: @ 8170E04 adds r4, r0 ldr r0, =sub_8171104 str r0, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, [r0, 0x8] ldr r1, =gBankSpriteIds @@ -1491,7 +1491,7 @@ sub_8171134: @ 8171134 lsls r0, 24 cmp r0, 0 beq _081711D2 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -1894,7 +1894,7 @@ _08171486: adds r0, r1 strh r0, [r4, 0x22] strh r5, [r4, 0x26] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -1940,7 +1940,7 @@ sub_81714D4: @ 81714D4 adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strh r5, [r0, 0xC] @@ -1982,7 +1982,7 @@ _08171540: .4byte _08171708 .4byte _08171768 _0817155C: - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] @@ -2060,7 +2060,7 @@ _081715EA: bl ChangeSpriteAffineAnim b _081717AE _081715F4: - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] @@ -2152,7 +2152,7 @@ _0817169C: movs r1, 0x1 bl ChangeSpriteAffineAnim _081716A4: - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] @@ -2211,7 +2211,7 @@ _08171708: strh r0, [r4, 0x34] lsls r0, 16 asrs r1, r0, 24 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -2859,7 +2859,7 @@ _08171C24: adds r2, r0 lsls r2, 2 adds r2, r4 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -3083,7 +3083,7 @@ sub_8171E20: @ 8171E20 ands r0, r1 cmp r0, 0 beq _08171E3E - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] ldrb r0, [r1, 0xA] @@ -4419,7 +4419,7 @@ sub_8172944: @ 8172944 b _081729E2 .pool _08172970: - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr ldr r0, [r2] ldr r1, [r0, 0x8] ldrb r0, [r1, 0xA] @@ -5046,7 +5046,7 @@ sub_8172E9C: @ 8172E9C lsls r0, 24 lsrs r0, 24 ldr r3, =gBattleAnimArgs - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, =gAnimationBankAttacker ldrb r1, [r1] @@ -5088,7 +5088,7 @@ sub_8172EF0: @ 8172EF0 lsrs r6, r0, 24 movs r0, 0 mov r8, r0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 @@ -5169,7 +5169,7 @@ _08172F6E: b _08172FDE .pool _08172FC8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 @@ -5212,7 +5212,7 @@ sub_8172FEC: @ 8172FEC b _08173190 .pool _08173018: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0xA] @@ -5414,7 +5414,7 @@ sub_81731B0: @ 81731B0 cmp r0, 0x1 bne _081731EA ldrb r1, [r1, 0x8] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x4] lsls r0, r1, 1 @@ -5762,7 +5762,7 @@ sub_81734B4: @ 81734B4 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrh r1, [r0] @@ -5813,7 +5813,7 @@ sub_817351C: @ 817351C lsls r0, 24 lsrs r0, 24 ldr r3, =gAnimationBankAttacker - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, [r2, 0x8] ldrh r1, [r1] diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index a7168623cc..58f3b95b75 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -158,7 +158,7 @@ _080644C2: thumb_func_start sub_80644D8 sub_80644D8: @ 80644D8 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -281,7 +281,7 @@ _080645CA: cmp r0, 0 bne _0806469C _080645DE: - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr mov r12, r1 ldr r0, [r1] ldr r7, =gActiveBank @@ -364,7 +364,7 @@ _08064600: b _080646F2 .pool _0806469C: - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r1, [r7] ldr r2, [r0, 0x4] @@ -405,7 +405,7 @@ _0806469C: adds r0, r4, 0 bl FreeSpritePaletteByTag _080646F2: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, =gActiveBank ldrb r1, [r3] @@ -440,7 +440,7 @@ sub_8064734: @ 8064734 push {r5-r7} movs r0, 0 mov r10, r0 - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r4, =gActiveBank ldrb r2, [r4] @@ -497,7 +497,7 @@ _08064776: adds r0, r3, 0 bl sub_8172EF0 _080647B4: - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, =gActiveBank ldrb r5, [r2] @@ -591,7 +591,7 @@ _0806484A: ldrb r0, [r0] bl sub_80729D0 _0806487A: - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -673,7 +673,7 @@ _08064930: lsls r2, 1 bl m4aMPlayVolumeControl _0806493C: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -735,7 +735,7 @@ _08064998: lsrs r0, 24 cmp r0, 0x3 bne _080649E2 - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r5] ldr r0, [r0, 0x4] @@ -828,7 +828,7 @@ _08064A3A: lsrs r1, 16 adds r0, r5, 0 bl sub_805EE54 - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -900,7 +900,7 @@ sub_8064B04: @ 8064B04 ldrsh r0, [r0, r1] cmp r0, 0 bne _08064BB6 - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r4, r3, 1 @@ -1028,7 +1028,7 @@ _08064C42: thumb_func_start sub_8064C58 sub_8064C58: @ 8064C58 push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -1166,7 +1166,7 @@ sub_8064D60: @ 8064D60 ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _08064DAC - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 @@ -1198,7 +1198,7 @@ _08064DAC: thumb_func_start sub_8064DD0 sub_8064DD0: @ 8064DD0 push {r4,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r4, =gActiveBank ldrb r1, [r4] @@ -1250,7 +1250,7 @@ _08064E2A: thumb_func_start sub_8064E50 sub_8064E50: @ 8064E50 push {r4-r7,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1346,7 +1346,7 @@ _08064F0C: thumb_func_start sub_8064F40 sub_8064F40: @ 8064F40 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1430,7 +1430,7 @@ _08064FDC: thumb_func_start sub_8065008 sub_8065008: @ 8065008 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -1454,7 +1454,7 @@ _0806502A: thumb_func_start sub_8065038 sub_8065038: @ 8065038 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -3907,7 +3907,7 @@ sub_8066624: @ 8066624 ldrb r3, [r0] cmp r3, 0 bne _0806666C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -3959,7 +3959,7 @@ _080666A8: thumb_func_start sub_80666BC sub_80666BC: @ 80666BC push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4589,7 +4589,7 @@ sub_8066B94: @ 8066B94 thumb_func_start sub_8066C40 sub_8066C40: @ 8066C40 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4816,7 +4816,7 @@ _08066D32: b _08066E58 .pool _08066E30: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -4869,7 +4869,7 @@ sub_8066E70: @ 8066E70 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4977,7 +4977,7 @@ _08066F32: ands r0, r2 strb r0, [r1] _08066F80: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -5244,7 +5244,7 @@ sub_806719C: @ 806719C movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5718,7 +5718,7 @@ sub_8067508: @ 8067508 adds r1, r4 ldrb r0, [r6] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r6] ldr r1, [r0, 0x4] @@ -5893,7 +5893,7 @@ sub_8067718: @ 8067718 b _08067812 .pool _08067748: - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -5960,7 +5960,7 @@ _080677B4: adds r1, r2 movs r3, 0 strb r0, [r1] - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -6000,7 +6000,7 @@ _08067812: thumb_func_start sub_806782C sub_806782C: @ 806782C push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -6036,7 +6036,7 @@ _08067864: thumb_func_start sub_8067874 sub_8067874: @ 8067874 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 5b0ac04910..562b236d05 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -131,7 +131,7 @@ _0814AFA4: thumb_func_start sub_814AFBC sub_814AFBC: @ 814AFBC push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -239,7 +239,7 @@ _0814B094: _0814B0A0: cmp r6, 0 beq _0814B0C6 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, =gActiveBank ldrb r1, [r3] @@ -270,7 +270,7 @@ sub_814B0E8: @ 814B0E8 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr mov r12, r0 ldr r0, [r0] ldr r7, =gActiveBank @@ -426,7 +426,7 @@ _0814B1F0: adds r0, r5 ldrb r0, [r0] bl sub_80729D0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -599,7 +599,7 @@ _0814B3BC: thumb_func_start sub_814B3DC sub_814B3DC: @ 814B3DC push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -737,7 +737,7 @@ sub_814B4E0: @ 814B4E0 bne _0814B532 adds r0, r3, 0 bl sub_805E408 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -769,7 +769,7 @@ _0814B532: thumb_func_start sub_814B554 sub_814B554: @ 814B554 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] @@ -808,7 +808,7 @@ sub_814B5A8: @ 814B5A8 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r7, =gActiveBank ldrb r1, [r7] @@ -903,7 +903,7 @@ _0814B664: thumb_func_start sub_814B69C sub_814B69C: @ 814B69C push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r4, =gActiveBank ldrb r2, [r4] @@ -1021,7 +1021,7 @@ _0814B7A6: thumb_func_start sub_814B7B8 sub_814B7B8: @ 814B7B8 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -1045,7 +1045,7 @@ _0814B7DA: thumb_func_start sub_814B7E8 sub_814B7E8: @ 814B7E8 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -3476,7 +3476,7 @@ sub_814CE14: @ 814CE14 ldrb r3, [r0] cmp r3, 0 bne _0814CE5C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -3526,7 +3526,7 @@ _0814CE92: thumb_func_start sub_814CEA4 sub_814CEA4: @ 814CEA4 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -3870,7 +3870,7 @@ sub_814D0F0: @ 814D0F0 thumb_func_start sub_814D19C sub_814D19C: @ 814D19C push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4125,7 +4125,7 @@ _0814D2CE: b _0814D3F4 .pool _0814D3CC: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -4178,7 +4178,7 @@ bx_move_anim_4: @ 814D40C adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4286,7 +4286,7 @@ _0814D4CE: ands r0, r2 strb r0, [r1] _0814D51C: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -4553,7 +4553,7 @@ sub_814D738: @ 814D738 movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5147,7 +5147,7 @@ _0814DC06: adds r1, r4 ldrb r0, [r5] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r5] ldr r1, [r0, 0x4] @@ -5326,7 +5326,7 @@ sub_814DDD8: @ 814DDD8 b _0814DE7C .pool _0814DE08: - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r1, [r5] @@ -5394,7 +5394,7 @@ _0814DE7C: thumb_func_start sub_814DE9C sub_814DE9C: @ 814DE9C push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -5430,7 +5430,7 @@ _0814DED4: thumb_func_start sub_814DEE4 sub_814DEE4: @ 814DEE4 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index f54896ca76..066a0ceab3 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -158,7 +158,7 @@ _0805F292: thumb_func_start sub_805F2A8 sub_805F2A8: @ 805F2A8 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -277,7 +277,7 @@ _0805F3A0: movs r6, 0x1 _0805F3A2: ldr r3, =gUnknown_020244D8 - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr mov r8, r1 ldr r2, [r1] ldr r7, =gActiveBank @@ -449,7 +449,7 @@ _0805F4E4: ands r0, r2 strb r0, [r1, 0x1] _0805F51A: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, =gActiveBank ldrb r1, [r3] @@ -488,7 +488,7 @@ sub_805F560: @ 805F560 movs r0, 0 str r0, [sp] mov r10, r0 - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r4, =gActiveBank ldrb r2, [r4] @@ -549,7 +549,7 @@ _0805F5A6: adds r0, r3, 0 bl sub_8172EF0 _0805F5EE: - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr ldr r0, [r2] ldr r1, =gActiveBank mov r8, r1 @@ -643,7 +643,7 @@ _0805F684: ldrb r0, [r0] bl sub_80729D0 _0805F6B4: - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r2, [r3] ldr r0, =gActiveBank ldrb r1, [r0] @@ -723,7 +723,7 @@ _0805F768: lsls r2, 1 bl m4aMPlayVolumeControl _0805F774: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -906,7 +906,7 @@ _0805F8D2: lsrs r1, 16 adds r0, r5, 0 bl sub_805EE54 - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -972,7 +972,7 @@ sub_805F994: @ 805F994 ldrsh r0, [r0, r1] cmp r0, 0 bne _0805F9E0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r2, r3, 1 @@ -1010,7 +1010,7 @@ _0805F9E0: ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _0805FA48 - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r1, [r0, 0x4] lsls r0, r3, 1 @@ -1122,7 +1122,7 @@ _0805FAF2: thumb_func_start sub_805FB08 sub_805FB08: @ 805FB08 push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -1260,7 +1260,7 @@ sub_805FC10: @ 805FC10 ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _0805FC5C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 @@ -1292,7 +1292,7 @@ _0805FC5C: thumb_func_start bx_803AEDC bx_803AEDC: @ 805FC80 push {r4,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r4, =gActiveBank ldrb r1, [r4] @@ -1344,7 +1344,7 @@ _0805FCDA: thumb_func_start sub_805FD00 sub_805FD00: @ 805FD00 push {r4-r7,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1440,7 +1440,7 @@ _0805FDBC: thumb_func_start sub_805FDF0 sub_805FDF0: @ 805FDF0 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1524,7 +1524,7 @@ _0805FE8C: thumb_func_start sub_805FEB8 sub_805FEB8: @ 805FEB8 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -1548,7 +1548,7 @@ _0805FEDA: thumb_func_start bx_803B0F4 bx_803B0F4: @ 805FEE8 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -4069,7 +4069,7 @@ sub_806156C: @ 806156C ldrb r3, [r0] cmp r3, 0 bne _080615B4 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -4121,7 +4121,7 @@ _080615F0: thumb_func_start sub_8061604 sub_8061604: @ 8061604 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4741,7 +4741,7 @@ sub_8061AF0: @ 8061AF0 thumb_func_start sub_8061B9C sub_8061B9C: @ 8061B9C push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4962,7 +4962,7 @@ _08061C8A: b _08061D9E .pool _08061D80: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -5009,7 +5009,7 @@ bx_move_anim_7: @ 8061DB0 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -5117,7 +5117,7 @@ _08061E72: ands r0, r2 strb r0, [r1] _08061EC0: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -5694,7 +5694,7 @@ sub_8062390: @ 8062390 movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -6168,7 +6168,7 @@ sub_80626FC: @ 80626FC adds r1, r4 ldrb r0, [r6] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r6] ldr r1, [r0, 0x4] @@ -6348,7 +6348,7 @@ dp01t_30_7_0803D67C: @ 8062918 b _08062A12 .pool _08062948: - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -6415,7 +6415,7 @@ _080629B4: adds r1, r2 movs r3, 0 strb r0, [r1] - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -6455,7 +6455,7 @@ _08062A12: thumb_func_start bx_0803D790_t7 bx_0803D790_t7: @ 8062A2C push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -6491,7 +6491,7 @@ _08062A64: thumb_func_start sub_8062A74 sub_8062A74: @ 8062A74 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index b829296d88..b47a8ecdf4 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -2344,7 +2344,7 @@ _08058908: thumb_func_start sub_8058924 sub_8058924: @ 8058924 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -2452,7 +2452,7 @@ _08058A0A: cmp r7, 0 beq _08058B08 _08058A0E: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr mov r9, r0 ldr r0, [r0] mov r6, r10 @@ -2593,7 +2593,7 @@ sub_8058B40: @ 8058B40 movs r0, 0 mov r9, r0 mov r8, r0 - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r7, =gActiveBank ldrb r2, [r7] @@ -2729,7 +2729,7 @@ _08058C38: ldrb r0, [r0] bl sub_80729D0 _08058C68: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -2743,7 +2743,7 @@ _08058C68: orrs r1, r2 strb r1, [r0, 0x1] _08058C82: - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r4, =gActiveBank ldrb r2, [r4] @@ -2801,7 +2801,7 @@ _08058D08: lsls r2, 1 bl m4aMPlayVolumeControl _08058D14: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -2950,7 +2950,7 @@ _08058E48: ldr r1, =gSprites adds r0, r1 bl DestroySprite - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -3015,7 +3015,7 @@ sub_8058EDC: @ 8058EDC ldr r0, =SpriteCallbackDummy cmp r4, r0 bne _08058F94 - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r1, [r0, 0x4] lsls r0, r3, 1 @@ -3098,7 +3098,7 @@ _08058F94: thumb_func_start sub_8058FC0 sub_8058FC0: @ 8058FC0 push {r4,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r4, =gActiveBank ldrb r1, [r4] @@ -3142,7 +3142,7 @@ _0805900E: thumb_func_start sub_805902C sub_805902C: @ 805902C push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -3774,7 +3774,7 @@ sub_80595A4: @ 80595A4 lsls r0, 3 adds r2, r0, r1 ldrb r5, [r2, 0xC] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 1 @@ -3942,7 +3942,7 @@ _08059724: thumb_func_start sub_8059744 sub_8059744: @ 8059744 push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -4145,7 +4145,7 @@ bx_wait_t1: @ 805991C ldrb r0, [r0] cmp r0, 0 beq _08059942 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -4657,7 +4657,7 @@ sub_8059D50: @ 8059D50 thumb_func_start sub_8059D60 sub_8059D60: @ 8059D60 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -4681,7 +4681,7 @@ _08059D82: thumb_func_start bx_8030B2C bx_8030B2C: @ 8059D90 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -7124,7 +7124,7 @@ sub_805B3D4: @ 805B3D4 ldrb r3, [r0] cmp r3, 0 bne _0805B41C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -7174,7 +7174,7 @@ _0805B452: thumb_func_start sub_805B464 sub_805B464: @ 805B464 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -7890,7 +7890,7 @@ sub_805B9F8: @ 805B9F8 thumb_func_start sub_805BAB8 sub_805BAB8: @ 805BAB8 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -8013,7 +8013,7 @@ sub_805BBA4: @ 805BBA4 thumb_func_start sub_805BBC4 sub_805BBC4: @ 805BBC4 push {r4,r5,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -8054,7 +8054,7 @@ sub_805BC18: @ 805BC18 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] @@ -8229,7 +8229,7 @@ _0805BCBE: b _0805BDE4 .pool _0805BDBC: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -8282,7 +8282,7 @@ bx_move_anim_1: @ 805BDFC adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -8390,7 +8390,7 @@ _0805BEBE: ands r0, r2 strb r0, [r1] _0805BF0C: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -9132,7 +9132,7 @@ sub_805C5C4: @ 805C5C4 movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -9794,7 +9794,7 @@ dp01t_2F_1_pokemon_enter: @ 805CA80 adds r1, r4 ldrb r0, [r7] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r7] ldr r1, [r0, 0x4] @@ -10015,7 +10015,7 @@ sub_805CD74: @ 805CD74 b _0805CE18 .pool _0805CDA4: - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r1, [r5] @@ -10083,7 +10083,7 @@ _0805CE18: thumb_func_start sub_805CE38 sub_805CE38: @ 805CE38 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -10119,7 +10119,7 @@ _0805CE70: thumb_func_start sub_805CE80 sub_805CE80: @ 805CE80 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 185b8d5caf..c0ea9b87f0 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -132,7 +132,7 @@ _081BAEE8: thumb_func_start sub_81BAF00 sub_81BAF00: @ 81BAF00 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -240,7 +240,7 @@ _081BAFD8: _081BAFE4: cmp r6, 0 beq _081BB00A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, =gActiveBank ldrb r1, [r3] @@ -271,7 +271,7 @@ sub_81BB02C: @ 81BB02C mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr mov r12, r0 ldr r0, [r0] ldr r7, =gActiveBank @@ -427,7 +427,7 @@ _081BB134: adds r0, r5 ldrb r0, [r0] bl sub_80729D0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -1006,7 +1006,7 @@ sub_81BB688: @ 81BB688 lsls r0, 3 adds r2, r0, r1 ldrb r5, [r2, 0xC] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 1 @@ -1174,7 +1174,7 @@ _081BB808: thumb_func_start sub_81BB828 sub_81BB828: @ 81BB828 push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -1312,7 +1312,7 @@ sub_81BB92C: @ 81BB92C bne _081BB97E adds r0, r3, 0 bl sub_805E408 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -1344,7 +1344,7 @@ _081BB97E: thumb_func_start dp01t_35_3_free_vram dp01t_35_3_free_vram: @ 81BB9A0 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] @@ -1383,7 +1383,7 @@ sub_81BB9F4: @ 81BB9F4 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r7, =gActiveBank ldrb r1, [r7] @@ -1478,7 +1478,7 @@ _081BBAB0: thumb_func_start sub_81BBAE8 sub_81BBAE8: @ 81BBAE8 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r4, =gActiveBank ldrb r2, [r4] @@ -1596,7 +1596,7 @@ _081BBBF2: thumb_func_start sub_81BBC04 sub_81BBC04: @ 81BBC04 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -1620,7 +1620,7 @@ _081BBC26: thumb_func_start bx_80E8A6C bx_80E8A6C: @ 81BBC34 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -4051,7 +4051,7 @@ sub_81BD260: @ 81BD260 ldrb r3, [r0] cmp r3, 0 bne _081BD2A8 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -4101,7 +4101,7 @@ _081BD2DE: thumb_func_start sub_81BD2F0 sub_81BD2F0: @ 81BD2F0 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4494,7 +4494,7 @@ sub_81BD5C8: @ 81BD5C8 thumb_func_start sub_81BD674 sub_81BD674: @ 81BD674 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4743,7 +4743,7 @@ _081BD7A2: b _081BD8B6 .pool _081BD898: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4790,7 +4790,7 @@ bx_move_anim_3: @ 81BD8C8 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4898,7 +4898,7 @@ _081BD98A: ands r0, r2 strb r0, [r1] _081BD9D8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -5340,7 +5340,7 @@ sub_81BDD9C: @ 81BDD9C movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5880,7 +5880,7 @@ _081BE21A: adds r1, r4 ldrb r0, [r5] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r5] ldr r1, [r0, 0x4] @@ -6059,7 +6059,7 @@ dp01t_30_3_80EB11C: @ 81BE3D4 b _081BE478 .pool _081BE404: - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r1, [r5] @@ -6127,7 +6127,7 @@ _081BE478: thumb_func_start sub_81BE498 sub_81BE498: @ 81BE498 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -6163,7 +6163,7 @@ _081BE4D0: thumb_func_start sub_81BE4E0 sub_81BE4E0: @ 81BE4E0 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 5c420158a5..0d9bb2331f 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -157,7 +157,7 @@ _0818661A: thumb_func_start sub_8186630 sub_8186630: @ 8186630 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -311,7 +311,7 @@ _0818676A: lsrs r3, r0, 24 cmp r3, 0x1 bne _08186816 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr mov r12, r0 ldr r0, [r0] ldrb r2, [r6] @@ -388,7 +388,7 @@ _0818676A: adds r0, r4, 0 bl FreeSpritePaletteByTag _08186816: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] mov r2, r8 ldrb r1, [r2] @@ -425,7 +425,7 @@ sub_818686C: @ 818686C movs r0, 0 mov r9, r0 mov r8, r0 - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r7, =gActiveBank ldrb r2, [r7] @@ -561,7 +561,7 @@ _08186964: ldrb r0, [r0] bl sub_80729D0 _08186994: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -575,7 +575,7 @@ _08186994: orrs r1, r2 strb r1, [r0, 0x1] _081869AE: - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r4, =gActiveBank ldrb r2, [r4] @@ -639,7 +639,7 @@ _08186A40: lsls r2, 1 bl m4aMPlayVolumeControl _08186A4C: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -810,7 +810,7 @@ _08186B8A: lsrs r1, 16 adds r0, r5, 0 bl sub_805EE54 - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -881,7 +881,7 @@ sub_8186C48: @ 8186C48 ldrsh r0, [r0, r1] cmp r0, 0 bne _08186CFA - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r4, r3, 1 @@ -1009,7 +1009,7 @@ _08186D86: thumb_func_start sub_8186D9C sub_8186D9C: @ 8186D9C push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -1147,7 +1147,7 @@ sub_8186EA4: @ 8186EA4 ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _08186EF0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 @@ -1179,7 +1179,7 @@ _08186EF0: thumb_func_start sub_8186F14 sub_8186F14: @ 8186F14 push {r4,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r4, =gActiveBank ldrb r1, [r4] @@ -1231,7 +1231,7 @@ _08186F6E: thumb_func_start sub_8186F94 sub_8186F94: @ 8186F94 push {r4-r7,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1327,7 +1327,7 @@ _08187050: thumb_func_start sub_8187084 sub_8187084: @ 8187084 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -1411,7 +1411,7 @@ _08187120: thumb_func_start sub_818714C sub_818714C: @ 818714C push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -1435,7 +1435,7 @@ _0818716E: thumb_func_start sub_818717C sub_818717C: @ 818717C push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -3888,7 +3888,7 @@ sub_8188768: @ 8188768 ldrb r3, [r0] cmp r3, 0 bne _081887B0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -3940,7 +3940,7 @@ _081887EC: thumb_func_start sub_8188800 sub_8188800: @ 8188800 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4278,7 +4278,7 @@ sub_8188A4C: @ 8188A4C thumb_func_start sub_8188AF8 sub_8188AF8: @ 8188AF8 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4499,7 +4499,7 @@ _08188BE6: b _08188CFA .pool _08188CDC: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4546,7 +4546,7 @@ sub_8188D0C: @ 8188D0C adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4654,7 +4654,7 @@ _08188DCE: ands r0, r2 strb r0, [r1] _08188E1C: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -4983,7 +4983,7 @@ sub_81890CC: @ 81890CC movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5457,7 +5457,7 @@ sub_8189438: @ 8189438 adds r1, r4 ldrb r0, [r6] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r6] ldr r1, [r0, 0x4] @@ -5632,7 +5632,7 @@ sub_8189648: @ 8189648 b _08189742 .pool _08189678: - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -5699,7 +5699,7 @@ _081896E4: adds r1, r2 movs r3, 0 strb r0, [r1] - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -5739,7 +5739,7 @@ _08189742: thumb_func_start sub_818975C sub_818975C: @ 818975C push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -5775,7 +5775,7 @@ _08189794: thumb_func_start sub_81897A4 sub_81897A4: @ 81897A4 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 6ab274da21..1b0cd52e32 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -132,7 +132,7 @@ _08189A40: thumb_func_start sub_8189A58 sub_8189A58: @ 8189A58 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] @@ -244,7 +244,7 @@ _08189B42: bne _08189B48 b _08189D18 _08189B48: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr mov r9, r0 ldr r0, [r0] ldr r5, =gActiveBank @@ -435,7 +435,7 @@ _08189CE6: _08189CF2: cmp r6, 0 beq _08189D18 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, =gActiveBank ldrb r1, [r3] @@ -478,7 +478,7 @@ sub_8189D40: @ 8189D40 lsls r0, 24 cmp r0, 0 bne _08189DBE - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldrb r2, [r4] ldr r1, [r0, 0x4] @@ -527,7 +527,7 @@ _08189D8C: adds r0, r3, 0 bl sub_8172EF0 _08189DBE: - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, =gActiveBank ldrb r5, [r2] @@ -621,7 +621,7 @@ _08189E54: ldrb r0, [r0] bl sub_80729D0 _08189E84: - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -702,7 +702,7 @@ _08189F38: lsls r2, 1 bl m4aMPlayVolumeControl _08189F44: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -779,7 +779,7 @@ _08189FC8: ldr r1, =gSprites adds r0, r1 bl DestroySprite - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -975,7 +975,7 @@ _0818A190: thumb_func_start sub_818A1B0 sub_818A1B0: @ 818A1B0 push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -1113,7 +1113,7 @@ sub_818A2B4: @ 818A2B4 bne _0818A306 adds r0, r3, 0 bl sub_805E408 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -1145,7 +1145,7 @@ _0818A306: thumb_func_start sub_818A328 sub_818A328: @ 818A328 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] @@ -1184,7 +1184,7 @@ sub_818A37C: @ 818A37C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r7, =gActiveBank ldrb r1, [r7] @@ -1279,7 +1279,7 @@ _0818A438: thumb_func_start sub_818A470 sub_818A470: @ 818A470 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r4, =gActiveBank ldrb r2, [r4] @@ -1397,7 +1397,7 @@ _0818A57A: thumb_func_start sub_818A58C sub_818A58C: @ 818A58C push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -1421,7 +1421,7 @@ _0818A5AE: thumb_func_start sub_818A5BC sub_818A5BC: @ 818A5BC push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -3852,7 +3852,7 @@ sub_818BBE8: @ 818BBE8 ldrb r3, [r0] cmp r3, 0 bne _0818BC30 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -3902,7 +3902,7 @@ _0818BC66: thumb_func_start sub_818BC78 sub_818BC78: @ 818BC78 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4350,7 +4350,7 @@ sub_818BFB8: @ 818BFB8 thumb_func_start sub_818C064 sub_818C064: @ 818C064 push {r4-r6,lr} - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] @@ -4599,7 +4599,7 @@ _0818C192: b _0818C2A6 .pool _0818C288: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4646,7 +4646,7 @@ bx_move_anim_2: @ 818C2B8 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4754,7 +4754,7 @@ _0818C37A: ands r0, r2 strb r0, [r1] _0818C3C8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -5134,7 +5134,7 @@ sub_818C6F4: @ 818C6F4 movs r2, 0x9 bl healthbar_draw_field_maybe ldrb r2, [r4] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5676,7 +5676,7 @@ _0818CB5A: adds r1, r4 ldrb r0, [r5] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r5] ldr r1, [r0, 0x4] @@ -5855,7 +5855,7 @@ sub_818CD30: @ 818CD30 b _0818CDD4 .pool _0818CD60: - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r1, [r5] @@ -5923,7 +5923,7 @@ _0818CDD4: thumb_func_start bx_increment_dp11b_field_5_till_x60_then_resume bx_increment_dp11b_field_5_till_x60_then_resume: @ 818CDF4 push {r4,lr} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] @@ -5959,7 +5959,7 @@ _0818CE2C: thumb_func_start sub_818CE3C sub_818CE3C: @ 818CE3C push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index dac3034a95..acd7167766 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -336,7 +336,7 @@ bx_wait_t6: @ 8159624 ldrb r0, [r0] cmp r0, 0 beq _0815964A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -410,7 +410,7 @@ _081596BE: thumb_func_start sub_81596D4 sub_81596D4: @ 81596D4 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -484,7 +484,7 @@ _0815976A: thumb_func_start bx_80364D0 bx_80364D0: @ 815977C push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -689,7 +689,7 @@ sub_8159904: @ 8159904 thumb_func_start sub_8159910 sub_8159910: @ 8159910 push {r4,r5,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -730,7 +730,7 @@ sub_8159964: @ 8159964 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 51193024fd..8291b05fa8 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -324,7 +324,7 @@ sub_816864C: @ 816864C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r5, =gActiveBank ldrb r2, [r5] @@ -500,7 +500,7 @@ _0816877A: adds r0, r5 ldrb r0, [r0] bl sub_80729D0 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -549,7 +549,7 @@ sub_8168818: @ 8168818 _08168842: cmp r4, 0 beq _08168904 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r0, [r7] ldr r4, [r0, 0x4] lsls r0, r3, 1 @@ -761,7 +761,7 @@ _08168A1A: thumb_func_start sub_8168A20 sub_8168A20: @ 8168A20 push {r4-r6,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] @@ -833,7 +833,7 @@ _08168AB4: thumb_func_start sub_8168AC8 sub_8168AC8: @ 8168AC8 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -907,7 +907,7 @@ _08168B5E: thumb_func_start sub_8168B70 sub_8168B70: @ 8168B70 push {lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] @@ -3221,7 +3221,7 @@ sub_816A078: @ 816A078 thumb_func_start sub_816A084 sub_816A084: @ 816A084 push {r4,r5,lr} - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -3262,7 +3262,7 @@ sub_816A0D8: @ 816A0D8 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] @@ -3407,7 +3407,7 @@ sub_816A144: @ 816A144 b _0816A25A .pool _0816A23C: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -3449,7 +3449,7 @@ bx_move_anim_5: @ 816A26C ldrb r0, [r1] lsls r0, 8 orrs r4, r0 - ldr r7, =gUnknown_020244D0 + ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4342,7 +4342,7 @@ sub_816A90C: @ 816A90C adds r1, r4 ldrb r0, [r7] strh r0, [r1, 0x8] - ldr r3, =gUnknown_020244D0 + ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r7] ldr r1, [r0, 0x4] @@ -4393,7 +4393,7 @@ sub_816AA80: @ 816AA80 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r6, 2 @@ -4622,7 +4622,7 @@ sub_816AC78: @ 816AC78 b _0816ACE6 .pool _0816ACA8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r5, =gActiveBank ldrb r1, [r5] diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 3d3fba02b2..de56171670 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -18768,7 +18768,7 @@ _081A43EE: sub_81A4410: @ 81A4410 push {r4,lr} ldr r4, =gScriptResult - bl sub_8185338 + bl MoveRecordedBattleToSaveData strh r0, [r4] ldr r0, =gSaveBlock2Ptr ldr r1, [r0] diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 8bc9553f77..d9bb3d8cc4 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -780,7 +780,7 @@ sub_807294C: @ 807294C ldr r7, [sp, 0x14] lsls r0, 24 lsrs r0, 24 - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, [r4, 0xC] lsls r4, r0, 2 @@ -1398,7 +1398,7 @@ sub_8072E0C: @ 8072E0C lsls r0, 24 cmp r0, 0 bne _08072F28 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] movs r2, 0x3A ldrsh r0, [r7, r2] @@ -1500,7 +1500,7 @@ _08072F28: lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x2C] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r2, [sp, 0x2C] @@ -2004,7 +2004,7 @@ _0807336A: bne _08073382 b _080735A8 _08073382: - ldr r5, =gUnknown_020244D0 + ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldr r3, [r0] mov r0, r9 @@ -2988,7 +2988,7 @@ _08073BC6: ldr r2, [sp, 0x10] cmp r2, 0 beq _08073C0A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, [r0, 0x8] ldrb r2, [r3, 0x9] @@ -3311,7 +3311,7 @@ sub_8073E64: @ 8073E64 bne _08073F54 ldrb r5, [r4, 0xA] movs r4, 0 - ldr r6, =gUnknown_020244D0 + ldr r6, =gBattleSpritesDataPtr adds r0, r7, 0 adds r0, 0xE adds r2, r3, r0 @@ -3406,7 +3406,7 @@ _08073F54: negs r0, r0 cmp r1, r0 bne _08073F8A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -3516,7 +3516,7 @@ _08074034: negs r0, r0 cmp r2, r0 bne _0807406A - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r5, 1 @@ -4140,7 +4140,7 @@ _08074542: adds r4, 0x1 cmp r4, 0x2 ble _08074542 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] adds r0, r7, r0 @@ -4222,7 +4222,7 @@ _080745B8: cmp r0, 0x1 bne _08074672 _08074626: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r7, 2 @@ -4760,7 +4760,7 @@ sub_8074AA0: @ 8074AA0 mov r9, r2 cmp r2, 0 bne _08074AEC - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0xC] mov r1, r8 @@ -4782,7 +4782,7 @@ sub_8074AA0: @ 8074AA0 b _08074B48 .pool _08074AEC: - ldr r2, =gUnknown_020244D0 + ldr r2, =gBattleSpritesDataPtr mov r10, r2 ldr r0, [r2] ldr r2, [r0, 0xC] @@ -4833,7 +4833,7 @@ _08074B48: beq _08074B64 cmp r2, 0 bne _08074B6C - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] adds r0, r7, r0 @@ -4851,7 +4851,7 @@ _08074B6C: negs r0, r0 cmp r4, r0 bne _08074B86 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0xC] mov r2, r8 @@ -4890,7 +4890,7 @@ sub_8074B9C: @ 8074B9C beq _08074CA0 b _08074D9E _08074BB8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0xC] lsls r5, r6, 2 @@ -4924,7 +4924,7 @@ _08074BF4: ldr r0, =gSprites mov r8, r0 _08074BFA: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0xC] adds r0, r7, r6 @@ -4995,7 +4995,7 @@ _08074C8A: b _08074D9E .pool _08074CA0: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0xC] lsls r5, r6, 2 @@ -5055,7 +5055,7 @@ _08074D02: ldrb r1, [r1] lsls r1, 5 adds r0, r1 - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r1, [r1, 0xC] adds r1, r4, r1 @@ -5086,7 +5086,7 @@ _08074D5C: ldrb r1, [r1] lsls r1, 5 adds r0, r1 - ldr r1, =gUnknown_020244D0 + ldr r1, =gBattleSpritesDataPtr ldr r1, [r1] ldr r1, [r1, 0xC] adds r1, r4, r1 diff --git a/asm/contest.s b/asm/contest.s index b469dd8eba..561c798575 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -5587,7 +5587,7 @@ sub_80DA830: @ 80DA830 str r1, [r0] bl FreeAllWindowBuffers bl sub_80D7A5C - bl sub_805F094 + bl FreeMonSpritesGfx ldr r0, =c2_exit_to_overworld_2_switch bl SetMainCallback2 _080DA860: diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 8a1bf00f11..03e1aaf2b6 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -4569,7 +4569,7 @@ sub_80F7E64: @ 80F7E64 str r4, [r0, 0x1C] bl Free str r4, [r5] - bl sub_805F094 + bl FreeMonSpritesGfx pop {r4,r5} pop {r0} bx r0 diff --git a/asm/contest_painting.s b/asm/contest_painting.s index 03fa9b05ac..2caf151947 100644 --- a/asm/contest_painting.s +++ b/asm/contest_painting.s @@ -72,7 +72,7 @@ sub_812FE0C: @ 812FE0C movs r0, 0x1 bl GetBgTilemapBuffer bl Free - bl sub_805F094 + bl FreeMonSpritesGfx pop {r4,r5} pop {r0} bx r0 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 0fa0c5eb3e..8894037877 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -189,7 +189,7 @@ evolution_cutscene: @ 813DA8C ldr r1, =gBattleTerrain movs r0, 0x9 strb r0, [r1] - bl c2_berry_program_update_menu + bl sub_80356D0 bl LoadBattleTextboxAndBackground bl ResetSpriteData bl remove_some_task @@ -482,7 +482,7 @@ sub_813DD7C: @ 813DD7C ldr r1, =gBattleTerrain movs r0, 0x9 strb r0, [r1] - bl c2_berry_program_update_menu + bl sub_80356D0 bl LoadBattleTextboxAndBackground bl ResetSpriteData bl FreeAllSpritePalettes @@ -1775,7 +1775,7 @@ _0813EAF6: _0813EB06: adds r0, r7, 0 bl DestroyTask - bl sub_805F094 + bl FreeMonSpritesGfx ldr r4, =gUnknown_0203AB80 ldr r0, [r4] bl Free diff --git a/asm/link.s b/asm/link.s index 0386337583..fb20b1fb2f 100644 --- a/asm/link.s +++ b/asm/link.s @@ -71211,7 +71211,7 @@ sub_802DBF8: @ 802DBF8 movs r6, 0 cmp r6, r10 bge _0802DC62 - ldr r0, =gUnknown_08300D38 + ldr r0, =gMonFrontPicCoords mov r9, r0 ldr r1, =gUnknown_02022D00 mov r8, r1 diff --git a/asm/pokeball.s b/asm/pokeball.s index 557813c198..4e637fb9d3 100755 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -17,7 +17,7 @@ sub_80753E8: @ 80753E8 ldr r1, =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r1, [r6] @@ -992,7 +992,7 @@ _08075C22: movs r2, 0xC bl PlayCry4 _08075C2E: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] mov r2, r8 @@ -1082,7 +1082,7 @@ _08075CD8: movs r2, 0xB bl PlayCry4 _08075CE4: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] mov r2, r8 @@ -1215,7 +1215,7 @@ _08075E00: lsls r0, 24 cmp r0, 0 beq _08075E56 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1247,7 +1247,7 @@ _08075E56: lsls r0, 24 cmp r0, 0 beq _08075E70 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1278,7 +1278,7 @@ _08075E9C: _08075EA0: movs r4, 0x2 _08075EA2: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] mov r2, r8 @@ -1508,7 +1508,7 @@ _0807605C: strh r1, [r0, 0x26] ldr r0, =gDoingBattleAnim strb r2, [r0] - ldr r4, =gUnknown_020244D0 + ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r0, [r0, 0x4] lsls r1, r6, 1 @@ -1619,7 +1619,7 @@ _08076130: ands r0, r1 cmp r0, 0 beq _08076196 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r7, 1 @@ -1819,7 +1819,7 @@ _080762F8: lsls r0, 24 cmp r0, 0 beq _08076358 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1892,7 +1892,7 @@ sub_8076398: @ 8076398 lsls r0, 24 cmp r0, 0 beq _080763E8 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s index bc402d91c1..1f8e45f0ad 100644 --- a/asm/pokeblock_feed.s +++ b/asm/pokeblock_feed.s @@ -797,7 +797,7 @@ sub_817A2C0: @ 817A2C0 ldr r0, =gUnknown_0203BD18 ldr r0, [r0] bl Free - bl sub_805F094 + bl FreeMonSpritesGfx _0817A304: pop {r4} pop {r0} diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s index 48325cfed9..f733033ff2 100644 --- a/asm/recorded_battle.s +++ b/asm/recorded_battle.s @@ -348,7 +348,7 @@ _0818507A: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, =sub_80384E4 + ldr r0, =CB2_QuitRecordedBattle bl SetMainCallback2 movs r0, 0xFF b _081850C6 @@ -681,8 +681,8 @@ _08185332: bx r1 thumb_func_end sub_81852F0 - thumb_func_start sub_8185338 -sub_8185338: @ 8185338 + thumb_func_start MoveRecordedBattleToSaveData +MoveRecordedBattleToSaveData: @ 8185338 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1469,7 +1469,7 @@ _08185A14: pop {r1} bx r1 .pool - thumb_func_end sub_8185338 + thumb_func_end MoveRecordedBattleToSaveData thumb_func_start sub_8185A54 sub_8185A54: @ 8185A54 @@ -2655,8 +2655,8 @@ sub_8186444: @ 8186444 .pool thumb_func_end sub_8186444 - thumb_func_start rfu_lacks_rfufunc -rfu_lacks_rfufunc: @ 8186450 + thumb_func_start sub_8186450 +sub_8186450: @ 8186450 push {lr} movs r1, 0 ldr r0, =gUnknown_0203CCD0 @@ -2669,7 +2669,7 @@ _0818645E: pop {r1} bx r1 .pool - thumb_func_end rfu_lacks_rfufunc + thumb_func_end sub_8186450 thumb_func_start sub_8186468 sub_8186468: @ 8186468 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 8bc97b45aa..c7e384a10f 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -348,7 +348,7 @@ sub_80A9614: @ 80A9614 lsls r0, 24 cmp r0, 0 beq _080A9676 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 @@ -404,7 +404,7 @@ _080A96AA: bl sub_805DF84 b _080A96F4 _080A96B2: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 @@ -459,7 +459,7 @@ sub_80A9708: @ 80A9708 bcc _080A9722 b _080A9AA0 _080A9722: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r2, r7, 2 @@ -591,7 +591,7 @@ _080A9786: adds r1, r7, r1 ldrb r1, [r1] bl StartSpriteAnim - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] ldr r2, [sp] @@ -808,7 +808,7 @@ _080A998C: adds r1, r7, r1 ldrb r1, [r1] bl StartSpriteAnim - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] ldr r1, [sp] @@ -839,7 +839,7 @@ _080A9A70: adds r2, r0 lsls r2, 2 adds r2, r1 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] ldr r1, [sp] diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index 6135f81e0e..bb74b3713e 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -94,7 +94,7 @@ _080A5D28: lsls r0, 24 cmp r0, 0 beq _080A5D60 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -112,7 +112,7 @@ _080A5D28: b _080A5D7E .pool _080A5D60: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -195,7 +195,7 @@ _080A5E00: ldr r2, [r2, 0x8] b _080A5E42 _080A5E04: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r4, 2 @@ -285,7 +285,7 @@ _080A5EC0: _080A5EC8: cmp r5, 0xC9 bne _080A5F58 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r4, 2 @@ -344,7 +344,7 @@ _080A5F44: lsls r0, 16 lsrs r0, 16 _080A5F4E: - ldr r1, =gUnknown_08300D38 + ldr r1, =gMonFrontPicCoords lsls r0, 2 b _080A5F90 .pool @@ -352,7 +352,7 @@ _080A5F58: ldr r0, =0x00000181 cmp r5, r0 bne _080A5F7C - ldr r0, =gUnknown_08525F78 + ldr r0, =gCastformFrontSpriteCoords ldr r1, =gBattleMonForms adds r1, r4, r1 ldrb r1, [r1] @@ -366,11 +366,11 @@ _080A5F7C: lsls r0, 1 cmp r5, r0 bls _080A5F8C - ldr r0, =gUnknown_08300D38 + ldr r0, =gMonFrontPicCoords b _080A5F92 .pool _080A5F8C: - ldr r1, =gUnknown_08300D38 + ldr r1, =gMonFrontPicCoords _080A5F8E: lsls r0, r5, 2 _080A5F90: @@ -546,7 +546,7 @@ _080A60E4: ldrh r1, [r2] b _080A610E _080A60E8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 @@ -654,7 +654,7 @@ sub_80A6190: @ 80A6190 lsls r0, 24 cmp r0, 0 beq _080A61E4 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -672,7 +672,7 @@ sub_80A6190: @ 80A6190 b _080A6202 .pool _080A61E4: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -2976,7 +2976,7 @@ _080A72B4: lsls r0, 30 cmp r0, 0 bne _080A7312 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r7, 1 @@ -4571,7 +4571,7 @@ _080A7F78: lsls r0, 24 cmp r0, 0 bne _080A7FD8 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -4606,7 +4606,7 @@ _080A7FD0: b _080A8026 .pool _080A7FD8: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -4641,7 +4641,7 @@ _080A8018: b _080A8042 .pool _080A8024: - ldr r0, =gUnknown_08300D38 + ldr r0, =gMonFrontPicCoords _080A8026: lsls r1, r2, 2 adds r1, r0 @@ -5200,7 +5200,7 @@ _080A8412: lsrs r0, 24 cmp r0, 0x1 beq _080A845E - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r2, [sp, 0x40] @@ -5263,7 +5263,7 @@ _080A84B0: lsrs r0, 24 cmp r0, 0x1 beq _080A84F6 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r3, [sp, 0x40] @@ -5338,7 +5338,7 @@ _080A8540: mov r2, r10 lsls r1, r2, 16 asrs r1, 16 - ldr r3, =gUnknown_08300D38 + ldr r3, =gMonFrontPicCoords b _080A85B2 .pool _080A85A0: @@ -5490,7 +5490,7 @@ _080A86C4: lsls r0, 24 cmp r0, 0 bne _080A8790 - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r1, r8 @@ -5580,7 +5580,7 @@ _080A8784: b _080A8864 .pool _080A8790: - ldr r0, =gUnknown_020244D0 + ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r1, r8 @@ -5662,7 +5662,7 @@ _080A8834: add r0, r8 ldrb r0, [r0] lsls r0, 2 - ldr r1, =gUnknown_08525F78 + ldr r1, =gCastformFrontSpriteCoords adds r4, r0, r1 b _080A8866 .pool @@ -5671,13 +5671,13 @@ _080A8850: lsls r0, 1 cmp r7, r0 bls _080A8860 - ldr r4, =gUnknown_08300D38 + ldr r4, =gMonFrontPicCoords b _080A8866 .pool _080A8860: lsls r1, r7, 2 _080A8862: - ldr r0, =gUnknown_08300D38 + ldr r0, =gMonFrontPicCoords _080A8864: adds r4, r1, r0 _080A8866: diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s index e5f69eeacf..231879f02b 100644 --- a/asm/script_pokemon_util_80F87D8.s +++ b/asm/script_pokemon_util_80F87D8.s @@ -842,7 +842,7 @@ sub_80F8EB8: @ 80F8EB8 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] - bl sub_805F094 + bl FreeMonSpritesGfx _080F8EDC: pop {r0} bx r0 diff --git a/asm/trade.s b/asm/trade.s index 42ed85948f..d4c54cef68 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -8939,7 +8939,7 @@ _0807C04C: adds r1, r0 lsls r1, 2 adds r1, r3 - ldr r2, =gUnknown_08300D38 + ldr r2, =gMonFrontPicCoords adds r0, r4, 0 adds r0, 0xF0 ldrh r0, [r0] @@ -10395,7 +10395,7 @@ _0807CD1C: adds r1, r0 lsls r1, 2 adds r1, r4 - ldr r3, =gUnknown_08300D38 + ldr r3, =gMonFrontPicCoords adds r2, 0xF2 ldrh r0, [r2] lsls r0, 2 @@ -10663,7 +10663,7 @@ _0807CF5C: movs r0, 0 bl GetBgTilemapBuffer bl Free - bl sub_805F094 + bl FreeMonSpritesGfx ldr r0, [r7] bl Free str r4, [r7] @@ -11001,7 +11001,7 @@ _0807D428: adds r1, r0 lsls r1, 2 adds r1, r3 - ldr r2, =gUnknown_08300D38 + ldr r2, =gMonFrontPicCoords adds r0, r4, 0 adds r0, 0xF0 ldrh r0, [r0] @@ -12500,7 +12500,7 @@ _0807E168: adds r1, r0 lsls r1, 2 adds r1, r4 - ldr r3, =gUnknown_08300D38 + ldr r3, =gMonFrontPicCoords adds r2, 0xF2 ldrh r0, [r2] lsls r0, 2 @@ -12768,7 +12768,7 @@ _0807E3A8: movs r0, 0 bl GetBgTilemapBuffer bl Free - bl sub_805F094 + bl FreeMonSpritesGfx ldr r0, [r7] bl Free str r4, [r7] @@ -14136,7 +14136,7 @@ c2_080543C4: @ 807F068 movs r0, 0 bl GetBgTilemapBuffer bl Free - bl sub_805F094 + bl FreeMonSpritesGfx ldr r4, =gUnknown_020322A0 ldr r0, [r4] bl Free diff --git a/data/battle_anims.s b/data/battle_anims.s index 6b48bcd2ae..8b285f7be6 100644 --- a/data/battle_anims.s +++ b/data/battle_anims.s @@ -327,7 +327,7 @@ gUnknown_08525E98:: @ 8525E98 gUnknown_08525F58:: @ 8525F58 .incbin "baserom.gba", 0x525f58, 0x20 -gUnknown_08525F78:: @ 8525F78 +gCastformFrontSpriteCoords:: @ 8525F78 .incbin "baserom.gba", 0x525f78, 0x10 gUnknown_08525F88:: @ 8525F88 diff --git a/data/data2b.s b/data/data2b.s index fd72e835e6..96d56c820c 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -95,7 +95,7 @@ gUnknown_082FF6C0:: @ 82FF6C0 gUnknown_082FF70C:: @ 82FF70C .incbin "baserom.gba", 0x2ff70c, 0x162c -gUnknown_08300D38:: @ 8300D38 +gMonFrontPicCoords:: @ 8300D38 .incbin "baserom.gba", 0x300d38, 0x6e0 @ 8301418 @@ -196,8 +196,13 @@ gUnknown_0831AC70:: @ 831AC70 gUnknown_0831AC88:: @ 831AC88 .incbin "baserom.gba", 0x31ac88, 0x18 -gUnknown_0831ACA0:: @ 831ACA0 - .incbin "baserom.gba", 0x31aca0, 0x40 +gText_ShedinjaJapaneseName:: @ 831ACA0 + .string "ヌケニン$" @Nukenin + +.align 2 + +gUnknown_0831ACA8:: @ 831ACA8 + .incbin "baserom.gba", 0x31aca8, 0x38 gUnknown_0831ACE0:: @ 831ACE0 .incbin "baserom.gba", 0x31ace0, 0x8 diff --git a/data/event_scripts.s b/data/event_scripts.s index e4293570de..4dd5761e57 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -84,14 +84,14 @@ gUnknown_0823B68C:: @ 823B68C gUnknown_0823C050:: @ 823C050 .incbin "baserom.gba", 0x23c050, 0x6431 -gUnknown_08242481:: @ 8242481 +gText_BattleRecordCouldntBeSaved:: @ 8242481 .incbin "baserom.gba", 0x242481, 0x87b gUnknown_08242CFC:: @ 8242CFC .incbin "baserom.gba", 0x242cfc, 0x6a91 -gUnknown_0824978D:: @ 824978D - .incbin "baserom.gba", 0x24978d, 0xe +gText_LinkStandby3:: @ 824978D + .string "Link standby…$" gUnknown_0824979B:: @ 824979B .incbin "baserom.gba", 0x24979b, 0x944d diff --git a/include/battle.h b/include/battle.h index 72168aa604..afb3c8d6e9 100644 --- a/include/battle.h +++ b/include/battle.h @@ -264,32 +264,32 @@ struct TrainerMonNoItemDefaultMoves { - u16 species; + u16 iv; u8 lvl; - u16 evsValue; + u16 species; }; struct TrainerMonItemDefaultMoves { - u16 species; + u16 iv; u8 lvl; - u16 evsValue; + u16 species; u16 heldItem; }; struct TrainerMonNoItemCustomMoves { - u16 species; + u16 iv; u8 lvl; - u16 evsValue; + u16 species; u16 moves[4]; }; struct TrainerMonItemCustomMoves { - u16 species; + u16 iv; u8 lvl; - u16 evsValue; + u16 species; u16 heldItem; u16 moves[4]; }; @@ -863,10 +863,13 @@ extern struct BattleScripting gBattleScripting; // battle_1 void LoadBattleTextboxAndBackground(void); void LoadBattleEntryBackground(void); +void ApplyPlayerChosenFrameToBattleMenu(void); +bool8 LoadChosenBattleElement(u8 caseId); void task00_0800F6FC(u8 taskId); // battle_2 void CB2_InitBattle(void); +void CB2_QuitRecordedBattle(void); void CancelMultiTurnMoves(u8 bank); void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); void PrepareStringBattle(u16 stringId, u8 bank); @@ -933,15 +936,18 @@ extern const u8 gUnknown_0831C494[]; // battle_5 void AllocateBattleResrouces(void); +void FreeBattleResources(void); void AdjustFriendshipOnBattleFaint(u8 bank); void sub_80571DC(u8 bank, u8 arg1); u32 sub_805725C(u8 bank); // battle 7 void AllocateBattleSpritesData(void); +void FreeBattleSpritesData(void); +void AllocateMonSpritesGfx(void); +void FreeMonSpritesGfx(void); void BattleMusicStop(void); void sub_805E990(struct Pokemon* mon, u8 bank); -void AllocateMonSpritesGfx(void); void sub_805EF14(void); bool8 BattleInitAllSprites(u8 *state1, u8 *state2); @@ -950,6 +956,30 @@ u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); u8 GetBankByIdentity(u8 bank); +struct BattleSpriteInfo +{ + u16 invisible : 1; // 0x1 + u16 flag_x2 : 1; // 0x2 + u16 behindSubstitute : 1; // 0x4 + u16 flag_x8 : 1; // 0x8 + u16 hpNumbersNoBars : 1; // 0x10 + u16 transformSpecies; +}; + +struct BattleAnimationInfo +{ + u16 field; // to fill up later +}; + +struct BattleSpriteData +{ + struct BattleSpriteInfo *bankData; + void* field_4; + struct BattleAnimationInfo *animationData; +}; + +extern struct BattleSpriteData *gBattleSpritesDataPtr; + // Move this somewhere else #include "sprite.h" diff --git a/include/link.h b/include/link.h index b719371dac..9d581a6c11 100644 --- a/include/link.h +++ b/include/link.h @@ -182,5 +182,6 @@ void sub_800E0E8(void); bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); +void sub_800ADF8(void); #endif // GUARD_LINK_H diff --git a/include/main.h b/include/main.h index e5460b3bfd..e283d1754c 100644 --- a/include/main.h +++ b/include/main.h @@ -39,6 +39,7 @@ struct Main /*0x439*/ u8 oamLoadDisabled:1; /*0x439*/ u8 inBattle:1; + /*0x439*/ u8 field_439_x4:1; }; extern u8 gUnknown_3001764; diff --git a/include/pokemon.h b/include/pokemon.h index 5ebb9afb17..4b678d6793 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -637,5 +637,6 @@ void sub_8068AA4(void); // sets stats for deoxys #include "sprite.h" void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); #endif // GUARD_POKEMON_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 407d0caf7b..5f3099d83f 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -7,5 +7,8 @@ void sub_8185F84(void); void sub_8184E58(void); void RecordedBattle_SetBankAction(u8 bank, u8 action); void sub_8185F90(u16 arg0); +bool8 sub_8186450(void); +u8 sub_8185FAC(void); +u8 MoveRecordedBattleToSaveData(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/include/unknown_task.h b/include/unknown_task.h index 7457451a88..9c6968c306 100644 --- a/include/unknown_task.h +++ b/include/unknown_task.h @@ -17,5 +17,6 @@ extern struct UnknownTaskStruct gUnknown_0831AC70; // Exported ROM declarations void remove_some_task(void); void sub_80BA038(struct UnknownTaskStruct arg0); +void sub_80BA0A8(void); #endif // GUARD_unknown_task_H diff --git a/src/battle_2.c b/src/battle_2.c index 8448273265..8d1f6a7a13 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -20,6 +20,14 @@ #include "dma3.h" #include "string_util.h" #include "malloc.h" +#include "event_data.h" +#include "m4a.h" +#include "window.h" +#include "rng.h" +#include "songs.h" +#include "sound.h" +#include "battle_message.h" +#include "sprite.h" struct UnknownStruct6 { @@ -64,21 +72,43 @@ extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern void (*gPreBattleCallback1)(void); extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for? extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for? - +extern u8 gBattleOutcome; +extern u8 gUnknown_02039B28[]; // possibly a struct? extern struct UnknownStruct6 gUnknown_02038C28; // todo: identify & document +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; +extern u8 gDecompressionBuffer[]; +extern u16 gUnknown_020243FC; +extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; + +extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; +extern const struct BattleMove gBattleMoves[]; +extern const u16 gUnknown_08C004E0[]; // battle textbox palette +extern const struct BgTemplate gUnknown_0831AA08[]; +extern const struct WindowTemplate * const gUnknown_0831ABA0[]; + +// strings +extern const u8 gText_LinkStandby3[]; +extern const u8 gText_RecordBattleToPass[]; +extern const u8 gText_BattleYesNoChoice[]; +extern const u8 gText_BattleRecordCouldntBeSaved[]; +extern const u8 gText_BattleRecordedOnPass[]; +extern const u8 gText_ShedinjaJapaneseName[]; extern void HandleLinkBattleSetup(void); // rom_3 extern void SetUpBattleVarsAndBirchZigzagoon(void); // rom_3 extern void sub_8032768(void); // rom_3 extern void dp12_8087EA4(void); -extern void c2_berry_program_update_menu(void); +extern void sub_80356D0(void); extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower extern void sub_8166188(void); // battle tower, sets link battle mons level but why? extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language extern void sub_81DB4DC(u8* dst, u8 arg2); // extern void sub_81B9150(void); -extern void sub_800ADF8(void); extern void sub_800AC34(void); +extern void sub_80B3AF8(u8 taskId); // cable club +extern void sub_8076918(u8 bank); +extern void sub_80729D0(u8 healthoxSpriteId); // this file's functions static void CB2_InitBattleInternal(void); @@ -87,9 +117,22 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void); static void CB2_HandleStartMultiPartnerBattle(void); static void CB2_HandleStartMultiBattle(void); static void CB2_HandleStartBattle(void); -void shedinja_something(struct Pokemon *mon); -void CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer); +static void TryCorrectShedinjaLanguage(struct Pokemon *mon); +static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer); void BattleMainCB1(void); +static void sub_8038538(struct Sprite *sprite); +static void sub_8038F14(void); +static void sub_8038F34(void); +static void sub_80392A8(void); +static void sub_803937C(void); +static void sub_803939C(void); +static void oac_poke_opponent(struct Sprite *sprite); +static void sub_803980C(struct Sprite *sprite); +static void sub_8039838(struct Sprite *sprite); +static void sub_8039894(struct Sprite *sprite); +static void sub_80398D0(struct Sprite *sprite); +static void sub_8039A48(struct Sprite *sprite); +void sub_8039AF4(struct Sprite *sprite); void CB2_InitBattle(void) { @@ -129,7 +172,7 @@ static void CB2_InitBattleInternal(void) SetHBlankCallback(NULL); SetVBlankCallback(NULL); - CpuFill32(0, (void *)VRAM, VRAM_SIZE); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); SetGpuReg(REG_OFFSET_MOSAIC, 0); SetGpuReg(REG_OFFSET_WIN0H, 240); @@ -182,7 +225,7 @@ static void CB2_InitBattleInternal(void) if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) gBattleTerrain = BATTLE_TERRAIN_INSIDE; - c2_berry_program_update_menu(); + sub_80356D0(); LoadBattleTextboxAndBackground(); ResetSpriteData(); ResetTasks(); @@ -573,12 +616,12 @@ static void CB2_HandleStartBattle(void) { ResetBlockReceivedFlags(); memcpy(gEnemyParty + 4, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); - shedinja_something(&gEnemyParty[0]); - shedinja_something(&gEnemyParty[1]); - shedinja_something(&gEnemyParty[2]); - shedinja_something(&gEnemyParty[3]); - shedinja_something(&gEnemyParty[4]); - shedinja_something(&gEnemyParty[5]); + TryCorrectShedinjaLanguage(&gEnemyParty[0]); + TryCorrectShedinjaLanguage(&gEnemyParty[1]); + TryCorrectShedinjaLanguage(&gEnemyParty[2]); + TryCorrectShedinjaLanguage(&gEnemyParty[3]); + TryCorrectShedinjaLanguage(&gEnemyParty[4]); + TryCorrectShedinjaLanguage(&gEnemyParty[5]); gBattleCommunication[MULTIUSE_STATE]++; } break; @@ -827,18 +870,18 @@ static void CB2_HandleStartMultiPartnerBattle(void) ResetBlockReceivedFlags(); if (GetMultiplayerId() != 0) memcpy(gEnemyParty + 4, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2); - shedinja_something(&gPlayerParty[0]); - shedinja_something(&gPlayerParty[1]); - shedinja_something(&gPlayerParty[2]); - shedinja_something(&gPlayerParty[3]); - shedinja_something(&gPlayerParty[4]); - shedinja_something(&gPlayerParty[5]); - shedinja_something(&gEnemyParty[0]); - shedinja_something(&gEnemyParty[1]); - shedinja_something(&gEnemyParty[2]); - shedinja_something(&gEnemyParty[3]); - shedinja_something(&gEnemyParty[4]); - shedinja_something(&gEnemyParty[5]); + TryCorrectShedinjaLanguage(&gPlayerParty[0]); + TryCorrectShedinjaLanguage(&gPlayerParty[1]); + TryCorrectShedinjaLanguage(&gPlayerParty[2]); + TryCorrectShedinjaLanguage(&gPlayerParty[3]); + TryCorrectShedinjaLanguage(&gPlayerParty[4]); + TryCorrectShedinjaLanguage(&gPlayerParty[5]); + TryCorrectShedinjaLanguage(&gEnemyParty[0]); + TryCorrectShedinjaLanguage(&gEnemyParty[1]); + TryCorrectShedinjaLanguage(&gEnemyParty[2]); + TryCorrectShedinjaLanguage(&gEnemyParty[3]); + TryCorrectShedinjaLanguage(&gEnemyParty[4]); + TryCorrectShedinjaLanguage(&gEnemyParty[5]); gBattleCommunication[MULTIUSE_STATE]++; } break; @@ -1262,19 +1305,19 @@ static void CB2_HandleStartMultiBattle(void) } } } - shedinja_something(&gPlayerParty[0]); - shedinja_something(&gPlayerParty[1]); - shedinja_something(&gPlayerParty[2]); - shedinja_something(&gPlayerParty[3]); - shedinja_something(&gPlayerParty[4]); - shedinja_something(&gPlayerParty[5]); + TryCorrectShedinjaLanguage(&gPlayerParty[0]); + TryCorrectShedinjaLanguage(&gPlayerParty[1]); + TryCorrectShedinjaLanguage(&gPlayerParty[2]); + TryCorrectShedinjaLanguage(&gPlayerParty[3]); + TryCorrectShedinjaLanguage(&gPlayerParty[4]); + TryCorrectShedinjaLanguage(&gPlayerParty[5]); - shedinja_something(&gEnemyParty[0]); - shedinja_something(&gEnemyParty[1]); - shedinja_something(&gEnemyParty[2]); - shedinja_something(&gEnemyParty[3]); - shedinja_something(&gEnemyParty[4]); - shedinja_something(&gEnemyParty[5]); + TryCorrectShedinjaLanguage(&gEnemyParty[0]); + TryCorrectShedinjaLanguage(&gEnemyParty[1]); + TryCorrectShedinjaLanguage(&gEnemyParty[2]); + TryCorrectShedinjaLanguage(&gEnemyParty[3]); + TryCorrectShedinjaLanguage(&gEnemyParty[4]); + TryCorrectShedinjaLanguage(&gEnemyParty[5]); gBattleCommunication[MULTIUSE_STATE]++; } @@ -1341,3 +1384,991 @@ static void CB2_HandleStartMultiBattle(void) } } +void BattleMainCB2(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); + + if (gMain.heldKeys & B_BUTTON && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450()) + { + gScriptResult = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; + ResetPaletteFadeControl(); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + SetMainCallback2(CB2_QuitRecordedBattle); + } +} + +static void FreeRestoreBattleData(void) +{ + gMain.callback1 = gPreBattleCallback1; + gUnknown_02039B28[0x15] = 3; + gMain.inBattle = 0; + ZeroEnemyPartyMons(); + m4aSongNumStop(0x5A); + FreeMonSpritesGfx(); + FreeBattleSpritesData(); + FreeBattleResources(); +} + +void CB2_QuitRecordedBattle(void) +{ + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + FreeRestoreBattleData(); + FreeAllWindowBuffers(); + SetMainCallback2(gMain.savedCallback); + } +} + +static void sub_8038528(struct Sprite* sprite) +{ + sprite->data0 = 0; + sprite->callback = sub_8038538; +} + +static void sub_8038538(struct Sprite *sprite) +{ + u16 *arr = (u16*)(gDecompressionBuffer); + + switch (sprite->data0) + { + case 0: + sprite->data0++; + sprite->data1 = 0; + sprite->data2 = 0x281; + sprite->data3 = 0; + sprite->data4 = 1; + // fall through + case 1: + sprite->data4--; + if (sprite->data4 == 0) + { + s32 i; + s32 r2; + s32 r0; + + sprite->data4 = 2; + r2 = sprite->data1 + sprite->data3 * 32; + r0 = sprite->data2 - sprite->data3 * 32; + for (i = 0; i < 29; i += 2) + { + arr[r2 + i] = 0x3D; + arr[r0 + i] = 0x3D; + } + sprite->data3++; + if (sprite->data3 == 21) + { + sprite->data0++; + sprite->data1 = 32; + } + } + break; + case 2: + sprite->data1--; + if (sprite->data1 == 20) + SetMainCallback2(CB2_InitBattle); + break; + } +} + +static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer) +{ + u32 nameHash = 0; + u32 personalityValue; + u8 fixedIV; + s32 i, j; + u8 monsCount; + + if (trainerNum == SECRET_BASE_OPPONENT) + return 0; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_x4000000))) + { + if (firstTrainer == TRUE) + ZeroEnemyPartyMons(); + + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + if (gTrainers[trainerNum].partySize > 3) + monsCount = 3; + else + monsCount = gTrainers[trainerNum].partySize; + } + else + { + monsCount = gTrainers[trainerNum].partySize; + } + + for (i = 0; i < monsCount; i++) + { + + if (gTrainers[trainerNum].doubleBattle == TRUE) + personalityValue = 0x80; + else if (gTrainers[trainerNum].encounterMusic_gender & 0x80) + personalityValue = 0x78; + else + personalityValue = 0x88; + + for (j = 0; gTrainers[trainerNum].trainerName[j] != 0xFF; j++) + nameHash += gTrainers[trainerNum].trainerName[j]; + + switch (gTrainers[trainerNum].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); + break; + } + case PARTY_FLAG_CUSTOM_MOVES: + { + const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0); + + for (j = 0; j < 4; j++) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + case PARTY_FLAG_HAS_ITEM: + { + const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0); + + SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); + break; + } + case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM: + { + const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0); + + SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); + + for (j = 0; j < 4; j++) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + } + } + + gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; + } + + return gTrainers[trainerNum].partySize; +} + +void sub_8038A04(void) // unused +{ + if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F) + SetGpuReg(REG_OFFSET_BG0CNT, 0x9800); +} + +void VBlankCB_Battle(void) +{ + // change gRngSeed every vblank unless the battle could be recorded + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_RECORDED))) + Random(); + + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X); + SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y); + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H); + SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80BA0A8(); +} + +void nullsub_17(void) +{ + +} + +static void sub_8038B04(struct Sprite *sprite) +{ + if (sprite->data0 != 0) + sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8); + else + sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8); + + sprite->data2 += 0x180; + + if (sprite->affineAnimEnded) + { + FreeSpriteTilesByTag(0x2710); + FreeSpritePaletteByTag(0x2710); + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +void sub_8038B74(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_8038B04; + PlaySE(SE_BT_START); +} + +static void sub_8038B94(u8 taskId) +{ + struct Pokemon *sp4 = NULL; + struct Pokemon *sp8 = NULL; + u8 r2 = gBattleScripting.multiplayerId; + u32 r7; + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gLinkPlayers[r2].lp_field_18) + { + case 0: + case 2: + sp4 = gPlayerParty; + sp8 = gEnemyParty; + break; + case 1: + case 3: + sp4 = gEnemyParty; + sp8 = gPlayerParty; + break; + } + } + else + { + sp4 = gPlayerParty; + sp8 = gEnemyParty; + } + + r7 = 0; + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2); + u16 hp = GetMonData(&sp4[i], MON_DATA_HP); + u32 status = GetMonData(&sp4[i], MON_DATA_STATUS); + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r7 |= 1 << i * 2; + + if (species == 0) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r7 |= 2 << i * 2; + + if (species == 0) + continue; + if (species != SPECIES_EGG && hp == 0) + r7 |= 3 << i * 2; + } + gTasks[taskId].data[3] = r7; + + r7 = 0; + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2); + u16 hp = GetMonData(&sp8[i], MON_DATA_HP); + u32 status = GetMonData(&sp8[i], MON_DATA_STATUS); + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r7 |= 1 << i * 2; + + if (species == SPECIES_NONE) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r7 |= 2 << i * 2; + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp == 0) + r7 |= 3 << i * 2; + } + gTasks[taskId].data[4] = r7; +} + +void sub_8038D64(void) +{ + s32 i; + u8 taskId; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + gBattleTypeFlags &= ~(BATTLE_TYPE_20); + + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + SetMainCallback2(gMain.savedCallback); + FreeBattleResources(); + FreeBattleSpritesData(); + FreeMonSpritesGfx(); + } + else + { + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); + SetGpuReg(REG_OFFSET_WIN0V, 0x5051); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + gBattle_WIN0H = 0xF0; + gBattle_WIN0V = 0x5051; + dp12_8087EA4(); + + for (i = 0; i < 80; i++) + { + gUnknown_02038C28.unk0[i] = 0xF0; + gUnknown_02038C28.unk780[i] = 0xF0; + } + for (i = 80; i < 160; i++) + { + asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter + gUnknown_02038C28.unk0[i] = 0xFF10; + gUnknown_02038C28.unk780[i] = 0xFF10; + } + + ResetPaletteFade(); + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + + sub_80356D0(); + LoadCompressedPalette(gUnknown_08C004E0, 0, 64); + ApplyPlayerChosenFrameToBattleMenu(); + ResetSpriteData(); + ResetTasks(); + LoadBattleEntryBackground(); + SetGpuReg(REG_OFFSET_WINOUT, 0x37); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(VBlankCB_Battle); + + taskId = CreateTask(task00_0800F6FC, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 1; + sub_8038B94(taskId); + SetMainCallback2(sub_8038F14); + gBattleCommunication[MULTIUSE_STATE] = 0; + } +} + +static void sub_8038F14(void) +{ + sub_8038F34(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); +} + +static void sub_8038F34(void) +{ + s32 i; + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + ShowBg(0); + ShowBg(1); + ShowBg(2); + gBattleCommunication[1] = 0xFF; + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 1: + if (--gBattleCommunication[1] == 0) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 2: + if (!gPaletteFade.active) + { + u8 monsCount; + + gMain.field_439_x4 = sub_8185FAC(); + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + monsCount = 4; + else + monsCount = 2; + + for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == 3; i++); + + if (!gSaveBlock2Ptr->field_CA9_b && i == monsCount) + { + if (FlagGet(SYS_FRONTIER_PASS)) + { + FreeAllWindowBuffers(); + SetMainCallback2(sub_80392A8); + } + else if (!gMain.field_439_x4) + { + SetMainCallback2(gMain.savedCallback); + FreeBattleResources(); + FreeBattleSpritesData(); + FreeMonSpritesGfx(); + } + else if (gReceivedRemoteLinkPlayers == 0) + { + CreateTask(sub_80B3AF8, 5); + gBattleCommunication[MULTIUSE_STATE]++; + } + else + { + gBattleCommunication[MULTIUSE_STATE]++; + } + } + else + { + SetMainCallback2(gMain.savedCallback); + FreeBattleResources(); + FreeBattleSpritesData(); + FreeMonSpritesGfx(); + } + } + break; + case 3: + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + for (i = 0; i < 2; i++) + LoadChosenBattleElement(i); + + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 4: + if (!gPaletteFade.active) + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 5: + if (!FuncIsActiveTask(sub_80B3AF8)) + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 6: + if (sub_800A520() == TRUE) + { + sub_800ADF8(); + sub_814F9EC(gText_LinkStandby3, 0); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 7: + if (!IsTextPrinterActive(0)) + { + if (sub_800A520() == TRUE) + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 8: + if (!gLinkVSyncDisabled) + sub_800AC34(); + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 9: + if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1) + { + gMain.field_439_x4 = 0; + SetMainCallback2(gMain.savedCallback); + FreeBattleResources(); + FreeBattleSpritesData(); + FreeMonSpritesGfx(); + } + break; + } +} + +u32 sub_80391E0(u8 arrayId, u8 caseId) +{ + u32 ret = 0; + + switch (caseId) + { + case 0: + ret = gUnknown_0831AA08[arrayId].bg; + break; + case 1: + ret = gUnknown_0831AA08[arrayId].charBaseIndex; + break; + case 2: + ret = gUnknown_0831AA08[arrayId].mapBaseIndex; + break; + case 3: + ret = gUnknown_0831AA08[arrayId].screenSize; + break; + case 4: + ret = gUnknown_0831AA08[arrayId].paletteMode; + break; + case 5: + ret = gUnknown_0831AA08[arrayId].priority; + break; + case 6: + ret = gUnknown_0831AA08[arrayId].baseTile; + break; + } + + return ret; +} + +static void sub_80392A8(void) +{ + s32 i; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + sub_80356D0(); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ApplyPlayerChosenFrameToBattleMenu(); + + for (i = 0; i < 2; i++) + LoadChosenBattleElement(i); + + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(VBlankCB_Battle); + SetMainCallback2(sub_803937C); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBattleCommunication[MULTIUSE_STATE] = 0; +} + +static void sub_803937C(void) +{ + sub_803939C(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); +} + +static void sub_803939C(void) +{ + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + ShowBg(0); + ShowBg(1); + ShowBg(2); + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 1: + if (gMain.field_439_x4 && gReceivedRemoteLinkPlayers == 0) + CreateTask(sub_80B3AF8, 5); + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 2: + if (!FuncIsActiveTask(sub_80B3AF8)) + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 3: + if (!gPaletteFade.active) + { + sub_814F9EC(gText_RecordBattleToPass, 0); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 4: + if (!IsTextPrinterActive(0)) + { + sub_8056A3C(0x18, 8, 0x1D, 0xD, 0); + sub_814F9EC(gText_BattleYesNoChoice, 0xC); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateCursorAt(1); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 5: + if (gMain.newKeys & DPAD_UP) + { + if (gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateCursorAt(0); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateCursorAt(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[CURSOR_POSITION] == 0) + { + sub_8056A3C(0x18, 8, 0x1D, 0xD, 1); + gBattleCommunication[1] = MoveRecordedBattleToSaveData(); + gBattleCommunication[MULTIUSE_STATE] = 10; + } + else + { + gBattleCommunication[MULTIUSE_STATE]++; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 6: + if (sub_800A520() == TRUE) + { + sub_8056A3C(0x18, 8, 0x1D, 0xD, 1); + if (gMain.field_439_x4) + { + sub_800ADF8(); + sub_814F9EC(gText_LinkStandby3, 0); + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 8: + if (--gBattleCommunication[1] == 0) + { + if (gMain.field_439_x4 && !gLinkVSyncDisabled) + sub_800AC34(); + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 9: + if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1) + { + gMain.field_439_x4 = 0; + if (!gPaletteFade.active) + { + SetMainCallback2(gMain.savedCallback); + FreeBattleResources(); + FreeBattleSpritesData(); + FreeMonSpritesGfx(); + } + } + break; + case 10: + if (gBattleCommunication[1] == 1) + { + PlaySE(SE_SAVE); + BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordedOnPass); + sub_814F9EC(gDisplayedStringBattle, 0); + gBattleCommunication[1] = 0x80; + gBattleCommunication[MULTIUSE_STATE]++; + } + else + { + BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordCouldntBeSaved); + sub_814F9EC(gDisplayedStringBattle, 0); + gBattleCommunication[1] = 0x80; + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 11: + if (sub_800A520() == TRUE && !IsTextPrinterActive(0) && --gBattleCommunication[1] == 0) + { + if (gMain.field_439_x4) + { + sub_800ADF8(); + sub_814F9EC(gText_LinkStandby3, 0); + } + gBattleCommunication[MULTIUSE_STATE]++; + } + break; + case 12: + case 7: + if (!IsTextPrinterActive(0)) + { + if (gMain.field_439_x4) + { + if (sub_800A520() == TRUE) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleCommunication[1] = 0x20; + gBattleCommunication[MULTIUSE_STATE] = 8; + } + + } + else + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleCommunication[1] = 0x20; + gBattleCommunication[MULTIUSE_STATE] = 8; + } + } + break; + } +} + +static void TryCorrectShedinjaLanguage(struct Pokemon *mon) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 language = LANGUAGE_JAPANESE; + + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(mon, MON_DATA_LANGUAGE) != language) + { + GetMonData(mon, MON_DATA_NICKNAME, nickname); + if (StringCompareWithoutExtCtrlCodes(nickname, gText_ShedinjaJapaneseName) == 0) + SetMonData(mon, MON_DATA_LANGUAGE, &language); + } +} + +u32 sub_80397C4(u32 setId, u32 tableId) +{ + return gUnknown_0831ABA0[setId][tableId].width * 8; +} + +#define tBank data0 +#define tSpeciesId data2 + +static void oac_poke_opponent(struct Sprite *sprite) +{ + sprite->callback = sub_803980C; + StartSpriteAnimIfDifferent(sprite, 0); + BeginNormalPaletteFade(0x20000, 0, 10, 10, 0x2108); +} + +static void sub_803980C(struct Sprite *sprite) +{ + if ((gUnknown_020243FC & 1) == 0) + { + sprite->pos2.x += 2; + if (sprite->pos2.x == 0) + { + sprite->callback = sub_8039838; + } + } +} + +static void sub_8039838(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + sub_8076918(sprite->tBank); + sub_80729D0(gHealthBoxesIds[sprite->tBank]); + sprite->callback = sub_8039894; + StartSpriteAnimIfDifferent(sprite, 0); + BeginNormalPaletteFade(0x20000, 0, 10, 0, 0x2108); + } +} + +static void sub_8039894(struct Sprite *sprite) +{ + if (!gPaletteFade.active) + { + BattleAnimateFrontSprite(sprite, sprite->tSpeciesId, FALSE, 1); + } +} + +void SpriteCallbackDummy_2(struct Sprite *sprite) +{ + +} + +static void sub_80398BC(struct Sprite *sprite) // unused? +{ + sprite->data3 = 6; + sprite->data4 = 1; + sprite->callback = sub_80398D0; +} + +extern u32 gUnknown_02022F88; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; + +static void sub_80398D0(struct Sprite *sprite) +{ + sprite->data4--; + if (sprite->data4 == 0) + { + sprite->data4 = 8; + sprite->invisible ^= 1; + sprite->data3--; + if (sprite->data3 == 0) + { + sprite->invisible = FALSE; + sprite->callback = SpriteCallbackDummy_2; + gUnknown_02022F88 = 0; + } + } +} + +// to get rid of once the struct is declared in a header +struct MonCoords +{ + // This would use a bitfield, but sub_8079F44 + // uses it as a u8 and casting won't match. + u8 coords; // u8 x:4, y:4; + u8 y_offset; +}; + +extern const struct MonCoords gMonFrontPicCoords[]; +extern const struct MonCoords gCastformFrontSpriteCoords[]; + +void sub_8039934(struct Sprite *sprite) +{ + u8 bank = sprite->tBank; + u16 species; + u8 yOffset; + + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != 0) + species = gBattleSpritesDataPtr->bankData[bank].transformSpecies; + else + species = sprite->tSpeciesId; + + GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_PERSONALITY); // Unused return value + + if (species == SPECIES_UNOWN) + { + u32 personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_PERSONALITY); + u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); + u16 unownSpecies; + + if (unownForm == 0) + unownSpecies = SPECIES_UNOWN; // Use the A Unown form + else + unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters + + yOffset = gMonFrontPicCoords[unownSpecies].y_offset; + } + else if (species == SPECIES_CASTFORM) + { + yOffset = gCastformFrontSpriteCoords[gBattleMonForms[bank]].y_offset; + } + else if (species > NUM_SPECIES) + { + yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset; + } + else + { + yOffset = gMonFrontPicCoords[species].y_offset; + } + + sprite->data3 = 8 - yOffset / 8; + sprite->data4 = 1; + sprite->callback = sub_8039A48; +} + +static void sub_8039A48(struct Sprite *sprite) +{ + s32 i; + + sprite->data4--; + if (sprite->data4 == 0) + { + sprite->data4 = 2; + sprite->pos2.y += 8; + sprite->data3--; + if (sprite->data3 < 0) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } + else + { + u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBankIdentity(sprite->tBank)] + (gBattleMonForms[sprite->tBank] << 11) + (sprite->data3 << 8); + + for (i = 0; i < 0x100; i++) + *(dst++) = 0; + + StartSpriteAnim(sprite, gBattleMonForms[sprite->tBank]); + } + } +} + +void sub_8039AD8(struct Sprite *sprite) +{ + sprite->data3 = 8; + sprite->data4 = sprite->invisible; + sprite->callback = sub_8039AF4; +} + +void sub_8039AF4(struct Sprite *sprite) +{ + sprite->data3--; + if (sprite->data3 == 0) + { + sprite->invisible ^= 1; + sprite->data3 = 8; + } +} + +void sub_8039B2C(struct Sprite *sprite) +{ + sprite->invisible = sprite->data4; + sprite->data4 = FALSE; + sprite->callback = SpriteCallbackDummy_2; +} + diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3b719b8ed7..03e1b6a4a6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -145,7 +145,7 @@ extern u16 GetBattlePyramidPickupItemId(void); extern u8 sav1_map_get_light_level(void); extern u8 sub_813B21C(void); extern u16 get_unknown_box_id(void); -extern void c2_berry_program_update_menu(void); +extern void sub_80356D0(void); // BattleScripts extern const u8 BattleScript_MoveEnd[]; @@ -11216,7 +11216,7 @@ static void atkF2_display_dex_info(void) } break; case 3: - c2_berry_program_update_menu(); + sub_80356D0(); LoadBattleTextboxAndBackground(); gBattle_BG3_X = 0x100; gBattleCommunication[0]++; diff --git a/src/egg_hatch.c b/src/egg_hatch.c index c5cee63579..4e4c100900 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -65,7 +65,7 @@ extern void fade_screen(u8, u8); extern void overworld_free_bg_tilemaps(void); extern void sub_80AF168(void); extern void AllocateMonSpritesGfx(void); -extern void sub_805F094(void); +extern void FreeMonSpritesGfx(void); extern void remove_some_task(void); extern void reset_temp_tile_data_buffers(void); extern void c2_exit_to_overworld_2_switch(void); @@ -570,7 +570,7 @@ static void CB2_EggHatch_0(void) static void EggHatchSetMonNickname(void) { SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); - sub_805F094(); + FreeMonSpritesGfx(); Free(sEggHatchData); SetMainCallback2(c2_exit_to_overworld_2_switch); } @@ -691,7 +691,7 @@ static void CB2_EggHatch_1(void) case 12: if (!gPaletteFade.active) { - sub_805F094(); + FreeMonSpritesGfx(); RemoveWindow(sEggHatchData->windowId); UnsetBgTilemapBuffer(0); UnsetBgTilemapBuffer(1); diff --git a/sym_ewram.txt b/sym_ewram.txt index ce3b4f2502..aecb28dac8 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -520,7 +520,7 @@ gUnknown_020244BC: @ 20244BC gUnknown_020244CC: @ 20244CC .space 0x4 -gUnknown_020244D0: @ 20244D0 +gBattleSpritesDataPtr: @ 20244D0 .space 0x4 gMonSpritesGfxPtr: @ 20244D4 From 8982501b7860b97cd659262cbb14f375ca07b54a Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sun, 1 Oct 2017 13:03:51 -0500 Subject: [PATCH 071/182] Extract baseroms from reset_rtc_screen --- asm/reset_rtc_screen.s | 4 +- data/reset_rtc_screen.s | 75 +++++++++++++++--- graphics/misc/reset_rtc_screen_arrow.pal | 7 ++ graphics/misc/reset_rtc_screen_downarrow.png | Bin 0 -> 113 bytes graphics/misc/reset_rtc_screen_rightarrow.png | Bin 0 -> 110 bytes 5 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 graphics/misc/reset_rtc_screen_arrow.pal create mode 100644 graphics/misc/reset_rtc_screen_downarrow.png create mode 100644 graphics/misc/reset_rtc_screen_rightarrow.png diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s index ac2c1181ce..1f5ef83d8c 100644 --- a/asm/reset_rtc_screen.s +++ b/asm/reset_rtc_screen.s @@ -291,7 +291,7 @@ sub_809EB04: @ 809EB04 lsrs r5, 24 ldr r0, =gUnknown_085104C4 bl LoadSpritePalette - ldr r0, =gUnknown_085104F0 + ldr r0, =gSpriteTemplate_85104F0 mov r8, r0 movs r1, 0x35 movs r2, 0x44 @@ -655,7 +655,7 @@ sub_809EDE8: @ 809EDE8 lsls r0, r4, 1 adds r0, r4 lsls r0, 2 - ldr r1, =gUnknown_0851041C + ldr r1, =gUnknown_08510420 - 0x4 adds r2, r0, r1 ldr r1, =gMain ldrh r3, [r1, 0x2E] diff --git a/data/reset_rtc_screen.s b/data/reset_rtc_screen.s index 2ed5f746ce..f08f30e90c 100644 --- a/data/reset_rtc_screen.s +++ b/data/reset_rtc_screen.s @@ -4,20 +4,75 @@ .section .rodata .align 2, 0 -gUnknown_08510404:: @ 8510404 - .incbin "baserom.gba", 0x510404, 0x4 +gUnknown_08510404:: @ 8510404 struct BgTemplate + .4byte 0x000001f0 + .align 2 gUnknown_08510408:: @ 8510408 - .incbin "baserom.gba", 0x510408, 0x14 - -gUnknown_0851041C:: @ 851041C - .incbin "baserom.gba", 0x51041c, 0x4 + window_template 0x00, 0x01, 0x01, 0x13, 0x09, 0x0f, 0x0155 + window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x00e9 + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 + .align 2 gUnknown_08510420:: @ 8510420 - .incbin "baserom.gba", 0x510420, 0xa4 + window_template 0x00, 0x04, 0x09, 0x15, 0x02, 0x0f, 0x00bf + .align 2 +gUnknown_08510428:: @ 8510428 + .byte 3, 0, 1, 0, 15, 39, 0, 2, 0, 0, 0, 0 + .byte 4, 0, 0, 0, 23, 0, 1, 3, 0, 0, 0, 0 + .byte 5, 0, 0, 0, 59, 0, 2, 4, 0, 0, 0, 0 + .byte 6, 0, 0, 0, 59, 0, 3, 5, 0, 0, 0, 0 + .byte 7, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0 + + .align 2 +gOamData_08510464:: @ 8510464 + .2byte 0x0000 + .2byte 0x0000 + .2byte 0x0000 + + .align 2 +gResetRtcScreen_DownArrowGfx:: @ 851046C + .incbin "graphics/misc/reset_rtc_screen_downarrow.4bpp" + + .align 2 +gResetRtcScreen_RightArrowGfx:: @ 851048C + .incbin "graphics/misc/reset_rtc_screen_rightarrow.4bpp" + + .align 2 +gResetRtcScreen_ArrowPal: @ 85104AC + .incbin "graphics/misc/reset_rtc_screen_arrow.gbapal" + + .align 2 +gSpriteImageTable_85104B4:: @ 85104B4 + obj_frame_tiles gResetRtcScreen_DownArrowGfx, 0x20 + obj_frame_tiles gResetRtcScreen_RightArrowGfx, 0x20 + + .align 2 gUnknown_085104C4:: @ 85104C4 - .incbin "baserom.gba", 0x5104c4, 0x2c + obj_pal gResetRtcScreen_ArrowPal, 0x1000 -gUnknown_085104F0:: @ 85104F0 - .incbin "baserom.gba", 0x5104f0, 0x18 + .align 2 +gSpriteAnim_85104CC:: @ 85104CC + obj_image_anim_frame 0, 30 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_85104D4: @ 85104D4 + obj_image_anim_frame 0, 30, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_85104DC:: @ 85104DC + obj_image_anim_frame 1, 30 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_85104E4:: @ 85104E4 + .4byte gSpriteAnim_85104CC + .4byte gSpriteAnim_85104D4 + .4byte gSpriteAnim_85104DC + + .align 2 +gSpriteTemplate_85104F0:: @ 85104F0 + spr_template 0xFFFF, 0x1000, gOamData_08510464, gSpriteAnimTable_85104E4, gSpriteImageTable_85104B4, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/graphics/misc/reset_rtc_screen_arrow.pal b/graphics/misc/reset_rtc_screen_arrow.pal new file mode 100644 index 0000000000..b2e8a5f5fb --- /dev/null +++ b/graphics/misc/reset_rtc_screen_arrow.pal @@ -0,0 +1,7 @@ +JASC-PAL +0100 +4 +0 0 0 +255 0 0 +74 74 74 +0 0 0 diff --git a/graphics/misc/reset_rtc_screen_downarrow.png b/graphics/misc/reset_rtc_screen_downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7b3480df00af52e7149aa8ef9b4ca2ba479ee0 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U4JOMr-u0Z-f1A~{B7m#7n|0)eg zDR{a#hH%VGPGDeERaIqWb9Hn~Y4Qx<&{({JL1l)71cN>glSHED?G&I|22WQ%mvv4F FO#o!r7S;d& literal 0 HcmV?d00001 diff --git a/graphics/misc/reset_rtc_screen_rightarrow.png b/graphics/misc/reset_rtc_screen_rightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..785b3c1dbb2823a98039961d8e40149a43330881 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U4JOMr-u0Z-f1A~{B7m#7n|0)eg z$$GjthH%VGPGDeEQ)N|9)L>C!5p`%0=uu^v$jTrs%{bA>AxHwKkipZ{&t;ucLK6V- CH54fT literal 0 HcmV?d00001 From ba758afc1486b6cfb262d2fa96bbe9efd6c1720c Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sun, 1 Oct 2017 14:48:29 -0500 Subject: [PATCH 072/182] Extract baseroms from and combine fldeff_emotion and trainer_see Also extract from bike --- asm/fldeff_emotion.s | 328 -------------------------- asm/trainer_see.s | 328 +++++++++++++++++++++++++- data/bike.s | 47 +++- data/cable_club.s | 9 +- data/fldeff_emotion.s | 11 - data/strings.s | 8 +- data/trainer_see.s | 83 ++++++- graphics/misc/emotion_exclamation.png | Bin 0 -> 108 bytes graphics/misc/emotion_heart.png | Bin 0 -> 126 bytes graphics/misc/emotion_question.png | Bin 0 -> 117 bytes ld_script.txt | 2 - 11 files changed, 452 insertions(+), 364 deletions(-) delete mode 100644 asm/fldeff_emotion.s delete mode 100644 data/fldeff_emotion.s create mode 100644 graphics/misc/emotion_exclamation.png create mode 100644 graphics/misc/emotion_heart.png create mode 100644 graphics/misc/emotion_question.png diff --git a/asm/fldeff_emotion.s b/asm/fldeff_emotion.s deleted file mode 100644 index 37096a438d..0000000000 --- a/asm/fldeff_emotion.s +++ /dev/null @@ -1,328 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start oei_exclamation_mark -oei_exclamation_mark: @ 80B4620 - push {lr} - ldr r0, =gUnknown_085507B4 - movs r1, 0 - movs r2, 0 - movs r3, 0x53 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080B4648 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - movs r1, 0 - movs r2, 0 - bl sub_80B46D8 -_080B4648: - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end oei_exclamation_mark - - thumb_func_start sub_80B4658 -sub_80B4658: @ 80B4658 - push {lr} - ldr r0, =gUnknown_085507B4 - movs r1, 0 - movs r2, 0 - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080B4680 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - movs r1, 0x21 - movs r2, 0x1 - bl sub_80B46D8 -_080B4680: - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B4658 - - thumb_func_start sub_80B4690 -sub_80B4690: @ 80B4690 - push {r4,lr} - ldr r0, =gUnknown_085507CC - movs r1, 0 - movs r2, 0 - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080B46C6 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, =gSprites - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2E - movs r2, 0 - bl sub_80B46D8 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x5] -_080B46C6: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B4690 - - thumb_func_start sub_80B46D8 -@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3) -sub_80B46D8: @ 80B46D8 - push {r4,lr} - lsls r2, 24 - lsrs r2, 24 - ldrb r4, [r0, 0x5] - movs r3, 0xD - negs r3, r3 - ands r3, r4 - movs r4, 0x4 - orrs r3, r4 - strb r3, [r0, 0x5] - movs r3, 0x3E - adds r3, r0 - mov r12, r3 - ldrb r3, [r3] - movs r4, 0x2 - orrs r3, r4 - mov r4, r12 - strb r3, [r4] - ldr r4, =gFieldEffectSpawnParams - ldr r3, [r4] - strh r3, [r0, 0x2E] - ldr r3, [r4, 0x4] - strh r3, [r0, 0x30] - ldr r3, [r4, 0x8] - strh r3, [r0, 0x32] - ldr r3, =0x0000fffb - strh r3, [r0, 0x34] - strh r1, [r0, 0x3C] - adds r1, r2, 0 - bl StartSpriteAnim - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B46D8 - - thumb_func_start objc_exclamation_mark_probably -objc_exclamation_mark_probably: @ 80B4724 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _080B4756 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080B4764 -_080B4756: - ldrh r1, [r4, 0x3C] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldEffectStop - b _080B47B2 -_080B4764: - ldr r2, =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, =gSprites - adds r1, r0 - ldrh r3, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r2, r3, r0 - strh r2, [r4, 0x36] - ldrh r0, [r1, 0x20] - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x22] - subs r0, 0x10 - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x24] - strh r0, [r4, 0x24] - ldrh r0, [r1, 0x26] - adds r0, r2 - strh r0, [r4, 0x26] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _080B47B0 - adds r0, r3, 0x1 - strh r0, [r4, 0x34] - b _080B47B2 - .pool -_080B47B0: - strh r2, [r4, 0x34] -_080B47B2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end objc_exclamation_mark_probably - - thumb_func_start sub_80B47BC -sub_80B47BC: @ 80B47BC - push {lr} - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - beq _080B47D4 - ldr r0, =gUnknown_03006090 - ldrb r0, [r0, 0xC] - b _080B47D8 - .pool -_080B47D4: - ldr r0, =gUnknown_03006090 - ldrb r0, [r0] -_080B47D8: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B47BC - - thumb_func_start sub_80B47E0 -sub_80B47E0: @ 80B47E0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080B47EE - movs r0, 0 - b _080B4800 -_080B47EE: - cmp r0, 0 - beq _080B47FC - ldr r0, =gUnknown_03006090 - ldrb r0, [r0, 0xC] - b _080B4800 - .pool -_080B47FC: - ldr r0, =gUnknown_03006090 - ldrb r0, [r0] -_080B4800: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B47E0 - - thumb_func_start sub_80B4808 -sub_80B4808: @ 80B4808 - push {lr} - ldr r0, =gUnknown_030060AC - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B4870 - ldr r2, =gUnknown_03006090 - ldr r0, =gUnknown_03006080 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - ldrb r0, [r0, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - bl GetFaceDirectionAnimId - ldr r3, =gUnknown_03006084 - strb r0, [r3] - movs r0, 0xFE - strb r0, [r3, 0x1] - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r0, 0xFF - bl exec_movement - b _080B489E - .pool -_080B4870: - ldr r0, =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - ldrb r0, [r0, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - ldr r3, =gUnknown_03006084 - strb r0, [r3] - movs r0, 0xFE - strb r0, [r3, 0x1] - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r0, 0xFF - bl exec_movement -_080B489E: - movs r0, 0xFF - bl sub_809BE48 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B4808 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trainer_see.s b/asm/trainer_see.s index d57ad1815f..d638498ee9 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -267,7 +267,7 @@ CheckIfTrainerCanApproachPlayer: @ 80B3DF0 mov r8, r4 cmp r0, 0x1 bne _080B3E50 - ldr r1, =gUnknown_0855072C + ldr r1, =gIsTrainerInRange ldrb r0, [r7, 0x18] lsls r0, 28 lsrs r0, 26 @@ -300,7 +300,7 @@ _080B3E4C: _080B3E50: movs r5, 0 _080B3E52: - ldr r0, =gUnknown_0855072C + ldr r0, =gIsTrainerInRange lsls r4, r5, 2 adds r4, r0 ldrb r1, [r7, 0x1D] @@ -702,7 +702,7 @@ c3_8081EDC: @ 80B4118 b _080B416C .pool _080B4150: - ldr r7, =gUnknown_0855073C + ldr r7, =gTrainerSeeFuncList _080B4152: movs r1, 0x8 ldrsh r0, [r4, r1] @@ -1186,7 +1186,7 @@ sub_80B44C8: @ 80B44C8 adds r0, 0x1 strh r0, [r4, 0x16] _080B44FA: - ldr r1, =gUnknown_0855076C + ldr r1, =gTrainerSeeFuncList2 movs r2, 0x8 ldrsh r0, [r4, r2] lsls r0, 2 @@ -1322,4 +1322,324 @@ _080B4616: .pool thumb_func_end sub_80B45D0 + thumb_func_start oei_exclamation_mark +oei_exclamation_mark: @ 80B4620 + push {lr} + ldr r0, =gSpriteTemplate_85507B4 + movs r1, 0 + movs r2, 0 + movs r3, 0x53 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080B4648 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =gSprites + adds r0, r1 + movs r1, 0 + movs r2, 0 + bl sub_80B46D8 +_080B4648: + movs r0, 0 + pop {r1} + bx r1 + .pool + thumb_func_end oei_exclamation_mark + + thumb_func_start sub_80B4658 +sub_80B4658: @ 80B4658 + push {lr} + ldr r0, =gSpriteTemplate_85507B4 + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080B4680 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =gSprites + adds r0, r1 + movs r1, 0x21 + movs r2, 0x1 + bl sub_80B46D8 +_080B4680: + movs r0, 0 + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B4658 + + thumb_func_start sub_80B4690 +sub_80B4690: @ 80B4690 + push {r4,lr} + ldr r0, =gSpriteTemplate_85507CC + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080B46C6 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, =gSprites + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x2E + movs r2, 0 + bl sub_80B46D8 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x5] +_080B46C6: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B4690 + + thumb_func_start sub_80B46D8 +@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3) +sub_80B46D8: @ 80B46D8 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + ldrb r4, [r0, 0x5] + movs r3, 0xD + negs r3, r3 + ands r3, r4 + movs r4, 0x4 + orrs r3, r4 + strb r3, [r0, 0x5] + movs r3, 0x3E + adds r3, r0 + mov r12, r3 + ldrb r3, [r3] + movs r4, 0x2 + orrs r3, r4 + mov r4, r12 + strb r3, [r4] + ldr r4, =gFieldEffectSpawnParams + ldr r3, [r4] + strh r3, [r0, 0x2E] + ldr r3, [r4, 0x4] + strh r3, [r0, 0x30] + ldr r3, [r4, 0x8] + strh r3, [r0, 0x32] + ldr r3, =0x0000fffb + strh r3, [r0, 0x34] + strh r1, [r0, 0x3C] + adds r1, r2, 0 + bl StartSpriteAnim + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80B46D8 + + thumb_func_start objc_exclamation_mark_probably +objc_exclamation_mark_probably: @ 80B4724 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _080B4756 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080B4764 +_080B4756: + ldrh r1, [r4, 0x3C] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldEffectStop + b _080B47B2 +_080B4764: + ldr r2, =gMapObjects + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, =gSprites + adds r1, r0 + ldrh r3, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r2, r3, r0 + strh r2, [r4, 0x36] + ldrh r0, [r1, 0x20] + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x22] + subs r0, 0x10 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x24] + strh r0, [r4, 0x24] + ldrh r0, [r1, 0x26] + adds r0, r2 + strh r0, [r4, 0x26] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080B47B0 + adds r0, r3, 0x1 + strh r0, [r4, 0x34] + b _080B47B2 + .pool +_080B47B0: + strh r2, [r4, 0x34] +_080B47B2: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end objc_exclamation_mark_probably + + thumb_func_start sub_80B47BC +sub_80B47BC: @ 80B47BC + push {lr} + ldr r0, =gUnknown_02038BFC + ldrb r0, [r0] + cmp r0, 0 + beq _080B47D4 + ldr r0, =gUnknown_03006090 + ldrb r0, [r0, 0xC] + b _080B47D8 + .pool +_080B47D4: + ldr r0, =gUnknown_03006090 + ldrb r0, [r0] +_080B47D8: + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B47BC + + thumb_func_start sub_80B47E0 +sub_80B47E0: @ 80B47E0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080B47EE + movs r0, 0 + b _080B4800 +_080B47EE: + cmp r0, 0 + beq _080B47FC + ldr r0, =gUnknown_03006090 + ldrb r0, [r0, 0xC] + b _080B4800 + .pool +_080B47FC: + ldr r0, =gUnknown_03006090 + ldrb r0, [r0] +_080B4800: + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B47E0 + + thumb_func_start sub_80B4808 +sub_80B4808: @ 80B4808 + push {lr} + ldr r0, =gUnknown_030060AC + ldrb r0, [r0] + cmp r0, 0x1 + bne _080B4870 + ldr r2, =gUnknown_03006090 + ldr r0, =gUnknown_03006080 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r0, r1 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + bl GetFaceDirectionAnimId + ldr r3, =gUnknown_03006084 + strb r0, [r3] + movs r0, 0xFE + strb r0, [r3, 0x1] + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0xFF + bl exec_movement + b _080B489E + .pool +_080B4870: + ldr r0, =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r0, r1 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + ldr r3, =gUnknown_03006084 + strb r0, [r3] + movs r0, 0xFE + strb r0, [r3, 0x1] + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0xFF + bl exec_movement +_080B489E: + movs r0, 0xFF + bl sub_809BE48 + pop {r0} + bx r0 + .pool + thumb_func_end sub_80B4808 + .align 2, 0 @ Don't pad with nop. diff --git a/data/bike.s b/data/bike.s index 26bcc87453..ffb33e52b6 100644 --- a/data/bike.s +++ b/data/bike.s @@ -5,19 +5,54 @@ .align 2, 0 gUnknown_0859744C:: @ 859744C - .incbin "baserom.gba", 0x59744c, 0x10 + .4byte sub_8119224 + .4byte sub_8119238 + .4byte sub_8119280 + .4byte sub_8119344 + .align 2 gUnknown_0859745C:: @ 859745C - .incbin "baserom.gba", 0x59745c, 0xc + .4byte PlayerGoSpeed0 + .4byte PlayerGoSpeed1 + .4byte PlayerGoSpeed3 + .align 2 gUnknown_08597468:: @ 8597468 - .incbin "baserom.gba", 0x597468, 0x34 + .4byte sub_81197E4 + .4byte sub_81197F4 + .4byte sub_8119830 + .4byte sub_81198C0 + .4byte sub_81198FC + .4byte sub_8119938 + .4byte sub_8119974 + .4byte sub_81199B0 + .4byte sub_8119A24 + .4byte sub_8119A94 + .4byte sub_8119AA4 + .4byte sub_8119B34 + .4byte sub_8119BC4 + .align 2 gUnknown_0859749C:: @ 859749C - .incbin "baserom.gba", 0x59749c, 0x1c + .4byte CheckMovementInputAcroBikeNormal + .4byte CheckMovementInputAcroBikeChangingDirection + .4byte CheckMovementInputAcroBikeStandingWheelie + .4byte CheckMovementInputAcroBikeBunnyHop + .4byte CheckMovementInputAcroBikeMovingWheelie + .4byte CheckMovementInputAcroBikeUnknownMode5 + .4byte CheckMovementInputAcroBikeUnknownMode6 + .align 2 gUnknown_085974B8:: @ 85974B8 - .incbin "baserom.gba", 0x5974b8, 0x8 + .2byte 0x0001, 0x0002, 0x0004 + .align 1 +gUnknown_085974BE:: @ 85974BE + .2byte 0x0004 + + .align 2 gUnknown_085974C0:: @ 85974C0 - .incbin "baserom.gba", 0x5974c0, 0x70 + .4byte 0x00000001, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000001 + .4byte 0x00000002, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000002 + .4byte 0x00000003, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000003 + .4byte 0x00000004, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000004 diff --git a/data/cable_club.s b/data/cable_club.s index 4961cb1cc1..f62b0b90a9 100644 --- a/data/cable_club.s +++ b/data/cable_club.s @@ -4,8 +4,13 @@ .section .rodata .align 2, 0 + .align 2 gUnknown_08550594:: @ 8550594 - .incbin "baserom.gba", 0x550594, 0x8 + window_template 0x00, 0x10, 0x0b, 0x0b, 0x02, 0x0f, 0x0125 + .align 2 gUnknown_0855059C:: @ 855059C - .incbin "baserom.gba", 0x55059c, 0x190 + .4byte gText_BronzeCard + .4byte gText_CopperCard + .4byte gText_SilverCard + .4byte gText_GoldCard diff --git a/data/fldeff_emotion.s b/data/fldeff_emotion.s deleted file mode 100644 index f2c90d6370..0000000000 --- a/data/fldeff_emotion.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_085507B4:: @ 85507B4 - .incbin "baserom.gba", 0x5507b4, 0x18 - -gUnknown_085507CC:: @ 85507CC - .incbin "baserom.gba", 0x5507cc, 0x18 diff --git a/data/strings.s b/data/strings.s index 5fb8ca902f..78e936b133 100644 --- a/data/strings.s +++ b/data/strings.s @@ -4452,16 +4452,16 @@ gText_ButtonTypeLEqualsA:: @ 85EE65D gText_XPLink:: @ 85EE667 .string "{STR_VAR_1}P LINK$" -gUnknown_085EE670:: @ 85EE670 +gText_BronzeCard:: @ 85EE670 .string "BRONZE$" -gUnknown_085EE677:: @ 85EE677 +gText_CopperCard:: @ 85EE677 .string "COPPER$" -gUnknown_085EE67E:: @ 85EE67E +gText_SilverCard:: @ 85EE67E .string "SILVER$" -gUnknown_085EE685:: @ 85EE685 +gText_GoldCard:: @ 85EE685 .string "GOLD$" gText_Day:: @ 85EE68A diff --git a/data/trainer_see.s b/data/trainer_see.s index 7480cb290d..79c1a9f980 100644 --- a/data/trainer_see.s +++ b/data/trainer_see.s @@ -2,13 +2,82 @@ .include "constants/constants.inc" .section .rodata - .align 2, 0 -gUnknown_0855072C:: @ 855072C - .incbin "baserom.gba", 0x55072c, 0x10 + .align 2 +gEmotion_ExclamationMarkGfx:: @ 85505AC + .incbin "graphics/misc/emotion_exclamation.4bpp" -gUnknown_0855073C:: @ 855073C - .incbin "baserom.gba", 0x55073c, 0x30 + .align 2 +gEmotion_QuestionMarkGfx:: @ 855062C + .incbin "graphics/misc/emotion_question.4bpp" -gUnknown_0855076C:: @ 855076C - .incbin "baserom.gba", 0x55076c, 0x48 + .align 2 +gEmotion_HeartGfx:: @ 85506AC + .incbin "graphics/misc/emotion_heart.4bpp" + + .align 2 +gIsTrainerInRange:: @ 855072C + .4byte IsTrainerInRangeSouth + .4byte IsTrainerInRangeNorth + .4byte IsTrainerInRangeWest + .4byte IsTrainerInRangeEast + + .align 2 +gTrainerSeeFuncList:: @ 855073C + .4byte sub_80B4178 + .4byte sub_80B417C + .4byte sub_80B41C0 + .4byte sub_80B4200 + .4byte sub_80B425C + .4byte sub_80B4318 + .4byte sub_80B435C + .4byte sub_80B4390 + .4byte sub_80B43AC + .4byte sub_80B43E0 + .4byte sub_80B4438 + .4byte sub_80B44AC + + .align 2 +gTrainerSeeFuncList2:: @ 855076C + .4byte sub_80B43AC + .4byte sub_80B43E0 + .4byte sub_80B4438 + .4byte sub_80B44AC + + .align 2 +gOamData_855077C:: @ 855077C + .2byte 0x0000 + .2byte 0x4000 + .2byte 0x0400 + + .align 2 +gSpriteImageTable_8550784:: @ 8550784 + obj_tiles gEmotion_ExclamationMarkGfx, 0x0080, 0x0000 + obj_tiles gEmotion_QuestionMarkGfx, 0x0080, 0x0000 + + .align 2 +gSpriteImageTable_8550794:: @ 8550794 + obj_tiles gEmotion_HeartGfx, 0x0080, 0x0000 + + .align 2 +gSpriteAnim_855079C:: @ 855079C + obj_image_anim_frame 0, 60 + obj_image_anim_end + + .align 2 +gSpriteAnim_85507A4:: @ 85507A4 + obj_image_anim_frame 1, 60 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_85507AC:: @ 85507AC + .4byte gSpriteAnim_855079C + .4byte gSpriteAnim_85507A4 + + .align 2 +gSpriteTemplate_85507B4:: @ 85507B4 + spr_template 0xffff, 0xffff, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550784, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably + + .align 2 +gSpriteTemplate_85507CC:: @ 85507CC + spr_template 0xffff, 0x1004, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550794, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably diff --git a/graphics/misc/emotion_exclamation.png b/graphics/misc/emotion_exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..595566d2fea26b6281516e483fef6bbb92b861c4 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fEx#-1*YAsjQ4fAF*N{AWG*!2Ym1 zBb!3Pl=L4bID`Zkj3p!rj94TtN*2UgEKLYIpxbK6%;3LU#kppZzzopr E08s=Sh5!Hn literal 0 HcmV?d00001 diff --git a/graphics/misc/emotion_heart.png b/graphics/misc/emotion_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..9995984b4ce96069ca1510acc52a99724252dfff GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExuAVNAAsjPH`!)(5FyLTz^;T6o z@#;#>bIuK%7P0f5^)s^+Io$G25@fI3utZ8HF|>16mG_bP28-H#_g?QcGGfm^B3^a> Y#y(}8h2|xXJwOI~y85}Sb4q9e0Gm1~2LJ#7 literal 0 HcmV?d00001 diff --git a/graphics/misc/emotion_question.png b/graphics/misc/emotion_question.png new file mode 100644 index 0000000000000000000000000000000000000000..7376fd058ef5b3d284631bc224350f76cc076419 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExHl8kyAsjQ4fAF*N{AWG*!2Ym1 zBb!3Pl=L4bID`Zkj3p!#co+p-5;?e>ma?!)T$C($`$EY;`@ytBa~K)?9aWsoc#LF0 O=6SmMxvX Date: Sun, 1 Oct 2017 15:05:00 -0500 Subject: [PATCH 073/182] add asmdiff.sh comparison script --- asmdiff.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 asmdiff.sh diff --git a/asmdiff.sh b/asmdiff.sh new file mode 100644 index 0000000000..1d2141c32a --- /dev/null +++ b/asmdiff.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" +OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +$OBJDUMP $OPTIONS baserom.gba > baserom.dump +$OBJDUMP $OPTIONS pokeemerald.gba > pokeemerald.dump +diff baserom.dump pokeemerald.dump From 84e5819ca3944df99a1817ad8ab828993035f18b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 1 Oct 2017 19:01:37 -0400 Subject: [PATCH 074/182] Sanitize data/tilesets.s, 2 --- data/tileset.s | 56 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/data/tileset.s b/data/tileset.s index c60d83d61c..6a49cbd084 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -1,8 +1,8 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "constants/constants.inc" - .section .rodata - .align 2, 0 + .section .rodata + .align 2, 0 gUnknown_085105C4:: .incbin "baserom.gba", 0x5105c4, 0x80 @@ -13,7 +13,7 @@ gUnknown_08510644:: gUnknown_085106C4:: .incbin "baserom.gba", 0x5106c4, 0x80 - .space 0x20 + .space 0x20 gUnknown_08510764:: @ 8510764 @ replacing .incbin "baserom.gba", 0x00510764, 0x10 @@ -254,7 +254,7 @@ gUnknown_08515224:: gUnknown_085152A4:: .incbin "baserom.gba", 0x5152a4, 0x80 - .space 0x20 + .space 0x20 gUnknown_08515344:: @ 8515344 @ replacing .incbin "baserom.gba", 0x00515344, 0x20 @@ -386,7 +386,13 @@ gUnknown_08515A6C:: .incbin "baserom.gba", 0x515a6c, 0x80 gUnknown_08515AEC:: - .incbin "baserom.gba", 0x515aec, 0x2a0 + .incbin "baserom.gba", 0x515aec, 0x80 + +gUnknown_08515B6C:: + .incbin "baserom.gba", 0x515b6c, 0x20 + +gUnknown_08515B8C:: + .incbin "baserom.gba", 0x515b8c, 0x200 gUnknown_08515D8C:: @ 8515D8C @@ -584,7 +590,9 @@ gUnknown_08517B9C:: .incbin "baserom.gba", 0x517b9c, 0x20 gUnknown_08517BBC:: - .incbin "baserom.gba", 0x517bbc, 0x40 + .incbin "baserom.gba", 0x517bbc, 0x20 + + .space 0x20 gUnknown_08517BFC:: @ 8517BFC @@ -603,7 +611,9 @@ gUnknown_08517C14:: .incbin "baserom.gba", 0x517c14, 0x200 gUnknown_08517E14:: - .incbin "baserom.gba", 0x517e14, 0x220 + .incbin "baserom.gba", 0x517e14, 0x200 + + .space 0x20 gUnknown_08518034:: @ 8518034 @@ -615,8 +625,9 @@ gUnknown_0851803C:: .incbin "baserom.gba", 0x51803c, 0x120 gUnknown_0851815C:: - .incbin "baserom.gba", 0x51815c, 0x140 + .incbin "baserom.gba", 0x51815c, 0x120 + .space 0x20 gUnknown_0851829C:: @ 851829C @ replacing .incbin "baserom.gba", 0x0051829c, 0x8 @@ -645,8 +656,21 @@ gUnknown_0851CAA4:: .incbin "baserom.gba", 0x51caa4, 0xc00 gUnknown_0851D6A4:: - .incbin "baserom.gba", 0x51d6a4, 0x2c20 + .incbin "baserom.gba", 0x51d6a4, 0xc00 + .space 0x20 + +gUnknown_0851E2C4:: + .incbin "baserom.gba", 0x51e2c4, 0x800 + +gUnknown_0851EAC4:: + .incbin "baserom.gba", 0x51eac4, 0x800 + +gUnknown_0851F2C4:: + .incbin "baserom.gba", 0x51f2c4, 0x800 + +gUnknown_0851FAC4:: + .incbin "baserom.gba", 0x51fac4, 0x800 gUnknown_085202C4:: @ 85202C4 @ replacing .incbin "baserom.gba", 0x005202c4, 0x20 @@ -666,7 +690,10 @@ gUnknown_085203E4:: .incbin "baserom.gba", 0x5203e4, 0x100 gUnknown_085204E4:: - .incbin "baserom.gba", 0x5204e4, 0x120 + .incbin "baserom.gba", 0x5204e4, 0x100 + +gUnknown_085205E4:: + .incbin "baserom.gba", 0x5205e4, 0x20 gUnknown_08520604:: .incbin "baserom.gba", 0x520604, 0x100 @@ -675,7 +702,10 @@ gUnknown_08520704:: .incbin "baserom.gba", 0x520704, 0x100 gUnknown_08520804:: - .incbin "baserom.gba", 0x520804, 0x4060 + .incbin "baserom.gba", 0x520804, 0x100 + +gUnknown_08520904:: + .incbin "baserom.gba", 0x520904, 0x3F60 gUnknown_08524864:: @ 8524864 From 5a51a49642e81575ebe41a00ec69a3abb489376b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 1 Oct 2017 19:39:55 -0400 Subject: [PATCH 075/182] Sanitize data/tilesets.s, 3 --- data/tileset.s | 86 +++++++++++++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/data/tileset.s b/data/tileset.s index 6a49cbd084..0acb50e910 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -258,25 +258,25 @@ gUnknown_085152A4:: gUnknown_08515344:: @ 8515344 @ replacing .incbin "baserom.gba", 0x00515344, 0x20 - .4byte VRAM + 0x4c00 - .4byte VRAM + 0x4c80 - .4byte VRAM + 0x4d00 - .4byte VRAM + 0x4d80 - .4byte VRAM + 0x4e00 - .4byte VRAM + 0x4e80 - .4byte VRAM + 0x4f00 - .4byte VRAM + 0x4f80 + .4byte BG_VRAM + 0x4c00 + .4byte BG_VRAM + 0x4c80 + .4byte BG_VRAM + 0x4d00 + .4byte BG_VRAM + 0x4d80 + .4byte BG_VRAM + 0x4e00 + .4byte BG_VRAM + 0x4e80 + .4byte BG_VRAM + 0x4f00 + .4byte BG_VRAM + 0x4f80 gUnknown_08515364:: @ 8515364 @ replacing .incbin "baserom.gba", 0x00515364, 0x20 - .4byte VRAM + 0x5000 - .4byte VRAM + 0x5080 - .4byte VRAM + 0x5100 - .4byte VRAM + 0x5180 - .4byte VRAM + 0x5200 - .4byte VRAM + 0x5280 - .4byte VRAM + 0x5300 - .4byte VRAM + 0x5380 + .4byte BG_VRAM + 0x5000 + .4byte BG_VRAM + 0x5080 + .4byte BG_VRAM + 0x5100 + .4byte BG_VRAM + 0x5180 + .4byte BG_VRAM + 0x5200 + .4byte BG_VRAM + 0x5280 + .4byte BG_VRAM + 0x5300 + .4byte BG_VRAM + 0x5380 gUnknown_08515384:: @ 8515384 @ replacing .incbin "baserom.gba", 0x00515384, 0x30 @@ -348,8 +348,14 @@ gUnknown_08515784:: gUnknown_08515804:: @ 8515804 - .incbin "baserom.gba", 0x515804, 0x20 - + .4byte BG_VRAM + 0x5000 + .4byte BG_VRAM + 0x5080 + .4byte BG_VRAM + 0x5100 + .4byte BG_VRAM + 0x5180 + .4byte BG_VRAM + 0x5200 + .4byte BG_VRAM + 0x5280 + .4byte BG_VRAM + 0x5300 + .4byte BG_VRAM + 0x5380 gUnknown_08515824:: @ 8515824 @ replacing .incbin "baserom.gba", 0x00515824, 0x20 @@ -389,10 +395,18 @@ gUnknown_08515AEC:: .incbin "baserom.gba", 0x515aec, 0x80 gUnknown_08515B6C:: - .incbin "baserom.gba", 0x515b6c, 0x20 + .incbin "baserom.gba", 0x515b6c, 0x80 -gUnknown_08515B8C:: - .incbin "baserom.gba", 0x515b8c, 0x200 +gUnknown_08515BEC:: + .incbin "baserom.gba", 0x515bec, 0x80 + +gUnknown_08515C6C:: + .incbin "baserom.gba", 0x515c6c, 0x80 + +gUnknown_08515CEC:: + .incbin "baserom.gba", 0x515cec, 0x80 + + .space 0x20 gUnknown_08515D8C:: @ 8515D8C @@ -431,14 +445,14 @@ gUnknown_0851611C:: gUnknown_085161BC:: @ 85161BC @ replacing .incbin "baserom.gba", 0x005161bc, 0x20 - .4byte VRAM + 0x5c00 - .4byte VRAM + 0x5c80 - .4byte VRAM + 0x5d00 - .4byte VRAM + 0x5d80 - .4byte VRAM + 0x5e00 - .4byte VRAM + 0x5e80 - .4byte VRAM + 0x5f00 - .4byte VRAM + 0x5f80 + .4byte BG_VRAM + 0x5c00 + .4byte BG_VRAM + 0x5c80 + .4byte BG_VRAM + 0x5d00 + .4byte BG_VRAM + 0x5d80 + .4byte BG_VRAM + 0x5e00 + .4byte BG_VRAM + 0x5e80 + .4byte BG_VRAM + 0x5f00 + .4byte BG_VRAM + 0x5f80 gUnknown_085161DC:: @ 85161DC @ replacing .incbin "baserom.gba", 0x005161dc, 0x20 @@ -692,8 +706,7 @@ gUnknown_085203E4:: gUnknown_085204E4:: .incbin "baserom.gba", 0x5204e4, 0x100 -gUnknown_085205E4:: - .incbin "baserom.gba", 0x5205e4, 0x20 + .space 0x20 gUnknown_08520604:: .incbin "baserom.gba", 0x520604, 0x100 @@ -704,8 +717,15 @@ gUnknown_08520704:: gUnknown_08520804:: .incbin "baserom.gba", 0x520804, 0x100 -gUnknown_08520904:: - .incbin "baserom.gba", 0x520904, 0x3F60 + .space 0x3d00 + +gUnknown_08524604:: + .incbin "baserom.gba", 0x524604, 0x40 + + .space 0x1c0 + +gUnknown_08524804:: + .incbin "baserom.gba", 0x524804, 0x60 gUnknown_08524864:: @ 8524864 From 993d5e2a6afb8f765ddd98ac32f01253a1476696 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 1 Oct 2017 21:50:58 -0400 Subject: [PATCH 076/182] clean up declarations in src/palette.c --- include/battle.h | 3 + include/blend_palette.h | 12 ++ src/palette.c | 308 ++++++++++++++++++++-------------------- 3 files changed, 167 insertions(+), 156 deletions(-) create mode 100644 include/blend_palette.h diff --git a/include/battle.h b/include/battle.h index 67d3d873d7..bc70b86ea8 100644 --- a/include/battle.h +++ b/include/battle.h @@ -927,6 +927,9 @@ u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); u8 GetBankByIdentity(u8 bank); +// battle_transition +void sub_8149DFC(u8 a1); + // Move this somewhere else #include "sprite.h" diff --git a/include/blend_palette.h b/include/blend_palette.h new file mode 100644 index 0000000000..1db3f4eb0c --- /dev/null +++ b/include/blend_palette.h @@ -0,0 +1,12 @@ +#ifndef GUARD_BLEND_PALETTE_H +#define GUARD_BLEND_PALETTE_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void BlendPalette(u16, u16, u8, u16); + +#endif //GUARD_BLEND_PALETTE_H diff --git a/src/palette.c b/src/palette.c index da03516d0f..ed7eb99b36 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1,5 +1,9 @@ #include "global.h" +#include "blend_palette.h" #include "palette.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "battle.h" #include "task.h" enum @@ -38,15 +42,19 @@ struct PaletteStruct u8 ps_field_9; }; -extern void LZDecompressWram(const void *src, void *dest); -extern void SetGpuReg(u8 regOffset, u16 value); -extern void sub_8149DFC(u8 a1); -extern void sub_80A1670(u16 a1); -extern void sub_80A2D54(u8 a1); -extern void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value); -extern void _call_via_r1(u32 a1, void *a2); - -extern void BlendPalette(u16, u16, u8, u16); +static void cur_mapheader_run_tileset1_func(void); +static void cur_mapheader_run_tileset2_func(void); +static void unused_sub_80A1CDC(struct PaletteStruct *, u32 *); +static void unused_sub_80A1E40(struct PaletteStruct *, u32 *); +static void unused_sub_80A1F00(struct PaletteStruct *); +static u8 GetPaletteNumByUid(u16); +static u8 UpdateNormalPaletteFade(void); +static void BeginFastPaletteFadeInternal(u8); +static u8 UpdateFastPaletteFade(void); +static u8 UpdateHardwarePaletteFade(void); +static void UpdateBlendRegisters(void); +static bool8 IsSoftwarePaletteFadeFinishing(void); +static void sub_80A2D54(u8 taskId); static EWRAM_DATA struct { const u16 *src; @@ -57,8 +65,8 @@ EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0}; EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0}; EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; -EWRAM_DATA u32 gFiller_2037FE0 = 0; -EWRAM_DATA u32 sPlttBufferTransferPending = 0; +static EWRAM_DATA u32 gFiller_2037FE0 = 0; +static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0}; extern const u16 *const gUnknown_08510764[]; @@ -123,19 +131,6 @@ static const u8 gUnknown_0852489C[] = { 31, 31 }; -void cur_mapheader_run_tileset1_func(void); -void cur_mapheader_run_tileset2_func(void); -static void unused_sub_80A1CDC(struct PaletteStruct *, u32 *); -static void unused_sub_80A1E40(struct PaletteStruct *, u32 *); -static void unused_sub_80A1F00(struct PaletteStruct *); -static u8 GetPaletteNumByUid(u16); -static u8 UpdateNormalPaletteFade(void); -static void BeginFastPaletteFadeInternal(u8); -static u8 UpdateFastPaletteFade(void); -static u8 UpdateHardwarePaletteFade(void); -static void UpdateBlendRegisters(void); -static bool8 IsSoftwarePaletteFadeFinishing(void); - // tileset IWRAM_DATA u8 sTilesetDMA3TransferBufferSize; @@ -146,13 +141,13 @@ IWRAM_DATA u16 sSecondaryTilesetCBBufferSize; IWRAM_DATA void (*sPrimaryTilesetCB)(u16); IWRAM_DATA void (*sSecondaryTilesetCB)(u16); -void sub_80A0954(void) +static void sub_80A0954(void) { sTilesetDMA3TransferBufferSize = 0; CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer); } -void sub_80A0980(const u16 *a0, u16 *a1, u16 a2) +static void sub_80A0980(const u16 *a0, u16 *a1, u16 a2) { if (sTilesetDMA3TransferBufferSize < 20) { @@ -199,7 +194,7 @@ void sub_80A0A38(void) sSecondaryTilesetCB(sSecondaryTilesetCBCounter); } -void cur_mapheader_run_tileset1_func(void) +static void cur_mapheader_run_tileset1_func(void) { sPrimaryTilesetCBCounter = 0; sPrimaryTilesetCBBufferSize = 0; @@ -208,7 +203,7 @@ void cur_mapheader_run_tileset1_func(void) gMapHeader.mapData->primaryTileset->callback(); } -void cur_mapheader_run_tileset2_func(void) +static void cur_mapheader_run_tileset2_func(void) { sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = 0; @@ -219,7 +214,7 @@ void cur_mapheader_run_tileset2_func(void) void TilesetCb_General(void) { - void sub_80A0B70(u16); + static void sub_80A0B70(u16); sPrimaryTilesetCBCounter = 0; sPrimaryTilesetCBBufferSize = 0x100; @@ -228,20 +223,20 @@ void TilesetCb_General(void) void TilesetCb_InsideBuilding(void) { - void sub_80A0BB4(u16); + static void sub_80A0BB4(u16); sPrimaryTilesetCBCounter = 0; sPrimaryTilesetCBBufferSize = 0x100; sPrimaryTilesetCB = sub_80A0BB4; } -void sub_80A0B70(u16 timer) +static void sub_80A0B70(u16 timer) { - void sub_80A0BCC(u16); - void sub_80A0BF4(u16); - void sub_80A0C1C(u16); - void sub_80A0C44(u16); - void sub_80A12AC(u16); + static void sub_80A0BCC(u16); + static void sub_80A0BF4(u16); + static void sub_80A0C1C(u16); + static void sub_80A0C44(u16); + static void sub_80A12AC(u16); if ((timer & 0x0F) == 0) sub_80A0BCC(timer >> 4); @@ -255,43 +250,44 @@ void sub_80A0B70(u16 timer) sub_80A12AC(timer >> 4); } -void sub_80A0BB4(u16 timer) +static void sub_80A0BB4(u16 timer) { - void sub_80A1688(u16); + static void sub_80A1688(u16); + if ((timer & 0x7) == 0) sub_80A1688(timer >> 3); } -void sub_80A0BCC(u16 timer) +static void sub_80A0BCC(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08510764[idx], (u16 *)(VRAM + 0x3F80), 0x80); + sub_80A0980(gUnknown_08510764[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80); } -void sub_80A0BF4(u16 timer) +static void sub_80A0BF4(u16 timer) { u8 idx; idx = timer % 8; - sub_80A0980(gUnknown_08512574[idx], (u16 *)(VRAM + 0x3600), 0x3C0); + sub_80A0980(gUnknown_08512574[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0); } -void sub_80A0C1C(u16 timer) +static void sub_80A0C1C(u16 timer) { u16 idx; idx = timer % 8; - sub_80A0980(gUnknown_08512E54[idx], (u16 *)(VRAM + 0x3a00), 0x140); + sub_80A0980(gUnknown_08512E54[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140); } -void sub_80A0C44(u16 timer) +static void sub_80A0C44(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08513174[idx], (u16 *)(VRAM + 0x3e00), 0xc0); + sub_80A0980(gUnknown_08513174[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0); } void TilesetCb_Petalburg(void) @@ -303,7 +299,7 @@ void TilesetCb_Petalburg(void) void TilesetCb_Rustboro(void) { - void sub_80A103C(u16); + static void sub_80A103C(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -312,7 +308,7 @@ void TilesetCb_Rustboro(void) void TilesetCb_Dewford(void) { - void sub_80A10B8(u16); + static void sub_80A10B8(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -321,7 +317,7 @@ void TilesetCb_Dewford(void) void TilesetCb_Slateport(void) { - void sub_80A10D0(u16); + static void sub_80A10D0(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -330,7 +326,7 @@ void TilesetCb_Slateport(void) void TilesetCb_Mauville(void) { - void sub_80A10E8(u16); + static void sub_80A10E8(u16); sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -339,7 +335,7 @@ void TilesetCb_Mauville(void) void TilesetCb_Lavaridge(void) { - void sub_80A115C(u16); + static void sub_80A115C(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -376,7 +372,7 @@ void TilesetCb_Mossdeep(void) void TilesetCb_EverGrande(void) { - void sub_80A1188(u16); + static void sub_80A1188(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -385,7 +381,7 @@ void TilesetCb_EverGrande(void) void TilesetCb_Pacifidlog(void) { - void sub_80A11FC(u16); + static void sub_80A11FC(u16); sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -394,7 +390,7 @@ void TilesetCb_Pacifidlog(void) void TilesetCb_Sootopolis(void) { - void sub_80A122C(u16); + static void sub_80A122C(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -403,7 +399,7 @@ void TilesetCb_Sootopolis(void) void TilesetCb_BattleFrontierOutsideWest(void) { - void sub_80A127C(u16); + static void sub_80A127C(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -412,7 +408,7 @@ void TilesetCb_BattleFrontierOutsideWest(void) void TilesetCb_BattleFrontierOutsideEast(void) { - void sub_80A1294(u16); + static void sub_80A1294(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -421,7 +417,7 @@ void TilesetCb_BattleFrontierOutsideEast(void) void TilesetCb_Underwater(void) { - void sub_80A1244(u16); + static void sub_80A1244(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = 128; @@ -430,7 +426,7 @@ void TilesetCb_Underwater(void) void TilesetCb_SootopolisGym(void) { - void sub_80A15D8(u16); + static void sub_80A15D8(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = 240; @@ -439,7 +435,7 @@ void TilesetCb_SootopolisGym(void) void TilesetCb_Cave(void) { - void sub_80A1260(u16); + static void sub_80A1260(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -448,7 +444,7 @@ void TilesetCb_Cave(void) void TilesetCb_EliteFour(void) { - void sub_80A15F0(u16); + static void sub_80A15F0(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = 128; @@ -457,7 +453,7 @@ void TilesetCb_EliteFour(void) void TilesetCb_MauvilleGym(void) { - void sub_80A15C0(u16); + static void sub_80A15C0(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -466,7 +462,7 @@ void TilesetCb_MauvilleGym(void) void TilesetCb_BikeShop(void) { - void sub_80A161C(u16); + static void sub_80A161C(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -475,7 +471,7 @@ void TilesetCb_BikeShop(void) void TilesetCb_BattlePyramid(void) { - void sub_80A1634(u16); + static void sub_80A1634(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; @@ -484,17 +480,17 @@ void TilesetCb_BattlePyramid(void) void TilesetCb_BattleDome(void) { - void sub_80A1658(u16); + static void sub_80A1658(u16); sSecondaryTilesetCBCounter = 0; sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; sSecondaryTilesetCB = sub_80A1658; } -void sub_80A103C(u16 timer) +static void sub_80A103C(u16 timer) { - void sub_80A1434(u16, u8); - void sub_80A1470(u16); + static void sub_80A1434(u16, u8); + static void sub_80A1470(u16); if ((timer & 0x07) == 0) { @@ -517,25 +513,25 @@ void sub_80A103C(u16 timer) sub_80A1434(timer >> 3, 7); } -void sub_80A10B8(u16 timer) +static void sub_80A10B8(u16 timer) { - void sub_80A1520(u16); + static void sub_80A1520(u16); if ((timer & 7) == 0) sub_80A1520(timer >> 3); } -void sub_80A10D0(u16 timer) +static void sub_80A10D0(u16 timer) { - void sub_80A1598(u16); + static void sub_80A1598(u16); if ((timer & 15) == 0) sub_80A1598(timer >> 4); } -void sub_80A10E8(u16 timer) +static void sub_80A10E8(u16 timer) { - void sub_80A1394(u16, u8); + static void sub_80A1394(u16, u8); if ((timer & 0x07) == 0) sub_80A1394(timer >> 3, 0); @@ -555,10 +551,10 @@ void sub_80A10E8(u16 timer) sub_80A1394(timer >> 3, 7); } -void sub_80A115C(u16 timer) +static void sub_80A115C(u16 timer) { - void sub_80A12D4(u8); - void sub_80A1498(u16); + static void sub_80A12D4(u8); + static void sub_80A1498(u16); if ((timer & 0x0F) == 0) sub_80A12D4(timer >> 4); @@ -566,9 +562,9 @@ void sub_80A115C(u16 timer) sub_80A1498(timer >> 4); } -void sub_80A1188(u16 timer) +static void sub_80A1188(u16 timer) { - void sub_80A14C0(u16, u8); + static void sub_80A14C0(u16, u8); if ((timer & 0x07) == 0) sub_80A14C0(timer >> 3, 0); @@ -588,10 +584,10 @@ void sub_80A1188(u16 timer) sub_80A14C0(timer >> 3, 7); } -void sub_80A11FC(u16 timer) +static void sub_80A11FC(u16 timer) { - void sub_80A131C(u8); - void sub_80A136C(u8); + static void sub_80A131C(u8); + static void sub_80A136C(u8); if ((timer & 0x0F) == 0) sub_80A131C(timer >> 4); @@ -599,90 +595,90 @@ void sub_80A11FC(u16 timer) sub_80A136C(timer >> 4); } -void sub_80A122C(u16 timer) +static void sub_80A122C(u16 timer) { - void sub_80A1798(u16); + static void sub_80A1798(u16); if ((timer & 0x0F) == 0) sub_80A1798(timer >> 4); } -void sub_80A1244(u16 timer) +static void sub_80A1244(u16 timer) { - void sub_80A1344(u8); + static void sub_80A1344(u8); if ((timer & 0x0F) == 0) sub_80A1344(timer >> 4); } -void sub_80A1260(u16 timer) +static void sub_80A1260(u16 timer) { - void sub_80A14F8(u16); + static void sub_80A14F8(u16); if ((timer & 0x0F) == 1) sub_80A14F8(timer >> 4); } -void sub_80A127C(u16 timer) +static void sub_80A127C(u16 timer) { - void sub_80A1548(u16); + static void sub_80A1548(u16); if ((timer & 0x07) == 0) sub_80A1548(timer >> 3); } -void sub_80A1294(u16 timer) +static void sub_80A1294(u16 timer) { - void sub_80A1570(u16); + static void sub_80A1570(u16); if ((timer & 0x07) == 0) sub_80A1570(timer >> 3); } -void sub_80A12AC(u16 timer) +static void sub_80A12AC(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08513684[idx], (u16 *)(VRAM + 0x3c00), 0x140); + sub_80A0980(gUnknown_08513684[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140); } -void sub_80A12D4(u8 timer) +static void sub_80A12D4(u8 timer) { u8 idx; idx = timer % 4; - sub_80A0980(gUnknown_08513894[idx], (u16 *)(VRAM + 0x6400), 0x80); + sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6400), 0x80); idx = (timer + 2) % 4; - sub_80A0980(gUnknown_08513894[idx], (u16 *)(VRAM + 0x6480), 0x80); + sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6480), 0x80); } -void sub_80A131C(u8 timer) +static void sub_80A131C(u8 timer) { u8 idx; idx = timer % 4; - sub_80A0980(gUnknown_085143E4[idx], (u16 *)(VRAM + 0x7a00), 0x3C0); + sub_80A0980(gUnknown_085143E4[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0); } -void sub_80A1344(u8 timer) +static void sub_80A1344(u8 timer) { u8 idx; idx = timer % 4; - sub_80A0980(gUnknown_085145F4[idx], (u16 *)(VRAM + 0x7e00), 0x80); + sub_80A0980(gUnknown_085145F4[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80); } -void sub_80A136C(u8 timer) +static void sub_80A136C(u8 timer) { u8 idx; idx = timer % 8; - sub_80A0980(gUnknown_08514E04[idx], (u16 *)(VRAM + 0x7e00), 0x100); + sub_80A0980(gUnknown_08514E04[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100); } -void sub_80A1394(u16 timer_div, u8 timer_mod) +static void sub_80A1394(u16 timer_div, u8 timer_mod) { timer_div -= timer_mod; if (timer_div < 12) // almost certainly a typo @@ -699,7 +695,7 @@ void sub_80A1394(u16 timer_div, u8 timer_mod) } } -void sub_80A1434(u16 timer_div, u8 timer_mod) +static void sub_80A1434(u16 timer_div, u8 timer_mod) { timer_div -= timer_mod; timer_div %= 8; @@ -707,23 +703,23 @@ void sub_80A1434(u16 timer_div, u8 timer_mod) sub_80A0980(gUnknown_08515824[timer_div], gUnknown_08515804[timer_mod], 0x80); } -void sub_80A1470(u16 timer) +static void sub_80A1470(u16 timer) { u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08515964[idx], (u16 *)(VRAM + 0x7800), 0x80); + sub_80A0980(gUnknown_08515964[idx], (u16 *)(BG_VRAM + 0x7800), 0x80); } -void sub_80A1498(u16 timer) +static void sub_80A1498(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(VRAM + 0x5400), 0x80); + sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x5400), 0x80); } -void sub_80A14C0(u16 timer_div, u8 timer_mod) +static void sub_80A14C0(u16 timer_div, u8 timer_mod) { timer_div -= timer_mod; timer_div %= 8; @@ -731,84 +727,84 @@ void sub_80A14C0(u16 timer_div, u8 timer_mod) sub_80A0980(gUnknown_085161DC[timer_div], gUnknown_085161BC[timer_mod], 0x80); } -void sub_80A14F8(u16 timer) +static void sub_80A14F8(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(VRAM + 0x7400), 0x80); + sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x7400), 0x80); } -void sub_80A1520(u16 timer) +static void sub_80A1520(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_085164FC[idx], (u16 *)(VRAM + 0x5540), 0xC0); + sub_80A0980(gUnknown_085164FC[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0); } -void sub_80A1548(u16 timer) +static void sub_80A1548(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_0851680C[idx], (u16 *)(VRAM + 0x5b40), 0xC0); + sub_80A0980(gUnknown_0851680C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); } -void sub_80A1570(u16 timer) +static void sub_80A1570(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08516B1C[idx], (u16 *)(VRAM + 0x5b40), 0xC0); + sub_80A0980(gUnknown_08516B1C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); } -void sub_80A1598(u16 timer) +static void sub_80A1598(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08516D2C[idx], (u16 *)(VRAM + 0x5c00), 0x80); + sub_80A0980(gUnknown_08516D2C[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80); } -void sub_80A15C0(u16 timer) +static void sub_80A15C0(u16 timer) { - void sub_80A1748(u16); + static void sub_80A1748(u16); if ((timer & 1) == 0) sub_80A1748(timer >> 1); } -void sub_80A15D8(u16 timer) +static void sub_80A15D8(u16 timer) { - void sub_80A16B0(u16); + static void sub_80A16B0(u16); if ((timer & 7) == 0) sub_80A16B0(timer >> 3); } -void sub_80A15F0(u16 timer) +static void sub_80A15F0(u16 timer) { - void sub_80A1720(u16); - void sub_80A16F8(u16); + static void sub_80A1720(u16); + static void sub_80A16F8(u16); if ((timer & 0x3f) == 1) sub_80A1720(timer >> 6); if ((timer & 0x07) == 1) sub_80A16F8(timer >> 3); } -void sub_80A161C(u16 timer) +static void sub_80A161C(u16 timer) { - void sub_80A1770(u16); + static void sub_80A1770(u16); if ((timer & 3) == 0) sub_80A1770(timer >> 2); } -void sub_80A1634(u16 timer) +static void sub_80A1634(u16 timer) { - void sub_80A17C0(u16); - void sub_80A17EC(u16); + static void sub_80A17C0(u16); + static void sub_80A17EC(u16); if ((timer & 7) == 0) { @@ -817,98 +813,98 @@ void sub_80A1634(u16 timer) } } -void sub_80A1658(u16 timer) +static void sub_80A1658(u16 timer) { - void sub_80A1818(u16); + static void sub_80A1818(u16); if ((timer & 3) == 0) sub_80A1818(timer >> 2); } -void sub_80A1670(u16 timer) +static void sub_80A1670(u16 timer) { - void sub_80A1884(u16); + static void sub_80A1884(u16); if ((timer & 3) == 0) sub_80A1884(timer >> 2); } -void sub_80A1688(u16 timer) +static void sub_80A1688(u16 timer) { u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08516E3C[idx], (u16 *)(VRAM + 0x3e00), 0x80); + sub_80A0980(gUnknown_08516E3C[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80); } -void sub_80A16B0(u16 timer) +static void sub_80A16B0(u16 timer) { u16 idx; idx = timer % 3; - sub_80A0980(gUnknown_08517A44[idx], (u16 *)(VRAM + 0x7e00), 0x180); - sub_80A0980(gUnknown_08517A50[idx], (u16 *)(VRAM + 0x7a00), 0x280); + sub_80A0980(gUnknown_08517A44[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180); + sub_80A0980(gUnknown_08517A50[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280); } -void sub_80A16F8(u16 timer) +static void sub_80A16F8(u16 timer) { u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08517BFC[idx], (u16 *)(VRAM + 0x7f00), 0x20); + sub_80A0980(gUnknown_08517BFC[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20); } -void sub_80A1720(u16 timer) +static void sub_80A1720(u16 timer) { u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08517C0C[idx], (u16 *)(VRAM + 0x7c00), 0x80); + sub_80A0980(gUnknown_08517C0C[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80); } -void sub_80A1748(u16 timer) +static void sub_80A1748(u16 timer) { u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08518034[idx], (u16 *)(VRAM + 0x5200), 0x200); + sub_80A0980(gUnknown_08518034[idx], (u16 *)(BG_VRAM + 0x5200), 0x200); } -void sub_80A1770(u16 timer) +static void sub_80A1770(u16 timer) { u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_0851829C[idx], (u16 *)(VRAM + 0x7e00), 0x120); + sub_80A0980(gUnknown_0851829C[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120); } -void sub_80A1798(u16 timer) +static void sub_80A1798(u16 timer) { u16 idx; idx = timer % 8; - sub_80A0980(gUnknown_085202C4[idx], (u16 *)(VRAM + 0x5e00), 0xc00); + sub_80A0980(gUnknown_085202C4[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00); } -void sub_80A17C0(u16 timer) +static void sub_80A17C0(u16 timer) { u16 idx; idx = timer % 3; - sub_80A0980(gUnknown_08524864[idx], (u16 *)(VRAM + 0x52e0), 0x100); + sub_80A0980(gUnknown_08524864[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100); } -void sub_80A17EC(u16 timer) +static void sub_80A17EC(u16 timer) { u16 idx; idx = timer % 3; - sub_80A0980(gUnknown_08524870[idx], (u16 *)(VRAM + 0x50e0), 0x100); + sub_80A0980(gUnknown_08524870[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100); } // palette -void sub_80A1818(u16 a1) +static void sub_80A1818(u16 a1) { CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); @@ -919,7 +915,7 @@ void sub_80A1818(u16 a1) } } -void sub_80A1884(u16 a1) +static void sub_80A1884(u16 a1) { CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF ) From 3ec4d98de95a2aeb12f3c738b3496d0b3a830793 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 1 Oct 2017 21:58:47 -0400 Subject: [PATCH 077/182] Split palette and tileset_anims --- ld_script.txt | 2 + src/palette.c | 851 ------------------------------------------- src/tileset_anims.c | 865 ++++++++++++++++++++++++++++++++++++++++++++ sym_bss.txt | 1 + sym_ewram.txt | 1 + 5 files changed, 869 insertions(+), 851 deletions(-) create mode 100644 src/tileset_anims.c diff --git a/ld_script.txt b/ld_script.txt index 78d27eb7fe..2ab0f780bd 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -110,6 +110,7 @@ SECTIONS { asm/reset_rtc_screen.o(.text); src/start_menu.o(.text); asm/start_menu.o(.text); + src/tileset_anims.o(.text); src/palette.o(.text); src/sound.o(.text); asm/battle_anim.o(.text); @@ -356,6 +357,7 @@ SECTIONS { data/reset_rtc_screen.o(.rodata); data/start_menu.o(.rodata); data/tileset.o(.rodata); + src/tileset_anims.o(.rodata); src/palette.o(.rodata); data/fanfares.o(.rodata); data/battle_anims.o(.rodata); diff --git a/src/palette.c b/src/palette.c index ed7eb99b36..d60efdbc52 100644 --- a/src/palette.c +++ b/src/palette.c @@ -3,7 +3,6 @@ #include "palette.h" #include "decompress.h" #include "gpu_regs.h" -#include "battle.h" #include "task.h" enum @@ -42,8 +41,6 @@ struct PaletteStruct u8 ps_field_9; }; -static void cur_mapheader_run_tileset1_func(void); -static void cur_mapheader_run_tileset2_func(void); static void unused_sub_80A1CDC(struct PaletteStruct *, u32 *); static void unused_sub_80A1E40(struct PaletteStruct *, u32 *); static void unused_sub_80A1F00(struct PaletteStruct *); @@ -56,11 +53,6 @@ static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); static void sub_80A2D54(u8 taskId); -static EWRAM_DATA struct { - const u16 *src; - u16 *dest; - u16 size; -} sTilesetDMA3TransferBuffer[20] = {0}; EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0}; EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0}; EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; @@ -69,54 +61,6 @@ static EWRAM_DATA u32 gFiller_2037FE0 = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0}; -extern const u16 *const gUnknown_08510764[]; -extern const u16 *const gUnknown_08512574[]; -extern const u16 *const gUnknown_08512E54[]; -extern const u16 *const gUnknown_08513174[]; -extern const u16 *const gUnknown_08513684[]; -extern const u16 *const gUnknown_08513894[]; -extern const u16 *const gUnknown_085143E4[]; -extern const u16 *const gUnknown_085145F4[]; -extern const u16 *const gUnknown_08514E04[]; -extern u16 *const gUnknown_08515344[]; -extern u16 *const gUnknown_08515364[]; -extern const u16 *const gUnknown_08515384[]; -extern const u16 *const gUnknown_085153B4[]; -extern const u16 *const gUnknown_085153E4[]; -extern const u16 *const gUnknown_085153F4[]; -extern u16 *const gUnknown_08515804[]; -extern const u16 *const gUnknown_08515824[]; -extern const u16 *const gUnknown_08515964[]; -extern const u16 *const gUnknown_08515D8C[]; -extern u16 *const gUnknown_085161BC[]; -extern const u16 *const gUnknown_085161DC[]; -extern const u16 *const gUnknown_085164FC[]; -extern const u16 *const gUnknown_0851680C[]; -extern const u16 *const gUnknown_08516B1C[]; -extern const u16 *const gUnknown_08516D2C[]; -extern const u16 *const gUnknown_08516E3C[]; -extern const u16 *const gUnknown_08517A44[]; -extern const u16 *const gUnknown_08517A50[]; -extern const u16 *const gUnknown_08517BFC[]; -extern const u16 *const gUnknown_08517C0C[]; -extern const u16 *const gUnknown_08518034[]; -extern const u16 *const gUnknown_0851829C[]; -extern const u16 *const gUnknown_085202C4[]; -extern const u16 *const gUnknown_08524864[]; -extern const u16 *const gUnknown_08524870[]; - -extern const u16 gUnknown_08D85640[]; -extern const u16 gUnknown_08D85660[]; -extern const u16 gUnknown_08D85680[]; -extern const u16 gUnknown_08D856A0[]; - -static const u16 *const gUnknown_0852487C[] = { - gUnknown_08D85640, - gUnknown_08D85660, - gUnknown_08D85680, - gUnknown_08D856A0, -}; - static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { .uid = 0xFFFF, .pst_field_B_5 = 1 @@ -131,801 +75,6 @@ static const u8 gUnknown_0852489C[] = { 31, 31 }; -// tileset - -IWRAM_DATA u8 sTilesetDMA3TransferBufferSize; -IWRAM_DATA u16 sPrimaryTilesetCBCounter; -IWRAM_DATA u16 sPrimaryTilesetCBBufferSize; -IWRAM_DATA u16 sSecondaryTilesetCBCounter; -IWRAM_DATA u16 sSecondaryTilesetCBBufferSize; -IWRAM_DATA void (*sPrimaryTilesetCB)(u16); -IWRAM_DATA void (*sSecondaryTilesetCB)(u16); - -static void sub_80A0954(void) -{ - sTilesetDMA3TransferBufferSize = 0; - CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer); -} - -static void sub_80A0980(const u16 *a0, u16 *a1, u16 a2) -{ - if (sTilesetDMA3TransferBufferSize < 20) - { - sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = a0; - sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = a1; - sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = a2; - sTilesetDMA3TransferBufferSize ++; - } -} - -void sub_80A09D0(void) -{ - int i; - - for (i = 0; i < sTilesetDMA3TransferBufferSize; i ++) - { - DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size); - } - sTilesetDMA3TransferBufferSize = 0; -} - -void cur_mapheader_run_tileset_funcs_after_some_cpuset(void) -{ - sub_80A0954(); - cur_mapheader_run_tileset1_func(); - cur_mapheader_run_tileset2_func(); -} - -void sub_80A0A2C(void) -{ - cur_mapheader_run_tileset2_func(); -} - -void sub_80A0A38(void) -{ - sub_80A0954(); - if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize) - sPrimaryTilesetCBCounter = 0; - if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize) - sSecondaryTilesetCBCounter = 0; - if (sPrimaryTilesetCB) - sPrimaryTilesetCB(sPrimaryTilesetCBCounter); - if (sSecondaryTilesetCB) - sSecondaryTilesetCB(sSecondaryTilesetCBCounter); -} - -static void cur_mapheader_run_tileset1_func(void) -{ - sPrimaryTilesetCBCounter = 0; - sPrimaryTilesetCBBufferSize = 0; - sPrimaryTilesetCB = NULL; - if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback) - gMapHeader.mapData->primaryTileset->callback(); -} - -static void cur_mapheader_run_tileset2_func(void) -{ - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = 0; - sSecondaryTilesetCB = NULL; - if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback) - gMapHeader.mapData->secondaryTileset->callback(); -} - -void TilesetCb_General(void) -{ - static void sub_80A0B70(u16); - - sPrimaryTilesetCBCounter = 0; - sPrimaryTilesetCBBufferSize = 0x100; - sPrimaryTilesetCB = sub_80A0B70; -} - -void TilesetCb_InsideBuilding(void) -{ - static void sub_80A0BB4(u16); - - sPrimaryTilesetCBCounter = 0; - sPrimaryTilesetCBBufferSize = 0x100; - sPrimaryTilesetCB = sub_80A0BB4; -} - -static void sub_80A0B70(u16 timer) -{ - static void sub_80A0BCC(u16); - static void sub_80A0BF4(u16); - static void sub_80A0C1C(u16); - static void sub_80A0C44(u16); - static void sub_80A12AC(u16); - - if ((timer & 0x0F) == 0) - sub_80A0BCC(timer >> 4); - if ((timer & 0x0F) == 1) - sub_80A0BF4(timer >> 4); - if ((timer & 0x0F) == 2) - sub_80A0C1C(timer >> 4); - if ((timer & 0x0F) == 3) - sub_80A0C44(timer >> 4); - if ((timer & 0x0F) == 4) - sub_80A12AC(timer >> 4); -} - -static void sub_80A0BB4(u16 timer) -{ - static void sub_80A1688(u16); - - if ((timer & 0x7) == 0) - sub_80A1688(timer >> 3); -} - -static void sub_80A0BCC(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08510764[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80); -} - -static void sub_80A0BF4(u16 timer) -{ - u8 idx; - - idx = timer % 8; - sub_80A0980(gUnknown_08512574[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0); -} - -static void sub_80A0C1C(u16 timer) -{ - u16 idx; - - idx = timer % 8; - sub_80A0980(gUnknown_08512E54[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140); -} - -static void sub_80A0C44(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08513174[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0); -} - -void TilesetCb_Petalburg(void) -{ - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = NULL; -} - -void TilesetCb_Rustboro(void) -{ - static void sub_80A103C(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A103C; -} - -void TilesetCb_Dewford(void) -{ - static void sub_80A10B8(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A10B8; -} - -void TilesetCb_Slateport(void) -{ - static void sub_80A10D0(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A10D0; -} - -void TilesetCb_Mauville(void) -{ - static void sub_80A10E8(u16); - - sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A10E8; -} - -void TilesetCb_Lavaridge(void) -{ - static void sub_80A115C(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A115C; -} - -void TilesetCb_Fallarbor(void) -{ - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = NULL; -} - -void TilesetCb_Fortree(void) -{ - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = NULL; -} - -void TilesetCb_Lilycove(void) -{ - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = NULL; -} - -void TilesetCb_Mossdeep(void) -{ - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = NULL; -} - -void TilesetCb_EverGrande(void) -{ - static void sub_80A1188(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A1188; -} - -void TilesetCb_Pacifidlog(void) -{ - static void sub_80A11FC(u16); - - sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A11FC; -} - -void TilesetCb_Sootopolis(void) -{ - static void sub_80A122C(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A122C; -} - -void TilesetCb_BattleFrontierOutsideWest(void) -{ - static void sub_80A127C(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A127C; -} - -void TilesetCb_BattleFrontierOutsideEast(void) -{ - static void sub_80A1294(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A1294; -} - -void TilesetCb_Underwater(void) -{ - static void sub_80A1244(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = 128; - sSecondaryTilesetCB = sub_80A1244; -} - -void TilesetCb_SootopolisGym(void) -{ - static void sub_80A15D8(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = 240; - sSecondaryTilesetCB = sub_80A15D8; -} - -void TilesetCb_Cave(void) -{ - static void sub_80A1260(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A1260; -} - -void TilesetCb_EliteFour(void) -{ - static void sub_80A15F0(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = 128; - sSecondaryTilesetCB = sub_80A15F0; -} - -void TilesetCb_MauvilleGym(void) -{ - static void sub_80A15C0(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A15C0; -} - -void TilesetCb_BikeShop(void) -{ - static void sub_80A161C(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A161C; -} - -void TilesetCb_BattlePyramid(void) -{ - static void sub_80A1634(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A1634; -} - -void TilesetCb_BattleDome(void) -{ - static void sub_80A1658(u16); - - sSecondaryTilesetCBCounter = 0; - sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; - sSecondaryTilesetCB = sub_80A1658; -} - -static void sub_80A103C(u16 timer) -{ - static void sub_80A1434(u16, u8); - static void sub_80A1470(u16); - - if ((timer & 0x07) == 0) - { - sub_80A1434(timer >> 3, 0); - sub_80A1470(timer >> 3); - } - if ((timer & 0x07) == 1) - sub_80A1434(timer >> 3, 1); - if ((timer & 0x07) == 2) - sub_80A1434(timer >> 3, 2); - if ((timer & 0x07) == 3) - sub_80A1434(timer >> 3, 3); - if ((timer & 0x07) == 4) - sub_80A1434(timer >> 3, 4); - if ((timer & 0x07) == 5) - sub_80A1434(timer >> 3, 5); - if ((timer & 0x07) == 6) - sub_80A1434(timer >> 3, 6); - if ((timer & 0x07) == 7) - sub_80A1434(timer >> 3, 7); -} - -static void sub_80A10B8(u16 timer) -{ - static void sub_80A1520(u16); - - if ((timer & 7) == 0) - sub_80A1520(timer >> 3); -} - -static void sub_80A10D0(u16 timer) -{ - static void sub_80A1598(u16); - - if ((timer & 15) == 0) - sub_80A1598(timer >> 4); -} - -static void sub_80A10E8(u16 timer) -{ - static void sub_80A1394(u16, u8); - - if ((timer & 0x07) == 0) - sub_80A1394(timer >> 3, 0); - if ((timer & 0x07) == 1) - sub_80A1394(timer >> 3, 1); - if ((timer & 0x07) == 2) - sub_80A1394(timer >> 3, 2); - if ((timer & 0x07) == 3) - sub_80A1394(timer >> 3, 3); - if ((timer & 0x07) == 4) - sub_80A1394(timer >> 3, 4); - if ((timer & 0x07) == 5) - sub_80A1394(timer >> 3, 5); - if ((timer & 0x07) == 6) - sub_80A1394(timer >> 3, 6); - if ((timer & 0x07) == 7) - sub_80A1394(timer >> 3, 7); -} - -static void sub_80A115C(u16 timer) -{ - static void sub_80A12D4(u8); - static void sub_80A1498(u16); - - if ((timer & 0x0F) == 0) - sub_80A12D4(timer >> 4); - if ((timer & 0x0F) == 1) - sub_80A1498(timer >> 4); -} - -static void sub_80A1188(u16 timer) -{ - static void sub_80A14C0(u16, u8); - - if ((timer & 0x07) == 0) - sub_80A14C0(timer >> 3, 0); - if ((timer & 0x07) == 1) - sub_80A14C0(timer >> 3, 1); - if ((timer & 0x07) == 2) - sub_80A14C0(timer >> 3, 2); - if ((timer & 0x07) == 3) - sub_80A14C0(timer >> 3, 3); - if ((timer & 0x07) == 4) - sub_80A14C0(timer >> 3, 4); - if ((timer & 0x07) == 5) - sub_80A14C0(timer >> 3, 5); - if ((timer & 0x07) == 6) - sub_80A14C0(timer >> 3, 6); - if ((timer & 0x07) == 7) - sub_80A14C0(timer >> 3, 7); -} - -static void sub_80A11FC(u16 timer) -{ - static void sub_80A131C(u8); - static void sub_80A136C(u8); - - if ((timer & 0x0F) == 0) - sub_80A131C(timer >> 4); - if ((timer & 0x0F) == 1) - sub_80A136C(timer >> 4); -} - -static void sub_80A122C(u16 timer) -{ - static void sub_80A1798(u16); - - if ((timer & 0x0F) == 0) - sub_80A1798(timer >> 4); -} - -static void sub_80A1244(u16 timer) -{ - static void sub_80A1344(u8); - - if ((timer & 0x0F) == 0) - sub_80A1344(timer >> 4); -} - -static void sub_80A1260(u16 timer) -{ - static void sub_80A14F8(u16); - - if ((timer & 0x0F) == 1) - sub_80A14F8(timer >> 4); -} - -static void sub_80A127C(u16 timer) -{ - static void sub_80A1548(u16); - - if ((timer & 0x07) == 0) - sub_80A1548(timer >> 3); -} - -static void sub_80A1294(u16 timer) -{ - static void sub_80A1570(u16); - - if ((timer & 0x07) == 0) - sub_80A1570(timer >> 3); -} - -static void sub_80A12AC(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08513684[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140); -} - -static void sub_80A12D4(u8 timer) -{ - u8 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6400), 0x80); - - idx = (timer + 2) % 4; - sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6480), 0x80); -} - -static void sub_80A131C(u8 timer) -{ - u8 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_085143E4[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0); -} - -static void sub_80A1344(u8 timer) -{ - u8 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_085145F4[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80); -} - -static void sub_80A136C(u8 timer) -{ - u8 idx; - - idx = timer % 8; - sub_80A0980(gUnknown_08514E04[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100); -} - -static void sub_80A1394(u16 timer_div, u8 timer_mod) -{ - timer_div -= timer_mod; - if (timer_div < 12) // almost certainly a typo - { - timer_div %= 12; - sub_80A0980(gUnknown_08515384[timer_div], gUnknown_08515344[timer_mod], 0x80); - sub_80A0980(gUnknown_085153B4[timer_div], gUnknown_08515364[timer_mod], 0x80); - } - else - { - timer_div %= 4; - sub_80A0980(gUnknown_085153E4[timer_div], gUnknown_08515344[timer_mod], 0x80); - sub_80A0980(gUnknown_085153F4[timer_div], gUnknown_08515364[timer_mod], 0x80); - } -} - -static void sub_80A1434(u16 timer_div, u8 timer_mod) -{ - timer_div -= timer_mod; - timer_div %= 8; - if (gUnknown_08515824[timer_div]) - sub_80A0980(gUnknown_08515824[timer_div], gUnknown_08515804[timer_mod], 0x80); -} - -static void sub_80A1470(u16 timer) -{ - u16 idx; - - idx = timer % 2; - sub_80A0980(gUnknown_08515964[idx], (u16 *)(BG_VRAM + 0x7800), 0x80); -} - -static void sub_80A1498(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x5400), 0x80); -} - -static void sub_80A14C0(u16 timer_div, u8 timer_mod) -{ - timer_div -= timer_mod; - timer_div %= 8; - - sub_80A0980(gUnknown_085161DC[timer_div], gUnknown_085161BC[timer_mod], 0x80); -} - -static void sub_80A14F8(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x7400), 0x80); -} - -static void sub_80A1520(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_085164FC[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0); -} - -static void sub_80A1548(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_0851680C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); -} - -static void sub_80A1570(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08516B1C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); -} - -static void sub_80A1598(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08516D2C[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80); -} - -static void sub_80A15C0(u16 timer) -{ - static void sub_80A1748(u16); - - if ((timer & 1) == 0) - sub_80A1748(timer >> 1); -} - -static void sub_80A15D8(u16 timer) -{ - static void sub_80A16B0(u16); - - if ((timer & 7) == 0) - sub_80A16B0(timer >> 3); -} - -static void sub_80A15F0(u16 timer) -{ - static void sub_80A1720(u16); - static void sub_80A16F8(u16); - - if ((timer & 0x3f) == 1) - sub_80A1720(timer >> 6); - if ((timer & 0x07) == 1) - sub_80A16F8(timer >> 3); -} -static void sub_80A161C(u16 timer) -{ - static void sub_80A1770(u16); - - if ((timer & 3) == 0) - sub_80A1770(timer >> 2); -} - -static void sub_80A1634(u16 timer) -{ - static void sub_80A17C0(u16); - static void sub_80A17EC(u16); - - if ((timer & 7) == 0) - { - sub_80A17C0(timer >> 3); - sub_80A17EC(timer >> 3); - } -} - -static void sub_80A1658(u16 timer) -{ - static void sub_80A1818(u16); - - if ((timer & 3) == 0) - sub_80A1818(timer >> 2); -} - -static void sub_80A1670(u16 timer) -{ - static void sub_80A1884(u16); - - if ((timer & 3) == 0) - sub_80A1884(timer >> 2); -} - -static void sub_80A1688(u16 timer) -{ - u16 idx; - - idx = timer % 2; - sub_80A0980(gUnknown_08516E3C[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80); -} - -static void sub_80A16B0(u16 timer) -{ - u16 idx; - - idx = timer % 3; - sub_80A0980(gUnknown_08517A44[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180); - sub_80A0980(gUnknown_08517A50[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280); -} - -static void sub_80A16F8(u16 timer) -{ - u16 idx; - - idx = timer % 4; - sub_80A0980(gUnknown_08517BFC[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20); -} - -static void sub_80A1720(u16 timer) -{ - u16 idx; - - idx = timer % 2; - sub_80A0980(gUnknown_08517C0C[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80); -} - -static void sub_80A1748(u16 timer) -{ - u16 idx; - - idx = timer % 2; - sub_80A0980(gUnknown_08518034[idx], (u16 *)(BG_VRAM + 0x5200), 0x200); -} - -static void sub_80A1770(u16 timer) -{ - u16 idx; - - idx = timer % 2; - sub_80A0980(gUnknown_0851829C[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120); -} - -static void sub_80A1798(u16 timer) -{ - u16 idx; - - idx = timer % 8; - sub_80A0980(gUnknown_085202C4[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00); -} - -static void sub_80A17C0(u16 timer) -{ - u16 idx; - - idx = timer % 3; - sub_80A0980(gUnknown_08524864[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100); -} - -static void sub_80A17EC(u16 timer) -{ - u16 idx; - - idx = timer % 3; - sub_80A0980(gUnknown_08524870[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100); -} - -// palette - -static void sub_80A1818(u16 a1) -{ - CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); - BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); - if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF ) - { - sSecondaryTilesetCB = sub_80A1670; - sSecondaryTilesetCBBufferSize = 0x20; - } -} - -static void sub_80A1884(u16 a1) -{ - CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); - if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF ) - { - BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); - if (!--sSecondaryTilesetCBBufferSize) - sSecondaryTilesetCB = NULL; - } -} - void LoadCompressedPalette(const void *src, u16 offset, u16 size) { LZDecompressWram(src, gPaletteDecompressionBuffer); diff --git a/src/tileset_anims.c b/src/tileset_anims.c new file mode 100644 index 0000000000..5eb470a07f --- /dev/null +++ b/src/tileset_anims.c @@ -0,0 +1,865 @@ + +// Includes +#include "global.h" +#include "palette.h" +#include "blend_palette.h" +#include "battle.h" +#include "task.h" + +// Static type declarations + +// Static RAM declarations + +static EWRAM_DATA struct { + const u16 *src; + u16 *dest; + u16 size; +} sTilesetDMA3TransferBuffer[20] = {0}; + +static u8 sTilesetDMA3TransferBufferSize; +static u16 sPrimaryTilesetCBCounter; +static u16 sPrimaryTilesetCBBufferSize; +static u16 sSecondaryTilesetCBCounter; +static u16 sSecondaryTilesetCBBufferSize; +static void (*sPrimaryTilesetCB)(u16); +static void (*sSecondaryTilesetCB)(u16); + +// Static ROM declarations + +static void cur_mapheader_run_tileset1_func(void); +static void cur_mapheader_run_tileset2_func(void); + +// .rodata + +extern const u16 *const gUnknown_08510764[]; +extern const u16 *const gUnknown_08512574[]; +extern const u16 *const gUnknown_08512E54[]; +extern const u16 *const gUnknown_08513174[]; +extern const u16 *const gUnknown_08513684[]; +extern const u16 *const gUnknown_08513894[]; +extern const u16 *const gUnknown_085143E4[]; +extern const u16 *const gUnknown_085145F4[]; +extern const u16 *const gUnknown_08514E04[]; +extern u16 *const gUnknown_08515344[]; +extern u16 *const gUnknown_08515364[]; +extern const u16 *const gUnknown_08515384[]; +extern const u16 *const gUnknown_085153B4[]; +extern const u16 *const gUnknown_085153E4[]; +extern const u16 *const gUnknown_085153F4[]; +extern u16 *const gUnknown_08515804[]; +extern const u16 *const gUnknown_08515824[]; +extern const u16 *const gUnknown_08515964[]; +extern const u16 *const gUnknown_08515D8C[]; +extern u16 *const gUnknown_085161BC[]; +extern const u16 *const gUnknown_085161DC[]; +extern const u16 *const gUnknown_085164FC[]; +extern const u16 *const gUnknown_0851680C[]; +extern const u16 *const gUnknown_08516B1C[]; +extern const u16 *const gUnknown_08516D2C[]; +extern const u16 *const gUnknown_08516E3C[]; +extern const u16 *const gUnknown_08517A44[]; +extern const u16 *const gUnknown_08517A50[]; +extern const u16 *const gUnknown_08517BFC[]; +extern const u16 *const gUnknown_08517C0C[]; +extern const u16 *const gUnknown_08518034[]; +extern const u16 *const gUnknown_0851829C[]; +extern const u16 *const gUnknown_085202C4[]; +extern const u16 *const gUnknown_08524864[]; +extern const u16 *const gUnknown_08524870[]; + +extern const u16 gUnknown_08D85640[]; +extern const u16 gUnknown_08D85660[]; +extern const u16 gUnknown_08D85680[]; +extern const u16 gUnknown_08D856A0[]; + +static const u16 *const gUnknown_0852487C[] = { + gUnknown_08D85640, + gUnknown_08D85660, + gUnknown_08D85680, + gUnknown_08D856A0, +}; + +// .text + +static void sub_80A0954(void) +{ + sTilesetDMA3TransferBufferSize = 0; + CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer); +} + +static void sub_80A0980(const u16 *a0, u16 *a1, u16 a2) +{ + if (sTilesetDMA3TransferBufferSize < 20) + { + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = a0; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = a1; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = a2; + sTilesetDMA3TransferBufferSize ++; + } +} + +void sub_80A09D0(void) +{ + int i; + + for (i = 0; i < sTilesetDMA3TransferBufferSize; i ++) + { + DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size); + } + sTilesetDMA3TransferBufferSize = 0; +} + +void cur_mapheader_run_tileset_funcs_after_some_cpuset(void) +{ + sub_80A0954(); + cur_mapheader_run_tileset1_func(); + cur_mapheader_run_tileset2_func(); +} + +void sub_80A0A2C(void) +{ + cur_mapheader_run_tileset2_func(); +} + +void sub_80A0A38(void) +{ + sub_80A0954(); + if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize) + sPrimaryTilesetCBCounter = 0; + if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize) + sSecondaryTilesetCBCounter = 0; + if (sPrimaryTilesetCB) + sPrimaryTilesetCB(sPrimaryTilesetCBCounter); + if (sSecondaryTilesetCB) + sSecondaryTilesetCB(sSecondaryTilesetCBCounter); +} + +static void cur_mapheader_run_tileset1_func(void) +{ + sPrimaryTilesetCBCounter = 0; + sPrimaryTilesetCBBufferSize = 0; + sPrimaryTilesetCB = NULL; + if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback) + gMapHeader.mapData->primaryTileset->callback(); +} + +static void cur_mapheader_run_tileset2_func(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 0; + sSecondaryTilesetCB = NULL; + if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback) + gMapHeader.mapData->secondaryTileset->callback(); +} + +void TilesetCb_General(void) +{ + static void sub_80A0B70(u16); + + sPrimaryTilesetCBCounter = 0; + sPrimaryTilesetCBBufferSize = 0x100; + sPrimaryTilesetCB = sub_80A0B70; +} + +void TilesetCb_InsideBuilding(void) +{ + static void sub_80A0BB4(u16); + + sPrimaryTilesetCBCounter = 0; + sPrimaryTilesetCBBufferSize = 0x100; + sPrimaryTilesetCB = sub_80A0BB4; +} + +static void sub_80A0B70(u16 timer) +{ + static void sub_80A0BCC(u16); + static void sub_80A0BF4(u16); + static void sub_80A0C1C(u16); + static void sub_80A0C44(u16); + static void sub_80A12AC(u16); + + if ((timer & 0x0F) == 0) + sub_80A0BCC(timer >> 4); + if ((timer & 0x0F) == 1) + sub_80A0BF4(timer >> 4); + if ((timer & 0x0F) == 2) + sub_80A0C1C(timer >> 4); + if ((timer & 0x0F) == 3) + sub_80A0C44(timer >> 4); + if ((timer & 0x0F) == 4) + sub_80A12AC(timer >> 4); +} + +static void sub_80A0BB4(u16 timer) +{ + static void sub_80A1688(u16); + + if ((timer & 0x7) == 0) + sub_80A1688(timer >> 3); +} + +static void sub_80A0BCC(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08510764[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80); +} + +static void sub_80A0BF4(u16 timer) +{ + u8 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_08512574[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0); +} + +static void sub_80A0C1C(u16 timer) +{ + u16 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_08512E54[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140); +} + +static void sub_80A0C44(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08513174[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0); +} + +void TilesetCb_Petalburg(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Rustboro(void) +{ + static void sub_80A103C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A103C; +} + +void TilesetCb_Dewford(void) +{ + static void sub_80A10B8(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A10B8; +} + +void TilesetCb_Slateport(void) +{ + static void sub_80A10D0(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A10D0; +} + +void TilesetCb_Mauville(void) +{ + static void sub_80A10E8(u16); + + sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A10E8; +} + +void TilesetCb_Lavaridge(void) +{ + static void sub_80A115C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A115C; +} + +void TilesetCb_Fallarbor(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Fortree(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Lilycove(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_Mossdeep(void) +{ + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = NULL; +} + +void TilesetCb_EverGrande(void) +{ + static void sub_80A1188(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1188; +} + +void TilesetCb_Pacifidlog(void) +{ + static void sub_80A11FC(u16); + + sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A11FC; +} + +void TilesetCb_Sootopolis(void) +{ + static void sub_80A122C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A122C; +} + +void TilesetCb_BattleFrontierOutsideWest(void) +{ + static void sub_80A127C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A127C; +} + +void TilesetCb_BattleFrontierOutsideEast(void) +{ + static void sub_80A1294(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1294; +} + +void TilesetCb_Underwater(void) +{ + static void sub_80A1244(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 128; + sSecondaryTilesetCB = sub_80A1244; +} + +void TilesetCb_SootopolisGym(void) +{ + static void sub_80A15D8(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 240; + sSecondaryTilesetCB = sub_80A15D8; +} + +void TilesetCb_Cave(void) +{ + static void sub_80A1260(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1260; +} + +void TilesetCb_EliteFour(void) +{ + static void sub_80A15F0(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = 128; + sSecondaryTilesetCB = sub_80A15F0; +} + +void TilesetCb_MauvilleGym(void) +{ + static void sub_80A15C0(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A15C0; +} + +void TilesetCb_BikeShop(void) +{ + static void sub_80A161C(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A161C; +} + +void TilesetCb_BattlePyramid(void) +{ + static void sub_80A1634(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1634; +} + +void TilesetCb_BattleDome(void) +{ + static void sub_80A1658(u16); + + sSecondaryTilesetCBCounter = 0; + sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize; + sSecondaryTilesetCB = sub_80A1658; +} + +static void sub_80A103C(u16 timer) +{ + static void sub_80A1434(u16, u8); + static void sub_80A1470(u16); + + if ((timer & 0x07) == 0) + { + sub_80A1434(timer >> 3, 0); + sub_80A1470(timer >> 3); + } + if ((timer & 0x07) == 1) + sub_80A1434(timer >> 3, 1); + if ((timer & 0x07) == 2) + sub_80A1434(timer >> 3, 2); + if ((timer & 0x07) == 3) + sub_80A1434(timer >> 3, 3); + if ((timer & 0x07) == 4) + sub_80A1434(timer >> 3, 4); + if ((timer & 0x07) == 5) + sub_80A1434(timer >> 3, 5); + if ((timer & 0x07) == 6) + sub_80A1434(timer >> 3, 6); + if ((timer & 0x07) == 7) + sub_80A1434(timer >> 3, 7); +} + +static void sub_80A10B8(u16 timer) +{ + static void sub_80A1520(u16); + + if ((timer & 7) == 0) + sub_80A1520(timer >> 3); +} + +static void sub_80A10D0(u16 timer) +{ + static void sub_80A1598(u16); + + if ((timer & 15) == 0) + sub_80A1598(timer >> 4); +} + +static void sub_80A10E8(u16 timer) +{ + static void sub_80A1394(u16, u8); + + if ((timer & 0x07) == 0) + sub_80A1394(timer >> 3, 0); + if ((timer & 0x07) == 1) + sub_80A1394(timer >> 3, 1); + if ((timer & 0x07) == 2) + sub_80A1394(timer >> 3, 2); + if ((timer & 0x07) == 3) + sub_80A1394(timer >> 3, 3); + if ((timer & 0x07) == 4) + sub_80A1394(timer >> 3, 4); + if ((timer & 0x07) == 5) + sub_80A1394(timer >> 3, 5); + if ((timer & 0x07) == 6) + sub_80A1394(timer >> 3, 6); + if ((timer & 0x07) == 7) + sub_80A1394(timer >> 3, 7); +} + +static void sub_80A115C(u16 timer) +{ + static void sub_80A12D4(u8); + static void sub_80A1498(u16); + + if ((timer & 0x0F) == 0) + sub_80A12D4(timer >> 4); + if ((timer & 0x0F) == 1) + sub_80A1498(timer >> 4); +} + +static void sub_80A1188(u16 timer) +{ + static void sub_80A14C0(u16, u8); + + if ((timer & 0x07) == 0) + sub_80A14C0(timer >> 3, 0); + if ((timer & 0x07) == 1) + sub_80A14C0(timer >> 3, 1); + if ((timer & 0x07) == 2) + sub_80A14C0(timer >> 3, 2); + if ((timer & 0x07) == 3) + sub_80A14C0(timer >> 3, 3); + if ((timer & 0x07) == 4) + sub_80A14C0(timer >> 3, 4); + if ((timer & 0x07) == 5) + sub_80A14C0(timer >> 3, 5); + if ((timer & 0x07) == 6) + sub_80A14C0(timer >> 3, 6); + if ((timer & 0x07) == 7) + sub_80A14C0(timer >> 3, 7); +} + +static void sub_80A11FC(u16 timer) +{ + static void sub_80A131C(u8); + static void sub_80A136C(u8); + + if ((timer & 0x0F) == 0) + sub_80A131C(timer >> 4); + if ((timer & 0x0F) == 1) + sub_80A136C(timer >> 4); +} + +static void sub_80A122C(u16 timer) +{ + static void sub_80A1798(u16); + + if ((timer & 0x0F) == 0) + sub_80A1798(timer >> 4); +} + +static void sub_80A1244(u16 timer) +{ + static void sub_80A1344(u8); + + if ((timer & 0x0F) == 0) + sub_80A1344(timer >> 4); +} + +static void sub_80A1260(u16 timer) +{ + static void sub_80A14F8(u16); + + if ((timer & 0x0F) == 1) + sub_80A14F8(timer >> 4); +} + +static void sub_80A127C(u16 timer) +{ + static void sub_80A1548(u16); + + if ((timer & 0x07) == 0) + sub_80A1548(timer >> 3); +} + +static void sub_80A1294(u16 timer) +{ + static void sub_80A1570(u16); + + if ((timer & 0x07) == 0) + sub_80A1570(timer >> 3); +} + +static void sub_80A12AC(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08513684[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140); +} + +static void sub_80A12D4(u8 timer) +{ + u8 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6400), 0x80); + + idx = (timer + 2) % 4; + sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6480), 0x80); +} + +static void sub_80A131C(u8 timer) +{ + u8 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_085143E4[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0); +} + +static void sub_80A1344(u8 timer) +{ + u8 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_085145F4[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80); +} + +static void sub_80A136C(u8 timer) +{ + u8 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_08514E04[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100); +} + +static void sub_80A1394(u16 timer_div, u8 timer_mod) +{ + timer_div -= timer_mod; + if (timer_div < 12) // almost certainly a typo + { + timer_div %= 12; + sub_80A0980(gUnknown_08515384[timer_div], gUnknown_08515344[timer_mod], 0x80); + sub_80A0980(gUnknown_085153B4[timer_div], gUnknown_08515364[timer_mod], 0x80); + } + else + { + timer_div %= 4; + sub_80A0980(gUnknown_085153E4[timer_div], gUnknown_08515344[timer_mod], 0x80); + sub_80A0980(gUnknown_085153F4[timer_div], gUnknown_08515364[timer_mod], 0x80); + } +} + +static void sub_80A1434(u16 timer_div, u8 timer_mod) +{ + timer_div -= timer_mod; + timer_div %= 8; + if (gUnknown_08515824[timer_div]) + sub_80A0980(gUnknown_08515824[timer_div], gUnknown_08515804[timer_mod], 0x80); +} + +static void sub_80A1470(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08515964[idx], (u16 *)(BG_VRAM + 0x7800), 0x80); +} + +static void sub_80A1498(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x5400), 0x80); +} + +static void sub_80A14C0(u16 timer_div, u8 timer_mod) +{ + timer_div -= timer_mod; + timer_div %= 8; + + sub_80A0980(gUnknown_085161DC[timer_div], gUnknown_085161BC[timer_mod], 0x80); +} + +static void sub_80A14F8(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x7400), 0x80); +} + +static void sub_80A1520(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_085164FC[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0); +} + +static void sub_80A1548(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_0851680C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); +} + +static void sub_80A1570(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08516B1C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); +} + +static void sub_80A1598(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08516D2C[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80); +} + +static void sub_80A15C0(u16 timer) +{ + static void sub_80A1748(u16); + + if ((timer & 1) == 0) + sub_80A1748(timer >> 1); +} + +static void sub_80A15D8(u16 timer) +{ + static void sub_80A16B0(u16); + + if ((timer & 7) == 0) + sub_80A16B0(timer >> 3); +} + +static void sub_80A15F0(u16 timer) +{ + static void sub_80A1720(u16); + static void sub_80A16F8(u16); + + if ((timer & 0x3f) == 1) + sub_80A1720(timer >> 6); + if ((timer & 0x07) == 1) + sub_80A16F8(timer >> 3); +} +static void sub_80A161C(u16 timer) +{ + static void sub_80A1770(u16); + + if ((timer & 3) == 0) + sub_80A1770(timer >> 2); +} + +static void sub_80A1634(u16 timer) +{ + static void sub_80A17C0(u16); + static void sub_80A17EC(u16); + + if ((timer & 7) == 0) + { + sub_80A17C0(timer >> 3); + sub_80A17EC(timer >> 3); + } +} + +static void sub_80A1658(u16 timer) +{ + static void sub_80A1818(u16); + + if ((timer & 3) == 0) + sub_80A1818(timer >> 2); +} + +static void sub_80A1670(u16 timer) +{ + static void sub_80A1884(u16); + + if ((timer & 3) == 0) + sub_80A1884(timer >> 2); +} + +static void sub_80A1688(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08516E3C[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80); +} + +static void sub_80A16B0(u16 timer) +{ + u16 idx; + + idx = timer % 3; + sub_80A0980(gUnknown_08517A44[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180); + sub_80A0980(gUnknown_08517A50[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280); +} + +static void sub_80A16F8(u16 timer) +{ + u16 idx; + + idx = timer % 4; + sub_80A0980(gUnknown_08517BFC[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20); +} + +static void sub_80A1720(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08517C0C[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80); +} + +static void sub_80A1748(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_08518034[idx], (u16 *)(BG_VRAM + 0x5200), 0x200); +} + +static void sub_80A1770(u16 timer) +{ + u16 idx; + + idx = timer % 2; + sub_80A0980(gUnknown_0851829C[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120); +} + +static void sub_80A1798(u16 timer) +{ + u16 idx; + + idx = timer % 8; + sub_80A0980(gUnknown_085202C4[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00); +} + +static void sub_80A17C0(u16 timer) +{ + u16 idx; + + idx = timer % 3; + sub_80A0980(gUnknown_08524864[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100); +} + +static void sub_80A17EC(u16 timer) +{ + u16 idx; + + idx = timer % 3; + sub_80A0980(gUnknown_08524870[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100); +} + +static void sub_80A1818(u16 a1) +{ + CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); + BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); + if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF ) + { + sSecondaryTilesetCB = sub_80A1670; + sSecondaryTilesetCBBufferSize = 0x20; + } +} + +static void sub_80A1884(u16 a1) +{ + CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); + if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF ) + { + BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); + if (!--sSecondaryTilesetCBBufferSize) + sSecondaryTilesetCB = NULL; + } +} diff --git a/sym_bss.txt b/sym_bss.txt index 16f14da516..3416b67df5 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -17,6 +17,7 @@ gUnknown_03000000: @ 3000000 .include "src/field_camera.o" .include "src/script.o" .include "src/scrcmd.o" + .include "src/tileset_anims.o" .include "src/palette.o" .include "src/sound.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 8549f16794..7848dcc7c6 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -747,6 +747,7 @@ gUnknown_02037621: @ 2037621 gUnknown_02037622: @ 2037622 .space 0x2 + .include "src/tileset_anims.o" .include "src/palette.o" .include "src/sound.o" From 74951e4312b782b81324999a580bdf25fe4d31ce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 2 Oct 2017 08:43:52 -0400 Subject: [PATCH 078/182] Name pointer tables --- asm/rom4.s | 2 +- data/tileset.s | 71 ++++++++++---------- src/tileset_anims.c | 160 ++++++++++++++++++++++---------------------- 3 files changed, 116 insertions(+), 117 deletions(-) diff --git a/asm/rom4.s b/asm/rom4.s index 5250659e75..8423d0d9a9 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -3640,7 +3640,7 @@ VBlankCB_Field: @ 8086390 bl sub_80BA0A8 bl FieldUpdateBgTilemapScroll bl TransferPlttBuffer - bl sub_80A09D0 + bl TransferTilesetAnimsBuffer pop {r0} bx r0 thumb_func_end VBlankCB_Field diff --git a/data/tileset.s b/data/tileset.s index 0acb50e910..b8a0ca77f2 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -15,7 +15,7 @@ gUnknown_085106C4:: .space 0x20 -gUnknown_08510764:: @ 8510764 +gTilesetAnims_General0:: @ 8510764 @ replacing .incbin "baserom.gba", 0x00510764, 0x10 .4byte gUnknown_08510644 .4byte gUnknown_085105C4 @@ -47,7 +47,7 @@ gUnknown_085121B4:: .incbin "baserom.gba", 0x5121b4, 0x3c0 -gUnknown_08512574:: @ 8512574 +gTilesetAnims_General1:: @ 8512574 @ replacing .incbin "baserom.gba", 0x00512574, 0x20 .4byte gUnknown_08510774 .4byte gUnknown_08510B34 @@ -80,7 +80,7 @@ gUnknown_08512D14:: .incbin "baserom.gba", 0x512d14, 0x140 -gUnknown_08512E54:: @ 8512E54 +gTilesetAnims_General2:: @ 8512E54 @ replacing .incbin "baserom.gba", 0x00512e54, 0x20 .4byte gUnknown_08512594 .4byte gUnknown_085126D4 @@ -104,7 +104,7 @@ gUnknown_085130B4:: .incbin "baserom.gba", 0x5130b4, 0xc0 -gUnknown_08513174:: @ 8513174 +gTilesetAnims_General3:: @ 8513174 @ replacing .incbin "baserom.gba", 0x00513174, 0x10 .4byte gUnknown_08512E74 .4byte gUnknown_08512F34 @@ -124,7 +124,7 @@ gUnknown_08513544:: .incbin "baserom.gba", 0x513544, 0x140 -gUnknown_08513684:: @ 8513684 +gTilesetAnims_General4:: @ 8513684 @ replacing .incbin "baserom.gba", 0x00513684, 0x10 .4byte gUnknown_08513184 .4byte gUnknown_085132C4 @@ -144,7 +144,7 @@ gUnknown_08513814:: .incbin "baserom.gba", 0x513814, 0x80 -gUnknown_08513894:: @ 8513894 +gTilesetAnims_Lavaridge0:: @ 8513894 @ replacing .incbin "baserom.gba", 0x00513894, 0x10 .4byte gUnknown_08513694 .4byte gUnknown_08513714 @@ -161,7 +161,7 @@ gUnknown_08514024:: .incbin "baserom.gba", 0x514024, 0x3c0 -gUnknown_085143E4:: @ 85143E4 +gTilesetAnims_Pacifidlog0:: @ 85143E4 @ replacing .incbin "baserom.gba", 0x005143e4, 0x10 .4byte gUnknown_085138A4 .4byte gUnknown_08513C64 @@ -181,7 +181,7 @@ gUnknown_08514574:: .incbin "baserom.gba", 0x514574, 0x80 -gUnknown_085145F4:: @ 85145F4 +gTilesetAnims_Underwater0:: @ 85145F4 @ replacing .incbin "baserom.gba", 0x005145f4, 0x10 .4byte gUnknown_085143F4 .4byte gUnknown_08514474 @@ -213,7 +213,7 @@ gUnknown_08514D04:: .incbin "baserom.gba", 0x514d04, 0x100 -gUnknown_08514E04:: @ 8514E04 +gTilesetAnims_Pacifidlog1:: @ 8514E04 @ replacing .incbin "baserom.gba", 0x00514e04, 0x20 .4byte gUnknown_08514604 .4byte gUnknown_08514704 @@ -256,7 +256,7 @@ gUnknown_085152A4:: .space 0x20 -gUnknown_08515344:: @ 8515344 +gTilesetAnims_MauvilleVDests0:: @ 8515344 @ replacing .incbin "baserom.gba", 0x00515344, 0x20 .4byte BG_VRAM + 0x4c00 .4byte BG_VRAM + 0x4c80 @@ -267,7 +267,7 @@ gUnknown_08515344:: @ 8515344 .4byte BG_VRAM + 0x4f00 .4byte BG_VRAM + 0x4f80 -gUnknown_08515364:: @ 8515364 +gTilesetAnims_MauvilleVDests1:: @ 8515364 @ replacing .incbin "baserom.gba", 0x00515364, 0x20 .4byte BG_VRAM + 0x5000 .4byte BG_VRAM + 0x5080 @@ -278,7 +278,7 @@ gUnknown_08515364:: @ 8515364 .4byte BG_VRAM + 0x5300 .4byte BG_VRAM + 0x5380 -gUnknown_08515384:: @ 8515384 +gTilesetAnims_Mauville0a:: @ 8515384 @ replacing .incbin "baserom.gba", 0x00515384, 0x30 .4byte gUnknown_08514E24 .4byte gUnknown_08514E24 @@ -293,7 +293,7 @@ gUnknown_08515384:: @ 8515384 .4byte gUnknown_08514F24 .4byte gUnknown_08514EA4 -gUnknown_085153B4:: @ 85153B4 +gTilesetAnims_Mauville0b:: @ 85153B4 @ replacing .incbin "baserom.gba", 0x005153b4, 0x30 .4byte gUnknown_085150A4 .4byte gUnknown_085150A4 @@ -308,14 +308,14 @@ gUnknown_085153B4:: @ 85153B4 .4byte gUnknown_085151A4 .4byte gUnknown_08515124 -gUnknown_085153E4:: @ 85153E4 +gTilesetAnims_Mauville1a:: @ 85153E4 @ replacing .incbin "baserom.gba", 0x005153e4, 0x10 .4byte gUnknown_08514E24 .4byte gUnknown_08514E24 .4byte gUnknown_08515024 .4byte gUnknown_08515024 -gUnknown_085153F4:: @ 85153F4 +gTilesetAnims_Mauville1b:: @ 85153F4 @ replacing .incbin "baserom.gba", 0x005153f4, 0x10 .4byte gUnknown_085150A4 .4byte gUnknown_085150A4 @@ -347,7 +347,7 @@ gUnknown_08515784:: .incbin "baserom.gba", 0x515784, 0x80 -gUnknown_08515804:: @ 8515804 +gTilesetAnims_RustboroVDests0:: @ 8515804 .4byte BG_VRAM + 0x5000 .4byte BG_VRAM + 0x5080 .4byte BG_VRAM + 0x5100 @@ -357,7 +357,7 @@ gUnknown_08515804:: @ 8515804 .4byte BG_VRAM + 0x5300 .4byte BG_VRAM + 0x5380 -gUnknown_08515824:: @ 8515824 +gTilesetAnims_Rustboro0:: @ 8515824 @ replacing .incbin "baserom.gba", 0x00515824, 0x20 .4byte gUnknown_08515404 .4byte gUnknown_08515484 @@ -377,7 +377,7 @@ gUnknown_085158C4:: .space 0x20 -gUnknown_08515964:: @ 8515964 +gTilesetAnims_Rustboro1:: @ 8515964 @ replacing .incbin "baserom.gba", 0x00515964, 0x8 .4byte gUnknown_08515844 .4byte gUnknown_085158C4 @@ -409,7 +409,7 @@ gUnknown_08515CEC:: .space 0x20 -gUnknown_08515D8C:: @ 8515D8C +gTilesetAnims_Lavaridge1_Cave0:: @ 8515D8C @ replacing .incbin "baserom.gba", 0x00515d8c, 0x10 .4byte gUnknown_0851596C .4byte gUnknown_085159EC @@ -443,7 +443,7 @@ gUnknown_0851611C:: .space 0x20 -gUnknown_085161BC:: @ 85161BC +gTilesetAnims_EverGrandeVDests0:: @ 85161BC @ replacing .incbin "baserom.gba", 0x005161bc, 0x20 .4byte BG_VRAM + 0x5c00 .4byte BG_VRAM + 0x5c80 @@ -454,7 +454,7 @@ gUnknown_085161BC:: @ 85161BC .4byte BG_VRAM + 0x5f00 .4byte BG_VRAM + 0x5f80 -gUnknown_085161DC:: @ 85161DC +gTilesetAnims_EverGrande0:: @ 85161DC @ replacing .incbin "baserom.gba", 0x005161dc, 0x20 .4byte gUnknown_08515D9C .4byte gUnknown_08515E1C @@ -478,7 +478,7 @@ gUnknown_0851643C:: .incbin "baserom.gba", 0x51643c, 0xc0 -gUnknown_085164FC:: @ 85164FC +gTilesetAnims_Dewford0:: @ 85164FC @ replacing .incbin "baserom.gba", 0x005164fc, 0x10 .4byte gUnknown_085161FC .4byte gUnknown_085162BC @@ -498,7 +498,7 @@ gUnknown_0851674C:: .incbin "baserom.gba", 0x51674c, 0xc0 -gUnknown_0851680C:: @ 851680C +gTilesetAnims_BattleFrontierOutsideWest0:: @ 851680C @ replacing .incbin "baserom.gba", 0x0051680c, 0x10 .4byte gUnknown_0851650C .4byte gUnknown_085165CC @@ -518,7 +518,7 @@ gUnknown_08516A5C:: .incbin "baserom.gba", 0x516a5c, 0xc0 -gUnknown_08516B1C:: @ 8516B1C +gTilesetAnims_BattleFrontierOutsideEast0:: @ 8516B1C @ replacing .incbin "baserom.gba", 0x00516b1c, 0x10 .4byte gUnknown_0851681C .4byte gUnknown_085168DC @@ -538,7 +538,7 @@ gUnknown_08516CAC:: .incbin "baserom.gba", 0x516cac, 0x80 -gUnknown_08516D2C:: @ 8516D2C +gTilesetAnims_Slateport0:: @ 8516D2C @ replacing .incbin "baserom.gba", 0x00516d2c, 0x10 .4byte gUnknown_08516B2C .4byte gUnknown_08516BAC @@ -552,7 +552,7 @@ gUnknown_08516DBC:: .incbin "baserom.gba", 0x516dbc, 0x80 -gUnknown_08516E3C:: @ 8516E3C +gTilesetAnims_InsideBuilding0:: @ 8516E3C @ replacing .incbin "baserom.gba", 0x00516e3c, 0x8 .4byte gUnknown_08516D3C .4byte gUnknown_08516DBC @@ -576,13 +576,13 @@ gUnknown_085177C4:: .incbin "baserom.gba", 0x5177c4, 0x280 -gUnknown_08517A44:: @ 8517A44 +gTilesetAnims_SootopolisGym0:: @ 8517A44 @ replacing .incbin "baserom.gba", 0x00517a44, 0xc .4byte gUnknown_08516E44 .4byte gUnknown_08516FC4 .4byte gUnknown_08517144 -gUnknown_08517A50:: @ 8517A50 +gTilesetAnims_SootopolisGym1:: @ 8517A50 @ replacing .incbin "baserom.gba", 0x00517a50, 0xc .4byte gUnknown_085172C4 .4byte gUnknown_08517544 @@ -609,14 +609,14 @@ gUnknown_08517BBC:: .space 0x20 -gUnknown_08517BFC:: @ 8517BFC +gTilesetAnims_EliteFour1:: @ 8517BFC @ replacing .incbin "baserom.gba", 0x00517bfc, 0x10 .4byte gUnknown_08517B5C .4byte gUnknown_08517B7C .4byte gUnknown_08517B9C .4byte gUnknown_08517BBC -gUnknown_08517C0C:: @ 8517C0C +gTilesetAnims_EliteFour0:: @ 8517C0C @ replacing .incbin "baserom.gba", 0x00517c0c, 0x8 .4byte gUnknown_08517A5C .4byte gUnknown_08517ADC @@ -630,7 +630,7 @@ gUnknown_08517E14:: .space 0x20 -gUnknown_08518034:: @ 8518034 +gTilesetAnims_MauvilleGym0:: @ 8518034 @ replacing .incbin "baserom.gba", 0x00518034, 0x8 .4byte gUnknown_08517C14 .4byte gUnknown_08517E14 @@ -643,7 +643,7 @@ gUnknown_0851815C:: .space 0x20 -gUnknown_0851829C:: @ 851829C +gTilesetAnims_BikeShop0:: @ 851829C @ replacing .incbin "baserom.gba", 0x0051829c, 0x8 .4byte gUnknown_0851803C .4byte gUnknown_0851815C @@ -686,7 +686,7 @@ gUnknown_0851F2C4:: gUnknown_0851FAC4:: .incbin "baserom.gba", 0x51fac4, 0x800 -gUnknown_085202C4:: @ 85202C4 +gTilesetAnims_Sootopolis0:: @ 85202C4 @ replacing .incbin "baserom.gba", 0x005202c4, 0x20 .4byte gUnknown_085182A4 .4byte gUnknown_08518EA4 @@ -727,14 +727,13 @@ gUnknown_08524604:: gUnknown_08524804:: .incbin "baserom.gba", 0x524804, 0x60 - -gUnknown_08524864:: @ 8524864 +gTilesetAnims_BattlePyramid0:: @ 8524864 @ replacing .incbin "baserom.gba", 0x00524864, 0xc .4byte gUnknown_085202E4 .4byte gUnknown_085203E4 .4byte gUnknown_085204E4 -gUnknown_08524870:: @ 8524870 +gTilesetAnims_BattlePyramid1:: @ 8524870 @ replacing .incbin "baserom.gba", 0x00524870, 0xc .4byte gUnknown_08520604 .4byte gUnknown_08520704 diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 5eb470a07f..b7f18d869e 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -31,48 +31,48 @@ static void cur_mapheader_run_tileset2_func(void); // .rodata -extern const u16 *const gUnknown_08510764[]; -extern const u16 *const gUnknown_08512574[]; -extern const u16 *const gUnknown_08512E54[]; -extern const u16 *const gUnknown_08513174[]; -extern const u16 *const gUnknown_08513684[]; -extern const u16 *const gUnknown_08513894[]; -extern const u16 *const gUnknown_085143E4[]; -extern const u16 *const gUnknown_085145F4[]; -extern const u16 *const gUnknown_08514E04[]; -extern u16 *const gUnknown_08515344[]; -extern u16 *const gUnknown_08515364[]; -extern const u16 *const gUnknown_08515384[]; -extern const u16 *const gUnknown_085153B4[]; -extern const u16 *const gUnknown_085153E4[]; -extern const u16 *const gUnknown_085153F4[]; -extern u16 *const gUnknown_08515804[]; -extern const u16 *const gUnknown_08515824[]; -extern const u16 *const gUnknown_08515964[]; -extern const u16 *const gUnknown_08515D8C[]; -extern u16 *const gUnknown_085161BC[]; -extern const u16 *const gUnknown_085161DC[]; -extern const u16 *const gUnknown_085164FC[]; -extern const u16 *const gUnknown_0851680C[]; -extern const u16 *const gUnknown_08516B1C[]; -extern const u16 *const gUnknown_08516D2C[]; -extern const u16 *const gUnknown_08516E3C[]; -extern const u16 *const gUnknown_08517A44[]; -extern const u16 *const gUnknown_08517A50[]; -extern const u16 *const gUnknown_08517BFC[]; -extern const u16 *const gUnknown_08517C0C[]; -extern const u16 *const gUnknown_08518034[]; -extern const u16 *const gUnknown_0851829C[]; -extern const u16 *const gUnknown_085202C4[]; -extern const u16 *const gUnknown_08524864[]; -extern const u16 *const gUnknown_08524870[]; +extern const u16 *const gTilesetAnims_General0[]; +extern const u16 *const gTilesetAnims_General1[]; +extern const u16 *const gTilesetAnims_General2[]; +extern const u16 *const gTilesetAnims_General3[]; +extern const u16 *const gTilesetAnims_General4[]; +extern const u16 *const gTilesetAnims_Lavaridge0[]; +extern const u16 *const gTilesetAnims_Pacifidlog0[]; +extern const u16 *const gTilesetAnims_Underwater0[]; +extern const u16 *const gTilesetAnims_Pacifidlog1[]; +extern u16 *const gTilesetAnims_MauvilleVDests0[]; +extern u16 *const gTilesetAnims_MauvilleVDests1[]; +extern const u16 *const gTilesetAnims_Mauville0a[]; +extern const u16 *const gTilesetAnims_Mauville0b[]; +extern const u16 *const gTilesetAnims_Mauville1a[]; +extern const u16 *const gTilesetAnims_Mauville1b[]; +extern u16 *const gTilesetAnims_RustboroVDests0[]; +extern const u16 *const gTilesetAnims_Rustboro0[]; +extern const u16 *const gTilesetAnims_Rustboro1[]; +extern const u16 *const gTilesetAnims_Lavaridge1_Cave0[]; +extern u16 *const gTilesetAnims_EverGrandeVDests0[]; +extern const u16 *const gTilesetAnims_EverGrande0[]; +extern const u16 *const gTilesetAnims_Dewford0[]; +extern const u16 *const gTilesetAnims_BattleFrontierOutsideWest0[]; +extern const u16 *const gTilesetAnims_BattleFrontierOutsideEast0[]; +extern const u16 *const gTilesetAnims_Slateport0[]; +extern const u16 *const gTilesetAnims_InsideBuilding0[]; +extern const u16 *const gTilesetAnims_SootopolisGym0[]; +extern const u16 *const gTilesetAnims_SootopolisGym1[]; +extern const u16 *const gTilesetAnims_EliteFour1[]; +extern const u16 *const gTilesetAnims_EliteFour0[]; +extern const u16 *const gTilesetAnims_MauvilleGym0[]; +extern const u16 *const gTilesetAnims_BikeShop0[]; +extern const u16 *const gTilesetAnims_Sootopolis0[]; +extern const u16 *const gTilesetAnims_BattlePyramid0[]; +extern const u16 *const gTilesetAnims_BattlePyramid1[]; extern const u16 gUnknown_08D85640[]; extern const u16 gUnknown_08D85660[]; extern const u16 gUnknown_08D85680[]; extern const u16 gUnknown_08D856A0[]; -static const u16 *const gUnknown_0852487C[] = { +static const u16 *const gTilesetAnims_BattleDomePals0[] = { gUnknown_08D85640, gUnknown_08D85660, gUnknown_08D85680, @@ -81,24 +81,24 @@ static const u16 *const gUnknown_0852487C[] = { // .text -static void sub_80A0954(void) +static void ResetTilesetAnimBuffer(void) { sTilesetDMA3TransferBufferSize = 0; CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer); } -static void sub_80A0980(const u16 *a0, u16 *a1, u16 a2) +static void AppendTilesetAnimToBuffer(const u16 *src, u16 *dest, u16 size) { if (sTilesetDMA3TransferBufferSize < 20) { - sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = a0; - sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = a1; - sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = a2; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = src; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = dest; + sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = size; sTilesetDMA3TransferBufferSize ++; } } -void sub_80A09D0(void) +void TransferTilesetAnimsBuffer(void) { int i; @@ -111,7 +111,7 @@ void sub_80A09D0(void) void cur_mapheader_run_tileset_funcs_after_some_cpuset(void) { - sub_80A0954(); + ResetTilesetAnimBuffer(); cur_mapheader_run_tileset1_func(); cur_mapheader_run_tileset2_func(); } @@ -123,7 +123,7 @@ void sub_80A0A2C(void) void sub_80A0A38(void) { - sub_80A0954(); + ResetTilesetAnimBuffer(); if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize) sPrimaryTilesetCBCounter = 0; if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize) @@ -203,7 +203,7 @@ static void sub_80A0BCC(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08510764[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80); } static void sub_80A0BF4(u16 timer) @@ -211,7 +211,7 @@ static void sub_80A0BF4(u16 timer) u8 idx; idx = timer % 8; - sub_80A0980(gUnknown_08512574[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0); + AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0); } static void sub_80A0C1C(u16 timer) @@ -219,7 +219,7 @@ static void sub_80A0C1C(u16 timer) u16 idx; idx = timer % 8; - sub_80A0980(gUnknown_08512E54[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140); + AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140); } static void sub_80A0C44(u16 timer) @@ -227,7 +227,7 @@ static void sub_80A0C44(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08513174[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0); + AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0); } void TilesetCb_Petalburg(void) @@ -580,7 +580,7 @@ static void sub_80A12AC(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08513684[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140); + AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140); } static void sub_80A12D4(u8 timer) @@ -588,10 +588,10 @@ static void sub_80A12D4(u8 timer) u8 idx; idx = timer % 4; - sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6400), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6400), 0x80); idx = (timer + 2) % 4; - sub_80A0980(gUnknown_08513894[idx], (u16 *)(BG_VRAM + 0x6480), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6480), 0x80); } static void sub_80A131C(u8 timer) @@ -599,7 +599,7 @@ static void sub_80A131C(u8 timer) u8 idx; idx = timer % 4; - sub_80A0980(gUnknown_085143E4[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0); + AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0); } static void sub_80A1344(u8 timer) @@ -607,7 +607,7 @@ static void sub_80A1344(u8 timer) u8 idx; idx = timer % 4; - sub_80A0980(gUnknown_085145F4[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80); } static void sub_80A136C(u8 timer) @@ -615,7 +615,7 @@ static void sub_80A136C(u8 timer) u8 idx; idx = timer % 8; - sub_80A0980(gUnknown_08514E04[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100); + AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100); } static void sub_80A1394(u16 timer_div, u8 timer_mod) @@ -624,14 +624,14 @@ static void sub_80A1394(u16 timer_div, u8 timer_mod) if (timer_div < 12) // almost certainly a typo { timer_div %= 12; - sub_80A0980(gUnknown_08515384[timer_div], gUnknown_08515344[timer_mod], 0x80); - sub_80A0980(gUnknown_085153B4[timer_div], gUnknown_08515364[timer_mod], 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80); } else { timer_div %= 4; - sub_80A0980(gUnknown_085153E4[timer_div], gUnknown_08515344[timer_mod], 0x80); - sub_80A0980(gUnknown_085153F4[timer_div], gUnknown_08515364[timer_mod], 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80); } } @@ -639,8 +639,8 @@ static void sub_80A1434(u16 timer_div, u8 timer_mod) { timer_div -= timer_mod; timer_div %= 8; - if (gUnknown_08515824[timer_div]) - sub_80A0980(gUnknown_08515824[timer_div], gUnknown_08515804[timer_mod], 0x80); + if (gTilesetAnims_Rustboro0[timer_div]) + AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro0[timer_div], gTilesetAnims_RustboroVDests0[timer_mod], 0x80); } static void sub_80A1470(u16 timer) @@ -648,7 +648,7 @@ static void sub_80A1470(u16 timer) u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08515964[idx], (u16 *)(BG_VRAM + 0x7800), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + 0x7800), 0x80); } static void sub_80A1498(u16 timer) @@ -656,7 +656,7 @@ static void sub_80A1498(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x5400), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x5400), 0x80); } static void sub_80A14C0(u16 timer_div, u8 timer_mod) @@ -664,7 +664,7 @@ static void sub_80A14C0(u16 timer_div, u8 timer_mod) timer_div -= timer_mod; timer_div %= 8; - sub_80A0980(gUnknown_085161DC[timer_div], gUnknown_085161BC[timer_mod], 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_EverGrande0[timer_div], gTilesetAnims_EverGrandeVDests0[timer_mod], 0x80); } static void sub_80A14F8(u16 timer) @@ -672,7 +672,7 @@ static void sub_80A14F8(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08515D8C[idx], (u16 *)(BG_VRAM + 0x7400), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x7400), 0x80); } static void sub_80A1520(u16 timer) @@ -680,7 +680,7 @@ static void sub_80A1520(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_085164FC[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0); + AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0); } static void sub_80A1548(u16 timer) @@ -688,7 +688,7 @@ static void sub_80A1548(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_0851680C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); + AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); } static void sub_80A1570(u16 timer) @@ -696,7 +696,7 @@ static void sub_80A1570(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08516B1C[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); + AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0); } static void sub_80A1598(u16 timer) @@ -704,7 +704,7 @@ static void sub_80A1598(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08516D2C[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80); } static void sub_80A15C0(u16 timer) @@ -774,7 +774,7 @@ static void sub_80A1688(u16 timer) u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08516E3C[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80); } static void sub_80A16B0(u16 timer) @@ -782,8 +782,8 @@ static void sub_80A16B0(u16 timer) u16 idx; idx = timer % 3; - sub_80A0980(gUnknown_08517A44[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180); - sub_80A0980(gUnknown_08517A50[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280); + AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180); + AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280); } static void sub_80A16F8(u16 timer) @@ -791,7 +791,7 @@ static void sub_80A16F8(u16 timer) u16 idx; idx = timer % 4; - sub_80A0980(gUnknown_08517BFC[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20); + AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20); } static void sub_80A1720(u16 timer) @@ -799,7 +799,7 @@ static void sub_80A1720(u16 timer) u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08517C0C[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80); + AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80); } static void sub_80A1748(u16 timer) @@ -807,7 +807,7 @@ static void sub_80A1748(u16 timer) u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_08518034[idx], (u16 *)(BG_VRAM + 0x5200), 0x200); + AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + 0x5200), 0x200); } static void sub_80A1770(u16 timer) @@ -815,7 +815,7 @@ static void sub_80A1770(u16 timer) u16 idx; idx = timer % 2; - sub_80A0980(gUnknown_0851829C[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120); + AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120); } static void sub_80A1798(u16 timer) @@ -823,7 +823,7 @@ static void sub_80A1798(u16 timer) u16 idx; idx = timer % 8; - sub_80A0980(gUnknown_085202C4[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00); + AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00); } static void sub_80A17C0(u16 timer) @@ -831,7 +831,7 @@ static void sub_80A17C0(u16 timer) u16 idx; idx = timer % 3; - sub_80A0980(gUnknown_08524864[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100); + AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100); } static void sub_80A17EC(u16 timer) @@ -839,12 +839,12 @@ static void sub_80A17EC(u16 timer) u16 idx; idx = timer % 3; - sub_80A0980(gUnknown_08524870[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100); + AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100); } static void sub_80A1818(u16 a1) { - CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF ) { @@ -855,7 +855,7 @@ static void sub_80A1818(u16 a1) static void sub_80A1884(u16 a1) { - CpuCopy16(gUnknown_0852487C[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); + CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32); if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF ) { BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); From db58d5e24a89d9c411231a74ce01daed7a303d67 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 2 Oct 2017 23:32:39 +0200 Subject: [PATCH 079/182] battle2 3500 C lines --- asm/battle_2.s | 4082 +------------------------------ asm/battle_controller_player.s | 82 +- asm/battle_controller_safari.s | 12 +- asm/battle_controller_wally.s | 2 +- asm/battle_link_817C95C.s | 6 +- asm/battle_message.s | 2 +- asm/reshow_battle_screen.s | 2 +- asm/rom3.s | 50 +- include/battle.h | 42 +- include/battle_controllers.h | 6 +- include/pokemon.h | 2 + include/recorded_battle.h | 1 + include/sprite.h | 16 +- src/battle_2.c | 1372 ++++++++++- src/battle_3.c | 7 +- src/battle_ai_script_commands.c | 6 +- src/battle_script_commands.c | 12 +- src/pokemon_3.c | 2 - sym_ewram.txt | 6 +- 19 files changed, 1545 insertions(+), 4165 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index a4fa43fa22..2ff446dd05 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4,4019 +4,7 @@ .syntax unified .text - - - - thumb_func_start sub_8039B58 -sub_8039B58: @ 8039B58 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08039BA0 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08039B80 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _08039B94 -_08039B80: - ldrh r0, [r4, 0x32] - bl HasTwoFramesAnimation - lsls r0, 24 - cmp r0, 0 - beq _08039B94 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_08039B94: - ldrh r1, [r4, 0x32] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x1 - bl BattleAnimateFrontSprite -_08039BA0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039B58 - - thumb_func_start sub_8039BB4 -sub_8039BB4: @ 8039BB4 - ldr r1, =oac_poke_ally_ - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039BB4 - - thumb_func_start oac_poke_ally_ -oac_poke_ally_: @ 8039BC0 - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_020243FC - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08039BE4 - ldrh r0, [r2, 0x24] - subs r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _08039BE4 - ldr r0, =nullsub_19 - str r0, [r2, 0x1C] - strh r1, [r2, 0x30] -_08039BE4: - pop {r0} - bx r0 - .pool - thumb_func_end oac_poke_ally_ - - thumb_func_start sub_8039BF0 -sub_8039BF0: @ 8039BF0 - ldr r1, =nullsub_19 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039BF0 - - thumb_func_start nullsub_19 -nullsub_19: @ 8039BFC - bx lr - thumb_func_end nullsub_19 - - thumb_func_start sub_8039C00 -sub_8039C00: @ 8039C00 - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_020243FC - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08039C20 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] -_08039C20: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039C00 - - thumb_func_start dp11b_obj_instanciate -dp11b_obj_instanciate: @ 8039C28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - cmp r1, 0 - beq _08039C64 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - b _08039C76 - .pool -_08039C64: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 -_08039C76: - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - bne _08039D2C - ldr r0, =objc_dp11b_pingpong - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - cmp r0, 0x1 - bne _08039CD0 - ldr r0, =gHealthBoxesIds - adds r0, r4, r0 - ldrb r7, [r0] - ldr r2, =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r6, r4 - lsls r1, 2 - adds r0, r1, r0 - strb r5, [r0, 0x2] - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r2, =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0x80 - b _08039CFE - .pool -_08039CD0: - ldr r0, =gBankSpriteIds - adds r0, r4, r0 - ldrb r7, [r0] - ldr r2, =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r6, r4 - lsls r1, 2 - adds r0, r1, r0 - strb r5, [r0, 0x3] - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r2, =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0xC0 -_08039CFE: - strh r1, [r0, 0x2E] - adds r4, r2, 0 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r4 - mov r2, r9 - lsls r0, r2, 24 - asrs r0, 24 - movs r2, 0 - strh r0, [r1, 0x30] - mov r3, r10 - lsls r0, r3, 24 - asrs r0, 24 - strh r0, [r1, 0x32] - strh r7, [r1, 0x34] - mov r0, r8 - strh r0, [r1, 0x36] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - strh r2, [r0, 0x26] -_08039D2C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end dp11b_obj_instanciate - - thumb_func_start dp11b_obj_free -dp11b_obj_free: @ 8039D48 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - bne _08039D9C - ldr r6, =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r5, r0, 2 - adds r3, r5, r1 - ldrb r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08039DEA - ldr r2, =gSprites - ldrb r1, [r3, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r5, r1 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - b _08039DD6 - .pool -_08039D9C: - ldr r6, =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r5, r0, 2 - adds r3, r5, r1 - ldrb r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08039DEA - ldr r2, =gSprites - ldrb r1, [r3, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r5, r1 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 -_08039DD6: - ands r0, r2 - strb r0, [r1] - ldr r0, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x24] - strh r0, [r1, 0x26] -_08039DEA: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end dp11b_obj_free - - thumb_func_start objc_dp11b_pingpong -objc_dp11b_pingpong: @ 8039DF8 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08039E10 - movs r2, 0x2E - ldrsh r0, [r4, r2] - b _08039E14 -_08039E10: - movs r1, 0x2E - ldrsh r0, [r4, r1] -_08039E14: - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - ldr r2, =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end objc_dp11b_pingpong - - thumb_func_start sub_8039E44 -sub_8039E44: @ 8039E44 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08039E5C - ldrh r1, [r2, 0x32] - adds r0, r2, 0 - bl BattleAnimateBackSprite -_08039E5C: - pop {r0} - bx r0 - thumb_func_end sub_8039E44 - - thumb_func_start sub_8039E60 -sub_8039E60: @ 8039E60 - push {r4,lr} - adds r4, r0, 0 - bl sub_8039E9C - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08039E7A - ldr r0, =nullsub_19 - str r0, [r4, 0x1C] -_08039E7A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039E60 - - thumb_func_start sub_8039E84 -sub_8039E84: @ 8039E84 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, =sub_8039E60 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039E84 - - thumb_func_start sub_8039E9C -sub_8039E9C: @ 8039E9C - push {lr} - adds r2, r0, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r0, 0x3F - ands r0, r1 - cmp r0, 0 - bne _08039EBE - ldr r1, =gUnknown_0831ACE0 - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - adds r0, 0x28 - strb r1, [r0] -_08039EBE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039E9C - - thumb_func_start nullsub_20 -nullsub_20: @ 8039EC8 - bx lr - thumb_func_end nullsub_20 - - thumb_func_start sub_8039ECC -sub_8039ECC: @ 8039ECC - push {lr} - bl sub_8039F40 - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x1] - ldr r1, =gBattleMainFunc - ldr r0, =bc_8012FAC - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039ECC - - thumb_func_start BattleMainCB1 -BattleMainCB1: @ 8039EF0 - push {r4,r5,lr} - ldr r0, =gBattleMainFunc - ldr r0, [r0] - bl _call_via_r0 - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _08039F2A - ldr r5, =gBattleBankFunc - adds r4, r1, 0 -_08039F0C: - ldrb r0, [r4] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - bl _call_via_r0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08039F0C -_08039F2A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end BattleMainCB1 - - thumb_func_start sub_8039F40 -sub_8039F40: @ 8039F40 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - bl sub_803D580 - bl sub_803D6A0 - movs r2, 0 - movs r3, 0 - ldr r0, =gUnknown_02024260 - mov r10, r0 - ldr r1, =gUnknown_02024258 - mov r9, r1 - ldr r0, =gUnknown_02024250 - mov r8, r0 - ldr r1, =gLastUsedMovesByBanks - mov r12, r1 - ldr r5, =gDisableStructs - movs r4, 0 - ldr r7, =gUnknownMovesUsedByBanks - ldr r6, =gLockedMoves -_08039F70: - ldr r0, =gStatuses3 - adds r0, r4, r0 - str r3, [r0] - movs r1, 0 -_08039F78: - adds r0, r5, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0x1B - bls _08039F78 - movs r0, 0x2 - strb r0, [r5, 0x16] - ldr r1, =gUnknown_02024284 - adds r0, r2, r1 - strb r3, [r0] - mov r0, r12 - strh r3, [r0] - mov r1, r8 - strh r3, [r1] - mov r0, r9 - strh r3, [r0] - mov r1, r10 - strh r3, [r1] - ldr r0, =gUnknown_02024270 - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - strh r3, [r6] - strh r3, [r7] - ldr r1, =gBattleResources - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r0, r4 - str r3, [r0] - ldr r1, =gUnknown_02024230 - adds r0, r4, r1 - str r3, [r0] - movs r0, 0x2 - add r10, r0 - add r9, r0 - add r8, r0 - add r12, r0 - adds r5, 0x1C - adds r4, 0x4 - adds r7, 0x2 - adds r6, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _08039F70 - movs r5, 0 - ldr r3, =gSideTimers - ldr r4, =gSideAffecting - movs r2, 0x1 -_08039FD8: - strh r5, [r4] - movs r1, 0 -_08039FDC: - adds r0, r3, r1 - strb r5, [r0] - adds r1, 0x1 - cmp r1, 0xB - bls _08039FDC - adds r3, 0xC - adds r4, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08039FD8 - movs r1, 0 - ldr r2, =gBankAttacker - strb r1, [r2] - ldr r0, =gBankTarget - strb r1, [r0] - ldr r2, =gBattleWeather - strh r1, [r2] - ldr r1, =gWishFutureKnock - movs r2, 0 - movs r3, 0 -_0803A004: - adds r0, r1, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x2B - bls _0803A004 - ldr r2, =gHitMarker - movs r0, 0 - str r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _0803A090 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - bne _0803A0AE - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x15] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803A0AE - movs r0, 0x80 - b _0803A0AC - .pool -_0803A090: - ldr r0, =0x02000002 - ands r1, r0 - cmp r1, 0 - bne _0803A0AE - bl sub_8185FB8 - lsls r0, 24 - cmp r0, 0 - beq _0803A0AE - ldr r1, =gHitMarker - ldr r0, [r1] - movs r1, 0x80 - orrs r0, r1 - ldr r2, =gHitMarker -_0803A0AC: - str r0, [r2] -_0803A0AE: - ldr r3, =gBattleScripting - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x15] - lsls r0, 30 - lsrs r0, 31 - movs r1, 0 - strb r0, [r3, 0x1D] - ldr r0, =gMultiHitCounter - strb r1, [r0] - ldr r0, =gBattleOutcome - strb r1, [r0] - ldr r0, =gBattleExecBuffer - str r1, [r0] - ldr r0, =gPaydayMoney - movs r2, 0 - strh r1, [r0] - ldr r1, =gBattleResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r2, [r0] - ldr r0, [r1] - ldr r0, [r0, 0xC] - adds r0, 0x20 - strb r2, [r0] - ldr r5, =gPauseCounterBattle - ldr r6, =gBattleMoveDamage - ldr r7, =gUnknown_020243FC - ldr r0, =gLeveledUpInBattle - mov r8, r0 - ldr r1, =gAbsentBankFlags - mov r9, r1 - ldr r2, =gEnemyParty - mov r10, r2 - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0803A0FA: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803A0FA - movs r4, 0 - strh r4, [r5] - movs r0, 0 - str r0, [r6] - strh r0, [r7] - strb r4, [r3, 0x18] - strb r4, [r3, 0x19] - mov r0, r8 - strb r4, [r0] - mov r1, r9 - strb r4, [r1] - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, 0x6C - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x79 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7A - strb r4, [r0] - mov r0, r10 - movs r1, 0xB - bl GetMonData - ldr r6, [r5] - adds r6, 0x7C - ldr r2, =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, =0x000004fb - bl __divsi3 - strb r0, [r6] - ldr r0, [r5] - adds r0, 0x7B - movs r1, 0x3 - strb r1, [r0] - ldr r0, [r5] - strb r4, [r0, 0x12] - ldr r0, [r5] - adds r0, 0x4A - movs r1, 0x1 - strb r1, [r0] - movs r2, 0 - movs r1, 0 - adds r6, r5, 0 -_0803A16A: - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0x98 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xB8 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xC8 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xD0 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xE0 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xE8 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xF0 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xF8 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _0803A16A - movs r2, 0 - ldr r4, =gBattleStruct - movs r3, 0xA5 - lsls r3, 2 - movs r1, 0x6 -_0803A1BA: - ldr r0, [r4] - adds r0, r2, r0 - adds r0, r3 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0803A1BA - ldr r0, [r6] - adds r0, 0xDF - movs r1, 0 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x92 - strb r1, [r0] - bl Random - ldr r1, =gUnknown_02024330 - strh r0, [r1] - ldr r1, =gBattleResults - movs r2, 0 - movs r3, 0 -_0803A1E4: - adds r0, r1, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x43 - bls _0803A1E4 - ldr r0, =gEnemyParty - bl IsMonShiny - ldr r3, =gBattleResults - movs r1, 0x1 - ands r1, r0 - lsls r1, 6 - ldrb r2, [r3, 0x5] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r2, =gBattleStruct - ldr r0, [r2] - movs r1, 0xA8 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r2, =0x000002a1 - adds r0, r2 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039F40 - - thumb_func_start SwitchInClearStructs -SwitchInClearStructs: @ 803A284 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r4, =gDisableStructs - ldr r5, =gActiveBank - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, sp - adds r0, r4 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r0, [r0] - str r0, [r1] - ldr r2, =gBattleMoves - ldr r3, =gCurrentMove - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - mov r12, r4 - mov r9, r5 - ldr r6, =gStatuses3 - mov r10, r6 - cmp r0, 0x7F - beq _0803A35C - movs r5, 0 - mov r6, r9 - movs r4, 0x58 - ldr r2, =gBattleMons - adds r2, 0x18 - movs r1, 0x6 -_0803A2D4: - ldrb r0, [r6] - muls r0, r4 - adds r0, r5, r0 - adds r0, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x7 - ble _0803A2D4 - movs r5, 0 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803A348 - ldr r0, =gBattleMons + 0x50 - mov r8, r0 - ldr r4, =gDisableStructs - ldr r3, =gStatuses3 -_0803A2F6: - movs r0, 0x58 - muls r0, r5 - mov r1, r8 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _0803A31A - ldrb r0, [r4, 0x14] - ldr r6, =gActiveBank - ldrb r6, [r6] - cmp r0, r6 - bne _0803A31A - ldr r0, =0xfbffffff - ands r1, r0 - str r1, [r2] -_0803A31A: - ldr r1, [r3] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0803A33A - ldrb r0, [r4, 0x15] - ldr r7, =gActiveBank - ldrb r7, [r7] - cmp r0, r7 - bne _0803A33A - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - str r1, [r3] - movs r0, 0 - strb r0, [r4, 0x15] -_0803A33A: - adds r4, 0x1C - adds r3, 0x4 - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A2F6 -_0803A348: - ldr r1, =gCurrentMove - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, =gBattleMoves - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x7F - bne _0803A414 -_0803A35C: - mov r3, r9 - ldrb r1, [r3] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - ldr r0, =gBattleMons - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, =0x15100007 - ands r0, r1 - str r0, [r2] - ldrb r1, [r3] - lsls r1, 2 - add r1, r10 - ldr r0, [r1] - ldr r2, =0x0003043f - ands r0, r2 - str r0, [r1] - movs r5, 0 - ldr r6, =gNoOfAllBanks - ldrb r6, [r6] - cmp r5, r6 - bge _0803A430 - mov r7, r9 - movs r6, 0 -_0803A390: - ldrb r0, [r7] - bl GetBankSide - adds r4, r0, 0 - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803A3D0 - ldr r1, =gStatuses3 - lsls r0, r5, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0803A3D0 - ldr r0, =gDisableStructs - adds r0, r6, r0 - ldrb r0, [r0, 0x15] - ldrb r3, [r7] - cmp r0, r3 - bne _0803A3D0 - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - str r1, [r2] -_0803A3D0: - adds r6, 0x1C - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A390 - ldr r6, =gDisableStructs - mov r12, r6 - ldr r7, =gActiveBank - mov r9, r7 - b _0803A430 - .pool -_0803A414: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - ldr r1, =gBattleMons - adds r1, 0x50 - adds r0, r1 - movs r1, 0 - str r1, [r0] - mov r2, r9 - ldrb r0, [r2] - lsls r0, 2 - add r0, r10 - str r1, [r0] -_0803A430: - movs r5, 0 - ldr r3, =gBattleStruct - mov r8, r3 - ldr r6, =gUnknown_020244AC - mov r10, r6 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803A490 - ldr r3, =gBattleMons + 0x50 - ldr r7, =gBitTable - ldr r6, =gActiveBank -_0803A448: - movs r0, 0x58 - muls r0, r5 - adds r4, r0, r3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r7 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r4] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _0803A466 - bics r1, r2 - str r1, [r4] -_0803A466: - ldr r1, [r4] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0803A486 - mov r2, r8 - ldr r0, [r2] - adds r0, r5, r0 - ldrb r0, [r0, 0x14] - ldrb r2, [r6] - cmp r0, r2 - bne _0803A486 - ldr r0, =0xffff1fff - ands r1, r0 - str r1, [r4] -_0803A486: - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A448 -_0803A490: - mov r1, r9 - ldrb r0, [r1] - add r0, r10 - movs r1, 0 - strb r1, [r0] - mov r2, r9 - ldrb r0, [r2] - ldr r3, =gUnknown_020244B0 - adds r0, r3 - strb r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r6, r12 - adds r1, r0, r6 - movs r5, 0 - movs r2, 0 -_0803A4B4: - adds r0, r1, r5 - strb r2, [r0] - adds r5, 0x1 - cmp r5, 0x1B - bls _0803A4B4 - ldr r7, =gCurrentMove - ldrh r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, =gBattleMoves - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x7F - bne _0803A540 - mov r2, r9 - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0xA] - strb r1, [r0, 0xA] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0x15] - strb r1, [r0, 0x15] - ldrb r0, [r2] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - mov r0, sp - ldrb r2, [r0, 0xF] - lsls r2, 28 - movs r4, 0xF - lsrs r2, 28 - ldrb r3, [r1, 0xF] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xF] - mov r3, r9 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0xF] - lsrs r1, 4 - lsls r1, 4 - ldrb r2, [r0, 0xF] - ands r4, r2 - orrs r4, r1 - strb r4, [r0, 0xF] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0x14] - strb r1, [r0, 0x14] -_0803A540: - movs r0, 0 - ldr r6, =gBattleMoveFlags - strb r0, [r6] - mov r7, r9 - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - movs r4, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r7] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - mov r0, sp - ldrb r0, [r0, 0x18] - movs r2, 0x2 - ands r2, r0 - ldrb r3, [r1, 0x18] - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x18] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, =gLastUsedMovesByBanks - adds r0, r1 - movs r2, 0 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r3, =gUnknown_02024250 - adds r0, r3 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r6, =gUnknown_02024258 - adds r0, r6 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r7, =gUnknown_02024260 - adds r0, r7 - strh r4, [r0] - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - ldr r3, =gUnknownMovesUsedByBanks - adds r0, r3 - strh r4, [r0] - ldrb r0, [r1] - ldr r6, =gUnknown_02024270 - adds r0, r6 - movs r1, 0xFF - strb r1, [r0] - mov r7, r9 - ldrb r0, [r7] - mov r3, r8 - ldr r1, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, 0x98 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, 0x99 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE0 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE1 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE2 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE3 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE4 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE5 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE6 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE7 - strb r2, [r0] - ldr r1, [r3] - adds r1, 0x92 - ldrb r0, [r7] - lsls r0, 2 - ldr r6, =gBitTable - adds r0, r6 - ldr r2, [r0] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - movs r5, 0 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803A6B4 - mov r3, r9 - mov r7, r8 - movs r6, 0 -_0803A656: - ldrb r0, [r3] - cmp r5, r0 - beq _0803A68C - lsls r0, r5, 24 - lsrs r0, 24 - str r3, [sp, 0x1C] - bl GetBankSide - adds r4, r0, 0 - ldr r3, [sp, 0x1C] - ldrb r0, [r3] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - ldr r3, [sp, 0x1C] - cmp r4, r0 - beq _0803A68C - ldr r0, [r7] - lsls r1, r5, 1 - adds r0, r1, r0 - adds r0, 0x98 - strb r6, [r0] - ldr r0, [r7] - adds r1, r0 - adds r1, 0x99 - strb r6, [r1] -_0803A68C: - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - lsls r2, r5, 3 - adds r0, r2 - adds r0, r1 - adds r0, 0xE0 - strb r6, [r0] - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - adds r0, r2 - adds r0, r1 - adds r0, 0xE1 - strb r6, [r0] - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A656 -_0803A6B4: - mov r1, r9 - ldrb r0, [r1] - mov r2, r8 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - movs r2, 0 - strb r2, [r0] - mov r3, r9 - ldrb r0, [r3] - mov r6, r8 - ldr r1, [r6] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r2, [r0] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldrb r0, [r3] - lsls r0, 2 - adds r1, r0 - movs r2, 0 - str r2, [r1] - ldr r0, =gCurrentMove - strh r2, [r0] - ldr r0, [r6] - adds r0, 0xDA - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r3] - bl ClearBankMoveHistory - mov r7, r9 - ldrb r0, [r7] - bl ClearBankAbilityHistory - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end SwitchInClearStructs - - thumb_func_start UndoEffectsAfterFainting -UndoEffectsAfterFainting: @ 803A75C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r5, 0 - ldr r6, =gBattleMons - ldr r0, =gStatuses3 - mov r8, r0 - ldr r1, =gBattleStruct - mov r12, r1 - ldr r2, =gUnknown_020244AC - mov r9, r2 - ldr r3, =gUnknown_020244B0 - mov r10, r3 - ldr r7, =gProtectStructs - ldr r4, =gActiveBank - movs r3, 0x58 - adds r2, r6, 0 - adds r2, 0x18 - movs r1, 0x6 -_0803A788: - ldrb r0, [r4] - muls r0, r3 - adds r0, r5, r0 - adds r0, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x7 - ble _0803A788 - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r2, r6, 0 - adds r2, 0x50 - adds r0, r2 - movs r1, 0 - str r1, [r0] - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r0, 2 - add r0, r8 - str r1, [r0] - movs r5, 0 - ldr r6, =gNoOfAllBanks - ldrb r6, [r6] - cmp r5, r6 - bge _0803A830 - adds r3, r2, 0 - movs r4, 0 - ldr r0, =gBitTable - mov r8, r0 -_0803A7C6: - ldr r1, [r3] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _0803A7E6 - ldr r2, =gDisableStructs - adds r0, r4, r2 - ldrb r0, [r0, 0x14] - ldr r6, =gActiveBank - ldrb r6, [r6] - cmp r0, r6 - bne _0803A7E6 - ldr r0, =0xfbffffff - ands r1, r0 - str r1, [r3] -_0803A7E6: - ldr r1, =gActiveBank - ldrb r0, [r1] - lsls r0, 2 - add r0, r8 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r3] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _0803A800 - bics r1, r2 - str r1, [r3] -_0803A800: - ldr r1, [r3] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0803A822 - mov r2, r12 - ldr r0, [r2] - adds r0, r5, r0 - ldrb r0, [r0, 0x14] - ldr r6, =gActiveBank - ldrb r6, [r6] - cmp r0, r6 - bne _0803A822 - ldr r0, =0xffff1fff - ands r1, r0 - str r1, [r3] -_0803A822: - adds r3, 0x58 - adds r4, 0x1C - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A7C6 -_0803A830: - ldr r1, =gActiveBank - ldrb r0, [r1] - add r0, r9 - movs r1, 0 - strb r1, [r0] - ldr r2, =gActiveBank - ldrb r0, [r2] - add r0, r10 - strb r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r3, =gDisableStructs - adds r1, r0, r3 - movs r5, 0 - movs r2, 0 -_0803A852: - adds r0, r1, r5 - strb r2, [r0] - adds r5, 0x1 - cmp r5, 0x1B - bls _0803A852 - ldr r6, =gActiveBank - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - mov r9, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r3, 0x3 - negs r3, r3 - mov r8, r3 - mov r0, r8 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r6, 0x5 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - subs r3, 0x6 - mov r10, r3 - mov r0, r10 - ands r0, r2 - strb r0, [r1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r5, 0x21 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - ldr r3, =gActiveBank - ldrb r1, [r3] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r4, 0x41 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r3] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - mov r0, r9 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - mov r0, r8 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r1, =gActiveBank - ldrb r0, [r1] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x1] - ands r5, r1 - strb r5, [r0, 0x1] - ldr r2, =gActiveBank - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x1] - ands r3, r1 - strb r3, [r0, 0x1] - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - mov r3, r9 - ands r3, r1 - strb r3, [r0, 0x2] - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - mov r2, r8 - ands r2, r1 - strb r2, [r0, 0x2] - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - ands r6, r1 - strb r6, [r0, 0x2] - ldrb r0, [r3] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - mov r6, r10 - ands r6, r1 - strb r6, [r0, 0x2] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, =gDisableStructs - adds r0, r1 - movs r2, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r3] - lsls r0, 1 - ldr r3, =gLastUsedMovesByBanks - adds r0, r3 - movs r3, 0 - strh r2, [r0] - ldr r6, =gActiveBank - ldrb r0, [r6] - lsls r0, 1 - ldr r1, =gUnknown_02024250 - adds r0, r1 - strh r2, [r0] - ldrb r0, [r6] - lsls r0, 1 - ldr r6, =gUnknown_02024258 - adds r0, r6 - strh r2, [r0] - ldr r1, =gActiveBank - ldrb r0, [r1] - lsls r0, 1 - ldr r6, =gUnknown_02024260 - adds r0, r6 - strh r2, [r0] - ldrb r0, [r1] - lsls r0, 1 - ldr r1, =gUnknownMovesUsedByBanks - adds r0, r1 - strh r2, [r0] - ldr r2, =gActiveBank - ldrb r0, [r2] - ldr r6, =gUnknown_02024270 - adds r0, r6 - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r2] - mov r2, r12 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r3, [r0] - ldr r6, =gActiveBank - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0x98 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0x99 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE0 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE1 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE2 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE3 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE4 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE5 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE6 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE7 - strb r3, [r0] - ldr r1, [r2] - adds r1, 0x92 - ldrb r0, [r6] - lsls r0, 2 - ldr r2, =gBitTable - adds r0, r2 - ldr r2, [r0] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - movs r5, 0 - ldr r3, =gNoOfAllBanks - ldrb r3, [r3] - cmp r5, r3 - bge _0803AB02 - adds r3, r6, 0 - mov r7, r12 - movs r6, 0 -_0803AAA4: - ldrb r0, [r3] - cmp r5, r0 - beq _0803AADA - lsls r0, r5, 24 - lsrs r0, 24 - str r3, [sp] - bl GetBankSide - adds r4, r0, 0 - ldr r3, [sp] - ldrb r0, [r3] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - ldr r3, [sp] - cmp r4, r0 - beq _0803AADA - ldr r0, [r7] - lsls r1, r5, 1 - adds r0, r1, r0 - adds r0, 0x98 - strb r6, [r0] - ldr r0, [r7] - adds r1, r0 - adds r1, 0x99 - strb r6, [r1] -_0803AADA: - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - lsls r2, r5, 3 - adds r0, r2 - adds r0, r1 - adds r0, 0xE0 - strb r6, [r0] - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - adds r0, r2 - adds r0, r1 - adds r0, 0xE1 - strb r6, [r0] - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803AAA4 -_0803AB02: - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldr r2, =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r1, r0 - movs r0, 0 - str r0, [r1] - ldr r4, =gBattleMons - ldrb r0, [r2] - movs r3, 0x58 - adds r2, r0, 0 - muls r2, r3 - b _0803AB6C - .pool -_0803AB6C: - adds r2, r4 - ldr r5, =gBaseStats - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - ldr r6, =gActiveBank - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r3 - adds r1, r4 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - ldrb r0, [r6] - bl ClearBankMoveHistory - ldrb r0, [r6] - bl ClearBankAbilityHistory - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end UndoEffectsAfterFainting - - thumb_func_start bc_8012FAC -bc_8012FAC: @ 803ABC0 - push {r4,r5,lr} - ldr r5, =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0 - beq _0803ABD4 - cmp r0, 0x1 - beq _0803ABF8 - b _0803AC2E - .pool -_0803ABD4: - ldr r4, =gActiveBank - ldrb r0, [r5, 0x1] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl EmitGetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0803AC2E - .pool -_0803ABF8: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0803AC2E - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _0803AC2C - ldr r1, =gBattleMainFunc - ldr r0, =bc_load_battlefield - str r0, [r1] - b _0803AC2E - .pool -_0803AC2C: - strb r2, [r5] -_0803AC2E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end bc_8012FAC - - thumb_func_start bc_load_battlefield -bc_load_battlefield: @ 803AC34 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _0803AC64 - movs r0, 0 - bl GetBankByIdentity - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gBattleTerrain - ldrb r1, [r0] - movs r0, 0 - bl dp01_build_cmdbuf_x2E_a - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattleMainFunc - ldr r0, =sub_803AC84 - str r0, [r1] - ldr r0, =gBattleCommunication - strb r5, [r0] - strb r5, [r0, 0x1] -_0803AC64: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end bc_load_battlefield - - thumb_func_start sub_803AC84 -sub_803AC84: @ 803AC84 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleExecBuffer - ldr r1, [r0] - cmp r1, 0 - beq _0803AC98 - b _0803AF4E -_0803AC98: - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcc _0803ACA6 - b _0803AF48 -_0803ACA6: - movs r7, 0x58 - ldr r0, =gBattleMons - mov r8, r0 - mov r9, r2 - movs r1, 0x48 - add r1, r8 - mov r10, r1 -_0803ACB4: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0803ACFC - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803ACFC - ldrb r0, [r4] - muls r0, r7 - mov r2, r8 - adds r3, r0, r2 - movs r2, 0 - movs r1, 0 -_0803ACDA: - adds r0, r3, r2 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _0803ACDA - b _0803ADCA - .pool -_0803ACFC: - mov r1, r9 - ldrb r0, [r1] - muls r0, r7 - mov r2, r8 - adds r3, r0, r2 - movs r2, 0 - ldr r6, =gBaseStats - ldr r5, =gBattleBufferB - ldr r4, =gActiveBank -_0803AD0E: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _0803AD0E - mov r1, r9 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r7 - add r2, r8 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - mov r2, r9 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r7 - add r2, r8 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x7] - adds r2, 0x22 - strb r0, [r2] - mov r1, r9 - ldrb r0, [r1] - adds r1, r0, 0 - muls r1, r7 - add r1, r8 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - mov r2, r9 - ldrb r1, [r2] - muls r1, r7 - add r1, r8 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r2] - bl GetBankSide - ldr r1, =gBattleStruct - lsls r0, 24 - lsrs r0, 23 - adds r0, 0xA8 - ldr r1, [r1] - adds r1, r0 - mov r2, r9 - ldrb r0, [r2] - muls r0, r7 - add r0, r8 - ldrh r0, [r0, 0x28] - strh r0, [r1] - movs r2, 0 - ldr r4, =gActiveBank - movs r5, 0x58 - ldr r1, =gBattleMons + 0x18 - adds r6, r4, 0 - movs r0, 0x18 - negs r0, r0 - adds r0, r1 - mov r12, r0 - movs r3, 0x6 -_0803ADAA: - ldrb r0, [r4] - muls r0, r5 - adds r0, r2, r0 - adds r0, r1 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _0803ADAA - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r7 - mov r0, r12 - adds r0, 0x50 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_0803ADCA: - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _0803ADE4 - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803ADE4: - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803AE60 - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AE0A - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803AE0A: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AEC0 - ldr r0, [r5] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0803AEC0 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag - b _0803AEC0 - .pool -_0803AE60: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AEC0 - ldr r0, [r5] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0803AE96 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag -_0803AE96: - movs r0, 0 - bl dp01_build_cmdbuf_x04_4_4_4 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - ldr r1, =gBattleResults - strh r0, [r1, 0x20] -_0803AEC0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803AEF6 - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0803AEEA - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0803AEF6 -_0803AEEA: - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803AEF6: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0803AF20 - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0803AF20 - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803AF20: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0803AF32 - bl sub_81A56B4 -_0803AF32: - mov r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcs _0803AF48 - b _0803ACB4 -_0803AF48: - ldr r1, =gBattleMainFunc - ldr r0, =bc_801333C - str r0, [r1] -_0803AF4E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803AC84 - - thumb_func_start bc_801333C -bc_801333C: @ 803AF80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0803AF92 - b _0803B10C -_0803AF92: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0803AFA0 - b _0803B0AC -_0803AFA0: - movs r7, 0 - add r0, sp, 0x4 - mov r8, r0 - mov r6, r8 - mov r5, sp -_0803AFAA: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803AFD0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0803AFE8 -_0803AFD0: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0803AFFA - .pool -_0803AFE8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0803AFFA: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0803AFAA - movs r0, 0x1 - bl GetBankByIdentity - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl EmitCmd48 - ldrb r0, [r4] - bl MarkBufferBankForExecution - movs r7, 0 - mov r6, r8 - mov r5, sp -_0803B026: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803B04C - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0803B060 -_0803B04C: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0803B072 - .pool -_0803B060: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0803B072: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0803B026 - movs r0, 0 - bl GetBankByIdentity - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl EmitCmd48 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, =gBattleMainFunc - ldr r0, =bc_battle_begin_message - b _0803B10A - .pool -_0803B0AC: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_0803B0B2: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803B0D8 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0803B0E8 -_0803B0D8: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0803B0FA - .pool -_0803B0E8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0803B0FA: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0803B0B2 - ldr r1, =gBattleMainFunc - ldr r0, =bc_8013568 -_0803B10A: - str r0, [r1] -_0803B10C: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end bc_801333C - - thumb_func_start bc_battle_begin_message -bc_battle_begin_message: @ 803B120 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B142 - movs r0, 0x1 - bl GetBankByIdentity - ldr r1, =gActiveBank - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0 - bl PrepareStringBattle - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B180 - str r0, [r1] -_0803B142: - pop {r0} - bx r0 - .pool - thumb_func_end bc_battle_begin_message - - thumb_func_start bc_8013568 -bc_8013568: @ 803B158 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B170 - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B3CC - str r0, [r1] - movs r0, 0 - movs r1, 0 - bl PrepareStringBattle -_0803B170: - pop {r0} - bx r0 - .pool - thumb_func_end bc_8013568 - - thumb_func_start sub_803B180 -sub_803B180: @ 803B180 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B1D0 - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r2 - cmp r0, 0 - beq _0803B1B8 - movs r0, 0x80 - lsls r0, 18 - ands r0, r2 - cmp r0, 0 - beq _0803B1B8 - movs r1, 0x80 - lsls r1, 24 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - b _0803B1BA - .pool -_0803B1B8: - movs r0, 0x1 -_0803B1BA: - bl GetBankByIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl PrepareStringBattle - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B25C - str r0, [r1] -_0803B1D0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B180 - - thumb_func_start sub_803B1DC -sub_803B1DC: @ 803B1DC - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _0803B1FC - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0803B1FC - movs r5, 0x2 - cmp r1, 0 - bge _0803B1FE -_0803B1FC: - movs r5, 0x3 -_0803B1FE: - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0803B23A - adds r4, r1, 0 -_0803B20E: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _0803B228 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803B228: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B20E -_0803B23A: - ldr r1, =gBattleMainFunc - ldr r0, =bc_801362C - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B1DC - - thumb_func_start sub_803B25C -sub_803B25C: @ 803B25C - push {r4-r6,lr} - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r2 - cmp r0, 0 - beq _0803B298 - movs r0, 0x80 - lsls r0, 18 - ands r0, r2 - cmp r0, 0 - beq _0803B298 - movs r1, 0x80 - lsls r1, 24 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r5, r0, 31 - b _0803B29A - .pool -_0803B288: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B1DC - b _0803B2F0 - .pool -_0803B298: - movs r5, 0x1 -_0803B29A: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0803B2F2 - ldr r0, =gActiveBank - strb r2, [r0] - ldr r1, =gNoOfAllBanks - adds r4, r0, 0 - ldrb r1, [r1] - cmp r2, r1 - bcs _0803B2EC - adds r6, r4, 0 -_0803B2B2: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _0803B2D8 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00008040 - ands r0, r1 - cmp r0, 0 - bne _0803B288 -_0803B2D8: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gActiveBank - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B2B2 -_0803B2EC: - ldr r1, =gBattleMainFunc - ldr r0, =bc_801362C -_0803B2F0: - str r0, [r1] -_0803B2F2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B25C - - thumb_func_start bc_801362C -bc_801362C: @ 803B314 - push {r4-r7,lr} - ldr r0, =gBattleExecBuffer - ldr r1, [r0] - cmp r1, 0 - bne _0803B384 - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcs _0803B37E - adds r4, r2, 0 - ldr r6, =gBattleMons - movs r5, 0x58 - adds r7, r6, 0 - adds r7, 0x48 -_0803B334: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803B36C - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0803B36C - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r5 - adds r1, r7 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag -_0803B36C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B334 -_0803B37E: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B3CC - str r0, [r1] -_0803B384: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end bc_801362C - - thumb_func_start sub_803B3AC -sub_803B3AC: @ 803B3AC - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B3BC - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B3CC - str r0, [r1] -_0803B3BC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B3AC - - thumb_func_start sub_803B3CC -sub_803B3CC: @ 803B3CC - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B418 - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - movs r0, 0x80 - lsls r0, 17 - ands r0, r2 - cmp r0, 0 - beq _0803B3F4 - movs r0, 0x80 - lsls r0, 18 - ands r0, r2 - cmp r0, 0 - beq _0803B3F4 - movs r3, 0x1 - cmp r2, 0 - bge _0803B3F6 -_0803B3F4: - movs r3, 0 -_0803B3F6: - ldr r0, [r1] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0803B412 - adds r0, r3, 0 - bl GetBankByIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl PrepareStringBattle -_0803B412: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B4C8 - str r0, [r1] -_0803B418: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B3CC - - thumb_func_start sub_803B42C -sub_803B42C: @ 803B42C - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _0803B44C - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0803B44C - movs r5, 0x3 - cmp r1, 0 - bge _0803B44E -_0803B44C: - movs r5, 0x2 -_0803B44E: - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0803B48A - adds r4, r1, 0 -_0803B45E: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _0803B478 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803B478: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B45E -_0803B48A: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xD1 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B628 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B42C - - thumb_func_start sub_803B4C8 -sub_803B4C8: @ 803B4C8 - push {r4-r6,lr} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _0803B500 - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0803B500 - movs r6, 0x1 - cmp r1, 0 - bge _0803B502 - b _0803B500 - .pool -_0803B4F0: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B42C - b _0803B572 - .pool -_0803B500: - movs r6, 0 -_0803B502: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0803B574 - ldr r0, =gActiveBank - strb r2, [r0] - ldr r1, =gNoOfAllBanks - adds r4, r0, 0 - ldrb r1, [r1] - cmp r2, r1 - bcs _0803B554 - adds r5, r4, 0 -_0803B51A: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r6 - bne _0803B540 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803B4F0 -_0803B540: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gActiveBank - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B51A -_0803B554: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xD1 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B628 -_0803B572: - str r0, [r1] -_0803B574: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B4C8 - - thumb_func_start sub_803B598 -sub_803B598: @ 803B598 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r1, [r0] - cmp r1, 0 - bne _0803B606 - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcs _0803B5E6 - adds r4, r2, 0 - ldr r5, =gBattlePartyID -_0803B5B2: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803B5D4 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl EmitSwitchInAnim - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803B5D4: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B5B2 -_0803B5E6: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xD1 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B628 - str r0, [r1] -_0803B606: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B598 - - thumb_func_start sub_803B628 -sub_803B628: @ 803B628 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r9, r0 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0803B642 - b _0803B8B2 -_0803B642: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4C - ldrb r0, [r0] - cmp r0, 0 - bne _0803B6C2 - movs r5, 0 - ldr r1, =gNoOfAllBanks - mov r10, r1 - ldrb r3, [r1] - cmp r5, r3 - bge _0803B668 - ldr r2, =gTurnOrder -_0803B65C: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r0, [r1] - cmp r5, r0 - blt _0803B65C -_0803B668: - movs r5, 0 - b _0803B6B8 - .pool -_0803B67C: - adds r4, r5, 0x1 - mov r8, r4 - ldrb r1, [r1] - cmp r8, r1 - bge _0803B6B6 - ldr r6, =gTurnOrder - ldr r1, =gNoOfAllBanks - mov r10, r1 - lsls r7, r5, 24 -_0803B68E: - adds r0, r5, r6 - ldrb r0, [r0] - adds r1, r4, r6 - ldrb r1, [r1] - movs r2, 0x1 - bl b_first_side - lsls r0, 24 - cmp r0, 0 - beq _0803B6AC - lsls r1, r4, 24 - lsrs r1, 24 - lsrs r0, r7, 24 - bl sub_803CEDC -_0803B6AC: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803B68E -_0803B6B6: - mov r5, r8 -_0803B6B8: - mov r1, r10 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _0803B67C -_0803B6C2: - ldr r5, =gBattleStruct - ldr r0, [r5] - movs r4, 0xD1 - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0803B6FC - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B6FC - ldr r0, [r5] - adds r0, r4 - movs r1, 0x1 - strb r1, [r0] - b _0803B8B2 - .pool -_0803B6FC: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0803B756 - ldr r5, =gTurnOrder - adds r4, r2, 0 -_0803B710: - ldr r0, [r4] - adds r0, 0x4C - ldrb r0, [r0] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B736 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0803B736: - ldr r1, [r4] - adds r1, 0x4C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r3, r9 - cmp r3, 0 - beq _0803B748 - b _0803B8B2 -_0803B748: - ldr r0, [r4] - adds r0, 0x4C - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B710 -_0803B756: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0803B770 - b _0803B8B2 -_0803B770: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B786 - b _0803B8B2 -_0803B786: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0xD9 - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0803B7DA - ldr r5, =gTurnOrder - adds r4, r2, 0 -_0803B79A: - ldr r0, [r4] - adds r0, 0xD9 - ldrb r0, [r0] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B7BC - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0803B7BC: - ldr r1, [r4] - adds r1, 0xD9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r0, r9 - cmp r0, 0 - bne _0803B8B2 - ldr r0, [r4] - adds r0, 0xD9 - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B79A -_0803B7DA: - movs r5, 0 - ldr r1, =gBattleStruct - mov r8, r1 - movs r7, 0x6 - ldr r6, =gActionForBanks - ldr r2, =gChosenMovesByBanks - movs r4, 0xFF - movs r3, 0 -_0803B7EA: - mov r1, r8 - ldr r0, [r1] - adds r0, r5, r0 - adds r0, 0x5C - strb r7, [r0] - adds r1, r5, r6 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - strh r3, [r2] - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0803B7EA - movs r0, 0 - bl sub_803D580 - bl sub_803D6A0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x91 - ldr r1, =gAbsentBankFlags - ldrb r1, [r1] - strb r1, [r0] - ldr r0, =gText_EmptyString3 - movs r1, 0 - bl sub_814F9EC - ldr r1, =gBattleMainFunc - ldr r0, =sub_803BE74 - str r0, [r1] - bl ResetSentPokesToOpponentValue - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0803B834: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803B834 - movs r5, 0 - ldr r3, =gNoOfAllBanks - ldr r2, =gBattleStruct - ldr r6, =gBattleScripting - ldr r7, =gBattleMoveFlags - ldrb r0, [r3] - cmp r5, r0 - bge _0803B866 - ldr r0, =gBattleMons - movs r4, 0x9 - negs r4, r4 - adds r1, r0, 0 - adds r1, 0x50 -_0803B856: - ldr r0, [r1] - ands r0, r4 - str r0, [r1] - adds r1, 0x58 - adds r5, 0x1 - ldrb r0, [r3] - cmp r5, r0 - blt _0803B856 -_0803B866: - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - ldr r0, [r2] - movs r3, 0xD0 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - movs r1, 0 - strb r1, [r6, 0x14] - ldr r0, [r2] - adds r0, 0x4D - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x3] - strb r1, [r7] - bl Random - ldr r1, =gUnknown_02024330 - strh r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0803B8B2 - bl StopCryAndClearCrySongs - ldr r0, =gUnknown_082DB8BE - bl BattleScriptExecute -_0803B8B2: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B628 - - thumb_func_start bc_8013B1C -bc_8013B1C: @ 803B904 - push {r4-r6,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B994 - ldr r1, =gBattleMainFunc - ldr r0, =BattleTurnPassed - str r0, [r1] - ldr r3, =gNoOfAllBanks - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0803B91C: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803B91C - movs r4, 0 - ldrb r3, [r3] - cmp r4, r3 - bge _0803B96E - ldr r5, =gBattleMons - adds r6, r5, 0 - adds r6, 0x4C -_0803B932: - movs r0, 0x58 - adds r2, r4, 0 - muls r2, r0 - adds r1, r5, 0 - adds r1, 0x50 - adds r1, r2, r1 - ldr r3, [r1] - subs r0, 0x61 - ands r3, r0 - str r3, [r1] - adds r2, r6 - ldr r0, [r2] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0803B964 - movs r0, 0x80 - lsls r0, 5 - ands r3, r0 - cmp r3, 0 - beq _0803B964 - lsls r0, r4, 24 - lsrs r0, 24 - bl CancelMultiTurnMoves -_0803B964: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803B932 -_0803B96E: - ldr r2, =gBattleStruct - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - ldr r0, [r2] - movs r3, 0xD0 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x3] - ldr r0, =gBattleMoveFlags - strb r1, [r0] -_0803B994: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bc_8013B1C - - thumb_func_start BattleTurnPassed -BattleTurnPassed: @ 803B9BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r0, 0x1 - bl sub_803D580 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - bne _0803B9EA - bl UpdateTurnCounters - lsls r0, 24 - cmp r0, 0 - beq _0803B9DE - b _0803BB78 -_0803B9DE: - bl TurnBasedEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B9EA - b _0803BB78 -_0803B9EA: - bl sub_8041728 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0803B9F8 - b _0803BB78 -_0803B9F8: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4D - strb r1, [r0] - bl sub_8041364 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0803BA0E - b _0803BB78 -_0803BA0E: - movs r0, 0 - bl sub_803D580 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffdff - ands r0, r1 - ldr r1, =0xfff7ffff - ands r0, r1 - ldr r1, =0xffbfffff - ands r0, r1 - ldr r1, =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r0, =gBattleScripting - strb r4, [r0, 0x18] - strb r4, [r0, 0x19] - strb r4, [r0, 0x14] - ldr r0, =gBattleMoveDamage - str r4, [r0] - ldr r0, =gBattleMoveFlags - strb r4, [r0] - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x4 -_0803BA40: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803BA40 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - beq _0803BA98 - ldr r1, =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - ldr r1, =gBattleMainFunc - ldr r0, =bc_bs_exec - str r0, [r1] - b _0803BB78 - .pool -_0803BA98: - ldr r1, =gBattleResults - ldrb r0, [r1, 0x13] - ldr r2, =gBattleStruct - mov r8, r2 - cmp r0, 0xFE - bhi _0803BAB2 - adds r0, 0x1 - strb r0, [r1, 0x13] - ldr r1, [r2] - adds r1, 0xDA - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0803BAB2: - movs r2, 0 - ldr r4, =gNoOfAllBanks - ldr r0, =gAbsentBankFlags - mov r12, r0 - ldr r1, =gText_EmptyString3 - mov r9, r1 - ldrb r0, [r4] - cmp r2, r0 - bge _0803BAE0 - ldr r7, =gActionForBanks - movs r6, 0xFF - movs r5, 0 - ldr r3, =gChosenMovesByBanks -_0803BACC: - adds r1, r2, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - strh r5, [r3] - adds r3, 0x2 - adds r2, 0x1 - ldrb r1, [r4] - cmp r2, r1 - blt _0803BACC -_0803BAE0: - movs r2, 0 - ldr r3, =gBattleStruct - movs r1, 0x6 -_0803BAE6: - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0x5C - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0803BAE6 - mov r2, r8 - ldr r0, [r2] - adds r0, 0x91 - mov r2, r12 - ldrb r1, [r2] - strb r1, [r0] - mov r0, r9 - movs r1, 0 - bl sub_814F9EC - ldr r1, =gBattleMainFunc - ldr r0, =sub_803BE74 - str r0, [r1] - bl Random - ldr r1, =gUnknown_02024330 - strh r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 10 - ands r0, r1 - cmp r0, 0 - beq _0803BB5C - ldr r0, =gUnknown_082DB881 - bl BattleScriptExecute - b _0803BB78 - .pool -_0803BB5C: - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - beq _0803BB78 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xDA - ldrb r0, [r0] - cmp r0, 0 - bne _0803BB78 - ldr r0, =gUnknown_082DB8BE - bl BattleScriptExecute -_0803BB78: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end BattleTurnPassed - - thumb_func_start IsRunningFromBattleImpossible -IsRunningFromBattleImpossible: @ 803BB88 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =gBattleMons - ldr r0, =gActiveBank - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0803BBB8 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x7] - b _0803BBC2 - .pool -_0803BBB8: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r2, r0, 24 -_0803BBC2: - ldr r1, =gStringBank - ldr r3, =gActiveBank - ldrb r0, [r3] - strb r0, [r1] - cmp r2, 0x25 - bne _0803BBD0 - b _0803BD4C -_0803BBD0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803BBDE - b _0803BD4C -_0803BBDE: - ldr r1, =gBattleMons - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x32 - bne _0803BBF2 - b _0803BD4C -_0803BBF2: - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bge _0803BC86 - movs r7, 0 -_0803BC08: - lsrs r4, r7, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _0803BC2C - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r0, r1 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x17 - bne _0803BC2C - b _0803BD54 -_0803BC2C: - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _0803BC76 - ldr r3, =gBattleMons - ldr r0, =gActiveBank - ldrb r0, [r0] - movs r2, 0x58 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _0803BC76 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803BC76 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803BC76 - adds r0, r5, 0 - muls r0, r2 - adds r0, r3 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x47 - bne _0803BC76 - b _0803BD70 -_0803BC76: - movs r0, 0x80 - lsls r0, 17 - adds r7, r0 - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803BC08 -_0803BC86: - ldr r4, =gActiveBank - ldrb r1, [r4] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _0803BCF8 - ldr r6, =gBattleMons - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _0803BCBE - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0803BCF8 -_0803BCBE: - ldr r0, =gBattleScripting - subs r1, r5, 0x1 - strb r1, [r0, 0x17] - ldr r2, =gLastUsedAbility - adds r0, r1, 0 - muls r0, r3 - adds r0, r6 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _0803BD90 - .pool -_0803BCF8: - ldr r1, =gBattleMons - ldr r0, =gActiveBank - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _0803BD22 - ldr r1, =gStatuses3 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _0803BD40 -_0803BD22: - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0x1 - b _0803BD92 - .pool -_0803BD40: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0803BD8C -_0803BD4C: - movs r0, 0 - b _0803BD92 - .pool -_0803BD54: - ldr r0, =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, =gLastUsedAbility - ldrb r0, [r2] - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _0803BD90 - .pool -_0803BD70: - ldr r0, =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, =gLastUsedAbility - ldrb r0, [r2] - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _0803BD90 - .pool -_0803BD8C: - ldr r1, =gBattleCommunication - movs r0, 0x1 -_0803BD90: - strb r0, [r1, 0x5] -_0803BD92: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end IsRunningFromBattleImpossible + thumb_func_start sub_803BDA0 sub_803BDA0: @ 803BDA0 @@ -5907,8 +1895,8 @@ sub_803CEDC: @ 803CEDC .pool thumb_func_end sub_803CEDC - thumb_func_start b_first_side -b_first_side: @ 803CF10 + thumb_func_start GetWhoStrikesFirst +GetWhoStrikesFirst: @ 803CF10 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -6102,7 +2090,7 @@ _0803D07E: _0803D09C: cmp r6, 0x1A bne _0803D0B8 - ldr r0, =gUnknown_02024330 + ldr r0, =gRandomTurnNumber ldrh r4, [r0] lsls r0, r5, 16 subs r0, r5 @@ -6201,7 +2189,7 @@ _0803D162: _0803D17E: cmp r6, 0x1A bne _0803D198 - ldr r0, =gUnknown_02024330 + ldr r0, =gRandomTurnNumber ldrh r4, [r0] lsls r0, r5, 16 subs r0, r5 @@ -6369,7 +2357,7 @@ _0803D2D6: pop {r4-r7} pop {r1} bx r1 - thumb_func_end b_first_side + thumb_func_end GetWhoStrikesFirst thumb_func_start sub_803D2E8 sub_803D2E8: @ 803D2E8 @@ -6635,7 +2623,7 @@ _0803D4F8: beq _0803D534 adds r0, r3, 0 movs r2, 0 - bl b_first_side + bl GetWhoStrikesFirst lsls r0, 24 cmp r0, 0 beq _0803D534 @@ -6678,8 +2666,8 @@ _0803D554: .pool thumb_func_end sub_803D2E8 - thumb_func_start sub_803D580 -sub_803D580: @ 803D580 + thumb_func_start TurnValuesCleanUp +TurnValuesCleanUp: @ 803D580 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -6813,10 +2801,10 @@ _0803D678: pop {r0} bx r0 .pool - thumb_func_end sub_803D580 + thumb_func_end TurnValuesCleanUp - thumb_func_start sub_803D6A0 -sub_803D6A0: @ 803D6A0 + thumb_func_start SpecialStatusesClear +SpecialStatusesClear: @ 803D6A0 push {r4-r6,lr} ldr r2, =gActiveBank movs r0, 0 @@ -6855,7 +2843,7 @@ _0803D6DE: pop {r0} bx r0 .pool - thumb_func_end sub_803D6A0 + thumb_func_end SpecialStatusesClear thumb_func_start bc_80154A0 bc_80154A0: @ 803D6F0 @@ -7036,8 +3024,8 @@ _0803D8AC: .pool thumb_func_end bc_bs_exec - thumb_func_start sub_803D8C0 -sub_803D8C0: @ 803D8C0 + thumb_func_start HandleEndTurn_BattleWon +HandleEndTurn_BattleWon: @ 803D8C0 push {r4,lr} ldr r1, =gFightStateTracker movs r0, 0 @@ -7200,16 +3188,16 @@ _0803DA9E: str r0, [r1] _0803DAA4: ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 + ldr r0, =HandleEndTurn_FinishBattle str r0, [r1] pop {r4} pop {r0} bx r0 .pool - thumb_func_end sub_803D8C0 + thumb_func_end HandleEndTurn_BattleWon - thumb_func_start sub_803DAC0 -sub_803DAC0: @ 803DAC0 + thumb_func_start HandleEndTurn_BattleLost +HandleEndTurn_BattleLost: @ 803DAC0 push {r4,lr} ldr r1, =gFightStateTracker movs r0, 0 @@ -7279,16 +3267,16 @@ _0803DB7C: str r0, [r1] _0803DB82: ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 + ldr r0, =HandleEndTurn_FinishBattle str r0, [r1] pop {r4} pop {r0} bx r0 .pool - thumb_func_end sub_803DAC0 + thumb_func_end HandleEndTurn_BattleLost - thumb_func_start sub_803DBA0 -sub_803DBA0: @ 803DBA0 + thumb_func_start HandleEndTurn_RanFromBattle +HandleEndTurn_RanFromBattle: @ 803DBA0 push {lr} ldr r1, =gFightStateTracker movs r0, 0 @@ -7363,15 +3351,15 @@ _0803DC68: str r0, [r1] _0803DC6A: ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 + ldr r0, =HandleEndTurn_FinishBattle str r0, [r1] pop {r0} bx r0 .pool - thumb_func_end sub_803DBA0 + thumb_func_end HandleEndTurn_RanFromBattle - thumb_func_start bc_80158BC -bc_80158BC: @ 803DC84 + thumb_func_start HandleEndTurn_MonFled +HandleEndTurn_MonFled: @ 803DC84 ldr r1, =gFightStateTracker movs r0, 0 strb r0, [r1] @@ -7395,14 +3383,14 @@ bc_80158BC: @ 803DC84 ldr r0, =gUnknown_082DAAF7 str r0, [r1] ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 + ldr r0, =HandleEndTurn_FinishBattle str r0, [r1] bx lr .pool - thumb_func_end bc_80158BC + thumb_func_end HandleEndTurn_MonFled - thumb_func_start sub_803DCD8 -sub_803DCD8: @ 803DCD8 + thumb_func_start HandleEndTurn_FinishBattle +HandleEndTurn_FinishBattle: @ 803DCD8 push {r4-r7,lr} mov r7, r8 push {r7} @@ -7545,7 +3533,7 @@ _0803DE2A: pop {r0} bx r0 .pool - thumb_func_end sub_803DCD8 + thumb_func_end HandleEndTurn_FinishBattle thumb_func_start sub_803DE40 sub_803DE40: @ 803DE40 @@ -8646,11 +4634,11 @@ bs2_8016374: @ 803E868 strh r2, [r0] ldr r0, =gBattle_BG0_Y strh r2, [r0] - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldrb r0, [r3] adds r0, r1 strb r2, [r0] - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldrb r0, [r3] adds r0, r1 strb r2, [r0] @@ -9757,7 +5745,7 @@ bsC_8016D70: @ 803F300 adds r0, r1 ldrb r0, [r0] strb r0, [r3] - bl sub_803D6A0 + bl SpecialStatusesClear ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xf1e892af diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index b47a8ecdf4..78236f1d7b 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -191,7 +191,7 @@ _080575F0: beq _08057658 movs r0, 0x5 bl PlaySE - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -233,7 +233,7 @@ _08057658: ands r0, r2 cmp r0, 0 beq _08057698 - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -261,7 +261,7 @@ _08057698: ands r0, r2 cmp r0, 0 beq _080576D8 - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -290,7 +290,7 @@ _080576D8: ands r0, r2 cmp r0, 0 beq _08057700 - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -306,7 +306,7 @@ _08057700: ands r0, r2 cmp r0, 0 beq _0805774C - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -508,7 +508,7 @@ _080578A0: adds r0, r2 ldr r1, =sub_8039B2C str r1, [r0] - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -664,7 +664,7 @@ _08057A32: muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor adds r2, r1 ldrb r1, [r2] adds r1, 0xD @@ -792,7 +792,7 @@ _08057B56: muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor adds r2, r1 ldrb r1, [r2] adds r1, 0xD @@ -890,7 +890,7 @@ _08057C48: _08057C58: movs r0, 0x5 bl PlaySE - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -977,7 +977,7 @@ _08057D18: movs r0, 0x1 add r8, r0 _08057D24: - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor adds r0, r3, r0 adds r1, r6, 0 adds r1, 0x8 @@ -1008,7 +1008,7 @@ _08057D5A: cmp r0, 0 bne _08057D80 _08057D62: - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldrb r0, [r7] adds r0, r1 ldrb r2, [r0] @@ -1095,7 +1095,7 @@ _08057E30: ands r0, r2 cmp r0, 0 beq _08057E60 - ldr r4, =gUnknown_020244B0 + ldr r4, =gMoveSelectionCursor ldrb r0, [r7] adds r2, r0, r4 ldrb r1, [r2] @@ -1119,7 +1119,7 @@ _08057E60: ands r0, r2 cmp r0, 0 beq _08057EA4 - ldr r4, =gUnknown_020244B0 + ldr r4, =gMoveSelectionCursor ldrb r0, [r7] adds r3, r0, r4 ldrb r2, [r3] @@ -1151,7 +1151,7 @@ _08057EA4: ands r0, r2 cmp r0, 0 beq _08057ED4 - ldr r4, =gUnknown_020244B0 + ldr r4, =gMoveSelectionCursor ldrb r0, [r7] adds r2, r0, r4 ldrb r1, [r2] @@ -1173,7 +1173,7 @@ _08057ED4: ands r0, r2 cmp r0, 0 beq _08057F30 - ldr r4, =gUnknown_020244B0 + ldr r4, =gMoveSelectionCursor ldrb r0, [r7] adds r3, r0, r4 ldrb r2, [r3] @@ -1221,7 +1221,7 @@ _08057F30: ands r5, r6 cmp r5, 0 bne _08057F9E - ldr r4, =gUnknown_020244B0 + ldr r4, =gMoveSelectionCursor ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] @@ -1302,7 +1302,7 @@ _08057FF8: ands r0, r1 cmp r0, 0 beq _08058038 - ldr r5, =gUnknown_020244B0 + ldr r5, =gMoveSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r2, r0, r5 @@ -1333,7 +1333,7 @@ _08058038: ands r0, r1 cmp r0, 0 beq _08058086 - ldr r5, =gUnknown_020244B0 + ldr r5, =gMoveSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r3, r0, r5 @@ -1370,7 +1370,7 @@ _08058086: ands r0, r1 cmp r0, 0 beq _080580C8 - ldr r5, =gUnknown_020244B0 + ldr r5, =gMoveSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r2, r0, r5 @@ -1401,7 +1401,7 @@ _080580C8: ands r0, r1 cmp r0, 0 beq _08058116 - ldr r5, =gUnknown_020244B0 + ldr r5, =gMoveSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r3, r0, r5 @@ -1457,7 +1457,7 @@ sub_8058138: @ 8058138 _08058152: movs r0, 0x5 bl PlaySE - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor mov r10, r0 ldr r1, =gActiveBank mov r8, r1 @@ -1594,7 +1594,7 @@ _0805824E: adds r6, 0x1 cmp r6, 0x3 ble _0805824E - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldrb r0, [r7] adds r0, r1 ldrb r0, [r0] @@ -1758,7 +1758,7 @@ _08058392: adds r6, 0x1 cmp r6, 0x3 ble _08058392 - ldr r4, =gUnknown_020244B0 + ldr r4, =gMoveSelectionCursor ldr r3, =gActiveBank ldrb r0, [r3] adds r0, r4 @@ -1892,7 +1892,7 @@ _080584A8: adds r0, r1 ldr r1, =sub_8057BFC str r1, [r0] - ldr r3, =gUnknown_020244B0 + ldr r3, =gMoveSelectionCursor ldrb r0, [r2] adds r0, r3 ldr r1, =gUnknown_03005D74 @@ -1915,7 +1915,7 @@ _08058500: ldr r0, =gUnknown_03005D74 ldrb r0, [r0] bl battle_menu_cursor_related - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r1 @@ -1947,7 +1947,7 @@ _08058554: bne _0805856A b _080586E8 _0805856A: - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor ldr r1, =gActiveBank ldrb r1, [r1] adds r1, r0 @@ -1990,7 +1990,7 @@ _080585BA: bcc _080585C8 b _080586E8 _080585C8: - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor ldr r1, =gActiveBank ldrb r1, [r1] adds r1, r0 @@ -2010,7 +2010,7 @@ _080585E8: ands r0, r2 cmp r0, 0 beq _080586E8 - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor ldr r1, =gActiveBank ldrb r1, [r1] adds r1, r0 @@ -2034,7 +2034,7 @@ _0805862C: strb r0, [r4] movs r0, 0x5 bl PlaySE - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -2064,7 +2064,7 @@ _0805865C: ldrb r1, [r1] cmp r0, r1 bcs _080586E8 - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor ldr r1, =gActiveBank ldrb r1, [r1] adds r1, r0 @@ -2087,7 +2087,7 @@ _080586AA: strb r0, [r4] movs r0, 0x5 bl PlaySE - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -4407,7 +4407,7 @@ sub_8059B3C: @ 8059B3C adds r0, r5, 0x4 adds r4, r0 ldr r6, =gDisplayedStringBattle - ldr r5, =gUnknown_020244B0 + ldr r5, =gMoveSelectionCursor adds r1, r5 adds r0, r4, 0 adds r0, 0x8 @@ -4462,7 +4462,7 @@ sub_8059BB0: @ 8059BB0 strb r1, [r0] adds r0, 0x1 ldr r3, =gBattleMoves - ldr r2, =gUnknown_020244B0 + ldr r2, =gMoveSelectionCursor ldrb r1, [r5] adds r1, r2 ldrb r1, [r1] @@ -6924,11 +6924,11 @@ sub_805B1CC: @ 805B1CC ldr r2, =gPlayerParty adds r0, r2 bl sub_805DD7C - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldrb r0, [r5] adds r0, r1 strb r4, [r0] - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldrb r0, [r5] adds r0, r1 strb r4, [r0] @@ -8543,7 +8543,7 @@ _0805C062: adds r4, 0x1 cmp r4, 0x3 ble _0805C062 - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -8715,7 +8715,7 @@ sub_805C210: @ 805C210 ldr r1, =gUnknown_03005D74 movs r0, 0xFF strb r0, [r1] - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -10333,21 +10333,21 @@ _0805D054: beq _0805D07C b _0805D084 _0805D05A: - ldr r0, =gUnknown_020244AC + ldr r0, =gActionSelectionCursor adds r0, r3, r0 strb r2, [r0] - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldrb r0, [r4] adds r0, r1 strb r2, [r0] b _0805D084 .pool _0805D074: - ldr r0, =gUnknown_020244AC + ldr r0, =gActionSelectionCursor b _0805D07E .pool _0805D07C: - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor _0805D07E: adds r0, r3, r0 movs r1, 0 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index acd7167766..26f7ad8f79 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -71,7 +71,7 @@ bx_battle_menu_t6_2: @ 81593D8 beq _08159446 movs r0, 0x5 bl PlaySE - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 @@ -118,7 +118,7 @@ _08159446: ands r0, r1 cmp r0, 0 beq _08159484 - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -144,7 +144,7 @@ _08159484: ands r0, r1 cmp r0, 0 beq _081594C0 - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -170,7 +170,7 @@ _081594C0: ands r0, r1 cmp r0, 0 beq _0815950C - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -204,7 +204,7 @@ _0815950C: ands r0, r1 cmp r0, 0 beq _0815954E - ldr r5, =gUnknown_020244AC + ldr r5, =gActionSelectionCursor ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 @@ -871,7 +871,7 @@ _08159AAE: adds r4, 0x1 cmp r4, 0x3 ble _08159AAE - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 8291b05fa8..629fa308d9 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3685,7 +3685,7 @@ _0816A48A: adds r4, 0x1 cmp r4, 0x3 ble _0816A48A - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s index 94ae7ad7fc..39ae59d8b4 100644 --- a/asm/battle_link_817C95C.s +++ b/asm/battle_link_817C95C.s @@ -4322,7 +4322,7 @@ _0817EF36: b _0817F1FA _0817EF44: ldr r3, =gBattleMoves - ldr r2, =gUnknown_020244B0 + ldr r2, =gMoveSelectionCursor adds r0, r4, r2 ldrb r0, [r0] lsls r0, 1 @@ -4514,7 +4514,7 @@ _0817F0B4: ble _0817EFC2 movs r5, 0 ldr r3, =gBankAttacker - ldr r6, =gUnknown_020244B0 + ldr r6, =gMoveSelectionCursor ldr r4, =gBattlePartyID mov r8, r4 movs r7, 0x64 @@ -4624,7 +4624,7 @@ _0817F1D4: b _0817F0CC _0817F1DC: ldr r2, =gBattleMoveDamage - ldr r1, =gUnknown_020244B0 + ldr r1, =gMoveSelectionCursor ldr r0, =gBankAttacker ldrb r0, [r0] adds r0, r1 diff --git a/asm/battle_message.s b/asm/battle_message.s index 96869a350b..c39903dcc5 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -2998,7 +2998,7 @@ sub_814FBAC: @ 814FBAC ldr r0, =gBattleBufferA + 4 adds r1, r0 ldr r4, =gUnknown_08D85620 - ldr r0, =gUnknown_020244B0 + ldr r0, =gMoveSelectionCursor adds r2, r0 ldrb r2, [r2] adds r0, r1, 0 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index c7e384a10f..d9b679750f 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -264,7 +264,7 @@ _080A94F8: adds r0, r4, 0 bl sub_805EE54 _080A955C: - ldr r1, =gUnknown_020244AC + ldr r1, =gActionSelectionCursor ldr r0, =gBankInMenu ldrb r0, [r0] adds r0, r1 diff --git a/asm/rom3.s b/asm/rom3.s index 23d3204741..2e040ff0f6 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -47,9 +47,9 @@ SetUpBattleVarsAndBirchZigzagoon: @ 803269C str r0, [sp, 0x10] movs r1, 0 ldr r7, =gBattleBankFunc - ldr r6, =gUnknown_020244AC + ldr r6, =gActionSelectionCursor movs r2, 0 - ldr r5, =gUnknown_020244B0 + ldr r5, =gMoveSelectionCursor ldr r4, =nullsub_21 ldr r3, =gBanksBySide _080326B8: @@ -222,7 +222,7 @@ b_setup_bx: @ 8032824 cmp r5, 0 beq _080328E4 ldr r1, =gBattleMainFunc - ldr r0, =sub_8039ECC + ldr r0, =BeginBattleIntro str r0, [r1] movs r4, 0x80 lsls r4, 17 @@ -286,7 +286,7 @@ _080328E4: b _080329E0 _080328F0: ldr r0, =gBattleMainFunc - ldr r2, =sub_8039ECC + ldr r2, =BeginBattleIntro str r2, [r0] movs r1, 0x80 ands r1, r3 @@ -380,7 +380,7 @@ _080329CC: b _08032CB2 .pool _080329E0: - ldr r1, =sub_8039ECC + ldr r1, =BeginBattleIntro ldr r2, =gBattleMainFunc str r1, [r2] ldr r2, =gBattleBankFunc @@ -419,7 +419,7 @@ _08032A20: ands r0, r1 cmp r0, r1 bne _08032AA0 - ldr r0, =sub_8039ECC + ldr r0, =BeginBattleIntro ldr r1, =gBattleMainFunc str r0, [r1] ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand @@ -751,7 +751,7 @@ b_setup_bx_link: @ 8032CC0 cmp r4, 0 beq _08032D1C ldr r1, =gBattleMainFunc - ldr r0, =sub_8039ECC + ldr r0, =BeginBattleIntro str r0, [r1] ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand @@ -789,7 +789,7 @@ _08032D48: cmp r3, 0 beq _08032D98 ldr r1, =gBattleMainFunc - ldr r0, =sub_8039ECC + ldr r0, =BeginBattleIntro str r0, [r1] ldr r2, =gBattleBankFunc ldr r4, =SetBankFuncToPlayerBufferRunCommand @@ -840,7 +840,7 @@ _08032DD0: cmp r3, 0 beq _08032E1C ldr r1, =gBattleMainFunc - ldr r0, =sub_8039ECC + ldr r0, =BeginBattleIntro str r0, [r1] ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand @@ -904,7 +904,7 @@ _08032E8C: cmp r0, 0 beq _08032EA4 ldr r1, =gBattleMainFunc - ldr r0, =sub_8039ECC + ldr r0, =BeginBattleIntro str r0, [r1] _08032EA4: movs r0, 0 @@ -2247,8 +2247,8 @@ _0803396C: .pool thumb_func_end sub_8033940 - thumb_func_start dp01_build_cmdbuf_x04_4_4_4 -dp01_build_cmdbuf_x04_4_4_4: @ 8033980 + thumb_func_start EmitLoadMonSprite +EmitLoadMonSprite: @ 8033980 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2262,7 +2262,7 @@ dp01_build_cmdbuf_x04_4_4_4: @ 8033980 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x04_4_4_4 + thumb_func_end EmitLoadMonSprite thumb_func_start EmitSwitchInAnim EmitSwitchInAnim: @ 80339A0 @@ -2301,8 +2301,8 @@ EmitReturnPokeToBall: @ 80339C4 .pool thumb_func_end EmitReturnPokeToBall - thumb_func_start dp01_build_cmdbuf_x07_7_7_7 -dp01_build_cmdbuf_x07_7_7_7: @ 80339E4 + thumb_func_start EmitDrawTrainerPic +EmitDrawTrainerPic: @ 80339E4 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2317,7 +2317,7 @@ dp01_build_cmdbuf_x07_7_7_7: @ 80339E4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x07_7_7_7 + thumb_func_end EmitDrawTrainerPic thumb_func_start EmitTrainerSlide EmitTrainerSlide: @ 8033A04 @@ -3532,8 +3532,8 @@ EmitFaintingCry: @ 803432C .pool thumb_func_end EmitFaintingCry - thumb_func_start dp01_build_cmdbuf_x2E_a -dp01_build_cmdbuf_x2E_a: @ 803434C + thumb_func_start EmitIntroSlide +EmitIntroSlide: @ 803434C push {lr} adds r3, r1, 0 lsls r0, 24 @@ -3547,10 +3547,10 @@ dp01_build_cmdbuf_x2E_a: @ 803434C pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x2E_a + thumb_func_end EmitIntroSlide - thumb_func_start dp01_build_cmdbuf_x2F_2F_2F_2F -dp01_build_cmdbuf_x2F_2F_2F_2F: @ 803436C + thumb_func_start EmitIntroTrainerBallThrow +EmitIntroTrainerBallThrow: @ 803436C push {lr} lsls r0, 24 lsrs r0, 24 @@ -3565,10 +3565,10 @@ dp01_build_cmdbuf_x2F_2F_2F_2F: @ 803436C pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x2F_2F_2F_2F + thumb_func_end EmitIntroTrainerBallThrow - thumb_func_start EmitCmd48 -EmitCmd48: @ 803438C + thumb_func_start EmitDrawPartyStatusSummary +EmitDrawPartyStatusSummary: @ 803438C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -3604,7 +3604,7 @@ _080343B4: pop {r0} bx r0 .pool - thumb_func_end EmitCmd48 + thumb_func_end EmitDrawPartyStatusSummary thumb_func_start EmitCmd49 EmitCmd49: @ 80343D4 diff --git a/include/battle.h b/include/battle.h index afb3c8d6e9..e5e5a94d1d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -54,6 +54,7 @@ #define BATTLE_TYPE_GROUDON 0x10000000 #define BATTLE_TYPE_KYORGE 0x20000000 #define BATTLE_TYPE_RAYQUAZA 0x40000000 +#define BATTLE_TYPE_x80000000 0x80000000 #define TRAINER_OPPONENT_C00 0xC00 #define TRAINER_OPPONENT_800 0x800 @@ -178,6 +179,9 @@ #define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 #define ABILITYEFFECT_COUNT_ON_FIELD 0x12 #define ABILITYEFFECT_CHECK_ON_FIELD 0x13 +#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF + +#define ITEMEFFECT_ON_SWITCH_IN 0x0 #define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) @@ -228,6 +232,7 @@ #define MOVE_EFFECT_BYTE 0x3 #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 +#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8 #define MOVE_TARGET_SELECTED 0x0 #define MOVE_TARGET_DEPENDS 0x1 @@ -556,7 +561,7 @@ struct BattleResults u16 caughtMonSpecies; // 0x28 u8 caughtMonNick[10]; // 0x2A u8 filler34[2]; - u8 catchAttempts[10]; // 0x36 + u8 catchAttempts[12]; // 0x36 }; extern struct BattleResults gBattleResults; @@ -587,7 +592,7 @@ struct BattleStruct u8 field_49; u8 moneyMultiplier; u8 field_4B; - u8 field_4C; + u8 switchInAbilitiesCounter; u8 field_4D; u8 field_4E; u8 field_4F; @@ -650,7 +655,7 @@ struct BattleStruct u16 choicedMove[BATTLE_BANKS_COUNT]; u16 changedItems[BATTLE_BANKS_COUNT]; u8 intimidateBank; - u8 fillerD9[0xDA-0xD9]; + u8 switchInItemsCounter; u8 field_DA; u8 turnSideTracker; u8 fillerDC[0xDF-0xDC]; @@ -664,7 +669,7 @@ struct BattleStruct struct BattleEnigmaBerry battleEnigmaBerry; u8 field_1A0; u8 field_1A1; - u8 filler1A2; + bool8 overworldWeatherDone; u8 atkCancellerTracker; u8 field_1A4[240]; u8 field_294[4]; @@ -845,7 +850,7 @@ struct BattleScripting u8 statChanger; u8 field_1B; u8 atk23_state; - u8 field_1D; + u8 battleStyle; u8 atk6C_state; u8 learnMoveState; u8 field_20; @@ -874,9 +879,9 @@ void CancelMultiTurnMoves(u8 bank); void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); void PrepareStringBattle(u16 stringId, u8 bank); u8 GetBattleBank(u8 caseId); -void UndoEffectsAfterFainting(void); +void FaintClearSetData(void); bool8 HasMoveFailed(u8 bank); -void SwitchInClearStructs(void); +void SwitchInClearSetData(void); void sub_803BDA0(u8 bank); void sub_803FA70(u8 bank); void BattleMainCB2(void); @@ -886,6 +891,9 @@ bool8 CanRunFromBattle(u8 bank); bool8 IsRunningFromBattleImpossible(void); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); +u8 GetWhoStrikesFirst(u8 bankAtk, u8 bankDef, bool8 ignoreChosenMoves); +void sub_803CEDC(u8, u8); +void BattleTurnPassed(void); // battle_3 #define MOVE_LIMITATION_ZEROMOVE (1 << 0) @@ -971,10 +979,28 @@ struct BattleAnimationInfo u16 field; // to fill up later }; +struct BattleHealthboxInfo +{ + u8 flag_x1 : 1; + u8 flag_x2 : 1; + u8 flag_x4 : 1; + u8 field_1; + u8 field_2; + u8 field_3; + u8 field_4; + u8 field_5; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9; + u8 field_A; + u8 field_B; +}; + struct BattleSpriteData { struct BattleSpriteInfo *bankData; - void* field_4; + struct BattleHealthboxInfo *healthBoxesData; struct BattleAnimationInfo *animationData; }; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index b2846d7cf0..61e8bec293 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -47,11 +47,15 @@ void EmitTrainerSlideBack(u8 bufferId); void EmitFaintingCry(u8 bufferId); void Emit_x37(u8 bufferId, u8 arg1); void EmitHitAnimation(u8 bufferId); -void EmitCmd48(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); void EmitCmd49(u8 bufferId); void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); void EmitCmd13(u8 bufferId); void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void EmitIntroSlide(u8 bufferId, u8 terrainId); +void EmitDrawTrainerPic(u8 bufferId); +void EmitLoadMonSprite(u8 bufferId); +void EmitIntroTrainerBallThrow(u8 bufferId); #define RESET_ACTION_MOVE_SELECTION 0 #define RESET_ACTION_SELECTION 1 diff --git a/include/pokemon.h b/include/pokemon.h index 4b678d6793..b3155881e9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -633,10 +633,12 @@ s32 sub_806D864(u16 a1); bool16 sub_806D82C(u8 id); u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); void sub_8068AA4(void); // sets stats for deoxys +bool8 HasTwoFramesAnimation(u16 species); #include "sprite.h" void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); #endif // GUARD_POKEMON_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 5f3099d83f..2040f2b8a2 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -9,6 +9,7 @@ void RecordedBattle_SetBankAction(u8 bank, u8 action); void sub_8185F90(u16 arg0); bool8 sub_8186450(void); u8 sub_8185FAC(void); +u8 sub_8185FB8(void); u8 MoveRecordedBattleToSaveData(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/include/sprite.h b/include/sprite.h index 838b0d7c0b..a9377165e4 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -212,14 +212,14 @@ struct Sprite u16 flags_5:1; //0x20 u16 flags_6:1; //0x40 u16 flags_7:1; //0x80 - /*0x3F*/ u16 hFlip:1; - u16 vFlip:1; - u16 animBeginning:1; - u16 affineAnimBeginning:1; - u16 animEnded:1; - u16 affineAnimEnded:1; - u16 usingSheet:1; - u16 flags_f:1; + /*0x3F*/ u16 hFlip:1; //1 + u16 vFlip:1; //2 + u16 animBeginning:1; //4 + u16 affineAnimBeginning:1; //8 + u16 animEnded:1; //0x10 + u16 affineAnimEnded:1; //0x20 + u16 usingSheet:1; //0x40 + u16 flags_f:1; //0x80 /*0x40*/ u16 sheetTileStart; diff --git a/src/battle_2.c b/src/battle_2.c index 8d1f6a7a13..769723c24c 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -13,6 +13,7 @@ #include "species.h" #include "berry.h" #include "text.h" +#include "item.h" #include "items.h" #include "hold_effects.h" #include "link.h" @@ -28,6 +29,13 @@ #include "sound.h" #include "battle_message.h" #include "sprite.h" +#include "util.h" +#include "trig.h" +#include "battle_ai_script_commands.h" +#include "battle_move_effects.h" +#include "battle_controllers.h" +#include "pokedex.h" +#include "abilities.h" struct UnknownStruct6 { @@ -70,6 +78,7 @@ extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern void (*gPreBattleCallback1)(void); +extern void (*gBattleMainFunc)(void); extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for? extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for? extern u8 gBattleOutcome; @@ -80,12 +89,56 @@ extern struct MusicPlayerInfo gMPlay_SE2; extern u8 gDecompressionBuffer[]; extern u16 gUnknown_020243FC; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; +extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void); +extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; +extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; +extern u8 gStringBank; +extern u32 gUnknown_02022F88; +extern u32 gHitMarker; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; +extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT]; +extern u16 gPaydayMoney; +extern u16 gBattleWeather; +extern u16 gPauseCounterBattle; +extern u16 gRandomTurnNumber; +extern u8 gActiveBank; +extern u8 gNoOfAllBanks; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gLeveledUpInBattle; +extern u8 gAbsentBankFlags; +extern u32 gBattleExecBuffer; +extern u8 gMultiHitCounter; +extern u8 gBattleMoveFlags; +extern s32 gBattleMoveDamage; +extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; +extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; +extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; +extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT]; +extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT]; +extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT]; +extern u32 gStatuses3[BATTLE_BANKS_COUNT]; +extern u16 gSideAffecting[2]; +extern u16 gCurrentMove; +extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT]; +extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u8 gTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; +extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; +extern u8 gFightStateTracker; +extern u8 gLastUsedAbility; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const struct BattleMove gBattleMoves[]; extern const u16 gUnknown_08C004E0[]; // battle textbox palette extern const struct BgTemplate gUnknown_0831AA08[]; extern const struct WindowTemplate * const gUnknown_0831ABA0[]; +extern const u8 gUnknown_0831ACE0[]; // strings extern const u8 gText_LinkStandby3[]; @@ -94,6 +147,11 @@ extern const u8 gText_BattleYesNoChoice[]; extern const u8 gText_BattleRecordCouldntBeSaved[]; extern const u8 gText_BattleRecordedOnPass[]; extern const u8 gText_ShedinjaJapaneseName[]; +extern const u8 gText_EmptyString3[]; + +// battlescripts +extern const u8 gUnknown_082DB8BE[]; +extern const u8 gUnknown_082DB881[]; extern void HandleLinkBattleSetup(void); // rom_3 extern void SetUpBattleVarsAndBirchZigzagoon(void); // rom_3 @@ -109,6 +167,7 @@ extern void sub_800AC34(void); extern void sub_80B3AF8(u8 taskId); // cable club extern void sub_8076918(u8 bank); extern void sub_80729D0(u8 healthoxSpriteId); +extern void sub_81A56B4(void); // battle frontier 2 // this file's functions static void CB2_InitBattleInternal(void); @@ -133,6 +192,28 @@ static void sub_8039894(struct Sprite *sprite); static void sub_80398D0(struct Sprite *sprite); static void sub_8039A48(struct Sprite *sprite); void sub_8039AF4(struct Sprite *sprite); +void sub_8039E9C(struct Sprite *sprite); +void SpriteCallbackDummy_3(struct Sprite *sprite); +void oac_poke_ally_(struct Sprite *sprite); +void SpecialStatusesClear(void); +void TurnValuesCleanUp(u8); +static void SpriteCB_HealthBoxBounce(struct Sprite *sprite); +static void BattleStartClearSetData(void); +static void BattleIntroGetMonsData(void); +static void BattleIntroPrepareBackgroundSlide(void); +static void BattleIntroDrawTrainersOrMonsSprites(void); +static void BattleIntroDrawPartySummaryScreens(void); +static void BattleIntroPrintTrainerWantsToBattle(void); +static void BattleIntroPrintWildMonAttacked(void); +static void BattleIntroPrintOpponentSendsOut(void); +static void BattleIntroPrintPlayerSendsOut(void); +static void BattleIntroOpponent1SendsOutMonAnimation(void); +static void BattleIntroOpponent2SendsOutMonAnimation(void); +static void BattleIntroRecordMonsToDex(void); +static void BattleIntroPlayer1SendsOutMonAnimation(void); +static void TryDoEventsBeforeFirstTurn(void); +void sub_803BE74(void); +void bc_bs_exec(void); void CB2_InitBattle(void) { @@ -2244,10 +2325,6 @@ static void sub_80398BC(struct Sprite *sprite) // unused? sprite->callback = sub_80398D0; } -extern u32 gUnknown_02022F88; -extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; -extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; - static void sub_80398D0(struct Sprite *sprite) { sprite->data4--; @@ -2372,3 +2449,1290 @@ void sub_8039B2C(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy_2; } +void sub_8039B58(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + if (!(gHitMarker & HITMARKER_NO_ANIMATIONS) || gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + if (HasTwoFramesAnimation(sprite->tSpeciesId)) + StartSpriteAnim(sprite, 1); + } + BattleAnimateFrontSprite(sprite, sprite->tSpeciesId, TRUE, 1); + } +} + +void sub_8039BB4(struct Sprite *sprite) +{ + sprite->callback = oac_poke_ally_; +} + +void oac_poke_ally_(struct Sprite *sprite) +{ + if ((gUnknown_020243FC & 1) == 0) + { + sprite->pos2.x -= 2; + if (sprite->pos2.x == 0) + { + sprite->callback = SpriteCallbackDummy_3; + sprite->data1 = 0; + } + } +} + +void sub_80105DC(struct Sprite *sprite) +{ + sprite->callback = SpriteCallbackDummy_3; +} + +void SpriteCallbackDummy_3(struct Sprite *sprite) +{ +} + +void sub_8039C00(struct Sprite *sprite) +{ + if (!(gUnknown_020243FC & 1)) + { + sprite->pos2.x += sprite->data1; + sprite->pos2.y += sprite->data2; + } +} + +void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d) +{ + u8 bounceHealthBoxSpriteId; + u8 spriteId2; + + if (b) + { + if (gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2) + return; + } + else + { + if (gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4) + return; + } + + bounceHealthBoxSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HealthBoxBounce); + if (b == TRUE) + { + spriteId2 = gHealthBoxesIds[bank]; + gBattleSpritesDataPtr->healthBoxesData[bank].field_2 = bounceHealthBoxSpriteId; + gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 1; + gSprites[bounceHealthBoxSpriteId].data0 = 0x80; + } + else + { + spriteId2 = gBankSpriteIds[bank]; + gBattleSpritesDataPtr->healthBoxesData[bank].field_3 = bounceHealthBoxSpriteId; + gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 1; + gSprites[bounceHealthBoxSpriteId].data0 = 0xC0; + } + gSprites[bounceHealthBoxSpriteId].data1 = c; + gSprites[bounceHealthBoxSpriteId].data2 = d; + gSprites[bounceHealthBoxSpriteId].data3 = spriteId2; + gSprites[bounceHealthBoxSpriteId].data4 = b; + gSprites[spriteId2].pos2.x = 0; + gSprites[spriteId2].pos2.y = 0; +} + +void dp11b_obj_free(u8 bank, bool8 b) +{ + u8 r4; + + if (b == TRUE) + { + if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2) + return; + + r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2].data3; + DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2]); + gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 0; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4) + return; + + r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3].data3; + DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3]); + gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 0; + } + gSprites[r4].pos2.x = 0; + gSprites[r4].pos2.y = 0; +} + +static void SpriteCB_HealthBoxBounce(struct Sprite *sprite) +{ + u8 spriteId = sprite->data3; + s32 var; + + if (sprite->data4 == 1) + var = sprite->data0; + else + var = sprite->data0; + + gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2; + sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF; +} + +void sub_8039E44(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + BattleAnimateBackSprite(sprite, sprite->tSpeciesId); +} + +void sub_8039E60(struct Sprite *sprite) +{ + sub_8039E9C(sprite); + if (sprite->animEnded) + sprite->callback = SpriteCallbackDummy_3; +} + +void sub_8039E84(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, 1); + sprite->callback = sub_8039E60; +} + +void sub_8039E9C(struct Sprite *sprite) +{ + if (sprite->animDelayCounter == 0) + sprite->centerToCornerVecX = gUnknown_0831ACE0[sprite->animCmdIndex]; +} + +void nullsub_20(void) +{ + +} + +void BeginBattleIntro(void) +{ + BattleStartClearSetData(); + gBattleCommunication[1] = 0; + gBattleMainFunc = BattleIntroGetMonsData; +} + +void BattleMainCB1(void) +{ + gBattleMainFunc(); + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + gBattleBankFunc[gActiveBank](); +} + +static void BattleStartClearSetData(void) +{ + s32 i; + u32 j; + u8 *dataPtr; + + TurnValuesCleanUp(0); + SpecialStatusesClear(); + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + gStatuses3[i] = 0; + + dataPtr = (u8 *)&gDisableStructs[i]; + for (j = 0; j < sizeof(struct DisableStruct); j++) + dataPtr[j] = 0; + + gDisableStructs[i].isFirstTurn= 2; + gUnknown_02024284[i] = 0; + gLastUsedMovesByBanks[i] = 0; + gUnknown_02024250[i] = 0; + gUnknown_02024258[i] = 0; + gUnknown_02024260[i] = 0; + gUnknown_02024270[i] = 0xFF; + gLockedMoves[i] = 0; + gUnknownMovesUsedByBanks[i] = 0; + gBattleResources->flags->flags[i] = 0; + gUnknown_02024230[i] = 0; + } + + for (i = 0; i < 2; i++) + { + gSideAffecting[i] = 0; + + dataPtr = (u8 *)&gSideTimers[i]; + for (j = 0; j < sizeof(struct SideTimer); j++) + dataPtr[j] = 0; + } + + gBankAttacker = 0; + gBankTarget = 0; + gBattleWeather = 0; + + dataPtr = (u8 *)&gWishFutureKnock; + for (i = 0; i < sizeof(struct WishFutureKnock); i++) + dataPtr[i] = 0; + + gHitMarker = 0; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE) + gHitMarker |= HITMARKER_NO_ANIMATIONS; + } + else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && sub_8185FB8()) + gHitMarker |= HITMARKER_NO_ANIMATIONS; + + gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + + gMultiHitCounter = 0; + gBattleOutcome = 0; + gBattleExecBuffer = 0; + gPaydayMoney = 0; + gBattleResources->battleScriptsStack->size = 0; + gBattleResources->battleCallbackStack->size = 0; + + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) + gBattleCommunication[i] = 0; + + gPauseCounterBattle = 0; + gBattleMoveDamage = 0; + gUnknown_020243FC = 0; + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + gLeveledUpInBattle = 0; + gAbsentBankFlags = 0; + gBattleStruct->field_6C = 0; + gBattleStruct->field_79 = 0; + gBattleStruct->field_7A = 0; + *(&gBattleStruct->field_7C) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; + gBattleStruct->field_7B = 3; + gBattleStruct->wildVictorySong = 0; + gBattleStruct->moneyMultiplier = 1; + + for (i = 0; i < 8; i++) + { + *((u8 *)gBattleStruct->mirrorMoves + i) = 0; + *((u8 *)gBattleStruct->usedHeldItems + i) = 0; + *((u8 *)gBattleStruct->choicedMove + i) = 0; + *((u8 *)gBattleStruct->changedItems + i) = 0; + *(i + 0 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(i + 1 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(i + 2 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(i + 3 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + } + + for (i = 0; i < 4; i++) + { + *(gBattleStruct->field_294 + i) = 6; + } + + gBattleStruct->field_DF = 0; + gBattleStruct->field_92 = 0; + + gRandomTurnNumber = Random(); + + dataPtr = (u8 *)(&gBattleResults); + for (i = 0; i < sizeof(struct BattleResults); i++) + dataPtr[i] = 0; + + gBattleResults.unk5_6 = IsMonShiny(&gEnemyParty[0]); + + gBattleStruct->field_2A0 = 0; + gBattleStruct->field_2A1 = 0; +} + +void SwitchInClearSetData(void) +{ + struct DisableStruct disableStructCopy = gDisableStructs[gActiveBank]; + s32 i; + u8 *ptr; + + if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS) + { + for (i = 0; i < BATTLE_STATS_NO; i++) + gBattleMons[gActiveBank].statStages[i] = 6; + for (i = 0; i < gNoOfAllBanks; i++) + { + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank) + gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank) + { + gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; + gDisableStructs[i].bankWithSureHit = 0; + } + } + } + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); + gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(gActiveBank) != GetBankSide(i) + && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 + && (gDisableStructs[i].bankWithSureHit == gActiveBank)) + { + gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; + gStatuses3[i] |= 0x10; + } + } + } + else + { + gBattleMons[gActiveBank].status2 = 0; + gStatuses3[gActiveBank] = 0; + } + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBank)) + gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBank)); + if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBank) + gBattleMons[i].status2 &= ~(STATUS2_WRAPPED); + } + + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + + ptr = (u8 *)&gDisableStructs[gActiveBank]; + for (i = 0; i < sizeof(struct DisableStruct); i++) + ptr[i] = 0; + + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + gDisableStructs[gActiveBank].substituteHP = disableStructCopy.substituteHP; + gDisableStructs[gActiveBank].bankWithSureHit = disableStructCopy.bankWithSureHit; + gDisableStructs[gActiveBank].perishSong1 = disableStructCopy.perishSong1; + gDisableStructs[gActiveBank].perishSong2 = disableStructCopy.perishSong2; + gDisableStructs[gActiveBank].bankPreventingEscape = disableStructCopy.bankPreventingEscape; + } + + gBattleMoveFlags = 0; + gDisableStructs[gActiveBank].isFirstTurn= 2; + gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit; + gLastUsedMovesByBanks[gActiveBank] = 0; + gUnknown_02024250[gActiveBank] = 0; + gUnknown_02024258[gActiveBank] = 0; + gUnknown_02024260[gActiveBank] = 0; + gUnknownMovesUsedByBanks[gActiveBank] = 0; + gUnknown_02024270[gActiveBank] = 0xFF; + + *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0; + *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0; + *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + + gBattleStruct->field_92 &= ~(gBitTable[gActiveBank]); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (i != gActiveBank && GetBankSide(i) != GetBankSide(gActiveBank)) + { + *(gBattleStruct->mirrorMoves + i * 2 + 0) = 0; + *(gBattleStruct->mirrorMoves + i * 2 + 1) = 0; + } + *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + } + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0; + + gBattleResources->flags->flags[gActiveBank] = 0; + gCurrentMove = 0; + gBattleStruct->field_DA = 0xFF; + + ClearBankMoveHistory(gActiveBank); + ClearBankAbilityHistory(gActiveBank); +} + +void FaintClearSetData(void) +{ + s32 i; + u8 *ptr; + + for (i = 0; i < BATTLE_STATS_NO; i++) + gBattleMons[gActiveBank].statStages[i] = 6; + + gBattleMons[gActiveBank].status2 = 0; + gStatuses3[gActiveBank] = 0; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank) + gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; + if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBank)) + gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBank)); + if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBank) + gBattleMons[i].status2 &= ~(STATUS2_WRAPPED); + } + + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + + ptr = (u8 *)&gDisableStructs[gActiveBank]; + for (i = 0; i < sizeof(struct DisableStruct); i++) + ptr[i] = 0; + + gProtectStructs[gActiveBank].protected = 0; + gProtectStructs[gActiveBank].endured = 0; + gProtectStructs[gActiveBank].onlyStruggle = 0; + gProtectStructs[gActiveBank].helpingHand = 0; + gProtectStructs[gActiveBank].bounceMove = 0; + gProtectStructs[gActiveBank].stealMove = 0; + gProtectStructs[gActiveBank].flag0Unknown = 0; + gProtectStructs[gActiveBank].prlzImmobility = 0; + gProtectStructs[gActiveBank].confusionSelfDmg = 0; + gProtectStructs[gActiveBank].notEffective = 0; + gProtectStructs[gActiveBank].chargingTurn = 0; + gProtectStructs[gActiveBank].fleeFlag = 0; + gProtectStructs[gActiveBank].usedImprisionedMove = 0; + gProtectStructs[gActiveBank].loveImmobility = 0; + gProtectStructs[gActiveBank].usedDisabledMove = 0; + gProtectStructs[gActiveBank].usedTauntedMove = 0; + gProtectStructs[gActiveBank].flag2Unknown = 0; + gProtectStructs[gActiveBank].flinchImmobility = 0; + gProtectStructs[gActiveBank].notFirstStrike = 0; + + gDisableStructs[gActiveBank].isFirstTurn = 2; + + gLastUsedMovesByBanks[gActiveBank] = 0; + gUnknown_02024250[gActiveBank] = 0; + gUnknown_02024258[gActiveBank] = 0; + gUnknown_02024260[gActiveBank] = 0; + gUnknownMovesUsedByBanks[gActiveBank] = 0; + gUnknown_02024270[gActiveBank] = 0xFF; + + *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0; + *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0; + + *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0; + *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0; + *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + + gBattleStruct->field_92 &= ~(gBitTable[gActiveBank]); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (i != gActiveBank && GetBankSide(i) != GetBankSide(gActiveBank)) + { + *(gBattleStruct->mirrorMoves + i * 2 + 0) = 0; + *(gBattleStruct->mirrorMoves + i * 2 + 1) = 0; + } + *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; + *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0; + } + + gBattleResources->flags->flags[gActiveBank] = 0; + + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; + + ClearBankMoveHistory(gActiveBank); + ClearBankAbilityHistory(gActiveBank); +} + +static void BattleIntroGetMonsData(void) +{ + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + gActiveBank = gBattleCommunication[1]; + EmitGetMonData(0, 0, 0); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 1: + if (gBattleExecBuffer == 0) + { + gBattleCommunication[1]++; + if (gBattleCommunication[1] == gNoOfAllBanks) + gBattleMainFunc = BattleIntroPrepareBackgroundSlide; + else + gBattleCommunication[MULTIUSE_STATE] = 0; + } + break; + } +} + +static void BattleIntroPrepareBackgroundSlide(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBankByIdentity(0); + EmitIntroSlide(0, gBattleTerrain); + MarkBufferBankForExecution(gActiveBank); + gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites; + gBattleCommunication[0] = 0; + gBattleCommunication[1] = 0; + } +} + +static void BattleIntroDrawTrainersOrMonsSprites(void) +{ + u8 *ptr; + s32 i; + + if (gBattleExecBuffer) + return; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) + && GetBankSide(gActiveBank) == SIDE_PLAYER) + { + ptr = (u8 *)&gBattleMons[gActiveBank]; + for (i = 0; i < sizeof(struct BattlePokemon); i++) + ptr[i] = 0; + } + else + { + u16* hpOnSwitchout; + + ptr = (u8 *)&gBattleMons[gActiveBank]; + for (i = 0; i < sizeof(struct BattlePokemon); i++) + ptr[i] = gBattleBufferB[gActiveBank][4 + i]; + + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; + gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility); + hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(gActiveBank)]; + *hpOnSwitchout = gBattleMons[gActiveBank].hp; + for (i = 0; i < BATTLE_STATS_NO; i++) + gBattleMons[gActiveBank].statStages[i] = 6; + gBattleMons[gActiveBank].status2 = 0; + } + + if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1) + { + EmitDrawTrainerPic(0); + MarkBufferBankForExecution(gActiveBank); + } + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON1) + { + EmitDrawTrainerPic(0); + MarkBufferBankForExecution(gActiveBank); + } + if (GetBankSide(gActiveBank) == SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_x4000000))) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality); + } + } + else + { + if (GetBankSide(gActiveBank) == SIDE_OPPONENT) + { + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_x4000000))) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality); + } + EmitLoadMonSprite(0); + MarkBufferBankForExecution(gActiveBank); + gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL); + } + } + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2 + || GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2) + { + EmitDrawTrainerPic(0); + MarkBufferBankForExecution(gActiveBank); + } + } + + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2) + { + EmitDrawTrainerPic(0); + MarkBufferBankForExecution(gActiveBank); + } + + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + sub_81A56B4(); + } + gBattleMainFunc = BattleIntroDrawPartySummaryScreens; +} + +static void BattleIntroDrawPartySummaryScreens(void) +{ + s32 i; + struct HpAndStatus hpStatus[6]; + + if (gBattleExecBuffer) + return; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + for (i = 0; i < 6; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); + } + } + gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + EmitDrawPartyStatusSummary(0, hpStatus, 0x80); + MarkBufferBankForExecution(gActiveBank); + + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); + EmitDrawPartyStatusSummary(0, hpStatus, 0x80); + MarkBufferBankForExecution(gActiveBank); + + gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle; + } + else + { + // The struct gets set here, but nothing is ever done with it since + // wild battles don't show the party summary. + // Still, there's no point in having dead code. + + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + + gBattleMainFunc = BattleIntroPrintWildMonAttacked; + } + +} + +static void BattleIntroPrintTrainerWantsToBattle(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + PrepareStringBattle(0, gActiveBank); + gBattleMainFunc = BattleIntroPrintOpponentSendsOut; + } +} + +static void BattleIntroPrintWildMonAttacked(void) +{ + if (gBattleExecBuffer == 0) + { + gBattleMainFunc = BattleIntroPrintPlayerSendsOut; + PrepareStringBattle(0, 0); + } +} + +static void BattleIntroPrintOpponentSendsOut(void) +{ + u32 identity; + + if (gBattleExecBuffer) + return; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + identity = IDENTITY_OPPONENT_MON1; + else if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + identity = IDENTITY_OPPONENT_MON1; + else + identity = IDENTITY_PLAYER_MON1; + } + else + identity = IDENTITY_OPPONENT_MON1; + + PrepareStringBattle(1, GetBankByIdentity(identity)); + gBattleMainFunc = BattleIntroOpponent1SendsOutMonAnimation; +} + +static void BattleIntroOpponent2SendsOutMonAnimation(void) +{ + u32 identity; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + identity = IDENTITY_OPPONENT_MON2; + else if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + identity = IDENTITY_OPPONENT_MON2; + else + identity = IDENTITY_PLAYER_MON2; + } + else + identity = IDENTITY_OPPONENT_MON2; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankIdentity(gActiveBank) == identity) + { + EmitIntroTrainerBallThrow(0); + MarkBufferBankForExecution(gActiveBank); + } + } + + gBattleMainFunc = BattleIntroRecordMonsToDex; +} + +#ifdef NONMATCHING +static void BattleIntroOpponent1SendsOutMonAnimation(void) +{ + u32 identity; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + identity = IDENTITY_OPPONENT_MON1; + else if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + identity = IDENTITY_OPPONENT_MON1; + else + identity = IDENTITY_PLAYER_MON1; + } + else + identity = IDENTITY_OPPONENT_MON1; + + if (gBattleExecBuffer) + return; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankIdentity(gActiveBank) == identity) + { + EmitIntroTrainerBallThrow(0); + MarkBufferBankForExecution(gActiveBank); + if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS)) + { + gBattleMainFunc = BattleIntroOpponent2SendsOutMonAnimation; + return; + } + } + } + + gBattleMainFunc = BattleIntroRecordMonsToDex; +} + +#else +__attribute__((naked)) +static void BattleIntroOpponent1SendsOutMonAnimation(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r2, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 17\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0803B298\n\ + movs r0, 0x80\n\ + lsls r0, 18\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0803B298\n\ + movs r1, 0x80\n\ + lsls r1, 24\n\ + ands r1, r2\n\ + negs r0, r1\n\ + orrs r0, r1\n\ + lsrs r5, r0, 31\n\ + b _0803B29A\n\ + .pool\n\ +_0803B288:\n\ + ldr r1, =gBattleMainFunc\n\ + ldr r0, =BattleIntroOpponent2SendsOutMonAnimation\n\ + b _0803B2F0\n\ + .pool\n\ +_0803B298:\n\ + movs r5, 0x1\n\ +_0803B29A:\n\ + ldr r0, =gBattleExecBuffer\n\ + ldr r2, [r0]\n\ + cmp r2, 0\n\ + bne _0803B2F2\n\ + ldr r0, =gActiveBank\n\ + strb r2, [r0]\n\ + ldr r1, =gNoOfAllBanks\n\ + adds r4, r0, 0\n\ + ldrb r1, [r1]\n\ + cmp r2, r1\n\ + bcs _0803B2EC\n\ + adds r6, r4, 0\n\ +_0803B2B2:\n\ + ldrb r0, [r4]\n\ + bl GetBankIdentity\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + bne _0803B2D8\n\ + movs r0, 0\n\ + bl EmitIntroTrainerBallThrow\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r0, [r0]\n\ + ldr r1, =0x00008040\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0803B288\n\ +_0803B2D8:\n\ + ldrb r0, [r6]\n\ + adds r0, 0x1\n\ + strb r0, [r6]\n\ + ldr r1, =gNoOfAllBanks\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r4, =gActiveBank\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _0803B2B2\n\ +_0803B2EC:\n\ + ldr r1, =gBattleMainFunc\n\ + ldr r0, =BattleIntroRecordMonsToDex\n\ +_0803B2F0:\n\ + str r0, [r1]\n\ +_0803B2F2:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +static void BattleIntroRecordMonsToDex(void) +{ + if (gBattleExecBuffer == 0) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankSide(gActiveBank) == SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_x4000000))) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality); + } + } + gBattleMainFunc = BattleIntroPrintPlayerSendsOut; + } +} + +void sub_803B3AC(void) // unused +{ + if (gBattleExecBuffer == 0) + gBattleMainFunc = BattleIntroPrintPlayerSendsOut; +} + +static void BattleIntroPrintPlayerSendsOut(void) +{ + if (gBattleExecBuffer == 0) + { + u8 identity; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + identity = IDENTITY_PLAYER_MON1; + else if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + identity = IDENTITY_PLAYER_MON1; + else + identity = IDENTITY_OPPONENT_MON1; + } + else + identity = IDENTITY_PLAYER_MON1; + + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + PrepareStringBattle(1, GetBankByIdentity(identity)); + + gBattleMainFunc = BattleIntroPlayer1SendsOutMonAnimation; + } +} + +static void BattleIntroPlayer2SendsOutMonAnimation(void) +{ + u32 identity; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + identity = IDENTITY_PLAYER_MON2; + else if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + identity = IDENTITY_PLAYER_MON2; + else + identity = IDENTITY_OPPONENT_MON2; + } + else + identity = IDENTITY_PLAYER_MON2; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankIdentity(gActiveBank) == identity) + { + EmitIntroTrainerBallThrow(0); + MarkBufferBankForExecution(gActiveBank); + } + } + + gBattleStruct->switchInAbilitiesCounter = 0; + gBattleStruct->switchInItemsCounter = 0; + gBattleStruct->overworldWeatherDone = FALSE; + + gBattleMainFunc = TryDoEventsBeforeFirstTurn; +} + +static void BattleIntroPlayer1SendsOutMonAnimation(void) +{ + u32 identity; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + identity = IDENTITY_PLAYER_MON1; + else if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + identity = IDENTITY_PLAYER_MON1; + else + identity = IDENTITY_OPPONENT_MON1; + } + else + identity = IDENTITY_PLAYER_MON1; + + if (gBattleExecBuffer) + return; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankIdentity(gActiveBank) == identity) + { + EmitIntroTrainerBallThrow(0); + MarkBufferBankForExecution(gActiveBank); + if (gBattleTypeFlags & (BATTLE_TYPE_MULTI)) + { + gBattleMainFunc = BattleIntroPlayer2SendsOutMonAnimation; + return; + } + } + } + + gBattleStruct->switchInAbilitiesCounter = 0; + gBattleStruct->switchInItemsCounter = 0; + gBattleStruct->overworldWeatherDone = FALSE; + + gBattleMainFunc = TryDoEventsBeforeFirstTurn; +} + +void sub_803B598(void) // unused +{ + if (gBattleExecBuffer == 0) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], FALSE); + MarkBufferBankForExecution(gActiveBank); + } + } + + gBattleStruct->switchInAbilitiesCounter = 0; + gBattleStruct->switchInItemsCounter = 0; + gBattleStruct->overworldWeatherDone = FALSE; + + gBattleMainFunc = TryDoEventsBeforeFirstTurn; + } +} + +static void TryDoEventsBeforeFirstTurn(void) +{ + s32 i; + s32 j; + u8 effect = 0; + + if (gBattleExecBuffer) + return; + + if (gBattleStruct->switchInAbilitiesCounter == 0) + { + for (i = 0; i < gNoOfAllBanks; i++) + gTurnOrder[i] = i; + for (i = 0; i < gNoOfAllBanks - 1; i++) + { + for (j = i + 1; j < gNoOfAllBanks; j++) + { + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], TRUE) != 0) + sub_803CEDC(i, j); + } + } + } + if (!gBattleStruct->overworldWeatherDone + && AbilityBattleEffects(0, 0, 0, ABILITYEFFECT_SWITCH_IN_WEATHER, 0) != 0) + { + gBattleStruct->overworldWeatherDone = TRUE; + return; + } + // check all switch in abilities happening from the fastest mon to slowest + while (gBattleStruct->switchInAbilitiesCounter < gNoOfAllBanks) + { + if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0) + effect++; + + gBattleStruct->switchInAbilitiesCounter++; + + if (effect) + return; + } + if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0) + return; + if (AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) != 0) + return; + // check all switch in items having effect from the fastest mon to slowest + while (gBattleStruct->switchInItemsCounter < gNoOfAllBanks) + { + if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0) + effect++; + + gBattleStruct->switchInItemsCounter++; + + if (effect) + return; + } + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + *(gBattleStruct->field_5C + i) = 6; + gActionForBanks[i] = 0xFF; + gChosenMovesByBanks[i] = 0; + } + TurnValuesCleanUp(0); + SpecialStatusesClear(); + *(&gBattleStruct->field_91) = gAbsentBankFlags; + sub_814F9EC(gText_EmptyString3, 0); + gBattleMainFunc = sub_803BE74; + ResetSentPokesToOpponentValue(); + + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) + gBattleCommunication[i] = 0; + + for (i = 0; i < gNoOfAllBanks; i++) + gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); + + *(&gBattleStruct->turnEffectsTracker) = 0; + *(&gBattleStruct->turnEffectsBank) = 0; + *(&gBattleStruct->field_1A0) = 0; + *(&gBattleStruct->field_1A1) = 0; + gBattleScripting.atk49_state = 0; + gBattleStruct->field_4D = 0; + gBattleStruct->turncountersTracker = 0; + gBattleMoveFlags = 0; + + gRandomTurnNumber = Random(); + + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + { + StopCryAndClearCrySongs(); + BattleScriptExecute(gUnknown_082DB8BE); + } +} + +void HandleEndTurn_ContinueBattle(void) +{ + s32 i; + + if (gBattleExecBuffer == 0) + { + gBattleMainFunc = BattleTurnPassed; + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) + gBattleCommunication[i] = 0; + for (i = 0; i < gNoOfAllBanks; i++) + { + gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); + if ((gBattleMons[i].status1 & STATUS_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS)) + CancelMultiTurnMoves(i); + } + gBattleStruct->turnEffectsTracker = 0; + gBattleStruct->turnEffectsBank = 0; + gBattleStruct->field_1A0 = 0; + gBattleStruct->field_1A1 = 0; + gBattleStruct->turncountersTracker = 0; + gBattleMoveFlags = 0; + } +} + +void BattleTurnPassed(void) +{ + s32 i; + + TurnValuesCleanUp(1); + if (gBattleOutcome == 0) + { + if (UpdateTurnCounters() != 0) + return; + if (TurnBasedEffects() != 0) + return; + } + if (sub_8041728() != 0) + return; + gBattleStruct->field_4D = 0; + if (sub_8041364() != 0) + return; + + TurnValuesCleanUp(0); + gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); + gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); + gHitMarker &= ~(HITMARKER_x400000); + gHitMarker &= ~(HITMARKER_x100000); + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + gBattleScripting.atk49_state = 0; + gBattleMoveDamage = 0; + gBattleMoveFlags = 0; + + for (i = 0; i < 5; i++) + gBattleCommunication[i] = 0; + + if (gBattleOutcome != 0) + { + gFightStateTracker = 12; + gBattleMainFunc = bc_bs_exec; + return; + } + + if (gBattleResults.battleTurnCounter < 0xFF) + { + gBattleResults.battleTurnCounter++; + gBattleStruct->field_DA++; + } + + for (i = 0; i < gNoOfAllBanks; i++) + { + gActionForBanks[i] = 0xFF; + gChosenMovesByBanks[i] = 0; + } + + for (i = 0; i < 4; i++) + *(gBattleStruct->field_5C + i) = 6; + + *(&gBattleStruct->field_91) = gAbsentBankFlags; + sub_814F9EC(gText_EmptyString3, 0); + gBattleMainFunc = sub_803BE74; + gRandomTurnNumber = Random(); + + if (gBattleTypeFlags & BATTLE_TYPE_PALACE) + BattleScriptExecute(gUnknown_082DB881); + else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0) + BattleScriptExecute(gUnknown_082DB8BE); +} + +u8 IsRunningFromBattleImpossible(void) +{ + u8 holdEffect; + u8 side; + s32 i; + + if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gActiveBank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); + + gStringBank = gActiveBank; + + if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) + return 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + return 0; + if (gBattleMons[gActiveBank].ability == ABILITY_RUN_AWAY) + return 0; + + side = GetBankSide(gActiveBank); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (side != GetBankSide(i) + && gBattleMons[i].ability == ABILITY_SHADOW_TAG) + { + gBattleScripting.bank = i; + gLastUsedAbility = gBattleMons[i].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return 2; + } + if (side != GetBankSide(i) + && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE + && gBattleMons[gActiveBank].type1 != TYPE_FLYING + && gBattleMons[gActiveBank].type2 != TYPE_FLYING + && gBattleMons[i].ability == ABILITY_ARENA_TRAP) + { + gBattleScripting.bank = i; + gLastUsedAbility = gBattleMons[i].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return 2; + } + } + i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBank, ABILITY_MAGNET_PULL, 0, 0); + if (i != 0 && (gBattleMons[gActiveBank].type1 == TYPE_STEEL || gBattleMons[gActiveBank].type2 == TYPE_STEEL)) + { + gBattleScripting.bank = i - 1; + gLastUsedAbility = gBattleMons[i - 1].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return 2; + } + if ((gBattleMons[gActiveBank].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) + || (gStatuses3[gActiveBank] & STATUS3_ROOTED)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + return 1; + } + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + return 1; + } + return 0; +} diff --git a/src/battle_3.c b/src/battle_3.c index e42d9317d2..071e4d59d8 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -178,9 +178,6 @@ extern const u8 gStatusConditionString_ConfusionJpn[]; extern const u8 gStatusConditionString_LoveJpn[]; extern const u16 gSoundMovesTable[]; -extern u8 b_first_side(u8, u8, u8); -extern void sub_803CEDC(u8, u8); -extern void BattleTurnPassed(void); extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); extern u8 weather_get_current(void); @@ -414,7 +411,7 @@ u8 UpdateTurnCounters(void) s32 j; for (j = i + 1; j < gNoOfAllBanks; j++) { - if (b_first_side(gTurnOrder[i], gTurnOrder[j], 0)) + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) sub_803CEDC(i, j); } } @@ -1667,7 +1664,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBankAttacker = bank; switch (gLastUsedAbility) { - case 0xFF: //weather from overworld + case ABILITYEFFECT_SWITCH_IN_WEATHER: //_08042A86 switch (weather_get_current()) { diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index dae43f13c5..92126e40c7 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -73,7 +73,7 @@ extern const struct BaseStats gBaseStats[]; extern const u32 gBitTable[]; extern u8 * const gBattleAI_ScriptsTable[]; -extern u8 b_first_side(u8, u8, u8); +extern u8 GetWhoStrikesFirst(u8, u8, u8); extern void AI_CalcDmg(u8, u8); extern u8 CheckMoveLimitations(); @@ -1756,7 +1756,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (b_first_side(sBank_AI, gBankTarget, 1) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(sBank_AI, gBankTarget, 1) == gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1764,7 +1764,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (b_first_side(sBank_AI, gBankTarget, 1) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(sBank_AI, gBankTarget, 1) != gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 03e1b6a4a6..88c62841d5 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -360,7 +360,7 @@ static void atk5D_getmoneyreward(void); static void atk5E_8025A70(void); static void atk5F_8025B24(void); static void atk60_increment_gamestat(void); -static void atk61_8025BA4(void); +static void atk61_draw_party_status_summary(void); static void atk62_08025C6C(void); static void atk63_jumptorandomattack(void); static void atk64_statusanimation(void); @@ -612,7 +612,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk5E_8025A70, atk5F_8025B24, atk60_increment_gamestat, - atk61_8025BA4, + atk61_draw_party_status_summary, atk62_08025C6C, atk63_jumptorandomattack, atk64_statusanimation, @@ -3251,7 +3251,7 @@ static void atk1B_faint_effects_clear(void) MarkBufferBankForExecution(gActiveBank); } - UndoEffectsAfterFainting(); // Effects like attractions, trapping, etc. + FaintClearSetData(); // Effects like attractions, trapping, etc. gBattlescriptCurrInstr += 2; } } @@ -5366,7 +5366,7 @@ static void atk4D_switch_data_update(void) gBattleMons[gActiveBank].status2 = oldData.status2; } - SwitchInClearStructs(); + SwitchInClearSetData(); if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp && gBattleMons[gActiveBank].hp != 0 && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)) @@ -6411,7 +6411,7 @@ static void atk60_increment_gamestat(void) gBattlescriptCurrInstr += 2; } -static void atk61_8025BA4(void) +static void atk61_draw_party_status_summary(void) { s32 i; struct Pokemon* party; @@ -6442,7 +6442,7 @@ static void atk61_8025BA4(void) } } - EmitCmd48(0, hpStatuses, 1); + EmitDrawPartyStatusSummary(0, hpStatuses, 1); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index e4934306cc..5ff99aee26 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1519,8 +1519,6 @@ void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u DoMonFrontSpriteAnimation(sprite, species, noCry, arg3); } -bool8 HasTwoFramesAnimation(u16 species); - extern void SpriteCallbackDummy_2(struct Sprite*); extern void sub_817F60C(struct Sprite*); diff --git a/sym_ewram.txt b/sym_ewram.txt index aecb28dac8..287bc4a5d2 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -445,7 +445,7 @@ gPauseCounterBattle: @ 202432C gPaydayMoney: @ 202432E .space 0x2 -gUnknown_02024330: @ 2024330 +gRandomTurnNumber: @ 2024330 .space 0x2 gBattleCommunication: @ 2024332 @@ -499,10 +499,10 @@ gUnknown_020244A4: @ 20244A4 gBattleResources: @ 20244A8 .space 0x4 -gUnknown_020244AC: @ 20244AC +gActionSelectionCursor: @ 20244AC .space 0x4 -gUnknown_020244B0: @ 20244B0 +gMoveSelectionCursor: @ 20244B0 .space 0x4 gUnknown_020244B4: @ 20244B4 From d43b6227bb5a81a4479ad0ecc33d661910c85d74 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 2 Oct 2017 20:53:58 -0400 Subject: [PATCH 080/182] Rip tileset anims --- data/tileset.s | 304 ++++++++---------- data/tilesets/primary/building/anim/0.png | Bin 0 -> 141 bytes data/tilesets/primary/building/anim/1.png | Bin 0 -> 144 bytes data/tilesets/primary/general/anim/0/0.png | Bin 0 -> 183 bytes data/tilesets/primary/general/anim/0/1.png | Bin 0 -> 182 bytes data/tilesets/primary/general/anim/0/2.png | Bin 0 -> 183 bytes data/tilesets/primary/general/anim/1/0.png | Bin 0 -> 518 bytes data/tilesets/primary/general/anim/1/1.png | Bin 0 -> 581 bytes data/tilesets/primary/general/anim/1/2.png | Bin 0 -> 534 bytes data/tilesets/primary/general/anim/1/3.png | Bin 0 -> 527 bytes data/tilesets/primary/general/anim/1/4.png | Bin 0 -> 461 bytes data/tilesets/primary/general/anim/1/5.png | Bin 0 -> 460 bytes data/tilesets/primary/general/anim/1/6.png | Bin 0 -> 480 bytes data/tilesets/primary/general/anim/1/7.png | Bin 0 -> 521 bytes data/tilesets/primary/general/anim/2/0.png | Bin 0 -> 194 bytes data/tilesets/primary/general/anim/2/1.png | Bin 0 -> 243 bytes data/tilesets/primary/general/anim/2/2.png | Bin 0 -> 262 bytes data/tilesets/primary/general/anim/2/3.png | Bin 0 -> 280 bytes data/tilesets/primary/general/anim/2/4.png | Bin 0 -> 232 bytes data/tilesets/primary/general/anim/2/5.png | Bin 0 -> 220 bytes data/tilesets/primary/general/anim/2/6.png | Bin 0 -> 203 bytes data/tilesets/primary/general/anim/3/0.png | Bin 0 -> 136 bytes data/tilesets/primary/general/anim/3/1.png | Bin 0 -> 154 bytes data/tilesets/primary/general/anim/3/2.png | Bin 0 -> 133 bytes data/tilesets/primary/general/anim/3/3.png | Bin 0 -> 130 bytes data/tilesets/primary/general/anim/4/0.png | Bin 0 -> 304 bytes data/tilesets/primary/general/anim/4/1.png | Bin 0 -> 311 bytes data/tilesets/primary/general/anim/4/2.png | Bin 0 -> 314 bytes data/tilesets/primary/general/anim/4/3.png | Bin 0 -> 328 bytes data/tilesets/primary/general/tiles.png | Bin 7587 -> 7786 bytes .../primary/inside_building/tiles.png | Bin 1556 -> 1813 bytes data/tilesets/primary/secret_base/tiles.png | Bin 7136 -> 7869 bytes .../primary/secret_base/unknown_tiles.png | Bin 1212 -> 1316 bytes .../tilesets/secondary/battle_arena/tiles.png | Bin 2067 -> 2340 bytes data/tilesets/secondary/battle_dome/tiles.png | Bin 3193 -> 3626 bytes .../secondary/battle_factory/tiles.png | Bin 3313 -> 3694 bytes .../secondary/battle_frontier/tiles.png | Bin 2368 -> 2647 bytes .../battle_frontier_outside_east/anim/0.png | Bin 0 -> 191 bytes .../battle_frontier_outside_east/anim/1.png | Bin 0 -> 188 bytes .../battle_frontier_outside_east/anim/2.png | Bin 0 -> 185 bytes .../battle_frontier_outside_east/anim/3.png | Bin 0 -> 183 bytes .../battle_frontier_outside_east/tiles.png | Bin 3750 -> 3834 bytes .../battle_frontier_outside_west/anim/0.png | Bin 0 -> 191 bytes .../battle_frontier_outside_west/anim/1.png | Bin 0 -> 188 bytes .../battle_frontier_outside_west/anim/2.png | Bin 0 -> 185 bytes .../battle_frontier_outside_west/anim/3.png | Bin 0 -> 183 bytes .../battle_frontier_outside_west/tiles.png | Bin 5505 -> 5892 bytes .../battle_frontier_ranking_hall/tiles.png | Bin 1451 -> 1700 bytes .../secondary/battle_palace/tiles.png | Bin 1513 -> 1633 bytes data/tilesets/secondary/battle_pike/tiles.png | Bin 3922 -> 4013 bytes .../secondary/battle_pyramid/anim/0/0.png | Bin 0 -> 228 bytes .../secondary/battle_pyramid/anim/0/1.png | Bin 0 -> 220 bytes .../secondary/battle_pyramid/anim/0/2.png | Bin 0 -> 219 bytes .../secondary/battle_pyramid/anim/1/0.png | Bin 0 -> 261 bytes .../secondary/battle_pyramid/anim/1/1.png | Bin 0 -> 267 bytes .../secondary/battle_pyramid/anim/1/2.png | Bin 0 -> 261 bytes .../secondary/battle_pyramid/anim/1/3.png | Bin 0 -> 105 bytes .../secondary/battle_pyramid/anim/1/4.png | Bin 0 -> 86 bytes .../secondary/battle_pyramid/anim/1/5.png | Bin 0 -> 86 bytes .../secondary/battle_pyramid/anim/1/6.png | Bin 0 -> 106 bytes .../secondary/battle_pyramid/anim/1/7.png | Bin 0 -> 393 bytes .../secondary/battle_pyramid/anim/1/8.png | Bin 0 -> 105 bytes .../secondary/battle_pyramid/anim/1/9.png | Bin 0 -> 111 bytes .../secondary/battle_pyramid/tiles.png | Bin 3208 -> 3504 bytes data/tilesets/secondary/battle_tent/tiles.png | Bin 1696 -> 2084 bytes data/tilesets/secondary/bike_shop/anim/0.png | Bin 0 -> 250 bytes data/tilesets/secondary/bike_shop/anim/1.png | Bin 0 -> 249 bytes data/tilesets/secondary/bike_shop/anim/2.png | Bin 0 -> 219 bytes data/tilesets/secondary/bike_shop/tiles.png | Bin 3270 -> 3505 bytes .../secondary/brendans_mays_house/tiles.png | Bin 2616 -> 3074 bytes data/tilesets/secondary/cable_club/tiles.png | Bin 2445 -> 2590 bytes .../secondary/cable_club/unknown_tiles.png | Bin 287 -> 311 bytes data/tilesets/secondary/cave/anim/0.png | Bin 0 -> 100 bytes data/tilesets/secondary/cave/anim/1.png | Bin 0 -> 126 bytes data/tilesets/secondary/cave/anim/2.png | Bin 0 -> 108 bytes data/tilesets/secondary/cave/anim/3.png | Bin 0 -> 109 bytes .../tilesets/secondary/cave/anim/unused/0.png | Bin 0 -> 100 bytes .../tilesets/secondary/cave/anim/unused/1.png | Bin 0 -> 121 bytes .../tilesets/secondary/cave/anim/unused/2.png | Bin 0 -> 108 bytes .../tilesets/secondary/cave/anim/unused/3.png | Bin 0 -> 105 bytes data/tilesets/secondary/cave/tiles.png | Bin 5767 -> 5884 bytes data/tilesets/secondary/contest/tiles.png | Bin 1638 -> 1650 bytes data/tilesets/secondary/dewford/anim/0.png | Bin 0 -> 185 bytes data/tilesets/secondary/dewford/anim/1.png | Bin 0 -> 185 bytes data/tilesets/secondary/dewford/anim/2.png | Bin 0 -> 185 bytes data/tilesets/secondary/dewford/anim/3.png | Bin 0 -> 192 bytes data/tilesets/secondary/dewford/tiles.png | Bin 3756 -> 3985 bytes data/tilesets/secondary/dewford_gym/tiles.png | Bin 598 -> 640 bytes .../secondary/elite_four/anim/0/0.png | Bin 0 -> 91 bytes .../secondary/elite_four/anim/0/1.png | Bin 0 -> 91 bytes .../secondary/elite_four/anim/0/2.png | Bin 0 -> 91 bytes .../secondary/elite_four/anim/0/3.png | Bin 0 -> 91 bytes .../secondary/elite_four/anim/1/0.png | Bin 0 -> 135 bytes .../secondary/elite_four/anim/1/1.png | Bin 0 -> 72 bytes .../secondary/elite_four/anim/1/2.png | Bin 0 -> 1260 bytes .../secondary/elite_four/anim/1/3.png | Bin 0 -> 1184 bytes .../secondary/elite_four/anim/1/4.png | Bin 0 -> 1190 bytes .../secondary/elite_four/anim/1/5.png | Bin 0 -> 1248 bytes .../secondary/elite_four/anim/1/6.png | Bin 0 -> 1161 bytes .../secondary/elite_four/anim/1/7.png | Bin 0 -> 1153 bytes data/tilesets/secondary/elite_four/tiles.png | Bin 2826 -> 2876 bytes .../tilesets/secondary/ever_grande/anim/0.png | Bin 0 -> 204 bytes .../tilesets/secondary/ever_grande/anim/1.png | Bin 0 -> 204 bytes .../tilesets/secondary/ever_grande/anim/2.png | Bin 0 -> 197 bytes .../tilesets/secondary/ever_grande/anim/3.png | Bin 0 -> 200 bytes .../tilesets/secondary/ever_grande/anim/4.png | Bin 0 -> 204 bytes .../tilesets/secondary/ever_grande/anim/5.png | Bin 0 -> 204 bytes .../tilesets/secondary/ever_grande/anim/6.png | Bin 0 -> 201 bytes .../tilesets/secondary/ever_grande/anim/7.png | Bin 0 -> 201 bytes data/tilesets/secondary/ever_grande/tiles.png | Bin 2088 -> 2208 bytes data/tilesets/secondary/facility/tiles.png | Bin 5753 -> 6352 bytes data/tilesets/secondary/fallarbor/tiles.png | Bin 4602 -> 4781 bytes data/tilesets/secondary/fortree/tiles.png | Bin 4364 -> 4342 bytes data/tilesets/secondary/fortree_gym/tiles.png | Bin 771 -> 770 bytes .../secondary/generic_building/tiles.png | Bin 4949 -> 5607 bytes .../secondary/inside_of_truck/tiles.png | Bin 514 -> 545 bytes data/tilesets/secondary/inside_ship/tiles.png | Bin 2016 -> 2149 bytes .../secondary/island_harbor/tiles.png | Bin 5093 -> 5639 bytes data/tilesets/secondary/lab/tiles.png | Bin 2592 -> 2844 bytes data/tilesets/secondary/lavaridge/anim/0.png | Bin 0 -> 83 bytes data/tilesets/secondary/lavaridge/anim/1.png | Bin 0 -> 92 bytes data/tilesets/secondary/lavaridge/anim/2.png | Bin 0 -> 88 bytes data/tilesets/secondary/lavaridge/anim/3.png | Bin 0 -> 100 bytes data/tilesets/secondary/lavaridge/tiles.png | Bin 4087 -> 4215 bytes .../secondary/lavaridge_gym/tiles.png | Bin 631 -> 713 bytes data/tilesets/secondary/lilycove/tiles.png | Bin 3597 -> 3912 bytes .../secondary/lilycove_museum/tiles.png | Bin 3345 -> 3938 bytes .../secondary/mauville/anim/0/a/0.png | Bin 0 -> 177 bytes .../secondary/mauville/anim/0/a/1.png | Bin 0 -> 175 bytes .../secondary/mauville/anim/0/a/2.png | Bin 0 -> 171 bytes .../secondary/mauville/anim/0/a/3.png | Bin 0 -> 160 bytes .../secondary/mauville/anim/0/a/4.png | Bin 0 -> 178 bytes .../secondary/mauville/anim/0/a/5.png | Bin 0 -> 177 bytes .../secondary/mauville/anim/0/a/6.png | Bin 0 -> 175 bytes .../secondary/mauville/anim/0/a/7.png | Bin 0 -> 171 bytes .../secondary/mauville/anim/0/a/8.png | Bin 0 -> 160 bytes .../secondary/mauville/anim/0/a/9.png | Bin 0 -> 178 bytes .../secondary/mauville/anim/0/b/0.png | Bin 0 -> 177 bytes .../secondary/mauville/anim/0/b/1.png | Bin 0 -> 175 bytes .../secondary/mauville/anim/0/b/2.png | Bin 0 -> 171 bytes .../secondary/mauville/anim/0/b/3.png | Bin 0 -> 160 bytes .../secondary/mauville/anim/0/b/4.png | Bin 0 -> 72 bytes .../secondary/mauville/anim/0/b/5.png | Bin 0 -> 72 bytes .../secondary/mauville/anim/0/b/6.png | Bin 0 -> 72 bytes .../secondary/mauville/anim/0/b/7.png | Bin 0 -> 72 bytes .../secondary/mauville/anim/1/a/0.png | Bin 0 -> 177 bytes .../secondary/mauville/anim/1/a/1.png | Bin 0 -> 178 bytes .../secondary/mauville/anim/1/a/2.png | Bin 0 -> 171 bytes .../secondary/mauville/anim/1/a/3.png | Bin 0 -> 160 bytes .../secondary/mauville/anim/1/b/0.png | Bin 0 -> 177 bytes .../secondary/mauville/anim/1/b/1.png | Bin 0 -> 178 bytes .../secondary/mauville/anim/1/b/2.png | Bin 0 -> 171 bytes .../secondary/mauville/anim/1/b/3.png | Bin 0 -> 160 bytes .../secondary/mauville/anim/1/b/4.png | Bin 0 -> 100 bytes .../secondary/mauville/anim/1/b/5.png | Bin 0 -> 121 bytes .../secondary/mauville/anim/1/b/6.png | Bin 0 -> 108 bytes .../secondary/mauville/anim/1/b/7.png | Bin 0 -> 105 bytes data/tilesets/secondary/mauville/tiles.png | Bin 6019 -> 6372 bytes .../secondary/mauville_game_corner/tiles.png | Bin 1567 -> 1788 bytes .../secondary/mauville_gym/anim/0.png | Bin 0 -> 215 bytes .../secondary/mauville_gym/anim/1.png | Bin 0 -> 218 bytes .../secondary/mauville_gym/anim/2.png | Bin 0 -> 106 bytes .../secondary/mauville_gym/anim/3.png | Bin 0 -> 393 bytes .../tilesets/secondary/mauville_gym/tiles.png | Bin 1454 -> 1534 bytes .../tilesets/secondary/meteor_falls/tiles.png | Bin 5968 -> 6078 bytes .../tilesets/secondary/mirage_tower/tiles.png | Bin 5561 -> 5645 bytes data/tilesets/secondary/mossdeep/tiles.png | Bin 4060 -> 4269 bytes .../secondary/mossdeep_game_corner/tiles.png | Bin 838 -> 893 bytes .../tilesets/secondary/mossdeep_gym/tiles.png | Bin 927 -> 969 bytes .../secondary/mystery_events_house/tiles.png | Bin 4799 -> 5383 bytes data/tilesets/secondary/navel_rock/tiles.png | Bin 5966 -> 6073 bytes .../secondary/oceanic_museum/tiles.png | Bin 2662 -> 3219 bytes .../secondary/pacifidlog/anim/0/0.png | Bin 0 -> 596 bytes .../secondary/pacifidlog/anim/0/1.png | Bin 0 -> 603 bytes .../secondary/pacifidlog/anim/0/2.png | Bin 0 -> 625 bytes .../secondary/pacifidlog/anim/1/0.png | Bin 0 -> 198 bytes .../secondary/pacifidlog/anim/1/1.png | Bin 0 -> 219 bytes .../secondary/pacifidlog/anim/1/2.png | Bin 0 -> 241 bytes .../secondary/pacifidlog/anim/1/3.png | Bin 0 -> 213 bytes .../secondary/pacifidlog/anim/1/4.png | Bin 0 -> 138 bytes .../secondary/pacifidlog/anim/1/5.png | Bin 0 -> 140 bytes .../secondary/pacifidlog/anim/1/6.png | Bin 0 -> 138 bytes .../secondary/pacifidlog/anim/1/7.png | Bin 0 -> 200 bytes data/tilesets/secondary/pacifidlog/tiles.png | Bin 4688 -> 4812 bytes data/tilesets/secondary/petalburg/tiles.png | Bin 1689 -> 1910 bytes .../secondary/petalburg_gym/tiles.png | Bin 1222 -> 1429 bytes .../secondary/pokemon_center/tiles.png | Bin 3461 -> 3645 bytes .../secondary/pokemon_day_care/tiles.png | Bin 1451 -> 1528 bytes .../secondary/pokemon_fan_club/tiles.png | Bin 1242 -> 1373 bytes .../secondary/pokemon_school/tiles.png | Bin 980 -> 1027 bytes .../pretty_petal_flower_shop/tiles.png | Bin 1839 -> 1951 bytes data/tilesets/secondary/rustboro/anim/0/0.png | Bin 0 -> 119 bytes data/tilesets/secondary/rustboro/anim/0/1.png | Bin 0 -> 113 bytes data/tilesets/secondary/rustboro/anim/0/2.png | Bin 0 -> 72 bytes data/tilesets/secondary/rustboro/anim/0/3.png | Bin 0 -> 72 bytes data/tilesets/secondary/rustboro/anim/0/4.png | Bin 0 -> 72 bytes data/tilesets/secondary/rustboro/anim/0/5.png | Bin 0 -> 72 bytes data/tilesets/secondary/rustboro/anim/0/6.png | Bin 0 -> 72 bytes data/tilesets/secondary/rustboro/anim/0/7.png | Bin 0 -> 72 bytes data/tilesets/secondary/rustboro/anim/1/0.png | Bin 0 -> 201 bytes data/tilesets/secondary/rustboro/anim/1/1.png | Bin 0 -> 198 bytes data/tilesets/secondary/rustboro/anim/1/2.png | Bin 0 -> 185 bytes data/tilesets/secondary/rustboro/anim/1/3.png | Bin 0 -> 192 bytes data/tilesets/secondary/rustboro/tiles.png | Bin 3903 -> 4108 bytes .../tilesets/secondary/rustboro_gym/tiles.png | Bin 759 -> 768 bytes .../secondary/rusturf_tunnel/tiles.png | Bin 2127 -> 2228 bytes .../secondary/seashore_house/tiles.png | Bin 1105 -> 1280 bytes .../secondary/secret_base/blue_cave/tiles.png | Bin 904 -> 905 bytes .../secret_base/blue_cave/unused_tiles.png | Bin 0 -> 903 bytes .../secret_base/brown_cave/tiles.png | Bin 1070 -> 1166 bytes .../secret_base/brown_cave/unused_tiles.png | Bin 0 -> 1163 bytes .../secondary/secret_base/red_cave/tiles.png | Bin 941 -> 941 bytes .../secret_base/red_cave/unused_tiles.png | Bin 0 -> 938 bytes .../secondary/secret_base/shrub/tiles.png | Bin 1090 -> 1177 bytes .../secret_base/shrub/unused_tiles.png | Bin 0 -> 1173 bytes .../secondary/secret_base/tree/tiles.png | Bin 1056 -> 1098 bytes .../secret_base/tree/unused_tiles.png | Bin 0 -> 1095 bytes .../secret_base/yellow_cave/tiles.png | Bin 1127 -> 1127 bytes .../secret_base/yellow_cave/unused_tiles.png | Bin 0 -> 1125 bytes data/tilesets/secondary/shop/tiles.png | Bin 3872 -> 4416 bytes data/tilesets/secondary/slateport/anim/0.png | Bin 0 -> 179 bytes data/tilesets/secondary/slateport/anim/1.png | Bin 0 -> 181 bytes data/tilesets/secondary/slateport/anim/2.png | Bin 0 -> 179 bytes data/tilesets/secondary/slateport/anim/3.png | Bin 0 -> 181 bytes data/tilesets/secondary/slateport/tiles.png | Bin 6528 -> 6985 bytes data/tilesets/secondary/sootopolis/anim/0.png | Bin 0 -> 1201 bytes data/tilesets/secondary/sootopolis/anim/1.png | Bin 0 -> 1262 bytes data/tilesets/secondary/sootopolis/anim/2.png | Bin 0 -> 1260 bytes data/tilesets/secondary/sootopolis/anim/3.png | Bin 0 -> 1184 bytes data/tilesets/secondary/sootopolis/anim/4.png | Bin 0 -> 1190 bytes data/tilesets/secondary/sootopolis/anim/5.png | Bin 0 -> 1248 bytes data/tilesets/secondary/sootopolis/anim/6.png | Bin 0 -> 1161 bytes data/tilesets/secondary/sootopolis/anim/7.png | Bin 0 -> 1153 bytes data/tilesets/secondary/sootopolis/tiles.png | Bin 2674 -> 2950 bytes .../secondary/sootopolis_gym/anim/0/0.png | Bin 0 -> 286 bytes .../secondary/sootopolis_gym/anim/0/1.png | Bin 0 -> 283 bytes .../secondary/sootopolis_gym/anim/0/2.png | Bin 0 -> 294 bytes .../secondary/sootopolis_gym/anim/0/3.png | Bin 0 -> 91 bytes .../secondary/sootopolis_gym/anim/1/0.png | Bin 0 -> 389 bytes .../secondary/sootopolis_gym/anim/1/1.png | Bin 0 -> 408 bytes .../secondary/sootopolis_gym/anim/1/2.png | Bin 0 -> 399 bytes .../secondary/sootopolis_gym/tiles.png | Bin 2780 -> 2954 bytes .../tilesets/secondary/trainer_hill/tiles.png | Bin 3311 -> 3594 bytes .../secondary/trick_house_puzzle/tiles.png | Bin 2567 -> 2797 bytes data/tilesets/secondary/underwater/anim/0.png | Bin 0 -> 180 bytes data/tilesets/secondary/underwater/anim/1.png | Bin 0 -> 183 bytes data/tilesets/secondary/underwater/anim/2.png | Bin 0 -> 185 bytes data/tilesets/secondary/underwater/anim/3.png | Bin 0 -> 184 bytes data/tilesets/secondary/underwater/tiles.png | Bin 2988 -> 2846 bytes data/tilesets/secondary/union_room/tiles.png | Bin 1710 -> 1817 bytes data/tilesets/secondary/unused_1/0.png | Bin 0 -> 86 bytes data/tilesets/secondary/unused_1/1.png | Bin 0 -> 86 bytes data/tilesets/secondary/unused_1/2.png | Bin 0 -> 106 bytes data/tilesets/secondary/unused_1/3.png | Bin 0 -> 393 bytes data/tilesets/secondary/unused_1/tiles.png | Bin 80 -> 77 bytes data/tilesets/secondary/unused_2/0.png | Bin 0 -> 105 bytes data/tilesets/secondary/unused_2/1.png | Bin 0 -> 111 bytes data/tilesets/secondary/unused_2/2.png | Bin 0 -> 108 bytes data/tilesets/secondary/unused_2/3.png | Bin 0 -> 105 bytes data/tilesets/secondary/unused_2/tiles.png | Bin 864 -> 979 bytes 260 files changed, 135 insertions(+), 169 deletions(-) create mode 100644 data/tilesets/primary/building/anim/0.png create mode 100644 data/tilesets/primary/building/anim/1.png create mode 100644 data/tilesets/primary/general/anim/0/0.png create mode 100644 data/tilesets/primary/general/anim/0/1.png create mode 100644 data/tilesets/primary/general/anim/0/2.png create mode 100644 data/tilesets/primary/general/anim/1/0.png create mode 100644 data/tilesets/primary/general/anim/1/1.png create mode 100644 data/tilesets/primary/general/anim/1/2.png create mode 100644 data/tilesets/primary/general/anim/1/3.png create mode 100644 data/tilesets/primary/general/anim/1/4.png create mode 100644 data/tilesets/primary/general/anim/1/5.png create mode 100644 data/tilesets/primary/general/anim/1/6.png create mode 100644 data/tilesets/primary/general/anim/1/7.png create mode 100644 data/tilesets/primary/general/anim/2/0.png create mode 100644 data/tilesets/primary/general/anim/2/1.png create mode 100644 data/tilesets/primary/general/anim/2/2.png create mode 100644 data/tilesets/primary/general/anim/2/3.png create mode 100644 data/tilesets/primary/general/anim/2/4.png create mode 100644 data/tilesets/primary/general/anim/2/5.png create mode 100644 data/tilesets/primary/general/anim/2/6.png create mode 100644 data/tilesets/primary/general/anim/3/0.png create mode 100644 data/tilesets/primary/general/anim/3/1.png create mode 100644 data/tilesets/primary/general/anim/3/2.png create mode 100644 data/tilesets/primary/general/anim/3/3.png create mode 100644 data/tilesets/primary/general/anim/4/0.png create mode 100644 data/tilesets/primary/general/anim/4/1.png create mode 100644 data/tilesets/primary/general/anim/4/2.png create mode 100644 data/tilesets/primary/general/anim/4/3.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_east/anim/0.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_east/anim/1.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_east/anim/2.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_east/anim/3.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_west/anim/0.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_west/anim/1.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_west/anim/2.png create mode 100644 data/tilesets/secondary/battle_frontier_outside_west/anim/3.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/0/0.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/0/1.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/0/2.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/0.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/1.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/2.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/3.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/4.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/5.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/6.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/7.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/8.png create mode 100644 data/tilesets/secondary/battle_pyramid/anim/1/9.png create mode 100644 data/tilesets/secondary/bike_shop/anim/0.png create mode 100644 data/tilesets/secondary/bike_shop/anim/1.png create mode 100644 data/tilesets/secondary/bike_shop/anim/2.png create mode 100644 data/tilesets/secondary/cave/anim/0.png create mode 100644 data/tilesets/secondary/cave/anim/1.png create mode 100644 data/tilesets/secondary/cave/anim/2.png create mode 100644 data/tilesets/secondary/cave/anim/3.png create mode 100644 data/tilesets/secondary/cave/anim/unused/0.png create mode 100644 data/tilesets/secondary/cave/anim/unused/1.png create mode 100644 data/tilesets/secondary/cave/anim/unused/2.png create mode 100644 data/tilesets/secondary/cave/anim/unused/3.png create mode 100644 data/tilesets/secondary/dewford/anim/0.png create mode 100644 data/tilesets/secondary/dewford/anim/1.png create mode 100644 data/tilesets/secondary/dewford/anim/2.png create mode 100644 data/tilesets/secondary/dewford/anim/3.png create mode 100644 data/tilesets/secondary/elite_four/anim/0/0.png create mode 100644 data/tilesets/secondary/elite_four/anim/0/1.png create mode 100644 data/tilesets/secondary/elite_four/anim/0/2.png create mode 100644 data/tilesets/secondary/elite_four/anim/0/3.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/0.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/1.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/2.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/3.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/4.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/5.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/6.png create mode 100644 data/tilesets/secondary/elite_four/anim/1/7.png create mode 100644 data/tilesets/secondary/ever_grande/anim/0.png create mode 100644 data/tilesets/secondary/ever_grande/anim/1.png create mode 100644 data/tilesets/secondary/ever_grande/anim/2.png create mode 100644 data/tilesets/secondary/ever_grande/anim/3.png create mode 100644 data/tilesets/secondary/ever_grande/anim/4.png create mode 100644 data/tilesets/secondary/ever_grande/anim/5.png create mode 100644 data/tilesets/secondary/ever_grande/anim/6.png create mode 100644 data/tilesets/secondary/ever_grande/anim/7.png create mode 100644 data/tilesets/secondary/lavaridge/anim/0.png create mode 100644 data/tilesets/secondary/lavaridge/anim/1.png create mode 100644 data/tilesets/secondary/lavaridge/anim/2.png create mode 100644 data/tilesets/secondary/lavaridge/anim/3.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/0.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/1.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/2.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/3.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/4.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/5.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/6.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/7.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/8.png create mode 100644 data/tilesets/secondary/mauville/anim/0/a/9.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/0.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/1.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/2.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/3.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/4.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/5.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/6.png create mode 100644 data/tilesets/secondary/mauville/anim/0/b/7.png create mode 100644 data/tilesets/secondary/mauville/anim/1/a/0.png create mode 100644 data/tilesets/secondary/mauville/anim/1/a/1.png create mode 100644 data/tilesets/secondary/mauville/anim/1/a/2.png create mode 100644 data/tilesets/secondary/mauville/anim/1/a/3.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/0.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/1.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/2.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/3.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/4.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/5.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/6.png create mode 100644 data/tilesets/secondary/mauville/anim/1/b/7.png create mode 100644 data/tilesets/secondary/mauville_gym/anim/0.png create mode 100644 data/tilesets/secondary/mauville_gym/anim/1.png create mode 100644 data/tilesets/secondary/mauville_gym/anim/2.png create mode 100644 data/tilesets/secondary/mauville_gym/anim/3.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/0/0.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/0/1.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/0/2.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/0.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/1.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/2.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/3.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/4.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/5.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/6.png create mode 100644 data/tilesets/secondary/pacifidlog/anim/1/7.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/0.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/1.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/2.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/3.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/4.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/5.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/6.png create mode 100644 data/tilesets/secondary/rustboro/anim/0/7.png create mode 100644 data/tilesets/secondary/rustboro/anim/1/0.png create mode 100644 data/tilesets/secondary/rustboro/anim/1/1.png create mode 100644 data/tilesets/secondary/rustboro/anim/1/2.png create mode 100644 data/tilesets/secondary/rustboro/anim/1/3.png create mode 100644 data/tilesets/secondary/secret_base/blue_cave/unused_tiles.png create mode 100644 data/tilesets/secondary/secret_base/brown_cave/unused_tiles.png create mode 100644 data/tilesets/secondary/secret_base/red_cave/unused_tiles.png create mode 100644 data/tilesets/secondary/secret_base/shrub/unused_tiles.png create mode 100644 data/tilesets/secondary/secret_base/tree/unused_tiles.png create mode 100644 data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.png create mode 100644 data/tilesets/secondary/slateport/anim/0.png create mode 100644 data/tilesets/secondary/slateport/anim/1.png create mode 100644 data/tilesets/secondary/slateport/anim/2.png create mode 100644 data/tilesets/secondary/slateport/anim/3.png create mode 100644 data/tilesets/secondary/sootopolis/anim/0.png create mode 100644 data/tilesets/secondary/sootopolis/anim/1.png create mode 100644 data/tilesets/secondary/sootopolis/anim/2.png create mode 100644 data/tilesets/secondary/sootopolis/anim/3.png create mode 100644 data/tilesets/secondary/sootopolis/anim/4.png create mode 100644 data/tilesets/secondary/sootopolis/anim/5.png create mode 100644 data/tilesets/secondary/sootopolis/anim/6.png create mode 100644 data/tilesets/secondary/sootopolis/anim/7.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/0/0.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/0/1.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/0/2.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/0/3.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/1/0.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/1/1.png create mode 100644 data/tilesets/secondary/sootopolis_gym/anim/1/2.png create mode 100644 data/tilesets/secondary/underwater/anim/0.png create mode 100644 data/tilesets/secondary/underwater/anim/1.png create mode 100644 data/tilesets/secondary/underwater/anim/2.png create mode 100644 data/tilesets/secondary/underwater/anim/3.png create mode 100644 data/tilesets/secondary/unused_1/0.png create mode 100644 data/tilesets/secondary/unused_1/1.png create mode 100644 data/tilesets/secondary/unused_1/2.png create mode 100644 data/tilesets/secondary/unused_1/3.png create mode 100644 data/tilesets/secondary/unused_2/0.png create mode 100644 data/tilesets/secondary/unused_2/1.png create mode 100644 data/tilesets/secondary/unused_2/2.png create mode 100644 data/tilesets/secondary/unused_2/3.png diff --git a/data/tileset.s b/data/tileset.s index b8a0ca77f2..0ca02d41c1 100644 --- a/data/tileset.s +++ b/data/tileset.s @@ -5,50 +5,48 @@ .align 2, 0 gUnknown_085105C4:: - .incbin "baserom.gba", 0x5105c4, 0x80 + .incbin "data/tilesets/primary/general/anim/0/1.4bpp" gUnknown_08510644:: - .incbin "baserom.gba", 0x510644, 0x80 + .incbin "data/tilesets/primary/general/anim/0/0.4bpp" gUnknown_085106C4:: - .incbin "baserom.gba", 0x5106c4, 0x80 + .incbin "data/tilesets/primary/general/anim/0/2.4bpp" .space 0x20 gTilesetAnims_General0:: @ 8510764 -@ replacing .incbin "baserom.gba", 0x00510764, 0x10 .4byte gUnknown_08510644 .4byte gUnknown_085105C4 .4byte gUnknown_08510644 .4byte gUnknown_085106C4 gUnknown_08510774:: - .incbin "baserom.gba", 0x510774, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/0.4bpp" gUnknown_08510B34:: - .incbin "baserom.gba", 0x510b34, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/1.4bpp" gUnknown_08510EF4:: - .incbin "baserom.gba", 0x510ef4, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/2.4bpp" gUnknown_085112B4:: - .incbin "baserom.gba", 0x5112b4, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/3.4bpp" gUnknown_08511674:: - .incbin "baserom.gba", 0x511674, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/4.4bpp" gUnknown_08511A34:: - .incbin "baserom.gba", 0x511a34, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/5.4bpp" gUnknown_08511DF4:: - .incbin "baserom.gba", 0x511df4, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/6.4bpp" gUnknown_085121B4:: - .incbin "baserom.gba", 0x5121b4, 0x3c0 + .incbin "data/tilesets/primary/general/anim/1/7.4bpp" gTilesetAnims_General1:: @ 8512574 -@ replacing .incbin "baserom.gba", 0x00512574, 0x20 .4byte gUnknown_08510774 .4byte gUnknown_08510B34 .4byte gUnknown_08510EF4 @@ -59,29 +57,28 @@ gTilesetAnims_General1:: @ 8512574 .4byte gUnknown_085121B4 gUnknown_08512594:: - .incbin "baserom.gba", 0x512594, 0x140 + .incbin "data/tilesets/primary/general/anim/2/0.4bpp" gUnknown_085126D4:: - .incbin "baserom.gba", 0x5126d4, 0x140 + .incbin "data/tilesets/primary/general/anim/2/1.4bpp" gUnknown_08512814:: - .incbin "baserom.gba", 0x512814, 0x140 + .incbin "data/tilesets/primary/general/anim/2/2.4bpp" gUnknown_08512954:: - .incbin "baserom.gba", 0x512954, 0x140 + .incbin "data/tilesets/primary/general/anim/2/3.4bpp" gUnknown_08512A94:: - .incbin "baserom.gba", 0x512a94, 0x140 + .incbin "data/tilesets/primary/general/anim/2/4.4bpp" gUnknown_08512BD4:: - .incbin "baserom.gba", 0x512bd4, 0x140 + .incbin "data/tilesets/primary/general/anim/2/5.4bpp" gUnknown_08512D14:: - .incbin "baserom.gba", 0x512d14, 0x140 + .incbin "data/tilesets/primary/general/anim/2/6.4bpp" gTilesetAnims_General2:: @ 8512E54 -@ replacing .incbin "baserom.gba", 0x00512e54, 0x20 .4byte gUnknown_08512594 .4byte gUnknown_085126D4 .4byte gUnknown_08512814 @@ -92,129 +89,123 @@ gTilesetAnims_General2:: @ 8512E54 .4byte gUnknown_08512594 gUnknown_08512E74:: - .incbin "baserom.gba", 0x512e74, 0xc0 + .incbin "data/tilesets/primary/general/anim/3/0.4bpp" gUnknown_08512F34:: - .incbin "baserom.gba", 0x512f34, 0xc0 + .incbin "data/tilesets/primary/general/anim/3/1.4bpp" gUnknown_08512FF4:: - .incbin "baserom.gba", 0x512ff4, 0xc0 + .incbin "data/tilesets/primary/general/anim/3/2.4bpp" gUnknown_085130B4:: - .incbin "baserom.gba", 0x5130b4, 0xc0 + .incbin "data/tilesets/primary/general/anim/3/3.4bpp" gTilesetAnims_General3:: @ 8513174 -@ replacing .incbin "baserom.gba", 0x00513174, 0x10 .4byte gUnknown_08512E74 .4byte gUnknown_08512F34 .4byte gUnknown_08512FF4 .4byte gUnknown_085130B4 gUnknown_08513184:: - .incbin "baserom.gba", 0x513184, 0x140 + .incbin "data/tilesets/primary/general/anim/4/0.4bpp" gUnknown_085132C4:: - .incbin "baserom.gba", 0x5132c4, 0x140 + .incbin "data/tilesets/primary/general/anim/4/1.4bpp" gUnknown_08513404:: - .incbin "baserom.gba", 0x513404, 0x140 + .incbin "data/tilesets/primary/general/anim/4/2.4bpp" gUnknown_08513544:: - .incbin "baserom.gba", 0x513544, 0x140 + .incbin "data/tilesets/primary/general/anim/4/3.4bpp" gTilesetAnims_General4:: @ 8513684 -@ replacing .incbin "baserom.gba", 0x00513684, 0x10 .4byte gUnknown_08513184 .4byte gUnknown_085132C4 .4byte gUnknown_08513404 .4byte gUnknown_08513544 gUnknown_08513694:: - .incbin "baserom.gba", 0x513694, 0x80 + .incbin "data/tilesets/secondary/lavaridge/anim/0.4bpp" gUnknown_08513714:: - .incbin "baserom.gba", 0x513714, 0x80 + .incbin "data/tilesets/secondary/lavaridge/anim/1.4bpp" gUnknown_08513794:: - .incbin "baserom.gba", 0x513794, 0x80 + .incbin "data/tilesets/secondary/lavaridge/anim/2.4bpp" gUnknown_08513814:: - .incbin "baserom.gba", 0x513814, 0x80 + .incbin "data/tilesets/secondary/lavaridge/anim/3.4bpp" gTilesetAnims_Lavaridge0:: @ 8513894 -@ replacing .incbin "baserom.gba", 0x00513894, 0x10 .4byte gUnknown_08513694 .4byte gUnknown_08513714 .4byte gUnknown_08513794 .4byte gUnknown_08513814 gUnknown_085138A4:: - .incbin "baserom.gba", 0x5138a4, 0x3c0 + .incbin "data/tilesets/secondary/pacifidlog/anim/0/0.4bpp" gUnknown_08513C64:: - .incbin "baserom.gba", 0x513c64, 0x3c0 + .incbin "data/tilesets/secondary/pacifidlog/anim/0/1.4bpp" gUnknown_08514024:: - .incbin "baserom.gba", 0x514024, 0x3c0 + .incbin "data/tilesets/secondary/pacifidlog/anim/0/2.4bpp" gTilesetAnims_Pacifidlog0:: @ 85143E4 -@ replacing .incbin "baserom.gba", 0x005143e4, 0x10 .4byte gUnknown_085138A4 .4byte gUnknown_08513C64 .4byte gUnknown_08514024 .4byte gUnknown_08513C64 gUnknown_085143F4:: - .incbin "baserom.gba", 0x5143f4, 0x80 + .incbin "data/tilesets/secondary/underwater/anim/0.4bpp" gUnknown_08514474:: - .incbin "baserom.gba", 0x514474, 0x80 + .incbin "data/tilesets/secondary/underwater/anim/1.4bpp" gUnknown_085144F4:: - .incbin "baserom.gba", 0x5144f4, 0x80 + .incbin "data/tilesets/secondary/underwater/anim/2.4bpp" gUnknown_08514574:: - .incbin "baserom.gba", 0x514574, 0x80 + .incbin "data/tilesets/secondary/underwater/anim/3.4bpp" gTilesetAnims_Underwater0:: @ 85145F4 -@ replacing .incbin "baserom.gba", 0x005145f4, 0x10 .4byte gUnknown_085143F4 .4byte gUnknown_08514474 .4byte gUnknown_085144F4 .4byte gUnknown_08514574 gUnknown_08514604:: - .incbin "baserom.gba", 0x514604, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/0.4bpp" gUnknown_08514704:: - .incbin "baserom.gba", 0x514704, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/1.4bpp" gUnknown_08514804:: - .incbin "baserom.gba", 0x514804, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/2.4bpp" gUnknown_08514904:: - .incbin "baserom.gba", 0x514904, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/3.4bpp" gUnknown_08514A04:: - .incbin "baserom.gba", 0x514a04, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/4.4bpp" gUnknown_08514B04:: - .incbin "baserom.gba", 0x514b04, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/5.4bpp" gUnknown_08514C04:: - .incbin "baserom.gba", 0x514c04, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/6.4bpp" gUnknown_08514D04:: - .incbin "baserom.gba", 0x514d04, 0x100 + .incbin "data/tilesets/secondary/pacifidlog/anim/1/7.4bpp" gTilesetAnims_Pacifidlog1:: @ 8514E04 -@ replacing .incbin "baserom.gba", 0x00514e04, 0x20 .4byte gUnknown_08514604 .4byte gUnknown_08514704 .4byte gUnknown_08514804 @@ -225,39 +216,38 @@ gTilesetAnims_Pacifidlog1:: @ 8514E04 .4byte gUnknown_08514D04 gUnknown_08514E24:: - .incbin "baserom.gba", 0x514e24, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/a/0.4bpp" gUnknown_08514EA4:: - .incbin "baserom.gba", 0x514ea4, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/a/1.4bpp" gUnknown_08514F24:: - .incbin "baserom.gba", 0x514f24, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/a/2.4bpp" gUnknown_08514FA4:: - .incbin "baserom.gba", 0x514fa4, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/a/3.4bpp" gUnknown_08515024:: - .incbin "baserom.gba", 0x515024, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/1/a/1.4bpp" gUnknown_085150A4:: - .incbin "baserom.gba", 0x5150a4, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/b/0.4bpp" gUnknown_08515124:: - .incbin "baserom.gba", 0x515124, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/b/1.4bpp" gUnknown_085151A4:: - .incbin "baserom.gba", 0x5151a4, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/b/2.4bpp" gUnknown_08515224:: - .incbin "baserom.gba", 0x515224, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/0/b/3.4bpp" gUnknown_085152A4:: - .incbin "baserom.gba", 0x5152a4, 0x80 + .incbin "data/tilesets/secondary/mauville/anim/1/b/1.4bpp" .space 0x20 gTilesetAnims_MauvilleVDests0:: @ 8515344 -@ replacing .incbin "baserom.gba", 0x00515344, 0x20 .4byte BG_VRAM + 0x4c00 .4byte BG_VRAM + 0x4c80 .4byte BG_VRAM + 0x4d00 @@ -268,7 +258,6 @@ gTilesetAnims_MauvilleVDests0:: @ 8515344 .4byte BG_VRAM + 0x4f80 gTilesetAnims_MauvilleVDests1:: @ 8515364 -@ replacing .incbin "baserom.gba", 0x00515364, 0x20 .4byte BG_VRAM + 0x5000 .4byte BG_VRAM + 0x5080 .4byte BG_VRAM + 0x5100 @@ -279,7 +268,6 @@ gTilesetAnims_MauvilleVDests1:: @ 8515364 .4byte BG_VRAM + 0x5380 gTilesetAnims_Mauville0a:: @ 8515384 -@ replacing .incbin "baserom.gba", 0x00515384, 0x30 .4byte gUnknown_08514E24 .4byte gUnknown_08514E24 .4byte gUnknown_08514EA4 @@ -294,7 +282,6 @@ gTilesetAnims_Mauville0a:: @ 8515384 .4byte gUnknown_08514EA4 gTilesetAnims_Mauville0b:: @ 85153B4 -@ replacing .incbin "baserom.gba", 0x005153b4, 0x30 .4byte gUnknown_085150A4 .4byte gUnknown_085150A4 .4byte gUnknown_08515124 @@ -309,42 +296,40 @@ gTilesetAnims_Mauville0b:: @ 85153B4 .4byte gUnknown_08515124 gTilesetAnims_Mauville1a:: @ 85153E4 -@ replacing .incbin "baserom.gba", 0x005153e4, 0x10 .4byte gUnknown_08514E24 .4byte gUnknown_08514E24 .4byte gUnknown_08515024 .4byte gUnknown_08515024 gTilesetAnims_Mauville1b:: @ 85153F4 -@ replacing .incbin "baserom.gba", 0x005153f4, 0x10 .4byte gUnknown_085150A4 .4byte gUnknown_085150A4 .4byte gUnknown_085152A4 .4byte gUnknown_085152A4 gUnknown_08515404:: - .incbin "baserom.gba", 0x515404, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/0.4bpp" gUnknown_08515484:: - .incbin "baserom.gba", 0x515484, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/1.4bpp" gUnknown_08515504:: - .incbin "baserom.gba", 0x515504, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/2.4bpp" gUnknown_08515584:: - .incbin "baserom.gba", 0x515584, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/3.4bpp" gUnknown_08515604:: - .incbin "baserom.gba", 0x515604, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/4.4bpp" gUnknown_08515684:: - .incbin "baserom.gba", 0x515684, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/5.4bpp" gUnknown_08515704:: - .incbin "baserom.gba", 0x515704, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/6.4bpp" gUnknown_08515784:: - .incbin "baserom.gba", 0x515784, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/0/7.4bpp" gTilesetAnims_RustboroVDests0:: @ 8515804 @@ -358,7 +343,6 @@ gTilesetAnims_RustboroVDests0:: @ 8515804 .4byte BG_VRAM + 0x5380 gTilesetAnims_Rustboro0:: @ 8515824 -@ replacing .incbin "baserom.gba", 0x00515824, 0x20 .4byte gUnknown_08515404 .4byte gUnknown_08515484 .4byte gUnknown_08515504 @@ -369,82 +353,79 @@ gTilesetAnims_Rustboro0:: @ 8515824 .4byte gUnknown_08515784 gUnknown_08515844:: - .incbin "baserom.gba", 0x515844, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/1/0.4bpp" gUnknown_085158C4:: - .incbin "baserom.gba", 0x5158c4, 0x80 + .incbin "data/tilesets/secondary/rustboro/anim/1/1.4bpp" .space 0x20 gTilesetAnims_Rustboro1:: @ 8515964 -@ replacing .incbin "baserom.gba", 0x00515964, 0x8 .4byte gUnknown_08515844 .4byte gUnknown_085158C4 gUnknown_0851596C:: - .incbin "baserom.gba", 0x51596c, 0x80 + .incbin "data/tilesets/secondary/cave/anim/0.4bpp" gUnknown_085159EC:: - .incbin "baserom.gba", 0x5159ec, 0x80 + .incbin "data/tilesets/secondary/cave/anim/1.4bpp" gUnknown_08515A6C:: - .incbin "baserom.gba", 0x515a6c, 0x80 + .incbin "data/tilesets/secondary/cave/anim/2.4bpp" gUnknown_08515AEC:: - .incbin "baserom.gba", 0x515aec, 0x80 + .incbin "data/tilesets/secondary/cave/anim/3.4bpp" gUnknown_08515B6C:: - .incbin "baserom.gba", 0x515b6c, 0x80 + .incbin "data/tilesets/secondary/cave/anim/unused/0.4bpp" gUnknown_08515BEC:: - .incbin "baserom.gba", 0x515bec, 0x80 + .incbin "data/tilesets/secondary/cave/anim/unused/1.4bpp" gUnknown_08515C6C:: - .incbin "baserom.gba", 0x515c6c, 0x80 + .incbin "data/tilesets/secondary/cave/anim/unused/2.4bpp" gUnknown_08515CEC:: - .incbin "baserom.gba", 0x515cec, 0x80 + .incbin "data/tilesets/secondary/cave/anim/unused/3.4bpp" .space 0x20 gTilesetAnims_Lavaridge1_Cave0:: @ 8515D8C -@ replacing .incbin "baserom.gba", 0x00515d8c, 0x10 .4byte gUnknown_0851596C .4byte gUnknown_085159EC .4byte gUnknown_08515A6C .4byte gUnknown_08515AEC gUnknown_08515D9C:: - .incbin "baserom.gba", 0x515d9c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/0.4bpp" gUnknown_08515E1C:: - .incbin "baserom.gba", 0x515e1c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/1.4bpp" gUnknown_08515E9C:: - .incbin "baserom.gba", 0x515e9c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/2.4bpp" gUnknown_08515F1C:: - .incbin "baserom.gba", 0x515f1c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/3.4bpp" gUnknown_08515F9C:: - .incbin "baserom.gba", 0x515f9c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/4.4bpp" gUnknown_0851601C:: - .incbin "baserom.gba", 0x51601c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/5.4bpp" gUnknown_0851609C:: - .incbin "baserom.gba", 0x51609c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/6.4bpp" gUnknown_0851611C:: - .incbin "baserom.gba", 0x51611c, 0x80 + .incbin "data/tilesets/secondary/ever_grande/anim/7.4bpp" .space 0x20 gTilesetAnims_EverGrandeVDests0:: @ 85161BC -@ replacing .incbin "baserom.gba", 0x005161bc, 0x20 .4byte BG_VRAM + 0x5c00 .4byte BG_VRAM + 0x5c80 .4byte BG_VRAM + 0x5d00 @@ -455,7 +436,6 @@ gTilesetAnims_EverGrandeVDests0:: @ 85161BC .4byte BG_VRAM + 0x5f80 gTilesetAnims_EverGrande0:: @ 85161DC -@ replacing .incbin "baserom.gba", 0x005161dc, 0x20 .4byte gUnknown_08515D9C .4byte gUnknown_08515E1C .4byte gUnknown_08515E9C @@ -466,228 +446,216 @@ gTilesetAnims_EverGrande0:: @ 85161DC .4byte gUnknown_0851611C gUnknown_085161FC:: - .incbin "baserom.gba", 0x5161fc, 0xc0 + .incbin "data/tilesets/secondary/dewford/anim/0.4bpp" gUnknown_085162BC:: - .incbin "baserom.gba", 0x5162bc, 0xc0 + .incbin "data/tilesets/secondary/dewford/anim/1.4bpp" gUnknown_0851637C:: - .incbin "baserom.gba", 0x51637c, 0xc0 + .incbin "data/tilesets/secondary/dewford/anim/2.4bpp" gUnknown_0851643C:: - .incbin "baserom.gba", 0x51643c, 0xc0 + .incbin "data/tilesets/secondary/dewford/anim/3.4bpp" gTilesetAnims_Dewford0:: @ 85164FC -@ replacing .incbin "baserom.gba", 0x005164fc, 0x10 .4byte gUnknown_085161FC .4byte gUnknown_085162BC .4byte gUnknown_0851637C .4byte gUnknown_0851643C gUnknown_0851650C:: - .incbin "baserom.gba", 0x51650c, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/0.4bpp" gUnknown_085165CC:: - .incbin "baserom.gba", 0x5165cc, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/1.4bpp" gUnknown_0851668C:: - .incbin "baserom.gba", 0x51668c, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/2.4bpp" gUnknown_0851674C:: - .incbin "baserom.gba", 0x51674c, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/3.4bpp" gTilesetAnims_BattleFrontierOutsideWest0:: @ 851680C -@ replacing .incbin "baserom.gba", 0x0051680c, 0x10 .4byte gUnknown_0851650C .4byte gUnknown_085165CC .4byte gUnknown_0851668C .4byte gUnknown_0851674C gUnknown_0851681C:: @ 851680C - .incbin "baserom.gba", 0x51681c, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/0.4bpp" gUnknown_085168DC:: - .incbin "baserom.gba", 0x5168dc, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/1.4bpp" gUnknown_0851699C:: - .incbin "baserom.gba", 0x51699c, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/2.4bpp" gUnknown_08516A5C:: - .incbin "baserom.gba", 0x516a5c, 0xc0 + .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/3.4bpp" gTilesetAnims_BattleFrontierOutsideEast0:: @ 8516B1C -@ replacing .incbin "baserom.gba", 0x00516b1c, 0x10 .4byte gUnknown_0851681C .4byte gUnknown_085168DC .4byte gUnknown_0851699C .4byte gUnknown_08516A5C gUnknown_08516B2C:: - .incbin "baserom.gba", 0x516b2c, 0x80 + .incbin "data/tilesets/secondary/slateport/anim/0.4bpp" gUnknown_08516BAC:: - .incbin "baserom.gba", 0x516bac, 0x80 + .incbin "data/tilesets/secondary/slateport/anim/1.4bpp" gUnknown_08516C2C:: - .incbin "baserom.gba", 0x516c2c, 0x80 + .incbin "data/tilesets/secondary/slateport/anim/2.4bpp" gUnknown_08516CAC:: - .incbin "baserom.gba", 0x516cac, 0x80 + .incbin "data/tilesets/secondary/slateport/anim/3.4bpp" gTilesetAnims_Slateport0:: @ 8516D2C -@ replacing .incbin "baserom.gba", 0x00516d2c, 0x10 .4byte gUnknown_08516B2C .4byte gUnknown_08516BAC .4byte gUnknown_08516C2C .4byte gUnknown_08516CAC gUnknown_08516D3C:: - .incbin "baserom.gba", 0x516d3c, 0x80 + .incbin "data/tilesets/primary/building/anim/0.4bpp" gUnknown_08516DBC:: - .incbin "baserom.gba", 0x516dbc, 0x80 + .incbin "data/tilesets/primary/building/anim/1.4bpp" gTilesetAnims_InsideBuilding0:: @ 8516E3C -@ replacing .incbin "baserom.gba", 0x00516e3c, 0x8 .4byte gUnknown_08516D3C .4byte gUnknown_08516DBC gUnknown_08516E44:: - .incbin "baserom.gba", 0x516e44, 0x180 + .incbin "data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp" gUnknown_08516FC4:: - .incbin "baserom.gba", 0x516fc4, 0x180 + .incbin "data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp" gUnknown_08517144:: - .incbin "baserom.gba", 0x517144, 0x180 + .incbin "data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp" gUnknown_085172C4:: - .incbin "baserom.gba", 0x5172c4, 0x280 + .incbin "data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp" gUnknown_08517544:: - .incbin "baserom.gba", 0x517544, 0x280 + .incbin "data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp" gUnknown_085177C4:: - .incbin "baserom.gba", 0x5177c4, 0x280 + .incbin "data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp" gTilesetAnims_SootopolisGym0:: @ 8517A44 -@ replacing .incbin "baserom.gba", 0x00517a44, 0xc .4byte gUnknown_08516E44 .4byte gUnknown_08516FC4 .4byte gUnknown_08517144 gTilesetAnims_SootopolisGym1:: @ 8517A50 -@ replacing .incbin "baserom.gba", 0x00517a50, 0xc .4byte gUnknown_085172C4 .4byte gUnknown_08517544 .4byte gUnknown_085177C4 gUnknown_08517A5C:: - .incbin "baserom.gba", 0x517a5c, 0x80 + .incbin "data/tilesets/secondary/elite_four/anim/1/0.4bpp" gUnknown_08517ADC:: - .incbin "baserom.gba", 0x517adc, 0x80 + .incbin "data/tilesets/secondary/elite_four/anim/1/1.4bpp" gUnknown_08517B5C:: - .incbin "baserom.gba", 0x517b5c, 0x20 + .incbin "data/tilesets/secondary/elite_four/anim/0/0.4bpp" gUnknown_08517B7C:: - .incbin "baserom.gba", 0x517b7c, 0x20 + .incbin "data/tilesets/secondary/elite_four/anim/0/1.4bpp" gUnknown_08517B9C:: - .incbin "baserom.gba", 0x517b9c, 0x20 + .incbin "data/tilesets/secondary/elite_four/anim/0/2.4bpp" gUnknown_08517BBC:: - .incbin "baserom.gba", 0x517bbc, 0x20 + .incbin "data/tilesets/secondary/elite_four/anim/0/3.4bpp" .space 0x20 gTilesetAnims_EliteFour1:: @ 8517BFC -@ replacing .incbin "baserom.gba", 0x00517bfc, 0x10 .4byte gUnknown_08517B5C .4byte gUnknown_08517B7C .4byte gUnknown_08517B9C .4byte gUnknown_08517BBC gTilesetAnims_EliteFour0:: @ 8517C0C -@ replacing .incbin "baserom.gba", 0x00517c0c, 0x8 .4byte gUnknown_08517A5C .4byte gUnknown_08517ADC gUnknown_08517C14:: - .incbin "baserom.gba", 0x517c14, 0x200 + .incbin "data/tilesets/secondary/mauville_gym/anim/0.4bpp" gUnknown_08517E14:: - .incbin "baserom.gba", 0x517e14, 0x200 + .incbin "data/tilesets/secondary/mauville_gym/anim/1.4bpp" .space 0x20 gTilesetAnims_MauvilleGym0:: @ 8518034 -@ replacing .incbin "baserom.gba", 0x00518034, 0x8 .4byte gUnknown_08517C14 .4byte gUnknown_08517E14 gUnknown_0851803C:: - .incbin "baserom.gba", 0x51803c, 0x120 + .incbin "data/tilesets/secondary/bike_shop/anim/0.4bpp" gUnknown_0851815C:: - .incbin "baserom.gba", 0x51815c, 0x120 + .incbin "data/tilesets/secondary/bike_shop/anim/1.4bpp" .space 0x20 gTilesetAnims_BikeShop0:: @ 851829C -@ replacing .incbin "baserom.gba", 0x0051829c, 0x8 .4byte gUnknown_0851803C .4byte gUnknown_0851815C gUnknown_085182A4:: - .incbin "baserom.gba", 0x5182a4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/0.4bpp" gUnknown_08518EA4:: - .incbin "baserom.gba", 0x518ea4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/1.4bpp" gUnknown_08519AA4:: - .incbin "baserom.gba", 0x519aa4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/2.4bpp" gUnknown_0851A6A4:: - .incbin "baserom.gba", 0x51a6a4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/3.4bpp" gUnknown_0851B2A4:: - .incbin "baserom.gba", 0x51b2a4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/4.4bpp" gUnknown_0851BEA4:: - .incbin "baserom.gba", 0x51bea4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/5.4bpp" gUnknown_0851CAA4:: - .incbin "baserom.gba", 0x51caa4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/6.4bpp" gUnknown_0851D6A4:: - .incbin "baserom.gba", 0x51d6a4, 0xc00 + .incbin "data/tilesets/secondary/sootopolis/anim/7.4bpp" .space 0x20 gUnknown_0851E2C4:: - .incbin "baserom.gba", 0x51e2c4, 0x800 + .incbin "data/tilesets/secondary/unused_1/0.4bpp" gUnknown_0851EAC4:: - .incbin "baserom.gba", 0x51eac4, 0x800 + .incbin "data/tilesets/secondary/unused_1/1.4bpp" gUnknown_0851F2C4:: - .incbin "baserom.gba", 0x51f2c4, 0x800 + .incbin "data/tilesets/secondary/unused_1/2.4bpp" gUnknown_0851FAC4:: - .incbin "baserom.gba", 0x51fac4, 0x800 + .incbin "data/tilesets/secondary/unused_1/3.4bpp" gTilesetAnims_Sootopolis0:: @ 85202C4 -@ replacing .incbin "baserom.gba", 0x005202c4, 0x20 .4byte gUnknown_085182A4 .4byte gUnknown_08518EA4 .4byte gUnknown_08519AA4 @@ -698,43 +666,41 @@ gTilesetAnims_Sootopolis0:: @ 85202C4 .4byte gUnknown_0851D6A4 gUnknown_085202E4:: - .incbin "baserom.gba", 0x5202e4, 0x100 + .incbin "data/tilesets/secondary/battle_pyramid/anim/0/0.4bpp" gUnknown_085203E4:: - .incbin "baserom.gba", 0x5203e4, 0x100 + .incbin "data/tilesets/secondary/battle_pyramid/anim/0/1.4bpp" gUnknown_085204E4:: - .incbin "baserom.gba", 0x5204e4, 0x100 + .incbin "data/tilesets/secondary/battle_pyramid/anim/0/2.4bpp" .space 0x20 gUnknown_08520604:: - .incbin "baserom.gba", 0x520604, 0x100 + .incbin "data/tilesets/secondary/battle_pyramid/anim/1/0.4bpp" gUnknown_08520704:: - .incbin "baserom.gba", 0x520704, 0x100 + .incbin "data/tilesets/secondary/battle_pyramid/anim/1/1.4bpp" gUnknown_08520804:: - .incbin "baserom.gba", 0x520804, 0x100 + .incbin "data/tilesets/secondary/battle_pyramid/anim/1/2.4bpp" .space 0x3d00 gUnknown_08524604:: - .incbin "baserom.gba", 0x524604, 0x40 + .incbin "data/tilesets/secondary/unused_2/0.4bpp" .space 0x1c0 gUnknown_08524804:: - .incbin "baserom.gba", 0x524804, 0x60 + .incbin "data/tilesets/secondary/unused_2/1.4bpp" gTilesetAnims_BattlePyramid0:: @ 8524864 -@ replacing .incbin "baserom.gba", 0x00524864, 0xc .4byte gUnknown_085202E4 .4byte gUnknown_085203E4 .4byte gUnknown_085204E4 gTilesetAnims_BattlePyramid1:: @ 8524870 -@ replacing .incbin "baserom.gba", 0x00524870, 0xc .4byte gUnknown_08520604 .4byte gUnknown_08520704 .4byte gUnknown_08520804 diff --git a/data/tilesets/primary/building/anim/0.png b/data/tilesets/primary/building/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..004eccc67d6a563c9fa50b1bc53a6c046479c9b6 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsSr;W#}JO0p=USpHW=`*9GGtw zdZa?Ku`S%Jz)S0gZ()mSd5MjagXV8^-u8?!EQT oR#t}GQmCIKHFMom?Z*8Vm|ri>ImdKI;Vst08QI4m;e9( literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/building/anim/1.png b/data/tilesets/primary/building/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..e28281dea9caf084d219b71fad644e7ffc177bdb GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsc=sh#}JO0p=S^BHW=_QJNS23 zC>(Q`Ho=N7IHmPl=Z^=H9#JYza^E+}&gqu4dl#ksggsVei~K>K8Ij%s zy=`A9bgfeNb<1tOX@yRQE(+QyK6)pqXi7 zrnEb7@9$J8YK+R?aQ@PUz46A2{JMT~a%N4qD-@pPkiprJb8hnfoZE8*R`FW=iJnjt g?^x){VjZsboFyt=akR{0N&w5WdHyG literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/0/2.png b/data/tilesets/primary/general/anim/0/2.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0bfe89f681b6f4641c7dd0b98e8c03ca5d4877 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsX9*=#}JO0rl&UYHX8`IJyee> zpUGgU8ZwhHbgwY`sl`~lh5~RZaQ(#aLx?Frz?C+t?w)~klMFD|KqARtNAQWGpGMl jGr8u#&8%$p<<&=KhsCDLOBO!N2D!-7)z4*}Q$iB}pD0UK literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/1/0.png b/data/tilesets/primary/general/anim/1/0.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bb2e631d50dce2e68bd1beaa17a202ee544ba8 GIT binary patch literal 518 zcmV+h0{Q)kP)HwHB~v=~g$+|x zEg5wHtC~-TzALO)pR=RV!Iu`T4;iDhSfZ|gd7?`74KnJ7B_LKOhul5Xa@({6dbydJ zPj^0@*@{Q_2It7uK)T-h7Jaaa`G7-iZFRLQ`(Ux$wD>KTPv!pY9I0&JlM+5aXK87^ z@`n$*-}O%{SA^Uw1dd_7CW%W>Hf(q6OxAo(7%t+g||(V)@R+2 z5|3dO>|HqrAJWPDdF&9cy{8zPZ@hZ)F?xER1NZaT&^`XizXS2ZR=jy2etJU1XJ=u~ zfd*ff4Scz&@>9M$92!1nz8CXt&9^=FAvgANbIZ-&8tAPqvAQ;Lc#gY0UJa2cZWA8N z$I-lf_vO@lIGc~7dsD5XgQ(qy6n&`R;-4#ERY^fB{F6QdQrn7B?cRbCDne($(1i}c z_7`k^58x26zcDZx2YY`3#S0b4pxg5;L7X!}>)kQ3degFUf07*qo IM6N<$g6a_QH~;_u literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/1/1.png b/data/tilesets/primary/general/anim/1/1.png new file mode 100644 index 0000000000000000000000000000000000000000..c215f16836328257a36728dc0ad6b5ffb46250d4 GIT binary patch literal 581 zcmV-L0=oT)P)-cZAPxy@ZNqhL3?wu@~( z@MkzfK9Z;_m%y@$uq;JlR>38Lvq!kkRwF%i8H|I3BT}wN%GqJGaYPu3fMT!$yD%8; z`Hce+0{w^@MHp`VQs?lKeLS&=yt5QLu7iyo;d>$vgAj1+h};)~a?O;h*=#!~cfg=r z?q_?Gt4$jFutF;eT7`iqg3b~C`}Gt39wzy9uYTX&`LQn4DYsg43rx}-JHb=;$xG+E zo7`c|wKe>ze&Ma(OYUv`*17~QKhOOY{)v9VkUz;!^;=6PjMC-QQS5oYM~~E%C&J3R z_3M<&r4R5rhu1mE`}OnG(KPqDVEK!mSN*nY{gPL|ulO<3Z+3cDF3Irc5*IZ43sLV| zEKPGkT!i>2u+_$8kA{OpB))US(#D9`2+J;_U78jbN$P5|z~q-T^vmS8dG8ljzcV+< z^(Mcw{Lb<_U;ACc2c6ov0AToZdICBneaio8I^YA9SJSZwNGL{0GSeT2B)p;5t0WoYv*IR}XCS#Jt^ zqT(CP?A1BHAh?(5m&`!0ATctOTrz^LHLdm zeG`3C+c!}!EuohZ^iqOetAtY>NCA3r1HEBMy^?w*^~Tg2pY&W@yz>1)--^DMbNF7} zy~X#vbC$ya#dahhiPRk#$6@ z7qFBJ{fq41g8dtx?*a5w)&tiU>-j#e0Q5r6SwbK_&9eN)R(1y<-`>n5@52${jC=ql z`vZ1)ParNg`R@*J7ZZSb*VMbE-gTGW&N=Ei>iy!`9nrM)PL@x;6Z%g0;UnXeJEi5T zI%W;)Xz2TymN05y`H%Oed~bcew{u^*-p6rJEhKgvn+a literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/1/3.png b/data/tilesets/primary/general/anim/1/3.png new file mode 100644 index 0000000000000000000000000000000000000000..6c6ce36112378d99917b0093ab596a7e88e424c8 GIT binary patch literal 527 zcmV+q0`UEbP)1@fW|rxpg0!k%C~3Bd+7Y9=?DB4!cvIgB=$fJ?17kpHj2YiS^`B_~g< z>7MtytGcC7Rk47@$O2QDn@wbBW}@@*2T-W!0<-$WZ~KKw(>%?^-8Y1H==(B#4OH-z zvZ2rK`G)ZA6uw$@D9w7O;>}iNG%sBq7Upu`y2A?V4hicH3AupF7oudi1uRAuDEqli zpVQ~``364s+jErI0ydriOEp!2sLS-XZ}MHrv_??+%uN=!=0^P<{wepb&oSB2SKs>5 ziui{5VfRtL5p)0aO-ER#n)iTaLhs}zo@3J8gB5f0ynO4QBQZCzA1NUhNRr(%>c`S0 z7SU>@3aG81uaJFruZn>z+qRV|@EoHmu#`*nbt&hns-(Rv--#B$Z2QV@=L^ujUVzgX zz`ucFFl)s)8q+tXZ+y@9f%^xa()U8&3wEYPsx9`G1>ppl~kH5;0a&6-G(GG^13-|7sc z?U603yS@dcIcL0D!eV5B>%HH1_h9-)WXTK6X6`TZUgeDa;nzKpJN)N&`3vx`8C4us R%5wk!002ovPDHLkV1o4j1+oAD literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/1/4.png b/data/tilesets/primary/general/anim/1/4.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1f9576c72f3accaa5b94237538e5f26e7d7721 GIT binary patch literal 461 zcmV;;0W$uHP)7!W421Ox%GNPN9m9K`z|oSi1!(UE%+3xF=s5~x(cAV;sekIYfR_(Jj=mEq%8B>h ziDZa(M=wXBB!vHoJ4j;yN-|JEK*tXwr09xku%>cjt z%a7r}T}}kl`zN6p$So9p9mBITDvW8T3Cr9WMn9uq8+~**0_t?&w=G@D36r0GIMIfY zV{V~{9I>3=-dxGp(}(8swXiDMS3l+aQ1UxJHH^5>=bSy~?0tq8+%#@sHNOI`Y@t~6 zaTAN{K9qv;K2$T1TN>;7e7c`nEeDJ2&IaSq8{Q@D<}1PCFx2h|zr zd<7_^2f;d+1bhKi4i&(kZ^u9HZG0N5_pxH?a91?g!e zF-9CCLn3dhoG|SH)EN*72=PY5jEFtRR=f9k*ZcSZj28dEICzZm00000NkvXXu0mjf Dtz_2$ literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/1/5.png b/data/tilesets/primary/general/anim/1/5.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0c57a86bd76987481efe65890d92d5d9bef2b8 GIT binary patch literal 460 zcmV;-0WV+45C!15f-TXi%UJmlN9Y#3$u^S1-jdxlkxEv0>4|{^{o*wmk`gqwR6PKAEgfNh&p$`f2#vm7aHaj^5U?y z%Ei3D)EB$TY`Vw3ndg1~dXCBs+*&u|P2xTeQ@qa4aevNX&ZyHYQ3*}pN?#|gGYb{_ zHjneeAv=H+m*Ddl=lNlDwZjlGx%?hrRmsNyMvc*>`AxW_CH9@zc9Q90$v*vRagVgq zCG!qYL9CU@?k(#8#EG_(6wE7`S2AzAmbWW3^EC6$%p-R9n0M`)_gAuS$-Zx_Q>;_E zv@7R0GllFw`Kv%nocGE1wvgwt_I<29H-}3C!NdU+ypjunk2Y|%zX6K`PtYZL!dH33 zB@HnRfiezep~>$-GY&UkahSi$F)vO?;OC&~#c#`u;}(eqgt&Z4z0;Yjy^c7i zD$cph0xeK?D^8mkXh%RJ*3_}u5GtAy&<16plNTZq-~CdeUkIpn@q`t>g2olUhJFoo z4SzyxV+X{SiZ<5ViMTG|Py?tIXaTsA8(HnDq@arzeZ)Y&U=#f82|7aU8P)a-eUux6 zZsuFfU+>4+|sX! zXh02EsoKa`b+nZVeKQ=@;H#5wJnT-o#LFBn% zcu$DNQ#Dot5i0@_V~~+B0{2>hG%e5q5J%RZvCKhYwXdIofKB3| zKaP;(GSJ|Fos+HKjm;>#ve217{0wxtKnM7{K_NN$?*a+`l{+W|BoSGWE0Wy9Z@+v$ zDBzbLWYY(nju$^(ktv|o=_+mC)Fq<#3kcIv3_% z@dUsA2uWcqO%B*OV`#4HND-u1Mj!%>qHbPhRO3vqb&Pbbn@A6e=51ckP;;K4i|;^P zzbhgpUPdzN_f7rEctPq{;pxH8sMSwJrG8cFm*kdjv7z$3m_p}N=QMKLN2PsKn){-; zmR>dTU-xEFz0BpS_tD{H5`!2quNW0Fa)&DLLzt<@H$5rFQ@3EGvB$#{4x&2`3dUxz zyZ}|A`5WF+RUOhs2&ftgh1Y*5%IL&g#}54hj4|ENlyp_~n$BA6y)Eu+V|w z@M|{Z2@#LnL|!KfsIPId37wwlU;U@!&7%0It>1O)1Jcj17H?K5K6uC9eraBS`Qykx sY1x1N#ju1Ig{~F3$rb+TyutOqe&_Co{5!&NO#$RMPgg&ebxsLQ0M~p?e*gdg literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/2/1.png b/data/tilesets/primary/general/anim/2/1.png new file mode 100644 index 0000000000000000000000000000000000000000..bef1f3023c9d9b6a48a309ae02a182243313995a GIT binary patch literal 243 zcmVTT8S0t;F)&l0k}Xwu5DB%Ds{+{qkP*xA0kqqXN1&=AuUJL zMym}xRg5%4=OjZ}NiL8f_@{t?fk=Id)Nkk6)LIkLPf^E(n)pn0 z$}`o|$|PxaB%T%L)=2bFjEYo3q(dw#S!0--o*fc3JS9|Qpj?=0Tpd-vDVEJ@`^|k+ z{6|eFOK30wU8vxV`}>WBUlptv28$cRYUsEA*Y1(2598-o(=oFSo$eSvJ{N(Nd}v@m zUCEEG0SYwK+tC8QF@O0v_!;;W9+2anvzoiP2WxbmPG7-P8UO$Q M07*qoM6N<$fN#EKTP zAq??9&{z#EtEXkVdja#xr5@n?;fTe%vHzYKi(}i?5iN_qZ8Mss)>A?x=C&^4m3dfA z8J&6B=kG;~l}t1CYA?8`Rfws&^HjW>q;nBOzLK9wtvbZ^04)}fKWzusF|O9%^I2V| eZuzTwpSmwm!_VX|uNmF|0000P)0Y_L4`9j zUZkfwnoD($Qeup>IB$z+%77gOrJ%YQ6-rG+n*YFhVJO;Jbe7TuY?EqP{jC=P*!PVp z1f1wAE|$<*Y&&T71a1<4hE@du;9QiO=nx U($(wXeHr9zPgg&ebxsLQ04%*)L;wH) literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/2/6.png b/data/tilesets/primary/general/anim/2/6.png new file mode 100644 index 0000000000000000000000000000000000000000..784a543b4eaf8f0c9ba1fdf61399fe7fa2d668bb GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^96%hv0wfrYc($DZQjaY)u{<5H z%-GJcZ;!4k-!@js4STaSS1bJFJXw=Ap`+lTvR``(bCH~ZldsIS51j((9C4g&H>?w{ z37c&wW#A0$dsQrV(XFif&+)9=8{bDr$a;ObXY@EuYxSDC+n1ILUsf%dA@}XIK;Jvv9Tobutac* zD>Mj{H!?UW91(aW!rD6FEVHm%!sNhS_H6CK!ooBS^FqCJ4R$6D#ke?)6ABzG0!}Ac hj(Qn!stOA*vM^jN3aGl2D*pgvg{P~Z%Q~loCIIFCAxZ!M literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/3/1.png b/data/tilesets/primary/general/anim/3/1.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2744a665d931bdf17bcd8e2ec1fc5cb8128e30 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq!K+{978x}EMn3p|e|C>8RUVN26|sC#;;GPJ5bdk<01(p=-B>eeqk? zrRpgTe~DWM4f Dzau%{ literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/3/2.png b/data/tilesets/primary/general/anim/3/2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ddf1cda70a7b04241702d3a45c81dd3a638bbd9 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeqJvv9Tobuz0j^ z3kW#>i2Jy=`-pB~VPTqvd7)mq20IgnVqBcY2?Y)o0jIzKj+=1?i7aJ|tBf1eG!5^t eGI4RHcgQj<+3F`9zE1l!$b3&%KbLh*2~7azMj`nC literal 0 HcmV?d00001 diff --git a/data/tilesets/primary/general/anim/3/3.png b/data/tilesets/primary/general/anim/3/3.png new file mode 100644 index 0000000000000000000000000000000000000000..f3fee847008a2125cdcafe2bb25349c59453a353 GIT binary patch literal 130 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 literal 7587 zcmV;U9bDpxP)?E?zZ0Pieaebj+pMsJT*GYBZJrU}=C4*ZFM#QvyV_vTz?N zhf%b2e_@3H!O}{7sZm*43A$nl76vQja=QeOEWDlXH=~DPGYYEBW;uZJp)ja5>y>6B z2=5pYQ1+Jw!)j#Qb{@ZLTag8%lz55LUuqE5HOm zb+yunD$A=6A+Ob!-x79Zc?A#vSz4|46Cm(w;b5a&Z39@sAV%3=Uj1blh7sh;t9~Q~ z?^l8_Xf}gtP_JAQQh?QP(67}xG(iZz)?5Y^G#^5~+6-S8mCy$zEUh$Za8Ng}3&XG( z2GvjkWHly+?hFl?;!dp^)|WPF%c~oZGf1KwRGPI$fEU+;s+3@1xful4zas%`9_l+? zLn}i|ckTo$gVplF!?4!afE)n^D5AM=pY8@~LBPYHy1Eqj8nDB@*6%zif>r2lkhD^- zRiav>wg5Q-hQj*7{pS5;y!d`4yaQRKvCynluRk{>0fVCZnl%sB(pV}7%e6|SQH{#A z2IM|lT494>x#~9;nk0HPycYSOiDtD{^`9#epuc;b&3DgtEy4X8D?kpzAlfKbK~n(& zgdf%dze<20^aXT*584D*xc(dgcG%tBY~J}|t+omc0PCnPhtb2Tk9klk1%vgl5d^`4 z1XMtR3UqQ<2aCN<04DnVZsA-D8UTPRE0xs+)Dz~-QfZ-5hpTG=8BG{g>flGvh%gj^ za;8DS{O&GLVxtj2-!!U~`hxV=`a-ExI#sDwz-$}jIAOh9-|&L~uBm{J1yTn-WAn`K zss&3yxKz9IJJUgMCMeF7mA?-{Yb#-uF80gyYlEN=zf!H~oOSzt_q^}3p?Ynl(X8DW z_=jd=X?1a?qC^yx0JK&mI|zch81&0f5CoX}kTZ6T&HGGT8)}qS8mrY{;K$3WtIfsZ z8x<+GfNu5ua!B1+tAo{+v3`Jg8CY!4?w{}O5`#fdZZ52pR|c-uf=Y1Xn;XjC#bDVF zs`A*cUK4N*1?2$qGKj$XEx!v8^Pqy|rIm&I1E+$;Gr{aPwZGc}?pLl>r5g+JMGy!6 z0?f+`t7SIm`~3oSP+I{HSgJn$+;dZqzPZsTQ@e#d*rIk2@F7fBEH?3EE<9Sh>XY70#pFB33Cvoitao(--Y2E01&?WrzkP- z`l>zWMIkXF#aolhd2$UC&QOt79>Iy0fUuh zMFQ3idik8|I+9==o`CeM{ZRS40Rs5`x5*}a|6f6bD(K*+0p!c8<)0$JaC7MR|Ci-W z2w0;Nncy6I^G+7Sk1vn^}sxLSPF%;mz;ltzb9q_$_-XR5mG?FYo2uuWUL(o(p3Ha@a z!no=_@XSLBFj{CY2L%FZ7y+g*OaNG}1U#4+r@P?4(a}8V5nDU5soZtFLIEmT1|$UJ z+yVh|@VzTh2%al6prtx&$`iX;d%# z!OagvSjP4D+%ycqg_GM)08tS8rGnhTLGOr3b2&H{Xdm$RtXIfK0%C*Fip!5 z1Xwdi1PE{xTMe2%YH|bQ^^OjkXdh9=IXqe@95NtW8GZ75sLq99IJO`=0BJI<7I;Sm zH_5FH1MTBM{;+%S=xE;L`y!Le@1gmoFfCgdlEHZ55Qd^3+EyknMhn{CO#+l$i^@kb8SHzLXHoSC z7#7l$1qbb$jIF2bv~6cRPy73bfftrsS$+sK?0J^SAE4^Nihmtkfm#8o0FUYifSJn+ z02H*po2VrKQ28OlG~AJ_!5=^&R{J$hHvqFV5YWrk4I@V#>M4Ks=uRb9mOpg~?9R%X z2ObD&gE)eHtdp>80Hh&4DPN-h!+0S8sQjsQ>~quD_du9wFflRA_q6~IoME=kL8bfA zg1`o-HvwP(0Lm}#_nc_`5;k`ZM(;hKUSTE#0H4hP08}cisDS?Nc{a2GlnCXQfd*HV zIG>9$rm@E`O;Ir00HXjfjEt6E`8$LQ02sy(A%b3p1s$ktPsT6~K)J}`2<{Do6^(j0 zFav;t2KIZgH-W!{7E1*v|DkI+m-nGztQ~NM%>z&_P=_O63!s=$7}Z<=nAYZa0G9#4 zv~ptqp-aQi7sA-{vCY$5>EI}*unYsCoxvtpo8ti|2@KHg=>IHba2PR5A6w`^T;!n> zMmR0dpfRS!)=gNmTJ7-wQmG)zpIT1?z&7VTvd9UA$U-%22aInJ3JwB*+vwNHctE`% z%b!}m1hU$D=038i93~i1lto(r8<2oYX&e1I84tJsXUbB!4V?%|EJYuWpcNP*FHiz$ z1E9nlxik88TRbojK;>C7gA#O@N&aWyJPMnEHUL4_jpG51_r`uFXJ-xR&RHyXZJ4y! zpl{2W<3Yy3a|6FaTcCJ=I*2xY z6a;UU(4Y5HJjll5JxxB8I~%!6cy}9%AqLxG4_<dFm6$f zhKCWUb2+*5`~LJP|K{{rFlE$%!NCGBSf?q6i3FKMp(=dbQ4tgVK zShk;XXb?uELg#WagZF2P)1}#ypu{zUtzRbLcszAOn>P>46-1|UVPQ;uzgR3@m@Qt! z*$qQQsSAzxLSC9H*qzET3V|II&z~w4PyPoUvuOP?S6zrXUTpFMrO3s&&?@It4rWGx zcTb+WGJ8=0qSEC{IOl;FAakR1pfneOBMMWV$GM;=1Su>6fR@v=k5npMqA1qN!O>vO zAcTryac((kE*`#jQP#(OB+JQ~4qq?D391_-LhT(ERq|!JsdHh&&}rucvupy<2nfS>5fG@<5r70P7uzU77Gg&_3lgCJX@FMDX25sVTC)Wh5jZu$ zf4g8lWauXRtsF4^`06Gl>a`}@DFKrtLE0e+h7k}1iwHO^E8NfkkO1{@Q?E5!fP@Y} z0bPZUN z{oX`Gs|i~r;3sBKh2U;k1USQ52U`1WfK-1ApbhCnF;3@Uq|Iq(>Imo+n*o#NiQO%L zk#lYB&YJ;LDJ6^;U{D*5o6m#woa6Y}eI6@bP!*Agt2fMXyofd>#tC5X&jX+x<9HF* z`~^uHDG2}oLeGE?%!q+D09M4sC+0X_#DMQn=X_sD!1?pPUo7r6`2eWmd@>TD5yNRl zN^sx@u>kjJQ|{+liD_uUZayQxl zgbc91qX46j|H*;U57@(CX?1BOcxfV8^1F}{61?F2x0i(2{X=J#BzW}=Y09U` z8>537pwlO}|MfP%&3~!@FnfDJ96-QjF*}DfPo8T7e7qU(>1`f7c00QWN(668L;Oof zfHk!3qJ^TVVB)0+}Xpdu5dvXbEZECy9Q zKTJwc+LREm9s@R(l@2Ig$MeLN1n1`%Ys`0twRxC8^me6sVH^@&W`9=~Yo#4vIX(F=U{-$O{d#Lv(51o+@A zXs|Aj50Wt7hH>{x4pld@S*ZU+3xET|BqzX(2GnF?!nR>4>yW9uZG8X|rA$lMEGz57 zz^R9}$u>X(69@s(#=;?AfB+u=gR!)Qe!`3>0Z_wx5)i=M!&;Mck_40+a$1wJ=!Q-|{da7Zl6mThPJr3zY4|$@e{+whi4{g%OxOfag{4~H zWTQ?^&GCNMMH04`fHy7QmW|04&u2tdF+9 zWCe>bVNdl zG9FlYGU={1Kwnw`vYRDPN_0sIiU%ps2pFRV;QI+|&D8*BUz-v^gcRM+w&HkT$ovTf z!1ohaUp@w8KcgGprg)IB0|emv3G8`C0wUdwFyV|1X-hnixeiD)E^G!AVP3E$9=xsM z0oXFyh5Z?TBATd<2VFS{_^-~F+9XJA5BPl=l65@LF;JvcJb(flpiD<)99Y@_19D#T zh>8cyK)Z8nu|vfJwj-OhU}SQ(0~FXRKL z0lQ^=&Qv^rp{y6TqG50~cBJ9X@!*;|6lHltc8~<?iJVQJ6QZpNK^g!&n@umid+&Eevnl?tc~9Jf)cjrPu~~rt%;}Z5 zQzzTH@f;6s|935c1T>rX?zI4Y!%w>iz#J1hJ$tUb8$o?%Xb0}b;$6P??q2@Y5Y|Tg zZeO^!BjD`KlSUihu^>1jC+UlK_l9@(4)d?xr6d9A?9&eQ0^}5A{;ocIuHBRYKn5_o z7;Z{<&GE;-Ksvx&>R|Qe$wV*UR!s{4E4#gWd8qS_fYU#&&+65PUSOQ39hfU8J4t}^ zN(6i|rCwY*{o(3sT7qQKo(O9VA>z4pskMs(Lpu%cr<*^n$AH!XJo0ZAuS$S3?j8M1 zz=!wcg)m2oh5gz0{R{pTe2*_$J3Quj`#J%pX?}3J*}SUuilU1@)0^7|W?y@y_}VMb z{ZZfexaVcJ0$^yT;T-@U>MxQ2YQo*O??#ykkYFTkVJE=-mIS6su>@h185=Kjk^shp zKsDihrzXTYF!G+4ms9E1;*$XQ{$jMP1aU9$%)vsAZ*2mE^wL&9LIQ0EmyL{L?}@aj ze-0oafd;H`W5k^61duD1?IchJ0rqi;>*w_y0cRIFOMw0hsU9U#XF$EP1RT0>Ga%Uu zI401za5h}%D8b&l*|7Bf`)vSx&X9!BxNs({e~u1X31)U*Pl)p(jSFXLq5qk^upK}p zHXDR>-L|9z`iLTf+5nn(=J&p?6!>BcD4nU*V+l+>#o(Ysk_5Dl``H@c9NPj|pABNb zOl#L;mz3tfm2CiVZ?LFzrm6v_T7X%pkIjI%3Fyjlnis9lR<*J|Z2?Yolwe}w!>xd* zbUM~{Yv-qQR!T722KdXr{7_$~;sFBI&1-3O47$)f?MLu=4fj(-$=$qIsezte#uk z!U49o4Ipiz9q<>;50d~`_A-!w1wo3-AwB^(q3of(7nZgHOx6>Iw{9E8CV-xyZR*DV zwFU4bt2LVqmcqAXrEvDe=q|db(S@uvj{|3O#yZ`Fs-4HZEW+n4bPF>#cOqx(9T?aIGNh~W>5eqFFv8g+F$z{fO4b0Ycsgi3g;SF|^we6jIw-k<)-7JzQXunau===TZu zy9Bu>(&~ls#lZ9a?G1d@`cteBH%axvFg*-Dx{qajd=}};x#DTv3n0O(Ai$rt0QkHa zKP|v-K59Ml3`kH%K;@b?WvRp)S_k!Q0Z;$7`DcFyfJz;fh_y=H;3*!>-lW)Y>guVI zeApXqFTogY03e_Wvxs`RP7$xT9kN?2^|=6=YG)D9sFrK>R6nc?@%{AT z%LusDwHdH!s~q3V#54!agse<+ z&jqZP%snLn^pMu+QAscMNQzzp_!T6e7fzU^+)C%a>5WaupCC+3Sfk#gH997bv25I% z+_~v{W>|TusPk`m6BEa*JY4|!*N(T2;lKB_o#S5e`$@))%rM92#>X?m8ZdDzBkyr6 z^W|?HiH{E>050(K_ui4rFoS#N$0;4lPinx#F?oxLBl&N6`WSNn{I!RKJX{6`$MOis zsS9#nYXMZ*ksJWx?+LIIMDUK}D4u-nc#iR%bB$1t%>iw zN!0Yz#KiG0PfSc<=dqX6+aHE$4B+E`Jccsd7NIx^H=-YfSYMV4O>F}h)Uliu6@gPe z!v_=rE1MGF;p_Kc4+PLQfPkErcUW-%u7+BMB%PD;y!4gLfT`mdl0n-54J){MhpS11 z-7=q1kDo`lYJ;cRFg10YM9?;p1iXYb22{RViO>O%QvkAy0s!!b8334piZew8no$7S zTf#PYstu?=36R~2?-tVzhF)#!C+AX&#dFfbObHkpM}SZOA$!>KV!&4v;45@zhzm19 zP1+69Qv`h1PNUe;e0B|c9Lm3FLh7Td~j*+ut3370}rp_I8PPb3BBtX58B}&NRMW+f%nKmicF%0#!y}1ckhN|k&Ru)EafW$ddHS7XLzrHcbKlR45og%+ zE3V}TJa_Zkj+N{PRMYPy!~gx@$9~1mZA!~P5av^oAw2ELCrf_D_7pcUc! zIoGx9!PhsgeFgx+^l$lorGhhqYnGd{5wPEL+z|kP_GwPFX&Yd(1n}jC@4pV$f$B1* z;cs}}aGzU|0VIgb(fvhSl!*a(FEUVEg|H#){7az!C|B4;$T$dB(aM5}?ymE%l^h-m{f2?2esgprv_5(v3^~69#rGgEUjjc&EnX7dzD%Y!+-PNRBLf)1Mn7Yg z1hY>4__Fyp7OTl*BIa=%3mt}G33CEp7LSs(fZI~QEfF{#RgqACOR?5u>G1wFEGGAD zkSpqM9!6{NTN5VJa*&sv=ZOoYl(_JB9;A5uU?&AN+0P?CMSeREaEyV^js-XWLEheL zZ2O~=@C9&sB6Mt!+IVCDN-|+iIX8s2@qCJ`5==Z5W*k#913VbU3WRY*Sa1idx&>Kh zCxp?YbZyZA`@t}_t5SanPRw5;-1+NY2|s4mf{#rmR&d756CC)o0n-Hi!P+=ARutb# zN+}FsEktz*P}R>%6M$8sZDpLp`~4qbcd4slh>)^g0N~Uq-@Db zyzGe!uicE9QfYrYKNdDBM9MI1@hX|ehfi8Xak4;hBJHnG7+ae3cOIbw)})yY&uo9! zv^I^Yu566*UZNwC$y~ zHY)X1wT2~BuU3lgyCBS|Nth8X>Fgyfy(?V1q|hk7DIuX|(gS9X07)>*J5Sk%4~T0( z2nkV+unYtJ4F=D5p`2(Jdw#+oA|X`(39z`H|x z7VbiXvw+sdQ>s@1Rj#;d*%}6Q2Eo@# zeCXE%ep|>r&lgg){pvhQ1LE)2@6u$FcFw39=0|>vaZ7v_zSkUI+gHN(+iiguVYLxy zQ+ycaAf3915|Q@1x5UTbf!!RRlx+F1_WZ{9d=F81%2T54Av72p;_J&UB~&6b$;IfV z`a;bvS*TApj-O9xd(^Cr-(H?yghpS%SJ^Lw3P06;ECoiGhSzSsLl)thJ{2 ze9vnmjUEq}Dve(~KFPV1Jaxr*$sFU!oMAUz6_rPman zl^Goi7%aV}_?~7m3vL-dPhA_j#`tL4P4a0g){uoy=~h)q(as29VHV^3xcWVC+aCD= zZB^D^AxE=m4Rvt11Js{uv2S0QQ+l`vb>?^dxi+T#eWXoDNcZhc&$aAlB6MYL-WH$MIwZVPd=BpbP99(ge_E~8VQ@CIf4oAX zo)fq^U>qL~N@okJXflqE2Vunz$uo>o;CT*HvXJCTd|?Gqlv>9A(G1-~V%CZxt*xbv zPQ!@8EFer2oyDT_D~fBwa(ry*!qS-qH>baUt-n@yvdwd?Enl}k*EabzJ=eyk+dbDJ zzHpoP3T59MUz1-`d||j?Fzpdi*gaB*fd#K_#G4>5F_N_kr|MxY_OsUd)t)zU^fLLq^z*<3a4NR$Ly00000NkvXXu0mjf D*=|)L literal 1556 zcmbW1`#aNn0LMSy&DU+VqLyM~Ni3wPFqgR{aaY~E+R^nliNfG zl_(J<7D^|RTNm2FT)R!yNla9y{)O{A@8@~Fe|-J)I_vMZ4XdfA2>`%)dAjfTMFao{ zsQfx0FHCX_09fkf?i!SkKb6-UE%jL5p78^k*G~h)5`l?72@&>&qL}0oOL((Yen{1K z^qq2wtl@cW( zO%D}tRTJ+{c)X|I#=_>D-QvUE0=B-~vu$7Kb;GyksD*2#>ou|+)9dC|+-rwsE*A}( zrFO2bL4htOz_1>jB{Q<~_dI+kIk&?_VzCYy`fRJ5BO{CFkbQxPS*en%27rYE?*Gn$ zs^G;KjBIpN2QnI1%Sc|3x3aH8B;9GJJth_MTlr`m4Hg@v=hYHlH0p@|+q=W~P%iMP z3dd(rh%{i8F_PotDJB{u_o`7!xY}ih_qqV(jSa}Y2A|QvXacD{)dunMtO%+e;hCpE zv8xN7SH*aLu{Q9{&S<@+u6xh3!vXhoepy?t@qv3bOymTS zE|$|)jK_~WG03RtDbI51jGFv1U!O$nm_M=m%=${U0~BYDwiT6G?}dYO11DSJ7QV(` zsXqRVE3UdJ5hT7b*l@9);8LfJq2=g|+QlgJ{A?I9oiQL1Ym z3%9=fIX5Q1hC@QqdahoItm?dM&ybda0hEepDWWGHQV$L!p`jplc>RWkK(rCPQae_xT!I^)nCf^*?T* zSp10FHeB*j(5$Wa%IvKaF9}Vb8}P%5wZQr#BU@zlJQ=lVdh|T-r>m``X%+SH6+Qh_ zUAJX~0oZRKH6?HWL!J;eD4-U?s%cLbHl?;x0Kj+B@FSu|uvv-5=}pPUEl(QTN6GHz zdTukhO)ugwtV6MREfKb1jlCHXdaG2r@eur;1uGXon5*;CwrI|yJ}rhou2z+J5-&cX zyfHdGSx$p%AGKi@nl|xHP+u>ZsV(uDDZEtr5uV;9rd>3>yaa& zPZBv>ccN(077R5(<+#E_D9}wILZDL=3>>LMG^uSXY|8oZ^puy%+W?i2JD8i3CjCe? zYdD2d1YI|wAZs=1*WiPNW1cX16}pr;ZY63>R`@pw93pUz9WfC&8Ec5`vSbSSIPr+Lphbhw7whAl=BXDo~ZJk&04alu@XT6z|Ca~gYpvVhwCW4q(2MU;ViKLT>lZ=6DedCb8E!gz$4~SnNXE^A+VBHFxQh*!LZ{+@A*Jx=TpLXr0S@*h$ zE(4$1-(D*6O8f_&DPTudcFW>XM_*}Td8VQ!dUvQp5c05=KlH{GB1EY&!2g&I$uK~e z`PZ|^f=n)ZNtUdW(cmO2#?`kcHSGI<9`Cz^m(?4J8U-27>Z-^b4Kk`8pP^GCY}LXn slAc&c#@A&ofCOnrJ9nU9>KpPC%51ZqdUdOr|2y|yTm9T`xiR?v0WwvuE&u=k diff --git a/data/tilesets/primary/secret_base/tiles.png b/data/tilesets/primary/secret_base/tiles.png index 9adc0e13f50a201c01e127b88079828ac6bda39c..9dee014ea4e6fc3e93c00e0080ac40b61957759d 100644 GIT binary patch literal 7869 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 bpMrk{SgkyhhKxl^00000NkvXXu0mjfPak^F literal 7136 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 S-Jt&e>rPWuPo-7~8~r~(;O+hZ diff --git a/data/tilesets/primary/secret_base/unknown_tiles.png b/data/tilesets/primary/secret_base/unknown_tiles.png index dd5c4e16a160f19936f19eac208086949e6cbaf3..3ca4d9e87975b45c0a3670b30d9ed6c0d08151e2 100644 GIT binary patch literal 1316 zcmV+<1>5?GP)H!iXgz#@Bt}4J(73dyHRBEp-If) zL(L>fN^Y-1#Zk%Ry1A5W8qR?@Cff|dYh79(K5AJClU+-R0kOY3`IckyGj6Y|h~BgA zzrnAc5`9H!x7(%k8J|8g<|5r+f8t@X^b3(gD06W7r9&osJI1`NF5Gyd6hnlm;7Kvf zTjryh6oBbC|8B^*WOD-ozX0Evh_8B8oo8|C@{yYx5a@_J2E{1JqZ@8%qD{(!J)&G6 z{*Ke3JFyP^EltgWnwv-DdVx<11|!tgT30Bg07}{pqsE}@fKbsZL0OM%RtHvHqQPNp zgof;bkFh^6KBWVm1+!$R=?4nqXF@W;K?_Y6m<|}2f*uVzpyLPCjf#ZjHX4B(?-7ka z-*TSknwb4E&k2|C)jnd@Kc6zNkZ`DD&U1WlHX8Y*qiBQ__xn7=#ohAJ#i5Ieqw&~B z5g+xVqBx>#XC3HJ5zrdgXpl#_V#|N>-eUU<`U=is*fEJ$ih#X^u55aFpk@R@6}K;?$I>1K3Yv zXK6T;@4P(y=x7BMMu#Pv)qV zQ=oT86a>g~FnNE*E^kvz1=b&$qMvQV=Gq2TWQf;Cps_w~>sP?}TSY&+4YF-Lu}(3; z7T7!FGzHF0{jeZxrnktpHMZQgzje!g%Gt=c>FUmn{VqT0$hIfk5-8*FvU12#F5vIl zEA`9N6m@t{?3`_kiq~%$y$mtSRoz*PG|m9YKf9sTeN&Td@A?8bh!VTzwsJn>CTPfQ$wo z^K43v87z{(FIURo|Lm8w2f*!c;5cT=9p~@Tgsy6YVX(*BLy-+N&fnFEZyzFDt6Lm6 zZk4&*PwA^oS4|Hw+W~47O}DwTp4>F6jxs!Mzs-?SoZ=#3XLZhb>M{h*W_#n3BF{Z6 z=i=y{c@_jg5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%5ClOG1VIo4 zL3l4te*>>RCwp3}kv)0&=;GDa;Pf7Nb?>#MwY6_7)z)zI^3mN7{@}vL#`L#y%mxkr zND>+zCf}3Y_P--Ltt!>0Rl%Z*d*}qK1%3rS@+<1*Q51^Pk*2no6{CW9Jm>9=M6Za as^7mzirLl*7h8b<00006R{qyZ?b-w%5nfr3DzTNfl z`kQTkHIwK6Ju+kehsB=$?*Ex?Y|R#Y@Mjs%tF@{Jf{UB{pF8l)dA@;X#qy6oZ#(@G zVK`)7?BIEBYKMtS`-s?r-GrSpHJe@}=U0)ppT09S(TDvAUiqqh7$w zkYA&&Ih%2!V~L*I{%aL-XBpLbk~14yrDiMr`_rtsh`F!UC;N=`arJ~lmHwXBSazQ) zQTBA0JJaTKP2-7eX0hejm;Gl8JviSVRn=sxaqB?!&IxCP%UE{_F1noa@R_zOZ<_ka zWw~!S6ek~H_}TIOOG|B2f5$-?gZu_Qrpk@`ZM?VrZjI#7P*nI*dL_7)g)iJkYQfCs zw?vnuDqKeTL{;Wy*R$C)?l zQ(vv@mfE{DUi|Wc)5<9vJ-+5K#uGXPB7AQ5r%JD1D|x|WeYxv|d1@ykJg%28pZ~z; zP}$;JvwL~U1T(+m^Nu7v%Upd=>dq{uo5%Q@+FoO6IFjr}ll``g!<;)f)RC3YRnSiUjj5zFySofm78 zb64(Ci@tcZjQHy*Pz_oO8sBK^y5AD38fVs_z5LiJt-g`UYq%mFuA*&2*K8}!aJ z&*5h7*_Hce>&+*(^&}LG-6sefH#~M(<;aYg*=**1i_cZ0-#D)OcHL}QcJ5dQh1+r4 zSN12?wIn^>VcNSRxMEv}Uis~Poj=ZtZG2{DW#AAava!c{h5(0U_Ybps+l&wY6ihSv z!0^6f-+8N}b1h18mMP6RCfnhx`cy~n4CA>qy!&hq@fe7Q8FrezOVBM;YQMb0qE2JO+w6;GjQG1N?*GR~)dvq2a2fnO`-lHN zfAxF*o=N%tz54FUUvU34+dgE!6R(<+*2UGAj+rX*t={tSoL%zo@7g7a-DP{X5HPJ@c-c2Kjv>N WZ(jQ-)z=9smONekT-G@yGywpw;VJq6 diff --git a/data/tilesets/secondary/battle_arena/tiles.png b/data/tilesets/secondary/battle_arena/tiles.png index 43297aa7bae64f487185711814eeee3581b42a61..7414666df9d98fe97653ad91593933a04039b725 100644 GIT binary patch literal 2340 zcmV+<3ETFGP)b7$1<|3SJ$#Rv0lR~`r-VA?=qN$BGxgP}l#pC1Sn-S;3H#0QjaIg{_ zQBmO#LLq76)>XB@3aYv;MahC}7uT7xUCc5?$z~Z>vYdT`!QZT|t_J1d!-r8HC0#|! zmxmY^@j=+{(FzKL&Goi@`W0T_^4elf6Y z{2g4}M*O7^pOO?~o`S2ioTlX}EvH|t{w4G0RiET> z^V@acNF!4Hg_&y3r%ippk${J3A5jl^k zVRNVL1>%C3fqzCI>^conG;V3*lBwgWD&OC9{Cys4zmmVm(q7liV`iHA;T%gf!BTbC zIz;Pu7p)!F(&MsVoM}d_9kg~mOGQgX>v$LA)Ln=>hF+!RZ-gV0Lg4RJ8X>q+ z`GnxFoZ#<`wY<2vr{-IM-B|efMXliYCgfXoJxFd%vT-<%I_T~(b$lmqRZYW{9>dk) z4qjF9>ftU?OvI{5w7b^l^EdHi5&o9I^TZS6FPS>ex^vuI{*tNltS`xxKW@mC3Ki*i z2WyF2Rn#yWK@yWWI80xMLR{VT2B^CbcZi?^lkxAuLi~+MY!bWAMmTehUV>0Tq3v88 zDs~^m?!OAe#RKhwnbj(=j4 zkrj$~_t7_o)wb8azr?Ii2Iw2$x359!=ND?N%dSiSb7XZUjB@*m0A@Y|fM~xK$RJtA=Sv(JDH-FdL?nie48NBJI|( ze+Kr-!2an8{WGvvb?jdqEj`e`x(ORG61}0FFtcJF2r+cnm(c}+E5J+971a~EAWlm~ zNu3n$4v$H-IO_}E0i2c)R%hB9Az?j~b5D@Ewuhspu~FYe?-XT176R9|+zXlpGQPIo zg7n|I7O*B{fKvj^IP$aWAXaR9jACEoqw6g)zjbH$>k@>nC5EhNHJI7yz%X{YRX8mp zf0h{-ONy%?vDIo7Fl&NXH8?dbb0!Y*x#%?oYbR3B*YxH$L7iUL*`;ZiLM|#A?&!^i zkQDth()X_(KuSmjm4SkKQ3>?+}J} zr>6mHjMnu#@xh>nU*mhgF39Ow53F9#wXEJ-yn4P^{d=ET%dp{EhD(d{wWyEc*3jbU zgFlO9c&-gr?t6G7WLf!WoCV7AEy(xxmasT$TY-F!Fm6*=8LaIQpAX?h!wA*CM#K0r z^{-wz2-LrNr4p=v*{q_ltddpOP*peCguZ<}zPExx)&zZ%XdE#_|FDdFo}G=GuocY0 zDV3M+>#sbPBXO)neDqv0IqL_;+wC?;C(n3p8~L+{L@rpPxIbB~HI~ok0kbNIRczru zMIj&OE|Vf(3~Lde_=HK+`Ss5T)jxnRq5jp=*FR&X{t0|VEPYR?8BbJ*>rf)U{jmRe4jpSIgD@p&0)`< z!YSYQ1gV@ohi!7m_x!K?Ms#YI>Pnlyyy55g)~Y z>xhBth=J=sSP|d&9~uXFzy%xE-UsX{S|ET5%yMjR_1gjCPre-pHrx-`^#5rX1r(Sw zVI6h>11}^opN6oKBosZxeVhtN+axFlwooDZJd5aBmf6hZCYq3CsvMLXRLs93_~zsYbX6GXkz_hDanZ z2~mPeU`D_ZdITZjD8U3FxCk=>?u{NI(Jz8ue+2)#Mb^Kh`IpLir2fUtzmvpu$*&Ze zTxTcT;3O=!3P6M?f?~pTCt;e7X<`=Z$$1m5@1wZ66Rz*WxPJqyfAWB_K#bl10000< KMNUMnLSTaCvy>YE literal 2067 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 diff --git a/data/tilesets/secondary/battle_frontier/tiles.png b/data/tilesets/secondary/battle_frontier/tiles.png index 70ec420e9d72078ecbc86d00be58d8eebdde8738..1b14ce5552d60b4d8ee8f755a735689e1e8699d1 100644 GIT binary patch literal 2647 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 md>kLeA7%!q3jsk&+yB2P7crEeKF09?0000+C- diff --git a/data/tilesets/secondary/battle_frontier_outside_east/anim/0.png b/data/tilesets/secondary/battle_frontier_outside_east/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9905198e98746671448b35fbd58bbcbea470d0 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq}n`P978x}ruG?fF*|a&{#U)L zmt$Hs>9WdOITstZWs)|>%rbkw>SN=dvu5SV_ndrgWSizwd=fLUA8CTqIks) z)hi0GxC~{l-#g;@{lKxUcOG@eJwEcQMtf;UljeE}_df?>Wz*~yq)K1)OlK5)?kW&# pwto3y^)1^Qmg>2#eU!%-wbJgEcArL^S%@#lWuC5nF6*2UngA)vN`(Lb literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_frontier_outside_east/anim/1.png b/data/tilesets/secondary/battle_frontier_outside_east/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..836986b1281bfb14ce636f381db107667b99cbed GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq?$cl978x}rk*q8Vo~H_y-xO{|M_=sK4_O-)+e-~c&YuL2WmztX-uC5 z+}U<)W0QMjp8M<1?0^GPc;=pVvd}O4lxl#%WTNu5IF5i zshH@yH9p0e#vDn!<{gH2Vw?|%yH9-dsFSId$L`|6_3CWus=5`reesW2H#3~O)u6?n zktMXj;rWbR8}3!lxFGn{?O%K1GP|d{EUW91@9K8mpRuvg<4I(w<57tmk!C-;g=<3M jgzxm|>uUDzowSG1bLONSR~CGE4RVvGtDnm{r-UW|9*{sK)CYS@>YXj;HBM>@{!x>`&f3dHVth7Pa(($$Vzl zU08f$uAN@sp77Y`*<`8sU;Wj8?&+PAbib3K#aC{)B5mRfX`gE5(sd^^Q$v4gZ|w9b h`Sxv=@rszk>hd~!C%J$AzvC##MV_vHF6*2UngEnuN3Q?? literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_frontier_outside_east/tiles.png b/data/tilesets/secondary/battle_frontier_outside_east/tiles.png index 20cb7d67e88159ee9587b0225edc237b998adf42..da34656d18d2f6abfb8aa874e845c43f2a15452c 100644 GIT binary patch literal 3834 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 literal 3750 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 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_frontier_outside_west/anim/1.png b/data/tilesets/secondary/battle_frontier_outside_west/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..836986b1281bfb14ce636f381db107667b99cbed GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq?$cl978x}rk*q8Vo~H_y-xO{|M_=sK4_O-)+e-~c&YuL2WmztX-uC5 z+}U<)W0QMjp8M<1?0^GPc;=pVvd}O4lxl#%WTNu5IF5i zshH@yH9p0e#vDn!<{gH2Vw?|%yH9-dsFSId$L`|6_3CWus=5`reesW2H#3~O)u6?n zktMXj;rWbR8}3!lxFGn{?O%K1GP|d{EUW91@9K8mpRuvg<4I(w<57tmk!C-;g=<3M jgzxm|>uUDzowSG1bLONSR~CGE4RVvGtDnm{r-UW|9*{sK)CYS@>YXj;HBM>@{!x>`&f3dHVth7Pa(($$Vzl zU08f$uAN@sp77Y`*<`8sU;Wj8?&+PAbib3K#aC{)B5mRfX`gE5(sd^^Q$v4gZ|w9b h`Sxv=@rszk>hd~!C%J$AzvC##MV_vHF6*2UngEnuN3Q?? literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_frontier_outside_west/tiles.png b/data/tilesets/secondary/battle_frontier_outside_west/tiles.png index 3d5ea94f93e6d5598bb9c485b3b975768171a59f..03704bfd0f49d17c19946ce58759ddae1a803bd2 100644 GIT binary patch literal 5892 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 NmZmm`pO`SO{tw5~n9cwI diff --git a/data/tilesets/secondary/battle_frontier_ranking_hall/tiles.png b/data/tilesets/secondary/battle_frontier_ranking_hall/tiles.png index cf54e1d77defdf41786e7137e63321d4d733920e..1c1f700c09e77e702b13b90f2888404310265ccf 100644 GIT binary patch literal 1700 zcmV;V23z@wP)l*u5QgtRk;;&v9Y|%!D$##Hme-C3k|Hx~8x0ZBBKV4CIRaH%0#=3l7Ws=PmP^b&ZE~^w)miu8k0ti@b}jjycRVrhJgq5FVEfW9_Ad2%#h?zu96hb0Nf*=w_ zeNrMs5|-dzpp@Vo_l7)}UJ@k`FbZ@8n`Y+_ZaRzc1R;758sUt8IL#seN&;mH(C5o2 z3n5nl!_*ws<#g?0Q~-4?N-qu}W}%uWheT3jnUXQ}sfZj&Sb}?jk!07nH|N2{Au$3n zMwzc*)BGC3UCg!AV~C#RMmXaiPHP1~Nnlg~^!ZTL@UQFHfJ5{;fMpSVv4)mSIE{Z+ z*LKCWJFfJ)JxjcfYm3*jI?}Z}ed&3<|4KI1S<2y7h8!rN zB)JNuOcLZuM6(PzmD0a?F~*o1bM%?{cU^Jx&6z_~(@Dr7wJwlTdMxuw7ozEl$~o7R zRx}4+O+j0KF&fEXu_)v^ACF{|*FH{bh=x&wZ?3Rj^Ag6-#c_ z%@+_@L$j&?d-Ra+mG!`3~WWJw(o?e>VNIhg}a|(V_KobLn4~ z{<-w8Pyf0+-Kg8=l6>;|2kvqqYPPi6xl52k#+2Br@Aaudi$e7@%m?(MgM zRX_a|Jhbk!@3#Sa=utR_z`k6nhka>uG-6tNxAw2IxqllSTj98W9q!)__pi+dYB^T_ zvpNcA+dJ$BcpZZNH99t8?pfdR_vEAE4dr^%zYpfLc_p2vK=(f26lG7F2{(JYzc0!0 zWC9%3tEm34iU3o$zyBhY$>gAvnwYHdS_4NlaIbJ1K7U!HY-6~6Q{8sqHr@{(A35MZ z=D9tSBp;u zX6wdhH;B%bbw;i`IOA{aOm0vJFk;=w2^0wQ)s>uRMD2i@W~+I%RORwgu4>IlU*1`` ztH{(f?w&TN2+Y6Jir|c0W5I{FPp^K_`j=ZUxfUah|DC*y<9G67mc4J#oM!Le6R&Xj z3V%ELANd9luZa31-xQ$c>r!74ynOs8_&@$hoSa}c23(LQ`ez>kzuRBoj?e8P_17jE uw0re|b$CBehVgZX_hbJhUI>G`@5i4c1FmhMZ#IPh0000l*O6vzFYj>?ds9Y|)#Dp6lRR@ROJlEO0~nA|-yOAACG8ip|d0IpqtkWvAsFY~Glf=lVc z>1(el1F?sLp*FGnI|dA2L&twz}m|c$_E8nAb=2OU>WBG*G>RqAtphh7D(b+ zYmP~9QHw;t$QhEsgy7l*plAW8LA;_gPeUQm0#JiuC#9!2Xg6$QFaiazjynKgLjdH# zGKTZP4`4$8cx+w3`2_;ZAsh_~VC@2+f>oX{kw%+{RSI@qrhO$Yh3?^lI1!8{vE+F! z8C;>rd@ZxW-Flv@;R@h^sYxuj0j#60UJy|fQL#yQB4rL%_Jt7Azs$Co>w1_(^V~5< zhJov-s~6HJPHD0VMGnma03`|~vmN(6?YrniGI2(ZX_PA&ylKP`0IQTj{qvB?gbM)d zl!W?wT)WxU2f)ZUx2*wjaP7Q89!D^aC}l~WB-qY{fN>;M01(xD)wEKU=69AugR08F3@mBHiS zstf?*`W2=ffIQ_Q&Dko55{XIl)Yey?-Z7E6kVIoTGOWE1EPLE>1)0W@l`R=c!O)3? ztIL+;uCD<=U?^2Su!mg$E})VDO>rh8VCzFAnN&EFO8}g|_krn*p{*K0PCl-nU^v?Q zz%<9^-=q;got=8#jj8R}aMZ}MY}*=}x)o=KH>V9cgfXq&1ya5XWAm;R_kg52Fi)BS za${P)3#M7V3(o>n@4}#b7oG*E-UXw47oGD-y$Gv_EK~@2m30Zg5TskUpD8#3IVTw z2&e`_33#u&0aiZ+w;BOKE9Su;mi4-484(bFtR~IPtnx((u=)T#XnmpI=1|VtD~$=Q zs`3N{E=+MK<3eAdBOU;!a_~?_T>?JV1ndDnu0lmr~gU=Qf&gFRqT6VMBA@Ilp$ zdDRnWD*4yd)wdq)ya!xgWAQc{%*7Tqcv8aGyl?qq8;<~iyt%p2GDyG&sO24{pJ%ft z0Inq}kQ)G~uTp;fm9a0giynaQ72shee$?_Fp!)!-EY|?41mHC;dI9LCyF2)?EWhp{ zU{(eD@jwZ_K=-*q`w!RG^^v&QoSlj`AZQNN;K_h% z`KNmym-6WfmhAKFKHjm_{{g5!3(o>H$NG~2?XiAp|9?VYu5ID6Lw^7O002ovPDHLk FV1h^MeKi08 diff --git a/data/tilesets/secondary/battle_palace/tiles.png b/data/tilesets/secondary/battle_palace/tiles.png index a848a9eefcdfbbea8c38bcee95f029d415a8f7f2..4e11e3596c2abc3d645324003a7a1eafa6c01f5f 100644 GIT binary patch literal 1633 zcmV-n2A=teP)&Q<3U4&K!_;f+i(F$3wY2FQP88H#|R=u zuZVGyB=kB>Q#wn=BYHg=jp>YUb(Ewd`h7B)P{MiX2pyyGD5W$_fbn>Ywq%3|Z4=JB zPD+*WmB19(HeF}f_HrmdP07ACozgC@Wl%sfrro_brYWv<@O8~J*FouH^2pMyVE*Fu zL)#_Cbz`c>eIlo6@NJvO-is;803{#j!jcYMFu>OLEB0lK_miP=N37t zxq!HTi+gV^8oNbX+uMM>HG}!tmhPD6HCV33_I86B4SR+!&4%vSSE@z(coEt$;Mz`A zEnp)CxVLbb_*xk-KnAOpwH4D$4coNfIOmzBowdD{XCbdaV|^!oSS0)&4CJ&fyM++Z^3-o^S>WXK;s+ckHl#J8Sqix6Za1HNe8e z>j+Bd-l8P}JA-K#l(J?~je*Zv{A!RX)2x;caKZ7GgT2};T2}-nc~hpkasmJL7_0W* zB3A9cMXc+~`^MV-zfyvTYbhGEfT$ePF# zWtlu%=+&;hYrL!6adq})R3US-f=_UaAbX)oj-rXH0T+K}xqh9a0z5aq1*+J=QcM?( zpJPLl{jJyQVuM5_LOsuy;uwWUha;aWiVo@xy$|}lk#sP7m@ z@4$45m38_C{{*MJAag*@Igl0jt&7`akIdmZR3*FKZeh0Sj$R^XsOLb{*KAeEXtwZ? zcGbyXG=UaSMK=a-8#Lwe=x_e!zpX^dd9nOL?**A$o0Ua~WQ$n6^yT1nj)g2JTJlsd zPM^D6MW(12fnT^LJj+VNBBCzWwm!<*ZUCjSax3I|t%qY(7)H9yhkFpt4+)iXpxaQv z!q^}TQU3O_w%+&gfO^OH=E2D@M%!`1MQ@Uo#28TL4F*4jaP4V`p9$_heTuduLWLai zctJki+%SlfRd|J3kMYLEDd9ZVM5aFL7;_l+-_}g4SC-Lr*WMQ#f?P|{R)F}o+B(5& zh7|cP_%&YeG|pf#Y{0U0o8*=2M7@*qE@@*mld|k%?MEWlQtRfu>y9_yVfT-Av-9Qt zIp@n=bkhDh=SvKQ^X1Vy&X@D&y1V;F`T6pwe7+RJ`VN+LqY5}1Pw-Y7r;6Qm3l_^I z6{uidkV^F7>WDKrH!|+Xd{^UU5$*uOf{1=q7cpsGD@-ih4|!u0)>`-7|qp9e}Do{11Mi zPxz1!xkNK99IGc1ijE?tC@OLlErL}dq39@Lih5eZ+(`W&9xS2gC}L(?Amq}Tv2dcE fNGLjrn5^i(c*N&MZ zzi-<{6vv+iv4a;=9Re>wb!xm<00eyf)+2(!teeZqm2f^`FI9{m2iz6M6 zfpdn@$CzV$-8N0SG8F%^sNwz;Qe;18mC>`277- z)FAApQ3G5@SVFA9Ba@!b=l#AV7gHDl7+eT$0}MnR@cTy{j|uQ#KJV|y1pqaW7&Mx` z*8t>!SouH+n4B4DZVUSmwRO7q@z7Y(Myy|Soy=x^1Ux{%4oat|Q4Pd!AZ%_Oc6z-| zx7X`FY;vP!q$rLfQqUI#AX6YP6o7R)-7d=ji&jP>Co~`W6Cr8<+o%JolL>1;MV$2~ z&0Im&1u$%|<>atqe%|SRWp*EKNCT?VnLI#V=>OEN)qp_Qg`$Ymg>smt$;dSH9Rb}c zfc}R*D2hlvSOm201dxKf210N!XDRKx+VZlVM)P*z@pu8q#p?r`PQTf2k5@_d% z+yqb)C4XDmWXsNMgN=V0RE3XD%r7ot|O}GQF;6$>I zDq)d7G;T=&eUKNiz}k5d__te;lQwHJ!!EliL?P` z4)AEjb-j^$F`Z6j^i~0^6u`D^7&dL1OlkVMiCO>x8mPb-X@Eop7g|9ofHuAiV5)V1 zwe&Tu$>yc;Z5Q_pk5s&rQ8blO0c z!-=hTszpG$7%o$=d(!0B19U#_|*v-w$X)m6v+>kk){XHOsnCeLtuHuG9C#`HB&~`B;kg;o5-L zd(^Lcj`N(ZulL|tx+1L%;IB>`=LP3a9A~`6_h6XrRI38s^H(qE!~|%lCtLgtT=8eM zd2n0&5x)9for>|}v#szxTs8k*b*u)M_i$)KA0nQc_uR$d!WolNTjs?+&DLeb|&0v(g| P00000NkvXXu0mjf3CX9^ diff --git a/data/tilesets/secondary/battle_pike/tiles.png b/data/tilesets/secondary/battle_pike/tiles.png index cba2f5794c3b16c52fd35101900894009fe84448..fc11f1d1aad5ea141001e340bd7ff2fd5ff79a2f 100644 GIT binary patch literal 4013 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 Tv&lO700000NkvXXu0mjfc@5=B literal 3922 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 diff --git a/data/tilesets/secondary/battle_pyramid/anim/0/0.png b/data/tilesets/secondary/battle_pyramid/anim/0/0.png new file mode 100644 index 0000000000000000000000000000000000000000..c0fb59c0e021d2e655840d435dd119e414d741a4 GIT binary patch literal 228 zcmVcM=2c5=0lxO1pja<h(=y0rRB7o z7D~nry0A$BXB7`&rpqbjzOk|qnOlkCd eVmi=AD0~3+z;#HmFuY;_0000A0wfrY&u<9_Qj0xZ9780gww~F@b;v-Z_2FkO z@ump*C66RJ_-YyA7nnMSwU?D{lHENsr&Y*f-X-DPT(NfV8c+9^-~TRgtnf}_K68bS z^_yjJGxpg3=a=ae@tJwP`@e!&m|4&a(N}Ifi>66mTBDP-R&I{Vn^y^Zty-)Sd$+wX zc^(_yxMJIbh`{hLv7;G!7v}_8Z&tFBwyeGNqD8be$<;{Pve-;*+k@H6_J{iQd2-4; TUu{-+339fltDnm{r-UW|w$)V3 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/0/2.png b/data/tilesets/secondary/battle_pyramid/anim/0/2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c463d9c3b0e572d421cf5488377285c277e4f76 GIT binary patch literal 219 zcmV<103`p3P)jaPU(w+i$j+m`NQ{ur}rM? zJkLAuYy=<64*%QfhbEK4viir)FUP_utS_WiS#r?Gp|Yr3U6SOW&dhjc#sO;B98^VY zlLOiMg2PQQJHxyhW)88;L~|yQDT3PB4ap6Ox#lky!&xJo8R1NX+1k{DXAZmwAKnv$ VdF6~(0mT3S002ovPDHLkV1l|=U2OmW literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/0.png b/data/tilesets/secondary/battle_pyramid/anim/1/0.png new file mode 100644 index 0000000000000000000000000000000000000000..2a0921dea85aa33119550b0bf11f8f72807f145e GIT binary patch literal 261 zcmV+g0s8)lP)(@)g2UZdp*Ui!(8akOlw?E*?s&@D(2eCMTXOyih#Y~4 zy}=;&ilkCN-V+=v%$;$1p_VK<*)!f7<4ps(f|{5>Ee9ovuJ81`;~Nw9RT-0(bI?lU zD?x%nKf028@Ucm8&gJ!v$s`c~FOncwZF)v&U6)}ujCYMh~*;|}@U zwg3Ef4RZhXg)EC+xh${_W5GO33$EK~dUD!M5{{ok!f=p;!&1^8Jpgy~X>hlz00000 LNkvXXu0mjf(cE<` literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/1.png b/data/tilesets/secondary/battle_pyramid/anim/1/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3474d081f891088b8ff0d8d1f91ec8a8796a2c20 GIT binary patch literal 267 zcmV+m0rdWfP)YGnB) z#4r((!*6z!nk(BEqk6g=JbATjblz|DR;}^0_oT+|;{A#v*QS&2E(u!V7J7~cRqVn>F^7#{a!#*zg0II#u#8FY`HEamT(fRg>AtM6=50k?0 l>DRtW$ShHxq~iJO5<~p4A6c#%^TI(IJYD@<);T3K0RRNb7Iy#u literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/5.png b/data/tilesets/secondary/battle_pyramid/anim/1/5.png new file mode 100644 index 0000000000000000000000000000000000000000..bea921d90e42ea862d1fed110fd4913482f3d34a GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^91ILh3@ktfLwv-1As{8|>EamT(fRg>AtM6=50k?0 l>DRtW$ShHxq~iJO5<~p4A6c#%^TI(IJYD@<);T3K0RRNb7Iy#u literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/6.png b/data/tilesets/secondary/battle_pyramid/anim/1/6.png new file mode 100644 index 0000000000000000000000000000000000000000..16652df19896a91d715ed5047610e1350fa210b1 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^91ILh3@ktfLwv-1As}Vw>EamT(fRg>BQJx30L#YB z8!UEAY^cw7IKdcV0}gaKh%Xnmb}_7&7rF#-*j8*I$;UjmbyK49cxh}iLm(O5V8P?bY3zgD>T8e44-c+xf#7`NJ6b!*Awq zoKn}Wy4(C+TkO{`n6KAU_~%YI`Q@U9$e%|3n8N#8y}?f2Ufmzh-%j42=I@w)$NW3y n-!cFG!TkH+l6Nk7<9Z37meuh-l$2BE00000NkvXXu0mjfNMW|J literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/8.png b/data/tilesets/secondary/battle_pyramid/anim/1/8.png new file mode 100644 index 0000000000000000000000000000000000000000..2895d3319a5c35f73a524731a21caa8f30647a0b GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^96&6<0wfqt3-&AkQU;zbjv*W~Q;#?bGAMAk9-RN} zBEvDZ8xB6NA567fb3mY_Trp?bZZDP-yCUr6?^^w2NRXB}w|H{pe~=lTu6{1-oD!M< Dhh!kZ literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/9.png b/data/tilesets/secondary/battle_pyramid/anim/1/9.png new file mode 100644 index 0000000000000000000000000000000000000000..63c22acf2b98595cf3a22b7d9dfdf18fc3847c02 GIT binary patch literal 111 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 diff --git a/data/tilesets/secondary/battle_tent/tiles.png b/data/tilesets/secondary/battle_tent/tiles.png index 919e3878f879545efd434c988f3e05726cf84895..35e5c4b6545c856665e575db886451fe4d56b1a1 100644 GIT binary patch literal 2084 zcmV+<2;29GP)72u?eSg0v=}ETaIKyoNn;;*4Pw%Uze_#FHA4jxr zbUH$#(<#Nxb`E8_o9%W6?RF_{baE)swazasWw5kVii@or%5)c7tqfYNQk-APp+py9 zE5uMrDWu~#B6ui7xlWSKAsug%bRp>^M8{p)H%t)#!-pc0fxszoy121P?fpyG*a{KR zeGK`2>Aa;n$RfIrkW_B@i(g*JVSQ^$vC*;wfJv_@8b}Dc2#$bl8XoNl%b2E>gkR<(i5)4 zVSUddqodfBi2CHKuEZ^bbRRGnY!*@!CHvmQ{T6v`+qS(?6nV|F?X6KH{^Qhltq^OC z53ea-sS#eQb%F3%1{msHqVd|LjP4rsrr+oB0|tA9CFMU(eHTjcZDT=L)ShV~seWUk zH(i@2G{?c`H7NO_B!P2Ppw|N=M~k9)4n?h#bXa{4sMRP!S?t!hxX0~T&{Zlpw(wv@2713TrQR^H!Y-Jr-U8M+R z@o1Hc>)aj>@~OR>U(=xcM{0Qtv;ICdsgq;ym74S<>(t%V(>|H|JexXK2JeHcLfvOo zLF?FD40!Eo2H1BsQwxV(CWl={1MdN~-dBW6s@Q5JwRg#3cgbOQzrY3kQR`Xa2Lc!G zF2RIc%jROdPhQI)tzZ;+jZMgQWMi^Lo4c|n&eduXr~`Fb$36@fn&)Iw8IIp-O)fTt z?Dh79tO8Y8MPy-LQ|@JTMP7?d2s^Sd*`h^WV-vC+*_dq6_9JH<&RKPU6=20#!9H^0 zs?*N&8mrEgws6+rMCUqi9fT9HukEa7bwyr_O$a-(G1;QC?muP??XVKG#f{EQTP3$5 zaQ@?j$NefNw<2)<)4B_Jn~k7NuyJDXk{t1pzO7w+VWP)h*>0mD`WRn|zVCb#J>OSOdRB1JXm7Ae0Bx?<@2 zfam=rzM}@#&H(%KK!i|4`}0+_vUUd8pQrZL(11EGvP!jTiaIt?tyUYNPABIpI7={$ zJCUeV79xDB<{d=Vf-o(hUa?HkFbN3D4RR;N!do}%|9BJFpGG%N=2|P8kv(SO=QbZU4<%$luA;maKM(B>zHL^ysF!vlJY5I#AY>G{61|M1Dfv-s5_Rl(CsU8 zl^Q9tE>NcXa!MU4f6eP2Omp55o8g*!V#hGv5j(sdLEW)W_jYvrXApRHg27_ljH9>b zKkcxJ_7R(qEOYEsTCH=~giSk4AE?^pG8vOCI_vk50WW~{YArE5MN!T3#85tU#PD+` zNOatr_AJcudsgPB565*~AqlLLv@C4l+W;`j*Sa7G971*`%*$x4UX2#i=0fOtp>Q6{ zP`J+Tp@@bwZSHS-G$;0H5gM)V@?DC)`c)>3gtyg=$llb7*QMn+o7pFd1e0}|`6rggo2ns$93>28cGEBieW#PlFEOzp3!wSas35*Vz9aNepEAUnQRJ zDM*fZxIh(AJjYJ{p~UwzbVcm(jLi&MBJ3D6rs<6RFjC|-gO2Frj`#;)Y=IY^0N+ah O0000TpL{LTp0uQ76U+RoEmTfQe*J< zj08qCnF;`33Vg$mfD`t+@l-&(XK*bCh60G$F9Smiyv`*CUgC<4lmgBR-W-6t1B(L2 z{~X|YgACuijt8pIy!0^{{>ddgP#>@VUjab^a7-%acKDRG^!iSCKa((e060`Y0Hh_? zDnO+2o(fn71;B-XCN`rUo|>u!{BvIi7)4Y)1b7jbrve^_RIv&Ox>~^DK?VQ?faT#Z z0UWZ=4-nAC_SpkGwF_KO0YM1KY<$K54>+LR&HzsG7Wl(%cXq%eXMqplaI64WX(Iqn zDxU{(`Yz*mG@uZWRKEfM&j$z~BnA`#ZnvfG7g)g1!7vP=J1GR*38kJE0BA7x0~{ZY z=K-*M*oQ9QGn~r;=>kmV0t-4*%f+1z_&In$^f*n-uq*VqJ5t>JKu<)W&xl6zyaGUWZ+u0c0}3_ zE3fGWq_x@T(2dBh$P43;OrLi9AP1m#?)P1nb}FywojaXYi*|NJUQ7W%wFWA{-)t}+ zcBKm{0Jle1Z{Y?>v0!zOw&2DiZh^=P3D~Z`e{+KYHm-bEuTa1map5Qdw1^8d2)lBJ z@{ARc2Lyl?T)Rgs5P$*nU06*3kNi%{zrg@pDZmB;NDJ0n7ogui5`b2#<@=pZCk0T} zg|8jwoon|#cbs>54A$HlKve}ae19_o;0b3@fZPA-cekGaYEY{}H32mI#wHR{fEruc zsvL0jmH?1M8jz)KHA$pLBolAYM9Kj$28jz81DeWfm;`W?q;d(vxWnztH&#(soJQ!rGUOu1aRC5novVomQyJOz@SdmW6g*)t1vlUsiNw( zQvi_l00F}u6ljF2+V;g7qH2~yeNX{OQ6+#V5*1wPB#IDlyh4q!Gk`5`Cs`Np;?FS5 z1H$k}a<7l-%!G;xIE9!A3jnwY%!fAvP0O11xI2!5dK?;CA=mDB~ zp!mQ6MxmB;^&lHXEkIijGEvk5wDlkpMJ+&I4^)6z0*Ipgcv=sXD4Hb}U_HnKSUpgJ zP-4Ms0J}0TfCa&}76tr!7C6pKfD0N6mK@WffGDLrpk@{VmYlQP1wB9{LJ?re7BLv5 z0lgUkc>jd}OXrQn08a84qo}P2gD?w#8NdNARKUa80Q`Dx05^aFMkx=_hu$oJvkL-* z2PBn8FVcXAvjA**KI52k0?x1yU@j3rJEIu@Jd5x=FM!6-!XFn)a1MaqUorqQ3y^`h zV48V=X}+BS*cpID&%_U0+2~aGlFfsk>14pQEe)`&48WFt^vR34tmM)r0Cv`b1klTt z6IN12Gg~mxiM}fz3k#eX0b~&G4iCfdpeuI>+90OJ0!GB89kO308jA&9`xvFgeHZud z1V9>hJY=tFx;lVNBnddLK8B@n%wBy2V#lpbWeIRYMg3`jGZa83Qxf!j{PQ4)V;uSz zGJtwE50dFD0iXFXFaQMptMQNlx;lU?C<;K)t4t8fp(pi6=|)C11v z0ci_f0CjCyS1lkB0EmN_0)8q7h=oOO!CpB)ENuyZ_)i}M+A)I#BA2uljL65m z5&&P`lSINa@&U*R543>Hr7{cn1|vyj)q?(bctHMupP+*Hlz_MnP!AY@-2chTQv&`Xqkdr? z5euHYEDvH1Fd@%A9gi}YHWLKVdYJhm3Ec7=!{ec&wj~?>?0000$GKWn!xM=@NB|S=hUBxVlrW(XHYH2qrFqol=m<@RUS}{f$W^VuMhT z^hKayWA26*T3$P7br_)34v|VwjTChUq4pST{d0C0oKsx`j?ycy1c!o=3=T0iF=4DH zfuu-SvTP*ZSv2uzh2YTh@wCTUK92@twjW;V_qebeSqQl0o_OST#$#!L=R)Jo-e_zh zPh}m0_3$Y##+29euam)C?T458K5ndgHWIEi68Aa;+}B~jW2JFpG=fd! zsjOqN9zNyK2vujyFYM0wR^DQG%f{U3{8-5+$HQXVW-XBh00000NkvXXu0mjf{>Nzn literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/bike_shop/anim/2.png b/data/tilesets/secondary/bike_shop/anim/2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c463d9c3b0e572d421cf5488377285c277e4f76 GIT binary patch literal 219 zcmV<103`p3P)jaPU(w+i$j+m`NQ{ur}rM? zJkLAuYy=<64*%QfhbEK4viir)FUP_utS_WiS#r?Gp|Yr3U6SOW&dhjc#sO;B98^VY zlLOiMg2PQQJHxyhW)88;L~|yQDT3PB4ap6Ox#lky!&xJo8R1NX+1k{DXAZmwAKnv$ VdF6~(0mT3S002ovPDHLkV1l|=U2OmW literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/bike_shop/tiles.png b/data/tilesets/secondary/bike_shop/tiles.png index ec109c3be0ee04ad6b9b6b5a13405a06d92fc084..e068538f570eb58e37ca64999687ea87dcb410bb 100644 GIT binary patch literal 3505 zcmV;i4NmfjP)7&-6~~|9TWuItbI2tSTH3j!fRTFTi(=?tuW}Gj9byv&TtlZ+RszI_9z@9p9qqLO z=vZ-8R4GI|wpKD7)HRZ7Wv4&@A1I1IQ6oqsE&ZWSQsN59Eego(|GiyumlP>ch!Q&i z7tjxHb{}VEXZ}0;hMW;OIH(SE%yMuSFr6(S~tyy zF0zKP4I6Pq0b0}&+5y|94bEl5o|qu}kJ$t%YBo;o=YeoLaGovO2H@slit|Go_RytB zq%Qy)M?LLV%`X$xG#9w2(@OVcfz61}%AdOg-K1&Ss0&@!J=l!P0^0_(fl)GXRJLh~ z%S|b23#D4ls=%3ds`^R&bVX_NpsJnqNN-Q@%H35j)#_Irvq5JIMvCMICb%*=Q#j)NwQ36a@DGA7uXN~By1ZmED@ z&2|x&4YoE?#rvq~2ZJ-+NU^w#T_B%`YXd+J6jl@Bmuh+aIHgX$1DUlS2hOMfo*WOQ zuF%ypoxtnBnRkHKj{~Jg&F`{m&szoXR9tucx_9@h1JcfYY()fpjEJC*5fSv)&R|dD zL6)zUVY`N^_~lr!b)cHit3fI$qS@Kce?HQ-ovV#{#{(&MoLhVxjY{MFZ1w9J5M}H7 zHAcVdCp{BkKe051ew}+O3Jf#$d%UVwSM}<&Uj1nr^3yc=SPkepoY(nrsX#UT)%4r0 zKZ8d-vu=ge#3*N9hxDWx_4dcks@uE%L|mTCq9y5-6Oc|=5zi- z07Yo^pce;S!m*3hH*#C29!9{5vK7_X0yIWH2a7$!kXfG&^hAeYMX$pe(V~IRN+l%@ zThp{57a3jO2H$Vzc&&Kn7GP=Q|7tES-mSF~Wib?~B4hxFur>(HM#i^6=Z z1*{P*sL6hI?%}w&PZul7pS`YC>aUvCs-fO^EuVwd0H`i)3809)EwZqS0ztdvbI=-K zvWr>U&lQ(Iv?i(({kcjkwsSrQtpTrcRQU@S66=3U+KQY=&kK1IS)trJOne?#Qk0vU~3gwS?Tx5$-6&><%50&8^~VTBs&hv z$nlZ_%X&iAlkK;P`V0fTz$LaKkzrb81pQDhs!|MATGX*rkM;YYpAa_mpJC%D|_b(V{EZ~_WjV`O;oLuM2$nHkND0&7DqD&!--2}_IH zAAD`|QjiRde(-gsw%>|&-DWGpR;FBLL-3380y8NRSP@(X9P}d)iIB5eguSL|w3I>4 zK757wh-#YrWWO9h4T;*M;-K>-?Bv%KfQSqAiSkc_dL{g&FCs2Y19W{mM3Y6e=lI#m zQ6XogsW9hkQNc3qki)un(wtu&)>3CTn)7@ou#9tQd!?Jw7Wap>nIp@_XT8NYMaf$h zo}SBFX@|0R(wvlXEw-MNmAj~*+}}IjP(f*Wg`7qH)v{FXv*r-W_-!-r9Ov5X=OJqI z%3TbU`}{<)Ttz{-C%$QO=-Df6oGdFhGdh|9eATUJMT~NiSI_d*tG0bLpeAk9wt!LG zUm0(py*ZNOqD zzgL&|-U^*up`|up(RQ28QypsRS!-VbL$<5BQ9h^J#b-aAw%?=N5CjL2^pIUro&TJR z1#!Y<^h=9|^c+T3ZK#SL#AUJ8zGQrmVI^t-O=h@$A9-4HRaYiBxsa1up&J4#?J9({ z_a%6Hg3aPudqx?DjvmoJBHW=vFnEm! zF2DfT<)a_mumx_7WyUIMRTxM{cIyRc;>}{XwaCl+7gZHF+fsxi`NC59x_|jZXLt7i zJ?32okCnC|di=lKD5-3%a@Vf#8pxe3*}4E@Xh&;@IMIK4YVKq4;fBe(`*~q4?(Ihr z|1SWA0kq^Qk0q;aV2yM6CskT91y~y#N2F6YXXT#ogSgFaiC=A%c>GxPf<=am7NW2} zu)j&s)RX=yb0-1-1-RJ#&4Xb656O^9oTasN+%dA|$& zYd#2*nS3Zc-Q@a-xK#DL2LwFLxSC?iZlOeU11Ks?VVrZ(&T2ZvXc1lUgiTQpuEvy; zAs4L-#Q@GJ=$^%Mm{gxCO#lm_0MM&EH5WK`@jm?5=l;ayB49_J&dcD0Bz7sp{DhREo6}aqLuh zk=|0ePEqXMaaMNh6hs|UNQnVwTVwykd?9wSa`q{Z=R;{>oW#&)GF}GJ><8l0tgv}& zp5i$ZuQuC4pWC@fAe#av@#4#3xV|k~V;HxA**U<@-73NYati>o#)7+M0EXa7)pK*n z=>*N06H|CW;@n)h>iny5ei7VxdG!}lSYa+&7>Y_`iqgVRXzW<)SsDu=7EsT&DtJ{Y z9A2Jf3lde`$P#E_D6CWE zHy}8mg_6ce1-JFqF*MU#CRqstkk*`X5;%qtj@1d}wLoh;>U99ejMzQ8=K<#!zQSBN zmNx#}6NETv{DSrY#n&gHFnh`i@+Sq{p_2I0;K^=bPzhtk8)K9hOD4SkJ(0vKK{`3) zA`}Y1U?krt#^^7;2Y=r16}HV{{RRH@K~Z59mgrBED1Pp?S61DJ^YiocA^#T-L4?oA zS3^a=L1ggRAi-^r|BHtQlLu9}UGb*AR+1;Y3$vc!WF{;R3HQE0{HpDlulN#SZ+_+f z1*N9ni|@e(wn2L4rfJ@<#0}H@7sU)C7VryuUwj0i^2`-4oYrEdJnwdR-o2%JlW!Nd z1pVHAc5mLz(2J9A4_AQUD`ns3ltW@nfiLQ6Q2{*WTuAir;v2hxAYv03=3@WATQvX{ zTm?+?UMnsg3_=8V@L-wcZ1wVwG#>-s^KkS1op~guINdzgT zP5{XXPJRxUrTR_I@Ywzd3JgHb$$0wc(IeL~P0WB08U!KdM0Jm5*!s`mMBVe>FL?g@ zrp$j2R-OMI=K1gGdgi~x*#CLYZ>XMmPcYs+&GGJ=Um)InlQ`Zbj(1Pjj(5K>Vh8D< zhuz}cgMvNByVbPj!+&Lo!fN8jd$suro8+iqa&~ssP2S?r;MT2TeDH|HB?_Bi%u14_ fC!qoU-1y-C=L!}bX#z|W00000NkvXXu0mjfYC*6X literal 3270 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 diff --git a/data/tilesets/secondary/brendans_mays_house/tiles.png b/data/tilesets/secondary/brendans_mays_house/tiles.png index 10163e9f1cfb4dd7e406129255d1621501f44091..6d6a5f04776151a993d17d39c1e8d3a045731abc 100644 GIT binary patch literal 3074 zcmV+d4E^(oP)lK5lxFEF?7`(}T0ms&XrVidc8KA7Eo znw@>~-8XNRv%;cHBtV@uADXnOQjxY8lq5k`2*<~Seif)WaO@;)qC%T6Xj8i$Uc#`UgN4$AWemZK6P1xHMt+n~L~Vp7EYR z__a>Q7IpIde=Hvcap=J%2|#}(^wzE@mS$%NyFJ3pEm7Rfo%ObFP%5UM%c5MB-{T zr$Nf&s*tXbWFLZCgWz!NFsQIt!G%uP3fpeR&jBCv?8e$V-3KgD#se1XWcyTqXmgtAUMutZU7qN2B0x+02<>)SZ2Om$gJy1G$b=mdMrm@0`w8Y zrBtV+XT$iEcJ=qOw*EYYO~?O>{*vBD7d~aMJ8#9MunTh#+``-dc7qdB-I)CJrN$Y~ z!}gJV%@X#Jhs{zRwvQC-zyarB1MT!(D zQlv{W#`wW9w5-B|XGdlxeh=M@#7}=8rvq+!j0I*PgzWg&+^B8R&cxyK zVZ^s!+>yc>ISXxK?Wkg|-g?(y(s;xov|ENu@CUg`9R|3_NGMS7R za!_KfQYYMBSK`XRF0^2Sue(+`ekgSPsIJ6CW-~aO^MTBA;@_2OPOR!HIl5_br-u<1 zt*GT)Bb2^d0-m+u#EuVS)=_p;0NOS@AH;?XFK)11Xa#Wyr?uk{GzCfZrxf;V+g`pG zB|S%fw!+vhR)4(`owWgHm$r&FmVz30m)7yxLEl0QcclrR7!*qlLT^JfioJ%oRcsXr zOHypO|3Q}>ij5wLt5G6s0L38$w^eK@=`mVE>d8kVmJY7wmpHE>oMRjCm!tNCMgY;ro#X8QJBDlap zP1F7lEUy`3;aCVf+*$5_)K(ecZ{qS()0iAGn`?3)=vz{73yRtS8;?Ll5ANPEx1a888mCRPyd=o(XJD+zmQj!xJ^`8P$QV?5<5AGXJ6Hm5ihTZxjYn?~>c6{^ z{C*ANpACE@&;(jQ$Hf7%*L|!Xzbaa2Ri78C*YK6g;GMdVKz`rFtja-#Si_9Zc>0E@ zf3*qBN}wR>muK@xA@btc_f%CAacBsPT+B0$D51KH_0OKddc~VX_4Uso+HyFe3z!oR?u%3jQ)(ibEeap9a8oD&z~pW4^I zsJ|{?CeDF8KN^l`Mmik2zyv`7Ej_RDwV|E+OhT%+24vPDt$mia1&3Sh#LeyVj~uOO zcCNScgB~GLNzdZDpr%UF~6qg~hc)0pg3S&>kN$*gFs+KLdGUfqM(&J-&S7FmJ zeZJ*^#gza9DCfVf%p!L&+F!t~C$p$sp4Xml(j;>REjZ6w+ag?mBQUHfWA!>_yVaqV zZsL6jm0GP9-j|H*Hz#D)QS;wQ<&y@X+5}oaM9rIT%_*}0-k(T069U+MEOMe_9 zvnoC(te^z|;?S3fLwP3-z3Td#t~&24$?2+d&Qb`kuNx|k_l-5$mB+e}a3=>N8ZMEq zS^n>toSCcrO;Tu*=_yP;Am~-O0y}%QZDIW7sfU_(XI*44*TqzU!I$)6UF>W&6cdx% zWlaT(<|vrOIN(_k>_{p3NQ88trmx?V6Nk@TU@TK`<1WWo!}vT3{;*LFS}9SN0W1a*Cx7^@yD0m>E+#RI#9hM} zi4SRBuTTzx%tm3E#nv2>8P#l}QXAfzy9AGhr|0R9#;Npt)^G$@0Pvk=wXNd#OMXY1 z91^1GGVt?7-z)jS3HWv78(+JnsC4f66gFLi{CqI@G4OUn_-XW)D83vN z_&w%{@ug6hTTC2ZLNc3#p%9yZue*chntC%asWnC*p?VOOSu9vw3F4oWhl%1}0_i!U zTJm^$hVl7Fh%XS$0fRf#EBV1G(>v(UuiR2pcayj@bm(K0-czNh?$!`rC}p4w8PK>x z7o*}!AL5r4!LMBj?Z^k>IGBK&araAR)nKANjut;IUg2Mo5V_i>_dxjZKe+adw%Df) QaR2}S07*qoM6N<$f-*(o4*&oF literal 2616 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 LNkvXXu0mjfl~Pgi diff --git a/data/tilesets/secondary/cable_club/unknown_tiles.png b/data/tilesets/secondary/cable_club/unknown_tiles.png index da68cdff2cf7a26f4e7f0534d0b59237dfdf7779..84e79f7201055ac6ab4a8057891d66e452741c55 100644 GIT binary patch literal 311 zcmV-70m%M|P)H)-#Iz-X2(82h2!bF8!t*pAe*@uXX=2>(-2hUL$e$(P20Z`(002ov JPDHLkV1f^0i)a7< literal 287 zcmV+)0pR|LP)dtNvEX;+eA2k#0#Jvz(}dZYP2+=aKsJnqQ%bUYeOr!_421 zP)A*@A}DM6B5{JlCW38Hu)Z>!!-DFl7_u@b*r|j;UBZItgkj7HMhvV#5=eqpFymG^ z4GD-eHCh+1tG$iJ3mT&xd4UM_`MdXKi3mu$^B{v>fgbKWP&Z6q_rQ(|6XbRe?7|pC z(BwXWfu_(;08OEvAo}^wkLVJBQ*d2KF@ZkKI~HIU{3?T8@MQwK@ME1pL?8kYh(H8` l5#0YF;C?(~eEZ xdBmg=)8I0zTiQoSSGSeXQ&#U#?*^esoD3!whI6uXu5SQo_jL7hS?83{1OOZS80!E4 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/cave/anim/1.png b/data/tilesets/secondary/cave/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..9c92be8079c0150fb23dbc44adfcb71e0258d328 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDOXPy#}JO0$sXQ*-pL+*-kv}f z>!u(l=LQ#!2_D6T%tD!&nhJ+lT^e@iWg3WaJ!DggS#U>$M^(?FL}ABCHHFiLR~Z?? Wj11kXtQf;V279{txvXuK=QiDrIl$MW@iAfKmr>vgR)D1$DI2q!Tw6@%kaL@;7_jL7hS?83{1OO1j7$5)u literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/cave/anim/unused/1.png b/data/tilesets/secondary/cave/anim/unused/1.png new file mode 100644 index 0000000000000000000000000000000000000000..47e7e17ee95fdaf34d342d8970c538f9829e4750 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDF;s%#}JO0$sD|#yr~?VyxgfA ztW0eN0@^w}M|{0myIUJOOgeNX2y!Ja6j-UC#CwYOaKNNCXZ9xPM{Jv9f@K-%B(?dz SoYr3tGSk!5&t;ucLK6VDI~^YY literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/cave/anim/unused/2.png b/data/tilesets/secondary/cave/anim/unused/2.png new file mode 100644 index 0000000000000000000000000000000000000000..d1447cde23dccd65bcdaf90921fe1212241d5db6 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDPvC;#}JO0$sDXqY)vi_6FitV z9l8{>P)Fxg(8ia(%t8*a0b*vkih2%*SeG2(b!l0+f|;SVN85&t)#oF~7*AI}mvv4F FO#lvr8~XqN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/cave/anim/unused/3.png b/data/tilesets/secondary/cave/anim/unused/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad81b1e1e9daf31260a661bd436367997d4f31c GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDFaUz#}JO0$sDXqY$}IzMLm`* zUDTl{n7Kp6p+#G-)5OQ{dcX|Xl?q{5S`#=9hp;nbt=1OT^vItMGQ-o=&t;ucLK6Uu C+!_4< literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/cave/tiles.png b/data/tilesets/secondary/cave/tiles.png index f905c6b21a2eea0257ab6ac7d833c128d69ebffd..e8c98dd71fed4b99cb85594fc7cac435646039ab 100644 GIT binary patch literal 5884 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 S^9U6H0000>lpAFMRrHM3mA(kwrx4L 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 literal 1638 zcmV-s2ATPZP)UE6aa8-duR#;qwQe}g={ToLtCS;$cMs0C`7k_3jqgm$t^wxvQX^PvU_M(v|xH! zf_uo>(IL<#hk{Eez1IIip?2ha8OGVrv($MSjWimMq=~dNU8+Zv7|Hr&-pptuS!2b+ z(Zu294CTKMC|taOfXc}SH~fh0zY7kcOUqz&>`_OGli>zo*z*iki)r6;_0Wo{qz*B`lLNWU}+A3 zuAwESaM|Tj(3a#%KvTHvY8v|=XisE-s&G`MDO`5B6l8%Yh41<-K#O}$0$uj@HDMjl z=1T%}8VHGj)w+RWwa%wN14iPYf&6XFFgg|i4Aa0riNL{+cF)G^Uv#Xt5O53=htWs` zaOZ*|yudXn1pYq4g7NsPRKQLF+_fXaczird2l@;UG;BKnJjWai%!Zc^*bLCIET&Qw z&vi_*G0Ot_$$;k~H1m=HXayWmE6f2Tf8UXxW8)gBp<4E0#w}Pv@H$C}HnQ0OL zNnuN4KYI#+nmq6c{0#w`LTxAyKx@F0FADgTSQ}@L}1ppFv2b={@d37r% zfP%-Bxq&c+yuj;ALDO>p%%}{na{)Ak+yEUA^8wq<<|L?t+(5AuwwtIhP_zzc6-0F~ zzQqFy0Qhyv^v{7GZ!mB=H2nCtfccp)w|UM4J#h}W&2uK&_Awx9r{KD9mb6{*lDGLW zUU;S`3(s^nAx*^{q(3c13(qy}gXichVH&35431NaFur&Ho?2D)BEbDB1Mn>-0W7NO zC<6GF03fZBF`y!(rUP|zEx97m+mBTB{YNMR@Y8T*0hnSH0j5a+cQzHKpsJe2r4R#7 z2S)^$o`?Y*k6HRS2C!4{!W3LIC(W`0$z@ zjV!?SMgR<>ZqA%W-4p}xI|5*5cKirRa5QspF+>0x*x2D;v#qd_51<{%L#O!wqfWcB z7$El($-pU8p%1uo6FnhZ%bLMLccP=X2&f8yUT^=R*P{R%>l{Gt0|fv?3|Pm_I1ivh zaS2{-ZZ=^c=Zqi^s5&V0D9sB zv?sp8{Yrhv0IGPhZ}`f6hv;tbrW<(sve$y^YP?7Q3RgVx_ASer;03WjY*dbR_=~&X z!W|ZOg+($ROm4;z@G*0>!ruP#7g7G$y+aPBiKj*sW%(jaQq;&!LEa5i~!dWo|S2|n#~PZ*mZDFFkf(TQ|}c- k_Y)kD9!+L2Wl_5SKNfR#FdT;Lj{pDw07*qoM6N<$f`upK-2eap diff --git a/data/tilesets/secondary/dewford/anim/0.png b/data/tilesets/secondary/dewford/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..adf42975fa65c184e93702c4e1cbe83c549257cf GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq#8V3978x}hMu$KYc}9veNe8R zzt??J+NyRPTc4|5C5aABOr6YuoyjRLlitjl|KQ>5oc-*Yo(lWJ4Jww~c1l}$u(9t= zkS&m#+Lw32rR9$4lj{1e_nyA>0kvf|ce1twO?>{5GtSPqB5I$M$iFtpAIuaCP1a+9a4pUXO@geCwWeMSrb literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/dewford/anim/1.png b/data/tilesets/secondary/dewford/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7c23a18caae63f0652d852a2c53885fa3234dc GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq#8V3978x}=AJX;I+Vb}`k;Jy z&OPPW|0m7=bhm4YmK17mh}i^i+q%idBz@W*;(hjmU7>%L{UN9`^S*`!cyO zInghS#m~1CIfw~9`KIKp=fN1Nd#LUAv{-k|{8L%>Pxh@o`0-Zr`N9vUj#uh!58tqD j>f$Gvs=7azzn!gRP*iR4yR9v53UZUDtDnm{r-UW|1ItIe literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/dewford/anim/2.png b/data/tilesets/secondary/dewford/anim/2.png new file mode 100644 index 0000000000000000000000000000000000000000..86075ffb0b7955064e20f4ad12b7b449678e4981 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq#8V3978x}rk>l#)odWr`tY+K zYnsk@I9u;I{}PwRoMe+pj!z}^UIcfw zPjUF+&{V8u_1q}#+}0WS&eeBZo8zX>T%z=EhsnOX!Fwc{o_@@`P(O|H?yfZ7dt1G` kZ|||M3)NL$`D4C>b@%$tr06`&43L{VUHx3vIVCg!0Q}xcXaE2J literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/dewford/anim/3.png b/data/tilesets/secondary/dewford/anim/3.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3c576214a9cb83b23595a3a12a392e79349546 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq}n}Q978x}rk*q8I&8qhdZAw3 z_p9xjtCRmHXxRFAD#lu|FquAakS*fTj}5U@%T;8u72v3K%no@`-O+nx!AB1EHCBPE z-9I%Z=p9qxi*%W=Jn)y-*D{k2ixj@jw|pyOwCzr!bhfkg(~{DNcmD04vv(@4f6X&( qV%fYc3h%2`E{h+Vn-cN*{cnDwrWX56UysfQInC46&t;ucLK6UJW=Q}5 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/dewford/tiles.png b/data/tilesets/secondary/dewford/tiles.png index f7997219729f6cf6f8b6f38818a3e4f7c7081868..1cf4c165c4716f45df69ae3c125c82dae56d45bc 100644 GIT binary patch literal 3985 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 literal 3756 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 diff --git a/data/tilesets/secondary/dewford_gym/tiles.png b/data/tilesets/secondary/dewford_gym/tiles.png index 1dad6f205487b07654f468a7c128417f79f5403d..7d923b505c596b99dd239a53d2ddaae7ae151784 100644 GIT binary patch literal 640 zcmV-`0)PF9P)c#H5Jl$%Miwp%1g_-XfX&ouvTjniGT|FAsnoJ#lZJ4SJ}lfCS_C|Y3&J;8$%qq6 z5TNA=Lgvqq5^aK%SqMm`c=%clmz>e(ER_fv0EeJBj#CQ5FrqBW9x7#iK$$xzbqu8t z=KhY!X3WcaSat5Z}w|;mZyD3>=T3PE!>d2oKZLj1QTF_ z4iyvMry{!2FX4bzCw&BIL>s+%pNui2xdc(Yd4{h_siI2faw?yL9C^<<@&J9YcnwY& z=!1Qu%P;B+Tmm;`>=IG;oqkcDx2`+dDCve&-lZCB*3u63?KR9kQ5MUX%H<8z5LiSZw`|my8UcF@$`hxpcgZKB+~dZ7?1mb zv~_*z1`|s~7-fu>a$JI~Dzb>`(`~8d>Mw4X;5XY*(6!dGt>3pMr>^DmH(P{Ij7B+8 aXx(2)6!Q3v?xS1)0000&8RhJH(YV-}%OkTNZ=|W`a?hILr3Wc7d1K~H25;SdW z7%=k$m2yYk=?^Ja`VE3DlOI0v$n&g*7>K}}$#g@hDU~sGFUCA|zs~TXl*(5^tXAiG z8vv4ZAMluj04Ze((}nmvV6Zk`9z%fEdYcH5Btr)4m6rhk8c3JWApI2g@_rWrvY&dZ zT|xr_e8^me0pBMW(ECAvfVC@^yaiOYUX}3;yfSkAd5>vaR#$sBe z-T?O3S#~=C!1WId_J{-BF#y-!H>j@hc^C(XD=Ed7(4e}>&0!MYTx-!9d}{!iNz5d` z85lqne89iME=fCk(4K?P;Mb4=0A!jMcT)`P`spB9&<{LFrI7~5mi}Gv&jA>yHrpE{ zAfPDCv8cxZa0YA`upx!IE()AK3V<_U(*Q`J88K>b~2n=`=>9Uzq2F)Iv0{q9ozUL*F5x{{B kO85N;W$o_)l(;+p8FQNQ`1|fr6#xJL07*qoM6N<$f{sKCxc~qF diff --git a/data/tilesets/secondary/elite_four/anim/0/0.png b/data/tilesets/secondary/elite_four/anim/0/0.png new file mode 100644 index 0000000000000000000000000000000000000000..806d26e570e348ec3620c361106211e3c4e24254 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^93adBBp6ht@Pq*=B~KT}5RRG270(|%I&|Urqwg$E nHf4ooi4|Nz)l83^IMan03?K2Qrfu(10_pN}^>bP0l+XkKy!IHw literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/0/1.png b/data/tilesets/secondary/elite_four/anim/0/1.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8e6a31c92bdc7b8b674b1697a7499be500d051 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^93adBBp6ht@Pq*=B~KT}5RRG270(|%I%IJE=zGqV oiZ_pP4t)?&`NndjRp^`=gXtyy*8Pm%j)8P}y85}Sb4q9e02d=1X8-^I literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/0/2.png b/data/tilesets/secondary/elite_four/anim/0/2.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e6161a6460547b89689c41e39ea885e5ccd309 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^93adBBp6ht@Pq*=B~KT}5RRG270(|%I<(>3(f6D! o6>lEp9Qq)l@{Q$4tI#<$2FpYIOI0sUIuFw2>FVdQ&MBb@04m2E)c^nh literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/0/3.png b/data/tilesets/secondary/elite_four/anim/0/3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8e6a31c92bdc7b8b674b1697a7499be500d051 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^93adBBp6ht@Pq*=B~KT}5RRG270(|%I%IJE=zGqV oiZ_pP4t)?&`NndjRp^`=gXtyy*8Pm%j)8P}y85}Sb4q9e02d=1X8-^I literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/1/0.png b/data/tilesets/secondary/elite_four/anim/1/0.png new file mode 100644 index 0000000000000000000000000000000000000000..7822d18961b5f398c42697c1279043b8da3ba999 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDL+pa#}JO0$v^m6cr;uzCUCF{ z#Xmgqe~Ss5N$J7_B@v$^&YfFKHt0lrWM@mdKI;Vst0PrpmVE_OC literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/1/2.png b/data/tilesets/secondary/elite_four/anim/1/2.png new file mode 100644 index 0000000000000000000000000000000000000000..09fb59fbf70ad81c170971b11f6bb97d1cfefb76 GIT binary patch literal 1260 zcmVQGM5QXas@|<8aIf3mP*jLcb$$46UW-odcT3ZgFz1gBy0tATcYz?T%b%1ViFU)h6VD_FfN~zTwm3J#lh=F(k0?;qpQTCpqo|<4%T*JL!X;@}A|qr@$rip5?sf zIWO@a-(QE%8`u#yzD= z0JrvTF7xtHPnDZHQJdn5c_X@L|BLiQd$AvGOIiaPywHxWKk+)N~ z=#aXe1L~Skf(le$ht74}0hW1n&RgcZz;(IFz{aVku5%r?tOI(Adg{l}n{jSvG4wj> zb=2#qx1ipFdJEYz@1A-0%=?-6!n|LY_cQ0Q=R8!8znt$=9pCoL51_Z8-aYk*@;B<; zQ)<@ZhS+l+d(LC`(tjQ2(ZPkpkKmVoU2jIc8TDo_{ntV79_}Q%E?)|}d^4!y)%T~f z|JHnWoNw;#(_?>QzF*aQ<(KcNw}9T_a4{bAi2KJ2Z}#?U;+x1l&3V=I_{>#TfqcMIo_TTk+9r@d2BB^KEc^qP4)*ug72Si+Yxb|LxEN zG-&dO!ogP=Q#x!~A#M^_o0s52BXJb8T-i2BrHz$_Ey>VCV)?plw3vwC^uVgS|A!DZ#8NEVMs!wI%qo z+yc$ZXZ;%6HBmx?rmNf_Olmq#Xlw0r)izwtX1S%?2wO#4)`wj{=( zwpiCrQjG$muaeY0Msc*63xH2ATCycVL!YL`Na-EQipTN|!Bta-gOvlZ=>?YT^ENRK zo?H^TiG0>P%Mr94No?9$>ZWXfWg}H%49YS&F7~L{oU|^K7$OpNkMRMXAv-mxh=g8M zIDYITz?Vqhy6nUW28Eu6h-tZmvtT_u1V?#vZG^q7t~O$?FvgI_&F#d1`P8_QYxO1oS`6c=nfqHtAJU{lxd$c`5!dVRw z_~`8#kKrN7d0B^b4@_AI7ROjs$JLBkcf4}D{%3wHUwHrICGtPMi9Y~7 Wo~LxP@{BeB0000+hAk?JJ0Zj5-KqBwT9^8K@ z#kHNJ8x+MN1?s~G$sEpb{uz$wdNdl*IANTg#tGMSGX}24<1vkHu76;RX!H@QqYwPw z)kk3T;RYC8F-8M^KDYZZ+5Pm)?yYg(`}q#|y?~Cf03J(V@!RRb*RrJUPL?FZ{R$9w z4ACRmmHbqe3{fU5XjKAtCH9KdlRqJ`D(?Be@9J-voR$T9E{oUwU7$!Y5(+j)rJ;qN4mPbrVj&+>Tx{*tigzA-oL+s{T1wQ$^Mq??+be=PS9~ZI*!}jKkvUo z$1UIeC;H`I_s18TQKqMp{yV_m68Cqt-@qYQ&x@noE3 zGeO#A8HKvi~hb!Ir7do z6eeEMRJW08sWde#NrGfVPG7c-Bo$yBopEHe)6^O$q%0sq0OXo?1i;&dytkfAXlpXw z)yUlK84XO7>pfpUImFm2oTWib@@iXSq5XwdTL!XYXyk;Z2*iVh_(Z?;#W`I9GQ3Xd=L?b zLU5&a6glbWB^T6rvIcQmtqnPiHj^$|&MlHM$SqiFC|V>KTph`}5Xf+w84tL4Cdr=R z8}8HCC|Wy%w8Alc#o$$C{m{yuvFjadSm%9YJM`p+A)CN^)kzF5^@KvxTC&Z$0X7ZQ zjZ#QUCA-k0W^rPb2~v!}usvo29Gi3^uNe_q)wq7FB%slWy>zJ)a})}i`haSgh`XR2 zdI%lmpxOjy*-m$)rzoRO zgSfo*+Bkz5p&7a3sptCn*NL-jIHT_2BkrmXz^&62wqY3kHOQQEkq>SNUF)gJbZ!j<8mI_JaEX2 yusFl2IIboXhvUdS^si}K8hHQYBl17~7JmX@e0q$t!&WT-000051L~d)OL6HxQP(wA@6J&RNPWJ4)cb_bRDTAs72*vEGXHeq)u2zHr_@IPc-o zeLRV7k(>VLh7kVSYECk7laT6iDjXwD7B|j2Y2>6 zgVhwWq~caDKNV12D+5s}k zaEz-SgNtGzNV}q-&^DS}aFU$IA)os-c-qlxVDFm6%Y6}NiSqA9fw#IWA5j>LzJ#S_ zw1_J`X&)VV=Q|2BFKMp(NUc=q>=n+^At!mYZL!e*$g4erKd$#cce&R!IIarh zJ0uT&FKMmYKx&Kb%6^7y_&3|JU_78t)Gq*A0ItC})DMe_erf=*ybXY{gr@BPt@xv- zVTsCzWqE8O4u#}O?I?25(M!Hi=gAu6?X@=KG;Ahav|L*xWl&qN)=;!4Ft|37bs>;p zn;8$dc+rwQ!*}e{*eO~&gR;V@e8u2ZW&P30p0UdU8}9QyavVIlVaP7U zp89~>G7)b#reM*v?PnB&LE8gcndc<#O=rF07%Zse`2tf1TrIh($07*qoM6N<$ Ef?!!oZU6uP literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/1/5.png b/data/tilesets/secondary/elite_four/anim/1/5.png new file mode 100644 index 0000000000000000000000000000000000000000..d0cbfeb57cff3c941397618c313b781c0c15b3f2 GIT binary patch literal 1248 zcmV<61Rwi}P)^F#!7uaB*p!G5BbIE{nH+|9BLI9t4X)_lej5VcR16bs_fJELU6j1+P za-29#+M*~H4bU7uSmEd&&Obv+KHrSSGP%A1Cf8Roo=k3JG$uxqABoR$H5y;b1pfp^ z0G?%hH5$oiLg1%djVD*~!w_;2H|gWXz}1LxBgRc86FKGm)aMZR06sh3i3O}(|W6m6Ney_~;}{pcFx z?b;79FaNq;O1+eN>G_=Z^GD$9!%`k>y4JNsw>n>ae>nSZ^|xVvyOut8T{Fb}jsCu? z_iA3gr{2S0N&2E*g4bMjzWUzzR=kIXzNj9H%hl6@QYsO(NUS7t>t$|(JBKt}?L!ul z+*vEdQELerD77|2+*62>#FbWTj9PqwkZOC-qV-n4j>{kCR*XAD(KS@e0nky0Q(XEK zoFp?P)+LFAVsFI-r^R_}@~yAI^Bc7Vj&47D-xu{FQUCpb2QX;*JELc0&#QC z+MIajD+yDt<<{0w3T>=Zw4{e7BFooxrNsmUN0&Rvt+P_+aLAN^4gt^`z7YUlR^ol> zB@cBWxpxIBcSoW^h;f7RD;S3yM}xgo$SL0J3M|w=akVD+xH$sV<-2Z=?V2FILh|5` zS~j)_Vs>y>*HdJ}PZW*AnGlcgN$MF;CV<=HVB5!8DnIW5wYUpFUJ6XZfk>?3qnBoZ z%A3XfWFj_&>+1(z*-lC1ZZ#Uh=5kxRrjX525RbrERClThu=i3sKxVx2L zrw0lI*-fW~OfCLr^=60FxRGN(x6n4shU@1lcuZZ5iLEfKh1nvw3b%u?+rc3N`D4K8 zHX5E*mB+y0YN>dH;3h5h5e+TT(7Y_9a;x#2AU0000< KMNUMnLSTY5*JyPB literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/elite_four/anim/1/6.png b/data/tilesets/secondary/elite_four/anim/1/6.png new file mode 100644 index 0000000000000000000000000000000000000000..4b35ededdb4fc28243cd2354e553dbc952523d08 GIT binary patch literal 1161 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 YKWTYKwVw4c=HHTg=)hr{Qfnmke|y5|;Q#;t diff --git a/data/tilesets/secondary/ever_grande/anim/0.png b/data/tilesets/secondary/ever_grande/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..7536d08ad1a80452afd07dbccaa324892b81f8d7 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsmY!$jv*W~MbB;IJ!Bxla$$C( z*eY+8t|g~9PAptl8kW#t(#LY;BwL56k_uP7x!~N`ORhIt-)ql%XCBX<r2Yc~zZ<)+3nvyZKQZp@ zIC)plTt49UlKH~?FGBA`2=qsad#LH1nl*8c*Xeis9?d2%%_R@M1Ub{w)z4*}Q$iB} D2AfXN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/anim/1.png b/data/tilesets/secondary/ever_grande/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7536d08ad1a80452afd07dbccaa324892b81f8d7 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsmY!$jv*W~MbB;IJ!Bxla$$C( z*eY+8t|g~9PAptl8kW#t(#LY;BwL56k_uP7x!~N`ORhIt-)ql%XCBX<r2Yc~zZ<)+3nvyZKQZp@ zIC)plTt49UlKH~?FGBA`2=qsad#LH1nl*8c*Xeis9?d2%%_R@M1Ub{w)z4*}Q$iB} D2AfXN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/anim/2.png b/data/tilesets/secondary/ever_grande/anim/2.png new file mode 100644 index 0000000000000000000000000000000000000000..f0835aa3b83e07cbfab26d3eb1be60282fcf4100 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsUA-k#}JO0qUSd99&+GeycIT4rP26_k{`Y(TI@&4h3h|ixtbN)n zrYz@graFBxg{f+Hj<004pEq}T9fSX4hGesxUFm0*X}_4JodZu%)tiKSR$wlVm)B=! zZ(r7}daqw~9jczQS3TzV%I5udt$qJCoHyYUc+Z-B%P7s0`-KoQpG=&FjO0&grBw!t y^Hv^Ey?ENm-6mwi-`ag!8KpljTI04YOscFtQo)FeSD9lU$cdh=elF{r5}E*x$VdAC literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/anim/4.png b/data/tilesets/secondary/ever_grande/anim/4.png new file mode 100644 index 0000000000000000000000000000000000000000..7536d08ad1a80452afd07dbccaa324892b81f8d7 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsmY!$jv*W~MbB;IJ!Bxla$$C( z*eY+8t|g~9PAptl8kW#t(#LY;BwL56k_uP7x!~N`ORhIt-)ql%XCBX<r2Yc~zZ<)+3nvyZKQZp@ zIC)plTt49UlKH~?FGBA`2=qsad#LH1nl*8c*Xeis9?d2%%_R@M1Ub{w)z4*}Q$iB} D2AfXN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/anim/5.png b/data/tilesets/secondary/ever_grande/anim/5.png new file mode 100644 index 0000000000000000000000000000000000000000..7536d08ad1a80452afd07dbccaa324892b81f8d7 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsmY!$jv*W~MbB;IJ!Bxla$$C( z*eY+8t|g~9PAptl8kW#t(#LY;BwL56k_uP7x!~N`ORhIt-)ql%XCBX<r2Yc~zZ<)+3nvyZKQZp@ zIC)plTt49UlKH~?FGBA`2=qsad#LH1nl*8c*Xeis9?d2%%_R@M1Ub{w)z4*}Q$iB} D2AfXN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/anim/6.png b/data/tilesets/secondary/ever_grande/anim/6.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5030306330e8e9c2cce6fa7ff0c50eb91da06d GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsR^Dgjv*W~Mb8=XH8}{dUZ`i2 zmR{Y@$r=)K@M4$Hx(A|S&DV;UZP|H`>YP26_nl4p-J=V8{&?2av8kL_=w9t;xJp_o zY}%|>>FIl$*2yS3EqbkgWbb6jOWtnxGh4QJPAvWW!ISw^X2s(lKdf}*y-yqTcAT>n zG>;9;?n-#XdGN@Iri!!M-jpX9eCpetzUI(j`KngqfQuKq)j@9bboFyt=akR{0INz* A00000 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/anim/7.png b/data/tilesets/secondary/ever_grande/anim/7.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5030306330e8e9c2cce6fa7ff0c50eb91da06d GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsR^Dgjv*W~Mb8=XH8}{dUZ`i2 zmR{Y@$r=)K@M4$Hx(A|S&DV;UZP|H`>YP26_nl4p-J=V8{&?2av8kL_=w9t;xJp_o zY}%|>>FIl$*2yS3EqbkgWbb6jOWtnxGh4QJPAvWW!ISw^X2s(lKdf}*y-yqTcAT>n zG>;9;?n-#XdGN@Iri!!M-jpX9eCpetzUI(j`KngqfQuKq)j@9bboFyt=akR{0INz* A00000 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/ever_grande/tiles.png b/data/tilesets/secondary/ever_grande/tiles.png index 0f3689c243ae13a7a05cc1b049d17bc98b173dd0..943a3f8f421e748fed59606e6051eba6e858244d 100644 GIT binary patch literal 2208 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 SN>7jg00007%%6EP)3fcfPUeDhL+E)9?59 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 Hu0mjf$ogN0 literal 4602 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 AO#lD@ literal 771 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 diff --git a/data/tilesets/secondary/inside_of_truck/tiles.png b/data/tilesets/secondary/inside_of_truck/tiles.png index 44f923a5a2d0b3e7785b4f4d0412ec167df3ad8a..65a82e88834c8cc249b3b42c6f0951c9cfe38174 100644 GIT binary patch literal 545 zcmV++0^a?JP)00000dm@~c0005#Nkl>*r-X#-VgdlVg!bGFz(9fH0 z6{L(J1;`iCd%TWVz7GPH_n__jyVZ*A@dfl&5NS{@2!b01!7YQ-ixFv1uBk6gL4u5e z;0n>B%= zs{2+6Y~9FtKI=x7W=p(m!8upa6Gk+(^r7uJE|gJQp}sD}C@l6fHG{=D)}0-qi^EhJ z5;~{aHPYuLIc literal 514 zcmV+d0{#7oP)X045b>IzvQ3F;kaUpm(|3 zz}@BJ&zhUL3BTKK+2p)~kS8>@^kE76`96|*IB0nQOy9PK68}VHSra`ur*J4BdQXCMH*0#G>XhX|7z zp%Tz90X#&Q?`ADt$sPbC`9CMEzQjNJ?h0Ji{KJE+%ZiqOu5(llKW4tQVzg2V(gE&|X< z6L1`X1mK4V5vvW*-y9D4NE)>kTtyY-2~)c{ntd{SSY*8_BM$|--;^=%I?0aY3N1CnTHDlAcIbpQYW07*qoM6N<$ Ef>1Zrvj6}9 diff --git a/data/tilesets/secondary/inside_ship/tiles.png b/data/tilesets/secondary/inside_ship/tiles.png index d4b0471b200e1115a5899d96b81a36fb57be0f99..77142a7553ef7cc3ca7cc07c8d85e35cf59b395b 100644 GIT binary patch literal 2149 zcmV-r2%7haP)^qz`x(wGy9GlXL!}gjb?|YA=_(!C~y=ZSYfLQ!6Lw@9toR4pY zj}$%@Q37Qb78_W^2upwl7SX|yz?pO#giQ^_m^~tVjdo|ct_N@k!5&H};Xx?WqttFO zSf@ybT5Ew(7MatC_E^$o@QCnrBXxd^fs_+5kx~XpK#tee`fr_^N+5Uw=48Bx$ zQ-i|I!4;Ga8UZBm_$8r|&|!hNad3sISA-;7KLRQQIP3;F?ADsn+5NW`y)s~PvCZ0K zxWIa3pHBNRnYA58Og2|wGui9}){{rTQ4?q`+ATI5d-4PU*>2(1-KS2@13Q}oH{W7@ zetBKt9ue|8l=~cqI}DCjXgK!d$)eqTDaT?gW z@X*bmvq(3i_(!@KbQbAmq$}IMY%aE$bp*qm*l^f94Qyxx=3<+%;TlEQ^mCNwwK&iw zV%U<``oS~EfXoSWn?67LtKlp#+?3J9SurevT%4aiRC>ZbnE@ldj?(dEI2$Hh7hh_0 zz2Wg@I@*n0ml<`>-tMLm#kxii`hxIA)%esHNt+?`g+Xvx$G7t?jlZi)rBCudXv3%3 zQVLHAhY9exFX9Y_9{89DOHQ>f|1|5D#lL=** z9bpXpOp>-5tx&~#hqlERiyNAyXO@c+>>M)C7c6c}>D72Yh zd-H{NF9qwKupGH$Bo~_#a3I9E>ij(CczR|MFYJe;Ciu&pa@RsJ&!Q}{FyiE$48TW7s9`Oint0VsNVe{Dvkr-oHuK4j*jKqr$HS^p?cT$Z#2-G7klt`n_a#67A}RkO|0sIn z{W0E-Kaj=wm-h+RC0>lj`#)?xpI8=rR!Y$X{1v9+%EqJ|Rf4?$suOy)CX1KqaJOaX z1D}#6#|R@*(cv9}yMQ|Wjl|tcj^2xk1l}Esw%mD1`4^d+fBBYDFYgm}!u$(*@TjYc zqb3mNU%EO&Lseg&AJPH57cZcN>*5#pLW4wbgsqfJc`YT866>Tzi3+>1v~?BS$Y$=s ze<}jqI;^@3J-9^@m{V#5U34{ARLwYI(ktjJm48X5hSWfG`V@191nzw&${!rG97?;w zVFy=Q5|QmHfY>>P=p9#hujmWRoWS2TPDW3JHyTw13b%pk199@?HmcPJRq^_EwHhQj z_{$F`y0f2&a=r`kS6Z9W<#~v8i9eWfV9>WBgWs|3c3b$2sitKy5C4Rji*~!M2(HjH zZ3&+1xx#MQEnzp?&0@s5HdPC8E}hJ`Mz#Djx=r|ByF@@x5`AK8fE9wsL+gZWm2_iGAx|;!w3#w#w#W zo3Y_M0ay92-Z8>YV7?;wDliw@j16Z90ep9r{&95y<%dbJ*AHNt5-2oW25-ro8St-; z4ECg_PdkB&Gsxu3`_oQ8*K7P6tUnu~x2Ao-!xiOuEl4k%G}V+ws1$3JvW6`@d6KR$%(VvIhG{6`UvV_gvS zIQ~&2oKsAkKSOj}?YcN7dior(xWgc?bXx!%3x9w8~5Kz*Tq$B+mb}Jft!jhs=lS<97lyhzTWvbb1C2{eN*dpaW8YSZiOCEy%(h@e?-4$=F z)YnK)M&nHEuw5+Kua9B6MAA&!H brgi@XRutqT-6OW900000NkvXXu0mjfN)ZyX literal 2016 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 diff --git a/data/tilesets/secondary/lab/tiles.png b/data/tilesets/secondary/lab/tiles.png index c2a86a73da5d8c8b1638a61aedcc97e7177c2979..6a213d9609dbc272e77aedb46057c42a828ada8b 100644 GIT binary patch literal 2844 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 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/lavaridge/anim/1.png b/data/tilesets/secondary/lavaridge/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdee79e24685e0915a7b2fce39f8f02a6f5c66c GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDP>O=#}JO0$v^m6c$gjj?5+N9 pfB0^B`G4a()!)TVF?BCo#multua5i5Nw0X2HcwYSmvv4FO#laP8(RPX literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/lavaridge/anim/2.png b/data/tilesets/secondary/lavaridge/anim/2.png new file mode 100644 index 0000000000000000000000000000000000000000..b5810b80631a560dbcdd31d4f7b8161665292b61 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDS1y9#}JO0$v^m6c%BHo|F<{& l$M<)4tvMK<39X*)k;~AlROdZgwzCtY#naW#Wt~$(69Anz8DIba literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/lavaridge/anim/3.png b/data/tilesets/secondary/lavaridge/anim/3.png new file mode 100644 index 0000000000000000000000000000000000000000..caf7b569835b7e3edd654797f57b762a68dee3c2 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDQ!;|#}JO0$v^m6c$NtN|M&m* y`44g&4r}Ta3#Xb6Mw<&;$VRMjj6U literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/lavaridge/tiles.png b/data/tilesets/secondary/lavaridge/tiles.png index 4886aa28e3736581ac3319ede0f666d73a455bd8..896c43194b1349e149d234b25a6df5fabb801378 100644 GIT binary patch literal 4215 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 N002ovPDHLkV1nfXKN0`{ literal 4087 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 diff --git a/data/tilesets/secondary/lavaridge_gym/tiles.png b/data/tilesets/secondary/lavaridge_gym/tiles.png index 0865ea20766790f98204fe33b9c3802f9a4e38d6..8734cc3bf2d63cde6c5ba99eff17225e8ff99492 100644 GIT binary patch literal 713 zcmV;)0yh1LP)mf3c12v!V4eWc(j-ce!d+Cja4UwAhD%<+$Q5`dU|+!-$u5W~n6dN( z$oc=hk*zTj@l4nme{;uqhPh#;J?SaTn;{l}|LiQcZB#s@d#eC)p^BK-} z#rc|2ARgnridNfN%=dZB`No{@kb;Iod71JQcn)NlhrlzChrpEBSjhlUiF(~>$Cs~! zj%szfx@(kl84x@Yql`G30j-6@wm$f19CuFpTO!;>7a}Sb)*{^K_qQM4sq6Exy9vl1 z-3Yp_+;W>0LlIa{JWrxq;_}XuI38MOQN*5uCo-Yx0oWUew?7_;RoBs?2NWqrobQTC zb3o9E&XW`)b{#NZo2o-#ckG;~o>X^ER}On0wT9com%?FduT|wXY*vf4!`{bRZ{+xn zQsAkRNq!QXOTPL(kk90)^Cy#&;4G7~pgWU!uz;z%Gr-Tb_n+FLg{X&qU~#NR2E=Pr z>1-HUxevphbE4{WD|5ZuTGN zpMLBYM9hVVF3bd5tGJkO-}HR>Dc8EmggZ+NcHfw5!rX8XA!ecKO!WN%xK}yySJi*s v)8+dT{o!qs5?oHZU)`6QL*wHTTn^R0WKWdkkc1lV00000NkvXXu0mjfhW%RO literal 631 zcmV--0*L*IP)M4LST z$b-z;NXIL=Hh|ksUZfzpUVaF8M7b`SIyN$_0pANiD}4{>l)F#`B)ICJ0=Vhi_F-V7 z{)0|Dztr)p0DSux&^ILtcLFL7GLda+0aJuL51~b*V>{VVgO|>~dcY9!Aagd-@oI;I z>}zmW4w>GaII%DeDu7FdC`fr4qiH&Rgl&fk+CV~aFFa- zsH*|^?-~Oo;O~!LKVgK`<6P$;Q*&RpG*Z6duZ&~NVRS8EWh^DQmp6!=V+B|RLIeiT z0x8H7#yuF}d%#m(96N`VrQ0OLsaU!I(}^K7TALS1ua^VtoVTHfvEXSeU4T)a5bdD= zXagl6ic-0aMJ(R{l&k{_D3JWE0H{Fj;cx&^fcuH>p9~lPfSwLe2T@f4a!;(mg#KpmO*ra(b>5HNh5sWel;wa( R2de-8002ovPDHLkV1oCw7EAyD diff --git a/data/tilesets/secondary/lilycove/tiles.png b/data/tilesets/secondary/lilycove/tiles.png index 88c5c7a28b4a1411ab6e855b6ac0db34eaa9e1e3..b77f3d37925546942fddb5138e917338b3e9bc19 100644 GIT binary patch literal 3912 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 G%KrdQ4IB*s diff --git a/data/tilesets/secondary/lilycove_museum/tiles.png b/data/tilesets/secondary/lilycove_museum/tiles.png index 4951873010ff10bb85bea3e91df0abf763f7f4cb..5bcc0ecfeb7396d3622435c781c53192f7866605 100644 GIT binary patch literal 3938 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 literal 3345 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 bhV%ae;8k*hm?-k~00000NkvXXu0mjfP9@Ip diff --git a/data/tilesets/secondary/mauville/anim/0/a/0.png b/data/tilesets/secondary/mauville/anim/0/a/0.png new file mode 100644 index 0000000000000000000000000000000000000000..88b028b5210358b4a3d4920ef092c67818b6941b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsR~aQ#}JO0x~DesG8qcETwIyD zr29=roLK{t2Iom3QGrSG^f$UR>{-XKP5hV<-@HAG`Cm28w%m65u-MHvJp0x(-DJHi zyn6N?Z{@t}m&BId`5(Qi$xf@t;)-*xkL zcJ1HM;dFNL1V69YYO1*lHo7$C#7+32e^Xeq!0=Na+o8jpvOK@4_;}58R#|u5V;0KW zQNmkode9`yI`H-5_bNqhCre}`^IJYI{_U{iqWnFfvb&!|f6O|j(qnjcQc0@nl5By= Y@(NN8T(WO{W`kVf>FVdQ&MBb@02Avz+5i9m literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/a/2.png b/data/tilesets/secondary/mauville/anim/0/a/2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea20f6dbd281511a1d59fb92e5880a22d29915e GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsUlAo#}JO0vE3Va4+ZeJv^5;h)h6n5#`pT5BXb~^>0a)NZoGty;^_LJAcVye$Uym zCqMTI*&QxU={U~#uy0q&KFi&87M`5RkB-gQu3F)(J@J*Bk6wI%dHHk;u0J5FJzf1= J);T3K0RV|*JEZ^s literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/a/4.png b/data/tilesets/secondary/mauville/anim/0/a/4.png new file mode 100644 index 0000000000000000000000000000000000000000..c8097808c7a2e419c3b8aa4f9f4da594953d845c GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsY*{5#}JO0x?LN2nG6M3womhY z+Yu+DVCS|-#e4oFfl2%9Ejt;0#xTa{uQ?iTa7&tZ1@q}7jsD+8g~wJ;>59?Izp%U6 z$N$gn&RtyBZ&xh{vyRD%`f_oCvX$Epw)atAel+|ll&V#Gwe6$oFS%t$d^g5$@7%-f cBW&`I;ZL}I0Ph~JFCfQwy85}Sb4q9e0OwXh!T{-XKP5hV<-@HAG`Cm28w%m65u-MHvJp0x(-DJHi zyn6N?Z{@t}m&BId`5(Qi$xf@t;)-*xkL zcJ1HM;dFNL1V69YYO1*lHo7$C#7+32e^Xeq!0=Na+o8jpvOK@4_;}58R#|u5V;0KW zQNmkode9`yI`H-5_bNqhCre}`^IJYI{_U{iqWnFfvb&!|f6O|j(qnjcQc0@nl5By= Y@(NN8T(WO{W`kVf>FVdQ&MBb@02Avz+5i9m literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/a/7.png b/data/tilesets/secondary/mauville/anim/0/a/7.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea20f6dbd281511a1d59fb92e5880a22d29915e GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsUlAo#}JO0vE3Va4+ZeJv^5;h)h6n5#`pT5BXb~^>0a)NZoGty;^_LJAcVye$Uym zCqMTI*&QxU={U~#uy0q&KFi&87M`5RkB-gQu3F)(J@J*Bk6wI%dHHk;u0J5FJzf1= J);T3K0RV|*JEZ^s literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/a/9.png b/data/tilesets/secondary/mauville/anim/0/a/9.png new file mode 100644 index 0000000000000000000000000000000000000000..c8097808c7a2e419c3b8aa4f9f4da594953d845c GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsY*{5#}JO0x?LN2nG6M3womhY z+Yu+DVCS|-#e4oFfl2%9Ejt;0#xTa{uQ?iTa7&tZ1@q}7jsD+8g~wJ;>59?Izp%U6 z$N$gn&RtyBZ&xh{vyRD%`f_oCvX$Epw)atAel+|ll&V#Gwe6$oFS%t$d^g5$@7%-f cBW&`I;ZL}I0Ph~JFCfQwy85}Sb4q9e0OwXh!T{-XKP5hV<-@HAG`Cm28w%m65u-MHvJp0x(-DJHi zyn6N?Z{@t}m&BId`5(Qi$xf@t;)-*xkL zcJ1HM;dFNL1V69YYO1*lHo7$C#7+32e^Xeq!0=Na+o8jpvOK@4_;}58R#|u5V;0KW zQNmkode9`yI`H-5_bNqhCre}`^IJYI{_U{iqWnFfvb&!|f6O|j(qnjcQc0@nl5By= Y@(NN8T(WO{W`kVf>FVdQ&MBb@02Avz+5i9m literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/b/2.png b/data/tilesets/secondary/mauville/anim/0/b/2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea20f6dbd281511a1d59fb92e5880a22d29915e GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsUlAo#}JO0vE3Va4+ZeJv^5;h)h6n5#`pT5BXb~^>0a)NZoGty;^_LJAcVye$Uym zCqMTI*&QxU={U~#uy0q&KFi&87M`5RkB-gQu3F)(J@J*Bk6wI%dHHk;u0J5FJzf1= J);T3K0RV|*JEZ^s literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/b/4.png b/data/tilesets/secondary/mauville/anim/0/b/4.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/b/5.png b/data/tilesets/secondary/mauville/anim/0/b/5.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/b/6.png b/data/tilesets/secondary/mauville/anim/0/b/6.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/0/b/7.png b/data/tilesets/secondary/mauville/anim/0/b/7.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/1/a/0.png b/data/tilesets/secondary/mauville/anim/1/a/0.png new file mode 100644 index 0000000000000000000000000000000000000000..88b028b5210358b4a3d4920ef092c67818b6941b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsR~aQ#}JO0x~DesG8qcETwIyD zr29=roLK{t2Iom3QGrSG^f$UR>{-XKP5hV<-@HAG`Cm28w%m65u-MHvJp0x(-DJHi zyn6N?Z{@t}m&BId`5(Qi$xf@t59?Izp%U6 z$N$gn&RtyBZ&xh{vyRD%`f_oCvX$Epw)atAel+|ll&V#Gwe6$oFS%t$d^g5$@7%-f cBW&`I;ZL}I0Ph~JFCfQwy85}Sb4q9e0OwXh!Tv^5;h)h6n5#`pT5BXb~^>0a)NZoGty;^_LJAcVye$Uym zCqMTI*&QxU={U~#uy0q&KFi&87M`5RkB-gQu3F)(J@J*Bk6wI%dHHk;u0J5FJzf1= J);T3K0RV|*JEZ^s literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/1/b/0.png b/data/tilesets/secondary/mauville/anim/1/b/0.png new file mode 100644 index 0000000000000000000000000000000000000000..88b028b5210358b4a3d4920ef092c67818b6941b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsR~aQ#}JO0x~DesG8qcETwIyD zr29=roLK{t2Iom3QGrSG^f$UR>{-XKP5hV<-@HAG`Cm28w%m65u-MHvJp0x(-DJHi zyn6N?Z{@t}m&BId`5(Qi$xf@t59?Izp%U6 z$N$gn&RtyBZ&xh{vyRD%`f_oCvX$Epw)atAel+|ll&V#Gwe6$oFS%t$d^g5$@7%-f cBW&`I;ZL}I0Ph~JFCfQwy85}Sb4q9e0OwXh!Tv^5;h)h6n5#`pT5BXb~^>0a)NZoGty;^_LJAcVye$Uym zCqMTI*&QxU={U~#uy0q&KFi&87M`5RkB-gQu3F)(J@J*Bk6wI%dHHk;u0J5FJzf1= J);T3K0RV|*JEZ^s literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/1/b/4.png b/data/tilesets/secondary/mauville/anim/1/b/4.png new file mode 100644 index 0000000000000000000000000000000000000000..44564e67a599b80664b2480d99c8c5a00c33d328 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDQ!;|#}JO0$sDXqY#a|CNu3gS xG>uK=QiDrIl$MW@iAfKmr>vgR)D1$DI2q!Tw6@%kaL@;7_jL7hS?83{1OO1j7$5)u literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/1/b/5.png b/data/tilesets/secondary/mauville/anim/1/b/5.png new file mode 100644 index 0000000000000000000000000000000000000000..47e7e17ee95fdaf34d342d8970c538f9829e4750 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDF;s%#}JO0$sD|#yr~?VyxgfA ztW0eN0@^w}M|{0myIUJOOgeNX2y!Ja6j-UC#CwYOaKNNCXZ9xPM{Jv9f@K-%B(?dz SoYr3tGSk!5&t;ucLK6VDI~^YY literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/1/b/6.png b/data/tilesets/secondary/mauville/anim/1/b/6.png new file mode 100644 index 0000000000000000000000000000000000000000..d1447cde23dccd65bcdaf90921fe1212241d5db6 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDPvC;#}JO0$sDXqY)vi_6FitV z9l8{>P)Fxg(8ia(%t8*a0b*vkih2%*SeG2(b!l0+f|;SVN85&t)#oF~7*AI}mvv4F FO#lvr8~XqN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/anim/1/b/7.png b/data/tilesets/secondary/mauville/anim/1/b/7.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad81b1e1e9daf31260a661bd436367997d4f31c GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDFaUz#}JO0$sDXqY$}IzMLm`* zUDTl{n7Kp6p+#G-)5OQ{dcX|Xl?q{5S`#=9hp;nbt=1OT^vItMGQ-o=&t;ucLK6Uu C+!_4< literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville/tiles.png b/data/tilesets/secondary/mauville/tiles.png index a015fe5b4f7f987c5cd1592b3e20c7cbf9bb4fbf..e4ce0d4f85e3532d1a9ea37b02ba4a7ae50b2554 100644 GIT binary patch literal 6372 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 diff --git a/data/tilesets/secondary/mauville_game_corner/tiles.png b/data/tilesets/secondary/mauville_game_corner/tiles.png index c8f0dd1eee95cc66c7cbdb49c1b95bb43532c228..3f7f565c9c6a6fc6b8d4bf6d879964987d69619a 100644 GIT binary patch literal 1788 zcmVn+GFi~-x)hjQ>SW6*c3FDcr+7#nbrQcg_=1Tm|mRrNOuq`hmG#okc8X>#y`d zB0>j07C`{G)niE5RLqqe25c|pBX)zo`C0?W*C*zSlJe*A`Hqt#?GR=0uamSzEL9np zEf*TmB^DCr7cr}3SGa9p)Yc6yRpDtxZ8;;N)}1>jt*!y{&x~B!HH3vc{ZP1aAr#Nt zS}11Z%TUO9R3RPQIHY=!k5aTw|JK)2Bx>F0gD|SMfkE*@ShoZ0>~u4z%+64$1`aZ4 zhy%3^ghW8>Y(FOcAk?5{TEbk%9GylWGssLhqn?&f>xi+GGFVDM&9rb@JuM-0T*jC$ zZwl{E8m6&HaIN1mvDsUBYfwGuS`oBd2HG`k9oI@~F_S}dQxcFzRmV)#Ra@(E6 zJ9q`OXI;8B1I$R#s!EL+p;~TPxRVQssJdv`ok3}KX0|KjEFmXrVwU*bt*MdwXM{8A zg;BOj>TMwQp9CqQpcxq9w0dEbl@Jz+X7HBK)hA)vGJ7a#)rc8IZ1$rqHwO;`iGgdU z7f#?{XX`s4RKPzWOCNv$)j(Z?nBkt-bxi(KXUTsZll5>~9SB2I3gHEtB@wt4>I2}t zB~fv2O#&4qDyCWyqH-NWd%cpORHADv{dy&<);^xYzfq5G(sJ7vj}}*8#{}(+H};t$ zAoYRTCzM!lFB^Ws!isI6~+4zG3w*n=QXq6#1W*3U|n;^H#_vG>bn(c zE2w4&Lcm`K(jB~^@$O>eYUA2UVnUxUE?eM$sV{zR@}HJVN{w#npJM6@eBOjN*azKV z`ETbl^4~Dw22kl)cZH=Zv`$w)(z=hmz3%DO<$K5FU;L87z2j7f%Ov9f_oJf-NJ5Ux zQMzc4uD4Z9y=oJ4c?FVsCp>Qe_Mgrdl;mMg8GpBw*}OLEkaixh9f^d zAxcl7e# zh>vgg*3Fw@_j`=x?hk+>;@(l2NfCZCW#3P21y~L1mwt z&!zII{ovHB`Qq8hzmq*WDQO7So#AsWE;R~;dkP#@%fKrK z@T=v*AN&?!p3+E-c>*kqL&Pe<(kifew&sUo{5@%L5ybv0N5oJ}#G(I6#LI`ih`o?l zKIG%akXSZ@Tqd4!GNzv?75)Dkxe?C)8aMu)w78IeoYfz7fFvYP#Ey_S>M$go$mx+j e!|%_>6!#xvizTtJ{i*Z-0000umWk}gzgYlc9* z7$Ca<9%%txCH(6SiKA(8fK9v};PH4z0oFnfKsxBXF#8Mb2(#Qf9uz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3zB|?nxEORS=1$-GG?hV(=ZFm150iK8a3c24|0Q}>5?_vO#%Vh$%5J4)?m+lF`Pa}}~ zH)pxPgnm1wJy>PH-U`~?c6Tvc@B@`2;kv1jHcnm<&$8p*O?;>X&QxIUr&L#x0N}piCow zgvr3iY!JzdYzC@!Y2j2Uv3pD#2fCx%^C4*5Tt}7%1UJv@U zavbwOy08)89FYqJ$V0XWfOtLV*J|KF1!TH#a(xsiUATUMPzRk$0O3^$)bP*u=70cq zI%Lnx0WyQ2>t7~7UKb|#`UoGZT_DZRU-;1&#=y|w^?+qiYJScDBou%z@go5w^?(5& zI|j!XPt-B!P%#Ebv}8S4Gz;O!Zud?!>j44oyg`juCX(&e{HaXaQHhKXlCiH=BYU(9Wiy1>klz1uYKe9RKVAI zlWq=hb72S+3JX}^P5~?mYSG;Y#Xkhm>t6@hW$j-V2B1u!Ah4SxP!OO3Yp)5sgqhF+ zg8HT*@YXQ|yle_uK?VAFJ zM#l#sKZ~M9NhfZ|QQrJ9k`@s8rT|I73?L~O0ymihO-+El!k7+S;KpPc{{tXiC9!lz RA#DHv002ovPDHLkV1nKOs$>8F diff --git a/data/tilesets/secondary/mauville_gym/anim/0.png b/data/tilesets/secondary/mauville_gym/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..090fe6a1a814dc6488c72a954de5e33d1a26d7f6 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^96;Q_0wfr&mCt$%q~>|LIEH9U><#o5JEFkzX-iIV z^|qNcK3i_hG?$JGR$}4{eQI!_P2!;fTS29TBjdMu5ih@@Za`-(@T*@vJAOGzvG_9R=Y(!DEn}w+p2f#)|;mv=67@5{c5D| zvWGcu(W6Bo_no5`e`S(?yvSnq_QI`cv5M#1%&suc_#>(o;wAUIdP4`lUG~=CWJTeP PAQyYO`njxgN@xNA5QJ7Q literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville_gym/anim/1.png b/data/tilesets/secondary/mauville_gym/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..48f325890e0ce2c83252bb5d82375ed61b971664 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^96;Q_0wfr&mCt$%q!xO*IEH9UEDbs+c-Vj=*>msB zdWOBR2il~jKU>(XDF?ir9k;tL&yvJ?nMlJ5&1EFE3RWZGV09;u9U|B7qvV z+GC>H5egwj?{~gdt8}RpW?$r-J-OSODN8@HCuWi5>_d0{AKYB6EamT(fRg>BQJx30L#YB z8!UEAY^cw7IKdcV0}gaKh%Xnmb}_7&7rF#-*j8*I$;UjmbyK49cxh}iLm(O5V8P?bY3zgD>T8e44-c+xf#7`NJ6b!*Awq zoKn}Wy4(C+TkO{`n6KAU_~%YI`Q@U9$e%|3n8N#8y}?f2Ufmzh-%j42=I@w)$NW3y n-!cFG!TkH+l6Nk7<9Z37meuh-l$2BE00000NkvXXu0mjfNMW|J literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/mauville_gym/tiles.png b/data/tilesets/secondary/mauville_gym/tiles.png index d710d2e4014675de83c1d02588bacd7600afa9d9..5606bb101b487ccf9dc87fa1e0e1fd3155fedbb4 100644 GIT binary patch literal 1534 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 Eg0)%o*#H0l literal 5968 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 TUQb{DYn5x=)l;iRqF($T9d!cI diff --git a/data/tilesets/secondary/mirage_tower/tiles.png b/data/tilesets/secondary/mirage_tower/tiles.png index 8eab57f93e1786e283ff95b6d1edef51d40c3617..fd2904ca1c2e059dbe41875d8af997e31a7cef13 100644 GIT binary patch literal 5645 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 literal 5561 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 Hu0mjf49Z}e diff --git a/data/tilesets/secondary/mossdeep/tiles.png b/data/tilesets/secondary/mossdeep/tiles.png index 1933b89838bc7a141d1b55e4a733ca979ed666a8..818406b232532bddfaa3cfd1bd79271d9c045d31 100644 GIT binary patch literal 4269 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 P00000NkvXXu0mjfQ+8OM literal 4060 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 QKmY&$07*qoM6N<$f?<{9 diff --git a/data/tilesets/secondary/mossdeep_gym/tiles.png b/data/tilesets/secondary/mossdeep_gym/tiles.png index 919d0334e12cb8cdbe5bc7ffda4761fc36481bcd..36a0873a4f8715e2f42bd1bcb01c08bd052d6d3e 100644 GIT binary patch literal 969 zcmV;)12+7LP)l*e6os$hK>@s&?$E(N0dt8n#AraZOGYVEfGmwPW(lOfz+}*(r4j^W)*GrH;Gwpf z09HXDUQ<9o=L}ZhAZ@Gydfcs=>^YaTB~xUpp=0jw;gLGHe0=ZlJV}g_{}Dba7iXws z)Inj?dYKEzIPzao*G-!K9Rz{Q6*An-h3cUAoj8>}!rdkI2zQs*J6)cxwN~PD#{q(4 z;8?C9vZRA77RUJ}#@$teB(stc_X?HsN z;9qH6CWMI_not4VJ?idJcb~d$VmQ^EoxL9UB+hWKi54-?YPiIm2csQiU%Kj@;tekVHn$4H8n^)Nt^mx zv{~>b#P{(el!tF7AEY|5?Dq#SyXn`uv7VZcOBc1VrdMvqO)ojqLc?W{Sn9w1m$BIr z%(Wd$IX25+VaGzlW#FNtT&-55T&t~uKd7XNl8Wb*i=mRvcsyPQtOy1yfGgV z!45Gbf*oR*7*6+X{wv;mJ|coHF(QI4Fr}K*0zKVkU z)6_!s&(b3DYC`r>VJ?K>tl)+f4ptY^MG*W{{JAn-75p9`nyB z&cEQ84%6BTz5rntDS+*y!?Fo-lDX#Q*;kAvwYCOZG_qNOAy(RDKL?!Yu-v^%wNFZ zP%fuG;RkCb>0*~S6o?q`|;rvxFllr r+GSQ}>`^R(LyQJTz>N2fR{Q+}1wVbx;kfo(00000NkvXXu0mjf-gx8j literal 927 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 literal 4799 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 literal 5966 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 diff --git a/data/tilesets/secondary/oceanic_museum/tiles.png b/data/tilesets/secondary/oceanic_museum/tiles.png index 25a20d586268dc2e1990a56b0dbd572fb0594820..a074d4a053d80297213ccb4a160e7c8307c5f11c 100644 GIT binary patch literal 3219 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 FV1hC1KxzO0 literal 2662 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 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/anim/0/1.png b/data/tilesets/secondary/pacifidlog/anim/0/1.png new file mode 100644 index 0000000000000000000000000000000000000000..dde024f6ee9c1f875aceb5689025cac8e97dabbc GIT binary patch literal 603 zcmV-h0;K(kP)HB@>9Jx8ED*%En;Kx68oYpv*2SZnN~u)O#+ zOzp6pv0J5W($)j|`L*-S%)ai4!;brL_S5BEZN}W)-?E*1Ph1o*N0P?xmPi7U z*y}G5T(vE{zHD*T_P^qyE)8_i8Wh?XD0&EWp=~4-2wA+4R^m~B6%rJh;uns-kggVb zNAAE<6h}_glGj9?|1G+f>J;v`xe3n=ySc}~&}~tk$Y~Tx;gq@O3g@SAe~4|rwc%dh z`f$W;0QqI0v9IOkC1=|RgTRO9`vKN7;&xL1kJD4;3cY*5y&*2Rbg$uGIs&U=AR%?V zfKlojq-{T-az%y8CTXI$#>%oXOdXM7Fq~uU2+jRwUB3s+ z4ozL5j!4CD#WNbd!E?WXBR(-VJ@y+pRI%pTNs`ceEvw?%!`TA+xu%uu>8TYzA>+AO pk_?gYHl$0hRD8d^Ui0b}<~tO&1~ITZqtXBX002ovPDHLkV1l64CqV!J literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/anim/0/2.png b/data/tilesets/secondary/pacifidlog/anim/0/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4cea24d830d5e4bb129e8ca5747afb074a6c8a GIT binary patch literal 625 zcmV-%0*?KOP)$U%}@X=qy5v^dY+GI0@ZK_0ld&qR^$Nm%PF( zL)vireMy>WJAV=G;rM;$JKymNy$E9HZ&5@L$5;f!7J={M1G7A!TC-!nYWK|US(m@B zy-YN(W=Z$g?)`3dt;=0vKhG)E?A(n|O`QO;zI3s|)WPabUPAY(g;oy|`tbqKS}Mfh zg+>&eYQ*s=v+x4GA12Has%==hV_$b{#JbU2-H6#}H<51Gi{GES+u9fM3p~~l#Np8# zk#|%gbjB6D2(R^p4qmv=a>IzEr1*$@JbVKC)Z;)M4?W23MH{!kiZm&aoDWAG4)!w>NslD={ zoM9i`J21`9ChU_l7nV5lP=6oRSk?Xfcb#d%_dFMl>w1_?hYF9C>i?rt`Zq%%sV6yc~Fl4_Uwz%cS9FnbSi$bA0wfrY&u<9_QoWuojv*3LW6v7$9Z}$M35-`< zvVd>mi-SSm>|7SPYwq}$R(I*mE{T)ZHs}7;Q;y2Jc`0^VtL}}W=|=_IYoE<2>k@c7 zVRe!Axx&2QzJy-pIgd1+SC(k#?Gz1vvg%G>@f`ad+jXP-PuDbmD=%AN%b7M+z_PIK xb9!#eom{<_ytnp8238B6>57>eUD#KAZJ&^{A0wfrY&u<9_Qj0uY9780g#`ZaKwHWZY7PpEl z%=Uh{Pspm8m0xMnUWF&WCd=PFQ}Xe_^8Na%lJ1LxraKj{>YTANcwdpa@okS#R*RPz zFMfW!Cu8gO-syZm;4MZ;KHK(RM|1nNmi)_Uc380Le76IKljx-j#}|oeFHK)+R4Y@X zEn6(d&-MGiOj8BZiW}V>^_xWltFo4q>n}00TxSv|k>8*Ywm@;3xL|$y?&JDbq#Q#2 S==i<>x!Tj!&t;ucLK6T%j#JYB literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/anim/1/2.png b/data/tilesets/secondary/pacifidlog/anim/1/2.png new file mode 100644 index 0000000000000000000000000000000000000000..747306d5cc598f70a9d260e255d5e417ab563c64 GIT binary patch literal 241 zcmV>9$LnbBbnF(FUo< z8N`22FYc3&+pj3L-$~{ix2Q5lsi7i=`OC7I2Z=HZpmqRn_Go~L8=wif&!y9Vo9 rF%lm13s2$>|Mlz_6#sqiE}{JaL6SgBbZiH700000NkvXXu0mjfeym}d literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/anim/1/3.png b/data/tilesets/secondary/pacifidlog/anim/1/3.png new file mode 100644 index 0000000000000000000000000000000000000000..20e0a7cdd532da7f539a317a410249eb51f9f8dd GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^96;>A0wfrY&u<9_Qgb|A9780g`t}*}u_*E|e`YP? z&T?4vT&eKCqR`*2ruX?dUAsl5<@nC=sClG(+kM&jiGl7@{m(_7nySaC%hJg^r^&cr z*@HFR$*w|{^Od(qvaU(WY}b)V67`9gJOH#SGEKa%nMcIF|6?o;mFGfGn? ztbM>UQ_~_lV)y^D^;Ul?=Kbc-U3&1|87m`?fCARYz=C_vvtMuj%@oJ&u;-l7e}9mB NJzf1=);T3K0RYq=R3!ia literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/anim/1/4.png b/data/tilesets/secondary/pacifidlog/anim/1/4.png new file mode 100644 index 0000000000000000000000000000000000000000..7b74ee349a6ab1b50e849cf4632767187bb3c111 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^96;>A0wfrY&u<9_Qh}Z>jv*3Lm-ZTRIT&&{7qiCB zDSdHJ=FZ%zzxoS5Tz9%J;L+11<#2K;x8Z@SqDBX9NmU=n?RPrOsI61{c7M_B)g{iY mZA0wfrY&u<9_Qo)`sjv*3Lm-ZU+9WdZv{>vIM z9-Dj?B5>ryRtL?;g7r345#ItJ|2_pUjeel)78&qol`;+0P}VA0wfrY&u<9_Qh}Z>jv*3Lm-Z_1IT&&{SF@&F z@OhKKVbk@xKIq7H?{6-XoisP3a$j-?7QU)5OVGYeY#e>4AKb*GR0hhEo$Eb(;pb6Mw<&;$S(iZG!7 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/anim/1/7.png b/data/tilesets/secondary/pacifidlog/anim/1/7.png new file mode 100644 index 0000000000000000000000000000000000000000..f1863fdd56cfa672bfee892261d5f00f563b8b49 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^96;>A0wfrY&u<9_QvIGTjv*3LW6v3Ku`2SgT!>MO ziddcSpLfUi!h>zopr03>NvN&o-= literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/pacifidlog/tiles.png b/data/tilesets/secondary/pacifidlog/tiles.png index 496232735b038ecffb16ca07858c601cea479dae..94fe6d96b0786fa5ac932e717a827cd855d23370 100644 GIT binary patch literal 4812 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 literal 1689 zcmV;K24?w*P)3;{tbclvGh5cL*3Kpp~U z5B|si)+&s#3Zq#Ik}iCN@ip!OpqAsp3N;K$FLYrYMs_H5a{-IE&;{>ZLTE?&kODY- zUAe%xhZeB!a$FeH(E&mTgrS$Qpi}3{JYKQ7T+6eR3!G~}ky1-7tr?)jHaPFz=DfnH z{7)9kZE#^GCcD)n4sr=;5}UC!pl&kOz0H_gsUA#c(s$WRtm*HJ)i^9c7cH1h(}1!` zh+71uRxg-IpMMrFIApYj3)(?ICWx)F$GKZX`w(zw2Z8-C1F#Qa8YQ4Z%ihEEUI3?J zAy#77^gCtFSCqnIn8q4DrqYrW0I>Rd?0tVG03c*VsoAf}HHhPB(ew7w78HzSVxazH zK7A7gfzlM9Rpo0`?FF!hKTHAK0$ridj}in3AwHmneVnsc%~siQV?dER+{st~0E&tL z?LnA|0RXtWMr$}e4BM0RIW<_;08lkC|1`OgBcGvHp0nNg& zQ(i3$T{DUvlVS&c4u};+Pmcb0CdA;^Nndt5d#94AmdgVs3jsKn0CXV%5K$x$5Wc;l z1;(|Jfi4&c!lf+0N^>@Xm!t4%7D#}=*DnSfy}deMbY+020Pj@QO#w<#sRV!k0l^$V zj1ll!#DK{h;6zFqker2Ja1aE8S3wLA-(&!#(&lCfEO2;$>pQ?fDGP$Z(-9FM0Gvt->L*wirV}y2y3l(w28mCYnQ3ORh6zRPn8$JNABj4-qXD!eGHRPHIlPH#z;c2?qSCt z;dvF>5&$3oO8{&p3Bb+tvaz2ApapPSKg5pMu0nerfS<$wo&jJ7_@FQUX#h4?p&bTc zkg*`Ool^jvB(Nj;Uxl^=Bw~;Y&;#WRU}eH@hc@1?u>DSb!PnVrgdzd@b|nGeG`6eq jUksG$lCJAQR&e~kf+|%a_;bQE00000NkvXXu0mjf5M1tQ diff --git a/data/tilesets/secondary/petalburg_gym/tiles.png b/data/tilesets/secondary/petalburg_gym/tiles.png index 8c996f701c6678c7880540d5aabd51a02f71394a..cb7c40e5ace444f17d59e73adbd07b65e70d0c88 100644 GIT binary patch literal 1429 zcmV;G1#0?`4D(Hu=p1%26e((E! zvIKUKMs9KUjqE63zhHtv{)>{Cxm=oku1fSZ#>1T zCBm(-fKFIqw_H*#RGLN;Dn`>#D!I}IjWuaZr4qghja8HiZI$c{W#)=skWh`ugmLg0 zYMNeCz^HB+P^)fjfJsG7vT*p3;@G4=s|^eTRxHaR^kBv2uy^s)w#9`nqA=K&WrNk* zbzpaU*9P0}p|W~7Mm`xDi+sDb<-oS(ya31Uy}&W0?Yg8^LNl5 z!=&YwVDjAW!ldnX;c(b-;jmA=-EsO9LMIl-anxB$KVxS-C~0Fj@P}gzj!`->Na{>>ZJ$MH9uid`}^+vq`1|A||=sQc6_XN;qlkaQt{Ybut!j~UC9$Vqd zjh^ozoI%4-W=)RCVCJVzs{GU?R8Hz*`NQv@hUOvuDABsn6!X<;&;=FvlxUHUugoc0 zBOnC@0w4--iWCHkH;`o1RCv$|KH)#|G2i7rL+=iR}2-kr>P zO_S!&#ClIntcSRW2k7N;8FbnUI_(9O;=VHZ^7j$ibn@vmrqh^O@wT~651Vzas(6#@ z-{DOLz_4=2A7ir7@-HLz5l85wmj+GYJeACCqJwYPcOLkHug;*GiZ$ghgmaikS(xB4O=TsJ6EQ<>7=$V8XCo8^Kk( z6)MKeID&*>y+C0-q4@K%8bTzj{WQp0yA>+5#gU&nss2G9&q!o7mo#-wQ<4E~Vtm{c% zPU^z$Sf1(q<846oT=4t&eB&4`hEP5~9`9&r9P^QH*k3SZmBukX;|KZ)G56n0$vgau zkO_-}eiSY4vlxPeVNYy64quy9|NS(bG9E6DDuKqP6M_$amOpm{c(@FMcEHy6h}#U` zsBTyAjp_~IHM@lP_R{}ghTh@r<}VR5{B_7g2z@_HqVJEKbj(t3`SQIM!$mPGbL6!3 j{_8R(tc)lVvV4C7o5&nfxgU@400000NkvXXu0mjfD+IdI literal 1222 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 literal 3461 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 diff --git a/data/tilesets/secondary/pokemon_day_care/tiles.png b/data/tilesets/secondary/pokemon_day_care/tiles.png index eab49af325a1ff196f6c434e05bb28319bcc60bb..76cd9ab96ecbcf6b2919358c21c3301fd95326bb 100644 GIT binary patch literal 1528 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 FV1lt3g~Ht_7zXg`o&^@t28z^Ag4k_M92^;Z& z56Z-!QMT-xI$!XGeNqPdW$D;gW#aP__^E;_sF3Q6isiu6RfVc>Kq}y%A{_^+LT)R6 zS;8W0D(r+EL#NegEwJr)*BmO335V};WC4fl=7O>T&*0jyMfC1(PTdllqL<}wj}(PH zQWW+`v0&=9y)P23vJD)P$Xu1ml1YCaOzcXy_DKodGg$1;f+=+pu8IvDlE_^770G0E z9!%^?xDJSq?innu&Vng*x0Sz@n5|{o@wzPD0t|Y+4O>Ldq-1mS3bt;`sqdTOHr&>8 z`>$YTJ#4vXY^G$}@v?;VR^TX_gAT}2%*G3#Y|MjeGTCsngy)wiY@e<}*_2h&oL&ud zL8VFIH}Gw!(&0F`F~AfQcBiQdf7t~g2%Zh|#&g^zgL%S)j|@m&orEg`Wf%DgyZc6g zw*ddUfiK9;TkzG6$)D7zyKj)N2LM&zOYlHiUjxaX8FZ+hk${XyXj7LILYqWp@>v7n z3Iq+p9=OBQ-T86XCQ&kZ`*+;oa5x+ehr{7;I2;a#!{Kl^91e%W;c)!lNcctRpVjIO zmg{7}L6ysTR`|zt(-a-w-5`y5Lh+>!;u3jjTk@4|?D3qZ_CT^iNR}O){d)G&wDh`f zmgPI)OP)&}OP4U^IX}%M<|uKDOrh7eIJy{F^_Qr+^|F?ole(~X5W?P&}y}s zs!jStc4hHqwp7KeSIH6v$0H;uoY$t{w$w; zg36GoY7)Iu$<3$VOHMtHM^g)|Mpxz2pcX{}w)zQsG zqJC511A&VA@-Ec5u9+R}$o94)?AqSh0BF<=*j*y(*EwFDpQz{GAz5|B6~A$1HiO`< zrF`F}?C=blc*`VZPCRRwkL=}q)+_rK&Fp&Q=K0B5$rJTgE4@<5p*{h%licf=lB2Zs zgR1GnsS2(@Its3EF{2T)JF+uo(wnGstTC%x>j}ZTA2d=-wD=3rkQYLO!5F)d?xCf- z{2f?{ZC5I&8Us%+sE_mxA8#F`FxvvzD+*gh3tmmPYcuQ3fcNU ziEXy(FN?D5uFqd`SG9myI|j#xYE(ZIj+Gt-Cn{(jrK%nvAi*(O zwd2}U9oEQUv!QC_`=G(Bb;-L9;GeN13RU`X!lhvYPNg61QcQh~p*pV_xQMF~g~0_n fCg_bWY{vfv@R~YDNU!mK00000NkvXXu0mjfx|+AM literal 1242 zcmV<01SR{4P)Ht_6aa8`Pl7tgnxXjvyr^TLMVh@yQ@~B~mQma~OC3C$g2UOQA$7`PB3cShWrYMq z2PvgoM4@9v(s2)9vhTgSd{1|xp_>q3BfUawIC z#&I6FxV*T;?TiD~MxY^p)*e8em!NUXOVBC=zVK1(Zvdcu0-*g3!2A*)T?|$Md~a`{ zk^(RWybG;Wz=zlbR0Y7N5fu@rl_Gks=WYZl5@-mZ^+2F1fI6NDIFWETRwk0`xHOTL zKE)&tR5(y;^53RGzlFfS#az639;gan%gJ;PP!Yi9(>VbgeB{pa^Wev7To4NQ-vi3GH$L|1OXJ^)4z=O!5fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFPz3yI?Uko`c9$EY z6>I@+Xhk!58sM{6I$ucPFzm4n2xw_ke!re%z-ZauAfQ&y0AkPN`}iPubM@ENn;X9W zt6(-QTUJ?*nkfKHWPr~`CVoyb*dGwNB*2$XNB#bh9*EW69Wu~Gr6s^vzt8kQEF0es zL}4BfMa%+Fwn&Ryci=dVy#^#>EdVi$Spb88-cA4>rmq9I_%TL6zC)2tIPtO`1Xout zUlsu|-9BQ+EEfqNUq~`&Hi9*PZeR)6lhSlPIMM!jQp!yEU|Jq}i=i%yi1U99pe6%$ zSe-70){Bpa)gpifB_aTC;K%{AObCF7fdBE(%L1Q{CjN4w^JSulZ3U`qF=Q_o%VhxB z`I*zW5Fq;xe_}&5`Aslg+;;gJERO1ip&uKmIx}xiOe;oc6&Q2Cu@m645v~EzY-U-Z z0K{p`f!-L0)am({3;_`wxCVd##|vQTf4~}Wz~_KJ-UK-5?BMrfXmFqeKG@K81bV*1 z0o+dl^(F%6d@zQ~$s$|>`~mEbtwSD|MHgD9mL>4jiEmG0=ht|_e4h;k;JR;J2;3sn zO~;`dNB}c|c^tLbd55*bc+Qp+Hb^rdKx9I#LpNaC#WR=ygb3)Io3{i&45)`16%TqY z0UAUIA8LS;9)Umr@vUi__6gJgIy(@r_H4W|VFn!VM{t$uGBN%VfEt{_PY8hL zWdTT+04xduI0P`43xLyhy92=8((@+QDKHvyKz2c1g`yQ;)@?)BRvb?lTgI6hK;a~S zMf61!0H+-S?tK3`3pn{MtOD`_md(ubUrZ~xVB+!r0&#yjM{IkL7XSbN07*qoM6N<$ Eg58A?_5c6? diff --git a/data/tilesets/secondary/pokemon_school/tiles.png b/data/tilesets/secondary/pokemon_school/tiles.png index 3c8c4dffe6f69f1033da8ace9c9eaa4940235a22..20e3f32c8c3373b94e9828637ce50e761953f45c 100644 GIT binary patch literal 1027 zcmV+e1pNDnP)BjE6vrP;iH3qhrw)Y-`2+!X?$XOt2!S>oOFGns5KKB9g`!!7;5F9b(StCdOBXw2 zY=RKkI~ZbYM>aU;d;+`gJ=vD5$cfULCc_>0$2;qP@BX@z?gkx^uk_rymD7MZC2TFm3B@uGpJVW#?Q0gpM!bp1`JimD< zCFB+Mo9}F8X8{P24Rn%pigekfY&HTe**6$1dYtp^xS<=?SQ0aoWR0tf_IFHPyw>^} z$kw`mJVCZzE5ua;q-r!kT_L#hwI^$9Af5^lfJd@{C4xo!bFhq2uh%Ew>I_onOK2O( zJnb!QzB)Av;CbEzT%AGcd~TmTtM`#KAh7bR5-Z zdkZnql`-lTQP(R%)t$g`CQ(u!QIHKXl+;HEw!vM-E*#N+N1k^MM?!4E34wK?4QCqF zb_o=*U8Tq$En302P~_7}6N@+>FK#?8!E#7fV^R28vCgB3FVcUpKEjAw@czc)$Q(^| z);wM4g(F@k3v{8djfM(a@)QbE8c^7$>NkqWDeF*nNydFJP7T}$42(`C?huBYR9PGW zWzJ0#gfI+)n$dPbK$#y5NleEklfZWrPH1d9nX6m$dX*NjW%CyNwkBxAP>NvgM(WM3 z8#SkjuK}Y*s56co(((IIyWjfq*m1`?RCPIW=j&Y89b;y_nv-vD*G;3V{6gd^yASvL zY5X7HY*(WXh*x#TNZ5}&Z#OFTD%IqDYwzy;&2`-I6UNV)<5b*4-NTQNhK7cQhK7cQ zhK7cQhK7cQhK7cQhK7cQ#-qcKPbb*ccknH{lo+MXH&g={_PulH_Pq`836ZF?jnRF+ zTLlj2Ai)JSYerz(2tE*oC|P!q4jh>DSu8_X4PciLQU*|v$)I>N3_)IotD^}N;`$=} z(B0yXA$ySN*?zLWUU?OIhvq6AN|XGV7m)E$JW^i~O`o6;nH3(e<`fwc4+tZWCVDm% zx*yOj49NX}tgR$Wa$5)iZ90e%L#X4=ih^{pqZ_$d-C~gBr9&rN80=+eb*)4%;jz&0 xXwJf44eESockP?NF0a+fSQk5`5@Pl%?H^B(SvsE-XKnxh002ovPDHLkV1i1|*9-sv literal 980 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%0A*4eeVw&4 z$ph{A5b$3t2E>3E5CdXB42S_SAO^&M7!U(uKn#chF(3xSfEW-1Vn7Ut0Wly3#DEy^ zzXk-KILQ}Kuw3|?PqQ1SKVQ`vx-FH4xXmJ-qaQN8aQgt3WxNxR*$tSUQM2;oP<0*^ z-h93|M6RtN)Q@~mmL$2^3CN3Sk8V(4fV;)QV)i@%j2AzfM++QWO9cQ&l4WVC6Oa*? z*u)5Mt)No{pX>AE3*fJX3Y;ul?gZq;3%dcuLiv_dSg3wmlqW%fGlhksCSEb1zrxxre0e~$wJu$ZfutR|F+Yta2prFMC z2mz*#5J1i+M+ac10FYp3f@0);F8*|_@Ga_V0X%q`w8nIRZWkadBXM>S5bX%6F4fCw19FfjKq(gi+=hPW==E}$jT`#R zje&B-WMixQ79*|&FqIWRxNK~~^jXzy0jzGDoVa$tOJ#NC`xfBjtfJq1D1hfe%-A(* z=QK?)OzJSIC$*bHhRK~`03tXFp$Ts_;sC%uZn^TOsRLj%IV>2u8#n-PHt{3?)|w39 zpnh(gD)#y}9cu#|0NB#?#pT7aYnT9V4Rtke_=X7paIVvAF#sK&X#qS%Uv1U_pxsH1 zXhwM{aQKF1B{Cm*o1;ANPQ6(&SfgR?MYi7g=*A|0KIACHf zaF}#hv8+whpI+dsC&Ill<0wc5+j>I)wwQBqhP}EbaNscMu*m?pI{+is*yzozm>G|D z&;*{f-^>|w0o9w>x;s553~_8J^L&s^)*7I|SUZ0G&|}!6?*M#vVCKU)252;+GB!JU z;0#?4B!r_!525QW1DG?@12=BC5r8F+0a)@PKx6H=vQj>Di~;Tr=(FmFb1eXkodH<# zA^>(DyI$5-OrPH1&T9J1?l^ER{Q!WnrE1Hn&tk8gb3}3K2Vo6r{nz7#LJIM3 z91sGDec5NRySgJuQ)LsQ!?>^S!Q5EySns|7&nB_sCX2mxt|Cc|AB1&i*+RiH@A3Ec zSKyj;rL@$F9o`EV!+T&Io#r0Qc@@ue_nYsdAa>k}on0URfBSZL(|*<#`y~>4JD|R$ z9}I|Mf2}fktMOHb0@q)JGwI#^6-2Qs^@?hAC}=d5<@?fm`TZ5p*jX=h0APt`k7OR% zUjdDs^#TKM=(OdTTk6H}iw7tmv0wR0V7g)3(&?5vh4V4#L=3FSOU#)9UJd dsZrT){=XO*^eoT%ZA1V7002ovPDHLkV1oPFNPYkS diff --git a/data/tilesets/secondary/rustboro/anim/0/0.png b/data/tilesets/secondary/rustboro/anim/0/0.png new file mode 100644 index 0000000000000000000000000000000000000000..358745e4b2bcd731f9377bd807afe6e56cd25363 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDLYRW#}JO0$tV20y^}3?m5R18 zcE%`7R(yNzWiC%sJgGDDbFNP02MWe6!sH}|+}$RLzp<(SrR QcLK;nPgg&ebxsLQ0Msxcp8x;= literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/1.png b/data/tilesets/secondary/rustboro/anim/0/1.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a095b158f4e21ce69952950e416ed01481c4d7 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDGN^*#}JO0y{8O?7z|ik0+(Mc zu=B0z^*%X$<`t3rX{uH3OhPhS9M-1XVr9?y`G@1g{AXzoHmg;b@OGLlRGVa~0y4|f L)z4*}Q$iB}O^PAg literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/2.png b/data/tilesets/secondary/rustboro/anim/0/2.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/3.png b/data/tilesets/secondary/rustboro/anim/0/3.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/4.png b/data/tilesets/secondary/rustboro/anim/0/4.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/5.png b/data/tilesets/secondary/rustboro/anim/0/5.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/6.png b/data/tilesets/secondary/rustboro/anim/0/6.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/0/7.png b/data/tilesets/secondary/rustboro/anim/0/7.png new file mode 100644 index 0000000000000000000000000000000000000000..91f368cf84b162d4ea6f5705545fa13e2c22acc9 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDSl5E#}JO0$sWv1Z3n#>7(O-{ UGfM4`s|P9ZboFyt=akR{0Lf_&J^%m! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/1/0.png b/data/tilesets/secondary/rustboro/anim/1/0.png new file mode 100644 index 0000000000000000000000000000000000000000..75bd2f8a458401dee20016931d523f53682b58c8 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsR^Dgjv*W~Mf(i7m<&Z+o(F6T z`A79YMZkYJ(lbKFV6PTi+d_^ALK?)S3j3^P6@BMO^4R|AizMd@^sbbi`(@3{tGzx!$NX*?c-T&Ry^F);t%vcCo63A`-wJ!* y9X}GTbz{}%96^hee{L5OTrECwrBBpj|I2W?-81mP=1*%u4)k>Ob6Mw<&;$T+pHR~P literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/1/2.png b/data/tilesets/secondary/rustboro/anim/1/2.png new file mode 100644 index 0000000000000000000000000000000000000000..86075ffb0b7955064e20f4ad12b7b449678e4981 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq#8V3978x}rk>l#)odWr`tY+K zYnsk@I9u;I{}PwRoMe+pj!z}^UIcfw zPjUF+&{V8u_1q}#+}0WS&eeBZo8zX>T%z=EhsnOX!Fwc{o_@@`P(O|H?yfZ7dt1G` kZ|||M3)NL$`D4C>b@%$tr06`&43L{VUHx3vIVCg!0Q}xcXaE2J literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/anim/1/3.png b/data/tilesets/secondary/rustboro/anim/1/3.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3c576214a9cb83b23595a3a12a392e79349546 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQeq}n}Q978x}rk*q8I&8qhdZAw3 z_p9xjtCRmHXxRFAD#lu|FquAakS*fTj}5U@%T;8u72v3K%no@`-O+nx!AB1EHCBPE z-9I%Z=p9qxi*%W=Jn)y-*D{k2ixj@jw|pyOwCzr!bhfkg(~{DNcmD04vv(@4f6X&( qV%fYc3h%2`E{h+Vn-cN*{cnDwrWX56UysfQInC46&t;ucLK6UJW=Q}5 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/rustboro/tiles.png b/data/tilesets/secondary/rustboro/tiles.png index 8cea2a4d9aa815e1f541f283879140ffaad19f11..fbfc72d466555a3b5ed8d52d06942a86648cebb5 100644 GIT binary patch literal 4108 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 KMNUMnLSTY>1sy&B literal 3903 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 diff --git a/data/tilesets/secondary/rustboro_gym/tiles.png b/data/tilesets/secondary/rustboro_gym/tiles.png index bfdc07c07951b7c35d7f121c7454aeb3458b44c7..d4ebc14a1cb56abdc1f1a5d98f00d588ac3ba0d4 100644 GIT binary patch literal 768 zcmV+b1ONPqP)>&I>DrzNoyI*&F~*Zn z{q9V0rs(04;*lbmDMrB1&DJT!x+wHFTL0suN`z);-{5M0yFrOS5(JV(V4bUFnS93m zHD0ao;2u`XrOsSz&{hy^wIM+u^0@r{aB!C_E$tT>W-zv?GV(Of$akFG@VVKif_u$;{GJ|joB*KbxjuG;5$Q69n zRHhJMJb@MlbK||ARD@YXMU*k+lLOrDAx=Wb^>uPk68mUIkq?2Z-ITn^Qaae>@{VC` zn8w7D$FsID@wxp&mcHGEniQXhAwW<{fg7Svn$8**-($=H^r8i<4KP-q(`gU{Z&#r6 zZjRcps_SVEu8aw35{6L?2}2=Kvs<|eH7?SS=r*o80qgm9NpVjd>fu4}cn2`Xk~QX( z;^Q3vO#%s1EaHwf0V2c^A>?TDUfkpU4b{KgW2Yrw!MeQCk$Gv|Buil(Kd%h`0XUn3 zyRg=h!-)Xki&aDs@I?=C4VyU30m17Qu(pHI2D7#_?Q30yFmj6d_iaeV9ya~ys#0An z^Y^^^xT^mx9+;Kw&=2_+tm6TSoLLlks_=>$AVgwRf>>j{V1;X$uT~WO>W2l!^YdzMAPv;H^HzM(EJq{Idg&)Xie2$IB=Np0c ygFySi2KI+;;VSeM7H8j`d=9m4q;-2$)$K2bp2_^nFt6zV0000Z#=Ghw4n!f?u|MY;(8p#LY)rkr(4^-)cJhkoV1i%Ie;Q`N_3xOaX zgq-V;FOKt51cCy}~5h{y-MfcqLS z90tMgOS3}#(mK)f=G_J0b_DO^1ZCJdJZ%fWHqsaYa0k?# zl*#p1(E-5e12A%=zhnQ$LXWRM1Q-OUZOvzT0~nV8*8t>rK4wyeiQ$(3weMO0EC2wl pQ3a*e13)lY^@R+-45)T@{y!Fe$^02by7B-3002ovPDHLkV1f$@RILC2 diff --git a/data/tilesets/secondary/rusturf_tunnel/tiles.png b/data/tilesets/secondary/rusturf_tunnel/tiles.png index dc947bcc58c7c5dc7ac3ef1d10884ff61511377b..913935f77c6dfcc16f0d866fce7c9fd4fff51e11 100644 GIT binary patch literal 2228 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

D>kG_3LhR{=bK<_s;*}zYW*-M{#8WZd&;R fUfDf`w{hGbx9EhCeRr1600000NkvXXu0mjf;6J%E literal 904 zcmV;319$w1P)XB}qAPs~d?D6NkDLIzC6!jS>CK7FJ9jQpO0^Cwa$&J!E5Pc~a!8y%AS+4-EIlyp1 z;`Ofg>uw}(IXDZUEhg0iaR4q18ZYx20~~ddg}QF4gx4IvLCFB7;d2pj)SvR;1;9Md zs%!v=SEhXh7zDdj9*}V11whwzsue&oa1J0@Fzc_I2Q>$jv#Lc92F(C-)YH4&PJKrf z)b{Qq1UD21a-KyEp!aF74t%cwcH4gAK^3yJ%=sBWqBzU=gXH`t0F>)q^gOt*0Vp&a zNSs9#AROqvj1`~|?(xMfP+)c7k*9l6iQJ6`%4IAO?2PhVUU`seeFx`fIA7PZ^FB-f zkTD_`s~y2^MwYGQ8>{!oQp^Zosp~yC6!++DR6giF4`SCXbc+RkO&X7oDakeZoP$+6 zo|(jAkWsQw_k{prC#5farx}koHxCcTNr>dS%u{``i;_JX+1Gt4c1m`&;$dpcdA?#Kj{Jg%tzPh@4-$sSz8f#plGSNnszTin}z+Bk+!8e=+#z#r2 z+;5Fl?;lCD(W5u|HVtbZ*m%&tQ#lw9DA!o^{)6!V4xl%-$k`*;idlK!dZE#Qj0f|| z1HFF`Xej_`VBA1g`#?7)b&$|Z`{VK8$#~E`=fO1k!6ML_hzP6zEQ}jXcyCifMTq$$h@7Xy@T?k)zX$@qH!|3C;8Ko^(De}F##FqbBG eF+eVIDZp>n351c-$jplX0000B;w!32` zm{kxh3QtstnH@PC>f;fNG7^gp4LQhKK#A6@!5^E$A5d!K) ztTl|5+9c7(Epnia}xDn)sz2kjwHYmPeAK%F}3RH;+dBjLoN z~S4G$0Ue1Cs0f85>O$+z3vTd8kuZq9ha(3?Cz550i)AYgnFaDNfd z4%}9Oxw%PtY0bA{zRni?jU$rrJ|89IoW%Le%ro+JJ}&uc{wMyjscm#2$dh94*CQ;l z&oF5l6ZCRy&-IdeiYshySP^I6C0AUsJmtS?;p`l_RF;iZzenicVe4 zL(|p6hdznL9u8rlT=m^I`U{uz*KW`EXX|gXUW&Q(MSpf#f5o(pBsYYb&f15_ap`}l zDdW-;%VE7-IwqJe1j_W`)K-s^KU))R_D(^X~Ys?{@!uD7N0SI`

D>kG_3LhR{=bK<_s;*}zYW*-M{#8WZd&;R dUfDh5{Q!NkWU<@~n-u^6002ovPDHLkV1gdRw<-Vt literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/secret_base/brown_cave/tiles.png b/data/tilesets/secondary/secret_base/brown_cave/tiles.png index 7888f8cc2852ecadf1877f76fedc2150e56bfe42..a1c8bfe72cedc05d8809660e05d398ae7df03d47 100644 GIT binary patch literal 1166 zcmV;91abR`P)g9D%;RgISfs700*p#y+6u8{l>${IQ4(Wp{crJ^dm zqC^nrZv6hB{E3g;fLlMWrYcE+aDo$jBVdUzQD>h2Wn2X(E^3pUe3KLa>rg~O#00jKks$#HWKFwGoC&Od78=T=r#k1Z6mE-b=s|;e&dBhV_0fq^P zm;j52cMOuzzr)K&%p;PSvM!jwM{zlg2;2$~XGvx|v2tv(ovRniSS=Y~JLECj9$7L1 zdtKDn$if;4&a44H#$1nG;N9#*M;clt6siY-Ftp z)@ZX};&uVUpOQM%BR4}KvLTOUdq9cbGE1C#oeL0&C4aKN`mt7@!Jk1fpnl)t`?o*p zxDYj@p*C^M%|S^Ls#augraVqSdx+-2y+zS>n^vlRQ5@KFZgJhX?uN z{{CKGe!9Cuf509x-3P;xJU>4t!LTR6h+hO_f0ettpTAu6)(R%5G&hYXgboRCiP}J< z&=3;zkXco~yz7OspkMW?)d~n0%|UECCqWe5;TZU~;AclJQVs}m&ImH{iGHIPoMBG* zuVl`$z!TGg>37uuP?A)GAurr0Gl!mmrdXV~nzZ+BFSW)!1Tr~kaYne)5h9%6e|rYG zXU_l*8pmV1<`87%YBdBj3HOMe?GYAi6HCHk;mS1W<{TCe5Xj1M#}*bW)g>%WJdeYd)zk_#p=rCtUMgmk10|c7S4_ zxDK3wNUK)t$Le*Bsh*%GEGPIDSIn$)ruY-j1%rshxQ&H9Gbfx2g&Qzmo`W2BFr0%J zhrPShDKe_8ixZe$2aK_!RqQ!Dh=6D&l*HnTa;J&dF^V|{6AWFQfbCGQa>Rztdu(V- zY&xSScBEZJ!|vL;=lvki3-}W}ji<*q2P%i!-Qzt)cDg{+ijo{XPjL!8C%%`cFOu?Z z#@6m>3h3WBVjS9@TiYh_3r+P@Y=6GGMA`GS&t@O|?~VR9)BpM*jQX_&p>-HiM+A=N zex3yH2rujV!T3=J5YxE6=ge1qGSl_!lhFQ#KJML+uZ-KAo&P#+eee7q|7~1XQwQ4l gM?+3PAKkd_UjioUt`>g87ytkO07*qoM6N<$g6`iTL;wH) literal 1070 zcmV+}1kwA6P)*LAn5t17l>UOB`d+>+=TO^NGT#t)R66Tme9}pdw`P!J~P~4OqT+J=WKLr3boObHqxWEQ?%GJYysOO1FF+fXu1jyY1II#i{E~@%lltl<0 zRr1YA=?4nymd5*(wtE1Aq`wC8UVnls;$vc^xn;LFCIiHB%x?h4IM%4a-ikl(m=Tm2 zAtdLx0~*f>c=##Dd^iRIR?pPzR?`X7M( zP?1DKg_n&^*!WuBf;E|IhIfZAra%HX(95md+?mB*Z@Ec7yylT%ILk`?mk-E zvXs;_6<3r6s*;a&-T_zbQj7uX1>GmT#=UJUXK=PIFsnuc1%0dsXIEX*sPfRpA&QM; z0N*wU&>4y$Q`N+}6#(bZy~lbb)>vJGsm3Tne0q9%d3i}%p|Ey?Ln*3?AcD2V6|E4_ z7IdsP%|BwLH84WBhL=BVJW=Ycpx!W_N@dvO7B@AQJS5_M9eW%s-4(M8e?LAxK0G}9 zPO+OHx(m9wsYwwZAi)W5D&)pCGBkuSaBR5;;LlzDKf|07h|1uGF~zUW(^vEukj<$^Dm2x5_B z%9d;u|AgZ>J19mHlEP$w1kFdbq-p`55CQ}mlL_8zoK0=p zQdWB$Z|}m<*KFO47em;J5rAONlRzCXm!t&|7kxP20a^#L4;71VpBMx0PJJ5C_VE+& oBLHmjneh|wBLLXik@>TL?}HZWu1gYMe*gdg07*qoM6N<$f{IV?H2?qr diff --git a/data/tilesets/secondary/secret_base/brown_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/brown_cave/unused_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd187d51a78804eeabeaf5a6c036bc29919483b GIT binary patch literal 1163 zcmV;61a$j}P)g9D%;RgISfs700*p#y+6u8{l>N*X!k(YR7srJ^dm zqC^nrZv6hB{E3fz0-yc7nyMrP!U<0BjesS>M4fs5mvI%GxTsBX@=a0ztV03Srjj{d z%)nw-bK>fbO_iumH zaUp6*Lv7-in}d=hRISJycXz1WTE7$ePZR>*x&meKyjoUqov=Q^8_L1dDUq!ip5PE| z%o0mh=G(Y#tG>@{SeM#0Dz+nVNWBbE#OKvJM2fr4AW`%U5P${01Qu|j*J=VenG1NYG*VT0VQgj@Duv`9iM-K&1SRWw+lAJ06`NT z&~^g1XQ0qiSoOyWEp|pb5NWL%@OFjI>guyPMXPPux&?lav&5&TCwYE+e3Y*b4-fLk z{r$bX{B(DR{(wDXx(|jWd47IQf?-dB5x)q={wjBOKYzLEtrbjAX>J-(2ptmO619Oy zp&=ybA+xG}IqQY8pkMW?)d~n0%|UECCqWe5;TZU~;AclJQVs}m&ImH{iGHIPoMBG* zuVl`$z!TGg>37uuP?A)GAurr0Gl!mmrdXV~nzZ+BFSW)!1Tr~kaYne)5h9%6e|rYG zXU_l*8pmV1<`87%YBdBj3HOMe?GYAi6HCHk;mS1W<{TCe5Xj1M#}*bW)g>%WJdeTRy2U_#p=rC*1N~mk10|c7S4_ zxDK3wNUK)t$Le*Bsh*%GEGPIDSIn$)ruY-j1%rshxQ&H9Gbfx2g&QzmpMxBCFr0%J zhrPSjDKe_8ixZe$2aK_!RqQ!Dh=6D&l*HnTa;J&dF^V|{6AWFQfbCGQa>Rztdu(V- zY&xSScBEZJ!|vL;=lvkiEBF&Uji<*q2P%i!-Qzt)cDg{+ijo{XPjL!8C%%`cFOu?Z z#@6m>3h3WBVjS9@TiYh_3r+P@Y=61BM%nYU&t~uZ?~VR9)BpM*jQX_&p>-HiM+A=N zex3yH2rujV!T4SW5YxE6=gc>KGSl_!gV6qlKJIMDH^yx)&VL)9eee7q|83k>QwQ4l dM?+39`wOaR%g$>wtQr6S002ovPDHLkV1knyB1HfI literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/secret_base/red_cave/tiles.png b/data/tilesets/secondary/secret_base/red_cave/tiles.png index 5c21865e2ef239a5b70a7861a57600fedb8613df..2652f6bbfa0f4ed34669f48de37c6606cf013855 100644 GIT binary patch literal 941 zcmV;e15*5nP)1jS5XXl%An7TRKGi(}Jj;;+UCAK|N;pyQ8i&TGEraCorleSVBa!y@D2cRp@+-i9 zydU|x4GT(zaPgPdJ8OGpejYFVM57ThwlNy%)MN(>e+)=R9h#@0-ZFo~>*ePAk?1DUe2 zja%5olKA7Y4aqXarL`;X+3_vAmF^|1uoqKcFYH#LsX%6&F`5qq%)(ol&@?6SGIs3sD$uiYpX2r4ES~2WU(QX}JQEd9Vg~1I6J26#E*p zoarCc)HeOWz{#+pyzsjSL&|`9e;HVXR<7A$;Rl&WKlhj@YiJ0`OEQ7 z>dUCH+E_~$jI*EDD3Mh}kq)&3FI#_;7gs4E(|g|WqZj4fX8wAP`*Nud>P|A}t}Cs*^4{VpH4I#6xj zI^SPeW`F%lSB&m2U2*gQf?tVHNX@3Y<-AAPkdEM0K@O8c*|6@L< z^XbbueV<;vq>E|1qKjFaQXbOgW?Opm9>;k;gG^%#G}~4( z3>@EHx4V0^)@90-vYR1(yhB_vjo(h=R|dTt@}MQMyoTl;2M7@2x9=0LyN?-BN z(MXa?AM+~w#%|JA{)c7kf9HSsw`I5>tKf_P(eoG|q)rbGOk&*1*mZvaf+%}VZR(@Z P00000NkvXXu0mjfS)s|l literal 941 zcmV;e15*5nP)8nu5LVxy&E6s1J^2yZXK^wV9_u1Q$5iOh*GOJtQdxfHQC*STOX@ zqybxb=h3@5G=xRkgeA{ClKlng4geTWo6vb}NEj_SvI^XsHBGBp>k7c-o(C6>edn(_ zR@yIv7P*-*G`Ex$`u-k(8N$k9u(cPOfeo9hI-7GK^AUg@7{9}cxbm6<*Z}-U7|s~U zL7EQ$&pCkP0>^93$_}d@tma@Zgk>_x9pD?X0E(A~s|-*x_ELBN%!MZaRaJ>*0M5WZ0B1q1FGmk@4j@KRjlk8C z0Yopmr_-tUPFWD!i=7Zmog9dLvo5c2(Y z#&+aHJ zuL#YSqz!zGHb$qnomvNMQFG5($m>i1w&SbMb*E^ylgZ7^wq+ujDq@>kG@i4kJ=(ku z$xg^lA1!V^h)g88Hu@ZE=;Xs2?GeImEhM{v2Y-%_kB^Ry-Y>mCV~*ALUYMvoa$UHZ zefG*gvK#8b4ech32`81$H^(aHPf66?Qf<6CEzgHKF!Esa<{in~jq(6uj#bXzDG$g2 zs*R^*`Q;w-jTv}gwoId~RUUK$59IubKz#xTzZYdWo98-EH9;H%DyDpl7L*6oV;;1P ztu+Ghw~NL1@>}+xM>^3!rLvIHLk7?DAk-_P0PESw;^@&6eMdBHwFy6`tdP zl?dSP?Czv2=Y7f{CK?EU)| zcix43o-gr$#-^f-tYW;KQKjH9FjVF$IT!%f^qVC1cqqU>q(ys9_cO(4 P00000NkvXXu0mjfQdqM3 diff --git a/data/tilesets/secondary/secret_base/red_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/red_cave/unused_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfebd309c902ba89e8dc986d8d504c1a8ae4aea GIT binary patch literal 938 zcmV;b16BNqP)1jS5XXl%An7TRKGi(}Jj;;+UCAK|N;pyQ8i&TGEraCorleSVBa!y@D2cRp@+-i9 zydU|x4GT(zaPgPdJ8OGpejYFVM57ThwlNy%)MN(>e+)=R9h#@0-ZFo~>*ePAk?1DUe2 zja%5olKA7Y4aqXarL`;X+3_vAmF^|1uoqKcFYH#LsX%6&F`5qq%)(ol&@?6SGIs3sD$uiYpX2r4ES~2WU(QX}JQEd9Vg~1I6J26#E*p zoarCc)HeOWz{#+pyzsjSL&|`9e;HVXR<7A$;Rl&WKlhj@YiJ0`OEQ7 z>dUCH+E_~$jI*EDD3Mh}kq)&3FI#_;7gs4E(|g|WqZj4fX8wAP`*Nud>P|A}t}Cs*^4{VpH4I#6xj zI^SPeW`F%lSB&m2U2*gQf?tVHNX@3Y<-AAPkdEM0K@O8c*|6@L< z^XbbueV<;vq>E|1qKjFaQXbOgW?Opm9>;k;gG^%#G}~4( z3>@EHx4V0^)@90-vYR1(yhB_vjo(h=R|dTt@}MQMyoTl;2M7@2x9=0LyN?-BN z(MXa?AM+~w#%|JA{)c7kf9HSsw`I5>tKf_P(eoG|q)rbGOk&*1FS>bKZrj26G5`Po M07*qoM6N<$g183AlK=n! literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/secret_base/shrub/tiles.png b/data/tilesets/secondary/secret_base/shrub/tiles.png index 2e0a6d028c0554213b145973469639ecc0a0f948..692141b046c614ed2328202e0c7088ff8a331a94 100644 GIT binary patch literal 1177 zcmV;K1ZMk*P)*8D za&FyJ6LG$&PzboszE#Og_IqdCSomUW-d3Ppe*_pD`_LQ z8k&=Nbt+H4;{E+}D)-Y5ALR4p<)!?2ad9D^&(F`r|8REpmECmuP|2rH(+7dsM}fsp z0^5&rcJ?D=r1Rk4TFEtZ)yTR;(L!TLM>M4)36U?74vBy)%?z->Grv&qZ!sE4ejHsL zRAqwIJyw%G3~V3vV>*y4b1PKx4zY1546MY8;GbJCIO!PG&Q#?q<&& z#ErG0as~3Q+W=M_7?zoW`DIC_@b8KI3*aC9W!u0roPvKDTTDgIKNr^WgxQcMjV;EH z(`cxWOXyJ>83yI>b-rMBt&XI|84hpMK7@bft4!4^6fTi8fow|2HL^^oDJHU&*ispC z#+?FEf)N4KGsI_Gfgbt!d%Svsf5&-x zHwH^|jNI;?!%}|VfjMIhNybBTe+QY8TZbOuO6HAC{ljf78$!l4DNw!+wP1+}<*MxU zuU6i=T2?iWyhRw0Ttso*e;Pn?q0eXyq#0ADK0qK@Vx@CVEzV6jmQ{oLIevMNYmP&#dLw!ZBK4mnykgWTr;NA8hy$_R;oRAd zLEhkYHt6BXl-H?TrO3#(1X}oE{(Li-eTU6p(h1{r@SSJR5$|c;nX^${6P;J%_q*Bu0M4?7 zIcF!p+L)@Yh@E4msy5{h0qJ<+COC(m#s(%h(MdY4vH-&^>Dam&4@#4EBef}4y=c(Ex5)C8Y*r}xIeg}lB5Gc@lv2c*?9K&19f0$X#V5xOQS<&7 z0H~PY$OQmLab3OwbXo$&*2noXip^|!kL-z|!0K!U3|Y_+h9D+DY>+@_sU_l~x9Wor zER{Ha2Hf1-q>WbUR{#ycOIr|rXw%c?Bys=bI~Acin*k{V$T8=10w9DK<^zD{w3#<3 zp6yICh)DPUH2|ErU|s>(HOOJx(`W48_Ov)5i@_oU>vm%Z3Sike)TqwNng9`{chqmo z+nUVnY5^U399~7D47gE1v^c>}fT_RXg1B?TlRZL6XlJ{BBI^(N`7Syr$)$ECNA(0a zKp!3wyGO4s0q}=TphD=tKcTMqIVy~D)d>JW(9EnKVE0BlLA*BmdK>|9?~@Kt3<^zt z9vV2{X=rEec(#6c|NhIDhkF2kpF07*qo IM6N<$f`rZccmMzZ diff --git a/data/tilesets/secondary/secret_base/shrub/unused_tiles.png b/data/tilesets/secondary/secret_base/shrub/unused_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..461d620ae6b2bde40a91e55fcafb0590780fe52d GIT binary patch literal 1173 zcmV;G1Zw+*8D za&FyJ6LG$&PzboszE#Og_IqdCSomUW-d3Ppe*_pD`_LQ z8k&=Nbt+H4;{E+}D)-Y5ALR4p<)!?2ad9D^&(F`r|8REpmECmuP|2rH(+7dsM}fsp z0^5&rcJ?D=r1Rk4TFEtZ)yTR;(L!TLM>M4)36U?74vBy)%?z->Grv&qZ!sE4ejHsL zRAqwIJyw%G3~V3vV>*y4b1PKx4zY1546MY8;GbJCIO!PG&Q#?q<&& z#ErG0as~3Q+W=M_7?zoW`DIC_@b8KI3*aC9W!u0roPvKDTTDgIKNr^WgxQcMjV;EH z(`cxWOXyJ>83yI>b-rMBt&XI|84hpMK7@bft4!4^6fTi8fow|2HL^^oDJHU&*ispC z#+?FEf)N4KGsI_Gfgbt!d%Svsf5&-x zHwH^|jNI;?!%}|VfjMIhNybBTe+QY8TZbOuO6HAC{ljf78$!l4DNw!+wP1+}<*MxU zuU6i=T2?iWyhRw0Ttso*e;Pn?q0eXyq#0ADK0qK@Vx@CVEzV6jmQ{oLIevMNYmP&#dLw!ZBK4mnykgWTr;NA8hy$_R;oRAd zLEhkYHtos&{WNY3Iy2MA|$fP}-+9o;2`{s8-$l#A5`7T^VJ@+`>*O3!(5 zBt1>?s!Vo97-5O^w{OP_d#UDnd2qN}k-QIE)s9G4*&>;fE(ga;BVk<*i$QJEGBxdLqNYJw zkBlfszivl;Cz(3Nvs^!n0xfi+(*F}h0uE5Z(jF# zhy6+3wV2~A?W-{Sa)BROfjK^z2RCg)wryI<+%zaLKVIzbr|Vwp_oc^vM8zjdPGb&A zG#L%?6Wzy8@PoN*WHV+Om}%AkM8K6YnZdvXFl5vv^IRc4wwombE{vmD!EAnRwv;4Q zxZq!vh{r4>fBJ30w9P6o+XJ&GiNIt5-V9n{Qh|vzSQKEQR%6{8O`d|?sOd|2jh_<@ zRR$^&{gq*)_8EKbxhi#zu6D7>HX+K&!P?TW_=hWd^aI8}F^k3GV7`Adi!kW<%Qfq& z=N>0u+mj{+r{dcv_J%aq7VP>4bt&tA#o8&qnfrI}_YV&b^xOUYJ^gZbcSpb8-rk<{ zdwP2632xsJJia0Lehb!eqB1fttLUl*g!>S!sg~G_6wCoacM#@*8NO^Wm$!f+_{)bm z7~}OheQBUCIF}6uJz`w#$AZ0Z@d=dJKwZ?J6A9}0h~AoY4@E+)Jd~?ASep!g44y-p zaiVaTl*X9*$X@|}5zlo*JOl-Q4*qZ|X8t(lrZ^fCCuBKGxS~R02$kwAhjL0!nc5W& z(@H>gBY0w&OL_0dk#FWrOBT=+&rmLt^+DWlB#|_yNxfg-R6B>-;V1 zC-LTi$XFngkyK>z>0Ipd|a@lm6 QfB*mh07*qoM6N<$f=+-EdH?_b literal 1056 zcmV+*1mF9KP)>TK5M2MjR_IL5WQTf!{T2oLfMeA@;LO@k8I{?=lA3`NhZyh!!0-bS@s@KBNMQHM znW77BAaMbZXaYUm!^0QE0kOPqEuj2XBCwok^P2Ho=3X^AiR=Or%IYqBxRfH z5oeN{pvmUyr~%CDykd)Jh-4Q4=)Cq_PZa-I=h`9@b$wUI4IrnCmj-MTt0fo+xs+4a zpRzLUw&p{cy1tGYz$(}P*hf?R`0 z^}#U9>c_{&a&Xq^e;h100+L7;T&|jyxA1NvG|g84>jQplUZ?@)p}!4a3m0&N+&dQ2 zysiHo0M-{D`{spq1ZWua5uLDhGyt#|c{wQvf#xfK_1Wv#yl~~fr-1e2pWQ@#2N=8= zZa5~Q%E9B#0hDlQ95jC?k39Njc!I2=pdLU6z>+#|%kf;P2jppN0AVFdBW-T)2MU@M zDufO~#wqGNQVhjUr5?ckbZ9qBd!D9!*q=EqL3tS{EtwqEd4lCoSGIakjQBf%jXhSI z*vICDe}5_QTaFK{-70Y6x%hMhgl6eIOrUQ!j^#NPt3!bB|bl`vZ z3GpM(CS~WRn%2*pvZ`BO2;N4SX91O=_6cR4QCQ%GK&C^&X8#Lai1`g(cC9~Fpc)z@g=3er^vqNr*Mx+j!}lL^D{tv_}*--Vlk@8PDg z>fp$*jC~i%0P>&<(UG=3qH&PS8n{@o`0{}`?6mTS0cr{T4)84il)*>hJHWR9;CX8w a1^5q_TS{`tR!Euv0000os&{WNY3Iy2MA|$fP}-+9o;2`{s8-$l#A5`7T^VJ@+`>*O3!(5 zBt1>?s!Vo97-5O^w{OP_d#UDnd2qN}k-QIE)s9G4*&>;fE(ga;BVk<*i$QJEGBxdLqNYJw zkBlfszivl;Cz(3Nvs^!n0xfi+(*F}h0uE5Z(jF# zhy6+3wV2~A?W-{Sa)BROfjK^z2RCg)wryI<+%zaLKVIzbr|Vwp_oc^vM8zjdPGb&A zG#L%?6Wzy8@PoN*WHV+Om}%AkM8K6YnZdvXFl5vv^IRc4wwombE{vmD!EAnRwv;4Q zxZq!vh{r4>fBJ30w9P6o+XJ&GiNIt5-V9n{Qh|vzSQKEQR%6{8O`d|?sOd|2jh_<@ zRR$^&{gq*)_8EKbxhi#zu6D7>HX+K&!P?TW_=hWd^aI8}F^k3GV7`Adi!kW<%Qfq& z=N>0u+mj{+r{dcv_J%aq7VP>4bt&tA#o8&qnfrI}_YV&b^xOUYJ^gZbcSpb8-rk<{ zdwP2632xsJJia0Lehb!eqB1fttLUl*g!>S!sg~G_6wCoacM#@*8NO^Wm$!f+_{)bm z7~}OheQBUCIF}6uJz`w#$AZ0Z@d=dJKwZ?J6A9}0h~AoY4@E+)Jd~?ASep!g44y-p zaiVaTl*X9*$X@|}5zlo*JOl-Q4*qZ|X8t(lrZ^fCCuBKGxS~R02$kwAhjL0!nc5W& z(@H>gBY0w&OL_0dk#FWrOBT=+&rmLt^+DWlB#|_yNxfg-R6B>-;V1 zC-LTi$XFngi`vZxBDw21}V)Fn1 N002ovPDHLkV1mQ}5ljF8 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/secret_base/yellow_cave/tiles.png b/data/tilesets/secondary/secret_base/yellow_cave/tiles.png index e8386a804a80b81ed57f0bd1555b81abf32691f4..b171b5ec62d82bb2bc72638205700f636a19cf98 100644 GIT binary patch literal 1127 zcmV-t1ep7YP)nq7itZJ8IK0BY8OA!;>?B!GCQgFVkAm5$bf?0QRv?_HYeP5*wNf)=vxWsp$y5{GAwJpS zPvXb2VXQ;IG7HSrG#cp->!!br_APqY$6=qAkj$f$m|{p=Xi3{{(^Iz@2I_VY3WX5f`N# zPb;nTM3SaS3N4h{vMs5{HEUgDe@q$6of21guVh_OvJV;Q#yu%AOv^e3(GCHVWRdOy zqX>KANC2~wiWE<|YD0pn7D#oH0T;OH+Tcp7TWrt>X;mkZJ8+doxD+AD!JkIJe#Z4Z za&>ieke?ppDg+Ldq^=Q8_~sY}tU0jth;xc82;kcF6RdlP4v1+kH(LZTu+3#~3b6^U z8zeMFHMqZV|Ldea{1Jh1YPkSwMLfk~zsW~V?_KCqyz*nz?;`5sdU*eye!aZBq+c#B zE=bPL&q;qcJB#|bkNWsC>f;ak@&$rr?+7d25!M==o&8vlm@xX#oBk$4T*P=oY$!h! zU?ChM#l0+C9-83X{_ttuU<&)77{=_RCsfQ(3}QOs%*@lU}ZviU$5-pwvWttaynB1^)J$ziY_4f>h1R z{@O=KvkJ+JT?7_MDb%9QqwGEE95Ij@&d3tZNV-L$M0?O=i^$A^Pzs-;@)l7Q3*;j$ z!t?7m9QYs>z2wFIEIGPLO6boLeO%@F{%i#fO@oc#G`dvq{A9_*Gg0mM710X(3D2G% z-z%^3mx4b#@Mq}%a8QFk3;rxl67ZK4M}isuMwYM+q2HVcP}_wd>bUXUq13@2ma8n6#Z(Ah{2ZpEq~Fks^|D?v0vZ9%f3ZY`Z!lN z7*f}dJrNe*wK)B%c-snbNe1AuM)QrL)f&X0sW87?q>-h~MTReh3hD$?(^>e(n3fj-2L^)0g-|_Ho?Bx{CGrPo_~U=;XK8T|IRE t*X7?n_y3pwro8yw^wr1H+;ubG`wv9fMC)j~6*&L^002ovPDHLkV1f}GA+Z1e literal 1127 zcmV-t1ep7YP)ddGjC>9eS=jnCmMoxo z_9jg6CfS*m--nR=VMI=dgf`LMpXcO{^%Wqv;OpS2W$ElB7dpe3)AvVGF<4fz`_nv| zzpY;YeCV73bZqC*zn>_~fqutXt4WLz53itez-<0RB5J0PuldGcG!~B(W2OjVeSl z(~h@9a6Jwk2@*X?d(39QQHxvP# z-c$81J)ghed&mGCv)?>VjKPBX4_a@v-bs1RNKfc=V*unFRh!)3pRK-V`et7GeQ-)v z|3P#w+dY-%&aX9Dy|(%?Nn?)I?}OT8<1l0bQl4|BuqpGQ`t$z&{_gJXwbfUIjtkRyG6JYSLg5~| z!1IH?13;H3Y|4D77;ghZt-hep6o4U(R>y;vc28RX9NK;lfNi3%S?7WL@(T8AZS}Q* zvH+aO2w)Bj#9OKN0BHN(Z%*uX=J#0UL#4HilP;JJ6!R+Q>U>^xFj$K!O^49;DrZuo z&>T@h%zmOu1qfXok`A04Gr%cMsSG{G0Yvs9&_#IeAs{$$Xd+pMz$$DdX?|uMXkieG z4&s1P9W2STiR!TXjTXVl`cd*67;%aD zN`qiH;8ny6r#P-UD18lZ=aGrP^8tkqJknBoKZL1EJEs9MCiUdc9 zz_gGEKnJ)?n_IN~6#94!z_J(q5AbgQmfbkr t++sf;pls*=VSw_3;%0#IgW^_ze*ls8MC)X@VC(<@002ovPDHLkV1lS449x%l diff --git a/data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..f825201ccacde428abdad0080b80533bffe1f1cb GIT binary patch literal 1125 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 Iv0^6u4{PJXIsgCw diff --git a/data/tilesets/secondary/slateport/anim/0.png b/data/tilesets/secondary/slateport/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..ef62c41431483083afeb712f971a5e1b94705f51 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsVYww#}JO0u4gxL9ySnRxe$FY z_f!dIg^YRIo8*{f!4nTLnc8!_e{_yXcYF4`b`Hn3hwkP3MDLvd$@?2>?)cMri;5 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/slateport/anim/1.png b/data/tilesets/secondary/slateport/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b926bdfc1f0b0450638aa5faa4575fd8cee9a65 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsTxlg#}JO0re_uTm<&Z&F6=zy zHKBCEo5E`*5AC)-2vfMh^4arcY=Oy7@tk+Ixk}<;f3mZE%uy3g;rz=F-^^XGbjhlN?idzebbwJL|tcd?&kzL+-=BI}cQ2KYVxH zsQYN5!`%Z~+TY9sr(N!uq<+vw`3~2#q)=vk(?9N#Uy2Vn{(0;Y@x85Jmcd1zSSi`S d`2zM$kGNS@#&+Gfbo&U%HJ+}1F6*2UngGyTMrHs2 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/slateport/anim/3.png b/data/tilesets/secondary/slateport/anim/3.png new file mode 100644 index 0000000000000000000000000000000000000000..9b926bdfc1f0b0450638aa5faa4575fd8cee9a65 GIT binary patch literal 181 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 btm*#(5vZlyjtNSq00000NkvXXu0mjfV)=j< literal 6528 zcmWlec{G%N8^*uSGc#t!zNN8G`en&lc3H+6B9jPF28CqbLYBvxy_ArB$x>viNW{om z*`hSrmxN?Vvd7!|*L|OJUFTeX+~-{9bIu({K7W>po`)U)z+|AWWBP9*06+l!Zvk2M zJwX6)pEc0YGz-Xnm=)&A*X7q`@sOWZ!s*40Dn3#0BF$UVfJ_;G7tQ-gPbfF#ZS1(t zNA8yp?+sKQr;q}fb3oZ}D)Up-+%I2?QF9;hlvK&mPd7|vtlkTr@VFuF^1JJT4ZBt$ zA+6m!vcxc%Q(ozSZNpcuCS*sKj$$;O}ir?02 z*Q3FoH(@QZx%v$&Puho{k-uymc>djOS5L3Gd!nFDqj1q`yIOasZ}tpYlt18S&30uj zL*Cr2{r3%nJ_Q@Y9SJTsf4~k!uDSKAqXG%KuSxA`zi~8ny6hmo`M&K+53V1#>)pqL z=CYzMhSgs+x4w0h(AY^Zpl;S!)|V_gwRBO(h4P$}AP`aVcEQZ=N91C_9|U7pw8x z$kk&y@_7H1K&j2%+?4uHN5oU#V7g`i_Z{;(H)&Mt^2m`hX4^!;+bf0=7*PDuT-mHz z3xv!*WwHKQBAob*rQLp4e>$>i(Q+&C+oUO{QeA~+r~8rXd$g0fHCZY(6A!-lJ@0yY z*0_uV6X?pV0Cb40cgyl`5SHQuhKx3B%EC10(|IF8-CNn z?Hu{a+apSjoL8#lcV_cENx7h=S3y3nPMKQ6e>?L->w4E}MRUc^U?acYt)x4Q9I7ya zQNSa8!PX*47*@(`7ASYBX<(u4WE57?c4$090WE)y9k(?Se)i48k#%6}Wi6TpkR>Tp zY?bpHjf2yKfgr~IWZXfx4SFJ~7tjL%^G(%ihe-j_r{@QBvw8?sq! z6iz@(SD=a78LE7o)`huNzch#X;lQ&}CbW#Bwo|SURjYw%WR<+QzKLd;b#ZnzIisML z#u>cFJ@;cEB<%OWOLV?JvP4IbUxCEAv&4ysDcCx1UhunRFG9qFB^D z^Qy12lPp&?Li|T}oZmJ}WyjJ7)K8snI4r)K_~Dt$vAmJTZo_QV6l>@3*J%u~ZkGLf zt!L}zb(C^DRt&V?tFI&qTGvQb<$a=fqc}>4<(i77vZ53$R3;dk{J0|5e{HTu1?}0t zkXD&aUwVJ9=h|s2s+YCOG$cpK#&1PhB|-sEC~N*>Z7~}{K~#kDM;=9+f9E*^2HtS* zAsRd z9lNV2l3CHU*y0ORLRwP^xzAy7GiS^l$s zmj|>~N*I$gGJ@hy+~LdMjRYYvpdp(D$1J?417`?KnLf)2R?7D?mO*c9VL8!vd}IYu_w4?r0P7%VK`dC*Y;eqPACJj}LTwsnrmeJKr8BcDxLWzJ=)eSrALGDzM{6(~FU zg2H!G#RVa%J`3}Mc5h+YkVVoM(D;!gG&R_xH8FSLlL+vn$GQkLFjD;SRHk}abp*W>u<2EN@VSWv1L?^&RV^W1~M6;7zzY;b_@w?;5Faavg$ zOI>NYv2qTOOzcWmmlBCnm;q5pnYqk-@WH^?8a+rf^8c^FL__udLiisk+hP~KwYLI+ zA^7gcB6qEAAZd85C~xL|{n^e&lbf?hdv0~aC&dGX63(Sm&UYMbscS(ev;& z2$5Qn+`B!xmqLYxX{IDetlB9?f&=h87yQ*Wawwb#IQTpza2evWmN?kkhYqN7Oaj#D zCanHK5Mj!Z?t{G?Gx0hjy4T98;X_42xX6-Dp~W0m0CHeJh)89j^HkbsyVLN*wUqcR zuqUC`9WI+YNyl{E?4F$ufh>O8ly#lZJMMvocj_3TWQ%LZDyB}(N-yyn<=I7^08eRUXpEumVq_DPwW^8E}Fws<p8b!TR!$6{ZXi|Vuqh6(|jJu50$?J|L-)-a_ z+{wln@3$84G6h5<(NsT{{5@n0$s>Dbtk(j{4yTdB&KuealL=Ir)#GXU24(F1I^Cqx zyX)DniqYIhg373fYuZ)`%0*no-*UtraCCXTdyM5=5E{cO*rLWXkDXw)r--dFS&wfg_qEmyH?wL% zC`Bp~74Qo-1zeH?EuKD>!(hFLs3v7o5 zlFY}_0{E8X(ManK29$efTg_h5c+EWiyNzK$06Xsut{Yr=qmG%Y9gSFimRG;FB#kON znfNQn@>A9GA5~$@bG424*G(0H8QyXnS2m%jjr@r0JoU6Cb-Msd?hd?L?}^Gptt5op zq~le`U1434)}*SD9!`F%i9#HalluEyauv0KZG?_pmbmt;T>M9mu&vR_q&l5olAkfb zQ;vz<(g4Du$V2#~|@P5Cs>7Z?ENAjt>0Huu` z!OuSeucQ^)Lb-4ANHcbnm!}uqyrjM&PUeODRI19*yqPhY@;xU^80N>BswtyCqfF-- zUKPJTug#jQnPlaA>)fAVKhc&e0y6Qkt%=xxrucW?2z%A>MgEF>lN_Gnxa~Z5II$Ln zCaxXQaF#ReAERaK)aFlqi-@K%ZWh{gGXB)9l1+0)OWJ$Al|472zk*?{u<<1%=z90{Y&CzRc}DH~lGg4^>XN{O0nknFUazmgVJ>Vv z_p;0>g!vNtQQ!@J_K^#r-<&T|>9QdY2pGgPqBL_in?5>y}R{$C9Ne zpVPQuGC%P3Et?+v`0>~mI{8cQ?6d1488Sxgdx?k(!Q?YnPv<=kuA@h_kq%vpN+y@; z&pM=yDkW;BvN5>nSS5%#DksPJPoVf+4o~Dvs*LzsVI9p-i3Xp;pex*&Vca3rG;%jf zwE}XT$A%zPb2`4?*rsX2(3iQYyq@S6`smE5;1EdEiK2EE`C-Tm%JD>(%u_lCOjoah z7wQ>v%HW~~TwSu(9rQKgW@M#)kP$rQ=rcPGUMbK7-=&IA8LFmu7#ka(xuMj-Gmb$_ z#fNf7a@lW|YSQGKPFe-uT@12#!2qh$A<}rmr90e(l{cK~=^%yWYfUF)=#q<{Z|6F= zYQU%eb`_L5H@v6#9zjrQo`>Fv)QL(C1_nf82Na=XY4=QX^JO5 zlGV%19qB|G;7+n4H9Fi|U?ZvcM8H4CO-%-wCUQT*}xOX^y{-qD$ zZ{U9Hqn=-0Pe_bBrbta1Ane(^wRf(fLIGG5mcMT~<1B>GyAW=|W@9{wAyUVhET$0O zk_fNsv$W8+bv^@!nwp&^<5Ec>aMTt(cM3~p+S87qM@`C+7>}NJOr?P_Ta~Q&Kh&Dd zhV_xL8E?QCFn>|SzfvAjy%scA|2bUV_Yf`I?9rW58-o9G5MuqyW~oTl7!Ug86wIo4bTMp+T&!03>%=mgj-&b_iF6s`3+eu z>P(DfYlwq4C$DBY&iTWsMi0)^u)>cAlI=M#GM@J1a_4mO68*o{UB}qyu{>8oUfUPP zv25OQcRB^@u*#SZMgm(1;;K!$K*IDtr-d0}E*acy^v>)5OW6^wj`pq=e8F5n#MIDy zjuyi=C76*j+ZBdG=cB;dq5~X2FHk)pgc&+DUuY)t@GP~3G#RW^;^tyT0+ZNhDi+lf zkIdCDSjbbP6CxJG!5Z`lhFCG0qwRit=@eNg99E)mFukabAZbwb%79AvQ4BgCFb|yH zw&SF~lyHZZHPb}aU`;T5LTO=Hcsr_c3{&3D`9kcV(9V^u`lugdIbxvY09|} z&hj3ybm*Hm^JFy{N>(_DB)6{=PaWMppZ@Du*tIyA7q?|f0+%4tt^ewEpwz~bWh0wB z!Ls`g(pS3I*fHcZAbK2+F}D$Tn*~0)wI$JKqADWH+3CMEvrES69wyr9X<<$upI&9n zuiJVmkWT{YJdwyssYmA@_X*2yI#+-{F<%lrwF4l2fhouAKU$YU2RDL9 z6FCWdkJq97EsJZ%Scp^K#q0U`K?u%|y9fdcZ2;^V+xs=Am2%|(c6Uv3qb2A)& zCIAR4MGvDVMgXKpjYBoaQ2civd`SZC`vkhJAzIHBHJrz?B6MaB%g34?GjTiKa;VfF!9u zCWql*=SG*N&-(MakSH#~MJqflTEicQ7;-l#Jw3k4~ClF&Gguz=7Ry9I$HFRCRHleH<&8^Q_)N0`VMl4uqza>$`xdx zgxF=`ZTm_qeE7f_g?-)J0~t~#1;dGhwB8nF*w1=7mKdg;Z0kNEaWvW;AG;>HpyJku zH5^vP=f`}2R3V#xu9oTxm1ea;qpwF!P;;Ae<=sYAVRkl<=Lh@lA+dmL+agPaoE10U zTFnOyD;V#^N@hD}2BOjEdr@cQ$zZI-PZNfWKD5iIfNDxZX5BS{B5KX0w$RBw&*f1xT?Pogfg^& zirFsEn0=suCOtG=S#?M22qXy+Q>Yrl4Uymxnhl8qg2zzk`HjL_Ex89iaPWUr2EHjF z()T@V*xyeVKiZx-nYe)(S&rwKy`k6i0`5&3S0QrH!QyWrM62`xvKz_hfA8HLe zy?>AX3V4gfjearPX|}mc1UKJ;Z8%4?2<)v^m<_Czz6%78Ic+8f8rvHRs(o{iae81->_vw-P{jk6cx3M_eyLbK@eH!fQxzjc%}9jy zT;n*0UX7XsHG~pZ{8VCWwW(i0*3Q@6SN$<5>g(O3(l0}ux>JB#dC})EIy!0=&=ic_ zY)S}>8c8Yd8*pO*#n;rW%d+}ms&xUHbHR2_Y&QEpKJM2+4swj58PP!>zajZ7Wp9L` zr&5ql4>n)JFxoV{aG)K#OSfD;7CCQLFx|Zt43KgT<^Y9nsLs`uB{wjo4yYVvp9KkYswV;1x07`CWC{I97Bi~D`^Lq%!Q4HiXjV;L#52CvL3+OYyWyv@Rc+=W;SV3cTAb~1O2X>H>kuR;A+@Oh`gXdO(ooxCvisW{&=MSP zwv>yk{Wd{c7I>SGEK#7YtiXF^0$4@Clc?g>6D7CyxNO_{%UJ`G>|NrDbYuWQ;K@Y2d^%srr$BGWY|H|-R+5Moe`(D zzmmvLJAx?5FwcCy1ZRpVWoG3F0m>cQ|BxkbYU?YBTNgbyhQ2&X~Tf(^9H$m@Z+*8&2g{@qo)$+XK6T8%M225E}ZI=$CE^I-}FKrtzS>e zsVvJVlW^Tw&aqcXfR86b$%8e2Q=*R{%o{rK&Qe^VyR}fFbEFyJDle&tZTDPWtj8*J> zD?Bg=!eA=F01d?n96w>wEKYJgMb<=7MCX(iYe7@vMx~c_U|HCIDOhm19ctKWKiu06 z1|3GxP~gRa!!V)j01xE8ARZ1fUBy6o+TrWulQ;m`nuXu*=hYkGY&(i3PJNYz1N8H9 u)}J#4LxL@=q*H(E-rtU|0tH(xdxukY#ba8e8;k#ctr+N@*QwN^MEnmQIe@+Z diff --git a/data/tilesets/secondary/sootopolis/anim/0.png b/data/tilesets/secondary/sootopolis/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..63f97ad47716c3c28ee8dc79b2eff50da218dba5 GIT binary patch literal 1201 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 Wo~LxP@{BeB0000+hAk?JJ0Zj5-KqBwT9^8K@ z#kHNJ8x+MN1?s~G$sEpb{uz$wdNdl*IANTg#tGMSGX}24<1vkHu76;RX!H@QqYwPw z)kk3T;RYC8F-8M^KDYZZ+5Pm)?yYg(`}q#|y?~Cf03J(V@!RRb*RrJUPL?FZ{R$9w z4ACRmmHbqe3{fU5XjKAtCH9KdlRqJ`D(?Be@9J-voR$T9E{oUwU7$!Y5(+j)rJ;qN4mPbrVj&+>Tx{*tigzA-oL+s{T1wQ$^Mq??+be=PS9~ZI*!}jKkvUo z$1UIeC;H`I_s18TQKqMp{yV_m68Cqt-@qYQ&x@noE3 zGeO#A8HKvi~hb!Ir7do z6eeEMRJW08sWde#NrGfVPG7c-Bo$yBopEHe)6^O$q%0sq0OXo?1i;&dytkfAXlpXw z)yUlK84XO7>pfpUImFm2oTWib@@iXSq5XwdTL!XYXyk;Z2*iVh_(Z?;#W`I9GQ3Xd=L?b zLU5&a6glbWB^T6rvIcQmtqnPiHj^$|&MlHM$SqiFC|V>KTph`}5Xf+w84tL4Cdr=R z8}8HCC|Wy%w8Alc#o$$C{m{yuvFjadSm%9YJM`p+A)CN^)kzF5^@KvxTC&Z$0X7ZQ zjZ#QUCA-k0W^rPb2~v!}usvo29Gi3^uNe_q)wq7FB%slWy>zJ)a})}i`haSgh`XR2 zdI%lmpxOjy*-m$)rzoRO zgSfo*+Bkz5p&7a3sptCn*NL-jIHT_2BkrmXz^&62wqY3kHOQQEkq>SNUF)gJbZ!j<8mI_JaEX2 yusFl2IIboXhvUdS^si}K8hHQYBl17~7JmX@e0q$t!&WT-000051L~d)OL6HxQP(wA@6J&RNPWJ4)cb_bRDTAs72*vEGXHeq)u2zHr_@IPc-o zeLRV7k(>VLh7kVSYECk7laT6iDjXwD7B|j2Y2>6 zgVhwWq~caDKNV12D+5s}k zaEz-SgNtGzNV}q-&^DS}aFU$IA)os-c-qlxVDFm6%Y6}NiSqA9fw#IWA5j>LzJ#S_ zw1_J`X&)VV=Q|2BFKMp(NUc=q>=n+^At!mYZL!e*$g4erKd$#cce&R!IIarh zJ0uT&FKMmYKx&Kb%6^7y_&3|JU_78t)Gq*A0ItC})DMe_erf=*ybXY{gr@BPt@xv- zVTsCzWqE8O4u#}O?I?25(M!Hi=gAu6?X@=KG;Ahav|L*xWl&qN)=;!4Ft|37bs>;p zn;8$dc+rwQ!*}e{*eO~&gR;V@e8u2ZW&P30p0UdU8}9QyavVIlVaP7U zp89~>G7)b#reM*v?PnB&LE8gcndc<#O=rF07%Zse`2tf1TrIh($07*qoM6N<$ Ef?!!oZU6uP literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/sootopolis/anim/5.png b/data/tilesets/secondary/sootopolis/anim/5.png new file mode 100644 index 0000000000000000000000000000000000000000..d0cbfeb57cff3c941397618c313b781c0c15b3f2 GIT binary patch literal 1248 zcmV<61Rwi}P)^F#!7uaB*p!G5BbIE{nH+|9BLI9t4X)_lej5VcR16bs_fJELU6j1+P za-29#+M*~H4bU7uSmEd&&Obv+KHrSSGP%A1Cf8Roo=k3JG$uxqABoR$H5y;b1pfp^ z0G?%hH5$oiLg1%djVD*~!w_;2H|gWXz}1LxBgRc86FKGm)aMZR06sh3i3O}(|W6m6Ney_~;}{pcFx z?b;79FaNq;O1+eN>G_=Z^GD$9!%`k>y4JNsw>n>ae>nSZ^|xVvyOut8T{Fb}jsCu? z_iA3gr{2S0N&2E*g4bMjzWUzzR=kIXzNj9H%hl6@QYsO(NUS7t>t$|(JBKt}?L!ul z+*vEdQELerD77|2+*62>#FbWTj9PqwkZOC-qV-n4j>{kCR*XAD(KS@e0nky0Q(XEK zoFp?P)+LFAVsFI-r^R_}@~yAI^Bc7Vj&47D-xu{FQUCpb2QX;*JELc0&#QC z+MIajD+yDt<<{0w3T>=Zw4{e7BFooxrNsmUN0&Rvt+P_+aLAN^4gt^`z7YUlR^ol> zB@cBWxpxIBcSoW^h;f7RD;S3yM}xgo$SL0J3M|w=akVD+xH$sV<-2Z=?V2FILh|5` zS~j)_Vs>y>*HdJ}PZW*AnGlcgN$MF;CV<=HVB5!8DnIW5wYUpFUJ6XZfk>?3qnBoZ z%A3XfWFj_&>+1(z*-lC1ZZ#Uh=5kxRrjX525RbrERClThu=i3sKxVx2L zrw0lI*-fW~OfCLr^=60FxRGN(x6n4shU@1lcuZZ5iLEfKh1nvw3b%u?+rc3N`D4K8 zHX5E*mB+y0YN>dH;3h5h5e+TT(7Y_9a;x#2AU0000< KMNUMnLSTY5*JyPB literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/sootopolis/anim/6.png b/data/tilesets/secondary/sootopolis/anim/6.png new file mode 100644 index 0000000000000000000000000000000000000000..4b35ededdb4fc28243cd2354e553dbc952523d08 GIT binary patch literal 1161 zcmV;41a|w0P)f6z2ubc?0_qa<8CH$@8p$buY#SwzjTNFG_SJU;&Yv)__RX0k~wpz5vQM zTzPFNc22nBa5%)p4=Zyxe?AU}bU7N0=n|x>%MT;E#wY!B1&n^V{6M3NE8yp=OW+!~ z`1OiLqmS3X#YX_!PI0E)xpBYu{Py^J10CZYcw#K)!@?8oJ1wabx0(e0PLb{Ab9^o5 z_ktuo>5nBKKF#k*+%AE;XMf^$yTms56W`R|g0Y-0_Ux~E-`@$U93!J*2wwPG!uT`d z?m6zB#j$j2}psbNyB9uVR1IasTn4 zcmVDm_+saw(B;V>hSB%0yZ=_)?nUBZ+ZlDd>+j9c_ig;4n?5ZL6Yk(|7<0qud*`iq z4_VV3SImxA4+}`8ATcX66{Yr6>gZlQK+lQKsJPLZnw^vsC19mgha`vE3THLxlqC5E zCSkpmB;{J3+L^~vlXBZcvV|A51!R)(U{^gG7sXVNc11z4sWrLiBsq^H-+T>*9jyj- zuAaWH%jx^kK?4X>KBF+`tBe_U*sOtF>A5yX-uXar>?KWfo2ZdWQ(#FlBqMS8vJH|{ zgmH4lkN zQ8tVOtr}cERubSxq?aytVu^!-rat1dOu}8z4n2g9a!_rITsD&}=?RX}=i_E|aRp(F zqeh?hSy?10Hpr;$}iokGJd~(q=qvXsq!+Ems??rWNfXP7B9|-f+3EqDR-Y z=-7Z}ZPXgZAx?T>*S$gt?spNlTS;gdf=9z)v;@9FP?IJ02?uI%pvE?2`F=$0kso)W z(dI95k7%=un8B@AGYam+smMTgb|T+jM*k3qmzU)Awb#ZO%m~dW9Zx;i&%gc=8MYxu z-NPr`RUd&Hr)zA(FnSqe&bh>i8$#E5s!QFlNr}~2(T`2RPFJ=aQ;G(%M{Z@FlQ=is z`zsE{f*KET(9{t}%P_Hq=ep?UTG7YlI<$G@kOg6Jid8YJW>ouO23<#Os7+t+}-}cn9$@SRwp0$znhQ1 zxnWF3TxoZ0++Y2CC;Z+(&sYIZHL&{Y<-)hRrv5?JB*f=OKs+$SfNWRuQ(ZGe zow1_F8hEI&S3ExZ6B4W9GynHf{jIapx?<0D^}fFgR5?aQ#Spykv=S@{z;RC;_r!5~ zj@xs{j8#tI$9Vwanmm4ee_35dEwaud;BU?T*6gYp#Cgi7^HZI%!YlBNIHg^+jHFhb^V<N-{q2ud#$NGN=Z=yR!TJ<@_gNevzl~Dl6(u3u-!|N zaw{+G%%Rkz+&+=);6?2LnPeR8s%PV(SP0UtC@8j#CKsI~=W)n4zXs-9}P7s4Ke}qTvxq;yHcA;8kV)SjwKU9~^91=VM|! z)Z~^SL*%{cMGP~RMMkNl?2NBG zL&_Z`h!36T7L~Z0Q`ECPJBYNK&03mi{HNt+ht;&9W5jLY+E5!V*H!eWx(*c^P^_)m z!Z^hFAnbNfNWuLvqPvxZrXhF~97apv7J`~Au}`>AiwiZjCCmL0wa59m5{))r$sJH; z88L%PuVEBii3^c|>g+}CUq&y^1Meg*+g=-IFe5ahbUgLkF#me-Y8%d|2l#|u^%1yt zy1_OKqkjgOb1w104WVj1HKlIZq{Qm77{;bxryJYNC`AL=BbPGIN!*(r{1v0Ipw>ei z6m`VaGE8jXxhaOZRt#}D4{Z({vLGxjuqw{08P(}La!EJ8N)d=S4lQ z0>$Z&G#G>Nkd1Ls{f!m&a-fPxpvz_|y1w5`WD%T|*}2f-O2e*g+j8o;9RFUn)f#Y|pTSzbvND1-M7{`EtHhG5 ztytDTVGAiRfFiL<3>210fuS)^6e+IdY0NL?mZfL{i>8V1OmkkgATe3y47E@cYniaN zh|Nj(p7)hBn6Datr~U?LOyj%i&j$kkY!XENi({0OswUzZ>pm_2=?f6ohWH~O^$if~ zQXFkagQbhMZ}+Txz6X3C@Vo(DuDVCWUh5+I+XW6bQnd!;iIowcHOm^HIKnEiRHW)w z2^3|iP$y6co&9ndJy`jNA}uTKhrz z3;gOukhUJBq2V_+E`mN+$zH2lmPf7bvl&!2pULLNZsp=S9VzTwoY?jQaUn4|g~X6v z9|0)Bf%^zJ-J>g)IEA=&k$ev}fL(WAP(U5-eqT`N3km@1)#BPdUKyed4Q;Cm(Jlh2 zLbNfet4wZ7_bHm+5&UQ^5JrL`aYkW<#Lh_3-$m^pFjL+{o|C(f9TT1@8N!$ZHA#hy zG4BDJz`S>OjFk!L&^uJm&lj9W*jU2E<;wKK_2>JZoP6T#$P3%vIA3s6i{ZI~^N4lt zs|~KOu57w)g$r&vc3EYz2#@wnD69Z$?@9k8zaag!ydfv~6$6VGpf@b5gvAX@W|_!g z!(!x?0n>WGEz|NV-8yUiG4pS8!Pt&9A|lp^h&Vxo;%XPMky90-4bdot&`m8OY2wl$ z{=RmQ6E=qP9bOBc_ zVN%_iIwGr(XcNZ?bS6wYB2OJ2kvb26h6~i~B$cl7gsXQ(Yqq_X;0s=Gd0w?k!<4H} z!Z2HwRoh-opf7xFn%bm-QsX0(DyDqh*tjJq+>%Dox;04L4E82VZ&p#tpeR>%t8dE{ za}yi=PLzxctu+p}M)nIUu_vN0|&U2N4=Mh|n;ziMY;%)}L0Q7S}nrKNR7;Y^v7M z0CC-x>x89oov^Iiqa6ii1)=TIFt*beDE7`kw!obP1JBn7?#BvyIqVBA{%eMDg$KaA ze8fG-+O7Q639LISIoW=;bXDFnj8%czYO;04#nnkHUBw}8CATW|MJTL(%K%m^UHT78 z{~UbBI=cj`SW6}OHA}x@Nq>i(QHe9XZ5hgnyBzFH-dNzmF z#c>3pLGHCU9#*oIoY+q$Pk;<_T4pA%rU4hPPueA(a|8E4F0mUbOwE9!dJ+=t;ZATW z|D`3t(zBI0$jq9P;=(M(`^oo~t}Np`IG2vG-A})A{3;gry2Q^N zX7P1|^uF42#QDSp9M6?K$MwW@@twBQC5MlJ9OvOATnDZW_J;nxz-Ms}0Ov>bw@*0y z^%`FG&-XWlvc8SjE9+MALeF`agrv`U`>ePB$wNel_4ZirDeHAdczHj**n_{BemtD% z$LsHJzn=j9bezZ7r@wvr+fRa{(POpeZc-r4c}Vf}cm{FUjiOn+tiE7M<@ z{`TqbAM{d|7p(UM>peZIzdq~5^!4~o$In48uiRfbfy1--8T~<+d@J?7j>gW} ztAh)U(Z8zV-;UT@zAr64YmWE~IqF1*wleElN!qJdp`Xl&c-j`+&9C2G}uQIYaQg;tol z8jSDg`aoON*UyiOGf`2pe%P3+JEbA)CQ_fqj!(2;R|?rTC1^lLtU~C?UB4Sk%d7d) zVMsco2kbGs?{zz#)FK$is;Q*uD_^=zM5q=3UKH^)p(^i)fH3Gt7zUv^9MXNlm4`Z(CESqg_K=I;c~^+S8l3(ESsyc8M12Xak+I_o_OYTZ<&@pzq9SCf`NnS@feCK$*EPt*8&dyc@Gy_4<8h~Hp$547Z z=y`9aGzcOZh01HShQ#c29P-tiP=yjSA-&{%W&Qe;iUam7mRb{ii-Mpjaexj+sufG1 zqKL1jdk7Pt;xi#>6JdusjXO1|s&~~0!K<|(97s7N8i|8L#5+5VYHet=7O)Fp=MwyQQs8MmKz^7u1Y(?Xkpl( z4W)Gzg-~4=itTi7%FWs#j62cYB(R4`glcf#jxf7x9%9<*gb*B3ONUbk(PW6j7y}x_ zd_A}&0p~~Lhk?XCy3q8S&qWDC_?%!TC${oKeE-JJZwNZ>lD8 zgin+dvz|)wpZ@O_}q zByBo$S`E4diK8aM9#P5)Xe!+d__GJbj@%3poOi=G!q5UiGpfUV-A?kFoz%;I_|0Qh wX$vl{V!Z07*qoM6N<$f~|(X_5c6? literal 2674 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 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/sootopolis_gym/anim/0/1.png b/data/tilesets/secondary/sootopolis_gym/anim/0/1.png new file mode 100644 index 0000000000000000000000000000000000000000..4fefe45989b4c9176eb9654c866ac22143c18a05 GIT binary patch literal 283 zcmV+$0p$LPP)iWU}5@iEN4`Iwal zN-Wwd(53nzCe=r|G&+`ZqcftBPwp3v#Gc6Rx|2552@%t$B_rTVzI-+u67_rr^xaa5 z^`eq+R{;@GuByL%pN+aa0S9zNw4v(6hn(2_;Y(h=gWaW%W{bkmVlWF6b~|(`j5|?E zWrR;ChaoW-I@}P>UuW3UYIpAYtG)&GgNPg3AP{dHmExhKN68H3U}wI;eL;`EnHE0J hn^er%$kYL`(GvxfCXv<{oy7nE002ovPDHLkV1lW2cp(4) literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/sootopolis_gym/anim/0/2.png b/data/tilesets/secondary/sootopolis_gym/anim/0/2.png new file mode 100644 index 0000000000000000000000000000000000000000..f603b3046ce797d9f621bcfe57cf6b31b7eeb91e GIT binary patch literal 294 zcmV+>0oneEP)7xV6ov0gGIU^sN(_u->|-D!F(Vwu570=>ShY^fh=P)=mI&|$C_TsYhox2T@aft* z_tTL9BN63}a0O8IfX@pe=QEd|+^;C2#hq~BUcQ0bvZBR1qW|u+_w9%(LvRlIhH}GR4RRBMIh) s_!rOCEmY0+G2m|=n2V9c4Tw!X0KF+AZq}065O4rgx|K>``wH~ih(t;|MD_4wCqLK$ z#KI6uk|bi;c@J?GkrI>wV?^wd(0Rr>i%5o03}MVax`pm5%r>M1rN9_ic1;7et_jO4;=VU`9h>_=YdK`oEWa=&+`1+HnYo0vf;R`{ynV4Thl{$B zuBzxNOUG(nce`+NSF*XQpo&;1=j~J%(ns!inw{Ctg-8#rhLeM0hQ3&z%xho@xSURF zI&JBSiB8q3UORQ}?Amp7AKHn$4_#mPBu}GIIZOrE)AK0w@C`lWfk8of7(O`_&m-MG zcsNS9hb+rP8s4Eh25*V3g>6}CZwqk@Z&Q4wve5ZUH`I=Y=PjR2n(p{_H&{0B>UYl9 ja5VW6kU%zuZj9Xz(zV;LZMe8~00000NkvXXu0mjfR+Fzb literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/sootopolis_gym/anim/1/1.png b/data/tilesets/secondary/sootopolis_gym/anim/1/1.png new file mode 100644 index 0000000000000000000000000000000000000000..08413b63c2a7d011e907886e7a2a2659752ea785 GIT binary patch literal 408 zcmV;J0cZY+P)ToQ5Ju;cY_qJC4a-oeQnx)qg{X1>i+G=yvQLD4fE2nbm5l8xxZjv2s6U%_7Egob zVSm_AL{ZGLjN&Q;Aax1V9uNXhijtSH7f^GTP$_rCf^kq#1ox|l%@dsFkQ#B#0O&sQ zAaXuFx|lv@LC^3F=WBsyPTEZKq6;SVqR2P!+7@2x;5E~qyi0zIXNIi-FKtayYWb^ox_Uuc2~V>3Fk-skaimkd z9pSx?6n20d%!mZ|OY%+VfHimPlJdKCg}6n5Xqeuhs0)6e;7lNStSyygd1RDSuotdg z=%vRaZgp#eofWu0y!y;BI*t(#tt=T&0JM?4F?k;p`Px zzZ549B@CsaC@5VpgS^Tp1-e>pSjt@?9b*owjKWZ-wI;Un|GR|lT~^;H1-crr1?i#> zz&UJENGF6H*jefWI)^!B5TZk8?Y}xa+__94q%Q^`_P|>CbZHYoJAG-D`bdO8N#+k4Pb0l3Y)vfzvQfG*cb_7=+|1>N^$Gw0002ovPDHLkV1fjwuw?)M literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/sootopolis_gym/tiles.png b/data/tilesets/secondary/sootopolis_gym/tiles.png index b2533b24309c2f8041fbfa136f141079b98760a6..4f6b257695dd1fa85cd4c851468d5c1e7459d258 100644 GIT binary patch literal 2954 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 AYXATM literal 2780 zcmb7G`8U)J7yo`|G4>H-CQD|DWQ!q6)*)i-Tb`^lh!imjSsybhl{FDH*2lglk0Pl? zDrLyX646kyBxT=c%-j3^2k$xe-p@Jre3o?v>*TgB1B6wr$0#j(_64V z19&~?*#-cDr9?9mmq6ODvA)o;87TyXD}*XI5Xn#I{(11GsCdBvY4WLHMScfzr{F*Y z24}u6&#h7WnK?XPdc@~JiOxuQE#} z^VH$f2)V&_X#~AJ37NfpGSb+g=~+24aJe+rsIiCo>L=8e7dV6vMoimMT`5r+&`kk- zCC>MLH}+;1^h9E(eH^3d5`uv)h_GbTA~PWFF_jD3gla1W6gdqCb92)nA>kRu%OLY0 z`Hg9`o^aLMIeBcWdG1?J3T193ZvULwQnwb1uhb*QZ*8a8KlbU`w=Dcp7?KdCMb4r+ z2(8Fci>xPnEg+0SESk2_ad#M+?Y9;)vFiR*d+|BIT0a=SbkS>I*mwaxSL#33@I7Q5 zx_WJ2yL-_CtRTy`Z2-v$YecF))cAT;Z0nWwrygMqklHdsfaMmce{K0Phxn~;Cx5mO zBrNI!GMZ~026S>yb3sUSH|Q`>Q}ZE+9-tf1<#t8*_-R?Z{=PZs9arS+HBUqoX4mcY zrG=;I1LN8wT?ZJ8*LXh?-iAJ7r4@gKqo&8}YP_|)SwnIZh9X1rR1oc+&O_&U9|q)( z+ut;39&)886bStM!Jc!m3!IhftI7SncgFsaa1C(n-5(@dwVTpg zqA(Qv_dp0w7eeR?64u?+Jr?_;;VXr)+!c)kN7Ahc11I$$s#yjoHpT z6Y)X-I;d>8k0pD*({m{b=6#3G`R>T2^P;D?+8TLtsPNtaQHsD7G8(gpP!rXa<{dKx z!s*nLc>VHx)i#(mvY~wRW2@gIv6}R^r=(zd1-k$EqEJE1@?jn1!}xDdHCR`_nqYAZ ztk|r%U7ZXOf4WTqY3;^O{P)j2WgLmhWVY25!R(y6ol!(bfSVEtYfba)u zTH-S_TJ%!1qV@V^DQU@UDS(vFL+dG66QkA>arY5dFUXzKk|}JVzYjkRKK03ij*jE0 zZLL1~k>%7eJbNZrxvM@zjVu+N_SuLtB+|Y_ZQc~1#@2V!^uTnlH`kB;^(Fb2i;b00 zg*kQhGh2P$z2d3Qhb3wQoR9?#Nrkh_a#W|LQ+C{^3mZtJ(RUhWQPgL>kVZZ*11bk} zeGb=jnI8VIv*KPVOt26WLc>`j6@cr$&cNcf^E#Wr{@U$(7?Cm7?Cko_%^Zvsiu(LO zoRKu;`0)79T`$9)F%Ns|4a4{Vz9SQ)Mr9!O#8#Yw!4DdFC|c;ijR(yk`*lD$y2<0@Rv= z{pE#WTn6>C++oKt_159;n8#2^twDy0JBzsP@I2O`%)D;59FQ)J9AGgq!g*GFJ?yT!}zkNx+eqB9nlkwr*~(Io!W zlQ8{?^L%;ejUqKc1{*nJ!TLRpo^Y1&*X@19ZK8oNxy{zn$s!~(%yvnwP zv}g6{q39EzVgWi`)>_cdSzIM@<2;xTr!3EFWFRU~j$+r}m)&vDi?z+$>l;nkIpbxY z3K_v`5s1X9sxn>1MoC4rMrCC~;w`L@jcQYBa?@pR7ljx0D#=>QLJ=2DhqB~pb`op} z{##u~6a~n;=d5z@*fPzvd56iOj=Do+@xLU$Rk!LXD``!nG%2Jq1I1#_7@_Z*auV;0 z4-$!)+l8idO9g+Ej{Bm}z4=*T(X#8hDpplWJFzfaO^F(lkd$t!QEVCJNpy0)oS)bg z>~a^PSgLkAFiV$zp^_)wOx6TYCQc|f{LAdaSt>_R^TwL@vK9HLPWzSobSn4>tYpsW zmi{1C1(e{G%Mp`b$^doT5D9czuo?|r`so`I{?*4c+TxCx+6@?53wBad44}GW0zu1< zc;7?hmFjRNQBm>k?d!Ohz4}Tlo)^-Te|qtG_pG9bye~g^`A{JPwO`=e3Bfg~=MTSM z2?*AE5775&8ZH3mfXa$X8`pp9?9#B8IV8!X2cs5eZA{xS3vR z`r72a3hYwRKkL;kqjs~~Kxy&6Mlf6>O2_10t!>{gM0i0%ZJ%u=`>kEk)HXp(9K7Ru z%-LlW=b8s)^ljO0$lGTAcuCLT#Npn-94xvaeTY)Mu+$pTV4vR_yCnV&(iG@J>={S{ z-&1bI+DPIP{Nu!`o!o&%$+3|T&R!Uda01bhb9)3NP-`RQG>=D#VUGNN|Y(V!8dj~8b(y9TAez>Bm!YS2CsZi@&l72JPT5T>X46A z@QGoC@^*$8J}jOOH29QOdv_ef_g6i!IkvnGxQm-60`r!)NeAqYXd_=Av}baGXWs2l zR?*C<j|mDggcE9Kh7!}Lop(J}T8;u2c3e|P zt^%#%dqxnIz{jpb>n&(TWJFMq>WD6dyyHOwzXEf~|163&Eslh=dDN4kl%I{04RUDr z=KA;zJ-~O71DvfxrT7yeZjW%nk+U3aNsdZr%zmbr?buXp#~RbX^^ z_XkNDEEY$R6C%ZNq2K#?3lUs1#ySgM2(#SGmH@o%qpuJaRYTo*ya~6gM?V<&@c+K8 NL~}c{22*n4e*kF21ONa4 diff --git a/data/tilesets/secondary/trainer_hill/tiles.png b/data/tilesets/secondary/trainer_hill/tiles.png index f5330af84a26dde0cf4ff675f6f588caef4943c5..78d292513fd24cce0e55d3fcf528e1c6646f3229 100644 GIT binary patch literal 3594 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 Qg8%>k07*qoM6N<$g1<@fcmMzZ literal 3311 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 diff --git a/data/tilesets/secondary/trick_house_puzzle/tiles.png b/data/tilesets/secondary/trick_house_puzzle/tiles.png index eb81554cc019c9298136bca56517d7da96b2e64a..5ef1bf9ca5741ced07c87f57e4146ab79e6c01b7 100644 GIT binary patch literal 2797 zcmVNh{jkmx+%t2#re)a>%k;pW>2&z3E912;M`Hz|g~{ff^qIUguDJ z%nDL`tQOZ8+}rNLVhLaLWQuG#INFf~c4_QnM=I^r+Wx-3H~)5ab~JKSd}v*dwYml%Io4*%I6amnD7A%y&-NY&y2()xspaSwd|?-3XX zFdl&@zxe+1k+lD$jlI2&qTaYNX|Jjlu~3p=&UH(|= z!3XOM1#3aDuGXmotE1Rb%6kC#3X8X*v=)T~T8o47(AE$M?;ZT!#6nM4lGa%(0)iV+ zER~US5RJ)0(PNW^WSUx1S`j0v%~D~Nm}+I3hr*m>4Y7PobF!x;HNFO!L2&W$v|De^cj1+TU+NHfC>cWa`>uN3Nqv>i>vgKs8BsFh40%;sb-2_$zoV|-QA29V zefl2jipN({y${RNi=bF6o~Mf!FJ7X#xw&Y|^(*4uMckW@ko0}YEex6Y(&3oX>qcR2;;s?h+RrDqeNI zU%cvkiN>qW_d7s(5bzYbB3^ZV5{y@!Y0jkJHFbdM{CH7XV{2Z^QG_H?5pg*(^P~q6 zS`Hj3x1N;C4lKbFz!E&^i?=VYvTR2h=fFR>PY<=uyg;6OF~>>pg(<+L4?OkrslQ6f zWe6M-wc6)BNbd)>_8+>ifo|8Ped{47bG&?g7d6-hy1O21+}rMv)wOm9>x{L`ZZxU) zeM14R<+<#0XnKC0Lp^VH2cShG`3lu-6?lzrSq%g5MVVo!;W-qYkE~e&OH^^ml@f1sVjLM(9c&`G^QN*3Y+3WS;?}nLhu#FSK^h5^z#)KkEG+)9^+BaAi)?wf-x;P zkzV^akBkNhjsqk(9`KXd;~#V7GHT%Y{zq{6Lc{fYjHjys6j90QM=pwh1>Ek(;T0PX zNsPWGt{oB_2S{){NxUl&@v0b<>Qc2%%S+X-sQQ;1jOv%mIvx5Oj2dKCTV7hF zFRNdDK{t>DYfElAluRgozQU>zu)Lgj)cPxz>m_X7FH^l#{vE6`<8nz`{wcZynU%EQ zKK_(0m&>2>Nx!T$QMC2i6pW1Ox}1iLPIY|90a{ zl787Zlcc>z|GmA}`*-Cq`1t{-eBiE3@sPz@3L6D&_4IEt=`>(yMEQv)oXE(zh>rIo z`UTF z487waM+}*F=5(gb$n*H*PZPECMjptykfC7bv&H-kme(Yp^(4Gr%&f8Z*aF0 zzz=f)NXfM`igFoMq#XZGxz+px<%;<+9pznoI*_2Mok>&iLOac)tkQIA^a4;!!z+zX z4ELRv>v*f7cqgOdDL39t#Jd?0Px|j{9!S!EJXN^=^27Vj&G)90m51#&j#__`H!dh; z(1jlii!K=W%>iG<3)Yt9pk>)Qs~Bj$Wjth9#(jKcH}JLAfo*LWUOdI|0Ew&&zGv`* zLa}Ht3Pl}Hx>G5RCy|Q=P~^x4{EDlL&RWwZ)p%(0M#SzC8y#X}jo4@q8%_O6d#%}` zPGiktzgCCXP{hU>vC$wl96woW4Ja2y7GBN+ z_X8q14LBOy_5X5FhYL#%HBK1Zwn*jH-dkN zHi939LwM^w{u6>oJ>`Mdumn#5OYl?+NlOa<)I!4&JOM1hlc3)t9(WB)@CdL3j{<%J zT7&-Zi&HO@y~A3A{_x9B*e|R#=r4^0ywC5y7@8lDL`{0M00000NkvXXu0mjfR}E<- literal 2567 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 diff --git a/data/tilesets/secondary/underwater/anim/0.png b/data/tilesets/secondary/underwater/anim/0.png new file mode 100644 index 0000000000000000000000000000000000000000..7609cc82a2b5c979f6ab161ed683fc7dfe0cf104 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gscKIb#}JO0vb`I5nGJcEcTVO> zVPup$!4|P+>DGNezT{1c@~sNp?>xnXy=jWa3NzQ`8WM{S&g8XiT44B4kg;fP>&g#D zJO6#;T(|awx^&L< e!oBz!J6?z%)v&i*w{S~4$T^;_elF{r5}E+i;Y5}I literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/underwater/anim/1.png b/data/tilesets/secondary/underwater/anim/1.png new file mode 100644 index 0000000000000000000000000000000000000000..64cddd371ad5e1c3f144f282b22abd6036fd9195 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsX9*=#}JO0qP>P(hYbW+zWb{e z$n$+s5Rdj)p1-oAaP=XTwX-IKP5nQ?xA5>GzUl&RzUS{w9OSJueI)3Za;~xFc+jfY zE^CVyJC1ujFciAw$ZWqnQQNDvX?vu~d49 literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/underwater/anim/2.png b/data/tilesets/secondary/underwater/anim/2.png new file mode 100644 index 0000000000000000000000000000000000000000..ff6ff843784390b5219a4aab5c1cefe04694f9ad GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsRmCM#}JO0yk`vg4jb?=JN)xx z{KLR~qJC9lvu^Ea=gsLFm#%tWxaxe-KIAl`3Ww9{WfzjVPDKVZb6=giB6XhR`j*;+ z`W1_UMPBDh|9QYBr`YjZM1;>Vd&-_)TU$CWO`Z|(sp**Qg6jV%*E^q^A7Ag7v_pTw j literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/underwater/anim/3.png b/data/tilesets/secondary/underwater/anim/3.png new file mode 100644 index 0000000000000000000000000000000000000000..2863c2261fafa876a2cc28ea98abdb59a690f5aa GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gsd`Tr#}JO0qP^OD%!UHawaYuF za7UbKWa9a>^IFq7FXly$CTv@xkn#RPWRj$feX|&cmhehVrMGeiueB^Oov?1(-m8ZN zg`||$ZDcO#Yp6T5;QM8P?(Ita-$G@kIoz*|`7CAC5 jEp<0^(@*Fe==sBZBEWXz`OHPKASZdc`njxgN@xNA3js(w literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/underwater/tiles.png b/data/tilesets/secondary/underwater/tiles.png index e0569d970d2c9b1239d0501e1c5c8bfe8b79e3bf..5af21f35392d59b3d4c8046756f016966eb593ac 100644 GIT binary patch literal 2846 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%0A%}mdqw}D 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 Hu0mjf-9uE* literal 1710 zcmV;f22uHmP)t*FN7c- zG+n4Hf|pK}f(J=EmD*E5Cxom-itQ5&=*{)}zV~O|dpmDuqp#g8Gn?I2T96uhIARd5oLi`56lTl!jcmM`*JPW{?`vC0PfQ+AO zXz97Q-HsuJB^Ds#<3`}USL65yq>!8uV%Gvxd^0f605u6chMP2n5=V!1i}SJl-;EiU3Ro@&}+@ z3picao{FMpw^F@;4r%}s%i5Cwaur5Oh%^A*7ncC=in!7ByYLu+uKALjVc*Qvq!NMut(PU>EWBykD&;mwA0aJKm3?LiMNvL1lFk%XyAh2G)x*w^Dl&0tI$R#PikO zXE3#FKwgJ3Z~;z0p7$Mqt}CFbfd^201w2&?6sFk#?$8*&`ZQeWF7)fV;LQUAfPnE+ zeFRhy`*lUk^Vj4v_J{|h3FJSOHvtf-0eBGrogpBFZDXnrTd-cI8nD;yuP!i)_W;8xH1P@hs0L`YT0ga@JrA!f32+54CqB{h zfS#aZ04Twl0=jm*4J^!CfL@Fhu*ns`?D$#$4tAw3Xo-hB?7~`MfZYIKx^M;psUmPK z@Q_C}(4!CrOcBkMbzP0Ze+FO_IKMV`3MLc0pU~&Qqf4|6X7F0uT-)RZ?q>LhsbKod z20EP+_|ehM$tAO^P6&MPB?4b0XHTC#cI z;715JnaC4pl6b&E5GZUQThPFK*9Fw+Jb`HXYXOB-gKSx!ffs#XApmd}U`ztIwm6f| zN(rb#rQIX|TUt^4pu6Az*#tl_0xaXNE;8nKAp{hKJ(aEJ^JD<809}K90<^8~1Nci% zsCR9^slj;Qv|g>peBd|%yaIR~@b}zNc{DmP_o35;s_AEEDj!I?--S&4tqV9K=R|3O z>40Ga{y+0od@keJ1r;9z)@y+x&%OAe?x_!mIsoD&P{oIUb#utF0F3Xca2+46fo>H* z@l55PsQ7&VGM=gUM8yYdFfs}%z9&17B*PFOk64+RKYGflc&0Ar{B=+Pk2uXk{muF` z?!~8JK*k$DH!nU30*`1V9V&gmiw^^szyC#)pdt39Q(FK8bko zA`Hj`O1+HrS;&ho!+=bnG&2ewU-+iihBeo&N@6e8m;w%s1MJBv3%NIwJAmo|v%)Qa zGarC>1gK6HptnNi0$km{`nKu9On$RB9R5S6P6^;7c*s80@iw62IXzFQaC;Dsfc(cd zUspAJ*o}3(1(`Lu~H&17{qb3PQXK0O5evS zz5?{M)d*O55Sa{|vDUw@0P5pTHE}p!WY~j^2T^2dfUykJ1s9jG27CF&{U|2@K9v(G z1egp6xCZx92EdIM4oCpHFc=G%45$lmc7xLo0@2idGr$H3WK;tSXwJYIg{;dV9)Zs_ zATWdBnC1YGfGpz7*9H&`fHRSnDFK*?0H`AB|CFo!W})BP63DvOmgQ8Q$s-!ZKjnT< z2hc+QV>oPMdszce1gIpgg@`7S{J0j-sq03oU}V!Z07*qoM6N<$ EfEamT(fRg>AtM6=50k?0 l>DRtW$ShHxq~iJO5<~p4A6c#%^TI(IJYD@<);T3K0RRNb7Iy#u literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/unused_1/1.png b/data/tilesets/secondary/unused_1/1.png new file mode 100644 index 0000000000000000000000000000000000000000..bea921d90e42ea862d1fed110fd4913482f3d34a GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^91ILh3@ktfLwv-1As{8|>EamT(fRg>AtM6=50k?0 l>DRtW$ShHxq~iJO5<~p4A6c#%^TI(IJYD@<);T3K0RRNb7Iy#u literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/unused_1/2.png b/data/tilesets/secondary/unused_1/2.png new file mode 100644 index 0000000000000000000000000000000000000000..16652df19896a91d715ed5047610e1350fa210b1 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^91ILh3@ktfLwv-1As}Vw>EamT(fRg>BQJx30L#YB z8!UEAY^cw7IKdcV0}gaKh%Xnmb}_7&7rF#-*j8*I$;UjmbyK49cxh}iLm(O5V8P?bY3zgD>T8e44-c+xf#7`NJ6b!*Awq zoKn}Wy4(C+TkO{`n6KAU_~%YI`Q@U9$e%|3n8N#8y}?f2Ufmzh-%j42=I@w)$NW3y n-!cFG!TkH+l6Nk7<9Z37meuh-l$2BE00000NkvXXu0mjfNMW|J literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/unused_1/tiles.png b/data/tilesets/secondary/unused_1/tiles.png index 0a35187c84f385747b4fb6ec1abfcaf48f7b92e4..3ae8bce428c75a3cdbffacdbabd4dfb686fff395 100644 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^96;Q`0wfr$R3!R_ ZWMGI{{ZHWgBApo^b)K$%F6*2UngA<}5!e6# literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fw0wfsh4j&B#QsSO2jv*Gk$v^xR6C_L%A|wpB c+!zHI7~JLl3AE~-WCbbpboFyt=akR{0B0EyNdN!< diff --git a/data/tilesets/secondary/unused_2/0.png b/data/tilesets/secondary/unused_2/0.png new file mode 100644 index 0000000000000000000000000000000000000000..2895d3319a5c35f73a524731a21caa8f30647a0b GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^96&6<0wfqt3-&AkQU;zbjv*W~Q;#?bGAMAk9-RN} zBEvDZ8xB6NA567fb3mY_Trp?bZZDP-yCUr6?^^w2NRXB}w|H{pe~=lTu6{1-oD!M< Dhh!kZ literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/unused_2/1.png b/data/tilesets/secondary/unused_2/1.png new file mode 100644 index 0000000000000000000000000000000000000000..63c22acf2b98595cf3a22b7d9dfdf18fc3847c02 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96&6=0wfsJo%qfIDKk$O#}JO0y+<|*GAM8`AMlYj zQ;@FM(V(ukI_UO~qs=BwQ^J|v>QP)Fxg(8ia(%t8*a0b*vkih2%*SeG2(b!l0+f|;SVN85&t)#oF~7*AI}mvv4F FO#lvr8~XqN literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/unused_2/3.png b/data/tilesets/secondary/unused_2/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad81b1e1e9daf31260a661bd436367997d4f31c GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDFaUz#}JO0$sDXqY$}IzMLm`* zUDTl{n7Kp6p+#G-)5OQ{dcX|Xl?q{5S`#=9hp;nbt=1OT^vItMGQ-o=&t;ucLK6Uu C+!_4< literal 0 HcmV?d00001 diff --git a/data/tilesets/secondary/unused_2/tiles.png b/data/tilesets/secondary/unused_2/tiles.png index b9c594303003c71800bd7a8b4768812e6ef80832..2ab3b63d6b5e07e348c729d633361b9024575f14 100644 GIT binary patch literal 979 zcmV;^11$WBP)NToT%#MO;XiCH^PjI&OQvO?_@+VX#D;5$CCEIgZpp5}#3! z21&SdCUt`(j!8sKShE4X{qwkF!n8q)xF9a`=P~;${bxdRg&fewa6#^43PU{i5QYiN zd%2I9_b_=k1@oTG@1;a*nP93PCf8CJ`^8>@+-4eH02c$5C>u~L6R7NF8j{5_@srb_ z^+`$S;YVNS`U77;jPdOQP^YTD0ZNA`_Lq-hO=hoJDO;6-in&?kW;NC#h9u%~7d8D< znWh?Wvj-Iry?!79!uZAPtg%rsRcusD6&n>NT{)l%paLoY0*VNT+20X=FC3zWRddQ8 z>ZCPwwi~1^b+#L>Ep;|OTk33n$V`v83R2KlOcPy{u^Kxgja8E@-pZ0VuAxU=psaQmJIcjn4N!ehr1+6;t5qx5#GX0Ayy<1#K2P0L2v- z%znlHvdE7Yz;5(_Y*hpUXg-neklL|002ovPDHLkV1k-B B&G7&L literal 864 zcmV-m1E2hfP)5(qmRY zQfvqGmek2T#)7`%z&H*DmuhUlxdFhI4_mS;^o1c!e*g~!$T1J2nZYnq5InJDqTq~98{xBf4&^w?89Opyp zrgq5rhTj?jHkpi>Z7ySVG_VL@o%5CYZ)@QE2LW#z=ZEz5M#CCtst)Q+1=OwAp!w|{ z*d<`?5%_{lp`+}`n6Lbi(FwyYV^zYtoFktc&@L3}Cwd2_Ky&Af<17^F&F?vZvmI6} zvO?o*mv&*Tkpg}RI?8j?XmNVJ(gxA43ix-i{rK-&e>$03ABbzlJKQ;4Y04I|ltn**rQ6uJN;ln037&?SH#X*qxh zEuaAx03Z`U+XVoTtANNg0<>K~Z5Oksb`e#C^%MYvu>!(44?qh@3kg7od;lJkF#&Wr z8vy!4HB^N$H9#$70>iI25#nl&yXtcufTjRIH8dW;mkh@!;7QKxKrc$xVq9S+ki6=i z0bp)6fJiMILA(cd9?%O zj>;7RvWg|}_5PQr4wzg-6M?N_vG@uY0^_#Pco*mwngrAZRPLx;F)4lpULc@dNK>Zq qf&ifkMUt%n{cZgJfaJc<3;Y9-xn7ZJ)LXp(0000 Date: Mon, 2 Oct 2017 21:08:54 -0400 Subject: [PATCH 081/182] Decompile data/tileset.s --- data/tileset.s | 707 -------------------------------------------- ld_script.txt | 1 - src/tileset_anims.c | 616 +++++++++++++++++++++++++++++++++++--- 3 files changed, 581 insertions(+), 743 deletions(-) delete mode 100644 data/tileset.s diff --git a/data/tileset.s b/data/tileset.s deleted file mode 100644 index 0ca02d41c1..0000000000 --- a/data/tileset.s +++ /dev/null @@ -1,707 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_085105C4:: - .incbin "data/tilesets/primary/general/anim/0/1.4bpp" - -gUnknown_08510644:: - .incbin "data/tilesets/primary/general/anim/0/0.4bpp" - -gUnknown_085106C4:: - .incbin "data/tilesets/primary/general/anim/0/2.4bpp" - - .space 0x20 - -gTilesetAnims_General0:: @ 8510764 - .4byte gUnknown_08510644 - .4byte gUnknown_085105C4 - .4byte gUnknown_08510644 - .4byte gUnknown_085106C4 - -gUnknown_08510774:: - .incbin "data/tilesets/primary/general/anim/1/0.4bpp" - -gUnknown_08510B34:: - .incbin "data/tilesets/primary/general/anim/1/1.4bpp" - -gUnknown_08510EF4:: - .incbin "data/tilesets/primary/general/anim/1/2.4bpp" - -gUnknown_085112B4:: - .incbin "data/tilesets/primary/general/anim/1/3.4bpp" - -gUnknown_08511674:: - .incbin "data/tilesets/primary/general/anim/1/4.4bpp" - -gUnknown_08511A34:: - .incbin "data/tilesets/primary/general/anim/1/5.4bpp" - -gUnknown_08511DF4:: - .incbin "data/tilesets/primary/general/anim/1/6.4bpp" - -gUnknown_085121B4:: - .incbin "data/tilesets/primary/general/anim/1/7.4bpp" - - -gTilesetAnims_General1:: @ 8512574 - .4byte gUnknown_08510774 - .4byte gUnknown_08510B34 - .4byte gUnknown_08510EF4 - .4byte gUnknown_085112B4 - .4byte gUnknown_08511674 - .4byte gUnknown_08511A34 - .4byte gUnknown_08511DF4 - .4byte gUnknown_085121B4 - -gUnknown_08512594:: - .incbin "data/tilesets/primary/general/anim/2/0.4bpp" - -gUnknown_085126D4:: - .incbin "data/tilesets/primary/general/anim/2/1.4bpp" - -gUnknown_08512814:: - .incbin "data/tilesets/primary/general/anim/2/2.4bpp" - -gUnknown_08512954:: - .incbin "data/tilesets/primary/general/anim/2/3.4bpp" - -gUnknown_08512A94:: - .incbin "data/tilesets/primary/general/anim/2/4.4bpp" - -gUnknown_08512BD4:: - .incbin "data/tilesets/primary/general/anim/2/5.4bpp" - -gUnknown_08512D14:: - .incbin "data/tilesets/primary/general/anim/2/6.4bpp" - - -gTilesetAnims_General2:: @ 8512E54 - .4byte gUnknown_08512594 - .4byte gUnknown_085126D4 - .4byte gUnknown_08512814 - .4byte gUnknown_08512954 - .4byte gUnknown_08512A94 - .4byte gUnknown_08512BD4 - .4byte gUnknown_08512D14 - .4byte gUnknown_08512594 - -gUnknown_08512E74:: - .incbin "data/tilesets/primary/general/anim/3/0.4bpp" - -gUnknown_08512F34:: - .incbin "data/tilesets/primary/general/anim/3/1.4bpp" - -gUnknown_08512FF4:: - .incbin "data/tilesets/primary/general/anim/3/2.4bpp" - -gUnknown_085130B4:: - .incbin "data/tilesets/primary/general/anim/3/3.4bpp" - - -gTilesetAnims_General3:: @ 8513174 - .4byte gUnknown_08512E74 - .4byte gUnknown_08512F34 - .4byte gUnknown_08512FF4 - .4byte gUnknown_085130B4 - -gUnknown_08513184:: - .incbin "data/tilesets/primary/general/anim/4/0.4bpp" - -gUnknown_085132C4:: - .incbin "data/tilesets/primary/general/anim/4/1.4bpp" - -gUnknown_08513404:: - .incbin "data/tilesets/primary/general/anim/4/2.4bpp" - -gUnknown_08513544:: - .incbin "data/tilesets/primary/general/anim/4/3.4bpp" - - -gTilesetAnims_General4:: @ 8513684 - .4byte gUnknown_08513184 - .4byte gUnknown_085132C4 - .4byte gUnknown_08513404 - .4byte gUnknown_08513544 - -gUnknown_08513694:: - .incbin "data/tilesets/secondary/lavaridge/anim/0.4bpp" - -gUnknown_08513714:: - .incbin "data/tilesets/secondary/lavaridge/anim/1.4bpp" - -gUnknown_08513794:: - .incbin "data/tilesets/secondary/lavaridge/anim/2.4bpp" - -gUnknown_08513814:: - .incbin "data/tilesets/secondary/lavaridge/anim/3.4bpp" - - -gTilesetAnims_Lavaridge0:: @ 8513894 - .4byte gUnknown_08513694 - .4byte gUnknown_08513714 - .4byte gUnknown_08513794 - .4byte gUnknown_08513814 - -gUnknown_085138A4:: - .incbin "data/tilesets/secondary/pacifidlog/anim/0/0.4bpp" - -gUnknown_08513C64:: - .incbin "data/tilesets/secondary/pacifidlog/anim/0/1.4bpp" - -gUnknown_08514024:: - .incbin "data/tilesets/secondary/pacifidlog/anim/0/2.4bpp" - - -gTilesetAnims_Pacifidlog0:: @ 85143E4 - .4byte gUnknown_085138A4 - .4byte gUnknown_08513C64 - .4byte gUnknown_08514024 - .4byte gUnknown_08513C64 - -gUnknown_085143F4:: - .incbin "data/tilesets/secondary/underwater/anim/0.4bpp" - -gUnknown_08514474:: - .incbin "data/tilesets/secondary/underwater/anim/1.4bpp" - -gUnknown_085144F4:: - .incbin "data/tilesets/secondary/underwater/anim/2.4bpp" - -gUnknown_08514574:: - .incbin "data/tilesets/secondary/underwater/anim/3.4bpp" - - -gTilesetAnims_Underwater0:: @ 85145F4 - .4byte gUnknown_085143F4 - .4byte gUnknown_08514474 - .4byte gUnknown_085144F4 - .4byte gUnknown_08514574 - -gUnknown_08514604:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/0.4bpp" - -gUnknown_08514704:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/1.4bpp" - -gUnknown_08514804:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/2.4bpp" - -gUnknown_08514904:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/3.4bpp" - -gUnknown_08514A04:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/4.4bpp" - -gUnknown_08514B04:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/5.4bpp" - -gUnknown_08514C04:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/6.4bpp" - -gUnknown_08514D04:: - .incbin "data/tilesets/secondary/pacifidlog/anim/1/7.4bpp" - - -gTilesetAnims_Pacifidlog1:: @ 8514E04 - .4byte gUnknown_08514604 - .4byte gUnknown_08514704 - .4byte gUnknown_08514804 - .4byte gUnknown_08514904 - .4byte gUnknown_08514A04 - .4byte gUnknown_08514B04 - .4byte gUnknown_08514C04 - .4byte gUnknown_08514D04 - -gUnknown_08514E24:: - .incbin "data/tilesets/secondary/mauville/anim/0/a/0.4bpp" - -gUnknown_08514EA4:: - .incbin "data/tilesets/secondary/mauville/anim/0/a/1.4bpp" - -gUnknown_08514F24:: - .incbin "data/tilesets/secondary/mauville/anim/0/a/2.4bpp" - -gUnknown_08514FA4:: - .incbin "data/tilesets/secondary/mauville/anim/0/a/3.4bpp" - -gUnknown_08515024:: - .incbin "data/tilesets/secondary/mauville/anim/1/a/1.4bpp" - -gUnknown_085150A4:: - .incbin "data/tilesets/secondary/mauville/anim/0/b/0.4bpp" - -gUnknown_08515124:: - .incbin "data/tilesets/secondary/mauville/anim/0/b/1.4bpp" - -gUnknown_085151A4:: - .incbin "data/tilesets/secondary/mauville/anim/0/b/2.4bpp" - -gUnknown_08515224:: - .incbin "data/tilesets/secondary/mauville/anim/0/b/3.4bpp" - -gUnknown_085152A4:: - .incbin "data/tilesets/secondary/mauville/anim/1/b/1.4bpp" - - .space 0x20 - -gTilesetAnims_MauvilleVDests0:: @ 8515344 - .4byte BG_VRAM + 0x4c00 - .4byte BG_VRAM + 0x4c80 - .4byte BG_VRAM + 0x4d00 - .4byte BG_VRAM + 0x4d80 - .4byte BG_VRAM + 0x4e00 - .4byte BG_VRAM + 0x4e80 - .4byte BG_VRAM + 0x4f00 - .4byte BG_VRAM + 0x4f80 - -gTilesetAnims_MauvilleVDests1:: @ 8515364 - .4byte BG_VRAM + 0x5000 - .4byte BG_VRAM + 0x5080 - .4byte BG_VRAM + 0x5100 - .4byte BG_VRAM + 0x5180 - .4byte BG_VRAM + 0x5200 - .4byte BG_VRAM + 0x5280 - .4byte BG_VRAM + 0x5300 - .4byte BG_VRAM + 0x5380 - -gTilesetAnims_Mauville0a:: @ 8515384 - .4byte gUnknown_08514E24 - .4byte gUnknown_08514E24 - .4byte gUnknown_08514EA4 - .4byte gUnknown_08514F24 - .4byte gUnknown_08514FA4 - .4byte gUnknown_08514FA4 - .4byte gUnknown_08514FA4 - .4byte gUnknown_08514FA4 - .4byte gUnknown_08514FA4 - .4byte gUnknown_08514FA4 - .4byte gUnknown_08514F24 - .4byte gUnknown_08514EA4 - -gTilesetAnims_Mauville0b:: @ 85153B4 - .4byte gUnknown_085150A4 - .4byte gUnknown_085150A4 - .4byte gUnknown_08515124 - .4byte gUnknown_085151A4 - .4byte gUnknown_08515224 - .4byte gUnknown_08515224 - .4byte gUnknown_08515224 - .4byte gUnknown_08515224 - .4byte gUnknown_08515224 - .4byte gUnknown_08515224 - .4byte gUnknown_085151A4 - .4byte gUnknown_08515124 - -gTilesetAnims_Mauville1a:: @ 85153E4 - .4byte gUnknown_08514E24 - .4byte gUnknown_08514E24 - .4byte gUnknown_08515024 - .4byte gUnknown_08515024 - -gTilesetAnims_Mauville1b:: @ 85153F4 - .4byte gUnknown_085150A4 - .4byte gUnknown_085150A4 - .4byte gUnknown_085152A4 - .4byte gUnknown_085152A4 - -gUnknown_08515404:: - .incbin "data/tilesets/secondary/rustboro/anim/0/0.4bpp" - -gUnknown_08515484:: - .incbin "data/tilesets/secondary/rustboro/anim/0/1.4bpp" - -gUnknown_08515504:: - .incbin "data/tilesets/secondary/rustboro/anim/0/2.4bpp" - -gUnknown_08515584:: - .incbin "data/tilesets/secondary/rustboro/anim/0/3.4bpp" - -gUnknown_08515604:: - .incbin "data/tilesets/secondary/rustboro/anim/0/4.4bpp" - -gUnknown_08515684:: - .incbin "data/tilesets/secondary/rustboro/anim/0/5.4bpp" - -gUnknown_08515704:: - .incbin "data/tilesets/secondary/rustboro/anim/0/6.4bpp" - -gUnknown_08515784:: - .incbin "data/tilesets/secondary/rustboro/anim/0/7.4bpp" - - -gTilesetAnims_RustboroVDests0:: @ 8515804 - .4byte BG_VRAM + 0x5000 - .4byte BG_VRAM + 0x5080 - .4byte BG_VRAM + 0x5100 - .4byte BG_VRAM + 0x5180 - .4byte BG_VRAM + 0x5200 - .4byte BG_VRAM + 0x5280 - .4byte BG_VRAM + 0x5300 - .4byte BG_VRAM + 0x5380 - -gTilesetAnims_Rustboro0:: @ 8515824 - .4byte gUnknown_08515404 - .4byte gUnknown_08515484 - .4byte gUnknown_08515504 - .4byte gUnknown_08515584 - .4byte gUnknown_08515604 - .4byte gUnknown_08515684 - .4byte gUnknown_08515704 - .4byte gUnknown_08515784 - -gUnknown_08515844:: - .incbin "data/tilesets/secondary/rustboro/anim/1/0.4bpp" - -gUnknown_085158C4:: - .incbin "data/tilesets/secondary/rustboro/anim/1/1.4bpp" - - .space 0x20 - - -gTilesetAnims_Rustboro1:: @ 8515964 - .4byte gUnknown_08515844 - .4byte gUnknown_085158C4 - -gUnknown_0851596C:: - .incbin "data/tilesets/secondary/cave/anim/0.4bpp" - -gUnknown_085159EC:: - .incbin "data/tilesets/secondary/cave/anim/1.4bpp" - -gUnknown_08515A6C:: - .incbin "data/tilesets/secondary/cave/anim/2.4bpp" - -gUnknown_08515AEC:: - .incbin "data/tilesets/secondary/cave/anim/3.4bpp" - -gUnknown_08515B6C:: - .incbin "data/tilesets/secondary/cave/anim/unused/0.4bpp" - -gUnknown_08515BEC:: - .incbin "data/tilesets/secondary/cave/anim/unused/1.4bpp" - -gUnknown_08515C6C:: - .incbin "data/tilesets/secondary/cave/anim/unused/2.4bpp" - -gUnknown_08515CEC:: - .incbin "data/tilesets/secondary/cave/anim/unused/3.4bpp" - - .space 0x20 - - -gTilesetAnims_Lavaridge1_Cave0:: @ 8515D8C - .4byte gUnknown_0851596C - .4byte gUnknown_085159EC - .4byte gUnknown_08515A6C - .4byte gUnknown_08515AEC - -gUnknown_08515D9C:: - .incbin "data/tilesets/secondary/ever_grande/anim/0.4bpp" - -gUnknown_08515E1C:: - .incbin "data/tilesets/secondary/ever_grande/anim/1.4bpp" - -gUnknown_08515E9C:: - .incbin "data/tilesets/secondary/ever_grande/anim/2.4bpp" - -gUnknown_08515F1C:: - .incbin "data/tilesets/secondary/ever_grande/anim/3.4bpp" - -gUnknown_08515F9C:: - .incbin "data/tilesets/secondary/ever_grande/anim/4.4bpp" - -gUnknown_0851601C:: - .incbin "data/tilesets/secondary/ever_grande/anim/5.4bpp" - -gUnknown_0851609C:: - .incbin "data/tilesets/secondary/ever_grande/anim/6.4bpp" - -gUnknown_0851611C:: - .incbin "data/tilesets/secondary/ever_grande/anim/7.4bpp" - - .space 0x20 - - -gTilesetAnims_EverGrandeVDests0:: @ 85161BC - .4byte BG_VRAM + 0x5c00 - .4byte BG_VRAM + 0x5c80 - .4byte BG_VRAM + 0x5d00 - .4byte BG_VRAM + 0x5d80 - .4byte BG_VRAM + 0x5e00 - .4byte BG_VRAM + 0x5e80 - .4byte BG_VRAM + 0x5f00 - .4byte BG_VRAM + 0x5f80 - -gTilesetAnims_EverGrande0:: @ 85161DC - .4byte gUnknown_08515D9C - .4byte gUnknown_08515E1C - .4byte gUnknown_08515E9C - .4byte gUnknown_08515F1C - .4byte gUnknown_08515F9C - .4byte gUnknown_0851601C - .4byte gUnknown_0851609C - .4byte gUnknown_0851611C - -gUnknown_085161FC:: - .incbin "data/tilesets/secondary/dewford/anim/0.4bpp" - -gUnknown_085162BC:: - .incbin "data/tilesets/secondary/dewford/anim/1.4bpp" - -gUnknown_0851637C:: - .incbin "data/tilesets/secondary/dewford/anim/2.4bpp" - -gUnknown_0851643C:: - .incbin "data/tilesets/secondary/dewford/anim/3.4bpp" - - -gTilesetAnims_Dewford0:: @ 85164FC - .4byte gUnknown_085161FC - .4byte gUnknown_085162BC - .4byte gUnknown_0851637C - .4byte gUnknown_0851643C - -gUnknown_0851650C:: - .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/0.4bpp" - -gUnknown_085165CC:: - .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/1.4bpp" - -gUnknown_0851668C:: - .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/2.4bpp" - -gUnknown_0851674C:: - .incbin "data/tilesets/secondary/battle_frontier_outside_west/anim/3.4bpp" - - -gTilesetAnims_BattleFrontierOutsideWest0:: @ 851680C - .4byte gUnknown_0851650C - .4byte gUnknown_085165CC - .4byte gUnknown_0851668C - .4byte gUnknown_0851674C - -gUnknown_0851681C:: @ 851680C - .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/0.4bpp" - -gUnknown_085168DC:: - .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/1.4bpp" - -gUnknown_0851699C:: - .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/2.4bpp" - -gUnknown_08516A5C:: - .incbin "data/tilesets/secondary/battle_frontier_outside_east/anim/3.4bpp" - - -gTilesetAnims_BattleFrontierOutsideEast0:: @ 8516B1C - .4byte gUnknown_0851681C - .4byte gUnknown_085168DC - .4byte gUnknown_0851699C - .4byte gUnknown_08516A5C - -gUnknown_08516B2C:: - .incbin "data/tilesets/secondary/slateport/anim/0.4bpp" - -gUnknown_08516BAC:: - .incbin "data/tilesets/secondary/slateport/anim/1.4bpp" - -gUnknown_08516C2C:: - .incbin "data/tilesets/secondary/slateport/anim/2.4bpp" - -gUnknown_08516CAC:: - .incbin "data/tilesets/secondary/slateport/anim/3.4bpp" - - -gTilesetAnims_Slateport0:: @ 8516D2C - .4byte gUnknown_08516B2C - .4byte gUnknown_08516BAC - .4byte gUnknown_08516C2C - .4byte gUnknown_08516CAC - -gUnknown_08516D3C:: - .incbin "data/tilesets/primary/building/anim/0.4bpp" - -gUnknown_08516DBC:: - .incbin "data/tilesets/primary/building/anim/1.4bpp" - - -gTilesetAnims_InsideBuilding0:: @ 8516E3C - .4byte gUnknown_08516D3C - .4byte gUnknown_08516DBC - -gUnknown_08516E44:: - .incbin "data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp" - -gUnknown_08516FC4:: - .incbin "data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp" - -gUnknown_08517144:: - .incbin "data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp" - -gUnknown_085172C4:: - .incbin "data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp" - -gUnknown_08517544:: - .incbin "data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp" - -gUnknown_085177C4:: - .incbin "data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp" - - -gTilesetAnims_SootopolisGym0:: @ 8517A44 - .4byte gUnknown_08516E44 - .4byte gUnknown_08516FC4 - .4byte gUnknown_08517144 - -gTilesetAnims_SootopolisGym1:: @ 8517A50 - .4byte gUnknown_085172C4 - .4byte gUnknown_08517544 - .4byte gUnknown_085177C4 - -gUnknown_08517A5C:: - .incbin "data/tilesets/secondary/elite_four/anim/1/0.4bpp" - -gUnknown_08517ADC:: - .incbin "data/tilesets/secondary/elite_four/anim/1/1.4bpp" - -gUnknown_08517B5C:: - .incbin "data/tilesets/secondary/elite_four/anim/0/0.4bpp" - -gUnknown_08517B7C:: - .incbin "data/tilesets/secondary/elite_four/anim/0/1.4bpp" - -gUnknown_08517B9C:: - .incbin "data/tilesets/secondary/elite_four/anim/0/2.4bpp" - -gUnknown_08517BBC:: - .incbin "data/tilesets/secondary/elite_four/anim/0/3.4bpp" - - .space 0x20 - - -gTilesetAnims_EliteFour1:: @ 8517BFC - .4byte gUnknown_08517B5C - .4byte gUnknown_08517B7C - .4byte gUnknown_08517B9C - .4byte gUnknown_08517BBC - -gTilesetAnims_EliteFour0:: @ 8517C0C - .4byte gUnknown_08517A5C - .4byte gUnknown_08517ADC - -gUnknown_08517C14:: - .incbin "data/tilesets/secondary/mauville_gym/anim/0.4bpp" - -gUnknown_08517E14:: - .incbin "data/tilesets/secondary/mauville_gym/anim/1.4bpp" - - .space 0x20 - - -gTilesetAnims_MauvilleGym0:: @ 8518034 - .4byte gUnknown_08517C14 - .4byte gUnknown_08517E14 - -gUnknown_0851803C:: - .incbin "data/tilesets/secondary/bike_shop/anim/0.4bpp" - -gUnknown_0851815C:: - .incbin "data/tilesets/secondary/bike_shop/anim/1.4bpp" - - .space 0x20 - -gTilesetAnims_BikeShop0:: @ 851829C - .4byte gUnknown_0851803C - .4byte gUnknown_0851815C - -gUnknown_085182A4:: - .incbin "data/tilesets/secondary/sootopolis/anim/0.4bpp" - -gUnknown_08518EA4:: - .incbin "data/tilesets/secondary/sootopolis/anim/1.4bpp" - -gUnknown_08519AA4:: - .incbin "data/tilesets/secondary/sootopolis/anim/2.4bpp" - -gUnknown_0851A6A4:: - .incbin "data/tilesets/secondary/sootopolis/anim/3.4bpp" - -gUnknown_0851B2A4:: - .incbin "data/tilesets/secondary/sootopolis/anim/4.4bpp" - -gUnknown_0851BEA4:: - .incbin "data/tilesets/secondary/sootopolis/anim/5.4bpp" - -gUnknown_0851CAA4:: - .incbin "data/tilesets/secondary/sootopolis/anim/6.4bpp" - -gUnknown_0851D6A4:: - .incbin "data/tilesets/secondary/sootopolis/anim/7.4bpp" - - .space 0x20 - -gUnknown_0851E2C4:: - .incbin "data/tilesets/secondary/unused_1/0.4bpp" - -gUnknown_0851EAC4:: - .incbin "data/tilesets/secondary/unused_1/1.4bpp" - -gUnknown_0851F2C4:: - .incbin "data/tilesets/secondary/unused_1/2.4bpp" - -gUnknown_0851FAC4:: - .incbin "data/tilesets/secondary/unused_1/3.4bpp" - -gTilesetAnims_Sootopolis0:: @ 85202C4 - .4byte gUnknown_085182A4 - .4byte gUnknown_08518EA4 - .4byte gUnknown_08519AA4 - .4byte gUnknown_0851A6A4 - .4byte gUnknown_0851B2A4 - .4byte gUnknown_0851BEA4 - .4byte gUnknown_0851CAA4 - .4byte gUnknown_0851D6A4 - -gUnknown_085202E4:: - .incbin "data/tilesets/secondary/battle_pyramid/anim/0/0.4bpp" - -gUnknown_085203E4:: - .incbin "data/tilesets/secondary/battle_pyramid/anim/0/1.4bpp" - -gUnknown_085204E4:: - .incbin "data/tilesets/secondary/battle_pyramid/anim/0/2.4bpp" - - .space 0x20 - -gUnknown_08520604:: - .incbin "data/tilesets/secondary/battle_pyramid/anim/1/0.4bpp" - -gUnknown_08520704:: - .incbin "data/tilesets/secondary/battle_pyramid/anim/1/1.4bpp" - -gUnknown_08520804:: - .incbin "data/tilesets/secondary/battle_pyramid/anim/1/2.4bpp" - - .space 0x3d00 - -gUnknown_08524604:: - .incbin "data/tilesets/secondary/unused_2/0.4bpp" - - .space 0x1c0 - -gUnknown_08524804:: - .incbin "data/tilesets/secondary/unused_2/1.4bpp" - -gTilesetAnims_BattlePyramid0:: @ 8524864 - .4byte gUnknown_085202E4 - .4byte gUnknown_085203E4 - .4byte gUnknown_085204E4 - -gTilesetAnims_BattlePyramid1:: @ 8524870 - .4byte gUnknown_08520604 - .4byte gUnknown_08520704 - .4byte gUnknown_08520804 - diff --git a/ld_script.txt b/ld_script.txt index 2ab0f780bd..fcd3af3d48 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -356,7 +356,6 @@ SECTIONS { data/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); data/start_menu.o(.rodata); - data/tileset.o(.rodata); src/tileset_anims.o(.rodata); src/palette.o(.rodata); data/fanfares.o(.rodata); diff --git a/src/tileset_anims.c b/src/tileset_anims.c index b7f18d869e..e53461e02e 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -31,41 +31,587 @@ static void cur_mapheader_run_tileset2_func(void); // .rodata -extern const u16 *const gTilesetAnims_General0[]; -extern const u16 *const gTilesetAnims_General1[]; -extern const u16 *const gTilesetAnims_General2[]; -extern const u16 *const gTilesetAnims_General3[]; -extern const u16 *const gTilesetAnims_General4[]; -extern const u16 *const gTilesetAnims_Lavaridge0[]; -extern const u16 *const gTilesetAnims_Pacifidlog0[]; -extern const u16 *const gTilesetAnims_Underwater0[]; -extern const u16 *const gTilesetAnims_Pacifidlog1[]; -extern u16 *const gTilesetAnims_MauvilleVDests0[]; -extern u16 *const gTilesetAnims_MauvilleVDests1[]; -extern const u16 *const gTilesetAnims_Mauville0a[]; -extern const u16 *const gTilesetAnims_Mauville0b[]; -extern const u16 *const gTilesetAnims_Mauville1a[]; -extern const u16 *const gTilesetAnims_Mauville1b[]; -extern u16 *const gTilesetAnims_RustboroVDests0[]; -extern const u16 *const gTilesetAnims_Rustboro0[]; -extern const u16 *const gTilesetAnims_Rustboro1[]; -extern const u16 *const gTilesetAnims_Lavaridge1_Cave0[]; -extern u16 *const gTilesetAnims_EverGrandeVDests0[]; -extern const u16 *const gTilesetAnims_EverGrande0[]; -extern const u16 *const gTilesetAnims_Dewford0[]; -extern const u16 *const gTilesetAnims_BattleFrontierOutsideWest0[]; -extern const u16 *const gTilesetAnims_BattleFrontierOutsideEast0[]; -extern const u16 *const gTilesetAnims_Slateport0[]; -extern const u16 *const gTilesetAnims_InsideBuilding0[]; -extern const u16 *const gTilesetAnims_SootopolisGym0[]; -extern const u16 *const gTilesetAnims_SootopolisGym1[]; -extern const u16 *const gTilesetAnims_EliteFour1[]; -extern const u16 *const gTilesetAnims_EliteFour0[]; -extern const u16 *const gTilesetAnims_MauvilleGym0[]; -extern const u16 *const gTilesetAnims_BikeShop0[]; -extern const u16 *const gTilesetAnims_Sootopolis0[]; -extern const u16 *const gTilesetAnims_BattlePyramid0[]; -extern const u16 *const gTilesetAnims_BattlePyramid1[]; + +const u16 gUnknown_085105C4[] = INCBIN_U16("data/tilesets/primary/general/anim/0/1.4bpp"); + +const u16 gUnknown_08510644[] = INCBIN_U16("data/tilesets/primary/general/anim/0/0.4bpp"); + +const u16 gUnknown_085106C4[] = INCBIN_U16("data/tilesets/primary/general/anim/0/2.4bpp"); + +const u16 tileset_anims_space_0[16] = {}; + +const u16 *const gTilesetAnims_General0[] = { + gUnknown_08510644, + gUnknown_085105C4, + gUnknown_08510644, + gUnknown_085106C4 +}; + +const u16 gUnknown_08510774[] = INCBIN_U16("data/tilesets/primary/general/anim/1/0.4bpp"); + +const u16 gUnknown_08510B34[] = INCBIN_U16("data/tilesets/primary/general/anim/1/1.4bpp"); + +const u16 gUnknown_08510EF4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/2.4bpp"); + +const u16 gUnknown_085112B4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/3.4bpp"); + +const u16 gUnknown_08511674[] = INCBIN_U16("data/tilesets/primary/general/anim/1/4.4bpp"); + +const u16 gUnknown_08511A34[] = INCBIN_U16("data/tilesets/primary/general/anim/1/5.4bpp"); + +const u16 gUnknown_08511DF4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/6.4bpp"); + +const u16 gUnknown_085121B4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/7.4bpp"); + +const u16 *const gTilesetAnims_General1[] = { + gUnknown_08510774, + gUnknown_08510B34, + gUnknown_08510EF4, + gUnknown_085112B4, + gUnknown_08511674, + gUnknown_08511A34, + gUnknown_08511DF4, + gUnknown_085121B4 +}; + +const u16 gUnknown_08512594[] = INCBIN_U16("data/tilesets/primary/general/anim/2/0.4bpp"); + +const u16 gUnknown_085126D4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/1.4bpp"); + +const u16 gUnknown_08512814[] = INCBIN_U16("data/tilesets/primary/general/anim/2/2.4bpp"); + +const u16 gUnknown_08512954[] = INCBIN_U16("data/tilesets/primary/general/anim/2/3.4bpp"); + +const u16 gUnknown_08512A94[] = INCBIN_U16("data/tilesets/primary/general/anim/2/4.4bpp"); + +const u16 gUnknown_08512BD4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/5.4bpp"); + +const u16 gUnknown_08512D14[] = INCBIN_U16("data/tilesets/primary/general/anim/2/6.4bpp"); + +const u16 *const gTilesetAnims_General2[] = { + gUnknown_08512594, + gUnknown_085126D4, + gUnknown_08512814, + gUnknown_08512954, + gUnknown_08512A94, + gUnknown_08512BD4, + gUnknown_08512D14, + gUnknown_08512594 +}; + +const u16 gUnknown_08512E74[] = INCBIN_U16("data/tilesets/primary/general/anim/3/0.4bpp"); + +const u16 gUnknown_08512F34[] = INCBIN_U16("data/tilesets/primary/general/anim/3/1.4bpp"); + +const u16 gUnknown_08512FF4[] = INCBIN_U16("data/tilesets/primary/general/anim/3/2.4bpp"); + +const u16 gUnknown_085130B4[] = INCBIN_U16("data/tilesets/primary/general/anim/3/3.4bpp"); + +const u16 *const gTilesetAnims_General3[] = { + gUnknown_08512E74, + gUnknown_08512F34, + gUnknown_08512FF4, + gUnknown_085130B4 +}; + +const u16 gUnknown_08513184[] = INCBIN_U16("data/tilesets/primary/general/anim/4/0.4bpp"); + +const u16 gUnknown_085132C4[] = INCBIN_U16("data/tilesets/primary/general/anim/4/1.4bpp"); + +const u16 gUnknown_08513404[] = INCBIN_U16("data/tilesets/primary/general/anim/4/2.4bpp"); + +const u16 gUnknown_08513544[] = INCBIN_U16("data/tilesets/primary/general/anim/4/3.4bpp"); + +const u16 *const gTilesetAnims_General4[] = { + gUnknown_08513184, + gUnknown_085132C4, + gUnknown_08513404, + gUnknown_08513544 +}; + +const u16 gUnknown_08513694[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/0.4bpp"); + +const u16 gUnknown_08513714[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/1.4bpp"); + +const u16 gUnknown_08513794[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/2.4bpp"); + +const u16 gUnknown_08513814[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/3.4bpp"); + +const u16 *const gTilesetAnims_Lavaridge0[] = { + gUnknown_08513694, + gUnknown_08513714, + gUnknown_08513794, + gUnknown_08513814 +}; + +const u16 gUnknown_085138A4[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp"); + +const u16 gUnknown_08513C64[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp"); + +const u16 gUnknown_08514024[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp"); + +const u16 *const gTilesetAnims_Pacifidlog0[] = { + gUnknown_085138A4, + gUnknown_08513C64, + gUnknown_08514024, + gUnknown_08513C64 +}; + +const u16 gUnknown_085143F4[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/0.4bpp"); + +const u16 gUnknown_08514474[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/1.4bpp"); + +const u16 gUnknown_085144F4[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/2.4bpp"); + +const u16 gUnknown_08514574[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/3.4bpp"); + +const u16 *const gTilesetAnims_Underwater0[] = { + gUnknown_085143F4, + gUnknown_08514474, + gUnknown_085144F4, + gUnknown_08514574 +}; + +const u16 gUnknown_08514604[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp"); + +const u16 gUnknown_08514704[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp"); + +const u16 gUnknown_08514804[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp"); + +const u16 gUnknown_08514904[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp"); + +const u16 gUnknown_08514A04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp"); + +const u16 gUnknown_08514B04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp"); + +const u16 gUnknown_08514C04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp"); + +const u16 gUnknown_08514D04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp"); + +const u16 *const gTilesetAnims_Pacifidlog1[] = { + gUnknown_08514604, + gUnknown_08514704, + gUnknown_08514804, + gUnknown_08514904, + gUnknown_08514A04, + gUnknown_08514B04, + gUnknown_08514C04, + gUnknown_08514D04 +}; + +const u16 gUnknown_08514E24[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/0.4bpp"); + +const u16 gUnknown_08514EA4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/1.4bpp"); + +const u16 gUnknown_08514F24[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/2.4bpp"); + +const u16 gUnknown_08514FA4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/3.4bpp"); + +const u16 gUnknown_08515024[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/a/1.4bpp"); + +const u16 gUnknown_085150A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/0.4bpp"); + +const u16 gUnknown_08515124[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/1.4bpp"); + +const u16 gUnknown_085151A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/2.4bpp"); + +const u16 gUnknown_08515224[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/3.4bpp"); + +const u16 gUnknown_085152A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/b/1.4bpp"); + +const u16 tileset_anims_space_1[16] = {}; + +u16 *const gTilesetAnims_MauvilleVDests0[] = { + (u16 *)(BG_VRAM + 0x4c00), + (u16 *)(BG_VRAM + 0x4c80), + (u16 *)(BG_VRAM + 0x4d00), + (u16 *)(BG_VRAM + 0x4d80), + (u16 *)(BG_VRAM + 0x4e00), + (u16 *)(BG_VRAM + 0x4e80), + (u16 *)(BG_VRAM + 0x4f00), + (u16 *)(BG_VRAM + 0x4f80) +}; + +u16 *const gTilesetAnims_MauvilleVDests1[] = { + (u16 *)(BG_VRAM + 0x5000), + (u16 *)(BG_VRAM + 0x5080), + (u16 *)(BG_VRAM + 0x5100), + (u16 *)(BG_VRAM + 0x5180), + (u16 *)(BG_VRAM + 0x5200), + (u16 *)(BG_VRAM + 0x5280), + (u16 *)(BG_VRAM + 0x5300), + (u16 *)(BG_VRAM + 0x5380) +}; + +const u16 *const gTilesetAnims_Mauville0a[] = { + gUnknown_08514E24, + gUnknown_08514E24, + gUnknown_08514EA4, + gUnknown_08514F24, + gUnknown_08514FA4, + gUnknown_08514FA4, + gUnknown_08514FA4, + gUnknown_08514FA4, + gUnknown_08514FA4, + gUnknown_08514FA4, + gUnknown_08514F24, + gUnknown_08514EA4 +}; + +const u16 *const gTilesetAnims_Mauville0b[] = { + gUnknown_085150A4, + gUnknown_085150A4, + gUnknown_08515124, + gUnknown_085151A4, + gUnknown_08515224, + gUnknown_08515224, + gUnknown_08515224, + gUnknown_08515224, + gUnknown_08515224, + gUnknown_08515224, + gUnknown_085151A4, + gUnknown_08515124 +}; + +const u16 *const gTilesetAnims_Mauville1a[] = { + gUnknown_08514E24, + gUnknown_08514E24, + gUnknown_08515024, + gUnknown_08515024 +}; + +const u16 *const gTilesetAnims_Mauville1b[] = { + gUnknown_085150A4, + gUnknown_085150A4, + gUnknown_085152A4, + gUnknown_085152A4 +}; + +const u16 gUnknown_08515404[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/0.4bpp"); + +const u16 gUnknown_08515484[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/1.4bpp"); + +const u16 gUnknown_08515504[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/2.4bpp"); + +const u16 gUnknown_08515584[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/3.4bpp"); + +const u16 gUnknown_08515604[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/4.4bpp"); + +const u16 gUnknown_08515684[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/5.4bpp"); + +const u16 gUnknown_08515704[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/6.4bpp"); + +const u16 gUnknown_08515784[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/7.4bpp"); + +u16 *const gTilesetAnims_RustboroVDests0[] = { + (u16 *)(BG_VRAM + 0x5000), + (u16 *)(BG_VRAM + 0x5080), + (u16 *)(BG_VRAM + 0x5100), + (u16 *)(BG_VRAM + 0x5180), + (u16 *)(BG_VRAM + 0x5200), + (u16 *)(BG_VRAM + 0x5280), + (u16 *)(BG_VRAM + 0x5300), + (u16 *)(BG_VRAM + 0x5380) +}; + +const u16 *const gTilesetAnims_Rustboro0[] = { + gUnknown_08515404, + gUnknown_08515484, + gUnknown_08515504, + gUnknown_08515584, + gUnknown_08515604, + gUnknown_08515684, + gUnknown_08515704, + gUnknown_08515784 +}; + +const u16 gUnknown_08515844[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/0.4bpp"); + +const u16 gUnknown_085158C4[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/1.4bpp"); + +const u16 tileset_anims_space_2[16] = {}; + +const u16 *const gTilesetAnims_Rustboro1[] = { + gUnknown_08515844, + gUnknown_085158C4 +}; + +const u16 gUnknown_0851596C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/0.4bpp"); + +const u16 gUnknown_085159EC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/1.4bpp"); + +const u16 gUnknown_08515A6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/2.4bpp"); + +const u16 gUnknown_08515AEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/3.4bpp"); + +const u16 gUnknown_08515B6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/0.4bpp"); + +const u16 gUnknown_08515BEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/1.4bpp"); + +const u16 gUnknown_08515C6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/2.4bpp"); + +const u16 gUnknown_08515CEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/3.4bpp"); + +const u16 tileset_anims_space_3[16] = {}; + +const u16 *const gTilesetAnims_Lavaridge1_Cave0[] = { + gUnknown_0851596C, + gUnknown_085159EC, + gUnknown_08515A6C, + gUnknown_08515AEC +}; + +const u16 gUnknown_08515D9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/0.4bpp"); + +const u16 gUnknown_08515E1C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/1.4bpp"); + +const u16 gUnknown_08515E9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/2.4bpp"); + +const u16 gUnknown_08515F1C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/3.4bpp"); + +const u16 gUnknown_08515F9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/4.4bpp"); + +const u16 gUnknown_0851601C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/5.4bpp"); + +const u16 gUnknown_0851609C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/6.4bpp"); + +const u16 gUnknown_0851611C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/7.4bpp"); + +const u16 tileset_anims_space_4[16] = {}; + +u16 *const gTilesetAnims_EverGrandeVDests0[] = { + (u16 *)(BG_VRAM + 0x5c00), + (u16 *)(BG_VRAM + 0x5c80), + (u16 *)(BG_VRAM + 0x5d00), + (u16 *)(BG_VRAM + 0x5d80), + (u16 *)(BG_VRAM + 0x5e00), + (u16 *)(BG_VRAM + 0x5e80), + (u16 *)(BG_VRAM + 0x5f00), + (u16 *)(BG_VRAM + 0x5f80) +}; + +const u16 *const gTilesetAnims_EverGrande0[] = { + gUnknown_08515D9C, + gUnknown_08515E1C, + gUnknown_08515E9C, + gUnknown_08515F1C, + gUnknown_08515F9C, + gUnknown_0851601C, + gUnknown_0851609C, + gUnknown_0851611C +}; + +const u16 gUnknown_085161FC[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/0.4bpp"); + +const u16 gUnknown_085162BC[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/1.4bpp"); + +const u16 gUnknown_0851637C[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/2.4bpp"); + +const u16 gUnknown_0851643C[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/3.4bpp"); + +const u16 *const gTilesetAnims_Dewford0[] = { + gUnknown_085161FC, + gUnknown_085162BC, + gUnknown_0851637C, + gUnknown_0851643C +}; + +const u16 gUnknown_0851650C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/0.4bpp"); + +const u16 gUnknown_085165CC[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/1.4bpp"); + +const u16 gUnknown_0851668C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/2.4bpp"); + +const u16 gUnknown_0851674C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/3.4bpp"); + +const u16 *const gTilesetAnims_BattleFrontierOutsideWest0[] = { + gUnknown_0851650C, + gUnknown_085165CC, + gUnknown_0851668C, + gUnknown_0851674C +}; + +const u16 gUnknown_0851681C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/0.4bpp"); + +const u16 gUnknown_085168DC[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/1.4bpp"); + +const u16 gUnknown_0851699C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/2.4bpp"); + +const u16 gUnknown_08516A5C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/3.4bpp"); + +const u16 *const gTilesetAnims_BattleFrontierOutsideEast0[] = { + gUnknown_0851681C, + gUnknown_085168DC, + gUnknown_0851699C, + gUnknown_08516A5C +}; + +const u16 gUnknown_08516B2C[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/0.4bpp"); + +const u16 gUnknown_08516BAC[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/1.4bpp"); + +const u16 gUnknown_08516C2C[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/2.4bpp"); + +const u16 gUnknown_08516CAC[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/3.4bpp"); + +const u16 *const gTilesetAnims_Slateport0[] = { + gUnknown_08516B2C, + gUnknown_08516BAC, + gUnknown_08516C2C, + gUnknown_08516CAC +}; + +const u16 gUnknown_08516D3C[] = INCBIN_U16("data/tilesets/primary/building/anim/0.4bpp"); + +const u16 gUnknown_08516DBC[] = INCBIN_U16("data/tilesets/primary/building/anim/1.4bpp"); + +const u16 *const gTilesetAnims_InsideBuilding0[] = { + gUnknown_08516D3C, + gUnknown_08516DBC +}; + +const u16 gUnknown_08516E44[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp"); + +const u16 gUnknown_08516FC4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp"); + +const u16 gUnknown_08517144[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp"); + +const u16 gUnknown_085172C4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp"); + +const u16 gUnknown_08517544[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp"); + +const u16 gUnknown_085177C4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp"); + +const u16 *const gTilesetAnims_SootopolisGym0[] = { + gUnknown_08516E44, + gUnknown_08516FC4, + gUnknown_08517144 +}; + +const u16 *const gTilesetAnims_SootopolisGym1[] = { + gUnknown_085172C4, + gUnknown_08517544, + gUnknown_085177C4 +}; + +const u16 gUnknown_08517A5C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/0.4bpp"); + +const u16 gUnknown_08517ADC[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/1.4bpp"); + +const u16 gUnknown_08517B5C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/0.4bpp"); + +const u16 gUnknown_08517B7C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/1.4bpp"); + +const u16 gUnknown_08517B9C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/2.4bpp"); + +const u16 gUnknown_08517BBC[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/3.4bpp"); + +const u16 tileset_anims_space_5[16] = {}; + +const u16 *const gTilesetAnims_EliteFour1[] = { + gUnknown_08517B5C, + gUnknown_08517B7C, + gUnknown_08517B9C, + gUnknown_08517BBC +}; + +const u16 *const gTilesetAnims_EliteFour0[] = { + gUnknown_08517A5C, + gUnknown_08517ADC +}; + +const u16 gUnknown_08517C14[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/0.4bpp"); + +const u16 gUnknown_08517E14[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/1.4bpp"); + +const u16 tileset_anims_space_6[16] = {}; + +const u16 *const gTilesetAnims_MauvilleGym0[] = { + gUnknown_08517C14, + gUnknown_08517E14 +}; + +const u16 gUnknown_0851803C[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/0.4bpp"); + +const u16 gUnknown_0851815C[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/1.4bpp"); + +const u16 tileset_anims_space_7[16] = {}; + +const u16 *const gTilesetAnims_BikeShop0[] = { + gUnknown_0851803C, + gUnknown_0851815C +}; + +const u16 gUnknown_085182A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/0.4bpp"); + +const u16 gUnknown_08518EA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/1.4bpp"); + +const u16 gUnknown_08519AA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/2.4bpp"); + +const u16 gUnknown_0851A6A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/3.4bpp"); + +const u16 gUnknown_0851B2A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/4.4bpp"); + +const u16 gUnknown_0851BEA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/5.4bpp"); + +const u16 gUnknown_0851CAA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/6.4bpp"); + +const u16 gUnknown_0851D6A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/7.4bpp"); + +const u16 tileset_anims_space_8[16] = {}; + +const u16 gUnknown_0851E2C4[] = INCBIN_U16("data/tilesets/secondary/unused_1/0.4bpp"); + +const u16 gUnknown_0851EAC4[] = INCBIN_U16("data/tilesets/secondary/unused_1/1.4bpp"); + +const u16 gUnknown_0851F2C4[] = INCBIN_U16("data/tilesets/secondary/unused_1/2.4bpp"); + +const u16 gUnknown_0851FAC4[] = INCBIN_U16("data/tilesets/secondary/unused_1/3.4bpp"); + +const u16 *const gTilesetAnims_Sootopolis0[] = { + gUnknown_085182A4, + gUnknown_08518EA4, + gUnknown_08519AA4, + gUnknown_0851A6A4, + gUnknown_0851B2A4, + gUnknown_0851BEA4, + gUnknown_0851CAA4, + gUnknown_0851D6A4 +}; + +const u16 gUnknown_085202E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/0.4bpp"); + +const u16 gUnknown_085203E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/1.4bpp"); + +const u16 gUnknown_085204E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/2.4bpp"); + +const u16 tileset_anims_space_9[16] = {}; + +const u16 gUnknown_08520604[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/0.4bpp"); + +const u16 gUnknown_08520704[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/1.4bpp"); + +const u16 gUnknown_08520804[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/2.4bpp"); + +const u16 tileset_anims_space_10[7808] = {}; + +const u16 gUnknown_08524604[] = INCBIN_U16("data/tilesets/secondary/unused_2/0.4bpp"); + +const u16 tileset_anims_space_11[224] = {}; + +const u16 gUnknown_08524804[] = INCBIN_U16("data/tilesets/secondary/unused_2/1.4bpp"); + +const u16 *const gTilesetAnims_BattlePyramid0[] = { + gUnknown_085202E4, + gUnknown_085203E4, + gUnknown_085204E4 +}; + +const u16 *const gTilesetAnims_BattlePyramid1[] = { + gUnknown_08520604, + gUnknown_08520704, + gUnknown_08520804 +}; extern const u16 gUnknown_08D85640[]; extern const u16 gUnknown_08D85660[]; From 572648ba2d82dbdc8a05ba3d38908e1a1c326e0e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 2 Oct 2017 21:51:22 -0400 Subject: [PATCH 082/182] BSS: field_screen, field_effect, pokemon_storage_system, fldeff_cut, script_menu --- src/field_effect.c | 15 +++++++++++++++ src/field_screen.c | 15 +++++++++++++++ src/fldeff_cut.c | 19 +++++++++++++++++++ src/pokemon_storage_system.c | 15 +++++++++++++++ src/script_menu.c | 16 ++++++++++++++++ sym_bss.txt | 30 +++++------------------------- 6 files changed, 85 insertions(+), 25 deletions(-) create mode 100644 src/field_effect.c create mode 100644 src/field_screen.c create mode 100644 src/fldeff_cut.c create mode 100644 src/pokemon_storage_system.c create mode 100644 src/script_menu.c diff --git a/src/field_effect.c b/src/field_effect.c new file mode 100644 index 0000000000..628dc776a1 --- /dev/null +++ b/src/field_effect.c @@ -0,0 +1,15 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u8 gUnknown_03000F58[32]; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/field_screen.c b/src/field_screen.c new file mode 100644 index 0000000000..2d33d237ff --- /dev/null +++ b/src/field_screen.c @@ -0,0 +1,15 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations +IWRAM_DATA u8 *gUnknown_03000F50; +IWRAM_DATA u32 filler_03000f54; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c new file mode 100644 index 0000000000..9929dd6f96 --- /dev/null +++ b/src/fldeff_cut.c @@ -0,0 +1,19 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u8 gUnknown_03001100; +IWRAM_DATA u8 gUnknown_03001101; +IWRAM_DATA u8 gUnknown_03001102; +IWRAM_DATA u32 fldeff_cut_unused_03001104; +IWRAM_DATA u8 gUnknown_03001108[25]; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c new file mode 100644 index 0000000000..3e409244c4 --- /dev/null +++ b/src/pokemon_storage_system.c @@ -0,0 +1,15 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u8 gUnknown_03000F78[0x188]; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/script_menu.c b/src/script_menu.c new file mode 100644 index 0000000000..04f1e82b7b --- /dev/null +++ b/src/script_menu.c @@ -0,0 +1,16 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u8 gUnknown_03001124[6]; +IWRAM_DATA u32 filler_0300112c; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index 3416b67df5..a90378a4ff 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -1,4 +1,3 @@ -gUnknown_03000000: @ 3000000 .include "src/main.o" .include "src/malloc.o" .include "src/dma3_manager.o" @@ -20,30 +19,11 @@ gUnknown_03000000: @ 3000000 .include "src/tileset_anims.o" .include "src/palette.o" .include "src/sound.o" - -gUnknown_03000F50: @ 3000F50 - .space 0x8 - -gUnknown_03000F58: @ 3000F58 - .space 0x20 - -gUnknown_03000F78: @ 3000F78 - .space 0x188 - -gUnknown_03001100: @ 3001100 - .space 0x1 - -gUnknown_03001101: @ 3001101 - .space 0x1 - -gUnknown_03001102: @ 3001102 - .space 0x6 - -gUnknown_03001108: @ 3001108 - .space 0x1C - -gUnknown_03001124: @ 3001124 - .space 0xC + .include "src/field_screen.o" + .include "src/field_effect.o" + .include "src/pokemon_storage_system.o" + .include "src/fldeff_cut.o" + .include "src/script_menu.o" gUnknown_03001130: @ 3001130 .space 0x4 From ce5ac9d782c100a5e9ed58ed7ba611565d7d7a50 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 2 Oct 2017 22:02:22 -0400 Subject: [PATCH 083/182] BSS: record_mixing --- src/record_mixing.c | 28 ++++++++++++++++++++++++++++ sym_bss.txt | 43 +------------------------------------------ 2 files changed, 29 insertions(+), 42 deletions(-) create mode 100644 src/record_mixing.c diff --git a/src/record_mixing.c b/src/record_mixing.c new file mode 100644 index 0000000000..151835e5e5 --- /dev/null +++ b/src/record_mixing.c @@ -0,0 +1,28 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA bool8 gUnknown_03001130; +IWRAM_DATA struct SecretBaseRecord *gUnknown_03001134; +IWRAM_DATA TVShow *gUnknown_03001138; +IWRAM_DATA struct UnknownSaveStruct2ABC *gUnknown_0300113C; +IWRAM_DATA OldMan *gUnknown_03001140; +IWRAM_DATA struct EasyChatPair *gUnknown_03001144; +IWRAM_DATA struct DaycareData *gUnknown_03001148; +IWRAM_DATA void *gUnknown_0300114C; // gSaveBlock2Ptr->field_64C +IWRAM_DATA LilycoveLady *gUnknown_03001150; +IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC; +IWRAM_DATA void *gUnknown_03001158; // gSaveBlock2Ptr->field_64C +IWRAM_DATA u32 gUnknown_0300115C; +IWRAM_DATA u8 gUnknown_03001160[8]; +IWRAM_DATA u32 gUnknown_03001168[3]; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/sym_bss.txt b/sym_bss.txt index a90378a4ff..f32300b15b 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -24,48 +24,7 @@ .include "src/pokemon_storage_system.o" .include "src/fldeff_cut.o" .include "src/script_menu.o" - -gUnknown_03001130: @ 3001130 - .space 0x4 - -gUnknown_03001134: @ 3001134 - .space 0x4 - -gUnknown_03001138: @ 3001138 - .space 0x4 - -gUnknown_0300113C: @ 300113C - .space 0x4 - -gUnknown_03001140: @ 3001140 - .space 0x4 - -gUnknown_03001144: @ 3001144 - .space 0x4 - -gUnknown_03001148: @ 3001148 - .space 0x4 - -gUnknown_0300114C: @ 300114C - .space 0x4 - -gUnknown_03001150: @ 3001150 - .space 0x4 - -gUnknown_03001154: @ 3001154 - .space 0x4 - -gUnknown_03001158: @ 3001158 - .space 0x4 - -gUnknown_0300115C: @ 300115C - .space 0x4 - -gUnknown_03001160: @ 3001160 - .space 0x8 - -gUnknown_03001168: @ 3001168 - .space 0xC + .include "src/record_mixing.o" gUnknown_03001174: @ 3001174 .space 0x1 From c8114eb3a5c9ca2b63fbed90e0e6715b4957b2b7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 3 Oct 2017 12:11:13 +0200 Subject: [PATCH 084/182] create battle_transition.h --- include/battle.h | 3 --- include/battle_transition.h | 6 ++++++ src/tileset_anims.c | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 include/battle_transition.h diff --git a/include/battle.h b/include/battle.h index bc70b86ea8..67d3d873d7 100644 --- a/include/battle.h +++ b/include/battle.h @@ -927,9 +927,6 @@ u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); u8 GetBankByIdentity(u8 bank); -// battle_transition -void sub_8149DFC(u8 a1); - // Move this somewhere else #include "sprite.h" diff --git a/include/battle_transition.h b/include/battle_transition.h new file mode 100644 index 0000000000..1603f5c93c --- /dev/null +++ b/include/battle_transition.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_TRANSITION_H +#define GUARD_BATTLE_TRANSITION_H + +void sub_8149DFC(u8 a1); + +#endif // GUARD_BATTLE_TRANSITION_H diff --git a/src/tileset_anims.c b/src/tileset_anims.c index e53461e02e..4ad787e1c8 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -3,7 +3,7 @@ #include "global.h" #include "palette.h" #include "blend_palette.h" -#include "battle.h" +#include "battle_transition.h" #include "task.h" // Static type declarations From 46fe1f441f1f40633b538c9db7d24aa4439629cf Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 3 Oct 2017 21:35:27 +0200 Subject: [PATCH 085/182] giant battle handler is done wohohohhohoho --- asm/battle_2.s | 1715 -------------------------------- asm/battle_controller_player.s | 2 +- asm/recorded_battle.s | 6 +- asm/rom3.s | 24 +- data/battle_scripts_1.s | 2 +- include/battle.h | 11 +- include/battle_controllers.h | 18 +- include/recorded_battle.h | 3 + src/battle_2.c | 478 +++++++++ src/battle_3.c | 18 +- sym_ewram.txt | 4 +- 11 files changed, 530 insertions(+), 1751 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 2ff446dd05..5f970d7669 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4,1721 +4,6 @@ .syntax unified .text - - - thumb_func_start sub_803BDA0 -sub_803BDA0: @ 803BDA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r0, =gBattlePartyID - mov r8, r0 - ldr r1, =gUnknown_0203CF00 - mov r12, r1 - ldr r7, =gBattleStruct - lsls r0, r5, 1 - adds r4, r0, r5 - adds r6, r0, 0 -_0803BDBC: - mov r0, r12 - adds r2, r3, r0 - ldr r1, [r7] - adds r0, r4, r3 - adds r0, r1 - adds r0, 0x60 - ldrb r0, [r0] - strb r0, [r2] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803BDBC - mov r1, r8 - adds r0, r6, r1 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, =gBattleStruct - ldr r0, [r7] - adds r0, r5, r0 - adds r0, 0x5C - ldrb r0, [r0] - bl pokemon_order_func - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_81B8FB0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803BE4C - movs r3, 0 - adds r4, r7, 0 - adds r6, r5 - movs r0, 0x2 - adds r1, r5, 0 - eors r1, r0 - ldr r7, =gUnknown_0203CF00 - lsls r0, r1, 1 - adds r5, r0, r1 -_0803BE1A: - ldr r0, [r4] - adds r1, r6, r3 - adds r1, r0 - adds r1, 0x60 - adds r2, r3, r7 - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4] - adds r0, r5, r3 - adds r0, r1 - adds r0, 0x60 - ldrb r1, [r2] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803BE1A - b _0803BE66 - .pool -_0803BE4C: - movs r3, 0 - adds r2, r6, r5 - ldr r4, =gUnknown_0203CF00 -_0803BE52: - ldr r0, [r7] - adds r1, r2, r3 - adds r1, r0 - adds r1, 0x60 - adds r0, r3, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803BE52 -_0803BE66: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803BDA0 - - thumb_func_start sub_803BE74 -sub_803BE74: @ 803BE74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x4] - ldr r0, =gActiveBank - strb r1, [r0] - ldr r0, =gNoOfAllBanks - bl _0803CD12 - .pool -_0803BE9C: - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _0803BEB8 - bl _0803CD04 -_0803BEB8: - lsls r0, 2 - ldr r1, =_0803BED0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803BED0: - .4byte _0803BEF4 - .4byte _0803BF0C - .4byte _0803C02C - .4byte _0803C7D8 - .4byte _0803CAD0 - .4byte _0803CB84 - .4byte _0803CBC8 - .4byte _0803CBF4 - .4byte _0803CC38 -_0803BEF4: - bl sub_8185FD0 - ldr r1, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r0, [r0] - adds r0, r1 - bl _0803CC20 - .pool -_0803BF0C: - ldr r0, =gActiveBank - ldrb r1, [r0] - ldr r4, =gBattleStruct - ldr r0, [r4] - adds r1, r0 - adds r1, 0x5C - movs r0, 0x6 - strb r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803BF68 - movs r1, 0x2 - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _0803BF68 - eors r5, r1 - adds r0, r5, 0 - bl GetBankByIdentity - ldr r1, [r4] - adds r1, 0x91 - ldrb r1, [r1] - ldr r2, =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803BF68 - ldr r4, =gBattleCommunication - adds r0, r5, 0 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - beq _0803BF68 - bl _0803CD04 -_0803BF68: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x91 - ldrb r3, [r0] - ldr r1, =gBitTable - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ands r3, r0 - cmp r3, 0 - beq _0803BFD0 - ldr r0, =gActionForBanks - adds r0, r2, r0 - movs r1, 0xD - strb r1, [r0] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803BFBC - ldr r0, =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r0, 0x5 - strb r0, [r1] - bl _0803CD04 - .pool -_0803BFBC: - ldr r0, =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r0, 0x4 - strb r0, [r1] - bl _0803CD04 - .pool -_0803BFD0: - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0803BFF0 - movs r0, 0x80 - lsls r0, 15 - ands r1, r0 - cmp r1, 0 - beq _0803C00C -_0803BFF0: - ldr r0, =gActionForBanks - adds r0, r2, r0 - strb r3, [r0] - ldr r1, =gBattleCommunication - ldrb r0, [r4] - bl _0803CC72 - .pool -_0803C00C: - ldr r0, =gActionForBanks - ldrb r1, [r0] - ldr r0, =gBattleBufferB - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - movs r0, 0 - bl dp01_build_cmdbuf_x12_a_bb - bl _0803CB68 - .pool -_0803C02C: - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r6, =gActiveBank - ldrb r5, [r6] - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _0803C058 - bl _0803CD04 -_0803C058: - ldr r4, =gBattleBufferB - lsls r0, r5, 9 - adds r4, 0x1 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - bl RecordedBattle_SetBankAction - ldr r1, =gActionForBanks - ldrb r0, [r6] - adds r1, r0, r1 - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r6] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0xC - bls _0803C084 - b _0803C6C4 -_0803C084: - lsls r0, 2 - ldr r1, =_0803C0A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803C0A8: - .4byte _0803C0DC - .4byte _0803C230 - .4byte _0803C268 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C440 - .4byte _0803C48C - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C4B4 -_0803C0DC: - bl AreAllMovesUnusable - lsls r0, 24 - cmp r0, 0 - beq _0803C134 - ldr r0, =gBattleCommunication - ldr r3, =gActiveBank - ldrb r1, [r3] - adds r1, r0 - movs r4, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r4, [r1] - ldrb r1, [r3] - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x4 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, [r2] - adds r2, r1, r2 - ldr r0, =gBattleBufferB - lsls r1, 9 - adds r0, 0x3 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r2, 0xC] - bl _0803CD70 - .pool -_0803C134: - ldr r3, =gDisableStructs - ldr r5, =gActiveBank - ldrb r4, [r5] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r3 - ldrh r2, [r0, 0x6] - cmp r2, 0 - beq _0803C188 - ldr r1, =gChosenMovesByBanks - lsls r0, r4, 1 - adds r0, r1 - strh r2, [r0] - ldrb r2, [r5] - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, r2, r1 - adds r1, 0x80 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0xC] - strb r0, [r1] - ldr r1, =gBattleCommunication - ldrb r0, [r5] - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - bl _0803CD70 - .pool -_0803C188: - add r2, sp, 0x4 - ldr r3, =gBattleMons - movs r1, 0x58 - adds r0, r4, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldrb r0, [r5] - muls r0, r1 - adds r0, r3 - adds r0, 0x21 - ldrb r0, [r0] - strb r0, [r2, 0x12] - ldrb r0, [r5] - muls r0, r1 - adds r0, r3 - adds r0, 0x22 - ldrb r0, [r0] - strb r0, [r2, 0x13] - movs r4, 0 - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x18] - add r2, sp, 0x10 - mov r10, r2 - mov r8, r3 - adds r7, r5, 0 - movs r6, 0x58 - movs r0, 0xC - add r0, r8 - mov r9, r0 - add r5, sp, 0x4 -_0803C1CA: - lsls r2, r4, 1 - ldrb r0, [r7] - muls r0, r6 - adds r0, r2, r0 - add r0, r9 - ldrh r0, [r0] - strh r0, [r5] - ldr r1, [sp, 0x18] - adds r3, r1, r4 - ldrb r0, [r7] - muls r0, r6 - adds r0, r4, r0 - mov r1, r8 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r2, r1 - add r2, r9 - ldrh r0, [r2] - add r1, r8 - adds r1, 0x3B - ldrb r1, [r1] - lsls r2, r4, 24 - lsrs r2, 24 - bl CalculatePPWithBonus - mov r2, r10 - adds r1, r2, r4 - strb r0, [r1] - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0803C1CA - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - movs r0, 0 - movs r2, 0 - add r3, sp, 0x4 - bl sub_8033E30 - b _0803C42E - .pool -_0803C230: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x021f0902 - ands r0, r1 - cmp r0, 0 - bne _0803C23E - b _0803C48C -_0803C23E: - ldr r4, =gActiveBank - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8185008 - ldr r1, =gUnknown_02024220 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, =gUnknown_082DB879 - b _0803C784 - .pool -_0803C268: - ldr r5, =gActiveBank - ldrb r0, [r5] - ldr r3, =gBattleStruct - ldr r1, [r3] - adds r1, r0, r1 - adds r1, 0x58 - ldr r2, =gBattlePartyID - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r7, =gBattleMons - ldrb r2, [r5] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - ldr r0, =0x0400e000 - ands r1, r0 - cmp r1, 0 - bne _0803C2B8 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - bne _0803C2B8 - ldr r0, =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - lsls r0, 3 - ands r1, r0 - cmp r1, 0 - beq _0803C2EC -_0803C2B8: - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r3] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x6 - b _0803C400 - .pool -_0803C2EC: - str r1, [sp] - movs r0, 0xC - adds r1, r2, 0 - movs r2, 0x17 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0803C374 - ldrb r1, [r5] - str r4, [sp] - movs r0, 0xC - movs r2, 0x47 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0803C33C - ldrb r0, [r5] - muls r0, r6 - adds r1, r0, r7 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803C33C - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803C33C - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - bne _0803C374 -_0803C33C: - ldr r5, =gActiveBank - ldrb r1, [r5] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0803C3B0 - ldr r2, =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _0803C374 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0803C3B0 -_0803C374: - subs r1, r4, 0x1 - lsls r1, 4 - movs r0, 0x4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, =gLastUsedAbility - ldrb r3, [r0] - ldr r4, =gBattleStruct - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - adds r2, 0x60 - ldr r0, [r4] - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r2, 0x6 - bl EmitChoosePokemon - b _0803C42E - .pool -_0803C3B0: - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x2 - bne _0803C3D8 - ldr r0, =gActionForBanks - ldrb r0, [r0] - cmp r0, 0x2 - bne _0803C3D8 - ldr r0, =gBattleStruct - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5C - b _0803C3EE - .pool -_0803C3D8: - ldrb r0, [r4] - cmp r0, 0x3 - bne _0803C410 - ldr r0, =gActionForBanks - ldrb r0, [r0, 0x1] - cmp r0, 0x2 - bne _0803C410 - ldr r0, =gBattleStruct - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5D -_0803C3EE: - ldrb r2, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - adds r3, r0 - str r3, [sp] - movs r0, 0 - movs r1, 0 -_0803C400: - movs r3, 0 - bl EmitChoosePokemon - b _0803C42E - .pool -_0803C410: - ldr r2, =gBattleStruct - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r2] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - movs r3, 0 - bl EmitChoosePokemon -_0803C42E: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - b _0803C6C4 - .pool -_0803C440: - bl IsPlayerPartyAndPokemonStorageFull - lsls r0, 24 - cmp r0, 0 - bne _0803C44C - b _0803C6C4 -_0803C44C: - ldr r1, =gUnknown_02024220 - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, =gUnknown_082DAB11 - str r1, [r0] - ldr r0, =gBattleCommunication - ldrb r1, [r3] - adds r1, r0 - movs r4, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r4, [r1] - ldrb r1, [r3] - b _0803C7A0 - .pool -_0803C48C: - ldr r2, =gBattleStruct - ldr r4, =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - ldr r1, [r2] - adds r1, r0 - movs r0, 0 - bl sub_8033E6C - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0803C6C4 - .pool -_0803C4B4: - ldr r4, =gBattleCommunication - ldr r5, =gActiveBank - ldrb r0, [r5] - adds r0, r4 - movs r1, 0x7 - strb r1, [r0] - ldrb r0, [r5] - bl GetBankIdentity - movs r6, 0x2 - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r5] - bl sub_8185008 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r1, =gBattleMons - lsls r0, 24 - lsrs r0, 24 - movs r7, 0x58 - muls r0, r7 - adds r4, r1, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _0803C532 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _0803C550 -_0803C532: - movs r0, 0 - bl dp01_build_cmdbuf_x32_32_32_32 - ldrb r0, [r5] - bl MarkBufferBankForExecution - bl _0803CD70 - .pool -_0803C550: - ldr r4, =gActionForBanks - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0803C590 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl sub_8185008 - b _0803C6AE - .pool -_0803C590: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803C5B6 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - b _0803C668 -_0803C5B6: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0803C628 - ldr r4, =gProtectStructs - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 20 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _0803C616 - ldr r4, =gDisableStructs - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x6] - cmp r0, 0 - beq _0803C628 -_0803C616: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - b _0803C668 - .pool -_0803C628: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - beq _0803C690 - ldr r4, =gActionForBanks - ldr r6, =gActiveBank - ldrb r0, [r6] - bl GetBankIdentity - movs r5, 0x2 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0803C690 - ldr r1, =gRngValue - ldr r0, =gUnknown_0203BD30 - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r6] - bl GetBankIdentity - eors r0, r5 -_0803C668: - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_8185008 - b _0803C6AE - .pool -_0803C690: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl sub_8185008 -_0803C6AE: - movs r0, 0 - bl dp01_build_cmdbuf_x32_32_32_32 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - b _0803CD70 - .pool -_0803C6C4: - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - movs r5, 0x8 - adds r0, r2, 0 - ands r0, r5 - adds r3, r1, 0 - cmp r0, 0 - beq _0803C720 - ldr r0, =0x043f0100 - ands r2, r0 - cmp r2, 0 - beq _0803C720 - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _0803C720 - ldr r1, =gUnknown_02024220 - lsls r0, r2, 2 - adds r0, r1 - ldr r1, =gUnknown_082DB9BA - str r1, [r0] - ldr r1, =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - movs r3, 0 - strb r5, [r0] - b _0803C792 - .pool -_0803C720: - ldr r0, [r3] - ldr r1, =0x0200000a - ands r0, r1 - cmp r0, 0x8 - bne _0803C760 - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r1, [r4] - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _0803C760 - ldr r0, =gUnknown_082DAAFE - bl BattleScriptExecute - ldr r1, =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - b _0803CC20 - .pool -_0803C760: - bl IsRunningFromBattleImpossible - lsls r0, 24 - cmp r0, 0 - beq _0803C7C4 - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _0803C7C4 - ldr r1, =gUnknown_02024220 - lsls r0, r2, 2 - adds r0, r1 - ldr r1, =gUnknown_082DAB0B -_0803C784: - str r1, [r0] - ldr r0, =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r3, 0 - movs r0, 0x6 - strb r0, [r1] -_0803C792: - ldrb r1, [r4] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - ldrb r1, [r4] -_0803C7A0: - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x1 - strb r0, [r1] - b _0803CD70 - .pool -_0803C7C4: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803C7D8: - ldr r4, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r3, =gActiveBank - ldrb r5, [r3] - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - lsls r0, r2, 4 - movs r1, 0xF0 - lsls r1, 24 - orrs r0, r1 - orrs r0, r2 - lsls r1, r2, 8 - orrs r0, r1 - lsls r2, 12 - orrs r0, r2 - ldr r1, [r4] - ands r1, r0 - adds r4, r3, 0 - cmp r1, 0 - beq _0803C804 - b _0803CD04 -_0803C804: - ldr r1, =gActionForBanks - adds r0, r5, r1 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x9 - bls _0803C812 - b _0803CD04 -_0803C812: - lsls r0, 2 - ldr r1, =_0803C830 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803C830: - .4byte _0803C858 - .4byte _0803C99C - .4byte _0803C9D4 - .4byte _0803CA0A - .4byte _0803CA2C - .4byte _0803CA40 - .4byte _0803CA54 - .4byte _0803CA84 - .4byte _0803CA98 - .4byte _0803CABC -_0803C858: - ldr r1, =gBattleBufferB - ldrb r3, [r4] - lsls r0, r3, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0x3 - blt _0803C88A - cmp r1, 0x9 - ble _0803C878 - cmp r1, 0xF - beq _0803C87E - b _0803C88A - .pool -_0803C878: - adds r0, r3, r2 - strb r1, [r0] - b _0803CD70 -_0803C87E: - adds r1, r3, r2 - movs r0, 0x2 - strb r0, [r1] - bl sub_803CDF8 - b _0803CD70 -_0803C88A: - movs r0, 0x2 - bl sub_818603C - ldr r4, =gBattleBufferB - ldr r6, =gActiveBank - ldrb r3, [r6] - lsls r1, r3, 9 - adds r5, r4, 0x2 - adds r0, r1, r5 - ldrb r2, [r0] - adds r7, r4, 0x3 - adds r1, r7 - ldrb r0, [r1] - lsls r0, 8 - orrs r2, r0 - ldr r0, =0x0000ffff - cmp r2, r0 - bne _0803C8D0 - ldr r0, =gBattleCommunication - adds r0, r3, r0 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r6] - bl sub_8185008 - b _0803CD04 - .pool -_0803C8D0: - bl sub_803FB4C - lsls r0, 24 - cmp r0, 0 - beq _0803C91C - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8185008 - ldr r0, =gBattleCommunication - ldrb r1, [r6] - adds r1, r0 - movs r3, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r1, [r6] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - ldrb r0, [r6] - lsls r0, 9 - adds r1, r4, 0x1 - adds r0, r1 - strb r3, [r0] - ldrb r1, [r6] - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x2 - strb r0, [r1] - b _0803CD70 - .pool -_0803C91C: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - bne _0803C942 - ldrb r0, [r6] - lsls r1, r0, 9 - adds r1, r5 - ldrb r1, [r1] - bl RecordedBattle_SetBankAction - ldrb r0, [r6] - lsls r1, r0, 9 - adds r1, r7 - ldrb r1, [r1] - bl RecordedBattle_SetBankAction -_0803C942: - ldrb r0, [r6] - ldr r4, =gBattleStruct - ldr r1, [r4] - adds r1, r0, r1 - adds r1, 0x80 - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gChosenMovesByBanks - ldrb r2, [r6] - lsls r5, r2, 1 - adds r5, r0 - ldr r3, =gBattleMons - ldr r4, [r4] - adds r0, r2, r4 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strh r0, [r5] - ldrb r0, [r6] - adds r4, r0, r4 - lsls r0, 9 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r4, 0xC] - ldr r0, =gBattleCommunication - ldrb r1, [r6] - b _0803CB72 - .pool -_0803C99C: - ldr r2, =gBattleBufferB - ldr r5, =gActiveBank - ldrb r4, [r5] - lsls r1, r4, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - bne _0803C9BA - b _0803CC1C -_0803C9BA: - ldr r0, =gLastUsedItem - strh r3, [r0] - ldr r0, =gBattleCommunication - ldrb r1, [r5] - b _0803CB72 - .pool -_0803C9D4: - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x6 - bne _0803CA04 - ldr r0, =gBattleCommunication - adds r0, r2, r0 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r4] - bl sub_8185008 - b _0803CD04 - .pool -_0803CA04: - bl sub_803CDF8 - b _0803CB6E -_0803CA0A: - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA2C: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA40: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA54: - ldr r3, =gBattleBufferB - ldr r0, =gActiveBank - ldrb r4, [r0] - lsls r1, r4, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r2, [r0] - adds r3, 0x2 - adds r1, r3 - ldrb r0, [r1] - lsls r0, 8 - orrs r2, r0 - cmp r2, 0 - bne _0803CA72 - b _0803CC1C -_0803CA72: - ldr r1, =gBattleCommunication - adds r1, r4, r1 - b _0803CB74 - .pool -_0803CA84: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA98: - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CABC: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CAD0: - ldr r3, =gBattleExecBuffer - ldr r6, =gBitTable - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r6 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _0803CAFA - b _0803CD04 -_0803CAFA: - bl sub_803CDB8 - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _0803CB3C - movs r1, 0x2 - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - bne _0803CB3C - adds r0, r5, 0 - eors r0, r1 - bl GetBankByIdentity - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, 0x91 - ldrb r1, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803CB5C -_0803CB3C: - movs r0, 0 - movs r1, 0 - adds r2, r4, 0 - bl EmitLinkStandbyMsg - b _0803CB66 - .pool -_0803CB5C: - movs r0, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl EmitLinkStandbyMsg -_0803CB66: - ldr r4, =gActiveBank -_0803CB68: - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803CB6E: - ldr r0, =gBattleCommunication - ldrb r1, [r4] -_0803CB72: - adds r1, r0 -_0803CB74: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0803CD04 - .pool -_0803CB84: - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _0803CBAE - b _0803CD04 -_0803CBAE: - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x4] - adds r0, 0x1 - strb r0, [r1, 0x4] - b _0803CD04 - .pool -_0803CBC8: - ldr r5, =gActiveBank - ldrb r2, [r5] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r2, r0 - adds r0, r1, 0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - beq _0803CCB4 - ldr r0, =gBattleCommunication - adds r0, r2, r0 - adds r1, 0x84 - ldrb r1, [r1] - strb r1, [r0] - b _0803CD04 - .pool -_0803CBF4: - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r0, =gActiveBank - ldrb r4, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - bne _0803CD04 -_0803CC1C: - ldr r0, =gBattleCommunication - adds r0, r4, r0 -_0803CC20: - movs r1, 0x1 - strb r1, [r0] - b _0803CD04 - .pool -_0803CC38: - ldr r5, =gActiveBank - ldrb r2, [r5] - ldr r4, =gBattleStruct - ldr r0, [r4] - adds r0, r2, r0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - beq _0803CCB4 - ldr r0, =gBattleBufferB - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0xD - bne _0803CC94 - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r1, =gActionForBanks - ldrb r0, [r5] - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - ldr r1, =gBattleCommunication - ldrb r0, [r5] -_0803CC72: - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _0803CD04 - .pool -_0803CC94: - adds r0, r2, 0 - movs r1, 0x1 - bl sub_8185008 - ldr r2, =gBattleCommunication - ldrb r0, [r5] - adds r2, r0, r2 - ldr r1, [r4] - adds r0, r1 - adds r0, 0x84 - ldrb r0, [r0] - strb r0, [r2] - b _0803CD04 - .pool -_0803CCB4: - ldr r0, =gBankAttacker - strb r2, [r0] - ldr r7, =gBattlescriptCurrInstr - ldr r6, =gUnknown_02024220 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r4, [r0] - str r4, [r7] - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - bne _0803CCFA - ldr r0, =gBattleScriptingCommandsTable - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_0803CCFA: - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r1, [r7] - str r1, [r0] -_0803CD04: - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, =gNoOfAllBanks - lsls r1, 24 - lsrs r1, 24 -_0803CD12: - adds r5, r0, 0 - ldrb r0, [r5] - cmp r1, r0 - bcs _0803CD1E - bl _0803BE9C -_0803CD1E: - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x4] - ldrb r1, [r5] - cmp r0, r1 - bne _0803CD70 - movs r0, 0x1 - bl sub_818603C - ldr r1, =gBattleMainFunc - ldr r0, =sub_803D2E8 - str r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _0803CD70 - movs r4, 0 - ldrb r5, [r5] - cmp r4, r5 - bge _0803CD70 -_0803CD4A: - ldr r0, =gActionForBanks - adds r0, r4, r0 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0803CD66 - lsls r0, r4, 24 - lsrs r0, 24 - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, r4, r1 - adds r1, 0x5C - ldrb r1, [r1] - bl sub_80571DC -_0803CD66: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803CD4A -_0803CD70: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803BE74 thumb_func_start sub_803CDB8 sub_803CDB8: @ 803CDB8 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 78236f1d7b..1ea1bb5f23 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -8648,7 +8648,7 @@ sub_805C158: @ 805C158 lsls r0, 24 cmp r0, 0 bne _0805C194 - ldr r1, =gUnknown_0203BD30 + ldr r1, =gBattlePalaceMoveSelectionRngValue ldr r0, =gRngValue ldr r0, [r0] str r0, [r1] diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s index f733033ff2..e742cbe7dd 100644 --- a/asm/recorded_battle.s +++ b/asm/recorded_battle.s @@ -271,8 +271,8 @@ _08184FF0: .pool thumb_func_end RecordedBattle_SetBankAction - thumb_func_start sub_8185008 -sub_8185008: @ 8185008 + thumb_func_start RecordedBattle_ClearBankAction +RecordedBattle_ClearBankAction: @ 8185008 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -310,7 +310,7 @@ _08185046: pop {r0} bx r0 .pool - thumb_func_end sub_8185008 + thumb_func_end RecordedBattle_ClearBankAction thumb_func_start sub_8185054 sub_8185054: @ 8185054 diff --git a/asm/rom3.s b/asm/rom3.s index 2e040ff0f6..6a3e7e2995 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2786,8 +2786,8 @@ _08033D7C: .pool thumb_func_end EmitPrintStringPlayerOnly - thumb_func_start dp01_build_cmdbuf_x12_a_bb -dp01_build_cmdbuf_x12_a_bb: @ 8033DE4 + thumb_func_start EmitChooseAction +EmitChooseAction: @ 8033DE4 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -2807,7 +2807,7 @@ dp01_build_cmdbuf_x12_a_bb: @ 8033DE4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x12_a_bb + thumb_func_end EmitChooseAction thumb_func_start EmitCmd13 EmitCmd13: @ 8033E10 @@ -2827,8 +2827,8 @@ EmitCmd13: @ 8033E10 .pool thumb_func_end EmitCmd13 - thumb_func_start sub_8033E30 -sub_8033E30: @ 8033E30 + thumb_func_start EmitChooseMove +EmitChooseMove: @ 8033E30 push {r4-r6,lr} adds r5, r3, 0 lsls r0, 24 @@ -2858,10 +2858,10 @@ _08033E4C: pop {r0} bx r0 .pool - thumb_func_end sub_8033E30 + thumb_func_end EmitChooseMove - thumb_func_start sub_8033E6C -sub_8033E6C: @ 8033E6C + thumb_func_start EmitOpenBag +EmitOpenBag: @ 8033E6C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -2886,7 +2886,7 @@ _08033E7E: pop {r0} bx r0 .pool - thumb_func_end sub_8033E6C + thumb_func_end EmitOpenBag thumb_func_start EmitChoosePokemon EmitChoosePokemon: @ 8033EA0 @@ -3624,8 +3624,8 @@ EmitCmd49: @ 80343D4 .pool thumb_func_end EmitCmd49 - thumb_func_start dp01_build_cmdbuf_x32_32_32_32 -dp01_build_cmdbuf_x32_32_32_32: @ 80343F4 + thumb_func_start Emit_x32 +Emit_x32: @ 80343F4 push {lr} lsls r0, 24 lsrs r0, 24 @@ -3640,7 +3640,7 @@ dp01_build_cmdbuf_x32_32_32_32: @ 80343F4 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x32_32_32_32 + thumb_func_end Emit_x32 thumb_func_start EmitSpriteInvisibility EmitSpriteInvisibility: @ 8034414 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 206519f40f..0b797feef6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -561,7 +561,7 @@ BattleScript_BerryStatRaiseEnd2:: @ 82DB84E BattleScript_BerryFocusEnergyEnd2:: @ 82DB869 .incbin "baserom.gba", 0x2db869, 0x10 -gUnknown_082DB879:: @ 82DB879 +BattleScript_ActionSelectionItemsCantBeUsed:: @ 82DB879 .incbin "baserom.gba", 0x2db879, 0x4 gUnknown_082DB87D:: @ 82DB87D diff --git a/include/battle.h b/include/battle.h index e5e5a94d1d..50d2389ac2 100644 --- a/include/battle.h +++ b/include/battle.h @@ -61,7 +61,8 @@ #define STEVEN_PARTNER_ID 0xC03 #define SECRET_BASE_OPPONENT 0x400 -#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID) +#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID) +#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000) #define BATTLE_WON 0x1 #define BATTLE_LOST 0x2 @@ -136,6 +137,7 @@ #define HITMARKER_PURSUIT_TRAP 0x00001000 #define HITMARKER_IGNORE_SAFEGUARD 0x00002000 #define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 +#define HITMARKER_x8000 0x00008000 #define HITMARKER_IGNORE_ON_AIR 0x00010000 #define HITMARKER_IGNORE_UNDERGROUND 0x00020000 #define HITMARKER_IGNORE_UNDERWATER 0x00040000 @@ -614,10 +616,7 @@ struct BattleStruct u8 field_7E; u8 formToChangeInto; u8 chosenMovesIds[4]; - u8 field_84; - u8 field_85; - u8 field_86; - u8 field_87; + u8 field_84[4]; u8 field_88; u8 field_89; u8 field_8A; @@ -906,7 +905,7 @@ void BattleTurnPassed(void); void BattleScriptPush(const u8* bsPtr); void BattleScriptPushCursor(void); void BattleScriptPop(void); -u8 sub_803FB4C(void); // msg, can't select a move +u8 TrySetCantSelectMoveBattleScript(void); u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); u8 GetImprisonedMovesCount(u8 bank, u16 move); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 61e8bec293..9a7f947fa6 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -14,6 +14,16 @@ struct MovePpInfo u8 ppBonuses; }; +struct ChooseMoveStruct +{ + u16 moves[4]; + u8 ppNumbers[4]; + u8 ppWithBonusNumbers[4]; + u16 species; + u8 monType1; + u8 monType2; +}; + #define REQUEST_ALL_BATTLE 0x0 #define REQUEST_SPECIES_BATTLE 0x1 #define REQUEST_HELDITEM_BATTLE 0x2 @@ -40,8 +50,8 @@ void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); void EmitReturnPokeToBall(u8 bufferId, u8 arg1); void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2); void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); -void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, const u8* arg4); -void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, u8 arg2); +void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); +void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); void EmitTrainerSlide(u8 bufferId); void EmitTrainerSlideBack(u8 bufferId); void EmitFaintingCry(u8 bufferId); @@ -56,6 +66,10 @@ void EmitIntroSlide(u8 bufferId, u8 terrainId); void EmitDrawTrainerPic(u8 bufferId); void EmitLoadMonSprite(u8 bufferId); void EmitIntroTrainerBallThrow(u8 bufferId); +void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); +void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct* movePpData); +void EmitOpenBag(u8 bufferId, u8* arg1); +void Emit_x32(u8 bufferId); #define RESET_ACTION_MOVE_SELECTION 0 #define RESET_ACTION_SELECTION 1 diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 2040f2b8a2..2df1620e40 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -6,10 +6,13 @@ extern u32 gRecordedBattleRngSeed; void sub_8185F84(void); void sub_8184E58(void); void RecordedBattle_SetBankAction(u8 bank, u8 action); +void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear); void sub_8185F90(u16 arg0); bool8 sub_8186450(void); u8 sub_8185FAC(void); u8 sub_8185FB8(void); u8 MoveRecordedBattleToSaveData(void); +void sub_818603C(u8); +void sub_8185FD0(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/src/battle_2.c b/src/battle_2.c index 769723c24c..a18e1c698f 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -132,6 +132,7 @@ extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; extern u8 gFightStateTracker; extern u8 gLastUsedAbility; +extern u16 gLastUsedItem; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const struct BattleMove gBattleMoves[]; @@ -168,6 +169,8 @@ extern void sub_80B3AF8(u8 taskId); // cable club extern void sub_8076918(u8 bank); extern void sub_80729D0(u8 healthoxSpriteId); extern void sub_81A56B4(void); // battle frontier 2 +extern void sub_81B8FB0(u8, u8); // party menu +extern u8 pokemon_order_func(u8); // party menu // this file's functions static void CB2_InitBattleInternal(void); @@ -214,6 +217,9 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void); static void TryDoEventsBeforeFirstTurn(void); void sub_803BE74(void); void bc_bs_exec(void); +void sub_803D2E8(void); +void sub_803CDF8(void); +bool8 sub_803CDB8(void); void CB2_InitBattle(void) { @@ -3736,3 +3742,475 @@ u8 IsRunningFromBattleImpossible(void) } return 0; } + +extern u8 gUnknown_0203CF00[]; + +void sub_803BDA0(u8 bank) +{ + s32 i; + u8 r4; + u8 r1; + + // gBattleStruct->field_60[bank][i] + + for (i = 0; i < 3; i++) + gUnknown_0203CF00[i] = *(bank * 3 + i + (u8*)(gBattleStruct->field_60)); + + r4 = pokemon_order_func(gBattlePartyID[bank]); + r1 = pokemon_order_func(*(gBattleStruct->field_5C + bank)); + sub_81B8FB0(r4, r1); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (i = 0; i < 3; i++) + { + *(bank * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i]; + *((bank ^ BIT_MON) * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i]; + } + } + else + { + for (i = 0; i < 3; i++) + { + *(bank * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i]; + } + } +} + +extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; +extern const u8* gBattlescriptCurrInstr; + +extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; +extern const u8 gUnknown_082DAB11[]; +extern const u8 gUnknown_082DB9BA[]; +extern const u8 gUnknown_082DAAFE[]; +extern const u8 gUnknown_082DAB0B[]; + +extern u32 gBattlePalaceMoveSelectionRngValue; + +void sub_803BE74(void) +{ + s32 i; + + gBattleCommunication[4] = 0; + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + u8 identity = GetBankIdentity(gActiveBank); + switch (gBattleCommunication[gActiveBank]) + { + case 0: + sub_8185FD0(); + gBattleCommunication[gActiveBank] = 1; + break; + case 1: + *(gBattleStruct->field_5C + gActiveBank) = 6; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI + || !(identity & BIT_MON) + || gBattleStruct->field_91 & gBitTable[GetBankByIdentity(identity ^ BIT_MON)] + || gBattleCommunication[GetBankByIdentity(identity ^ BIT_MON)] == 5) + { + if (gBattleStruct->field_91 & gBitTable[gActiveBank]) + { + gActionForBanks[gActiveBank] = 13; + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + gBattleCommunication[gActiveBank] = 5; + else + gBattleCommunication[gActiveBank] = 4; + } + else + { + if (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS + || gBattleMons[gActiveBank].status2 & STATUS2_RECHARGE) + { + gActionForBanks[gActiveBank] = 0; + gBattleCommunication[gActiveBank] = 4; + } + else + { + EmitChooseAction(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[gActiveBank]++; + } + } + } + break; + case 2: + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]); + gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1]; + + switch (gBattleBufferB[gActiveBank][1]) + { + case 0: + if (AreAllMovesUnusable()) + { + gBattleCommunication[gActiveBank] = 6; + *(gBattleStruct->field_54 + gActiveBank) = 0; + *(gBattleStruct->field_84 + gActiveBank) = 4; + *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3]; + return; + } + else if (gDisableStructs[gActiveBank].encoredMove != 0) + { + gChosenMovesByBanks[gActiveBank] = gDisableStructs[gActiveBank].encoredMove; + *(gBattleStruct->chosenMovesIds + gActiveBank) = gDisableStructs[gActiveBank].encoredMovePos; + gBattleCommunication[gActiveBank] = 4; + return; + } + else + { + struct ChooseMoveStruct moveInfo; + + moveInfo.species = gBattleMons[gActiveBank].species; + moveInfo.monType1 = gBattleMons[gActiveBank].type1; + moveInfo.monType2 = gBattleMons[gActiveBank].type2; + + for (i = 0; i < 4; i++) + { + moveInfo.moves[i] = gBattleMons[gActiveBank].moves[i]; + moveInfo.ppNumbers[i] = gBattleMons[gActiveBank].pp[i]; + moveInfo.ppWithBonusNumbers[i] = CalculatePPWithBonus( + gBattleMons[gActiveBank].moves[i], + gBattleMons[gActiveBank].ppBonuses, + i); + } + + EmitChooseMove(0, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo); + MarkBufferBankForExecution(gActiveBank); + } + break; + case 1: + if (gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_FRONTIER_NO_PYRAMID + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_x2000000)) + { + RecordedBattle_ClearBankAction(gActiveBank, 1); + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed; + gBattleCommunication[gActiveBank] = 6; + *(gBattleStruct->field_54 + gActiveBank) = 0; + *(gBattleStruct->field_84 + gActiveBank) = 1; + return; + } + else + { + EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]); + MarkBufferBankForExecution(gActiveBank); + } + break; + case 2: + *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; + if (gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION) + || gBattleTypeFlags & BATTLE_TYPE_ARENA + || gStatuses3[gActiveBank] & STATUS3_ROOTED) + { + EmitChoosePokemon(0, 2, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); + } + else if ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0)) + || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0)) + && gBattleMons[gActiveBank].type1 != TYPE_FLYING + && gBattleMons[gActiveBank].type2 != TYPE_FLYING + && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE) + || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBank, ABILITY_MAGNET_PULL, 0, 0)) + && (gBattleMons[gActiveBank].type1 == TYPE_STEEL + || gBattleMons[gActiveBank].type2 == TYPE_STEEL))) + { + EmitChoosePokemon(0, ((i - 1) << 4) | 4, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBank]); + } + else + { + if (gActiveBank == 2 && gActionForBanks[0] == 2) + EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); + else if (gActiveBank == 3 && gActionForBanks[1] == 2) + EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); + else + EmitChoosePokemon(0, 0, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); + } + MarkBufferBankForExecution(gActiveBank); + break; + case 5: + if (IsPlayerPartyAndPokemonStorageFull()) + { + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB11; + gBattleCommunication[gActiveBank] = 6; + *(gBattleStruct->field_54 + gActiveBank) = 0; + *(gBattleStruct->field_84 + gActiveBank) = 1; + return; + } + break; + case 6: + EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]); + MarkBufferBankForExecution(gActiveBank); + break; + case 12: + gBattleCommunication[gActiveBank] = 7; + gBattleCommunication[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] = 1; + RecordedBattle_ClearBankAction(gActiveBank, 1); + if (gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_MULTIPLETURNS + || gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_RECHARGE) + { + Emit_x32(0); + MarkBufferBankForExecution(gActiveBank); + return; + } + else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 2) + { + RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 2); + } + else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 3) + { + RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1); + } + else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 0 + && (gProtectStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].onlyStruggle + || gDisableStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].encoredMove)) + { + RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1); + } + else if (gBattleTypeFlags & BATTLE_TYPE_PALACE + && gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 0) + { + gRngValue = gBattlePalaceMoveSelectionRngValue; + RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1); + } + else + { + RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 3); + } + Emit_x32(0); + MarkBufferBankForExecution(gActiveBank); + return; + } + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER + && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) + && gBattleBufferB[gActiveBank][1] == 3) + { + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB9BA; + gBattleCommunication[gActiveBank] = 8; + *(gBattleStruct->field_54 + gActiveBank) = 0; + *(gBattleStruct->field_84 + gActiveBank) = 1; + return; + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER + && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + && gBattleBufferB[gActiveBank][1] == 3) + { + BattleScriptExecute(gUnknown_082DAAFE); + gBattleCommunication[gActiveBank] = 1; + } + else if (IsRunningFromBattleImpossible() != 0 + && gBattleBufferB[gActiveBank][1] == 3) + { + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB0B; + gBattleCommunication[gActiveBank] = 6; + *(gBattleStruct->field_54 + gActiveBank) = 0; + *(gBattleStruct->field_84 + gActiveBank) = 1; + return; + } + else + { + gBattleCommunication[gActiveBank]++; + } + } + break; + case 3: + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + switch (gActionForBanks[gActiveBank]) + { + case 0: + switch (gBattleBufferB[gActiveBank][1]) + { + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1]; + return; + case 15: + gActionForBanks[gActiveBank] = 2; + sub_803CDF8(); + return; + default: + sub_818603C(2); + if ((gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)) == 0xFFFF) + { + gBattleCommunication[gActiveBank] = 1; + RecordedBattle_ClearBankAction(gActiveBank, 1); + } + else if (TrySetCantSelectMoveBattleScript()) + { + RecordedBattle_ClearBankAction(gActiveBank, 1); + gBattleCommunication[gActiveBank] = 6; + *(gBattleStruct->field_54 + gActiveBank) = 0; + gBattleBufferB[gActiveBank][1] = 0; + *(gBattleStruct->field_84 + gActiveBank) = 2; + return; + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_PALACE)) + { + RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][2]); + RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][3]); + } + *(gBattleStruct->chosenMovesIds + gActiveBank) = gBattleBufferB[gActiveBank][2]; + gChosenMovesByBanks[gActiveBank] = gBattleMons[gActiveBank].moves[*(gBattleStruct->chosenMovesIds + gActiveBank)]; + *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3]; + gBattleCommunication[gActiveBank]++; + } + break; + } + break; + case 1: + if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) == 0) + { + gBattleCommunication[gActiveBank] = 1; + } + else + { + gLastUsedItem = (gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)); + gBattleCommunication[gActiveBank]++; + } + break; + case 2: + if (gBattleBufferB[gActiveBank][1] == 6) + { + gBattleCommunication[gActiveBank] = 1; + RecordedBattle_ClearBankAction(gActiveBank, 1); + } + else + { + sub_803CDF8(); + gBattleCommunication[gActiveBank]++; + } + break; + case 3: + gHitMarker |= HITMARKER_x8000; + gBattleCommunication[gActiveBank]++; + break; + case 4: + gBattleCommunication[gActiveBank]++; + break; + case 5: + gBattleCommunication[gActiveBank]++; + break; + case 6: + if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) != 0) + { + gBattleCommunication[gActiveBank]++; + } + else + { + gBattleCommunication[gActiveBank] = 1; + } + break; + case 7: + gBattleCommunication[gActiveBank]++; + break; + case 8: + gHitMarker |= HITMARKER_x8000; + gBattleCommunication[gActiveBank]++; + break; + case 9: + gBattleCommunication[gActiveBank]++; + break; + } + } + break; + case 4: + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + i = (sub_803CDB8() != 0); + + if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE) + || (identity & BIT_MON) + || (*(&gBattleStruct->field_91) & gBitTable[GetBankByIdentity(identity ^ BIT_MON)])) + { + EmitLinkStandbyMsg(0, 0, i); + } + else + { + EmitLinkStandbyMsg(0, 1, i); + } + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[gActiveBank]++; + } + break; + case 5: + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + gBattleCommunication[4]++; + } + break; + case 6: + if (*(gBattleStruct->field_54 + gActiveBank) != 0) + { + gBattleCommunication[gActiveBank] = *(gBattleStruct->field_84 + gActiveBank); + } + else + { + gBankAttacker = gActiveBank; + gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank]; + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } + gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; + } + break; + case 7: + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + gBattleCommunication[gActiveBank] = 1; + } + break; + case 8: + if (*(gBattleStruct->field_54 + gActiveBank) != 0) + { + if (gBattleBufferB[gActiveBank][1] == 13) + { + gHitMarker |= HITMARKER_x8000; + gActionForBanks[gActiveBank] = 3; + gBattleCommunication[gActiveBank] = 4; + } + else + { + RecordedBattle_ClearBankAction(gActiveBank, 1); + gBattleCommunication[gActiveBank] = *(gBattleStruct->field_84 + gActiveBank); + } + } + else + { + gBankAttacker = gActiveBank; + gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank]; + if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) + { + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } + gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; + } + break; + } + } + + if (gBattleCommunication[4] == gNoOfAllBanks) + { + sub_818603C(1); + gBattleMainFunc = sub_803D2E8; + + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gActionForBanks[i] == 2) + sub_80571DC(i, *(gBattleStruct->field_5C + i)); + } + } + } +} diff --git a/src/battle_3.c b/src/battle_3.c index 071e4d59d8..59028410de 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -19,7 +19,7 @@ #include "calculate_base_damage.h" extern const u8* gBattlescriptCurrInstr; -extern const u8* gUnknown_02024220[BATTLE_BANKS_COUNT]; +extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u8 gActiveBank; @@ -200,7 +200,7 @@ void BattleScriptPop(void) gBattlescriptCurrInstr = BATTLESCRIPTS_STACK->ptr[--BATTLESCRIPTS_STACK->size]; } -u8 sub_803FB4C(void) // msg, can't select a move +u8 TrySetCantSelectMoveBattleScript(void) { u8 limitations = 0; u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]]; @@ -218,7 +218,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } else { - gUnknown_02024220[gActiveBank] = gUnknown_082DAE1F; + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAE1F; limitations = 1; } } @@ -233,7 +233,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } else { - gUnknown_02024220[gActiveBank] = gUnknown_082DB089; + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB089; limitations++; } } @@ -248,7 +248,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } else { - gUnknown_02024220[gActiveBank] = gUnknown_082DB0A0; + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB0A0; limitations++; } } @@ -263,7 +263,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } else { - gUnknown_02024220[gActiveBank] = gUnknown_082DB181; + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB181; limitations++; } } @@ -285,7 +285,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } else { - gUnknown_02024220[gActiveBank] = gUnknown_082DB812; + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB812; limitations++; } } @@ -298,7 +298,7 @@ u8 sub_803FB4C(void) // msg, can't select a move } else { - gUnknown_02024220[gActiveBank] = gUnknown_082DB076; + gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB076; limitations++; } } @@ -349,7 +349,7 @@ bool8 AreAllMovesUnusable(void) if (unusable == 0xF) // all moves are unusable { gProtectStructs[gActiveBank].onlyStruggle = 1; - gUnknown_02024220[gActiveBank] = BattleScript_NoMovesLeft; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_NoMovesLeft; } else { diff --git a/sym_ewram.txt b/sym_ewram.txt index 287bc4a5d2..aa069b3259 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -382,7 +382,7 @@ gBattlescriptCurrInstr: @ 2024214 gActionForBanks: @ 202421C .space 0x4 -gUnknown_02024220: @ 2024220 +gBattlescriptPtrsForSelection: @ 2024220 .space 0x10 gUnknown_02024230: @ 2024230 @@ -1671,7 +1671,7 @@ gUnknown_0203BD28: @ 203BD28 gRecordedBattleRngSeed: @ 203BD2C .space 0x4 -gUnknown_0203BD30: @ 203BD30 +gBattlePalaceMoveSelectionRngValue: @ 203BD30 .space 0x4 gUnknown_0203BD34: @ 203BD34 From 0a88d1042a80bcc703d05f1cf19527272424a03f Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Tue, 3 Oct 2017 15:42:28 -0400 Subject: [PATCH 086/182] decompiled up to sub_81C13B0 --- asm/pokemon_summary_screen.s | 475 -------------------- src/pokemon_summary_screen.c | 833 +++++++++++++++++++++-------------- 2 files changed, 502 insertions(+), 806 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 862fb3d5bf..7f1a1e48f9 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,481 +5,6 @@ .text - thumb_func_start sub_81C1070 -sub_81C1070: @ 81C1070 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - adds r4, r1, 0 - mov r8, r2 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - mov r0, r8 - ldrb r6, [r0] - movs r2, 0 - lsls r4, 24 - asrs r4, 24 - mov r12, r4 - movs r1, 0 - ldrsh r4, [r7, r1] - ldrb r0, [r7] - lsls r3, r0, 24 -_081C109C: - lsls r0, r6, 24 - asrs r0, 24 - add r0, r12 - lsls r0, 24 - lsrs r6, r0, 24 - asrs r0, 24 - cmp r0, r4 - ble _081C10B0 - movs r6, 0 - b _081C10B6 -_081C10B0: - cmp r0, 0 - bge _081C10B6 - lsrs r6, r3, 24 -_081C10B6: - lsls r0, r6, 24 - asrs r1, r0, 24 - mov r9, r0 - cmp r1, 0x4 - bne _081C10C2 - b _081C11CC -_081C10C2: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - lsls r1, 1 - adds r0, 0x84 - adds r0, r1 - ldrh r5, [r0] - cmp r5, 0 - bne _081C10E2 - lsls r0, r2, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _081C109C -_081C10E2: - adds r0, r5, 0 - bl sub_81C240C - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r5, 0 - bl sub_81C3E9C - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x4 - bne _081C1110 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c4 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _081C1118 -_081C1110: - movs r1, 0x2 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - bne _081C115E -_081C1118: - movs r0, 0x13 - bl ClearWindowTilemap - ldr r2, =gSprites - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C1142 - movs r0, 0xD - bl ClearWindowTilemap -_081C1142: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r4, 0x3 - negs r4, r4 - movs r0, 0x9 - adds r1, r4, 0 - bl sub_81C1DA4 - movs r0, 0x9 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_81C1EFC -_081C115E: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x4 - beq _081C11A0 - mov r1, r9 - asrs r0, r1, 24 - cmp r0, 0x4 - bne _081C11A0 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c4 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _081C11A0 - movs r0, 0xE - bl ClearWindowTilemap - movs r0, 0xF - bl ClearWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0 - movs r1, 0x3 - bl sub_81C1DA4 - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - bl sub_81C1EFC -_081C11A0: - mov r0, r8 - strb r6, [r0] - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c6 - adds r0, r1 - cmp r8, r0 - bne _081C11E0 - movs r0, 0x8 - bl sub_81C4D18 - b _081C11E6 - .pool -_081C11CC: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c4 - adds r0, r1 - ldrh r5, [r0] - b _081C10E2 - .pool -_081C11E0: - movs r0, 0x12 - bl sub_81C4D18 -_081C11E6: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81C1070 - - thumb_func_start sub_81C11F4 -sub_81C11F4: @ 81C11F4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x8 - bl sub_81C4C60 - movs r0, 0x6 - bl ClearWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0 - bl sub_81C3E9C - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r1, =0x000020bc - adds r0, r1 - movs r1, 0x3 - movs r2, 0x1 - bl sub_81C2194 - ldr r0, [r4] - ldr r1, =0x000030bc - adds r0, r1 - movs r1, 0x1 - movs r2, 0x1 - bl sub_81C2194 - bl sub_81C4064 - ldr r0, [r4] - ldr r1, =0x000040c6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - beq _081C125E - movs r0, 0xE - bl ClearWindowTilemap - movs r0, 0xF - bl ClearWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl sub_81C1DA4 - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - bl sub_81C1EFC -_081C125E: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_81C0510 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C11F4 - - thumb_func_start sub_81C129C -sub_81C129C: @ 81C129C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r2, =0x000040c6 - adds r1, r0, r2 - ldrb r1, [r1] - adds r2, 0x1 - adds r0, r2 - strb r1, [r0] - movs r0, 0x1 - bl sub_81C4C84 - movs r0, 0x12 - bl sub_81C4AF8 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81C12E4 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C129C - - thumb_func_start sub_81C12E4 -sub_81C12E4: @ 81C12E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - bl sub_81221EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C13AA - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081C1338 - movs r0, 0x3 - strh r0, [r4] - movs r1, 0x1 - negs r1, r1 - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c7 - adds r2, r0 - adds r0, r4, 0 - bl sub_81C1070 - b _081C13AA - .pool -_081C1338: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081C1360 - movs r0, 0x3 - strh r0, [r4] - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c7 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C1070 - b _081C13AA - .pool -_081C1360: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081C139A - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r2, =0x000040c6 - adds r1, r0, r2 - adds r2, 0x1 - adds r0, r2 - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bne _081C1390 - adds r0, r5, 0 - movs r1, 0 - bl sub_81C13B0 - b _081C13AA - .pool -_081C1390: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_81C13B0 - b _081C13AA -_081C139A: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C13AA - adds r0, r6, 0 - movs r1, 0 - bl sub_81C13B0 -_081C13AA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81C12E4 - - thumb_func_start sub_81C13B0 -sub_81C13B0: @ 81C13B0 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl sub_81C4C84 - movs r0, 0x12 - bl sub_81C4C60 - cmp r4, 0x1 - bne _081C1464 - ldr r0, =gUnknown_0203CF1C - ldr r3, [r0] - ldr r1, =0x000040bd - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _081C1410 - ldr r0, [r3] - ldr r2, =0x000040be - adds r1, r3, r2 - ldrb r2, [r1] - movs r1, 0x64 - muls r1, r2 - adds r0, r1 - ldr r4, =0x000040c6 - adds r1, r3, r4 - ldrb r1, [r1] - adds r4, 0x1 - adds r2, r3, r4 - ldrb r2, [r2] - bl sub_81C14BC - b _081C1430 - .pool -_081C1410: - ldr r0, [r3] - ldr r2, =0x000040be - adds r1, r3, r2 - ldrb r2, [r1] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - adds r0, r1 - ldr r4, =0x000040c6 - adds r1, r3, r4 - ldrb r1, [r1] - adds r4, 0x1 - adds r2, r3, r4 - ldrb r2, [r2] - bl sub_81C15EC -_081C1430: - ldr r5, =gUnknown_0203CF1C - ldr r0, [r5] - adds r0, 0xC - bl sub_81C0098 - ldr r1, [r5] - ldr r6, =0x000040c6 - adds r0, r1, r6 - ldrb r0, [r0] - ldr r4, =0x000040c7 - adds r1, r4 - ldrb r1, [r1] - bl sub_81C40A0 - ldr r1, [r5] - adds r0, r1, r6 - ldrb r0, [r0] - adds r1, r4 - ldrb r1, [r1] - bl sub_81C4568 - ldr r0, [r5] - adds r4, r0, r4 - ldrb r1, [r4] - adds r0, r6 - strb r1, [r0] -_081C1464: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040c6 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r4, [r1] - adds r0, r4, 0 - bl sub_81C3E9C - adds r0, r4, 0 - bl sub_81C240C - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81C0F44 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C13B0 - thumb_func_start sub_81C14BC sub_81C14BC: @ 81C14BC push {r4-r7,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 9c4647cf05..5499706249 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -18,6 +18,7 @@ extern struct BgTemplate gUnknown_0861CBB4; extern u8 gUnknown_0203CF20; extern struct MusicPlayerInfo gMPlay_BGM; extern s8 gUnknown_0861CC1C[]; +extern u8 gUnknown_08329D22[]; extern void sub_806F2AC(u8 a, u8 b); void sub_81C488C(u8 a); @@ -61,7 +62,7 @@ u8 sub_81BFEB0(); void sub_81C2554(); void sub_81C1BA0(); void sub_81C0098(struct Pokemon* a); -u8 sub_81C00F0(struct Pokemon* a); +bool8 sub_81C00F0(struct Pokemon* a); void sub_81C25E8(); void sub_81C286C(); void sub_81C2D9C(u8 a); @@ -98,7 +99,7 @@ s8 sub_81C09B4(s8 a); s8 sub_81C08F8(s8 a); void sub_81C4204(u8 a, u8 b); void sub_81C20F0(u8 taskId); -u8 sub_81C0A50(struct Pokemon* mon); +bool8 sub_81C0A50(struct Pokemon* mon); void sub_81C49E0(); void sub_81C0E24(); void sub_81C2C38(); @@ -117,24 +118,33 @@ void sub_81C4AF8(u8 a); void sub_81C1070(s16* a, s8 b, u8* c); void sub_81C11F4(u8 a); void sub_81C129C(u8 a); -u8 sub_81C1040(); - +bool8 sub_81C1040(); +void sub_81C4064(); +void sub_81C4C60(u8 a); +void sub_81C12E4(u8 taskId); +void sub_81C4C84(u8 a); +void sub_81C13B0(u8 a, u8 b); +void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b); +void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); +void sub_81C40A0(u8 a, u8 b); +void sub_81C4568(u8 a, u8 b); void SetBgAttribute(u8 bg, u8 attributeId, u8 value); -u8 sub_81BFB10(); +bool8 sub_81BFB10(); u8 sub_81B1250(); -union unkUnion{ +union unkUnion +{ struct Pokemon mons[6]; struct BoxPokemon boxMons[6]; }; - u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, u8 d); -struct pokeSummary{ +struct pokeSummary +{ u16 species; // 0x0 u16 species2; // 0x2 u8 isEgg; // 0x4 @@ -167,12 +177,13 @@ struct pokeSummary{ u32 OTID; // 0x48 }; -struct unkSummaryStruct{ - union unkUnion* unk0; - void* unk4; - void* unk8; - struct Pokemon currentPoke; - struct pokeSummary summary; +struct unkSummaryStruct +{ + /*0x00*/ union unkUnion *unk0; + /*0x04*/ void *unk4; + /*0x08*/ void *unk8; + /*0x0C*/ struct Pokemon currentPoke; + /*0x70*/ struct pokeSummary summary; u8 unkTilemap0[0x800]; u8 unkTilemap0_1[0x800]; u8 unkTilemap1[0x800]; @@ -189,16 +200,9 @@ struct unkSummaryStruct{ u8 unk40C1; u8 unk40C2; u8 unk40C3; - union -{ - struct - { - u16 unk40C4; - u8 unk40C6; - u8 unkfiller3; - } fooFiller; - u32 loadThis; -} unionThing; + u16 unk40C4; + u8 unk40C6; + u8 unk40C7; u8 unk40C8; u8 unk40C9; u8 unk_filler2[0x9]; @@ -211,7 +215,7 @@ struct unkSummaryStruct{ u8 unk_filler4[6]; }; -void sub_81BF8EC(u8 a, void* b, u8 c, u8 d, void* e) +void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e) { u8 byte; gUnknown_0203CF1C = AllocZeroed(0x40F8); @@ -226,21 +230,21 @@ void sub_81BF8EC(u8 a, void* b, u8 c, u8 d, void* e) gUnknown_0203CF1C->unk40BD = 0; switch (a) { - case 0: - case 2: - gUnknown_0203CF1C->unk40C1 = 0; - gUnknown_0203CF1C->unk40C2 = 3; - break; - case 1: - gUnknown_0203CF1C->unk40C1 = 0; - gUnknown_0203CF1C->unk40C2 = 3; - gUnknown_0203CF1C->unk40C8 = 1; - break; - case 3: - gUnknown_0203CF1C->unk40C1 = 2; - gUnknown_0203CF1C->unk40C2 = 3; - gUnknown_0203CF1C->unk40C3 = 1; - break; + case 0: + case 2: + gUnknown_0203CF1C->unk40C1 = 0; + gUnknown_0203CF1C->unk40C2 = 3; + break; + case 1: + gUnknown_0203CF1C->unk40C1 = 0; + gUnknown_0203CF1C->unk40C2 = 3; + gUnknown_0203CF1C->unk40C8 = 1; + break; + case 3: + gUnknown_0203CF1C->unk40C1 = 2; + gUnknown_0203CF1C->unk40C2 = 3; + gUnknown_0203CF1C->unk40C3 = 1; + break; } byte = gUnknown_0203CF1C->unk40C1; gUnknown_0203CF1C->unk40C0 = byte; @@ -250,13 +254,13 @@ void sub_81BF8EC(u8 a, void* b, u8 c, u8 d, void* e) SetMainCallback2(sub_81BFAE4); } -void sub_81BFA38(void* a, u8 b, u8 c, void* d, u16 e) +void sub_81BFA38(void *a, u8 b, u8 c, void *d, u16 e) { sub_81BF8EC(3, a, b, c, d); - gUnknown_0203CF1C->unionThing.fooFiller.unk40C4 = e; + gUnknown_0203CF1C->unk40C4 = e; } -void sub_81BFA80(u8 a, void* b, u8 c, u8 d, void* e) +void sub_81BFA80(u8 a, void *b, u8 c, u8 d, void *e) { sub_81BF8EC(a, b, c, d, e); gUnknown_0203CF1C->unk40EF = 1; @@ -280,138 +284,138 @@ void sub_81BFAD0(void) void sub_81BFAE4() { - while(1) + while (1) { - if (sub_81221EC() == 1 || sub_81BFB10() == 1 || sub_81221AC() == 1) + if (sub_81221EC() == 1 || sub_81BFB10() == TRUE || sub_81221AC() == 1) break; } } -u8 sub_81BFB10() +bool8 sub_81BFB10(void) { - switch (gMain.state) + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + sub_8121DA0(); + clear_scheduled_bg_copies_to_vram(); + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = 1; + gMain.state++; + break; + case 3: + ResetSpriteData(); + gMain.state++; + break; + case 4: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 5: + sub_81BFE24(); + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + break; + case 6: + if (sub_81BFEB0() != 0) + gMain.state++; + break; + case 7: + sub_81C2554(); + gMain.state++; + break; + case 8: + sub_81C1BA0(); + gMain.state++; + break; + case 9: + sub_81C0098(&gUnknown_0203CF1C->currentPoke); + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + break; + case 10: + if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) != 0) + gMain.state++; + break; + case 11: + sub_81C25E8(); + gMain.state++; + break; + case 12: + sub_81C286C(); + gMain.state++; + break; + case 13: + sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + gMain.state++; + break; + case 14: + sub_81C0348(); + gMain.state++; + break; + case 15: + sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + gMain.state++; + break; + case 16: + sub_81C4190(); + sub_81C42C8(); + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; + break; + case 17: + gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &gUnknown_0203CF1C->unk40F0); + if (gUnknown_0203CF1C->unk40D3 != 0xFF) { - case 0: - SetVBlankHBlankCallbacksToNull(); - sub_8121DA0(); - clear_scheduled_bg_copies_to_vram(); - gMain.state++; - break; - case 1: - remove_some_task(); - gMain.state++; - break; - case 2: - ResetPaletteFade(); - gPaletteFade.bufferTransferDisabled = 1; - gMain.state++; - break; - case 3: - ResetSpriteData(); - gMain.state++; - break; - case 4: - FreeAllSpritePalettes(); - gMain.state++; - break; - case 5: - sub_81BFE24(); - gUnknown_0203CF1C->unk40F0 = 0; - gMain.state++; - break; - case 6: - if (sub_81BFEB0() != 0) - gMain.state++; - break; - case 7: - sub_81C2554(); - gMain.state++; - break; - case 8: - sub_81C1BA0(); - gMain.state++; - break; - case 9: - sub_81C0098(&gUnknown_0203CF1C->currentPoke); - gUnknown_0203CF1C->unk40F0 = 0; - gMain.state++; - break; - case 10: - if(sub_81C00F0(&gUnknown_0203CF1C->currentPoke) != 0) - gMain.state++; - break; - case 11: - sub_81C25E8(); - gMain.state++; - break; - case 12: - sub_81C286C(); - gMain.state++; - break; - case 13: - sub_81C2D9C(gUnknown_0203CF1C->unk40C0); - gMain.state++; - break; - case 14: - sub_81C0348(); - gMain.state++; - break; - case 15: - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); - gMain.state++; - break; - case 16: - sub_81C4190(); - sub_81C42C8(); - gUnknown_0203CF1C->unk40F0 = 0; - gMain.state++; - break; - case 17: - gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &gUnknown_0203CF1C->unk40F0); - if (gUnknown_0203CF1C->unk40D3 != 0xFF) - { - gUnknown_0203CF1C->unk40F0 = 0; - gMain.state++; - } - break; - case 18: - sub_81C4984(&gUnknown_0203CF1C->currentPoke); - gMain.state++; - break; - case 19: - sub_81C4A08(&gUnknown_0203CF1C->currentPoke); - gMain.state++; - break; - case 20: - sub_81C4A88(); - gMain.state++; - break; - case 21: - sub_81C4280(); - gMain.state++; - break; - case 22: - if (gUnknown_0203CF1C->unk40BC != 3) - CreateTask(sub_81C0510, 0); - else - CreateTask(sub_81C171C, 0); - gMain.state++; - break; - case 23: - BlendPalettes(-1, 16, 0); - gMain.state++; - break; - case 24: - BeginNormalPaletteFade(-1, 0, 16, 0, 0); - gPaletteFade.bufferTransferDisabled = 0; - gMain.state++; - break; - default: - SetVBlankCallback(sub_81BFAD0); - SetMainCallback2(sub_81BFAB4); - return 1; + gUnknown_0203CF1C->unk40F0 = 0; + gMain.state++; } - return 0; + break; + case 18: + sub_81C4984(&gUnknown_0203CF1C->currentPoke); + gMain.state++; + break; + case 19: + sub_81C4A08(&gUnknown_0203CF1C->currentPoke); + gMain.state++; + break; + case 20: + sub_81C4A88(); + gMain.state++; + break; + case 21: + sub_81C4280(); + gMain.state++; + break; + case 22: + if (gUnknown_0203CF1C->unk40BC != 3) + CreateTask(sub_81C0510, 0); + else + CreateTask(sub_81C171C, 0); + gMain.state++; + break; + case 23: + BlendPalettes(-1, 16, 0); + gMain.state++; + break; + case 24: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + gMain.state++; + break; + default: + SetVBlankCallback(sub_81BFAD0); + SetMainCallback2(sub_81BFAB4); + return TRUE; + } + return FALSE; } void sub_81BFE24() @@ -437,68 +441,68 @@ u8 sub_81BFEB0() { switch (gUnknown_0203CF1C->unk40F0) { - case 0: - reset_temp_tile_data_buffers(); - decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0); + case 0: + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0); + gUnknown_0203CF1C->unk40F0++; + break; + case 1: + if (free_temp_tile_data_buffers_if_possible() != 1) + { + LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->unkTilemap0); gUnknown_0203CF1C->unk40F0++; - break; - case 1: - if (free_temp_tile_data_buffers_if_possible() != 1) - { - LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->unkTilemap0); - gUnknown_0203CF1C->unk40F0++; - } - break; - case 2: - LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->unkTilemap0_1); - gUnknown_0203CF1C->unk40F0++; - break; - case 3: - LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->unkTilemap1_1); - gUnknown_0203CF1C->unk40F0++; - break; - case 4: - LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->unkTilemap2_1); - gUnknown_0203CF1C->unk40F0++; - break; - case 5: - LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->unkTilemap3_1); - gUnknown_0203CF1C->unk40F0++; - break; - case 6: - LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100); - LoadPalette(&gUnknown_08D85620, 0x81, 0x1E); - gUnknown_0203CF1C->unk40F0++; - break; - case 7: - LoadCompressedObjectPic(&gUnknown_0861CFBC); - gUnknown_0203CF1C->unk40F0++; - break; - case 8: - LoadCompressedObjectPic(&gUnknown_0861D074); - gUnknown_0203CF1C->unk40F0++; - break; - case 9: - LoadCompressedObjectPic(&gUnknown_0861D0F8); - gUnknown_0203CF1C->unk40F0++; - break; - case 10: - LoadCompressedObjectPalette(&gUnknown_0861D100); - gUnknown_0203CF1C->unk40F0++; - break; - case 11: - LoadCompressedObjectPalette(&gUnknown_0861D07C); - gUnknown_0203CF1C->unk40F0++; - break; - case 12: - LoadCompressedPalette(&gUnknown_08D97B84, 0x1D0, 0x60); - gUnknown_0203CF1C->unk40F0 = 0; - return 1; + } + break; + case 2: + LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->unkTilemap0_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 3: + LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->unkTilemap1_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 4: + LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->unkTilemap2_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 5: + LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->unkTilemap3_1); + gUnknown_0203CF1C->unk40F0++; + break; + case 6: + LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100); + LoadPalette(&gUnknown_08D85620, 0x81, 0x1E); + gUnknown_0203CF1C->unk40F0++; + break; + case 7: + LoadCompressedObjectPic(&gUnknown_0861CFBC); + gUnknown_0203CF1C->unk40F0++; + break; + case 8: + LoadCompressedObjectPic(&gUnknown_0861D074); + gUnknown_0203CF1C->unk40F0++; + break; + case 9: + LoadCompressedObjectPic(&gUnknown_0861D0F8); + gUnknown_0203CF1C->unk40F0++; + break; + case 10: + LoadCompressedObjectPalette(&gUnknown_0861D100); + gUnknown_0203CF1C->unk40F0++; + break; + case 11: + LoadCompressedObjectPalette(&gUnknown_0861D07C); + gUnknown_0203CF1C->unk40F0++; + break; + case 12: + LoadCompressedPalette(&gUnknown_08D97B84, 0x1D0, 0x60); + gUnknown_0203CF1C->unk40F0 = 0; + return 1; } return 0; } -void sub_81C0098(struct Pokemon* poke) +void sub_81C0098(struct Pokemon *poke) { if (gUnknown_0203CF1C->unk40BD == 0) { @@ -512,89 +516,87 @@ void sub_81C0098(struct Pokemon* poke) } } -u8 sub_81C00F0(struct Pokemon* a) +bool8 sub_81C00F0(struct Pokemon *a) { u32 i; - struct pokeSummary* sum = &gUnknown_0203CF1C->summary; + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; switch (gUnknown_0203CF1C->unk40F0) { - - case 0: - sum->species = GetMonData(a, MON_DATA_SPECIES); - sum->species2 = GetMonData(a, MON_DATA_SPECIES2); - sum->exp = GetMonData(a, MON_DATA_EXP); - sum->level = GetMonData(a, MON_DATA_LEVEL); - sum->altability = GetMonData(a, MON_DATA_ALT_ABILITY); - sum->item = GetMonData(a, MON_DATA_HELD_ITEM); - sum->pid = GetMonData(a, MON_DATA_PERSONALITY); - sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1); - if (sum->sanity != 0) - sum->isEgg = 1; - else - sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); - break; - case 1: - for (i = 0; i < 4; i++) - { - sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i); - sum->pp[i] = GetMonData(a, MON_DATA_PP1+i); - } - sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); - break; - case 2: - if ((struct Pokemon*)gUnknown_0203CF1C->unk0 == gPlayerParty || gUnknown_0203CF1C->unk40BC == 2 || gUnknown_0203CF1C->unk40EF == 1) - { - sum->nature = GetNature(a); - sum->currentHP = GetMonData(a, MON_DATA_HP); - sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); - sum->atk = GetMonData(a, MON_DATA_ATK); - sum->def = GetMonData(a, MON_DATA_DEF); - sum->spatk = GetMonData(a, MON_DATA_SPATK); - sum->spdef = GetMonData(a, MON_DATA_SPDEF); - sum->speed = GetMonData(a, MON_DATA_SPD); - } - else - { - sum->nature = GetNature(a); - sum->currentHP = GetMonData(a, MON_DATA_HP); - sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); - sum->atk = GetMonData(a, MON_DATA_ATK2); - sum->def = GetMonData(a, MON_DATA_DEF2); - sum->spatk = GetMonData(a, MON_DATA_SPATK2); - sum->spdef = GetMonData(a, MON_DATA_SPDEF2); - sum->speed = GetMonData(a, MON_DATA_SPD2); - } - break; - case 3: - GetMonData(a, MON_DATA_OT_NAME, &sum->OTName); - ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE)); - sum->unk7 = sub_81B205C(a); - sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER); - sum->OTID = GetMonData(a, MON_DATA_OT_ID); - sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION); - sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL); - sum->metGame = GetMonData(a, MON_DATA_MET_GAME); - sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP); - break; - default: - sum->ribbons = GetMonData(a, MON_DATA_RIBBON_COUNT); - return 1; + case 0: + sum->species = GetMonData(a, MON_DATA_SPECIES); + sum->species2 = GetMonData(a, MON_DATA_SPECIES2); + sum->exp = GetMonData(a, MON_DATA_EXP); + sum->level = GetMonData(a, MON_DATA_LEVEL); + sum->altability = GetMonData(a, MON_DATA_ALT_ABILITY); + sum->item = GetMonData(a, MON_DATA_HELD_ITEM); + sum->pid = GetMonData(a, MON_DATA_PERSONALITY); + sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1); + if (sum->sanity != 0) + sum->isEgg = 1; + else + sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); + break; + case 1: + for (i = 0; i < 4; i++) + { + sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i); + sum->pp[i] = GetMonData(a, MON_DATA_PP1+i); + } + sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); + break; + case 2: + if ((struct Pokemon*)gUnknown_0203CF1C->unk0 == gPlayerParty || gUnknown_0203CF1C->unk40BC == 2 || gUnknown_0203CF1C->unk40EF == 1) + { + sum->nature = GetNature(a); + sum->currentHP = GetMonData(a, MON_DATA_HP); + sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); + sum->atk = GetMonData(a, MON_DATA_ATK); + sum->def = GetMonData(a, MON_DATA_DEF); + sum->spatk = GetMonData(a, MON_DATA_SPATK); + sum->spdef = GetMonData(a, MON_DATA_SPDEF); + sum->speed = GetMonData(a, MON_DATA_SPD); + } + else + { + sum->nature = GetNature(a); + sum->currentHP = GetMonData(a, MON_DATA_HP); + sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); + sum->atk = GetMonData(a, MON_DATA_ATK2); + sum->def = GetMonData(a, MON_DATA_DEF2); + sum->spatk = GetMonData(a, MON_DATA_SPATK2); + sum->spdef = GetMonData(a, MON_DATA_SPDEF2); + sum->speed = GetMonData(a, MON_DATA_SPD2); + } + break; + case 3: + GetMonData(a, MON_DATA_OT_NAME, &sum->OTName); + ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE)); + sum->unk7 = sub_81B205C(a); + sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER); + sum->OTID = GetMonData(a, MON_DATA_OT_ID); + sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION); + sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL); + sum->metGame = GetMonData(a, MON_DATA_MET_GAME); + sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP); + break; + default: + sum->ribbons = GetMonData(a, MON_DATA_RIBBON_COUNT); + return TRUE; } gUnknown_0203CF1C->unk40F0++; - return 0; + return FALSE; } -void sub_81C0348() +void sub_81C0348(void) { - u8 a = gUnknown_0203CF1C->unk40C0 - 2; - if (a > 1) + if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) { sub_81C1DA4(0, 255); sub_81C1EFC(0, 255, 0); } else { - sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unionThing.fooFiller.unk40C6]); + sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0); sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0); SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3); @@ -604,11 +606,12 @@ void sub_81C0348() ClearWindowTilemap(0xD); } if (gUnknown_0203CF1C->summary.unk7 == 0) + { sub_81C2074(0, 0xFF); + } else { - u8 b = gUnknown_0203CF1C->unk40C0 - 2; - if (b > 1) + if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) PutWindowTilemap(0xD); } sub_81C2524(); @@ -629,7 +632,7 @@ void sub_81C044C(u8 taskId) void sub_81C0484(u8 taskId) { - if (sub_81221EC() != 1 && gPaletteFade.active == 0) + if (sub_81221EC() != 1 && !gPaletteFade.active) { SetMainCallback2(gUnknown_0203CF1C->unk4); gUnknown_0203CF20 = gUnknown_0203CF1C->unk40BE; @@ -647,18 +650,24 @@ void sub_81C0484(u8 taskId) void sub_81C0510(u8 taskId) { - if (sub_81221EC() != 1 && gPaletteFade.active == 0) + if (sub_81221EC() != 1 && !gPaletteFade.active) { if (gMain.newKeys & DPAD_UP) + { sub_81C0604(taskId, -1); + } else if (gMain.newKeys & DPAD_DOWN) { sub_81C0604(taskId, 1); } else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1) + { sub_81C0A8C(taskId, -1); + } else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2) + { sub_81C0A8C(taskId, 1); + } else if (gMain.newKeys & A_BUTTON) { if (gUnknown_0203CF1C->unk40C0 != 1) @@ -666,12 +675,12 @@ void sub_81C0510(u8 taskId) if (gUnknown_0203CF1C->unk40C0 == 0) { sub_81C48F0(); - PlaySE(5); + PlaySE(SE_SELECT); sub_81C044C(taskId); } else { - PlaySE(5); + PlaySE(SE_SELECT); sub_81C0E48(taskId); } } @@ -679,7 +688,7 @@ void sub_81C0510(u8 taskId) else if (gMain.newKeys & B_BUTTON) { sub_81C48F0(); - PlaySE(5); + PlaySE(SE_SELECT); sub_81C044C(taskId); } } @@ -756,7 +765,7 @@ void sub_81C0704(u8 taskId) gUnknown_0203CF1C->unk40F0 = 0; break; case 4: - if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) == 0) + if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) == FALSE) return; break; case 5: @@ -853,21 +862,19 @@ s8 sub_81C09B4(s8 a) if (r5 < 0 || r5 >= 6) return -1; b = c[r5]; - if (sub_81C0A50(&mons[b]) == 1) + if (sub_81C0A50(&mons[b]) == TRUE) return b; } } -u8 sub_81C0A50(struct Pokemon* mon) +bool8 sub_81C0A50(struct Pokemon* mon) { if (GetMonData(mon, MON_DATA_SPECIES) == 0) - { - return 0; - } + return FALSE; else if (gUnknown_0203CF1C->unk40BE != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) - return 1; + return TRUE; else - return 0; + return FALSE; } void sub_81C0A8C(u8 taskId, s8 b) @@ -920,9 +927,7 @@ void sub_81C0B8C(u8 taskId) ChangeBgX(data[1], 0x2000, 1); data[0] += 32; if (data[0] > 0xFF) - { gTasks[taskId].func = sub_81C0C68; - } } void sub_81C0C68(u8 taskId) @@ -996,8 +1001,8 @@ void sub_81C0E24() void sub_81C0E48(u8 taskId) { u16 move; - gUnknown_0203CF1C->unionThing.fooFiller.unk40C6 = 0; - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unionThing.fooFiller.unk40C6]; + gUnknown_0203CF1C->unk40C6 = 0; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; ClearWindowTilemap(0x13); if (gSprites[gUnknown_0203CF1C->unk40D5].invisible == 0) ClearWindowTilemap(0xD); @@ -1024,32 +1029,36 @@ void sub_81C0F44(u8 taskId) { u8 id = taskId; s16 *data = gTasks[taskId].data; + if (sub_81221EC() != 1) { if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->unionThing.fooFiller.unk40C6); + sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->unionThing.fooFiller.unk40C6); + sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C8 == 1 || ((int)(gUnknown_0203CF1C->unionThing.loadThis & 0xFFFFFF) == 0x40000)) + if (gUnknown_0203CF1C->unk40C8 == 1 + || (gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) { PlaySE(SE_SELECT); sub_81C11F4(taskId); } - else if (sub_81C1040() == 1) + else if (sub_81C1040() == TRUE) { PlaySE(SE_SELECT); sub_81C129C(taskId); } else - PlaySE(0x20); + { + PlaySE(SE_HAZURE); + } } else if (gMain.newKeys & B_BUTTON) { @@ -1059,32 +1068,194 @@ void sub_81C0F44(u8 taskId) } } -u8 sub_81C1040() +bool8 sub_81C1040(void) { u8 i; - for (i = 1; i <= 3; i++) + for (i = 1; i < 4; i++) { if (gUnknown_0203CF1C->summary.moves[i] != 0) - return 1; + return TRUE; } - return 0; + return FALSE; } -/* void sub_81C1070(s16* a, s8 b, u8* c) +void sub_81C4D18(); + +void sub_81C1070(s16 *a, s8 b, u8 *c) { s8 i; - s8 d = c*; + s8 moveIndex; + u16 move; + PlaySE(SE_SELECT); - i = 0; - while (i <= 3) + moveIndex = *c; + for (i = 0; i < 4; i++) { - d += b - if (d > a[0]) - d = 0; - else if (d < 0) - d = data[0]; - if (d == 4) + moveIndex += b; + if (moveIndex > a[0]) + moveIndex = 0; + else if (moveIndex < 0) + moveIndex = a[0]; + if (moveIndex == 4) + { + move = gUnknown_0203CF1C->unk40C4; + break; + } + move = gUnknown_0203CF1C->summary.moves[moveIndex]; + if (move != 0) break; - } + sub_81C240C(move); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + sub_81C3E9C(move); + if ((*c == 4 && gUnknown_0203CF1C->unk40C4 == 0) || a[1] == 1) + { + ClearWindowTilemap(19); + if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible) + ClearWindowTilemap(13); + schedule_bg_copy_tilemap_to_vram(0); + sub_81C1DA4(9, -3); + sub_81C1EFC(9, -3, move); + } + if (*c != 4 && moveIndex == 4 && gUnknown_0203CF1C->unk40C4 == 0) + { + ClearWindowTilemap(14); + ClearWindowTilemap(15); + schedule_bg_copy_tilemap_to_vram(0); + sub_81C1DA4(0, 3); + sub_81C1EFC(0, 3, 0); + } + *c = moveIndex; + if (c == &gUnknown_0203CF1C->unk40C6) + sub_81C4D18(8); + else + sub_81C4D18(18); +} + +void sub_81C11F4(u8 taskId) +{ + sub_81C4C60(8); + ClearWindowTilemap(6); + PutWindowTilemap(5); + sub_81C3E9C(0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 1); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 1); + sub_81C4064(); + if (gUnknown_0203CF1C->unk40C6 != 4) + { + ClearWindowTilemap(14); + ClearWindowTilemap(15); + sub_81C1DA4(0, 3); + sub_81C1EFC(0, 3, 0); + } + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + gTasks[taskId].func = sub_81C0510; +} + +void sub_81C129C(u8 taskId) +{ + gUnknown_0203CF1C->unk40C7 = gUnknown_0203CF1C->unk40C6; + sub_81C4C84(1); + sub_81C4AF8(18); + gTasks[taskId].func = sub_81C12E4; +} + +void sub_81C12E4(u8 taskId) +{ + u8 a = taskId; + s16* data = gTasks[taskId].data; + if (sub_81221EC() != 1) + { + if (gMain.newKeys & DPAD_UP) + { + data[0] = 3; + sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C7); + } + else if (gMain.newKeys & DPAD_DOWN) + { + data[0] = 3; + sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C7); + } + else if (gMain.newKeys & A_BUTTON) + { + if (gUnknown_0203CF1C->unk40C6 == gUnknown_0203CF1C->unk40C7) + { + sub_81C13B0(taskId, 0); + } + else + sub_81C13B0(taskId, 1); + } + else if (gMain.newKeys & B_BUTTON) + sub_81C13B0(a, 0); + } +} + +void sub_81C13B0(u8 taskId, u8 b) +{ + u16 move; + PlaySE(SE_SELECT); + sub_81C4C84(0); + sub_81C4C60(18); + if (b == 1) + { + if (gUnknown_0203CF1C->unk40BD == 0) + { + struct Pokemon *why = gUnknown_0203CF1C->unk0->mons; + sub_81C14BC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + } + else + { + struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMons; + sub_81C15EC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + } + sub_81C0098(&gUnknown_0203CF1C->currentPoke); + sub_81C40A0(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + sub_81C4568(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + gUnknown_0203CF1C->unk40C6 = gUnknown_0203CF1C->unk40C7; + } + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + sub_81C3E9C(move); + sub_81C240C(move); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + gTasks[taskId].func = sub_81C0F44; +} + +struct struct_moveSwap +{ + u16 field_0; + u16 field_2; + u8 field_4; + u8 field_5; + u8 field_6; + u16* ptr_8; + u16* ptr_C; + u8* ptr_10; + u8* ptr_14; + u8* ptr_18; + u16* ptr_1C; + u8* ptr_20; + u8* ptr_24; +}; + +/* void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b) +{ + struct struct_moveSwap sp; + u8 r2; + sp.ptr_8 = &gUnknown_0203CF1C->summary.moves[a]; + sp.ptr_1C = &sp.field_2; + sp.field_2 = gUnknown_0203CF1C->summary.moves[a]; + sp.ptr_C = &gUnknown_0203CF1C->summary.moves[b]; + sp.field_0 = gUnknown_0203CF1C->summary.moves[b]; + sp.ptr_10 = &gUnknown_0203CF1C->summary.pp[a]; + sp.ptr_24 = &sp.field_5; + sp.field_5 = gUnknown_0203CF1C->summary.pp[a]; + sp.ptr_14 = &gUnknown_0203CF1C->summary.pp[b]; + sp.ptr_20 = &sp.field_4; + sp.field_4 = gUnknown_0203CF1C->summary.pp[b]; + sp.ptr_18 = &gUnknown_0203CF1C->summary.ppBonuses; + sp.field_6 = gUnknown_0203CF1C->summary.ppBonuses; } */ \ No newline at end of file From 750937c58c96b51645ba9be5d65aa7c080cf2d6d Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Tue, 3 Oct 2017 16:10:18 -0400 Subject: [PATCH 087/182] fix battle.h --- include/battle.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/battle.h b/include/battle.h index 2c7b7db665..aa01735e11 100644 --- a/include/battle.h +++ b/include/battle.h @@ -257,6 +257,8 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 +#include "global.h" + struct TrainerMonNoItemDefaultMoves { u16 species; @@ -264,8 +266,6 @@ struct TrainerMonNoItemDefaultMoves u16 evsValue; }; -#include "global.h" - u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); u8 GetBankSide(u8 bank); From cfc70c980630525d660156c4e732ae10d9f57729 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 4 Oct 2017 02:38:25 -0500 Subject: [PATCH 088/182] Extract baseroms from miscellaneous files Had to leave some unfinished due to complexity at the moment --- asm/battle_1.s | 10 +- asm/battle_7.s | 4 +- asm/battle_controller_linkopponent.s | 4 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 4 +- asm/battle_controller_player.s | 8 +- asm/battle_controller_player_partner.s | 4 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 4 +- asm/battle_controller_safari.s | 2 +- asm/battle_controller_wally.s | 4 +- asm/main_menu.s | 14 +- asm/reshow_battle_screen.s | 4 +- asm/rom_80A5C6C.s | 4 +- data/battle_1.s | 12 + data/battle_anims.s | 720 ++- data/battle_message.s | 14 + data/data2b.s | 4939 ++++++++++++++++++- data/enemy_mon_elevation.inc | 415 ++ data/fanfares.s | 20 +- data/graphics.s | 118 +- data/graphics/trainers/back_pic_coords.inc | 10 + data/graphics/trainers/front_pic_coords.inc | 95 + data/main_menu.s | 141 + data/reset_rtc_screen.s | 2 +- data/strings.s | 84 +- data/title_screen.s | 11 +- data/trainer_money.inc | 59 + data/trainer_see.s | 6 +- data/type_effectiveness.inc | 119 + graphics/birch_speech/bg0.pal | 19 + graphics/birch_speech/bg1.pal | 19 + graphics/birch_speech/bg2.pal | 11 + graphics/birch_speech/map.bin | Bin 0 -> 1280 bytes graphics/birch_speech/shadow.png | Bin 0 -> 433 bytes graphics/link/minigame_digits.pal | 19 + graphics/link/minigame_digits.png | Bin 0 -> 264 bytes graphics/link/minigame_digits2.png | Bin 0 -> 296 bytes graphics/misc/main_menu_bg.pal | 19 + graphics/misc/main_menu_text.pal | 19 + graphics/title_screen/unk_853EF78.pal | 115 + ld_script.txt | 2 + src/util.c | 2 +- 43 files changed, 6815 insertions(+), 245 deletions(-) create mode 100644 data/battle_1.s create mode 100644 data/enemy_mon_elevation.inc create mode 100644 data/graphics/trainers/back_pic_coords.inc create mode 100644 data/graphics/trainers/front_pic_coords.inc create mode 100644 data/main_menu.s create mode 100644 data/trainer_money.inc create mode 100644 data/type_effectiveness.inc create mode 100644 graphics/birch_speech/bg0.pal create mode 100644 graphics/birch_speech/bg1.pal create mode 100644 graphics/birch_speech/bg2.pal create mode 100644 graphics/birch_speech/map.bin create mode 100644 graphics/birch_speech/shadow.png create mode 100644 graphics/link/minigame_digits.pal create mode 100644 graphics/link/minigame_digits.png create mode 100644 graphics/link/minigame_digits2.png create mode 100644 graphics/misc/main_menu_bg.pal create mode 100644 graphics/misc/main_menu_text.pal create mode 100644 graphics/title_screen/unk_853EF78.pal diff --git a/asm/battle_1.s b/asm/battle_1.s index 636bafbea0..d57f91d378 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1547,7 +1547,7 @@ _080358E0: .4byte _08035A40 .4byte _08035A70 _08035904: - ldr r4, =gUnknown_0831ABA8 + ldr r4, =gBattleTerrainTable ldr r5, =gBattleTerrain ldrb r1, [r5] lsls r0, r1, 2 @@ -2632,7 +2632,7 @@ _08036350: lsls r0, 24 cmp r0, 0 bne _0803639C - ldr r4, =gUnknown_0831ABA8 + ldr r4, =gBattleTerrainTable ldr r5, =gBattleTerrain ldrb r1, [r5] lsls r0, r1, 2 @@ -2778,7 +2778,7 @@ _080364A8: .4byte _08036510 .4byte _08036518 _080364CC: - ldr r2, =gUnknown_0831ABA8 + ldr r2, =gBattleTerrainTable ldr r0, =gBattleTerrain ldrb r1, [r0] lsls r0, r1, 2 @@ -2888,7 +2888,7 @@ _080365B4: .4byte _0803661C .4byte _08036624 _080365D8: - ldr r2, =gUnknown_0831ABA8 + ldr r2, =gBattleTerrainTable ldr r0, =gBattleTerrain ldrb r1, [r0] lsls r0, r1, 2 @@ -3003,7 +3003,7 @@ _080366C8: .4byte _08036738 .4byte _08036740 _080366EC: - ldr r2, =gUnknown_0831ABA8 + ldr r2, =gBattleTerrainTable ldr r0, =gBattleTerrain ldrb r1, [r0] lsls r0, r1, 2 diff --git a/asm/battle_7.s b/asm/battle_7.s index 0115598196..0b5ca514f3 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -3365,7 +3365,7 @@ _0805EDE4: adds r4, r1, 0 cmp r0, 0 beq _0805EE06 - ldr r0, =gUnknown_08305DCC + ldr r0, =gEnemyMonElevation ldrh r1, [r3, 0x2] adds r1, r0 ldrb r0, [r1] @@ -3441,7 +3441,7 @@ sub_805EE54: @ 805EE54 beq _0805EE7E adds r5, r0, 0 _0805EE7E: - ldr r0, =gUnknown_08305DCC + ldr r0, =gEnemyMonElevation adds r0, r5, r0 ldrb r0, [r0] cmp r0, 0 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 5a762a174a..8ea32eca04 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -4283,7 +4283,7 @@ _0806694C: bl sub_806A12C ldr r6, =gUnknown_0202499C mov r9, r7 - ldr r1, =gUnknown_083054E0 + ldr r1, =gTrainerFrontPicCoords mov r2, r8 lsls r0, r2, 2 adds r0, r1 @@ -4411,7 +4411,7 @@ _08066A76: mov r0, r8 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r2, =gUnknown_083054E0 + ldr r2, =gTrainerFrontPicCoords mov r3, r8 lsls r1, r3, 2 adds r1, r2 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 3a1b21ed7d..504ba6b5c8 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -3706,7 +3706,7 @@ _0814D002: bl sub_806A12C ldr r6, =gUnknown_0202499C mov r8, r7 - ldr r0, =gUnknown_08305D2C + ldr r0, =gTrainerBackPicCoords lsls r4, 2 adds r4, r0 ldrb r0, [r4] diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 69d4776d4d..0910fc8e2c 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -4339,7 +4339,7 @@ _080617CA: bl sub_806A12C ldr r6, =gUnknown_0202499C mov r9, r7 - ldr r1, =gUnknown_083054E0 + ldr r1, =gTrainerFrontPicCoords mov r2, r8 lsls r0, r2, 2 adds r0, r1 @@ -4564,7 +4564,7 @@ _080619DE: mov r0, r8 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r2, =gUnknown_083054E0 + ldr r2, =gTrainerFrontPicCoords mov r3, r8 lsls r1, r3, 2 adds r1, r2 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 5f7e1b9544..d3b29ffe88 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -7371,11 +7371,11 @@ _0805B5E0: beq _0805B618 movs r0, 0x5A mov r9, r0 - ldr r1, =gUnknown_083054E0 + ldr r1, =gTrainerFrontPicCoords b _0805B642 .pool _0805B618: - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords lsls r0, r4, 2 adds r0, r1 ldrb r1, [r0] @@ -7392,7 +7392,7 @@ _0805B618: _0805B63C: movs r0, 0x50 mov r9, r0 - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords _0805B642: lsls r0, r4, 2 adds r0, r1 @@ -7733,7 +7733,7 @@ _0805B926: adds r0, r4, 0 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords lsls r4, 2 adds r4, r1 ldrb r1, [r4] diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 784eacab11..32e3ac5d1d 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4182,7 +4182,7 @@ sub_81BD37C: @ 81BD37C movs r4, 0x7 movs r0, 0x5A mov r9, r0 - ldr r0, =gUnknown_08305D2C + ldr r0, =gTrainerBackPicCoords ldrb r1, [r0, 0x1C] b _081BD3BE .pool @@ -4193,7 +4193,7 @@ _081BD3A8: lsrs r4, r0, 24 movs r0, 0x20 mov r9, r0 - ldr r1, =gUnknown_083054E0 + ldr r1, =gTrainerFrontPicCoords lsls r0, r4, 2 adds r0, r1 ldrb r1, [r0] diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 90928e7d4a..cde1bc1284 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4096,7 +4096,7 @@ _0818892C: bl sub_806A12C ldr r6, =gUnknown_0202499C mov r9, r7 - ldr r1, =gUnknown_083054E0 + ldr r1, =gTrainerFrontPicCoords mov r2, r8 lsls r0, r2, 2 adds r0, r1 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 534f340681..f24cf8c4ad 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4033,14 +4033,14 @@ _0818BD72: beq _0818BD9C movs r0, 0x5A mov r9, r0 - ldr r1, =gUnknown_083054E0 + ldr r1, =gTrainerFrontPicCoords b _0818BD9E .pool _0818BD98: movs r0, 0x50 mov r9, r0 _0818BD9C: - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords _0818BD9E: lsls r0, r4, 2 adds r0, r1 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index cc149ea4f7..a8187d6421 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -580,7 +580,7 @@ sub_8159800: @ 8159800 adds r0, r6, 0 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r2, =gUnknown_08305D2C + ldr r2, =gTrainerBackPicCoords ldr r1, [r4] ldrb r1, [r1, 0x8] lsls r1, 2 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index eab7174664..9f3b4ce561 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3039,7 +3039,7 @@ sub_8169EC8: @ 8169EC8 movs r0, 0x6 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords ldrb r1, [r1, 0x18] movs r2, 0x8 subs r2, r1 @@ -3124,7 +3124,7 @@ dp01t_07_6_: @ 8169F94 movs r0, 0x6 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords ldrb r1, [r1, 0x18] movs r2, 0x8 subs r2, r1 diff --git a/asm/main_menu.s b/asm/main_menu.s index 40466ae1bf..6194f04874 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -119,11 +119,11 @@ InitMainMenu: @ 802F6F4 str r0, [r1, 0x8] ldr r0, [r1, 0x8] bl ResetPaletteFade - ldr r0, =gUnknown_082FF0A0 + ldr r0, =gMainMenuBgPal movs r1, 0 movs r2, 0x20 bl LoadPalette - ldr r0, =gUnknown_082FF0C0 + ldr r0, =gMainMenuTextPal movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -1914,7 +1914,7 @@ task_new_game_prof_birch_speech_1: @ 80307B0 movs r0, 0x54 movs r1, 0 bl SetGpuReg - ldr r0, =gUnknown_082FED3C + ldr r0, =gBirchIntroShadowGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram @@ -3679,7 +3679,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678 str r0, [r1, 0x8] ldr r0, [r1, 0x8] bl ResetPaletteFade - ldr r0, =gUnknown_082FED3C + ldr r0, =gBirchIntroShadowGfx adds r1, r4, 0 bl LZ77UnCompVram ldr r0, =gUnknown_082FEEF0 @@ -3689,7 +3689,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678 movs r1, 0 movs r2, 0x40 bl LoadPalette - ldr r0, =gUnknown_082FF01A + ldr r0, =gUnknown_082FF018+2 movs r1, 0x1 movs r2, 0x10 bl LoadPalette @@ -4459,11 +4459,11 @@ set_default_player_name: @ 8031DC4 adds r5, r1, 0 cmp r0, 0 bne _08031DE4 - ldr r1, =gUnknown_082FF128 + ldr r1, =gMalePresetNames b _08031DE6 .pool _08031DE4: - ldr r1, =gUnknown_082FF178 + ldr r1, =gFemalePresetNames _08031DE6: lsls r0, r2, 2 adds r0, r1 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 42ba43ec0e..2066c37ed0 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -618,7 +618,7 @@ _080A986C: adds r0, r4, 0 bl sub_806A12C ldr r6, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords ldr r0, [r5] ldrb r0, [r0, 0x8] lsls r0, 2 @@ -656,7 +656,7 @@ _080A98D0: movs r0, 0x6 bl sub_806A12C ldr r5, =gUnknown_0202499C - ldr r0, =gUnknown_08305D2C + ldr r0, =gTrainerBackPicCoords ldrb r0, [r0, 0x18] movs r4, 0x8 subs r4, r0 diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index 267045179b..0f6f5a6231 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -419,11 +419,11 @@ _080A5FE8: lsls r0, 1 cmp r4, r0 bls _080A5FF8 - ldr r0, =gUnknown_08305DCC + ldr r0, =gEnemyMonElevation b _080A5FFC .pool _080A5FF8: - ldr r0, =gUnknown_08305DCC + ldr r0, =gEnemyMonElevation adds r0, r7, r0 _080A5FFC: ldrb r5, [r0] diff --git a/data/battle_1.s b/data/battle_1.s new file mode 100644 index 0000000000..37f68bfd65 --- /dev/null +++ b/data/battle_1.s @@ -0,0 +1,12 @@ + + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_082FF1C8:: @ 82FF1C8 + .byte 0x01, 0x04, 0x10, 0x40 + .byte 0x02, 0x04, 0x08, 0x20 + .byte 0x02, 0x04, 0x08, 0x20 + .byte 0x00, 0x00, 0x00, 0x00 diff --git a/data/battle_anims.s b/data/battle_anims.s index 6b48bcd2ae..471394fe8f 100644 --- a/data/battle_anims.s +++ b/data/battle_anims.s @@ -4,6 +4,8 @@ .section .rodata .align 2, 0 + @ only partially done because this file terrifies me + gUnknown_08524904:: @ 8524904 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 @@ -291,62 +293,740 @@ gUnknown_08524B34:: @ 8524B34 gUnknown_08524B3C:: @ 8524B3C .byte 0x00, 0x87, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00 + .align 2 gUnknown_08524B44:: @ 8524B44 - .incbin "baserom.gba", 0x524b44, 0x1d0 + obj_tiles 0x08c02538, 0x0200, 0x2710 + obj_tiles 0x08c1c6e0, 0x0300, 0x2711 + obj_tiles 0x08c20784, 0x0200, 0x2712 + obj_tiles 0x08c025e8, 0x0100, 0x2713 + obj_tiles 0x08c0265c, 0x0200, 0x2714 + obj_tiles 0x08c0270c, 0x0400, 0x2715 + obj_tiles 0x08c027e0, 0x0180, 0x2716 + obj_tiles 0x08c029cc, 0x0800, 0x2717 + obj_tiles 0x08c02b68, 0x0020, 0x2718 + obj_tiles 0x08c02fa4, 0x0400, 0x2719 + obj_tiles 0x08c02bc4, 0x1200, 0x271a + obj_tiles 0x08c032ac, 0x0180, 0x271b + obj_tiles 0x08c0334c, 0x0080, 0x271c + obj_tiles 0x08c03438, 0x0080, 0x271d + obj_tiles 0x08c1fbd4, 0x0280, 0x271e + obj_tiles 0x08c03484, 0x0080, 0x271f + obj_tiles 0x08c03518, 0x0100, 0x2720 + obj_tiles 0x08c03598, 0x0020, 0x2721 + obj_tiles 0x08c24d7c, 0x0080, 0x2722 + obj_tiles 0x08c035f8, 0x0400, 0x2723 + obj_tiles 0x08c036b8, 0x0200, 0x2724 + obj_tiles 0x08c03a28, 0x0a00, 0x2725 + obj_tiles 0x08c03a28, 0x0a00, 0x2726 + obj_tiles 0x08c037d4, 0x0380, 0x2727 + obj_tiles 0x08c03ea0, 0x0300, 0x2728 + obj_tiles 0x08c03db0, 0x0a00, 0x2729 + obj_tiles 0x08c04494, 0x0a00, 0x272a + obj_tiles 0x08c0481c, 0x0a00, 0x272b + obj_tiles 0x08c04b40, 0x0a00, 0x272c + obj_tiles 0x08c04e90, 0x0a00, 0x272d + obj_tiles 0x08c05170, 0x0a00, 0x272e + obj_tiles 0x08c03f80, 0x0e00, 0x272f + obj_tiles 0x08c043a8, 0x0380, 0x2730 + obj_tiles 0x08c0557c, 0x1000, 0x2731 + obj_tiles 0x08c05eec, 0x0800, 0x2732 + obj_tiles 0x08c062b8, 0x0a00, 0x2733 + obj_tiles 0x08c06678, 0x0800, 0x2734 + obj_tiles 0x08c06a4c, 0x0a00, 0x2735 + obj_tiles 0x08c07964, 0x0a00, 0x2736 + obj_tiles 0x08c07b88, 0x0a00, 0x2737 + obj_tiles 0x08c07e84, 0x0a00, 0x2738 + obj_tiles 0x08c08090, 0x0a00, 0x2739 + obj_tiles 0x08c082c4, 0x0a00, 0x273a + obj_tiles 0x08c085bc, 0x0a00, 0x273b + obj_tiles 0x08c08a0c, 0x0a00, 0x273c + obj_tiles 0x08c08ca0, 0x0a00, 0x273d + obj_tiles 0x08c09604, 0x1000, 0x273e + obj_tiles 0x08c09604, 0x1000, 0x273f + obj_tiles 0x08c09cf0, 0x1000, 0x2740 + obj_tiles 0x08c09cf0, 0x1000, 0x2741 + obj_tiles 0x08c09ffc, 0x0200, 0x2742 + obj_tiles 0x08c0a09c, 0x0200, 0x2743 + obj_tiles 0x08c0a148, 0x0200, 0x2744 + obj_tiles 0x08c2e830, 0x0800, 0x2745 + obj_tiles 0x08c0a3a8, 0x0080, 0x2746 + obj_tiles 0x08c0a8bc, 0x0200, 0x2747 + obj_tiles 0x08c0a3ec, 0x1000, 0x2748 + obj_tiles 0x08c0a980, 0x0180, 0x2749 + .align 2 gUnknown_08524D14:: @ 8524D14 - .incbin "baserom.gba", 0x524d14, 0x270 + obj_tiles 0x08c0aa2c, 0x0c00, 0x274a + obj_tiles 0x08c0aebc, 0x0100, 0x274b + obj_tiles 0x08c0af38, 0x0040, 0x274c + obj_tiles 0x08c0af7c, 0x0180, 0x274d + obj_tiles 0x08c0b04c, 0x0800, 0x274e + obj_tiles 0x08c0b444, 0x0480, 0x274f + obj_tiles 0x08c23104, 0x0200, 0x2750 + obj_tiles 0x08c0b6bc, 0x0200, 0x2751 + obj_tiles 0x08c0b7f0, 0x0100, 0x2752 + obj_tiles 0x08c0b6bc, 0x0200, 0x2753 + obj_tiles 0x08c0b6bc, 0x0200, 0x2754 + obj_tiles 0x08c0b6bc, 0x0200, 0x2755 + obj_tiles 0x08c0b864, 0x0200, 0x2756 + obj_tiles 0x08c0b90c, 0x0a00, 0x2757 + obj_tiles 0x08c0bb38, 0x0300, 0x2758 + obj_tiles 0x08c0bc20, 0x0180, 0x2759 + obj_tiles 0x08c1b29c, 0x00a0, 0x275a + obj_tiles 0x08c0bd5c, 0x0700, 0x275b + obj_tiles 0x08c14cec, 0x0400, 0x275c + obj_tiles 0x08c14f50, 0x0200, 0x275d + obj_tiles 0x08c0bffc, 0x0300, 0x275e + obj_tiles 0x08c0c1bc, 0x0c00, 0x275f + obj_tiles 0x08c0c5ec, 0x0a00, 0x2760 + obj_tiles 0x08c0c974, 0x0080, 0x2761 + obj_tiles 0x08c0cb90, 0x0040, 0x2762 + obj_tiles 0x08c0ce18, 0x0e00, 0x2763 + obj_tiles 0x08c0d2bc, 0x0e00, 0x2764 + obj_tiles 0x08c0d680, 0x0280, 0x2765 + obj_tiles 0x08c0d738, 0x0200, 0x2766 + obj_tiles 0x08c24cfc, 0x0080, 0x2767 + obj_tiles 0x08c0d8a8, 0x00c0, 0x2768 + obj_tiles 0x08c0d8f8, 0x0a00, 0x2769 + obj_tiles 0x08c0db6c, 0x0200, 0x276a + obj_tiles 0x08c0dbfc, 0x0180, 0x276b + obj_tiles 0x08c0dd30, 0x0080, 0x276c + obj_tiles 0x08c0ddac, 0x1000, 0x276d + obj_tiles 0x08c0e47c, 0x0a00, 0x276e + obj_tiles 0x08c0e620, 0x0180, 0x276f + obj_tiles 0x08c0e6d0, 0x0380, 0x2770 + obj_tiles 0x08c0e840, 0x0c00, 0x2771 + obj_tiles 0x08c0ea20, 0x0200, 0x2772 + obj_tiles 0x08c27cec, 0x0200, 0x2773 + obj_tiles 0x08c0eb58, 0x0200, 0x2774 + obj_tiles 0x08c0ec58, 0x0200, 0x2775 + obj_tiles 0x08c0ed88, 0x0400, 0x2776 + obj_tiles 0x08c0ef20, 0x0080, 0x2777 + obj_tiles 0x08c0ef8c, 0x0400, 0x2778 + obj_tiles 0x08c0f174, 0x0c00, 0x2779 + obj_tiles 0x08c0f720, 0x0200, 0x277a + obj_tiles 0x08c0f810, 0x1000, 0x277b + obj_tiles 0x08c0fbe4, 0x0a00, 0x277c + obj_tiles 0x08c0ff68, 0x0020, 0x277d + obj_tiles 0x08c0ffb8, 0x0e00, 0x277e + obj_tiles 0x08c1039c, 0x0080, 0x277f + obj_tiles 0x08c10404, 0x0a00, 0x2780 + obj_tiles 0x08c10754, 0x0400, 0x2781 + obj_tiles 0x08c109e8, 0x0200, 0x2782 + obj_tiles 0x08c115e4, 0x0700, 0x2783 + obj_tiles 0x08c12e88, 0x0800, 0x2784 + obj_tiles 0x08c1315c, 0x0a00, 0x2785 + obj_tiles 0x08c133b4, 0x0600, 0x2786 + obj_tiles 0x08c13568, 0x0800, 0x2787 + obj_tiles 0x08c13820, 0x0200, 0x2788 + obj_tiles 0x08c1393c, 0x0040, 0x2789 + obj_tiles 0x08c1398c, 0x0180, 0x278a + obj_tiles 0x08c13aa4, 0x0600, 0x278b + obj_tiles 0x08c13be0, 0x0600, 0x278c + obj_tiles 0x08c13ea0, 0x0200, 0x278d + obj_tiles 0x08c13fb4, 0x0080, 0x278e + obj_tiles 0x08c1403c, 0x0200, 0x278f + obj_tiles 0x08c14200, 0x0800, 0x2790 + obj_tiles 0x08c1448c, 0x0080, 0x2791 + obj_tiles 0x08c144f0, 0x0a00, 0x2792 + obj_tiles 0x08c148e8, 0x0280, 0x2793 + obj_tiles 0x08c14a58, 0x0280, 0x2794 + obj_tiles 0x08c14b78, 0x0100, 0x2795 + obj_tiles 0x08c14c1c, 0x0200, 0x2796 + obj_tiles 0x08c1a3a0, 0x0200, 0x2797 + .align 2 gUnknown_08524F84:: @ 8524F84 - .incbin "baserom.gba", 0x524f84, 0x308 + obj_tiles 0x08c1a540, 0x0020, 0x2798 + obj_tiles 0x08c1a58c, 0x0a00, 0x2799 + obj_tiles 0x08c1ab40, 0x0800, 0x279a + obj_tiles 0x08c1a790, 0x0800, 0x279b + obj_tiles 0x08c1ac8c, 0x00c0, 0x279c + obj_tiles 0x08c1ad2c, 0x01c0, 0x279d + obj_tiles 0x08c1ae54, 0x0100, 0x279e + obj_tiles 0x08c2cbac, 0x0800, 0x279f + obj_tiles 0x08c1bc64, 0x0200, 0x27a0 + obj_tiles 0x08c1a9a0, 0x0800, 0x27a1 + obj_tiles 0x08c02478, 0x0180, 0x27a2 + obj_tiles 0x08c1af6c, 0x0180, 0x27a3 + obj_tiles 0x08c1b178, 0x0200, 0x27a4 + obj_tiles 0x08c1b0a8, 0x0200, 0x27a5 + obj_tiles 0x08c1b328, 0x0180, 0x27a6 + obj_tiles 0x08c1b418, 0x0400, 0x27a7 + obj_tiles 0x08c033cc, 0x0080, 0x27a8 + obj_tiles 0x08c1b510, 0x0100, 0x27a9 + obj_tiles 0x08c1b594, 0x0100, 0x27aa + obj_tiles 0x08c1b660, 0x0140, 0x27ab + obj_tiles 0x08c1b748, 0x0800, 0x27ac + obj_tiles 0x08c1b988, 0x0200, 0x27ad + obj_tiles 0x08c1ba04, 0x0100, 0x27ae + obj_tiles 0x08c1baf0, 0x00a0, 0x27af + obj_tiles 0x08c1bb94, 0x0100, 0x27b0 + obj_tiles 0x08c0297c, 0x0080, 0x27b1 + obj_tiles 0x08c1be40, 0x0300, 0x27b2 + obj_tiles 0x08c1bee4, 0x0100, 0x27b3 + obj_tiles 0x08c1bee4, 0x0100, 0x27b4 + obj_tiles 0x08c1bee4, 0x0100, 0x27b5 + obj_tiles 0x08c1bfa4, 0x0800, 0x27b6 + obj_tiles 0x08c1bfa4, 0x0800, 0x27b7 + obj_tiles 0x08c1bfa4, 0x0800, 0x27b8 + obj_tiles 0x08c1bfa4, 0x0800, 0x27b9 + obj_tiles 0x08c1bfa4, 0x0800, 0x27ba + obj_tiles 0x08c1c350, 0x0080, 0x27bb + obj_tiles 0x08c1bc64, 0x0200, 0x27bc + obj_tiles 0x08c1c7bc, 0x0200, 0x27bd + obj_tiles 0x08c1d5fc, 0x0200, 0x27be + obj_tiles 0x08c1d6c4, 0x0080, 0x27bf + obj_tiles 0x08c1d750, 0x0200, 0x27c0 + obj_tiles 0x08c1d8d0, 0x0500, 0x27c1 + obj_tiles 0x08c1d9ac, 0x0800, 0x27c2 + obj_tiles 0x08c1db64, 0x0400, 0x27c3 + obj_tiles 0x08c1dc40, 0x0020, 0x27c4 + obj_tiles 0x08c1dc58, 0x0800, 0x27c5 + obj_tiles 0x08c1dfe8, 0x0100, 0x27c6 + obj_tiles 0x08c1e0b4, 0x0800, 0x27c7 + obj_tiles 0x08c1e354, 0x0400, 0x27c8 + obj_tiles 0x08c1e4d0, 0x0a00, 0x27c9 + obj_tiles 0x08c1edd8, 0x1000, 0x27ca + obj_tiles 0x08c1ebc8, 0x0800, 0x27cb + obj_tiles 0x08d966c0, 0x0400, 0x27cc + obj_tiles 0x08c20198, 0x0200, 0x27cd + obj_tiles 0x08c1fc84, 0x0800, 0x27ce + obj_tiles 0x08c1ff04, 0x0800, 0x27cf + obj_tiles 0x08c2023c, 0x0800, 0x27d0 + obj_tiles 0x08c204e4, 0x0200, 0x27d1 + obj_tiles 0x08c20c4c, 0x0800, 0x27d2 + obj_tiles 0x08c20fac, 0x0200, 0x27d3 + obj_tiles 0x08c20890, 0x0800, 0x27d4 + obj_tiles 0x08c21084, 0x0200, 0x27d5 + obj_tiles 0x08c2121c, 0x0800, 0x27d6 + obj_tiles 0x08c21634, 0x0400, 0x27d7 + obj_tiles 0x08c21718, 0x0200, 0x27d8 + obj_tiles 0x08c21874, 0x0a80, 0x27d9 + obj_tiles 0x08c220a8, 0x0600, 0x27da + obj_tiles 0x08c22234, 0x0800, 0x27db + obj_tiles 0x08c21f0c, 0x0200, 0x27dc + obj_tiles 0x08c226a4, 0x0600, 0x27dd + obj_tiles 0x08c22404, 0x0800, 0x27de + obj_tiles 0x08c228fc, 0x0180, 0x27df + obj_tiles 0x08c229ec, 0x0800, 0x27e0 + obj_tiles 0x08c22ddc, 0x0800, 0x27e1 + obj_tiles 0x08c23218, 0x0080, 0x27e2 + obj_tiles 0x08c242b0, 0x0080, 0x27e3 + obj_tiles 0x08c2407c, 0x0800, 0x27e4 + obj_tiles 0x08c24300, 0x0800, 0x27e5 + obj_tiles 0x08c24590, 0x0600, 0x27e6 + obj_tiles 0x08c24820, 0x0600, 0x27e7 + obj_tiles 0x08c23218, 0x0080, 0x27e8 + obj_tiles 0x08c23ff4, 0x0080, 0x27e9 + obj_tiles 0x08c24c50, 0x0180, 0x27ea + obj_tiles 0x08c23218, 0x0080, 0x27eb + obj_tiles 0x08c24dfc, 0x0200, 0x27ec + obj_tiles 0x08c24f48, 0x0400, 0x27ed + obj_tiles 0x08c251ac, 0x0a00, 0x27ee + obj_tiles 0x08c254e0, 0x0800, 0x27ef + obj_tiles 0x08c25794, 0x0200, 0x27f0 + obj_tiles 0x08c27764, 0x0400, 0x27f1 + obj_tiles 0x08c27a58, 0x0080, 0x27f2 + obj_tiles 0x08c27910, 0x0800, 0x27f3 + obj_tiles 0x08c25b1c, 0x0200, 0x27f4 + obj_tiles 0x08c27b08, 0x0300, 0x27f5 + obj_tiles 0x08c258b8, 0x0800, 0x27f6 + obj_tiles 0x08c28394, 0x0380, 0x27f7 + obj_tiles 0x08c27e34, 0x0800, 0x27f8 + .align 2 gUnknown_0852528C:: @ 852528C - .incbin "baserom.gba", 0x52528c, 0x120 + obj_tiles 0x08c28564, 0x00c0, 0x27f9 + obj_tiles 0x08c28610, 0x0800, 0x27fa + obj_tiles 0x08c28880, 0x0060, 0x27fb + obj_tiles 0x08c28880, 0x0060, 0x27fc + obj_tiles 0x08c28880, 0x0060, 0x27fd + obj_tiles 0x08c287f4, 0x0080, 0x27fe + obj_tiles 0x08c2caa0, 0x0180, 0x27ff + obj_tiles 0x08c2cdf4, 0x0180, 0x2800 + obj_tiles 0x08c2d348, 0x0200, 0x2801 + obj_tiles 0x08c2d570, 0x0200, 0x2802 + obj_tiles 0x08c2d6d0, 0x0020, 0x2803 + obj_tiles 0x08c2e554, 0x0400, 0x2804 + obj_tiles 0x08c2df08, 0x0600, 0x2805 + obj_tiles 0x08c2e0ac, 0x1000, 0x2806 + obj_tiles 0x08c2e64c, 0x0400, 0x2807 + obj_tiles 0x08c2eba4, 0x0020, 0x2808 + obj_tiles 0x08c2ebd4, 0x0080, 0x2809 + obj_tiles 0x08c2ec44, 0x0800, 0x280a + obj_tiles 0x08c2ee38, 0x0080, 0x280b + obj_tiles 0x08c2eeb4, 0x0200, 0x280c + obj_tiles 0x08c2eff0, 0x0400, 0x280d + obj_tiles 0x08c2f1f4, 0x0200, 0x280e + obj_tiles 0x08c2f354, 0x0200, 0x280f + obj_tiles 0x08c2f4f0, 0x0800, 0x2810 + obj_tiles 0x08c2f8a4, 0x0280, 0x2811 + obj_tiles 0x08c2f3e0, 0x0200, 0x2812 + obj_tiles 0x08c1b0a8, 0x0200, 0x2813 + obj_tiles 0x08d8dae0, 0x0400, 0x2814 + obj_tiles 0x08d8d2a4, 0x0200, 0x2815 + obj_tiles 0x08d8e840, 0x0200, 0x2816 + obj_tiles 0x08d93b44, 0x0080, 0x2817 + obj_tiles 0x08d8ea54, 0x0020, 0x2818 + obj_tiles 0x08d8ea54, 0x0020, 0x2819 + obj_tiles 0x08d93b9c, 0x0080, 0x281a + obj_tiles 0x08c2407c, 0x0800, 0x281b + obj_tiles 0x08d8ea54, 0x0020, 0x281c + .align 2 gUnknown_085253AC:: @ 85253AC - .incbin "baserom.gba", 0x5253ac, 0x270 + obj_tiles 0x08d8ef2c, 0x0080, 0x281d + obj_tiles 0x08dba378, 0x0400, 0x281e + obj_tiles 0x08dba4b8, 0x0080, 0x281f + obj_tiles 0x08d8ecc4, 0x0800, 0x2820 + obj_tiles 0x08d8ef04, 0x0020, 0x2821 + obj_tiles 0x08d8ef98, 0x0800, 0x2822 + obj_tiles 0x08d8f118, 0x0800, 0x2823 + obj_tiles 0x08d8f284, 0x0800, 0x2824 + obj_tiles 0x08d92eec, 0x1000, 0x2825 + obj_tiles 0x08d93c24, 0x0800, 0x2826 + obj_tiles 0x08d93e4c, 0x00a0, 0x2827 + obj_tiles 0x08d8f780, 0x0800, 0x2828 + obj_tiles 0x08d93eb4, 0x0200, 0x2829 + obj_tiles 0x08dba174, 0x0600, 0x282a + obj_tiles 0x08d93474, 0x0200, 0x282b + obj_tiles 0x08d94658, 0x0800, 0x282c + obj_tiles 0x08d949f0, 0x0200, 0x282d + obj_tiles 0x08c1e0b4, 0x0800, 0x282e + obj_tiles 0x08c0a3ec, 0x1000, 0x282f + obj_tiles 0x08c1bee4, 0x0100, 0x2830 + obj_pal 0x08c028cc, 0x2710 + obj_pal 0x08c1c794, 0x2711 + obj_pal 0x08c20868, 0x2712 + obj_pal 0x08c028f0, 0x2713 + obj_pal 0x08c02918, 0x2714 + obj_pal 0x08c0292c, 0x2715 + obj_pal 0x08c02954, 0x2716 + obj_pal 0x08c02b48, 0x2717 + obj_pal 0x08c02b88, 0x2718 + obj_pal 0x08c0328c, 0x2719 + obj_pal 0x08c02ba4, 0x271a + obj_pal 0x08c03324, 0x271b + obj_pal 0x08c033b4, 0x271c + obj_pal 0x08c0346c, 0x271d + obj_pal 0x08c1fc68, 0x271e + obj_pal 0x08c034f0, 0x271f + obj_pal 0x08c03588, 0x2720 + obj_pal 0x08c03588, 0x2721 + obj_pal 0x08c24db8, 0x2722 + obj_pal 0x08c035dc, 0x2723 + obj_pal 0x08c03784, 0x2724 + obj_pal 0x08c03a00, 0x2725 + obj_pal 0x08c03d60, 0x2726 + obj_pal 0x08c037ac, 0x2727 + obj_pal 0x08c03f6c, 0x2728 + obj_pal 0x08c03d88, 0x2729 + obj_pal 0x08c047cc, 0x272a + obj_pal 0x08c047f4, 0x272b + obj_pal 0x08c04b18, 0x272c + obj_pal 0x08c05148, 0x272d + obj_pal 0x08c05530, 0x272e + obj_pal 0x08c04360, 0x272f + obj_pal 0x08c04380, 0x2730 + obj_pal 0x08c05554, 0x2731 + obj_pal 0x08c05554, 0x2732 + obj_pal 0x08c05554, 0x2733 + obj_pal 0x08c06650, 0x2734 + obj_pal 0x08c06650, 0x2735 + obj_pal 0x08c07914, 0x2736 + obj_pal 0x08c0793c, 0x2737 + obj_pal 0x08c07914, 0x2738 + obj_pal 0x08c07914, 0x2739 + obj_pal 0x08c08594, 0x273a + obj_pal 0x08c089bc, 0x273b + obj_pal 0x08c089e4, 0x273c + obj_pal 0x08c08c78, 0x273d + obj_pal 0x08c099e4, 0x273e + obj_pal 0x08c09a04, 0x273e + obj_pal 0x08c09f88, 0x2740 + obj_pal 0x08c09fb0, 0x2741 + obj_pal 0x08c09fd8, 0x2742 + obj_pal 0x08c09fd8, 0x2743 + obj_pal 0x08c09fd8, 0x2744 + obj_pal 0x08c047cc, 0x2745 + obj_pal 0x08c0a3d4, 0x2746 + obj_pal 0x08c09fd8, 0x2747 + obj_pal 0x08c0a894, 0x2748 + obj_pal 0x08c0aa08, 0x2749 + + .align 2 gUnknown_0852561C:: @ 852561C - .incbin "baserom.gba", 0x52561c, 0x270 + obj_pal 0x08c0ae94, 0x274a + obj_pal 0x08c0af1c, 0x274b + obj_pal 0x08c0af60, 0x274c + obj_pal 0x08c0b02c, 0x274d + obj_pal 0x08c0b41c, 0x274e + obj_pal 0x08c0b600, 0x274f + obj_pal 0x08c231f4, 0x2750 + obj_pal 0x08c0b7d0, 0x2751 + obj_pal 0x08c0b83c, 0x2752 + obj_pal 0x08d8eaa4, 0x2753 + obj_pal 0x08d8eac4, 0x2754 + obj_pal 0x08c0b7d0, 0x2755 + obj_pal 0x08c0b8e4, 0x2756 + obj_pal 0x08c0b8e4, 0x2757 + obj_pal 0x08c0bc08, 0x2758 + obj_pal 0x08c0bd3c, 0x2759 + obj_pal 0x08c1b304, 0x275a + obj_pal 0x08c0bfd8, 0x275b + obj_pal 0x08c14f28, 0x275c + obj_pal 0x08c14f28, 0x275d + obj_pal 0x08c0c194, 0x275e + obj_pal 0x08c0c194, 0x275f + obj_pal 0x08c0c950, 0x2760 + obj_pal 0x08c0c9f8, 0x2761 + obj_pal 0x08c0cbb4, 0x2762 + obj_pal 0x08c0cbc8, 0x2763 + obj_pal 0x08c0cbf0, 0x2764 + obj_pal 0x08c0cc18, 0x2765 + obj_pal 0x08c0cc30, 0x2766 + obj_pal 0x08c24d54, 0x2767 + obj_pal 0x08c0cc58, 0x2768 + obj_pal 0x08c0cc74, 0x2769 + obj_pal 0x08c0cc9c, 0x276a + obj_pal 0x08c0b698, 0x276b + obj_pal 0x08c0ccc0, 0x276c + obj_pal 0x08c0ccdc, 0x276d + obj_pal 0x08c0cd04, 0x276e + obj_pal 0x08c0cd44, 0x276f + obj_pal 0x08c0cd6c, 0x2770 + obj_pal 0x08c0cd88, 0x2771 + obj_pal 0x08c0cd04, 0x2772 + obj_pal 0x08c27e0c, 0x2773 + obj_pal 0x08c0cdb0, 0x2774 + obj_pal 0x08c0cdcc, 0x2775 + obj_pal 0x08c0cdcc, 0x2776 + obj_pal 0x08c0cdf4, 0x2777 + obj_pal 0x08c0f14c, 0x2778 + obj_pal 0x08c0f6f8, 0x2779 + obj_pal 0x08c0f6f8, 0x277a + obj_pal 0x08c0fbbc, 0x277b + obj_pal 0x08c0fbbc, 0x277c + obj_pal 0x08c0ff90, 0x277d + obj_pal 0x08c0ff90, 0x277e + obj_pal 0x08c103e0, 0x277f + obj_pal 0x08c1072c, 0x2780 + obj_pal 0x08c109c0, 0x2781 + obj_pal 0x08c10adc, 0x2782 + obj_pal 0x08c028ac, 0x2783 + obj_pal 0x08c13134, 0x2784 + obj_pal 0x08c13398, 0x2785 + obj_pal 0x08c1354c, 0x2786 + obj_pal 0x08c137f8, 0x2787 + obj_pal 0x08c13914, 0x2788 + obj_pal 0x08c13968, 0x2789 + obj_pal 0x08c13a88, 0x278a + obj_pal 0x08c13a88, 0x278b + obj_pal 0x08c13e78, 0x278c + obj_pal 0x08c13f8c, 0x278d + obj_pal 0x08c1401c, 0x278e + obj_pal 0x08c141dc, 0x278f + obj_pal 0x08c1446c, 0x2790 + obj_pal 0x08c1446c, 0x2791 + obj_pal 0x08c148c0, 0x2792 + obj_pal 0x08c148c0, 0x2793 + obj_pal 0x08c14b58, 0x2794 + obj_pal 0x08c14bf4, 0x2795 + obj_pal 0x08c14bf4, 0x2796 + obj_pal 0x08c1a478, 0x2797 + .align 2 gUnknown_0852588C:: @ 852588C - .incbin "baserom.gba", 0x52588c, 0x308 + obj_pal 0x08c1a564, 0x2798 + obj_pal 0x08c1a478, 0x2799 + obj_pal 0x08c1a478, 0x279a + obj_pal 0x08c1a980, 0x279b + obj_pal 0x08c1ad0c, 0x279c + obj_pal 0x08c1ae34, 0x279d + obj_pal 0x08c1ae34, 0x279e + obj_pal 0x08c2cddc, 0x279f + obj_pal 0x08c1bcdc, 0x27a0 + obj_pal 0x08c1a980, 0x27a1 + obj_pal 0x08c028ac, 0x27a2 + obj_pal 0x08c1b080, 0x27a3 + obj_pal 0x08c1b25c, 0x27a4 + obj_pal 0x08c1b25c, 0x27a5 + obj_pal 0x08c1b3fc, 0x27a6 + obj_pal 0x08c1b3fc, 0x27a7 + obj_pal 0x08c03414, 0x27a8 + obj_pal 0x08c1b57c, 0x27a9 + obj_pal 0x08c1b640, 0x27aa + obj_pal 0x08c1b728, 0x27ab + obj_pal 0x08c1b960, 0x27ac + obj_pal 0x08c1b9ec, 0x27ad + obj_pal 0x08c1bacc, 0x27ae + obj_pal 0x08c1bb6c, 0x27af + obj_pal 0x08c1bc3c, 0x27b0 + obj_pal 0x08c029a4, 0x27b1 + obj_pal 0x08c1bec4, 0x27b2 + obj_pal 0x08c1bf44, 0x27b3 + obj_pal 0x08c1bf74, 0x27b4 + obj_pal 0x08c1bf8c, 0x27b5 + obj_pal 0x08c1c2b0, 0x27b6 + obj_pal 0x08c1c2d0, 0x27b7 + obj_pal 0x08c1c2f0, 0x27b8 + obj_pal 0x08c1c310, 0x27b9 + obj_pal 0x08c1c330, 0x27ba + obj_pal 0x08c1c39c, 0x27bb + obj_pal 0x08c1c3c4, 0x27bc + obj_pal 0x08c1c794, 0x27bd + obj_pal 0x08c1d69c, 0x27be + obj_pal 0x08c1d728, 0x27bf + obj_pal 0x08c1d8a8, 0x27c0 + obj_pal 0x08c1d994, 0x27c1 + obj_pal 0x08c1db14, 0x27c2 + obj_pal 0x08c1db3c, 0x27c3 + obj_pal 0x08c1db3c, 0x27c4 + obj_pal 0x08c1db3c, 0x27c5 + obj_pal 0x08c1e08c, 0x27c6 + obj_pal 0x08c1e32c, 0x27c7 + obj_pal 0x08c1e4a8, 0x27c8 + obj_pal 0x08c1e8e4, 0x27c9 + obj_pal 0x08c1f1a4, 0x27ca + obj_pal 0x08c1edb8, 0x27cb + obj_pal 0x08d967d4, 0x27cc + obj_pal 0x08c2021c, 0x27cd + obj_pal 0x08c1fee0, 0x27ce + obj_pal 0x08c20170, 0x27cf + obj_pal 0x08c204bc, 0x27d0 + obj_pal 0x08c20640, 0x27d1 + obj_pal 0x08c20f84, 0x27d2 + obj_pal 0x08c21064, 0x27d3 + obj_pal 0x08c20c34, 0x27d4 + obj_pal 0x08c211f4, 0x27d5 + obj_pal 0x08c2160c, 0x27d6 + obj_pal 0x08c216fc, 0x27d7 + obj_pal 0x08c21858, 0x27d8 + obj_pal 0x08c21ee4, 0x27d9 + obj_pal 0x08c22210, 0x27da + obj_pal 0x08c223e0, 0x27db + obj_pal 0x08c22080, 0x27dc + obj_pal 0x08c228d8, 0x27dd + obj_pal 0x08c22610, 0x27de + obj_pal 0x08c229c8, 0x27df + obj_pal 0x08c1c2d0, 0x27e0 + obj_pal 0x08c230e4, 0x27e1 + obj_pal 0x08c232a0, 0x27e2 + obj_pal 0x08c2456c, 0x27e3 + obj_pal 0x08c2456c, 0x27e4 + obj_pal 0x08c2456c, 0x27e5 + obj_pal 0x08c231f4, 0x27e6 + obj_pal 0x08c249ac, 0x27e7 + obj_pal 0x08c232c0, 0x27e8 + obj_pal 0x08c2405c, 0x27e9 + obj_pal 0x08c24c28, 0x27ea + obj_pal 0x08c23280, 0x27eb + obj_pal 0x08c24dd4, 0x27ec + obj_pal 0x08c24f28, 0x27ed + obj_pal 0x08c25498, 0x27ee + obj_pal 0x08c254c0, 0x27ef + obj_pal 0x08c25774, 0x27f0 + obj_pal 0x08c278e8, 0x27f1 + obj_pal 0x08c27ae4, 0x27f2 + obj_pal 0x08c27ae4, 0x27f3 + obj_pal 0x08c25afc, 0x27f4 + obj_pal 0x08c27cc4, 0x27f5 + obj_pal 0x08c25890, 0x27f6 + obj_pal 0x08c2836c, 0x27f7 + obj_pal 0x08c2836c, 0x27f8 + .align 2 gUnknown_08525B94:: @ 8525B94 - .incbin "baserom.gba", 0x525b94, 0x120 + obj_pal 0x08c285e8, 0x27f9 + obj_pal 0x08c287d0, 0x27fa + obj_pal 0x08c288d0, 0x27fb + obj_pal 0x08c288ec, 0x27fc + obj_pal 0x08c28908, 0x27fd + obj_pal 0x08c2885c, 0x27fe + obj_pal 0x08c2cb84, 0x27ff + obj_pal 0x08c2ce94, 0x2800 + obj_pal 0x08c2d40c, 0x2801 + obj_pal 0x08c2d6ac, 0x2802 + obj_pal 0x08c2d6f8, 0x2803 + obj_pal 0x08c2e630, 0x2804 + obj_pal 0x08c2dee0, 0x2805 + obj_pal 0x08c2dee0, 0x2806 + obj_pal 0x08c231f4, 0x2807 + obj_pal 0x08c2ebbc, 0x2808 + obj_pal 0x08c2ec24, 0x2809 + obj_pal 0x08c2ec24, 0x280a + obj_pal 0x08c2ee9c, 0x280b + obj_pal 0x08c2efcc, 0x280c + obj_pal 0x08c2f1cc, 0x280d + obj_pal 0x08c2f32c, 0x280e + obj_pal 0x08c2f3cc, 0x280f + obj_pal 0x08c2f87c, 0x2810 + obj_pal 0x08c2f9c0, 0x2811 + obj_pal 0x08c2f4c8, 0x2812 + obj_pal 0x08c1b27c, 0x2813 + obj_pal 0x08d8dc9c, 0x2814 + obj_pal 0x08d8dab8, 0x2815 + obj_pal 0x08d8e914, 0x2816 + obj_pal 0x08d93b84, 0x2817 + obj_pal 0x08d8ea74, 0x2818 + obj_pal 0x08d8ea8c, 0x2819 + obj_pal 0x08d93bdc, 0x281a + obj_pal 0x08d93bf4, 0x281b + obj_pal 0x08d93c0c, 0x281c + .align 2 gUnknown_08525CB4:: @ 8525CB4 - .incbin "baserom.gba", 0x525cb4, 0xa0 + obj_pal 0x08d8ef80, 0x281d + obj_pal 0x08dba35c, 0x281e + obj_pal 0x08dba4a0, 0x281f + obj_pal 0x08d8eee0, 0x2820 + obj_pal 0x08d8eee0, 0x2821 + obj_pal 0x08d8f3ec, 0x2822 + obj_pal 0x08d8f3ec, 0x2823 + obj_pal 0x08d8f3ec, 0x2824 + obj_pal 0x08d92ec4, 0x2825 + obj_pal 0x08d93e30, 0x2826 + obj_pal 0x08d93e98, 0x2827 + obj_pal 0x08d8fb7c, 0x2828 + obj_pal 0x08d9403c, 0x2829 + obj_pal 0x08dba14c, 0x282a + obj_pal 0x08d93458, 0x282b + obj_pal 0x08d949d4, 0x282c + obj_pal 0x08d94a90, 0x282d + obj_pal 0x08d96698, 0x282e + obj_pal 0x08d9104c, 0x282f + obj_pal 0x08c1bf5c, 0x2830 + .align 2 gUnknown_08525D54:: @ 8525D54 - .incbin "baserom.gba", 0x525d54, 0x144 + .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c + .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c + .4byte 0x08d90074, 0x08d90d3c, 0x08d90d58 + .4byte 0x08c1e90c, 0x08c1eadc, 0x08c1eb00 + .4byte 0x08c25bec, 0x08c25bc4, 0x08c26958 + .4byte 0x08c25bec, 0x08c25bc4, 0x08c26e54 + .4byte 0x08c25bec, 0x08c25bc4, 0x08c27324 + .4byte 0x08c28924, 0x08c28acc, 0x08c28b1c + .4byte 0x08c28924, 0x08c28acc, 0x08c28cac + .4byte 0x08c29dbc, 0x08c29d7c, 0x08c29a84 + .4byte 0x08c29dbc, 0x08c29d7c, 0x08c2a33c + .4byte 0x08c2bde4, 0x08c2c780, 0x08c2c7a8 + .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2a808 + .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2aad0 + .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2adcc + .4byte 0x08d8dcb4, 0x08d8e624, 0x08d8e648 + .4byte 0x08d92b28, 0x08d92b00, 0x08d92d88 + .4byte 0x08d8f414, 0x08d8f570, 0x08d8f598 + .4byte 0x08c28924, 0x08c28af4, 0x08c28b1c + .4byte 0x08c28924, 0x08c28af4, 0x08c28cac + .4byte 0x08c28e38, 0x08c29860, 0x08c29880 + .4byte 0x08d9405c, 0x08d94350, 0x08d9436c + .4byte 0x08c29dbc, 0x08c29d9c, 0x08c29a84 + .4byte 0x08c29dbc, 0x08c29d9c, 0x08c2a33c + .4byte 0x08c25bec, 0x08d91074, 0x08c26958 + .4byte 0x08c25bec, 0x08d91074, 0x08c26e54 + .4byte 0x08c25bec, 0x08d91074, 0x08c27324 + .align 2 gUnknown_08525E98:: @ 8525E98 - .incbin "baserom.gba", 0x525e98, 0xc0 + .4byte ma00_load_graphics + .4byte ma01_080728D0 + .4byte ma02_instanciate_template + .4byte sub_80A3ECC + .4byte ma04_wait_countdown + .4byte sub_80A3F88 + .4byte nullsub_6 + .4byte nullsub_7 + .4byte sub_80A3FC4 + .4byte ma09_play_sound + .4byte sub_80A41D8 + .4byte ma0B_0807324C + .4byte ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument + .4byte ma0D_reset_BLDCNT_and_BLDALPHA + .4byte ma0E_call + .4byte sub_80A4D00 + .4byte ma10_080736AC + .4byte ma11_if_else + .4byte ma12_cond_if + .4byte ma13_goto + .4byte ma14_load_background + .4byte ma15_load_battle_screen_elements + .4byte ma16_wait_for_battle_screen_elements_s2 + .4byte sub_80A5124 + .4byte ma18_load_background_probably + .4byte ma19_08073BC8 + .4byte ma1A_8073C00 + .4byte ma1B_8073C2C + .4byte ma1C_8073ED0 + .4byte ma1D_08073FB4 + .4byte ma1E_set_BLDCNT + .4byte sub_80A57F8 + .4byte ma20_wait_for_something + .4byte ma21_08074164 + .4byte sub_80A4A18 + .4byte ma23_8073484 + .4byte sub_80A5944 + .4byte sub_80A4E5C + .4byte sub_80A5508 + .4byte sub_80A559C + .4byte sub_80A5984 + .4byte sub_80A59DC + .4byte sub_80A5A0C + .4byte ma2B_make_side_invisible + .4byte ma2C_make_side_visible + .4byte sub_80A5AFC + .4byte sub_80A5BAC + .4byte ma2F_stop_music + .align 2 gUnknown_08525F58:: @ 8525F58 - .incbin "baserom.gba", 0x525f58, 0x20 + .byte 0x48, 0x50, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00 + .byte 0x30, 0x28, 0x00, 0x00, 0x70, 0x50, 0x00, 0x00 + .byte 0x20, 0x50, 0x00, 0x00, 0xc8, 0x28, 0x00, 0x00 + .byte 0x5a, 0x58, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00 + .align 2 gUnknown_08525F78:: @ 8525F78 - .incbin "baserom.gba", 0x525f78, 0x10 + .byte 0x44, 0x11, 0x00, 0x00, 0x66, 0x09, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00, 0x86, 0x08, 0x00, 0x00 + .align 2 gUnknown_08525F88:: @ 8525F88 - .incbin "baserom.gba", 0x525f88, 0x4 + .byte 0x0d, 0x0e, 0x0d, 0x0d + .align 2 gUnknown_08525F8C:: @ 8525F8C - .incbin "baserom.gba", 0x525f8c, 0x4 + .byte 0x00, 0x00, 0x00, 0x00 + .align 2 gUnknown_08525F90:: @ 8525F90 - .incbin "baserom.gba", 0x525f90, 0x30 + spr_template 0xd755, 0xd755, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xd756, 0xd756, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 gUnknown_08525FC0:: @ 8525FC0 - .incbin "baserom.gba", 0x525fc0, 0x18f80 + obj_tiles gMiscBlank_Gfx, 0x0800, 0xd755 + obj_tiles gMiscBlank_Gfx, 0x0800, 0xd756 + .align 2 +@ the mother of all baserom includes + .incbin "baserom.gba", 0x525fd0, 0x18f60 + + .align 2 +gUnknown_0853EF30:: @ 853EF30 + .byte 0xf0, 0xf0, 0x0c, 0x80, 0xf0, 0x30, 0x0d, 0x84, 0x30, 0xf0, 0x0e, 0x86, 0x30, 0x30, 0x08, 0x88 + + .align 2 gUnknown_0853EF40:: @ 853EF40 - .incbin "baserom.gba", 0x53ef40, 0x8 + .4byte 0x00000004, gUnknown_0853EF30 + .align 2 gUnknown_0853EF48:: @ 853EF48 - .incbin "baserom.gba", 0x53ef48, 0x18 + spr_template 0x271a, 0x271a, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + .align 2 gUnknown_0853EF60:: @ 853EF60 - .incbin "baserom.gba", 0x53ef60, 0xf8 + spr_template 0x2798, 0x2798, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9E44 + diff --git a/data/battle_message.s b/data/battle_message.s index 05847eed03..4ec085d2fb 100644 --- a/data/battle_message.s +++ b/data/battle_message.s @@ -1768,12 +1768,26 @@ gText_SafariBalls:: @ 85CCB2C gText_SafariBallLeft:: @ 85CCB3C .string "{HIGHLIGHT DARK_GREY}Left: $" .string "{HIGHLIGHT DARK_GREY}$" + +gText_Sleep:: @ 85CCB50 .string "sleep$" + +gText_Poison:: @ 85CCB4A .string "poison$" + +gText_Burn:: @ 85CCB5C .string "burn$" + +gText_Paralysis:: @ 85CCB57 .string "paralysis$" + +gText_Ice:: @ 85CCB66 .string "ice$" + +gText_Confusion:: @ 85CCB98 .string "confusion$" + +gText_Love:: @ 85CCBA0 .string "love$" gText_SpaceAndSpace:: @ 85CCB79 diff --git a/data/data2b.s b/data/data2b.s index fd72e835e6..77bb776cc8 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -6,103 +6,3895 @@ .section .rodata .align 2 - - -gUnknown_082FECFC:: @ 82FECFC - .incbin "baserom.gba", 0x2fecfc, 0x40 - -gUnknown_082FED3C:: @ 82FED3C - .incbin "baserom.gba", 0x2fed3c, 0x1b4 - -gUnknown_082FEEF0:: @ 82FEEF0 - .incbin "baserom.gba", 0x2feef0, 0x128 - -gUnknown_082FF018:: @ 82FF018 - .incbin "baserom.gba", 0x2ff018, 0x2 - -gUnknown_082FF01A:: @ 82FF01A - .incbin "baserom.gba", 0x2ff01a, 0xe - -gUnknown_082FF028:: @ 82FF028 - .incbin "baserom.gba", 0x2ff028, 0x10 - -gUnknown_082FF038:: @ 82FF038 - .incbin "baserom.gba", 0x2ff038, 0x10 - -gUnknown_082FF048:: @ 82FF048 - .incbin "baserom.gba", 0x2ff048, 0x28 - -gUnknown_082FF070:: @ 82FF070 - .incbin "baserom.gba", 0x2ff070, 0x10 - -gUnknown_082FF080:: @ 82FF080 - .incbin "baserom.gba", 0x2ff080, 0x8 - -gUnknown_082FF088:: @ 82FF088 - .incbin "baserom.gba", 0x2ff088, 0x18 - -gUnknown_082FF0A0:: @ 82FF0A0 - .incbin "baserom.gba", 0x2ff0a0, 0x20 - -gUnknown_082FF0C0:: @ 82FF0C0 - .incbin "baserom.gba", 0x2ff0c0, 0x20 - -gUnknown_082FF0E0:: @ 82FF0E0 - .incbin "baserom.gba", 0x2ff0e0, 0x3 - -gUnknown_082FF0E3:: @ 82FF0E3 - .incbin "baserom.gba", 0x2ff0e3, 0x5 - -gUnknown_082FF0E8:: @ 82FF0E8 - .incbin "baserom.gba", 0x2ff0e8, 0x8 - -gUnknown_082FF0F0:: @ 82FF0F0 - .incbin "baserom.gba", 0x2ff0f0, 0x4 - -gUnknown_082FF0F4:: @ 82FF0F4 - .incbin "baserom.gba", 0x2ff0f4, 0x20 - -gUnknown_082FF114:: @ 82FF114 - .incbin "baserom.gba", 0x2ff114, 0x4 - -gUnknown_082FF118:: @ 82FF118 - .incbin "baserom.gba", 0x2ff118, 0x10 - -gUnknown_082FF128:: @ 82FF128 - .incbin "baserom.gba", 0x2ff128, 0x50 - -gUnknown_082FF178:: @ 82FF178 - .incbin "baserom.gba", 0x2ff178, 0x50 - -gUnknown_082FF1C8:: @ 82FF1C8 - .incbin "baserom.gba", 0x2ff1c8, 0x10 - gUnknown_082FF1D8:: @ 82FF1D8 - .incbin "baserom.gba", 0x2ff1d8, 0x20 + .incbin "graphics/link/minigame_digits.gbapal" + .align 2 gUnknown_082FF1F8:: @ 82FF1F8 - .incbin "baserom.gba", 0x2ff1f8, 0x420 + .incbin "graphics/link/minigame_digits.4bpp.lz" + .align 2 +gUnknown_082FF2B8:: @ 82FF2B8 + .incbin "graphics/link/minigame_digits2.4bpp.lz" + + .align 2 +gUnknown_082FF3A8:: @ 82FF3A8 + .byte 0x00, 0x80, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0x88, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0x90, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0x98, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xa0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xa8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xb0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xb8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xc0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xc8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xd0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xd8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xe0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xe8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xf0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + .byte 0x00, 0xf8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + + .align 2 +gUnknown_082FF428:: @ 82FF428 + obj_frame_tiles gTrainerBackPic_Brendan, 0x0800 + obj_frame_tiles gTrainerBackPic_Brendan + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_Brendan + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_Brendan + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_May, 0x0800 + obj_frame_tiles gTrainerBackPic_May + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_May + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_May + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_Red, 0x0800 + obj_frame_tiles gTrainerBackPic_Red + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_Red + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_Red + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_Red + 0x2000, 0x0800 + obj_frame_tiles gTrainerBackPic_Leaf, 0x0800 + obj_frame_tiles gTrainerBackPic_Leaf + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_Leaf + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_Leaf + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_Leaf + 0x2000, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireBrendan, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireMay, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_Wally, 0x0800 + obj_frame_tiles gTrainerBackPic_Wally + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_Wally + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_Wally + 0x1800, 0x0800 + obj_frame_tiles gTrainerBackPic_Steven, 0x0800 + obj_frame_tiles gTrainerBackPic_Steven + 0x0800, 0x0800 + obj_frame_tiles gTrainerBackPic_Steven + 0x1000, 0x0800 + obj_frame_tiles gTrainerBackPic_Steven + 0x1800, 0x0800 + + .align 2 +gUnknown_082FF538:: @ 82FF538 + .2byte 0x0000, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF540:: @ 82FF540 + .2byte 0x0003, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF548:: @ 82FF548 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF558:: @ 82FF558 + .2byte 0xff00, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF568:: @ 82FF568 + .2byte 0x0028, 0x0028, 0x0000, 0x0000, 0x0012, 0x0012, 0x0c00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF580:: @ 82FF580 + .2byte 0xfffe, 0xfffe, 0x1200, 0x0000, 0xfff0, 0xfff0, 0x0f00, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF598:: @ 82FF598 + .2byte 0x00a0, 0x0100, 0x0000, 0x0000, 0x0004, 0x0000, 0x0800, 0x0000 + .2byte 0xfffc, 0x0000, 0x0800, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF5B8:: @ 82FF5B8 + .2byte 0x0002, 0x0002, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF5C8:: @ 82FF5C8 + .2byte 0xfffe, 0xfffe, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF5D8:: @ 82FF5D8 + .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x0900, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF5F0:: @ 82FF5F0 + .2byte 0x0004, 0x0004, 0x3f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF600:: @ 82FF600 + .2byte 0x0000, 0x0000, 0x05fd, 0x0000, 0x0000, 0x0000, 0x0503, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 gUnknown_082FF618:: @ 82FF618 - .incbin "baserom.gba", 0x2ff618, 0x7c + .4byte gUnknown_082FF548 + .4byte gUnknown_082FF568 + .4byte gUnknown_082FF580 + .4byte gUnknown_082FF598 + .4byte gUnknown_082FF5B8 + .4byte gUnknown_082FF5C8 + .4byte gUnknown_082FF5F0 + .4byte gUnknown_082FF600 + .4byte gUnknown_082FF5D8 + .align 2 +gUnknown_082FF63C:: @ 82FF63C + .2byte 0xfffc, 0xfffc, 0x3f04, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF64C:: @ 82FF64C + .2byte 0x0000, 0x0000, 0x0503, 0x0000, 0x0000, 0x0000, 0x05fd, 0x0000 + .2byte 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF664:: @ 82FF664 + .2byte 0x0000, 0x0000, 0x14fb, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000 + .2byte 0x0000, 0x0000, 0x1405, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF684:: @ 82FF684 + .2byte 0x0000, 0x0000, 0x6e09, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 gUnknown_082FF694:: @ 82FF694 - .incbin "baserom.gba", 0x2ff694, 0x2c + .4byte gUnknown_082FF548 + .4byte gUnknown_082FF568 + .4byte gUnknown_082FF580 + .4byte gUnknown_082FF598 + .4byte gUnknown_082FF5B8 + .4byte gUnknown_082FF5C8 + .4byte gUnknown_082FF63C + .4byte gUnknown_082FF64C + .4byte gUnknown_082FF664 + .4byte gUnknown_082FF5D8 + .4byte gUnknown_082FF684 + .align 2 gUnknown_082FF6C0:: @ 82FF6C0 - .incbin "baserom.gba", 0x2ff6c0, 0x4c + .4byte gUnknown_082FF558 + .4byte gUnknown_082FF568 + .4byte gUnknown_082FF580 + .4byte gUnknown_082FF598 + .4byte gUnknown_082FF5B8 + .4byte gUnknown_082FF5C8 + .4byte gUnknown_082FF63C + .4byte gUnknown_082FF64C + .4byte gUnknown_082FF664 + .4byte gUnknown_082FF5D8 + .4byte gUnknown_082FF684 + .align 2 +gUnknown_082FF6EC:: @ 82FF6EC + .2byte 0x0000, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF6F4:: @ 82FF6F4 + .2byte 0x0001, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF6FC:: @ 82FF6FC + .2byte 0x0002, 0x0000, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF704:: @ 82FF704 + .2byte 0x0003, 0x0000, 0xffff, 0x0000 + + .align 2 gUnknown_082FF70C:: @ 82FF70C - .incbin "baserom.gba", 0x2ff70c, 0x162c + .4byte gUnknown_082FF6EC + .4byte gUnknown_082FF6F4 + .4byte gUnknown_082FF6FC + .4byte gUnknown_082FF704 + .align 2 +gUnknown_082FF71C:: @ 82FF71C + .2byte 0x0000, 0x0001, 0x0001, 0x0019, 0x0000, 0x0007, 0x0001, 0x0007 + .2byte 0x0000, 0x0007, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF734:: @ 82FF734 + .2byte 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF744:: @ 82FF744 + .2byte 0x0000, 0x000a, 0x0002, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF750:: @ 82FF750 + .2byte 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF758:: @ 82FF758 + .2byte 0x0000, 0x0001, 0x0001, 0x0005, 0x0000, 0x0005, 0x0001, 0x0005 + .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF774:: @ 82FF774 + .2byte 0x0000, 0x0001, 0x0002, 0x000c, 0x0000, 0x000e, 0x0002, 0x000c + .2byte 0x0000, 0x000e, 0x0002, 0x000c, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF790:: @ 82FF790 + .2byte 0x0000, 0x000e, 0x0002, 0x000c, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF79C:: @ 82FF79C + .2byte 0x0000, 0x000a, 0x0001, 0x000a, 0x0000, 0x000a, 0x0001, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7B0:: @ 82FF7B0 + .2byte 0x0000, 0x000a, 0x0002, 0x000a, 0x0000, 0x000a, 0x0002, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7C4:: @ 82FF7C4 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7CC:: @ 82FF7CC + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7D4:: @ 82FF7D4 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7DC:: @ 82FF7DC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7E4:: @ 82FF7E4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7EC:: @ 82FF7EC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7F4:: @ 82FF7F4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF7FC:: @ 82FF7FC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF804:: @ 82FF804 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF80C:: @ 82FF80C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF814:: @ 82FF814 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF81C:: @ 82FF81C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF824:: @ 82FF824 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF82C:: @ 82FF82C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF834:: @ 82FF834 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF83C:: @ 82FF83C + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF844:: @ 82FF844 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF84C:: @ 82FF84C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF854:: @ 82FF854 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF85C:: @ 82FF85C + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF864:: @ 82FF864 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF86C:: @ 82FF86C + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF874:: @ 82FF874 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF87C:: @ 82FF87C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF884:: @ 82FF884 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF88C:: @ 82FF88C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF894:: @ 82FF894 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF89C:: @ 82FF89C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF8A4:: @ 82FF8A4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF8AC:: @ 82FF8AC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF8B4:: @ 82FF8B4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF8BC:: @ 82FF8BC + .2byte 0x0000, 0x000f, 0x0008, 0x000f, 0x0002, 0x0016, 0x0008, 0x0005 + .2byte 0x0003, 0x0008, 0x0004, 0x0005, 0x0006, 0x0005, 0x0004, 0x0005 + .2byte 0x0006, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005, 0x0004, 0x0005 + .2byte 0x0006, 0x0005, 0x0005, 0x0005, 0x0007, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF8FC:: @ 82FF8FC + .2byte 0x0000, 0x000a, 0x0008, 0x000f, 0x0002, 0x000f, 0x0008, 0x000f + .2byte 0x0009, 0x000f, 0x0000, 0x000a, 0x0009, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF91C:: @ 82FF91C + .2byte 0x0000, 0x000a, 0x0009, 0x000a, 0x0000, 0x000a, 0x000a, 0x0014, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF930:: @ 82FF930 + .2byte 0x0000, 0x000f, 0x000b, 0x000f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF93C:: @ 82FF93C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF944:: @ 82FF944 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF94C:: @ 82FF94C + .2byte 0x0000, 0x000a, 0x0001, 0x0007, 0x0002, 0x0007, 0x0003, 0x0004 + .2byte 0x0004, 0x0004, 0x0003, 0x0004, 0x0004, 0x0004, 0x0003, 0x0004 + .2byte 0x0004, 0x0004, 0x0003, 0x0004, 0x0001, 0x0006, 0x0005, 0x0002 + .2byte 0x0000, 0x0002, 0x0005, 0x0002, 0x0000, 0x0002, 0x0005, 0x0002 + .2byte 0x0006, 0x0002, 0x0005, 0x0002, 0x0006, 0x0002, 0x0006, 0x000a + .2byte 0x0005, 0x0004, 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FF9A8:: @ 82FF9A8 + .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c + .2byte 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c + .2byte 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c + .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0009, 0x0003 + .2byte 0x0000, 0x0003, 0x0009, 0x0003, 0x0000, 0x0003, 0x0007, 0x000c + .2byte 0x0008, 0x000c, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA00:: @ 82FFA00 + .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c + .2byte 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c + .2byte 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c + .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0009, 0x0003 + .2byte 0x0000, 0x0003, 0x0009, 0x0003, 0x0000, 0x0003, 0x0007, 0x000c + .2byte 0x0008, 0x000c, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA58:: @ 82FFA58 + .2byte 0x0000, 0x0012, 0x000a, 0x0012, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA64:: @ 82FFA64 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA6C:: @ 82FFA6C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA74:: @ 82FFA74 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA7C:: @ 82FFA7C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA84:: @ 82FFA84 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA8C:: @ 82FFA8C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA94:: @ 82FFA94 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFA9C:: @ 82FFA9C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAA4:: @ 82FFAA4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAAC:: @ 82FFAAC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAB4:: @ 82FFAB4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFABC:: @ 82FFABC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAC4:: @ 82FFAC4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFACC:: @ 82FFACC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAD4:: @ 82FFAD4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFADC:: @ 82FFADC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAE4:: @ 82FFAE4 + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAEC:: @ 82FFAEC + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAF4:: @ 82FFAF4 + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFAFC:: @ 82FFAFC + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB04:: @ 82FFB04 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB0C:: @ 82FFB0C + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB14:: @ 82FFB14 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB1C:: @ 82FFB1C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB24:: @ 82FFB24 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB2C:: @ 82FFB2C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB34:: @ 82FFB34 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB3C:: @ 82FFB3C + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB44:: @ 82FFB44 + .2byte 0x0000, 0x0001, 0x0001, 0x0012, 0x0000, 0x0012, 0x0001, 0x0012 + .2byte 0x0000, 0x0012, 0x0001, 0x0012, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB60:: @ 82FFB60 + .2byte 0x0000, 0x0001, 0x0002, 0x0012, 0x0000, 0x0012, 0x0002, 0x0012 + .2byte 0x0000, 0x0012, 0x0002, 0x0012, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFB7C:: @ 82FFB7C + .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0003, 0x0006, 0x0001, 0x0005 + .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0x0001, 0x0005 + .2byte 0x0000, 0x0005, 0x0001, 0x0007, 0x0000, 0x0004, 0x0004, 0x0004 + .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0000, 0x0014, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFBBC:: @ 82FFBBC + .2byte 0x0000, 0x0006, 0x0001, 0x0006, 0x0002, 0x0006, 0x0003, 0x0006 + .2byte 0x0001, 0x0006, 0x0000, 0x0006, 0x0001, 0x0006, 0x0000, 0x001e + .2byte 0xffff, 0x0000 + + .align 2 +gUnknown_082FFBE0:: @ 82FFBE0 + .2byte 0x0000, 0x000c, 0x0005, 0x000c, 0x0000, 0x000c, 0x0006, 0x000c, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFBF4:: @ 82FFBF4 + .2byte 0x0007, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFBFC:: @ 82FFBFC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC04:: @ 82FFC04 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC0C:: @ 82FFC0C + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC14:: @ 82FFC14 + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC1C:: @ 82FFC1C + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC24:: @ 82FFC24 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC2C:: @ 82FFC2C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC34:: @ 82FFC34 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC3C:: @ 82FFC3C + .2byte 0x0000, 0x0001, 0x0001, 0x000a, 0x0000, 0x000a, 0x0001, 0x000a + .2byte 0x0000, 0x000a, 0x0001, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC58:: @ 82FFC58 + .2byte 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x000c, 0x0002, 0x0008 + .2byte 0x0000, 0x000c, 0x0002, 0x0008, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC74:: @ 82FFC74 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC7C:: @ 82FFC7C + .2byte 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC84:: @ 82FFC84 + .2byte 0x0001, 0x0009, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC8C:: @ 82FFC8C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC94:: @ 82FFC94 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFC9C:: @ 82FFC9C + .2byte 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCA4:: @ 82FFCA4 + .2byte 0x0001, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCAC:: @ 82FFCAC + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCB4:: @ 82FFCB4 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCBC:: @ 82FFCBC + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCC4:: @ 82FFCC4 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCCC:: @ 82FFCCC + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCD4:: @ 82FFCD4 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCDC:: @ 82FFCDC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCE4:: @ 82FFCE4 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCEC:: @ 82FFCEC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCF4:: @ 82FFCF4 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFCFC:: @ 82FFCFC + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD04:: @ 82FFD04 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD0C:: @ 82FFD0C + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD14:: @ 82FFD14 + .2byte 0x0000, 0x0005, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD1C:: @ 82FFD1C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD24:: @ 82FFD24 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD2C:: @ 82FFD2C + .2byte 0x0002, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD34:: @ 82FFD34 + .2byte 0x0003, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD3C:: @ 82FFD3C + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD44:: @ 82FFD44 + .2byte 0x0000, 0x003f, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD4C:: @ 82FFD4C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD54:: @ 82FFD54 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD5C:: @ 82FFD5C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD64:: @ 82FFD64 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD6C:: @ 82FFD6C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD74:: @ 82FFD74 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD7C:: @ 82FFD7C + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD84:: @ 82FFD84 + .2byte 0x0001, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFD8C:: @ 82FFD8C + .2byte 0x0000, 0x0014, 0x0001, 0x001e, 0x0000, 0x0014, 0x0001, 0x001e, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFDA0:: @ 82FFDA0 + .2byte 0x0000, 0x0014, 0x0002, 0x0014, 0x0000, 0x0014, 0x0002, 0x0014, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFDB4:: @ 82FFDB4 + .2byte 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFDBC:: @ 82FFDBC + .2byte 0x0000, 0x000a, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFDC4:: @ 82FFDC4 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_082FFDCC:: @ 82FFDCC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDD0:: @ 82FFDD0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDD4:: @ 82FFDD4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDD8:: @ 82FFDD8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDDC:: @ 82FFDDC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDE0:: @ 82FFDE0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDE4:: @ 82FFDE4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDE8:: @ 82FFDE8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDEC:: @ 82FFDEC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDF0:: @ 82FFDF0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDF4:: @ 82FFDF4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDF8:: @ 82FFDF8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFDFC:: @ 82FFDFC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE00:: @ 82FFE00 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE04:: @ 82FFE04 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE08:: @ 82FFE08 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE0C:: @ 82FFE0C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE10:: @ 82FFE10 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE14:: @ 82FFE14 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE18:: @ 82FFE18 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE1C:: @ 82FFE1C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE20:: @ 82FFE20 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE24:: @ 82FFE24 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE28:: @ 82FFE28 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE2C:: @ 82FFE2C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE30:: @ 82FFE30 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE34:: @ 82FFE34 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE38:: @ 82FFE38 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE3C:: @ 82FFE3C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE40:: @ 82FFE40 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE44:: @ 82FFE44 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE48:: @ 82FFE48 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE4C:: @ 82FFE4C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE50:: @ 82FFE50 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE54:: @ 82FFE54 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE58:: @ 82FFE58 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE5C:: @ 82FFE5C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE60:: @ 82FFE60 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE64:: @ 82FFE64 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE68:: @ 82FFE68 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE6C:: @ 82FFE6C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE70:: @ 82FFE70 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE74:: @ 82FFE74 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE78:: @ 82FFE78 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE7C:: @ 82FFE7C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE80:: @ 82FFE80 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE84:: @ 82FFE84 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE88:: @ 82FFE88 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE8C:: @ 82FFE8C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE90:: @ 82FFE90 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE94:: @ 82FFE94 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE98:: @ 82FFE98 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFE9C:: @ 82FFE9C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEA0:: @ 82FFEA0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEA4:: @ 82FFEA4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEA8:: @ 82FFEA8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEAC:: @ 82FFEAC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEB0:: @ 82FFEB0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEB4:: @ 82FFEB4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEB8:: @ 82FFEB8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEBC:: @ 82FFEBC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEC0:: @ 82FFEC0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEC4:: @ 82FFEC4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEC8:: @ 82FFEC8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFECC:: @ 82FFECC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFED0:: @ 82FFED0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFED4:: @ 82FFED4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFED8:: @ 82FFED8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEDC:: @ 82FFEDC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEE0:: @ 82FFEE0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEE4:: @ 82FFEE4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEE8:: @ 82FFEE8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEEC:: @ 82FFEEC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEF0:: @ 82FFEF0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEF4:: @ 82FFEF4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEF8:: @ 82FFEF8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFEFC:: @ 82FFEFC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF00:: @ 82FFF00 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF04:: @ 82FFF04 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF08:: @ 82FFF08 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF0C:: @ 82FFF0C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF10:: @ 82FFF10 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF14:: @ 82FFF14 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF18:: @ 82FFF18 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF1C:: @ 82FFF1C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF20:: @ 82FFF20 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF24:: @ 82FFF24 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF28:: @ 82FFF28 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF2C:: @ 82FFF2C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF30:: @ 82FFF30 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF34:: @ 82FFF34 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF38:: @ 82FFF38 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF3C:: @ 82FFF3C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF40:: @ 82FFF40 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF44:: @ 82FFF44 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF48:: @ 82FFF48 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF4C:: @ 82FFF4C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF50:: @ 82FFF50 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF54:: @ 82FFF54 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF58:: @ 82FFF58 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF5C:: @ 82FFF5C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF60:: @ 82FFF60 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF64:: @ 82FFF64 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF68:: @ 82FFF68 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF6C:: @ 82FFF6C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF70:: @ 82FFF70 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF74:: @ 82FFF74 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF78:: @ 82FFF78 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF7C:: @ 82FFF7C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF80:: @ 82FFF80 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF84:: @ 82FFF84 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF88:: @ 82FFF88 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF8C:: @ 82FFF8C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF90:: @ 82FFF90 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF94:: @ 82FFF94 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF98:: @ 82FFF98 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFF9C:: @ 82FFF9C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFA0:: @ 82FFFA0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFA4:: @ 82FFFA4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFA8:: @ 82FFFA8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFAC:: @ 82FFFAC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFB0:: @ 82FFFB0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFB4:: @ 82FFFB4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFB8:: @ 82FFFB8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFBC:: @ 82FFFBC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFC0:: @ 82FFFC0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFC4:: @ 82FFFC4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFC8:: @ 82FFFC8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFCC:: @ 82FFFCC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFD0:: @ 82FFFD0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFD4:: @ 82FFFD4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFD8:: @ 82FFFD8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFDC:: @ 82FFFDC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFE0:: @ 82FFFE0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFE4:: @ 82FFFE4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFE8:: @ 82FFFE8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFEC:: @ 82FFFEC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFF0:: @ 82FFFF0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFF4:: @ 82FFFF4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFF8:: @ 82FFFF8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_082FFFFC:: @ 82FFFFC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300000:: @ 8300000 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300004:: @ 8300004 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300008:: @ 8300008 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830000C:: @ 830000C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300010:: @ 8300010 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300014:: @ 8300014 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300018:: @ 8300018 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830001C:: @ 830001C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300020:: @ 8300020 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300024:: @ 8300024 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300028:: @ 8300028 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830002C:: @ 830002C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300030:: @ 8300030 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300034:: @ 8300034 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300038:: @ 8300038 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830003C:: @ 830003C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300040:: @ 8300040 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300044:: @ 8300044 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300048:: @ 8300048 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830004C:: @ 830004C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300050:: @ 8300050 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300054:: @ 8300054 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300058:: @ 8300058 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830005C:: @ 830005C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300060:: @ 8300060 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300064:: @ 8300064 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300068:: @ 8300068 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830006C:: @ 830006C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300070:: @ 8300070 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300074:: @ 8300074 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300078:: @ 8300078 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830007C:: @ 830007C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300080:: @ 8300080 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300084:: @ 8300084 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300088:: @ 8300088 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830008C:: @ 830008C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300090:: @ 8300090 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300094:: @ 8300094 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300098:: @ 8300098 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830009C:: @ 830009C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000A0:: @ 83000A0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000A4:: @ 83000A4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000A8:: @ 83000A8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000AC:: @ 83000AC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000B0:: @ 83000B0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000B4:: @ 83000B4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000B8:: @ 83000B8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000BC:: @ 83000BC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000C0:: @ 83000C0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000C4:: @ 83000C4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000C8:: @ 83000C8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000CC:: @ 83000CC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000D0:: @ 83000D0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000D4:: @ 83000D4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000D8:: @ 83000D8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000DC:: @ 83000DC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000E0:: @ 83000E0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000E4:: @ 83000E4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000E8:: @ 83000E8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000EC:: @ 83000EC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000F0:: @ 83000F0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000F4:: @ 83000F4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000F8:: @ 83000F8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083000FC:: @ 83000FC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300100:: @ 8300100 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300104:: @ 8300104 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300108:: @ 8300108 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830010C:: @ 830010C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300110:: @ 8300110 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300114:: @ 8300114 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300118:: @ 8300118 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830011C:: @ 830011C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300120:: @ 8300120 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300124:: @ 8300124 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300128:: @ 8300128 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830012C:: @ 830012C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300130:: @ 8300130 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300134:: @ 8300134 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300138:: @ 8300138 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830013C:: @ 830013C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300140:: @ 8300140 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300144:: @ 8300144 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300148:: @ 8300148 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830014C:: @ 830014C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300150:: @ 8300150 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300154:: @ 8300154 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300158:: @ 8300158 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830015C:: @ 830015C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300160:: @ 8300160 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300164:: @ 8300164 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300168:: @ 8300168 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830016C:: @ 830016C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300170:: @ 8300170 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300174:: @ 8300174 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300178:: @ 8300178 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830017C:: @ 830017C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300180:: @ 8300180 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300184:: @ 8300184 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300188:: @ 8300188 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830018C:: @ 830018C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300190:: @ 8300190 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300194:: @ 8300194 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300198:: @ 8300198 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830019C:: @ 830019C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001A0:: @ 83001A0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001A4:: @ 83001A4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001A8:: @ 83001A8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001AC:: @ 83001AC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001B0:: @ 83001B0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001B4:: @ 83001B4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001B8:: @ 83001B8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001BC:: @ 83001BC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001C0:: @ 83001C0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001C4:: @ 83001C4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001C8:: @ 83001C8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001CC:: @ 83001CC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001D0: @ 83001D0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001D4:: @ 83001D4 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF71C + .4byte gUnknown_082FF734 + .4byte gUnknown_082FF744 + .4byte gUnknown_082FF750 + + .align 2 +gUnknown_083001E8:: @ 83001E8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083001EC:: @ 83001EC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF758 + .4byte gUnknown_082FF774 + .4byte gUnknown_082FF790 + + .align 2 +gUnknown_083001FC:: @ 83001FC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300200:: @ 8300200 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF79C + .4byte gUnknown_082FF7B0 + + .align 2 +gUnknown_0830020C:: @ 830020C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF7C4 + + .align 2 +gUnknown_08300214:: @ 8300214 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF7CC + + .align 2 +gUnknown_0830021C:: @ 830021C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF7D4 + + .align 2 +gUnknown_08300224:: @ 8300224 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF7DC + .4byte gUnknown_082FF7E4 + + .align 2 +gUnknown_08300230:: @ 8300230 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF7EC + .4byte gUnknown_082FF7F4 + + .align 2 +gUnknown_0830023C:: @ 830023C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF7FC + .4byte gUnknown_082FF804 + + .align 2 +gUnknown_08300248:: @ 8300248 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF80C + .4byte gUnknown_082FF814 + + .align 2 +gUnknown_08300254:: @ 8300254 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF81C + .4byte gUnknown_082FF824 + + .align 2 +gUnknown_08300260:: @ 8300260 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300264:: @ 8300264 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF82C + + .align 2 +gUnknown_0830026C:: @ 830026C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF834 + .4byte gUnknown_082FF83C + + .align 2 +gUnknown_08300278:: @ 8300278 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF844 + + .align 2 +gUnknown_08300280:: @ 8300280 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF84C + + .align 2 +gUnknown_08300288:: @ 8300288 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF854 + .4byte gUnknown_082FF85C + + .align 2 +gUnknown_08300294:: @ 8300294 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300298:: @ 8300298 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830029C:: @ 830029C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083002A0:: @ 83002A0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF864 + + .align 2 +gUnknown_083002A8:: @ 83002A8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF86C + + .align 2 +gUnknown_083002B0:: @ 83002B0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF874 + + .align 2 +gUnknown_083002B8:: @ 83002B8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF87C + + .align 2 +gUnknown_083002C0:: @ 83002C0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083002C4:: @ 83002C4 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF884 + + .align 2 +gUnknown_083002CC:: @ 83002CC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF88C + .4byte gUnknown_082FF894 + + .align 2 +gUnknown_083002D8:: @ 83002D8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF89C + .4byte gUnknown_082FF8A4 + + .align 2 +gUnknown_083002E4:: @ 83002E4 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF8AC + .4byte gUnknown_082FF8B4 + + .align 2 +gUnknown_083002F0:: @ 83002F0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF8BC + .4byte gUnknown_082FF8FC + .4byte gUnknown_082FF91C + .4byte gUnknown_082FF930 + + .align 2 +gUnknown_08300304:: @ 8300304 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300308:: @ 8300308 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF93C + + .align 2 +gUnknown_08300310:: @ 8300310 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF944 + + .align 2 +gUnknown_08300318:: @ 8300318 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FF94C + .4byte gUnknown_082FF9A8 + .4byte gUnknown_082FFA00 + .4byte gUnknown_082FFA58 + + .align 2 +gUnknown_0830032C:: @ 830032C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFA64 + + .align 2 +gUnknown_08300334:: @ 8300334 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFA6C + + .align 2 +gUnknown_0830033C:: @ 830033C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFA74 + + .align 2 +gUnknown_08300344:: @ 8300344 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300348:: @ 8300348 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFA7C + .4byte gUnknown_082FFA84 + + .align 2 +gUnknown_08300354:: @ 8300354 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300358:: @ 8300358 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830035C:: @ 830035C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFA8C + .4byte gUnknown_082FFA94 + + .align 2 +gUnknown_08300368:: @ 8300368 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830036C:: @ 830036C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300370:: @ 8300370 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFA9C + .4byte gUnknown_082FFAA4 + + .align 2 +gUnknown_0830037C:: @ 830037C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFAAC + .4byte gUnknown_082FFAB4 + + .align 2 +gUnknown_08300388:: @ 8300388 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFABC + .4byte gUnknown_082FFAC4 + + .align 2 +gUnknown_08300394:: @ 8300394 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFACC + .4byte gUnknown_082FFAD4 + + .align 2 +gUnknown_083003A0:: @ 83003A0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFADC + + .align 2 +gUnknown_083003A8:: @ 83003A8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFAE4 + + .align 2 +gUnknown_083003B0:: @ 83003B0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFAEC + + .align 2 +gUnknown_083003B8:: @ 83003B8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFAF4 + + .align 2 +gUnknown_083003C0:: @ 83003C0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFAFC + + .align 2 +gUnknown_083003C8:: @ 83003C8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB04 + .4byte gUnknown_082FFB0C + + .align 2 +gUnknown_083003D4:: @ 83003D4 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB14 + + .align 2 +gUnknown_083003DC:: @ 83003DC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB1C + .4byte gUnknown_082FFB24 + + .align 2 +gUnknown_083003E8:: @ 83003E8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB2C + + .align 2 +gUnknown_083003F0:: @ 83003F0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB34 + + .align 2 +gUnknown_083003F8:: @ 83003F8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB3C + + .align 2 +gUnknown_08300400:: @ 8300400 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB44 + .4byte gUnknown_082FFB60 + + .align 2 +gUnknown_0830040C:: @ 830040C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300410:: @ 8300410 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300414:: @ 8300414 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300418:: @ 8300418 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830041C:: @ 830041C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300420:: @ 8300420 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300424:: @ 8300424 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFB7C + .4byte gUnknown_082FFBBC + .4byte gUnknown_082FFBE0 + .4byte gUnknown_082FFBF4 + + .align 2 +gUnknown_08300438:: @ 8300438 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFBFC + .4byte gUnknown_082FFC04 + + .align 2 +gUnknown_08300444:: @ 8300444 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC0C + + .align 2 +gUnknown_0830044C:: @ 830044C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC14 + + .align 2 +gUnknown_08300454:: @ 8300454 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC1C + + .align 2 +gUnknown_0830045C:: @ 830045C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC24 + + .align 2 +gUnknown_08300464:: @ 8300464 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC2C + + .align 2 +gUnknown_0830046C:: @ 830046C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC34 + + .align 2 +gUnknown_08300474:: @ 8300474 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC3C + .4byte gUnknown_082FFC58 + + .align 2 +gUnknown_08300480:: @ 8300480 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC74 + + .align 2 +gUnknown_08300488:: @ 8300488 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC7C + .4byte gUnknown_082FFC84 + + .align 2 +gUnknown_08300494:: @ 8300494 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC8C + .4byte gUnknown_082FFC94 + + .align 2 +gUnknown_083004A0:: @ 83004A0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFC9C + .4byte gUnknown_082FFCA4 + + .align 2 +gUnknown_083004AC:: @ 83004AC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083004B0:: @ 83004B0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCAC + + .align 2 +gUnknown_083004B8:: @ 83004B8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCB4 + + .align 2 +gUnknown_083004C0:: @ 83004C0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCBC + + .align 2 +gUnknown_083004C8:: @ 83004C8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCC4 + + .align 2 +gUnknown_083004D0:: @ 83004D0 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCCC + + .align 2 +gUnknown_083004D8:: @ 83004D8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCD4 + + .align 2 +gUnknown_083004E0:: @ 83004E0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083004E4:: @ 83004E4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083004E8:: @ 83004E8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083004EC:: @ 83004EC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCDC + + .align 2 +gUnknown_083004F4:: @ 83004F4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083004F8:: @ 83004F8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083004FC:: @ 83004FC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCE4 + + .align 2 +gUnknown_08300504:: @ 8300504 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCEC + .4byte gUnknown_082FFCF4 + + .align 2 +gUnknown_08300510:: @ 8300510 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFCFC + + .align 2 +gUnknown_08300518:: @ 8300518 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830051C:: @ 830051C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300520:: @ 8300520 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300524:: @ 8300524 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD04 + + .align 2 +gUnknown_0830052C:: @ 830052C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD0C + + .align 2 +gUnknown_08300534:: @ 8300534 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD14 + + .align 2 +gUnknown_0830053C:: @ 830053C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD1C + .4byte gUnknown_082FFD24 + .4byte gUnknown_082FFD2C + .4byte gUnknown_082FFD34 + + .align 2 +gUnknown_08300550:: @ 8300550 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD3C + + .align 2 +gUnknown_08300558:: @ 8300558 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD44 + + .align 2 +gUnknown_08300560:: @ 8300560 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300564:: @ 8300564 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300568:: @ 8300568 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830056C:: @ 830056C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300570:: @ 8300570 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300574:: @ 8300574 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300578:: @ 8300578 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830057C:: @ 830057C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD4C + .4byte gUnknown_082FFD54 + + .align 2 +gUnknown_08300588:: @ 8300588 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830058C:: @ 830058C + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD5C + .4byte gUnknown_082FFD64 + + .align 2 +gUnknown_08300598:: @ 8300598 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830059C:: @ 830059C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005A0:: @ 83005A0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005A4:: @ 83005A4 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD6C + + .align 2 +gUnknown_083005AC:: @ 83005AC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD74 + + .align 2 +gUnknown_083005B4:: @ 83005B4 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD7C + .4byte gUnknown_082FFD84 + + .align 2 +gUnknown_083005C0:: @ 83005C0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005C4:: @ 83005C4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005C8:: @ 83005C8 + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFD8C + .4byte gUnknown_082FFDA0 + + .align 2 +gUnknown_083005D4:: @ 83005D4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005D8:: @ 83005D8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005DC:: @ 83005DC + .4byte gUnknown_082FF538 + .4byte gUnknown_082FFDC4 + + .align 2 +gUnknown_083005E4:: @ 83005E4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005E8:: @ 83005E8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005EC:: @ 83005EC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005F0:: @ 83005F0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005F4:: @ 83005F4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005F8:: @ 83005F8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083005FC:: @ 83005FC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300600:: @ 8300600 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300604:: @ 8300604 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300608:: @ 8300608 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830060C:: @ 830060C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300610:: @ 8300610 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300614:: @ 8300614 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300618:: @ 8300618 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830061C:: @ 830061C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300620:: @ 8300620 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300624:: @ 8300624 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300628:: @ 8300628 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830062C:: @ 830062C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300630:: @ 8300630 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300634:: @ 8300634 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300638:: @ 8300638 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830063C:: @ 830063C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300640:: @ 8300640 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300644:: @ 8300644 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300648:: @ 8300648 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830064C:: @ 830064C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300650:: @ 8300650 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08300654:: @ 8300654 + .4byte gUnknown_082FF538 + + .4byte gUnknown_082FFDCC + .4byte gUnknown_082FFDD0 + .4byte gUnknown_082FFDD4 + .4byte gUnknown_082FFDD8 + .4byte gUnknown_082FFDDC + .4byte gUnknown_082FFDE0 + .4byte gUnknown_082FFDE4 + .4byte gUnknown_082FFDE8 + .4byte gUnknown_082FFDEC + .4byte gUnknown_082FFDF0 + .4byte gUnknown_082FFDF4 + .4byte gUnknown_082FFDF8 + .4byte gUnknown_082FFDFC + .4byte gUnknown_082FFE00 + .4byte gUnknown_082FFE04 + .4byte gUnknown_082FFE08 + .4byte gUnknown_082FFE0C + .4byte gUnknown_082FFE10 + .4byte gUnknown_082FFE14 + .4byte gUnknown_082FFE18 + .4byte gUnknown_082FFE1C + .4byte gUnknown_082FFE20 + .4byte gUnknown_082FFE24 + .4byte gUnknown_082FFE28 + .4byte gUnknown_082FFE2C + .4byte gUnknown_082FFE30 + .4byte gUnknown_082FFE34 + .4byte gUnknown_082FFE38 + .4byte gUnknown_082FFE3C + .4byte gUnknown_082FFE40 + .4byte gUnknown_082FFE44 + .4byte gUnknown_082FFE48 + .4byte gUnknown_082FFE4C + .4byte gUnknown_082FFE50 + .4byte gUnknown_082FFE54 + .4byte gUnknown_082FFE58 + .4byte gUnknown_082FFE5C + .4byte gUnknown_082FFE60 + .4byte gUnknown_082FFE64 + .4byte gUnknown_082FFE68 + .4byte gUnknown_082FFE6C + .4byte gUnknown_082FFE70 + .4byte gUnknown_082FFE74 + .4byte gUnknown_082FFE78 + .4byte gUnknown_082FFE7C + .4byte gUnknown_082FFE80 + .4byte gUnknown_082FFE84 + .4byte gUnknown_082FFE88 + .4byte gUnknown_082FFE8C + .4byte gUnknown_082FFE90 + .4byte gUnknown_082FFE94 + .4byte gUnknown_082FFE98 + .4byte gUnknown_082FFE9C + .4byte gUnknown_082FFEA0 + .4byte gUnknown_082FFEA4 + .4byte gUnknown_082FFEA8 + .4byte gUnknown_082FFEAC + .4byte gUnknown_082FFEB0 + .4byte gUnknown_082FFEB4 + .4byte gUnknown_082FFEB8 + .4byte gUnknown_082FFEBC + .4byte gUnknown_082FFEC0 + .4byte gUnknown_082FFEC4 + .4byte gUnknown_082FFEC8 + .4byte gUnknown_082FFECC + .4byte gUnknown_082FFED0 + .4byte gUnknown_082FFED4 + .4byte gUnknown_082FFED8 + .4byte gUnknown_082FFEDC + .4byte gUnknown_082FFEE0 + .4byte gUnknown_082FFEE4 + .4byte gUnknown_082FFEE8 + .4byte gUnknown_082FFEEC + .4byte gUnknown_082FFEF0 + .4byte gUnknown_082FFEF4 + .4byte gUnknown_082FFEF8 + .4byte gUnknown_082FFEFC + .4byte gUnknown_082FFF00 + .4byte gUnknown_082FFF04 + .4byte gUnknown_082FFF08 + .4byte gUnknown_082FFF0C + .4byte gUnknown_082FFF10 + .4byte gUnknown_082FFF14 + .4byte gUnknown_082FFF18 + .4byte gUnknown_082FFF1C + .4byte gUnknown_082FFF20 + .4byte gUnknown_082FFF24 + .4byte gUnknown_082FFF28 + .4byte gUnknown_082FFF2C + .4byte gUnknown_082FFF30 + .4byte gUnknown_082FFF34 + .4byte gUnknown_082FFF38 + .4byte gUnknown_082FFF3C + .4byte gUnknown_082FFF40 + .4byte gUnknown_082FFF44 + .4byte gUnknown_082FFF48 + .4byte gUnknown_082FFF4C + .4byte gUnknown_082FFF50 + .4byte gUnknown_082FFF54 + .4byte gUnknown_082FFF58 + .4byte gUnknown_082FFF5C + .4byte gUnknown_082FFF60 + .4byte gUnknown_082FFF64 + .4byte gUnknown_082FFF68 + .4byte gUnknown_082FFF6C + .4byte gUnknown_082FFF70 + .4byte gUnknown_082FFF74 + .4byte gUnknown_082FFF78 + .4byte gUnknown_082FFF7C + .4byte gUnknown_082FFF80 + .4byte gUnknown_082FFF84 + .4byte gUnknown_082FFF88 + .4byte gUnknown_082FFF8C + .4byte gUnknown_082FFF90 + .4byte gUnknown_082FFF94 + .4byte gUnknown_082FFF98 + .4byte gUnknown_082FFF9C + .4byte gUnknown_082FFFA0 + .4byte gUnknown_082FFFA4 + .4byte gUnknown_082FFFA8 + .4byte gUnknown_082FFFAC + .4byte gUnknown_082FFFB0 + .4byte gUnknown_082FFFB4 + .4byte gUnknown_082FFFB8 + .4byte gUnknown_082FFFBC + .4byte gUnknown_082FFFC0 + .4byte gUnknown_082FFFC4 + .4byte gUnknown_082FFFC8 + .4byte gUnknown_082FFFCC + .4byte gUnknown_082FFFD0 + .4byte gUnknown_082FFFD4 + .4byte gUnknown_082FFFD8 + .4byte gUnknown_082FFFDC + .4byte gUnknown_082FFFE0 + .4byte gUnknown_082FFFE4 + .4byte gUnknown_082FFFE8 + .4byte gUnknown_082FFFEC + .4byte gUnknown_082FFFF0 + .4byte gUnknown_082FFFF4 + .4byte gUnknown_082FFFF8 + .4byte gUnknown_082FFFFC + .4byte gUnknown_08300000 + .4byte gUnknown_08300004 + .4byte gUnknown_08300008 + .4byte gUnknown_0830000C + .4byte gUnknown_08300010 + .4byte gUnknown_08300014 + .4byte gUnknown_08300018 + .4byte gUnknown_0830001C + .4byte gUnknown_08300020 + .4byte gUnknown_08300024 + .4byte gUnknown_08300028 + .4byte gUnknown_0830002C + .4byte gUnknown_08300030 + .4byte gUnknown_08300034 + .4byte gUnknown_08300038 + .4byte gUnknown_0830003C + .4byte gUnknown_08300040 + .4byte gUnknown_08300044 + .4byte gUnknown_08300048 + .4byte gUnknown_0830004C + .4byte gUnknown_08300050 + .4byte gUnknown_08300054 + .4byte gUnknown_08300058 + .4byte gUnknown_0830005C + .4byte gUnknown_08300060 + .4byte gUnknown_08300064 + .4byte gUnknown_08300068 + .4byte gUnknown_0830006C + .4byte gUnknown_08300070 + .4byte gUnknown_08300074 + .4byte gUnknown_08300078 + .4byte gUnknown_0830007C + .4byte gUnknown_08300080 + .4byte gUnknown_08300084 + .4byte gUnknown_08300088 + .4byte gUnknown_0830008C + .4byte gUnknown_08300090 + .4byte gUnknown_08300094 + .4byte gUnknown_08300098 + .4byte gUnknown_0830009C + .4byte gUnknown_083000A0 + .4byte gUnknown_083000A4 + .4byte gUnknown_083000A8 + .4byte gUnknown_083000AC + .4byte gUnknown_083000B0 + .4byte gUnknown_083000B4 + .4byte gUnknown_083000B8 + .4byte gUnknown_083000BC + .4byte gUnknown_083000C0 + .4byte gUnknown_083000C4 + .4byte gUnknown_083000C8 + .4byte gUnknown_083000CC + .4byte gUnknown_083000D0 + .4byte gUnknown_083000D4 + .4byte gUnknown_083000D8 + .4byte gUnknown_083000DC + .4byte gUnknown_083000E0 + .4byte gUnknown_083000E4 + .4byte gUnknown_083000E8 + .4byte gUnknown_083000EC + .4byte gUnknown_083000F0 + .4byte gUnknown_083000F4 + .4byte gUnknown_083000F8 + .4byte gUnknown_083000FC + .4byte gUnknown_08300100 + .4byte gUnknown_08300104 + .4byte gUnknown_08300108 + .4byte gUnknown_0830010C + .4byte gUnknown_08300110 + .4byte gUnknown_08300114 + .4byte gUnknown_08300118 + .4byte gUnknown_0830011C + .4byte gUnknown_08300120 + .4byte gUnknown_08300124 + .4byte gUnknown_08300128 + .4byte gUnknown_0830012C + .4byte gUnknown_08300130 + .4byte gUnknown_08300134 + .4byte gUnknown_08300138 + .4byte gUnknown_0830013C + .4byte gUnknown_08300140 + .4byte gUnknown_08300144 + .4byte gUnknown_08300148 + .4byte gUnknown_0830014C + .4byte gUnknown_08300150 + .4byte gUnknown_08300154 + .4byte gUnknown_08300158 + .4byte gUnknown_0830015C + .4byte gUnknown_08300160 + .4byte gUnknown_08300164 + .4byte gUnknown_08300168 + .4byte gUnknown_0830016C + .4byte gUnknown_08300170 + .4byte gUnknown_08300174 + .4byte gUnknown_08300178 + .4byte gUnknown_0830017C + .4byte gUnknown_08300180 + .4byte gUnknown_08300184 + .4byte gUnknown_08300188 + .4byte gUnknown_0830018C + .4byte gUnknown_08300190 + .4byte gUnknown_08300194 + .4byte gUnknown_08300198 + .4byte gUnknown_0830019C + .4byte gUnknown_083001A0 + .4byte gUnknown_083001A4 + .4byte gUnknown_083001A8 + .4byte gUnknown_083001AC + .4byte gUnknown_083001B0 + .4byte gUnknown_083001B4 + .4byte gUnknown_083001B8 + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001BC + .4byte gUnknown_083001C0 + .4byte gUnknown_083001C4 + .4byte gUnknown_083001C8 + .4byte gUnknown_083001CC + .4byte gUnknown_083001D0 + .4byte gUnknown_083001D4 + .4byte gUnknown_083001E8 + .4byte gUnknown_083001EC + .4byte gUnknown_083001FC + .4byte gUnknown_08300200 + .4byte gUnknown_0830020C + .4byte gUnknown_08300214 + .4byte gUnknown_0830021C + .4byte gUnknown_08300224 + .4byte gUnknown_08300230 + .4byte gUnknown_0830023C + .4byte gUnknown_08300248 + .4byte gUnknown_08300254 + .4byte gUnknown_08300260 + .4byte gUnknown_08300264 + .4byte gUnknown_0830026C + .4byte gUnknown_08300278 + .4byte gUnknown_08300280 + .4byte gUnknown_08300288 + .4byte gUnknown_08300294 + .4byte gUnknown_08300298 + .4byte gUnknown_0830029C + .4byte gUnknown_083002A0 + .4byte gUnknown_083002A8 + .4byte gUnknown_083002B0 + .4byte gUnknown_083002B8 + .4byte gUnknown_083002C0 + .4byte gUnknown_083002C4 + .4byte gUnknown_083002CC + .4byte gUnknown_083002D8 + .4byte gUnknown_083002E4 + .4byte gUnknown_083002F0 + .4byte gUnknown_08300304 + .4byte gUnknown_08300308 + .4byte gUnknown_08300310 + .4byte gUnknown_08300318 + .4byte gUnknown_0830032C + .4byte gUnknown_08300334 + .4byte gUnknown_0830033C + .4byte gUnknown_08300344 + .4byte gUnknown_08300348 + .4byte gUnknown_08300354 + .4byte gUnknown_08300358 + .4byte gUnknown_0830035C + .4byte gUnknown_08300368 + .4byte gUnknown_0830036C + .4byte gUnknown_08300370 + .4byte gUnknown_0830037C + .4byte gUnknown_08300388 + .4byte gUnknown_08300394 + .4byte gUnknown_083003A0 + .4byte gUnknown_083003A8 + .4byte gUnknown_083003B0 + .4byte gUnknown_083003B8 + .4byte gUnknown_083003C0 + .4byte gUnknown_083003C8 + .4byte gUnknown_083003D4 + .4byte gUnknown_083003DC + .4byte gUnknown_083003E8 + .4byte gUnknown_083003F0 + .4byte gUnknown_083003F8 + .4byte gUnknown_08300400 + .4byte gUnknown_0830040C + .4byte gUnknown_08300410 + .4byte gUnknown_08300414 + .4byte gUnknown_08300418 + .4byte gUnknown_0830041C + .4byte gUnknown_08300420 + .4byte gUnknown_08300424 + .4byte gUnknown_08300438 + .4byte gUnknown_08300444 + .4byte gUnknown_0830044C + .4byte gUnknown_08300454 + .4byte gUnknown_0830045C + .4byte gUnknown_08300464 + .4byte gUnknown_0830046C + .4byte gUnknown_08300474 + .4byte gUnknown_08300480 + .4byte gUnknown_08300488 + .4byte gUnknown_08300494 + .4byte gUnknown_083004A0 + .4byte gUnknown_083004AC + .4byte gUnknown_083004B0 + .4byte gUnknown_083004B8 + .4byte gUnknown_083004C0 + .4byte gUnknown_083004C8 + .4byte gUnknown_083004D0 + .4byte gUnknown_083004D8 + .4byte gUnknown_083004E0 + .4byte gUnknown_083004E4 + .4byte gUnknown_083004E8 + .4byte gUnknown_083004EC + .4byte gUnknown_083004F4 + .4byte gUnknown_083004F8 + .4byte gUnknown_083004FC + .4byte gUnknown_08300504 + .4byte gUnknown_08300510 + .4byte gUnknown_08300518 + .4byte gUnknown_0830051C + .4byte gUnknown_08300520 + .4byte gUnknown_08300524 + .4byte gUnknown_0830052C + .4byte gUnknown_08300534 + .4byte gUnknown_0830053C + .4byte gUnknown_08300550 + .4byte gUnknown_08300558 + .4byte gUnknown_08300560 + .4byte gUnknown_08300564 + .4byte gUnknown_08300568 + .4byte gUnknown_0830056C + .4byte gUnknown_08300570 + .4byte gUnknown_08300574 + .4byte gUnknown_08300578 + .4byte gUnknown_0830057C + .4byte gUnknown_08300588 + .4byte gUnknown_0830058C + .4byte gUnknown_08300598 + .4byte gUnknown_0830059C + .4byte gUnknown_083005A0 + .4byte gUnknown_083005A4 + .4byte gUnknown_083005AC + .4byte gUnknown_083005B4 + .4byte gUnknown_083005C0 + .4byte gUnknown_083005C4 + .4byte gUnknown_083005C8 + .4byte gUnknown_083005D4 + .4byte gUnknown_083005D8 + .4byte gUnknown_083005DC + .4byte gUnknown_083005E4 + .4byte gUnknown_083005E8 + .4byte gUnknown_083005EC + .4byte gUnknown_083005EC + .4byte gUnknown_083005F0 + .4byte gUnknown_083005F4 + .4byte gUnknown_083005F8 + .4byte gUnknown_083005FC + .4byte gUnknown_08300600 + .4byte gUnknown_08300604 + .4byte gUnknown_08300608 + .4byte gUnknown_0830060C + .4byte gUnknown_08300610 + .4byte gUnknown_08300614 + .4byte gUnknown_08300618 + .4byte gUnknown_0830061C + .4byte gUnknown_08300620 + .4byte gUnknown_08300624 + .4byte gUnknown_08300628 + .4byte gUnknown_0830062C + .4byte gUnknown_08300630 + .4byte gUnknown_08300634 + .4byte gUnknown_08300638 + .4byte gUnknown_0830063C + .4byte gUnknown_08300640 + .4byte gUnknown_08300644 + .4byte gUnknown_08300648 + .4byte gUnknown_0830064C + .4byte gUnknown_08300650 + .4byte gUnknown_08300654 + + .align 2 gUnknown_08300D38:: @ 8300D38 - .incbin "baserom.gba", 0x300d38, 0x6e0 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x45, 0x0e, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x45, 0x10, 0x00, 0x00 + .byte 0x54, 0x14, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x54, 0x12, 0x00, 0x00 + .byte 0x45, 0x0e, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x67, 0x0b, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x45, 0x0f, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x67, 0x09, 0x00, 0x00 + .byte 0x67, 0x04, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x45, 0x0f, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x78, 0x02, 0x00, 0x00 + .byte 0x55, 0x10, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x45, 0x10, 0x00, 0x00 + .byte 0x67, 0x08, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x45, 0x0f, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x54, 0x12, 0x00, 0x00 + .byte 0x75, 0x0d, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x56, 0x09, 0x00, 0x00 + .byte 0x78, 0x02, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x74, 0x13, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x65, 0x0f, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x54, 0x12, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x43, 0x15, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x57, 0x05, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x55, 0x10, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x78, 0x02, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x44, 0x13, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x67, 0x04, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x45, 0x0f, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x78, 0x02, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x88, 0x08, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x54, 0x11, 0x00, 0x00 + .byte 0x56, 0x09, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x55, 0x0d, 0x00, 0x00 + .byte 0x45, 0x0f, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x54, 0x11, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x75, 0x0e, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0d, 0x00, 0x00 + .byte 0x75, 0x0d, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x47, 0x04, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x55, 0x0d, 0x00, 0x00 + .byte 0x58, 0x03, 0x00, 0x00 + .byte 0x56, 0x0c, 0x00, 0x00 + .byte 0x67, 0x04, 0x00, 0x00 + .byte 0x54, 0x13, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x75, 0x10, 0x00, 0x00 + .byte 0x87, 0x0b, 0x00, 0x00 + .byte 0x45, 0x0c, 0x00, 0x00 + .byte 0x44, 0x14, 0x00, 0x00 + .byte 0x44, 0x12, 0x00, 0x00 + .byte 0x34, 0x14, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00 + .byte 0x44, 0x14, 0x00, 0x00 + .byte 0x47, 0x07, 0x00, 0x00 + .byte 0x55, 0x10, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x45, 0x0e, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x58, 0x03, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x67, 0x08, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x58, 0x01, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x35, 0x0f, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x74, 0x11, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0d, 0x00, 0x00 + .byte 0x57, 0x06, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x45, 0x0d, 0x00, 0x00 + .byte 0x78, 0x01, 0x00, 0x00 + .byte 0x45, 0x0d, 0x00, 0x00 + .byte 0x57, 0x0d, 0x00, 0x00 + .byte 0x43, 0x14, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x78, 0x04, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x35, 0x0f, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x45, 0x0d, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00 + .byte 0x56, 0x09, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x56, 0x0c, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x85, 0x0f, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x45, 0x0e, 0x00, 0x00 + .byte 0x75, 0x11, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x74, 0x10, 0x00, 0x00 + .byte 0x86, 0x0f, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x46, 0x10, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x74, 0x12, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x64, 0x10, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x68, 0x08, 0x00, 0x00 + .byte 0x84, 0x18, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x65, 0x0f, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x75, 0x0f, 0x00, 0x00 + .byte 0x87, 0x0a, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x55, 0x10, 0x00, 0x00 + .byte 0x78, 0x06, 0x00, 0x00 + .byte 0x56, 0x0c, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x46, 0x0b, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x46, 0x18, 0x00, 0x00 + .byte 0x66, 0x0c, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x46, 0x0d, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00 + .byte 0x86, 0x0c, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x64, 0x12, 0x00, 0x00 + .byte 0x67, 0x04, 0x00, 0x00 + .byte 0x65, 0x0f, 0x00, 0x00 + .byte 0x87, 0x09, 0x00, 0x00 + .byte 0x65, 0x10, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x74, 0x10, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x56, 0x0e, 0x00, 0x00 + .byte 0x66, 0x0c, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x68, 0x01, 0x00, 0x00 + .byte 0x76, 0x11, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x74, 0x12, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x55, 0x12, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x68, 0x00, 0x00, 0x00 + .byte 0x56, 0x0e, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x77, 0x08, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x77, 0x0b, 0x00, 0x00 + .byte 0x43, 0x14, 0x00, 0x00 + .byte 0x75, 0x0d, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x34, 0x11, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x35, 0x0f, 0x00, 0x00 + .byte 0x47, 0x06, 0x00, 0x00 + .byte 0x78, 0x01, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x78, 0x04, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x66, 0x0d, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x37, 0x06, 0x00, 0x00 + .byte 0x33, 0x14, 0x00, 0x00 + .byte 0x34, 0x10, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00 + .byte 0x44, 0x11, 0x00, 0x00 + .byte 0x44, 0x11, 0x00, 0x00 + .byte 0x35, 0x0e, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00 + .byte 0x34, 0x10, 0x00, 0x00 + .byte 0x34, 0x11, 0x00, 0x00 + .byte 0x44, 0x11, 0x00, 0x00 + .byte 0x34, 0x13, 0x00, 0x00 + .byte 0x44, 0x13, 0x00, 0x00 + .byte 0x43, 0x14, 0x00, 0x00 + .byte 0x44, 0x10, 0x00, 0x00 + .byte 0x34, 0x13, 0x00, 0x00 + .byte 0x43, 0x15, 0x00, 0x00 + .byte 0x34, 0x13, 0x00, 0x00 + .byte 0x45, 0x0c, 0x00, 0x00 + .byte 0x34, 0x12, 0x00, 0x00 + .byte 0x44, 0x12, 0x00, 0x00 + .byte 0x44, 0x12, 0x00, 0x00 + .byte 0x44, 0x13, 0x00, 0x00 + .byte 0x33, 0x15, 0x00, 0x00 + .byte 0x34, 0x11, 0x00, 0x00 + .byte 0x34, 0x10, 0x00, 0x00 + .byte 0x35, 0x0f, 0x00, 0x00 + .byte 0x35, 0x0d, 0x00, 0x00 @ 8301418 .include "data/graphics/pokemon/mon_still_front_pic_table.inc" + .align 2 gUnknown_083021D8:: @ 83021D8 - .incbin "baserom.gba", 0x3021d8, 0x6e0 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x64, 0x10, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x46, 0x0a, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x85, 0x0c, 0x00, 0x00 + .byte 0x78, 0x02, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x75, 0x0d, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x63, 0x14, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x74, 0x10, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x67, 0x04, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x75, 0x0c, 0x00, 0x00 + .byte 0x84, 0x10, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x43, 0x14, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x75, 0x0c, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x55, 0x0e, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x85, 0x0c, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x54, 0x11, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x78, 0x01, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x68, 0x03, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x73, 0x15, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x65, 0x0f, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x54, 0x10, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x54, 0x11, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x75, 0x0c, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x85, 0x0f, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x66, 0x09, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x36, 0x08, 0x00, 0x00 + .byte 0x75, 0x0c, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x65, 0x0f, 0x00, 0x00 + .byte 0x84, 0x10, 0x00, 0x00 + .byte 0x85, 0x0f, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x63, 0x15, 0x00, 0x00 + .byte 0x75, 0x0d, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x75, 0x0d, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x55, 0x0c, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x65, 0x0e, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x56, 0x09, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x67, 0x05, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x76, 0x09, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x85, 0x0f, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x83, 0x15, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x73, 0x14, 0x00, 0x00 + .byte 0x83, 0x14, 0x00, 0x00 + .byte 0x75, 0x0f, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x83, 0x14, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x64, 0x11, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00 + .byte 0x83, 0x15, 0x00, 0x00 + .byte 0x83, 0x16, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x85, 0x0c, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x46, 0x0a, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x67, 0x07, 0x00, 0x00 + .byte 0x68, 0x02, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x75, 0x0e, 0x00, 0x00 + .byte 0x74, 0x11, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x84, 0x10, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x86, 0x0b, 0x00, 0x00 + .byte 0x84, 0x13, 0x00, 0x00 + .byte 0x64, 0x12, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x85, 0x0f, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x76, 0x0a, 0x00, 0x00 + .byte 0x85, 0x0c, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x87, 0x04, 0x00, 0x00 + .byte 0x76, 0x0b, 0x00, 0x00 + .byte 0x68, 0x03, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x87, 0x06, 0x00, 0x00 + .byte 0x77, 0x07, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x85, 0x0f, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x86, 0x08, 0x00, 0x00 + .byte 0x66, 0x0b, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x68, 0x02, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x78, 0x03, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x65, 0x0c, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x88, 0x01, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x54, 0x11, 0x00, 0x00 + .byte 0x84, 0x11, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x45, 0x0d, 0x00, 0x00 + .byte 0x76, 0x08, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x83, 0x17, 0x00, 0x00 + .byte 0x77, 0x05, 0x00, 0x00 + .byte 0x45, 0x0d, 0x00, 0x00 + .byte 0x57, 0x06, 0x00, 0x00 + .byte 0x77, 0x04, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x85, 0x0d, 0x00, 0x00 + .byte 0x77, 0x06, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x84, 0x10, 0x00, 0x00 + .byte 0x83, 0x14, 0x00, 0x00 + .byte 0x86, 0x0a, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x85, 0x0e, 0x00, 0x00 + .byte 0x84, 0x13, 0x00, 0x00 + .byte 0x87, 0x07, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00 + .byte 0x88, 0x02, 0x00, 0x00 + .byte 0x88, 0x03, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00 + .byte 0x86, 0x09, 0x00, 0x00 + .byte 0x47, 0x07, 0x00, 0x00 + .byte 0x36, 0x0a, 0x00, 0x00 + .byte 0x56, 0x09, 0x00, 0x00 + .byte 0x67, 0x06, 0x00, 0x00 + .byte 0x56, 0x08, 0x00, 0x00 + .byte 0x56, 0x0a, 0x00, 0x00 + .byte 0x66, 0x0a, 0x00, 0x00 + .byte 0x57, 0x05, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x37, 0x07, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00 + .byte 0x57, 0x07, 0x00, 0x00 + .byte 0x46, 0x0a, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x66, 0x08, 0x00, 0x00 + .byte 0x46, 0x0a, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x45, 0x0c, 0x00, 0x00 + .byte 0x57, 0x04, 0x00, 0x00 + .byte 0x45, 0x0d, 0x00, 0x00 + .byte 0x65, 0x0d, 0x00, 0x00 + .byte 0x56, 0x0b, 0x00, 0x00 + .byte 0x55, 0x0d, 0x00, 0x00 + .byte 0x55, 0x0f, 0x00, 0x00 + .byte 0x46, 0x0a, 0x00, 0x00 + .byte 0x46, 0x0a, 0x00, 0x00 + .byte 0x37, 0x06, 0x00, 0x00 + .byte 0x47, 0x06, 0x00, 0x00 @ 83028B8 .include "data/graphics/pokemon/mon_back_pic_table.inc" @@ -113,14 +3905,475 @@ gUnknown_083021D8:: @ 83021D8 @ 8304438 .include "data/graphics/pokemon/mon_shiny_palette_table.inc" -@ 83051F8 - .incbin "baserom.gba", 0x3051f8, 0x174 +gUnknown_083051F8:: @ 83051F8 + .4byte gUnknown_082FF538 + .align 2 +gUnknown_083051FC:: @ 83051FC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305200:: @ 8305200 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305204:: @ 8305204 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305208:: @ 8305208 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830520C:: @ 830520C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305210:: @ 8305210 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305214:: @ 8305214 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305218:: @ 8305218 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830521C:: @ 830521C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305220:: @ 8305220 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305224:: @ 8305224 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305228:: @ 8305228 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830522C:: @ 830522C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305230:: @ 8305230 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305234:: @ 8305234 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305238:: @ 8305238 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830523C:: @ 830523C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305240:: @ 8305240 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305244:: @ 8305244 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305248:: @ 8305248 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830524C:: @ 830524C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305250:: @ 8305250 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305254:: @ 8305254 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305258:: @ 8305258 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830525C:: @ 830525C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305260:: @ 8305260 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305264:: @ 8305264 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305268:: @ 8305268 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830526C:: @ 830526C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305270:: @ 8305270 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305274:: @ 8305274 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305278:: @ 8305278 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830527C:: @ 830527C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305280:: @ 8305280 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305284:: @ 8305284 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305288:: @ 8305288 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830528C:: @ 830528C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305290:: @ 8305290 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305294:: @ 8305294 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305298:: @ 8305298 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830529C:: @ 830529C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052A0:: @ 83052A0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052A4:: @ 83052A4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052A8:: @ 83052A8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052AC:: @ 83052AC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052B0:: @ 83052B0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052B4:: @ 83052B4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052B8:: @ 83052B8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052BC:: @ 83052BC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052C0:: @ 83052C0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052C4:: @ 83052C4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052C8:: @ 83052C8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052CC:: @ 83052CC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052D0:: @ 83052D0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052D4:: @ 83052D4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052D8:: @ 83052D8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052DC:: @ 83052DC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052E0:: @ 83052E0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052E4:: @ 83052E4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052E8:: @ 83052E8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052EC:: @ 83052EC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052F0:: @ 83052F0 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052F4:: @ 83052F4 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052F8:: @ 83052F8 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_083052FC:: @ 83052FC + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305300:: @ 8305300 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305304:: @ 8305304 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305308:: @ 8305308 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830530C:: @ 830530C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305310:: @ 8305310 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305314:: @ 8305314 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305318:: @ 8305318 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830531C:: @ 830531C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305320:: @ 8305320 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305324:: @ 8305324 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305328:: @ 8305328 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830532C:: @ 830532C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305330:: @ 8305330 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305334:: @ 8305334 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305338:: @ 8305338 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830533C:: @ 830533C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305340:: @ 8305340 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305344:: @ 8305344 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305348:: @ 8305348 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830534C:: @ 830534C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305350:: @ 8305350 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305354:: @ 8305354 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305358:: @ 8305358 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_0830535C:: @ 830535C + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305360:: @ 8305360 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305364:: @ 8305364 + .4byte gUnknown_082FF538 + + .align 2 +gUnknown_08305368:: @ 8305368 + .4byte gUnknown_082FF538 + + .align 2 gUnknown_0830536C:: @ 830536C - .incbin "baserom.gba", 0x30536c, 0x174 + .4byte gUnknown_083051F8 + .4byte gUnknown_083051FC + .4byte gUnknown_08305200 + .4byte gUnknown_08305204 + .4byte gUnknown_08305208 + .4byte gUnknown_0830520C + .4byte gUnknown_08305210 + .4byte gUnknown_08305214 + .4byte gUnknown_08305218 + .4byte gUnknown_0830521C + .4byte gUnknown_08305220 + .4byte gUnknown_08305224 + .4byte gUnknown_08305228 + .4byte gUnknown_0830522C + .4byte gUnknown_08305230 + .4byte gUnknown_08305234 + .4byte gUnknown_08305238 + .4byte gUnknown_0830523C + .4byte gUnknown_08305240 + .4byte gUnknown_08305244 + .4byte gUnknown_08305248 + .4byte gUnknown_0830524C + .4byte gUnknown_08305250 + .4byte gUnknown_08305254 + .4byte gUnknown_08305258 + .4byte gUnknown_0830525C + .4byte gUnknown_08305260 + .4byte gUnknown_08305264 + .4byte gUnknown_08305268 + .4byte gUnknown_0830526C + .4byte gUnknown_08305270 + .4byte gUnknown_08305274 + .4byte gUnknown_08305278 + .4byte gUnknown_0830527C + .4byte gUnknown_08305280 + .4byte gUnknown_08305284 + .4byte gUnknown_08305288 + .4byte gUnknown_0830528C + .4byte gUnknown_08305290 + .4byte gUnknown_08305294 + .4byte gUnknown_08305298 + .4byte gUnknown_0830529C + .4byte gUnknown_083052A0 + .4byte gUnknown_083052A4 + .4byte gUnknown_083052A8 + .4byte gUnknown_083052AC + .4byte gUnknown_083052B0 + .4byte gUnknown_083052B4 + .4byte gUnknown_083052B8 + .4byte gUnknown_083052BC + .4byte gUnknown_083052C0 + .4byte gUnknown_083052C4 + .4byte gUnknown_083052C8 + .4byte gUnknown_083052CC + .4byte gUnknown_083052D0 + .4byte gUnknown_083052D4 + .4byte gUnknown_083052D8 + .4byte gUnknown_083052DC + .4byte gUnknown_083052E0 + .4byte gUnknown_083052E4 + .4byte gUnknown_083052E8 + .4byte gUnknown_083052EC + .4byte gUnknown_083052F0 + .4byte gUnknown_083052F4 + .4byte gUnknown_083052F8 + .4byte gUnknown_083052FC + .4byte gUnknown_08305300 + .4byte gUnknown_08305304 + .4byte gUnknown_08305308 + .4byte gUnknown_0830530C + .4byte gUnknown_08305310 + .4byte gUnknown_08305314 + .4byte gUnknown_08305318 + .4byte gUnknown_0830531C + .4byte gUnknown_08305320 + .4byte gUnknown_08305324 + .4byte gUnknown_08305328 + .4byte gUnknown_0830532C + .4byte gUnknown_08305330 + .4byte gUnknown_08305334 + .4byte gUnknown_08305338 + .4byte gUnknown_0830533C + .4byte gUnknown_08305340 + .4byte gUnknown_08305344 + .4byte gUnknown_08305348 + .4byte gUnknown_0830534C + .4byte gUnknown_08305350 + .4byte gUnknown_08305354 + .4byte gUnknown_08305358 + .4byte gUnknown_0830535C + .4byte gUnknown_08305360 + .4byte gUnknown_08305364 + .4byte gUnknown_08305368 -gUnknown_083054E0:: @ 83054E0 - .incbin "baserom.gba", 0x3054e0, 0x174 +@ 83054E0 + .include "data/graphics/trainers/front_pic_coords.inc" @ 8305654 .include "data/graphics/trainers/trainer_front_pic_table.inc" @@ -128,14 +4381,93 @@ gUnknown_083054E0:: @ 83054E0 @ 830593C .include "data/graphics/trainers/trainer_front_pic_palette_table.inc" -@ 8305C24 - .incbin "baserom.gba", 0x305c24, 0xe8 +gUnknown_08305C24:: @ 8305C24 + .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009 + .2byte 0x0003, 0x0032, 0xffff, 0x0000 + .align 2 +gUnknown_08305C3C:: @ 8305C3C + .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009 + .2byte 0x0003, 0x0032, 0xffff, 0x0000 + + .align 2 +gUnknown_08305C54:: @ 8305C54 + .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009 + .2byte 0x0003, 0x0032, 0xffff, 0x0000 + + .align 2 +gUnknown_08305C6C:: @ 8305C6C + .2byte 0x0001, 0x0014, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0018 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08305C84:: @ 8305C84 + .2byte 0x0001, 0x0014, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0018 + .2byte 0x0000, 0x0001, 0xffff, 0x0000 + + .align 2 +gUnknown_08305C9C:: @ 8305C9C + .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009 + .2byte 0x0003, 0x0032, 0xffff, 0x0000 + + .align 2 +gUnknown_08305CB4:: @ 8305CB4 + .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009 + .2byte 0x0003, 0x0032, 0xffff, 0x0000 + + .align 2 +gUnknown_08305CCC:: @ 8305CCC + .4byte gUnknown_082FF540 + .4byte gUnknown_08305C24 + + .align 2 +gUnknown_08305CD4:: @ 8305CD4 + .4byte gUnknown_082FF540 + .4byte gUnknown_08305C3C + + .align 2 +gUnknown_08305CDC:: @ 8305CDC + .4byte gUnknown_082FF538 + .4byte gUnknown_08305C6C + + .align 2 +gUnknown_08305CE4:: @ 8305CE4 + .4byte gUnknown_082FF538 + .4byte gUnknown_08305C84 + + .align 2 +gUnknown_08305CEC:: @ 8305CEC + .4byte gUnknown_082FF540 + .4byte gUnknown_08305C9C + + .align 2 +gUnknown_08305CF4:: @ 8305CF4 + .4byte gUnknown_082FF540 + .4byte gUnknown_08305CB4 + + .align 2 +gUnknown_08305CFC:: @ 8305CFC + .4byte gUnknown_082FF540 + .4byte gUnknown_08305C54 + + .align 2 +gUnknown_08305D04:: @ 8305D04 + .4byte gUnknown_082FF540 + .4byte gUnknown_08305C3C + + .align 2 gUnknown_08305D0C:: @ 8305D0C - .incbin "baserom.gba", 0x305d0c, 0x20 + .4byte gUnknown_08305CCC + .4byte gUnknown_08305CD4 + .4byte gUnknown_08305CDC + .4byte gUnknown_08305CE4 + .4byte gUnknown_08305CEC + .4byte gUnknown_08305CF4 + .4byte gUnknown_08305CFC + .4byte gUnknown_08305D04 -gUnknown_08305D2C:: @ 8305D2C - .incbin "baserom.gba", 0x305d2c, 0x20 +@ 8305D2C + .include "data/graphics/trainers/back_pic_coords.inc" @ 8305D4C .include "data/graphics/trainers/trainer_back_pic_table.inc" @@ -143,8 +4475,10 @@ gUnknown_08305D2C:: @ 8305D2C @ 8305D8C .include "data/graphics/trainers/trainer_back_pic_palette_table.inc" -gUnknown_08305DCC:: @ 8305DCC - .incbin "baserom.gba", 0x305dcc, 0x3ce0 +@ 8305DCC + .include "data/enemy_mon_elevation.inc" + + .incbin "baserom.gba", 0x305f68, 0x3b44 gUnknown_08309AAC:: @ 8309AAC .incbin "baserom.gba", 0x309aac, 0x6e0 @@ -153,7 +4487,116 @@ gUnknown_08309AAC:: @ 8309AAC .include "data/graphics/pokemon/mon_front_pic_table.inc" @ 830AF4C - .incbin "baserom.gba", 0x30af4c, 0x6e0 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000886 + .4byte 0x00000888, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000886, 0x00000886 + .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000888, 0x00000886, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000886, 0x00000886 + .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000088 + .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000886, 0x00000888, 0x00000088, 0x00000088 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886 + .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000888 + .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000088, 0x00000088, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000886 + .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000888, 0x00000886, 0x00000888 + .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000088, 0x00000888, 0x00000886 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000088 + .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000888 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000886 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000886 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886 + .4byte 0x00000888, 0x00000886, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000888, 0x00000088, 0x00000888 + .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000888 + .4byte 0x00000886, 0x00000888, 0x00000886, 0x00000886 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000088 + .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888 + .4byte 0x00000886, 0x00000888, 0x00000088, 0x00000088 + .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000088 + .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000888, 0x00000088, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886 + .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000886, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886 + .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888 + .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886 + .4byte 0x00001882, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000886, 0x00000088, 0x00000886, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886 + .4byte 0x00000886, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000088 + .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886 + .4byte 0x00000886, 0x00000886, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886 + .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000088 + .4byte 0x00000886, 0x00000088, 0x00000886, 0x00000886 + .4byte 0x00000886, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886 + .4byte 0x00000886, 0x00000888, 0x00000886, 0x00000886 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000886, 0x00000886, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088 + .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 + .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 @ 830B62C .include "data/trainer_parties.inc" @@ -170,47 +4613,236 @@ gUnknown_08309AAC:: @ 8309AAC @ 831977C .include "data/text/move_names.inc" - .incbin "baserom.gba", 0x31a983, 0x4d +.align 2 + .2byte 0x0300, 0x0000 + .align 2 +gUnknown_0831A988:: @ 831A988 + .byte 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_0831A990:: @ 831A990 + .byte 0x00, 0x03, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_0831A998:: @ 831A998 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0831A9A8:: @ 831A9A8 + .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0018, 0x0018, 0x8000, 0x0000 + .2byte 0x0018, 0x0018, 0x8000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_0831A9C8:: @ 831A9C8 + .4byte gUnknown_0831A998 + .4byte gUnknown_0831A9A8 + + .align 2 gUnknown_0831A9D0:: @ 831A9D0 - .incbin "baserom.gba", 0x31a9d0, 0x18 + spr_template 0x2710, 0x2710, gUnknown_0831A988, gDummySpriteAnimTable, NULL, gUnknown_0831A9C8, nullsub_17 + .align 2 gUnknown_0831A9E8:: @ 831A9E8 - .incbin "baserom.gba", 0x31a9e8, 0x18 + spr_template 0x2710, 0x2710, gUnknown_0831A990, gDummySpriteAnimTable, NULL, gUnknown_0831A9C8, nullsub_17 + .align 2 gUnknown_0831AA00:: @ 831AA00 - .incbin "baserom.gba", 0x31aa00, 0x8 + obj_tiles gUnknown_08D77B0C, 0x1000, 0x2710 + .align 2 gUnknown_0831AA08:: @ 831AA08 - .incbin "baserom.gba", 0x31aa08, 0x198 + .4byte 0x00000580, 0x000005c5, 0x000013e6, 0x000033ab + .align 2 +gUnknown_0831AA18:: @ 831AA18 + window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x00, 0x0090 + window_template 0x00, 0x01, 0x23, 0x0e, 0x04, 0x00, 0x01c0 + window_template 0x00, 0x11, 0x23, 0x0c, 0x04, 0x05, 0x0190 + window_template 0x00, 0x02, 0x37, 0x08, 0x02, 0x05, 0x0300 + window_template 0x00, 0x0b, 0x37, 0x08, 0x02, 0x05, 0x0310 + window_template 0x00, 0x02, 0x39, 0x08, 0x02, 0x05, 0x0320 + window_template 0x00, 0x0b, 0x39, 0x08, 0x02, 0x05, 0x0330 + window_template 0x00, 0x15, 0x37, 0x04, 0x02, 0x05, 0x0290 + window_template 0x00, 0x15, 0x39, 0x00, 0x00, 0x05, 0x0298 + window_template 0x00, 0x19, 0x37, 0x04, 0x02, 0x05, 0x0298 + window_template 0x00, 0x15, 0x39, 0x08, 0x02, 0x05, 0x02a0 + window_template 0x00, 0x15, 0x37, 0x08, 0x04, 0x05, 0x02b0 + window_template 0x00, 0x1a, 0x09, 0x03, 0x04, 0x05, 0x0100 + window_template 0x01, 0x13, 0x08, 0x0a, 0x0b, 0x05, 0x0100 + window_template 0x02, 0x12, 0x00, 0x0c, 0x03, 0x06, 0x016e + window_template 0x01, 0x02, 0x03, 0x06, 0x02, 0x05, 0x0020 + window_template 0x02, 0x02, 0x03, 0x06, 0x02, 0x05, 0x0040 + window_template 0x01, 0x02, 0x02, 0x06, 0x02, 0x05, 0x0020 + window_template 0x02, 0x02, 0x02, 0x06, 0x02, 0x05, 0x0040 + window_template 0x01, 0x02, 0x06, 0x06, 0x02, 0x05, 0x0060 + window_template 0x02, 0x02, 0x06, 0x06, 0x02, 0x05, 0x0080 + window_template 0x00, 0x0c, 0x02, 0x06, 0x02, 0x00, 0x00a0 + window_template 0x00, 0x04, 0x02, 0x07, 0x02, 0x00, 0x00a0 + window_template 0x00, 0x13, 0x02, 0x07, 0x02, 0x00, 0x00b0 + window_template_terminator + + .align 2 +gUnknown_0831AAE0:: @ 831AAE0 + window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x00, 0x0090 + window_template 0x00, 0x01, 0x23, 0x0e, 0x04, 0x00, 0x01c0 + window_template 0x00, 0x11, 0x23, 0x0c, 0x04, 0x05, 0x0190 + window_template 0x00, 0x02, 0x37, 0x08, 0x02, 0x05, 0x0300 + window_template 0x00, 0x0b, 0x37, 0x08, 0x02, 0x05, 0x0310 + window_template 0x00, 0x02, 0x39, 0x08, 0x02, 0x05, 0x0320 + window_template 0x00, 0x0b, 0x39, 0x08, 0x02, 0x05, 0x0330 + window_template 0x00, 0x15, 0x37, 0x04, 0x02, 0x05, 0x0290 + window_template 0x00, 0x15, 0x39, 0x00, 0x00, 0x05, 0x0298 + window_template 0x00, 0x19, 0x37, 0x04, 0x02, 0x05, 0x0298 + window_template 0x00, 0x15, 0x39, 0x08, 0x02, 0x05, 0x02a0 + window_template 0x00, 0x15, 0x37, 0x08, 0x04, 0x05, 0x02b0 + window_template 0x00, 0x1a, 0x09, 0x03, 0x04, 0x05, 0x0100 + window_template 0x01, 0x13, 0x08, 0x0a, 0x0b, 0x05, 0x0100 + window_template 0x02, 0x12, 0x00, 0x0c, 0x03, 0x06, 0x016e + window_template 0x00, 0x06, 0x01, 0x08, 0x02, 0x05, 0x0100 + window_template 0x00, 0x0e, 0x01, 0x02, 0x02, 0x05, 0x0110 + window_template 0x00, 0x10, 0x01, 0x08, 0x02, 0x05, 0x0114 + window_template 0x00, 0x0c, 0x04, 0x06, 0x02, 0x05, 0x0124 + window_template 0x00, 0x0c, 0x06, 0x06, 0x02, 0x05, 0x0130 + window_template 0x00, 0x0c, 0x08, 0x06, 0x02, 0x05, 0x013c + window_template 0x00, 0x08, 0x0b, 0x0e, 0x02, 0x05, 0x0148 + window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x07, 0x0090 + window_template_terminator + + .align 2 gUnknown_0831ABA0:: @ 831ABA0 - .incbin "baserom.gba", 0x31aba0, 0x8 + .4byte gUnknown_0831AA18 + .4byte gUnknown_0831AAE0 -gUnknown_0831ABA8:: @ 831ABA8 - .incbin "baserom.gba", 0x31aba8, 0xc8 + .align 2 +gBattleTerrainTable:: @ 831ABA8 + @ tall_grass + .4byte gUnknown_08D77D68 + .4byte gUnknown_08D78350 + .4byte gUnknown_08D7E280 + .4byte gUnknown_08D7E808 + .4byte gUnknown_08D78318 + @ long_grass + .4byte gUnknown_08D78600 + .4byte gUnknown_08D78CB8 + .4byte gUnknown_08D7E9C4 + .4byte gUnknown_08D7F0D4 + .4byte gUnknown_08D78C78 + + @ sand + .4byte gUnknown_08D78F68 + .4byte gUnknown_08D795A8 + .4byte gUnknown_08D7F30C + .4byte gUnknown_08D7F850 + .4byte gUnknown_08D79560 + + @ underwater + .4byte gUnknown_08D79858 + .4byte gUnknown_08D79E58 + .4byte gUnknown_08D7F9F8 + .4byte gUnknown_08D7FEC4 + .4byte gUnknown_08D79E10 + + @ water + .4byte gUnknown_08D7A108 + .4byte gUnknown_08D7A720 + .4byte gUnknown_08D80054 + .4byte gUnknown_08D80660 + .4byte gUnknown_08D7A6DC + + @ pond_water + .4byte gUnknown_08D7A9D0 + .4byte gUnknown_08D7AFB8 + .4byte gUnknown_08D80804 + .4byte gUnknown_08D80D50 + .4byte gUnknown_08D7AF78 + + @ rock + .4byte gUnknown_08D7B268 + .4byte gUnknown_08D7B864 + .4byte gUnknown_08D80E9C + .4byte gUnknown_08D8147C + .4byte gUnknown_08D7B828 + + @ cave + .4byte gUnknown_08D7BB14 + .4byte gUnknown_08D7C154 + .4byte gUnknown_08D81610 + .4byte gUnknown_08D81E2C + .4byte gUnknown_08D7C10C + + @ building + .4byte gUnknown_08D7C440 + .4byte gUnknown_08D7CA28 + .4byte gUnknown_08D820D4 + .4byte gUnknown_08D824E4 + .4byte gUnknown_08D7DEB4 + + @ plain + .4byte gUnknown_08D7C440 + .4byte gUnknown_08D7CA28 + .4byte gUnknown_08D820D4 + .4byte gUnknown_08D824E4 + .4byte gUnknown_08D7C404 + + .align 2 gUnknown_0831AC70:: @ 831AC70 - .incbin "baserom.gba", 0x31ac70, 0x18 + .4byte REG_BG3HOFS + .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 + .4byte 1 + .4byte REG_BG3HOFS + .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_32BIT | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 + .4byte 1 + .align 2 gUnknown_0831AC88:: @ 831AC88 - .incbin "baserom.gba", 0x31ac88, 0x18 + spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8038528 + .align 2 gUnknown_0831ACA0:: @ 831ACA0 - .incbin "baserom.gba", 0x31aca0, 0x40 + .string "ヌケニン$" @ "Nukenin" (Shedinja) + .align 2 +gUnknown_0831ACA8:: @ 831ACA8 + .2byte 0x0100 + .2byte 0xC000 + .2byte 0x0800 + + .align 2 +gUnknown_0831ACB0:: @ 831ACB0 + .2byte 0x0100 + .2byte 0xC000 + .2byte 0x2800 + + .align 2 +gUnknown_0831ACB8:: @ 831ACB8 + .2byte 0x0000, 0x0005, 0xfffe, 0x0000 + + .align 2 +gUnknown_0831ACC0:: @ 831ACC0 + .4byte gUnknown_0831ACB8 + + .align 2 +gUnknown_0831ACC4:: @ 831ACC4 + .2byte 0xfff0, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000, 0x3c00, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000 + + .align 2 +gUnknown_0831ACDC:: @ 831ACDC + .4byte gUnknown_0831ACC4 + + .align 2 gUnknown_0831ACE0:: @ 831ACE0 - .incbin "baserom.gba", 0x31ace0, 0x8 + .byte 0xe0, 0xf0, 0xf0, 0xe0, 0xe0, 0x00, 0x00, 0x00 -gTypeEffectiveness:: @ 831ACE8 - .incbin "baserom.gba", 0x31ace8, 0x150 +@ 831ACE8 + .include "data/type_effectiveness.inc" @ 831AE38 .include "data/text/type_names.inc" - .align 2 -gTrainerMoneyTable:: @ 831AEB8 - .incbin "baserom.gba", 0x31aeb8, 0xe0 +@ 831AEB8 + .include "data/trainer_money.inc" @ 831AF98 .include "data/text/ability_descriptions.inc" @@ -221,45 +4853,92 @@ gTrainerMoneyTable:: @ 831AEB8 @ 831BAD4 .include "data/text/ability_description_pointers.inc" + .align 2 gUnknown_0831BC0C:: @ 831BC0C - .incbin "baserom.gba", 0x31bc0c, 0x38 + .4byte sub_803E0B8 + .4byte sub_803E90C + .4byte bs2_8016374 + .4byte sub_803EE48 + .4byte sub_803EFA8 + .4byte bs5_8016AC0 + .4byte sub_803F050 + .4byte sub_803F120 + .4byte bs8_exit_by_flight + .4byte bs9_8016C9C + .4byte sub_80458B4 + .4byte bsB_exit_by_move + .4byte bsC_8016D70 + .4byte bsD_proceed + .align 2 gUnknown_0831BC44:: @ 831BC44 - .incbin "baserom.gba", 0x31bc44, 0x2c + .4byte bc_8013B1C + .4byte sub_803D8C0 + .4byte sub_803DAC0 + .4byte sub_803DAC0 + .4byte sub_803DBA0 + .4byte sub_803DCD8 + .4byte bc_80158BC + .4byte sub_803DCD8 + .4byte sub_803DCD8 + .4byte sub_803DCD8 + .4byte sub_803DCD8 -gStatusConditionString_PoisonJpn:: @ 831BC70 - .incbin "baserom.gba", 0x31bc70, 0x8 +gStatusConditionString_PoisonJpn:: @ 81FA69C + .string "どく$$$$$$" -gStatusConditionString_SleepJpn:: @ 831BC78 - .incbin "baserom.gba", 0x31bc78, 0x8 +gStatusConditionString_SleepJpn:: @ 81FA6A4 + .string "ねむり$$$$$" -gStatusConditionString_ParalysisJpn:: @ 831BC80 - .incbin "baserom.gba", 0x31bc80, 0x8 +gStatusConditionString_ParalysisJpn:: @ 81FA6AC + .string "まひ$$$$$$" -gStatusConditionString_BurnJpn:: @ 831BC88 - .incbin "baserom.gba", 0x31bc88, 0x8 +gStatusConditionString_BurnJpn:: @ 81FA6B4 + .string "やけど$$$$$" -gStatusConditionString_IceJpn:: @ 831BC90 - .incbin "baserom.gba", 0x31bc90, 0x8 +gStatusConditionString_IceJpn:: @ 81FA6BC + .string "こおり$$$$$" -gStatusConditionString_ConfusionJpn:: @ 831BC98 - .incbin "baserom.gba", 0x31bc98, 0x8 +gStatusConditionString_ConfusionJpn:: @ 81FA6C4 + .string "こんらん$$$$" -gStatusConditionString_LoveJpn:: @ 831BCA0 - .incbin "baserom.gba", 0x31bca0, 0x8 +gStatusConditionString_LoveJpn:: @ 81FA6CC + .string "メロメロ$$$$" + .align 2 gUnknown_0831BCA8:: @ 831BCA8 - .incbin "baserom.gba", 0x31bca8, 0x38 + .4byte gStatusConditionString_PoisonJpn, gText_Poison + .4byte gStatusConditionString_SleepJpn, gText_Sleep + .4byte gStatusConditionString_ParalysisJpn, gText_Paralysis + .4byte gStatusConditionString_BurnJpn, gText_Burn + .4byte gStatusConditionString_IceJpn, gText_Ice + .4byte gStatusConditionString_ConfusionJpn, gText_Confusion + .4byte gStatusConditionString_LoveJpn, gText_Love gUnknown_0831BCE0:: @ 831BCE0 - .incbin "baserom.gba", 0x31bce0, 0xf + .byte 0, 0, 0 + .byte 3, 5, 0 + .byte 2, 3, 0 + .byte 1, 2, 0 + .byte 1, 1, 0 gUnknown_0831BCEF:: @ 831BCEF - .incbin "baserom.gba", 0x31bcef, 0x4 + .byte 4, 3, 2, 1 gUnknown_0831BCF3:: @ 831BCF3 - .incbin "baserom.gba", 0x31bcf3, 0x5 + .byte 4, 4, 4, 4 + .align 2 gSoundMovesTable:: @ 831BCF8 - .incbin "baserom.gba", 0x31bcf8, 0x18 + .2byte 0x2D + .2byte 0x2E + .2byte 0x2F + .2byte 0x30 + .2byte 0x67 + .2byte 0xAD + .2byte 0xFD + .2byte 0x13F + .2byte 0x140 + .2byte 0x130 + .2byte 0xFFFF diff --git a/data/enemy_mon_elevation.inc b/data/enemy_mon_elevation.inc new file mode 100644 index 0000000000..2dadadd076 --- /dev/null +++ b/data/enemy_mon_elevation.inc @@ -0,0 +1,415 @@ +@ This determines how much higher above the usual position the enemy Pokémon +@ is during battle. Species that float or fly have nonzero values. +gEnemyMonElevation:: @ 8305DCC + .byte 0 @ 0 + .byte 0 @ SPECIES_BULBASAUR + .byte 0 @ SPECIES_IVYSAUR + .byte 0 @ SPECIES_VENUSAUR + .byte 0 @ SPECIES_CHARMANDER + .byte 0 @ SPECIES_CHARMELEON + .byte 0 @ SPECIES_CHARIZARD + .byte 0 @ SPECIES_SQUIRTLE + .byte 0 @ SPECIES_WARTORTLE + .byte 0 @ SPECIES_BLASTOISE + .byte 0 @ SPECIES_CATERPIE + .byte 0 @ SPECIES_METAPOD + .byte 8 @ SPECIES_BUTTERFREE + .byte 0 @ SPECIES_WEEDLE + .byte 0 @ SPECIES_KAKUNA + .byte 8 @ SPECIES_BEEDRILL + .byte 16 @ SPECIES_PIDGEY + .byte 0 @ SPECIES_PIDGEOTTO + .byte 4 @ SPECIES_PIDGEOT + .byte 0 @ SPECIES_RATTATA + .byte 0 @ SPECIES_RATICATE + .byte 0 @ SPECIES_SPEAROW + .byte 6 @ SPECIES_FEAROW + .byte 0 @ SPECIES_EKANS + .byte 0 @ SPECIES_ARBOK + .byte 0 @ SPECIES_PIKACHU + .byte 0 @ SPECIES_RAICHU + .byte 0 @ SPECIES_SANDSHREW + .byte 0 @ SPECIES_SANDSLASH + .byte 0 @ SPECIES_NIDORAN_F + .byte 0 @ SPECIES_NIDORINA + .byte 0 @ SPECIES_NIDOQUEEN + .byte 0 @ SPECIES_NIDORAN_M + .byte 0 @ SPECIES_NIDORINO + .byte 0 @ SPECIES_NIDOKING + .byte 0 @ SPECIES_CLEFAIRY + .byte 0 @ SPECIES_CLEFABLE + .byte 0 @ SPECIES_VULPIX + .byte 0 @ SPECIES_NINETALES + .byte 0 @ SPECIES_JIGGLYPUFF + .byte 0 @ SPECIES_WIGGLYTUFF + .byte 8 @ SPECIES_ZUBAT + .byte 8 @ SPECIES_GOLBAT + .byte 0 @ SPECIES_ODDISH + .byte 0 @ SPECIES_GLOOM + .byte 0 @ SPECIES_VILEPLUME + .byte 0 @ SPECIES_PARAS + .byte 0 @ SPECIES_PARASECT + .byte 0 @ SPECIES_VENONAT + .byte 8 @ SPECIES_VENOMOTH + .byte 0 @ SPECIES_DIGLETT + .byte 0 @ SPECIES_DUGTRIO + .byte 0 @ SPECIES_MEOWTH + .byte 0 @ SPECIES_PERSIAN + .byte 0 @ SPECIES_PSYDUCK + .byte 0 @ SPECIES_GOLDUCK + .byte 0 @ SPECIES_MANKEY + .byte 0 @ SPECIES_PRIMEAPE + .byte 0 @ SPECIES_GROWLITHE + .byte 0 @ SPECIES_ARCANINE + .byte 0 @ SPECIES_POLIWAG + .byte 0 @ SPECIES_POLIWHIRL + .byte 0 @ SPECIES_POLIWRATH + .byte 0 @ SPECIES_ABRA + .byte 0 @ SPECIES_KADABRA + .byte 0 @ SPECIES_ALAKAZAM + .byte 0 @ SPECIES_MACHOP + .byte 0 @ SPECIES_MACHOKE + .byte 0 @ SPECIES_MACHAMP + .byte 0 @ SPECIES_BELLSPROUT + .byte 0 @ SPECIES_WEEPINBELL + .byte 0 @ SPECIES_VICTREEBEL + .byte 0 @ SPECIES_TENTACOOL + .byte 0 @ SPECIES_TENTACRUEL + .byte 16 @ SPECIES_GEODUDE + .byte 0 @ SPECIES_GRAVELER + .byte 0 @ SPECIES_GOLEM + .byte 0 @ SPECIES_PONYTA + .byte 0 @ SPECIES_RAPIDASH + .byte 0 @ SPECIES_SLOWPOKE + .byte 0 @ SPECIES_SLOWBRO + .byte 16 @ SPECIES_MAGNEMITE + .byte 8 @ SPECIES_MAGNETON + .byte 0 @ SPECIES_FARFETCHD + .byte 0 @ SPECIES_DODUO + .byte 0 @ SPECIES_DODRIO + .byte 0 @ SPECIES_SEEL + .byte 0 @ SPECIES_DEWGONG + .byte 0 @ SPECIES_GRIMER + .byte 0 @ SPECIES_MUK + .byte 0 @ SPECIES_SHELLDER + .byte 0 @ SPECIES_CLOYSTER + .byte 4 @ SPECIES_GASTLY + .byte 4 @ SPECIES_HAUNTER + .byte 0 @ SPECIES_GENGAR + .byte 0 @ SPECIES_ONIX + .byte 0 @ SPECIES_DROWZEE + .byte 0 @ SPECIES_HYPNO + .byte 0 @ SPECIES_KRABBY + .byte 0 @ SPECIES_KINGLER + .byte 10 @ SPECIES_VOLTORB + .byte 12 @ SPECIES_ELECTRODE + .byte 0 @ SPECIES_EXEGGCUTE + .byte 0 @ SPECIES_EXEGGUTOR + .byte 0 @ SPECIES_CUBONE + .byte 0 @ SPECIES_MAROWAK + .byte 0 @ SPECIES_HITMONLEE + .byte 0 @ SPECIES_HITMONCHAN + .byte 0 @ SPECIES_LICKITUNG + .byte 8 @ SPECIES_KOFFING + .byte 6 @ SPECIES_WEEZING + .byte 0 @ SPECIES_RHYHORN + .byte 0 @ SPECIES_RHYDON + .byte 0 @ SPECIES_CHANSEY + .byte 0 @ SPECIES_TANGELA + .byte 0 @ SPECIES_KANGASKHAN + .byte 0 @ SPECIES_HORSEA + .byte 0 @ SPECIES_SEADRA + .byte 0 @ SPECIES_GOLDEEN + .byte 0 @ SPECIES_SEAKING + .byte 0 @ SPECIES_STARYU + .byte 0 @ SPECIES_STARMIE + .byte 0 @ SPECIES_MR_MIME + .byte 0 @ SPECIES_SCYTHER + .byte 0 @ SPECIES_JYNX + .byte 0 @ SPECIES_ELECTABUZZ + .byte 0 @ SPECIES_MAGMAR + .byte 0 @ SPECIES_PINSIR + .byte 0 @ SPECIES_TAUROS + .byte 0 @ SPECIES_MAGIKARP + .byte 0 @ SPECIES_GYARADOS + .byte 0 @ SPECIES_LAPRAS + .byte 0 @ SPECIES_DITTO + .byte 0 @ SPECIES_EEVEE + .byte 0 @ SPECIES_VAPOREON + .byte 0 @ SPECIES_JOLTEON + .byte 0 @ SPECIES_FLAREON + .byte 0 @ SPECIES_PORYGON + .byte 0 @ SPECIES_OMANYTE + .byte 0 @ SPECIES_OMASTAR + .byte 0 @ SPECIES_KABUTO + .byte 0 @ SPECIES_KABUTOPS + .byte 7 @ SPECIES_AERODACTYL + .byte 0 @ SPECIES_SNORLAX + .byte 6 @ SPECIES_ARTICUNO + .byte 8 @ SPECIES_ZAPDOS + .byte 5 @ SPECIES_MOLTRES + .byte 0 @ SPECIES_DRATINI + .byte 0 @ SPECIES_DRAGONAIR + .byte 6 @ SPECIES_DRAGONITE + .byte 0 @ SPECIES_MEWTWO + .byte 8 @ SPECIES_MEW + .byte 0 @ SPECIES_CHIKORITA + .byte 0 @ SPECIES_BAYLEEF + .byte 0 @ SPECIES_MEGANIUM + .byte 0 @ SPECIES_CYNDAQUIL + .byte 0 @ SPECIES_QUILAVA + .byte 0 @ SPECIES_TYPHLOSION + .byte 0 @ SPECIES_TOTODILE + .byte 0 @ SPECIES_CROCONAW + .byte 0 @ SPECIES_FERALIGATR + .byte 0 @ SPECIES_SENTRET + .byte 0 @ SPECIES_FURRET + .byte 0 @ SPECIES_HOOTHOOT + .byte 0 @ SPECIES_NOCTOWL + .byte 0 @ SPECIES_LEDYBA + .byte 8 @ SPECIES_LEDIAN + .byte 0 @ SPECIES_SPINARAK + .byte 0 @ SPECIES_ARIADOS + .byte 6 @ SPECIES_CROBAT + .byte 0 @ SPECIES_CHINCHOU + .byte 0 @ SPECIES_LANTURN + .byte 0 @ SPECIES_PICHU + .byte 0 @ SPECIES_CLEFFA + .byte 0 @ SPECIES_IGGLYBUFF + .byte 0 @ SPECIES_TOGEPI + .byte 0 @ SPECIES_TOGETIC + .byte 0 @ SPECIES_NATU + .byte 0 @ SPECIES_XATU + .byte 0 @ SPECIES_MAREEP + .byte 0 @ SPECIES_FLAAFFY + .byte 0 @ SPECIES_AMPHAROS + .byte 0 @ SPECIES_BELLOSSOM + .byte 0 @ SPECIES_MARILL + .byte 0 @ SPECIES_AZUMARILL + .byte 0 @ SPECIES_SUDOWOODO + .byte 0 @ SPECIES_POLITOED + .byte 11 @ SPECIES_HOPPIP + .byte 12 @ SPECIES_SKIPLOOM + .byte 9 @ SPECIES_JUMPLUFF + .byte 0 @ SPECIES_AIPOM + .byte 0 @ SPECIES_SUNKERN + .byte 0 @ SPECIES_SUNFLORA + .byte 8 @ SPECIES_YANMA + .byte 0 @ SPECIES_WOOPER + .byte 0 @ SPECIES_QUAGSIRE + .byte 0 @ SPECIES_ESPEON + .byte 0 @ SPECIES_UMBREON + .byte 0 @ SPECIES_MURKROW + .byte 0 @ SPECIES_SLOWKING + .byte 8 @ SPECIES_MISDREAVUS + .byte 8 @ SPECIES_UNOWN + .byte 0 @ SPECIES_WOBBUFFET + .byte 0 @ SPECIES_GIRAFARIG + .byte 0 @ SPECIES_PINECO + .byte 0 @ SPECIES_FORRETRESS + .byte 0 @ SPECIES_DUNSPARCE + .byte 6 @ SPECIES_GLIGAR + .byte 0 @ SPECIES_STEELIX + .byte 0 @ SPECIES_SNUBBULL + .byte 0 @ SPECIES_GRANBULL + .byte 0 @ SPECIES_QWILFISH + .byte 0 @ SPECIES_SCIZOR + .byte 0 @ SPECIES_SHUCKLE + .byte 0 @ SPECIES_HERACROSS + .byte 0 @ SPECIES_SNEASEL + .byte 0 @ SPECIES_TEDDIURSA + .byte 0 @ SPECIES_URSARING + .byte 0 @ SPECIES_SLUGMA + .byte 0 @ SPECIES_MAGCARGO + .byte 0 @ SPECIES_SWINUB + .byte 0 @ SPECIES_PILOSWINE + .byte 0 @ SPECIES_CORSOLA + .byte 0 @ SPECIES_REMORAID + .byte 0 @ SPECIES_OCTILLERY + .byte 0 @ SPECIES_DELIBIRD + .byte 0 @ SPECIES_MANTINE + .byte 0 @ SPECIES_SKARMORY + .byte 0 @ SPECIES_HOUNDOUR + .byte 0 @ SPECIES_HOUNDOOM + .byte 0 @ SPECIES_KINGDRA + .byte 0 @ SPECIES_PHANPY + .byte 0 @ SPECIES_DONPHAN + .byte 0 @ SPECIES_PORYGON2 + .byte 0 @ SPECIES_STANTLER + .byte 0 @ SPECIES_SMEARGLE + .byte 0 @ SPECIES_TYROGUE + .byte 0 @ SPECIES_HITMONTOP + .byte 0 @ SPECIES_SMOOCHUM + .byte 0 @ SPECIES_ELEKID + .byte 0 @ SPECIES_MAGBY + .byte 0 @ SPECIES_MILTANK + .byte 0 @ SPECIES_BLISSEY + .byte 0 @ SPECIES_RAIKOU + .byte 0 @ SPECIES_ENTEI + .byte 0 @ SPECIES_SUICUNE + .byte 0 @ SPECIES_LARVITAR + .byte 0 @ SPECIES_PUPITAR + .byte 0 @ SPECIES_TYRANITAR + .byte 6 @ SPECIES_LUGIA + .byte 6 @ SPECIES_HO_OH + .byte 15 @ SPECIES_CELEBI + .byte 0 @ 252 + .byte 0 @ 253 + .byte 0 @ 254 + .byte 0 @ 255 + .byte 0 @ 256 + .byte 0 @ 257 + .byte 0 @ 258 + .byte 0 @ 259 + .byte 0 @ 260 + .byte 0 @ 261 + .byte 0 @ 262 + .byte 0 @ 263 + .byte 0 @ 264 + .byte 0 @ 265 + .byte 0 @ 266 + .byte 0 @ 267 + .byte 0 @ 268 + .byte 0 @ 269 + .byte 0 @ 270 + .byte 0 @ 271 + .byte 0 @ 272 + .byte 0 @ 273 + .byte 0 @ 274 + .byte 0 @ 275 + .byte 0 @ 276 + .byte 0 @ SPECIES_TREECKO + .byte 0 @ SPECIES_GROVYLE + .byte 0 @ SPECIES_SCEPTILE + .byte 0 @ SPECIES_TORCHIC + .byte 0 @ SPECIES_COMBUSKEN + .byte 0 @ SPECIES_BLAZIKEN + .byte 0 @ SPECIES_MUDKIP + .byte 0 @ SPECIES_MARSHTOMP + .byte 0 @ SPECIES_SWAMPERT + .byte 0 @ SPECIES_POOCHYENA + .byte 0 @ SPECIES_MIGHTYENA + .byte 0 @ SPECIES_ZIGZAGOON + .byte 0 @ SPECIES_LINOONE + .byte 0 @ SPECIES_WURMPLE + .byte 0 @ SPECIES_SILCOON + .byte 8 @ SPECIES_BEAUTIFLY + .byte 0 @ SPECIES_CASCOON + .byte 10 @ SPECIES_DUSTOX + .byte 0 @ SPECIES_LOTAD + .byte 0 @ SPECIES_LOMBRE + .byte 0 @ SPECIES_LUDICOLO + .byte 0 @ SPECIES_SEEDOT + .byte 0 @ SPECIES_NUZLEAF + .byte 0 @ SPECIES_SHIFTRY + .byte 0 @ SPECIES_NINCADA + .byte 10 @ SPECIES_NINJASK + .byte 8 @ SPECIES_SHEDINJA + .byte 0 @ SPECIES_TAILLOW + .byte 0 @ SPECIES_SWELLOW + .byte 0 @ SPECIES_SHROOMISH + .byte 0 @ SPECIES_BRELOOM + .byte 0 @ SPECIES_SPINDA + .byte 16 @ SPECIES_WINGULL + .byte 8 @ SPECIES_PELIPPER + .byte 0 @ SPECIES_SURSKIT + .byte 10 @ SPECIES_MASQUERAIN + .byte 0 @ SPECIES_WAILMER + .byte 0 @ SPECIES_WAILORD + .byte 0 @ SPECIES_SKITTY + .byte 0 @ SPECIES_DELCATTY + .byte 0 @ SPECIES_KECLEON + .byte 4 @ SPECIES_BALTOY + .byte 10 @ SPECIES_CLAYDOL + .byte 0 @ SPECIES_NOSEPASS + .byte 0 @ SPECIES_TORKOAL + .byte 0 @ SPECIES_SABLEYE + .byte 0 @ SPECIES_BARBOACH + .byte 0 @ SPECIES_WHISCASH + .byte 0 @ SPECIES_LUVDISC + .byte 0 @ SPECIES_CORPHISH + .byte 0 @ SPECIES_CRAWDAUNT + .byte 0 @ SPECIES_FEEBAS + .byte 0 @ SPECIES_MILOTIC + .byte 0 @ SPECIES_CARVANHA + .byte 0 @ SPECIES_SHARPEDO + .byte 0 @ SPECIES_TRAPINCH + .byte 0 @ SPECIES_VIBRAVA + .byte 7 @ SPECIES_FLYGON + .byte 0 @ SPECIES_MAKUHITA + .byte 0 @ SPECIES_HARIYAMA + .byte 0 @ SPECIES_ELECTRIKE + .byte 0 @ SPECIES_MANECTRIC + .byte 0 @ SPECIES_NUMEL + .byte 0 @ SPECIES_CAMERUPT + .byte 0 @ SPECIES_SPHEAL + .byte 0 @ SPECIES_SEALEO + .byte 0 @ SPECIES_WALREIN + .byte 0 @ SPECIES_CACNEA + .byte 0 @ SPECIES_CACTURNE + .byte 0 @ SPECIES_SNORUNT + .byte 12 @ SPECIES_GLALIE + .byte 13 @ SPECIES_LUNATONE + .byte 4 @ SPECIES_SOLROCK + .byte 0 @ SPECIES_AZURILL + .byte 0 @ SPECIES_SPOINK + .byte 0 @ SPECIES_GRUMPIG + .byte 0 @ SPECIES_PLUSLE + .byte 0 @ SPECIES_MINUN + .byte 0 @ SPECIES_MAWILE + .byte 0 @ SPECIES_MEDITITE + .byte 0 @ SPECIES_MEDICHAM + .byte 12 @ SPECIES_SWABLU + .byte 8 @ SPECIES_ALTARIA + .byte 0 @ SPECIES_WYNAUT + .byte 9 @ SPECIES_DUSKULL + .byte 0 @ SPECIES_DUSCLOPS + .byte 0 @ SPECIES_ROSELIA + .byte 0 @ SPECIES_SLAKOTH + .byte 0 @ SPECIES_VIGOROTH + .byte 0 @ SPECIES_SLAKING + .byte 0 @ SPECIES_GULPIN + .byte 0 @ SPECIES_SWALOT + .byte 0 @ SPECIES_TROPIUS + .byte 0 @ SPECIES_WHISMUR + .byte 0 @ SPECIES_LOUDRED + .byte 0 @ SPECIES_EXPLOUD + .byte 0 @ SPECIES_CLAMPERL + .byte 0 @ SPECIES_HUNTAIL + .byte 0 @ SPECIES_GOREBYSS + .byte 0 @ SPECIES_ABSOL + .byte 12 @ SPECIES_SHUPPET + .byte 8 @ SPECIES_BANETTE + .byte 0 @ SPECIES_SEVIPER + .byte 0 @ SPECIES_ZANGOOSE + .byte 0 @ SPECIES_RELICANTH + .byte 0 @ SPECIES_ARON + .byte 0 @ SPECIES_LAIRON + .byte 0 @ SPECIES_AGGRON + .byte 16 @ SPECIES_CASTFORM + .byte 0 @ SPECIES_VOLBEAT + .byte 0 @ SPECIES_ILLUMISE + .byte 0 @ SPECIES_LILEEP + .byte 0 @ SPECIES_CRADILY + .byte 0 @ SPECIES_ANORITH + .byte 0 @ SPECIES_ARMALDO + .byte 0 @ SPECIES_RALTS + .byte 0 @ SPECIES_KIRLIA + .byte 0 @ SPECIES_GARDEVOIR + .byte 0 @ SPECIES_BAGON + .byte 0 @ SPECIES_SHELGON + .byte 0 @ SPECIES_SALAMENCE + .byte 8 @ SPECIES_BELDUM + .byte 0 @ SPECIES_METANG + .byte 0 @ SPECIES_METAGROSS + .byte 0 @ SPECIES_REGIROCK + .byte 0 @ SPECIES_REGICE + .byte 0 @ SPECIES_REGISTEEL + .byte 0 @ SPECIES_KYOGRE + .byte 0 @ SPECIES_GROUDON + .byte 6 @ SPECIES_RAYQUAZA + .byte 6 @ SPECIES_LATIAS + .byte 6 @ SPECIES_LATIOS + .byte 12 @ SPECIES_JIRACHI + .byte 8 @ SPECIES_DEOXYS + .byte 12 @ SPECIES_CHIMECHO diff --git a/data/fanfares.s b/data/fanfares.s index 26d2d82d1f..2a0c2576a7 100644 --- a/data/fanfares.s +++ b/data/fanfares.s @@ -5,4 +5,22 @@ .align 2, 0 sFanfares:: @ 85248BC - .incbin "baserom.gba", 0x5248bc, 0x48 +@ song number, duration + .2byte 0x016f, 0x0050 + .2byte 0x0172, 0x00a0 + .2byte 0x0173, 0x00dc + .2byte 0x0174, 0x00dc + .2byte 0x0170, 0x00a0 + .2byte 0x0171, 0x0154 + .2byte 0x017a, 0x00b4 + .2byte 0x0183, 0x0078 + .2byte 0x0184, 0x02c6 + .2byte 0x0185, 0x00fa + .2byte 0x0186, 0x0096 + .2byte 0x0187, 0x00a0 + .2byte 0x0226, 0x01c2 + .2byte 0x0212, 0x00aa + .2byte 0x0211, 0x00c4 + .2byte 0x01cb, 0x0139 + .2byte 0x01d2, 0x013e + .2byte 0x01cc, 0x0087 diff --git a/data/graphics.s b/data/graphics.s index e5c8ad49f0..c192db3ab2 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -230,19 +230,82 @@ gUnknown_08D77AE4:: @ 8D77AE4 .incbin "baserom.gba", 0xd77ae4, 0x28 gUnknown_08D77B0C:: @ 8D77B0C - .incbin "baserom.gba", 0xd77b0c, 0x25fc + .incbin "baserom.gba", 0xd77b0c, 0x25c + +gUnknown_08D77D68:: @ 8D77D68 + .incbin "baserom.gba", 0xd77d68, 0x5b0 + +gUnknown_08D78318:: @ 8D78318 + .incbin "baserom.gba", 0xd78318, 0x38 + +gUnknown_08D78350:: @ 8D78350 + .incbin "baserom.gba", 0xd78350, 0x2b0 + +gUnknown_08D78600:: @ 8D78600 + .incbin "baserom.gba", 0xd78600, 0x678 + +gUnknown_08D78C78:: @ 8D78C78 + .incbin "baserom.gba", 0xd78C78, 0x40 + +gUnknown_08D78CB8:: @ 8D78CB8 + .incbin "baserom.gba", 0xd78CB8, 0x2b0 + +gUnknown_08D78F68:: @ 8D78F68 + .incbin "baserom.gba", 0xd78f68, 0x5f8 + +gUnknown_08D79560:: @ 8D79560 + .incbin "baserom.gba", 0xd79560, 0x48 + +gUnknown_08D795A8:: @ 8D795A8 + .incbin "baserom.gba", 0xd795A8, 0x2b0 + +gUnknown_08D79858:: @ 8D79858 + .incbin "baserom.gba", 0xd79858, 0x5b8 + +gUnknown_08D79E10:: @ 8D79E10 + .incbin "baserom.gba", 0xd79E10, 0x48 + +gUnknown_08D79E58:: @ 8D79E58 + .incbin "baserom.gba", 0xd79e58, 0x2b0 gUnknown_08D7A108:: @ 8D7A108 - .incbin "baserom.gba", 0xd7a108, 0x618 + .incbin "baserom.gba", 0xd7a108, 0x5d4 + +gUnknown_08D7A6DC:: @ 8D7A6DC + .incbin "baserom.gba", 0xd7a6DC, 0x44 gUnknown_08D7A720:: @ 8D7A720 - .incbin "baserom.gba", 0xd7a720, 0x13f4 + .incbin "baserom.gba", 0xd7a720, 0x2b0 + +gUnknown_08D7A9D0:: @ 8D7A9D0 + .incbin "baserom.gba", 0xd7a9D0, 0x5a8 + +gUnknown_08D7AF78:: @ 8D7AF78 + .incbin "baserom.gba", 0xd7af78, 0x40 + +gUnknown_08D7AFB8:: @ 8D7AFB8 + .incbin "baserom.gba", 0xd7aFB8, 0x2b0 + +gUnknown_08D7B268:: @ 8D7B268 + .incbin "baserom.gba", 0xd7b268, 0x5c0 + +gUnknown_08D7B828:: @ 8D7B828 + .incbin "baserom.gba", 0xd7b828, 0x3c + +gUnknown_08D7B864:: @ 8D7B864 + .incbin "baserom.gba", 0xd7b864, 0x2b0 gUnknown_08D7BB14:: @ 8D7BB14 - .incbin "baserom.gba", 0xd7bb14, 0x640 + .incbin "baserom.gba", 0xd7bb14, 0x5f8 + +gUnknown_08D7C10C:: @ 8D7C10C + .incbin "baserom.gba", 0xd7c10c, 0x48 gUnknown_08D7C154:: @ 8D7C154 - .incbin "baserom.gba", 0xd7c154, 0x2ec + .incbin "baserom.gba", 0xd7c154, 0x2b0 + +gUnknown_08D7C404:: @ 8D7C404 + .incbin "baserom.gba", 0xd7c404, 0x3c gUnknown_08D7C440:: @ 8D7C440 .incbin "baserom.gba", 0xd7c440, 0x5ac @@ -263,7 +326,10 @@ gUnknown_08D7D590:: @ 8D7D590 .incbin "baserom.gba", 0xd7d590, 0x674 gUnknown_08D7DC04:: @ 8D7DC04 - .incbin "baserom.gba", 0xd7dc04, 0x2f0 + .incbin "baserom.gba", 0xd7dc04, 0x2b0 + +gUnknown_08D7DEB4:: @ 8D7DEB4 + .incbin "baserom.gba", 0xd7deb4, 0x40 gUnknown_08D7DEF4:: @ 8D7DEF4 .incbin "baserom.gba", 0xd7def4, 0x3c @@ -299,13 +365,49 @@ gUnknown_08D7E1F8:: @ 8D7E1F8 .incbin "baserom.gba", 0xd7e1f8, 0x3c gUnknown_08D7E234:: @ 8D7E234 - .incbin "baserom.gba", 0xd7e234, 0x17c4 + .incbin "baserom.gba", 0xd7e234, 0x4c + +gUnknown_08D7E280:: @ 8D7E280 + .incbin "baserom.gba", 0xd7e280, 0x588 + +gUnknown_08D7E808:: @ 8D7E808 + .incbin "baserom.gba", 0xd7e808, 0x1bc + +gUnknown_08D7E9C4:: @ 8D7E9C4 + .incbin "baserom.gba", 0xd7e9C4, 0x710 + +gUnknown_08D7F0D4:: @ 8D7F0D4 + .incbin "baserom.gba", 0xd7F0D4, 0x238 + +gUnknown_08D7F30C:: @ 8D7F30C + .incbin "baserom.gba", 0xd7F30c, 0x544 + +gUnknown_08D7F850:: @ 8D7F850 + .incbin "baserom.gba", 0xd7F850, 0x1a8 gUnknown_08D7F9F8:: @ 8D7F9F8 .incbin "baserom.gba", 0xd7f9f8, 0x4cc gUnknown_08D7FEC4:: @ 8D7FEC4 - .incbin "baserom.gba", 0xd7fec4, 0x174c + .incbin "baserom.gba", 0xd7fec4, 0x190 + +gUnknown_08D80054:: @ 8D80054 + .incbin "baserom.gba", 0xd80054, 0x60c + +gUnknown_08D80660:: @ 8D80660 + .incbin "baserom.gba", 0xd80660, 0x1a4 + +gUnknown_08D80804:: @ 8D80804 + .incbin "baserom.gba", 0xd80804, 0x54c + +gUnknown_08D80D50:: @ 8D80D50 + .incbin "baserom.gba", 0xd80d50, 0x14C + +gUnknown_08D80E9C:: @ 8D80E9C + .incbin "baserom.gba", 0xd80e9c, 0x5e0 + +gUnknown_08D8147C:: @ 8D8147C + .incbin "baserom.gba", 0xd8147C, 0x194 gUnknown_08D81610:: @ 8D81610 .incbin "baserom.gba", 0xd81610, 0x81c diff --git a/data/graphics/trainers/back_pic_coords.inc b/data/graphics/trainers/back_pic_coords.inc new file mode 100644 index 0000000000..57a45c71e8 --- /dev/null +++ b/data/graphics/trainers/back_pic_coords.inc @@ -0,0 +1,10 @@ + .align 2 +gTrainerBackPicCoords:: @ 8305D2C + .byte 0x08, 0x04, 0x00, 0x00 + .byte 0x08, 0x04, 0x00, 0x00 + .byte 0x08, 0x05, 0x00, 0x00 + .byte 0x08, 0x05, 0x00, 0x00 + .byte 0x08, 0x04, 0x00, 0x00 + .byte 0x08, 0x04, 0x00, 0x00 + .byte 0x08, 0x04, 0x00, 0x00 + .byte 0x08, 0x04, 0x00, 0x00 diff --git a/data/graphics/trainers/front_pic_coords.inc b/data/graphics/trainers/front_pic_coords.inc new file mode 100644 index 0000000000..8d20f0a9ee --- /dev/null +++ b/data/graphics/trainers/front_pic_coords.inc @@ -0,0 +1,95 @@ + .align 2 +gTrainerFrontPicCoords:: @ 83054E0 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x02, 0x00, 0x00 + .byte 0x08, 0x02, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x02, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x02, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x02, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x02, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 + .byte 0x08, 0x01, 0x00, 0x00 diff --git a/data/main_menu.s b/data/main_menu.s new file mode 100644 index 0000000000..fba0e7ddb0 --- /dev/null +++ b/data/main_menu.s @@ -0,0 +1,141 @@ +@ the second big chunk of data + + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_082FECFC:: @ 82FECFC + .incbin "graphics/birch_speech/bg0.gbapal" + .incbin "graphics/birch_speech/bg1.gbapal" + + .align 2 +gBirchIntroShadowGfx:: @ 82FED3C + .incbin "graphics/birch_speech/shadow.4bpp.lz" + + .align 2 +gUnknown_082FEEF0:: @ 82FEEF0 + .incbin "graphics/birch_speech/map.bin.lz" + + .align 2 +gUnknown_082FF018:: @ 82FF018 + .incbin "graphics/birch_speech/bg2.gbapal" + + .align 2 +gUnknown_082FF028:: @ 82FF028 + .space 16 + + .align 2 +gUnknown_082FF038:: @ 82FF038 + window_template 0x00, 0x02, 0x01, 0x1a, 0x02, 0x0f, 0x0001 + window_template 0x00, 0x02, 0x05, 0x1a, 0x02, 0x0f, 0x0035 + + .align 2 +gUnknown_082FF048:: @ 82FF048 + window_template 0x00, 0x02, 0x01, 0x1a, 0x06, 0x0f, 0x0001 + window_template 0x00, 0x02, 0x09, 0x1a, 0x02, 0x0f, 0x009d + window_template 0x00, 0x02, 0x0d, 0x1a, 0x02, 0x0f, 0x00d1 + window_template 0x00, 0x02, 0x11, 0x1a, 0x02, 0x0f, 0x0105 + window_template 0x00, 0x02, 0x15, 0x1a, 0x02, 0x0f, 0x0139 + + .align 2 +gUnknown_082FF070:: @ 82FF070 + window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x016d + window_template_terminator + + .align 2 +gUnknown_082FF080:: @ 82FF080 + window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x0001 + + .align 2 +gUnknown_082FF088:: @ 82FF088 + window_template 0x00, 0x03, 0x05, 0x06, 0x04, 0x0f, 0x006d + window_template 0x00, 0x03, 0x02, 0x09, 0x0a, 0x0f, 0x0085 + window_template_terminator + + .align 2 +gMainMenuBgPal:: @ 82FF0A0 + .incbin "graphics/misc/main_menu_bg.gbapal" + + .align 2 +gMainMenuTextPal:: @ 82FF0C0 + .incbin "graphics/misc/main_menu_text.gbapal" + + .align 2 +gUnknown_082FF0E0:: @ 82FF0E0 + .byte 0x0a, 0x0b, 0x0c + +gUnknown_082FF0E3:: @ 82FF0E3 + .byte 0x0a, 0x01, 0x0c + + .align 2 +gUnknown_082FF0E8:: @ 82FF0E8 + .4byte 0x000001e8, 0x00003071 + + .align 2 +gUnknown_082FF0F0:: @ 82FF0F0 + .4byte 0x000001ec + + .align 2 +gUnknown_082FF0F4:: @ 82FF0F4 + .byte 0x02, 0x78, 0x08, 0x03, 0x78, 0x98, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_082FF104:: @ 82FF104 + .2byte 0xfffe, 0xfffe, 0x3000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 + + .align 2 +gUnknown_082FF114:: @ 82FF114 + .4byte gUnknown_082FF104 + + .align 2 +gUnknown_082FF118:: @ 82FF118 + .4byte gText_BirchBoy, 0x00000000 + .4byte gText_BirchGirl, 0x00000000 + + .align 2 +gMalePresetNames:: @ 82FF128 + .4byte gText_DefaultNameStu + .4byte gText_DefaultNameMilton + .4byte gText_DefaultNameTom + .4byte gText_DefaultNameKenny + .4byte gText_DefaultNameReid + .4byte gText_DefaultNameJude + .4byte gText_DefaultNameJaxson + .4byte gText_DefaultNameEaston + .4byte gText_DefaultNameWalker + .4byte gText_DefaultNameTeru + .4byte gText_DefaultNameJohnny + .4byte gText_DefaultNameBrett + .4byte gText_DefaultNameSeth + .4byte gText_DefaultNameTerry + .4byte gText_DefaultNameCasey + .4byte gText_DefaultNameDarren + .4byte gText_DefaultNameLandon + .4byte gText_DefaultNameCollin + .4byte gText_DefaultNameStanley + .4byte gText_DefaultNameQuincy + + .align 2 +gFemalePresetNames:: @ 82FF178 + .4byte gText_DefaultNameKimmy + .4byte gText_DefaultNameTiara + .4byte gText_DefaultNameBella + .4byte gText_DefaultNameJayla + .4byte gText_DefaultNameAllie + .4byte gText_DefaultNameLianna + .4byte gText_DefaultNameSara + .4byte gText_DefaultNameMonica + .4byte gText_DefaultNameCamila + .4byte gText_DefaultNameAubree + .4byte gText_DefaultNameRuthie + .4byte gText_DefaultNameHazel + .4byte gText_DefaultNameNadine + .4byte gText_DefaultNameTanja + .4byte gText_DefaultNameYasmin + .4byte gText_DefaultNameNicola + .4byte gText_DefaultNameLillie + .4byte gText_DefaultNameTerra + .4byte gText_DefaultNameLucy + .4byte gText_DefaultNameHalie diff --git a/data/reset_rtc_screen.s b/data/reset_rtc_screen.s index f08f30e90c..f680a87bc8 100644 --- a/data/reset_rtc_screen.s +++ b/data/reset_rtc_screen.s @@ -11,7 +11,7 @@ gUnknown_08510404:: @ 8510404 struct BgTemplate gUnknown_08510408:: @ 8510408 window_template 0x00, 0x01, 0x01, 0x13, 0x09, 0x0f, 0x0155 window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x00e9 - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 + window_template_terminator .align 2 gUnknown_08510420:: @ 8510420 diff --git a/data/strings.s b/data/strings.s index 78e936b133..90ccad90fd 100644 --- a/data/strings.s +++ b/data/strings.s @@ -165,130 +165,130 @@ gText_PickCancel:: @ 85E8574 gText_UnkCtrlF800Exit:: @ 85E8588 .string "{UNK_CTRL_F800}EXIT$" -gUnknown_085E858F:: @ 85E858F +gText_BirchBoy:: @ 85E858F .string "BOY$" -gUnknown_085E8593:: @ 85E8593 +gText_BirchGirl:: @ 85E8593 .string "GIRL$" -gUnknown_085E8598:: @ 85E8598 +gText_DefaultNameStu:: @ 85E8598 .string "STU$" -gUnknown_085E859C:: @ 85E859C +gText_DefaultNameMilton:: @ 85E859C .string "MILTON$" -gUnknown_085E85A3:: @ 85E85A3 +gText_DefaultNameTom:: @ 85E85A3 .string "TOM$" -gUnknown_085E85A7:: @ 85E85A7 +gText_DefaultNameKenny:: @ 85E85A7 .string "KENNY$" -gUnknown_085E85AD:: @ 85E85AD +gText_DefaultNameReid:: @ 85E85AD .string "REID$" -gUnknown_085E85B2:: @ 85E85B2 +gText_DefaultNameJude:: @ 85E85B2 .string "JUDE$" -gUnknown_085E85B7:: @ 85E85B7 +gText_DefaultNameJaxson:: @ 85E85B7 .string "JAXSON$" -gUnknown_085E85BE:: @ 85E85BE +gText_DefaultNameEaston:: @ 85E85BE .string "EASTON$" -gUnknown_085E85C5:: @ 85E85C5 +gText_DefaultNameWalker:: @ 85E85C5 .string "WALKER$" -gUnknown_085E85CC:: @ 85E85CC +gText_DefaultNameTeru:: @ 85E85CC .string "TERU$" -gUnknown_085E85D1:: @ 85E85D1 +gText_DefaultNameJohnny:: @ 85E85D1 .string "JOHNNY$" -gUnknown_085E85D8:: @ 85E85D8 +gText_DefaultNameBrett:: @ 85E85D8 .string "BRETT$" -gUnknown_085E85DE:: @ 85E85DE +gText_DefaultNameSeth:: @ 85E85DE .string "SETH$" -gUnknown_085E85E3:: @ 85E85E3 +gText_DefaultNameTerry:: @ 85E85E3 .string "TERRY$" -gUnknown_085E85E9:: @ 85E85E9 +gText_DefaultNameCasey:: @ 85E85E9 .string "CASEY$" -gUnknown_085E85EF:: @ 85E85EF +gText_DefaultNameDarren:: @ 85E85EF .string "DARREN$" -gUnknown_085E85F6:: @ 85E85F6 +gText_DefaultNameLandon:: @ 85E85F6 .string "LANDON$" -gUnknown_085E85FD:: @ 85E85FD +gText_DefaultNameCollin:: @ 85E85FD .string "COLLIN$" -gUnknown_085E8604:: @ 85E8604 +gText_DefaultNameStanley:: @ 85E8604 .string "STANLEY$" -gUnknown_085E860C:: @ 85E860C +gText_DefaultNameQuincy:: @ 85E860C .string "QUINCY$" -gUnknown_085E8613:: @ 85E8613 +gText_DefaultNameKimmy:: @ 85E8613 .string "KIMMY$" -gUnknown_085E8619:: @ 85E8619 +gText_DefaultNameTiara:: @ 85E8619 .string "TIARA$" -gUnknown_085E861F:: @ 85E861F +gText_DefaultNameBella:: @ 85E861F .string "BELLA$" -gUnknown_085E8625:: @ 85E8625 +gText_DefaultNameJayla:: @ 85E8625 .string "JAYLA$" -gUnknown_085E862B:: @ 85E862B +gText_DefaultNameAllie:: @ 85E862B .string "ALLIE$" -gUnknown_085E8631:: @ 85E8631 +gText_DefaultNameLianna:: @ 85E8631 .string "LIANNA$" -gUnknown_085E8638:: @ 85E8638 +gText_DefaultNameSara:: @ 85E8638 .string "SARA$" -gUnknown_085E863D:: @ 85E863D +gText_DefaultNameMonica:: @ 85E863D .string "MONICA$" -gUnknown_085E8644:: @ 85E8644 +gText_DefaultNameCamila:: @ 85E8644 .string "CAMILA$" -gUnknown_085E864B:: @ 85E864B +gText_DefaultNameAubree:: @ 85E864B .string "AUBREE$" -gUnknown_085E8652:: @ 85E8652 +gText_DefaultNameRuthie:: @ 85E8652 .string "RUTHIE$" -gUnknown_085E8659:: @ 85E8659 +gText_DefaultNameHazel:: @ 85E8659 .string "HAZEL$" -gUnknown_085E865F:: @ 85E865F +gText_DefaultNameNadine:: @ 85E865F .string "NADINE$" -gUnknown_085E8666:: @ 85E8666 +gText_DefaultNameTanja:: @ 85E8666 .string "TANJA$" -gUnknown_085E866C:: @ 85E866C +gText_DefaultNameYasmin:: @ 85E866C .string "YASMIN$" -gUnknown_085E8673:: @ 85E8673 +gText_DefaultNameNicola:: @ 85E8673 .string "NICOLA$" -gUnknown_085E867A:: @ 85E867A +gText_DefaultNameLillie:: @ 85E867A .string "LILLIE$" -gUnknown_085E8681:: @ 85E8681 +gText_DefaultNameTerra:: @ 85E8681 .string "TERRA$" -gUnknown_085E8687:: @ 85E8687 +gText_DefaultNameLucy:: @ 85E8687 .string "LUCY$" -gUnknown_085E868C:: @ 85E868C +gText_DefaultNameHalie:: @ 85E868C .string "HALIE$" gText_ThisIsAPokemon:: @ 85E8692 diff --git a/data/title_screen.s b/data/title_screen.s index 525790271e..b07464ce97 100644 --- a/data/title_screen.s +++ b/data/title_screen.s @@ -1,9 +1,12 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "constants/constants.inc" - .section .rodata - .align 2, 0 + .section .rodata + .align 2, 0 + .incbin "graphics/title_screen/unk_853EF78.gbapal" + + .align 2 gTitleScreenRayquazaGfx:: @ 853F058 .incbin "graphics/title_screen/rayquaza.4bpp.lz" diff --git a/data/trainer_money.inc b/data/trainer_money.inc new file mode 100644 index 0000000000..1e06668bde --- /dev/null +++ b/data/trainer_money.inc @@ -0,0 +1,59 @@ +@ This is a factor in how much money you get for beating a trainer. + .align 2 +gTrainerMoneyTable:: @ 831AEB8 + .byte TRAINER_CLASS_NAME_TEAM_AQUA, 5, 0, 0 + .byte TRAINER_CLASS_NAME_AQUA_ADMIN, 10, 0, 0 + .byte TRAINER_CLASS_NAME_AQUA_LEADER, 20, 0, 0 + .byte TRAINER_CLASS_NAME_AROMA_LADY, 10, 0, 0 + .byte TRAINER_CLASS_NAME_RUIN_MANIAC, 15, 0, 0 + .byte TRAINER_CLASS_NAME_INTERVIEWER, 12, 0, 0 + .byte TRAINER_CLASS_NAME_TUBER_1, 1, 0, 0 + .byte TRAINER_CLASS_NAME_TUBER_2, 1, 0, 0 + .byte TRAINER_CLASS_NAME_SIS_AND_BRO, 3, 0, 0 + .byte TRAINER_CLASS_NAME_COOLTRAINER_1, 12, 0, 0 + .byte TRAINER_CLASS_NAME_HEX_MANIAC, 6, 0, 0 + .byte TRAINER_CLASS_NAME_LADY, 50, 0, 0 + .byte TRAINER_CLASS_NAME_BEAUTY, 20, 0, 0 + .byte TRAINER_CLASS_NAME_RICH_BOY, 50, 0, 0 + .byte TRAINER_CLASS_NAME_POKEMANIAC, 15, 0, 0 + .byte TRAINER_CLASS_NAME_SWIMMER_M, 2, 0, 0 + .byte TRAINER_CLASS_NAME_BLACK_BELT, 8, 0, 0 + .byte TRAINER_CLASS_NAME_GUITARIST, 8, 0, 0 + .byte TRAINER_CLASS_NAME_KINDLER, 8, 0, 0 + .byte TRAINER_CLASS_NAME_CAMPER, 4, 0, 0 + .byte TRAINER_CLASS_NAME_OLD_COUPLE, 10, 0, 0 + .byte TRAINER_CLASS_NAME_BUG_MANIAC, 15, 0, 0 + .byte TRAINER_CLASS_NAME_PSYCHIC, 6, 0, 0 + .byte TRAINER_CLASS_NAME_GENTLEMAN, 20, 0, 0 + .byte TRAINER_CLASS_NAME_ELITE_FOUR, 25, 0, 0 + .byte TRAINER_CLASS_NAME_LEADER, 25, 0, 0 + .byte TRAINER_CLASS_NAME_SCHOOL_KID, 5, 0, 0 + .byte TRAINER_CLASS_NAME_SR_AND_JR, 4, 0, 0 + .byte TRAINER_CLASS_NAME_POKEFAN, 20, 0, 0 + .byte TRAINER_CLASS_NAME_EXPERT, 10, 0, 0 + .byte TRAINER_CLASS_NAME_YOUNGSTER, 4, 0, 0 + .byte TRAINER_CLASS_NAME_CHAMPION, 50, 0, 0 + .byte TRAINER_CLASS_NAME_FISHERMAN, 10, 0, 0 + .byte TRAINER_CLASS_NAME_TRIATHLETE, 10, 0, 0 + .byte TRAINER_CLASS_NAME_DRAGON_TAMER, 12, 0, 0 + .byte TRAINER_CLASS_NAME_BIRD_KEEPER, 8, 0, 0 + .byte TRAINER_CLASS_NAME_NINJA_BOY, 3, 0, 0 + .byte TRAINER_CLASS_NAME_BATTLE_GIRL, 6, 0, 0 + .byte TRAINER_CLASS_NAME_PARASOL_LADY, 10, 0, 0 + .byte TRAINER_CLASS_NAME_SWIMMER_F, 2, 0, 0 + .byte TRAINER_CLASS_NAME_PICNICKER, 4, 0, 0 + .byte TRAINER_CLASS_NAME_TWINS, 3, 0, 0 + .byte TRAINER_CLASS_NAME_SAILOR, 8, 0, 0 + .byte TRAINER_CLASS_NAME_COLLECTOR, 15, 0, 0 + .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3, 15, 0, 0 + .byte TRAINER_CLASS_NAME_PKMN_BREEDER, 10, 0, 0 + .byte TRAINER_CLASS_NAME_PKMN_RANGER, 12, 0, 0 + .byte TRAINER_CLASS_NAME_TEAM_MAGMA, 5, 0, 0 + .byte TRAINER_CLASS_NAME_MAGMA_ADMIN, 10, 0, 0 + .byte TRAINER_CLASS_NAME_MAGMA_LEADER, 20, 0, 0 + .byte TRAINER_CLASS_NAME_LASS, 4, 0, 0 + .byte TRAINER_CLASS_NAME_BUG_CATCHER, 4, 0, 0 + .byte TRAINER_CLASS_NAME_HIKER, 10, 0, 0 + .byte TRAINER_CLASS_NAME_YOUNG_COUPLE, 8, 0, 0 + .byte TRAINER_CLASS_LEADER_1, 10, 0, 0 + .byte -1, 5, 0, 0 diff --git a/data/trainer_see.s b/data/trainer_see.s index 79c1a9f980..bff3004a78 100644 --- a/data/trainer_see.s +++ b/data/trainer_see.s @@ -52,12 +52,12 @@ gOamData_855077C:: @ 855077C .align 2 gSpriteImageTable_8550784:: @ 8550784 - obj_tiles gEmotion_ExclamationMarkGfx, 0x0080, 0x0000 - obj_tiles gEmotion_QuestionMarkGfx, 0x0080, 0x0000 + obj_frame_tiles gEmotion_ExclamationMarkGfx, 0x0080 + obj_frame_tiles gEmotion_QuestionMarkGfx, 0x0080 .align 2 gSpriteImageTable_8550794:: @ 8550794 - obj_tiles gEmotion_HeartGfx, 0x0080, 0x0000 + obj_frame_tiles gEmotion_HeartGfx, 0x0080 .align 2 gSpriteAnim_855079C:: @ 855079C diff --git a/data/type_effectiveness.inc b/data/type_effectiveness.inc new file mode 100644 index 0000000000..a246155921 --- /dev/null +++ b/data/type_effectiveness.inc @@ -0,0 +1,119 @@ +@ format: attacking type, defending type, damage multiplier +@ the multiplier is a (decimal) fixed-point number: +@ 20 is ×2.0 +@ 05 is ×0.5 +@ 00 is ×0 + +gTypeEffectiveness:: @ 831ACE8 + .byte TYPE_NORMAL, TYPE_ROCK, 5 + .byte TYPE_NORMAL, TYPE_STEEL, 5 + .byte TYPE_FIRE, TYPE_FIRE, 5 + .byte TYPE_FIRE, TYPE_WATER, 5 + .byte TYPE_FIRE, TYPE_GRASS, 20 + .byte TYPE_FIRE, TYPE_ICE, 20 + .byte TYPE_FIRE, TYPE_BUG, 20 + .byte TYPE_FIRE, TYPE_ROCK, 5 + .byte TYPE_FIRE, TYPE_DRAGON, 5 + .byte TYPE_FIRE, TYPE_STEEL, 20 + .byte TYPE_WATER, TYPE_FIRE, 20 + .byte TYPE_WATER, TYPE_WATER, 5 + .byte TYPE_WATER, TYPE_GRASS, 5 + .byte TYPE_WATER, TYPE_GROUND, 20 + .byte TYPE_WATER, TYPE_ROCK, 20 + .byte TYPE_WATER, TYPE_DRAGON, 5 + .byte TYPE_ELECTRIC, TYPE_WATER, 20 + .byte TYPE_ELECTRIC, TYPE_ELECTRIC, 5 + .byte TYPE_ELECTRIC, TYPE_GRASS, 5 + .byte TYPE_ELECTRIC, TYPE_GROUND, 0 + .byte TYPE_ELECTRIC, TYPE_FLYING, 20 + .byte TYPE_ELECTRIC, TYPE_DRAGON, 5 + .byte TYPE_GRASS, TYPE_FIRE, 5 + .byte TYPE_GRASS, TYPE_WATER, 20 + .byte TYPE_GRASS, TYPE_GRASS, 5 + .byte TYPE_GRASS, TYPE_POISON, 5 + .byte TYPE_GRASS, TYPE_GROUND, 20 + .byte TYPE_GRASS, TYPE_FLYING, 5 + .byte TYPE_GRASS, TYPE_BUG, 5 + .byte TYPE_GRASS, TYPE_ROCK, 20 + .byte TYPE_GRASS, TYPE_DRAGON, 5 + .byte TYPE_GRASS, TYPE_STEEL, 5 + .byte TYPE_ICE, TYPE_WATER, 5 + .byte TYPE_ICE, TYPE_GRASS, 20 + .byte TYPE_ICE, TYPE_ICE, 5 + .byte TYPE_ICE, TYPE_GROUND, 20 + .byte TYPE_ICE, TYPE_FLYING, 20 + .byte TYPE_ICE, TYPE_DRAGON, 20 + .byte TYPE_ICE, TYPE_STEEL, 5 + .byte TYPE_ICE, TYPE_FIRE, 5 + .byte TYPE_FIGHTING, TYPE_NORMAL, 20 + .byte TYPE_FIGHTING, TYPE_ICE, 20 + .byte TYPE_FIGHTING, TYPE_POISON, 5 + .byte TYPE_FIGHTING, TYPE_FLYING, 5 + .byte TYPE_FIGHTING, TYPE_PSYCHIC, 5 + .byte TYPE_FIGHTING, TYPE_BUG, 5 + .byte TYPE_FIGHTING, TYPE_ROCK, 20 + .byte TYPE_FIGHTING, TYPE_DARK, 20 + .byte TYPE_FIGHTING, TYPE_STEEL, 20 + .byte TYPE_POISON, TYPE_GRASS, 20 + .byte TYPE_POISON, TYPE_POISON, 5 + .byte TYPE_POISON, TYPE_GROUND, 5 + .byte TYPE_POISON, TYPE_ROCK, 5 + .byte TYPE_POISON, TYPE_GHOST, 5 + .byte TYPE_POISON, TYPE_STEEL, 0 + .byte TYPE_GROUND, TYPE_FIRE, 20 + .byte TYPE_GROUND, TYPE_ELECTRIC, 20 + .byte TYPE_GROUND, TYPE_GRASS, 5 + .byte TYPE_GROUND, TYPE_POISON, 20 + .byte TYPE_GROUND, TYPE_FLYING, 0 + .byte TYPE_GROUND, TYPE_BUG, 5 + .byte TYPE_GROUND, TYPE_ROCK, 20 + .byte TYPE_GROUND, TYPE_STEEL, 20 + .byte TYPE_FLYING, TYPE_ELECTRIC, 5 + .byte TYPE_FLYING, TYPE_GRASS, 20 + .byte TYPE_FLYING, TYPE_FIGHTING, 20 + .byte TYPE_FLYING, TYPE_BUG, 20 + .byte TYPE_FLYING, TYPE_ROCK, 5 + .byte TYPE_FLYING, TYPE_STEEL, 5 + .byte TYPE_PSYCHIC, TYPE_FIGHTING, 20 + .byte TYPE_PSYCHIC, TYPE_POISON, 20 + .byte TYPE_PSYCHIC, TYPE_PSYCHIC, 5 + .byte TYPE_PSYCHIC, TYPE_DARK, 0 + .byte TYPE_PSYCHIC, TYPE_STEEL, 5 + .byte TYPE_BUG, TYPE_FIRE, 5 + .byte TYPE_BUG, TYPE_GRASS, 20 + .byte TYPE_BUG, TYPE_FIGHTING, 5 + .byte TYPE_BUG, TYPE_POISON, 5 + .byte TYPE_BUG, TYPE_FLYING, 5 + .byte TYPE_BUG, TYPE_PSYCHIC, 20 + .byte TYPE_BUG, TYPE_GHOST, 5 + .byte TYPE_BUG, TYPE_DARK, 20 + .byte TYPE_BUG, TYPE_STEEL, 5 + .byte TYPE_ROCK, TYPE_FIRE, 20 + .byte TYPE_ROCK, TYPE_ICE, 20 + .byte TYPE_ROCK, TYPE_FIGHTING, 5 + .byte TYPE_ROCK, TYPE_GROUND, 5 + .byte TYPE_ROCK, TYPE_FLYING, 20 + .byte TYPE_ROCK, TYPE_BUG, 20 + .byte TYPE_ROCK, TYPE_STEEL, 5 + .byte TYPE_GHOST, TYPE_NORMAL, 0 + .byte TYPE_GHOST, TYPE_PSYCHIC, 20 + .byte TYPE_GHOST, TYPE_DARK, 5 + .byte TYPE_GHOST, TYPE_STEEL, 5 + .byte TYPE_GHOST, TYPE_GHOST, 20 + .byte TYPE_DRAGON, TYPE_DRAGON, 20 + .byte TYPE_DRAGON, TYPE_STEEL, 5 + .byte TYPE_DARK, TYPE_FIGHTING, 5 + .byte TYPE_DARK, TYPE_PSYCHIC, 20 + .byte TYPE_DARK, TYPE_GHOST, 20 + .byte TYPE_DARK, TYPE_DARK, 5 + .byte TYPE_DARK, TYPE_STEEL, 5 + .byte TYPE_STEEL, TYPE_FIRE, 5 + .byte TYPE_STEEL, TYPE_WATER, 5 + .byte TYPE_STEEL, TYPE_ELECTRIC, 5 + .byte TYPE_STEEL, TYPE_ICE, 20 + .byte TYPE_STEEL, TYPE_ROCK, 20 + .byte TYPE_STEEL, TYPE_STEEL, 5 + .byte 0xFE, 0xFE, 0 + .byte TYPE_NORMAL, TYPE_GHOST, 0 + .byte TYPE_FIGHTING, TYPE_GHOST, 0 + .byte 0xFF, 0xFF, 0 diff --git a/graphics/birch_speech/bg0.pal b/graphics/birch_speech/bg0.pal new file mode 100644 index 0000000000..31b66d4b32 --- /dev/null +++ b/graphics/birch_speech/bg0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 164 +255 255 106 +222 222 90 +189 189 74 +156 156 57 +123 123 49 +90 90 32 +57 57 16 +197 255 205 +123 255 131 +115 222 106 +106 189 90 +98 156 65 +90 123 49 +0 0 0 diff --git a/graphics/birch_speech/bg1.pal b/graphics/birch_speech/bg1.pal new file mode 100644 index 0000000000..31b66d4b32 --- /dev/null +++ b/graphics/birch_speech/bg1.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 164 +255 255 106 +222 222 90 +189 189 74 +156 156 57 +123 123 49 +90 90 32 +57 57 16 +197 255 205 +123 255 131 +115 222 106 +106 189 90 +98 156 65 +90 123 49 +0 0 0 diff --git a/graphics/birch_speech/bg2.pal b/graphics/birch_speech/bg2.pal new file mode 100644 index 0000000000..3457f9b455 --- /dev/null +++ b/graphics/birch_speech/bg2.pal @@ -0,0 +1,11 @@ +JASC-PAL +0100 +8 +255 255 164 +255 255 106 +222 222 90 +189 189 74 +156 156 57 +123 123 49 +90 90 32 +57 57 16 diff --git a/graphics/birch_speech/map.bin b/graphics/birch_speech/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..ad5540b7cdd4e5ed57c1523ec35dce495bff7b99 GIT binary patch literal 1280 zcmeH^Hxj}?5CmH=* z;S&%N5fdv?s6f6vxu2nIml|3+dY%l7OiUUz=&4?vS~XTbAtfWHproRvR;5yfa%D=D fSpAuWm5rT)7bmA)I<#xksztNaxBd6ef31NxC8HW) literal 0 HcmV?d00001 diff --git a/graphics/birch_speech/shadow.png b/graphics/birch_speech/shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..4487ea9ea3ca3f0a6ba2b260e6d95fbfc1c71a73 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fx!VDx2sJ^%cq!I#rLR^9L|Nl$=|IfO2FKX{z zuQ_uptE&y8q7*DG1&;ndTm8Se_+D1l-l(KGj#1TyK*gl0k6P$*hJk^R$J50z#G?1< zWbe|$1_G|G3k9;+N+pjZO_1a;V~*x1aue}V6!BUp;-r}Uc8dDxPEqq&#gkI2w}0CG zsV0Tz2h;rrEHWJjY!1r{$Q+9z(|YmQ|%g%v1dQS_l7%bX7m09MFoSWtDnm{r-UW|5}LC* literal 0 HcmV?d00001 diff --git a/graphics/link/minigame_digits.pal b/graphics/link/minigame_digits.pal new file mode 100644 index 0000000000..e276408301 --- /dev/null +++ b/graphics/link/minigame_digits.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +205 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/link/minigame_digits.png b/graphics/link/minigame_digits.png new file mode 100644 index 0000000000000000000000000000000000000000..1729942494a03060652b6d4d163229623194d665 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^96%hw!VDy>*01&lQU(D&A+A6g2+p283t_nt~< z1S*>B>Eak7F|{j4*U?0=1i2Qz7@K)ETX#;dU11f|bb57Im1VIvztGkj-dbCy zR2ka5-+5-=N8j^)a#fej{yupt`M7!0DpQld-wz`4|Kv4>@0HIFxEcRz;qv?WckKQ( Y@E@=i6Ki9hv=8J5Pgg&ebxsLQ0LZviyZ`_I literal 0 HcmV?d00001 diff --git a/graphics/link/minigame_digits2.png b/graphics/link/minigame_digits2.png new file mode 100644 index 0000000000000000000000000000000000000000..285aa4aedc2bc26d0b1d942147cc5903d8d02c13 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^96-E*g&9a5*kQB)NErn9gt!7}AUJ#WEQCRj+A-;1Nn|9aJaDh1z0o|{dd+&4&R;TyXEhUB^v#bEMfC2x~?;ES}gg~ z9aq`%iuFQ-ky>0_b70oX{o01-dYSJ%@z2zlz1d&M(8RS|zwhw<;qy=QKJ zzY|{WUCktQDCW3zeSGBAzWd2{U%!$4UHx_6YC%ioZF}XH-x1r|B=7VI Date: Wed, 4 Oct 2017 02:43:45 -0500 Subject: [PATCH 089/182] Rename files for consistency with pokeruby --- data/data2b.s | 18 +++++++++--------- data/graphics.s | 4 ++-- ...n_back_pic_table.inc => back_pic_table.inc} | 0 ...footprint_table.inc => footprint_table.inc} | 0 ...front_pic_table.inc => front_pic_table.inc} | 0 .../pokemon/{mon_graphics.inc => graphics.inc} | 0 ...te_indices.inc => icon_palette_indices.inc} | 0 ...alette_table.inc => icon_palette_table.inc} | 0 .../{mon_icon_table.inc => icon_table.inc} | 0 ...mon_palette_table.inc => palette_table.inc} | 0 ...lette_table.inc => shiny_palette_table.inc} | 0 ...pic_table.inc => still_front_pic_table.inc} | 0 ...te_table.inc => back_pic_palette_table.inc} | 0 ...r_back_pic_table.inc => back_pic_table.inc} | 0 ...e_table.inc => front_pic_palette_table.inc} | 0 ...front_pic_table.inc => front_pic_table.inc} | 0 .../{trainer_graphics.inc => graphics.inc} | 0 data/pokedex.s | 2 +- data/pokemon_icon.s | 6 +++--- 19 files changed, 15 insertions(+), 15 deletions(-) rename data/graphics/pokemon/{mon_back_pic_table.inc => back_pic_table.inc} (100%) rename data/graphics/pokemon/{mon_footprint_table.inc => footprint_table.inc} (100%) rename data/graphics/pokemon/{mon_front_pic_table.inc => front_pic_table.inc} (100%) rename data/graphics/pokemon/{mon_graphics.inc => graphics.inc} (100%) rename data/graphics/pokemon/{mon_icon_palette_indices.inc => icon_palette_indices.inc} (100%) rename data/graphics/pokemon/{mon_icon_palette_table.inc => icon_palette_table.inc} (100%) rename data/graphics/pokemon/{mon_icon_table.inc => icon_table.inc} (100%) rename data/graphics/pokemon/{mon_palette_table.inc => palette_table.inc} (100%) rename data/graphics/pokemon/{mon_shiny_palette_table.inc => shiny_palette_table.inc} (100%) rename data/graphics/pokemon/{mon_still_front_pic_table.inc => still_front_pic_table.inc} (100%) rename data/graphics/trainers/{trainer_back_pic_palette_table.inc => back_pic_palette_table.inc} (100%) rename data/graphics/trainers/{trainer_back_pic_table.inc => back_pic_table.inc} (100%) rename data/graphics/trainers/{trainer_front_pic_palette_table.inc => front_pic_palette_table.inc} (100%) rename data/graphics/trainers/{trainer_front_pic_table.inc => front_pic_table.inc} (100%) rename data/graphics/trainers/{trainer_graphics.inc => graphics.inc} (100%) diff --git a/data/data2b.s b/data/data2b.s index 77bb776cc8..02ef511bf4 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -3451,7 +3451,7 @@ gUnknown_08300D38:: @ 8300D38 .byte 0x35, 0x0d, 0x00, 0x00 @ 8301418 - .include "data/graphics/pokemon/mon_still_front_pic_table.inc" + .include "data/graphics/pokemon/still_front_pic_table.inc" .align 2 gUnknown_083021D8:: @ 83021D8 @@ -3897,13 +3897,13 @@ gUnknown_083021D8:: @ 83021D8 .byte 0x47, 0x06, 0x00, 0x00 @ 83028B8 - .include "data/graphics/pokemon/mon_back_pic_table.inc" + .include "data/graphics/pokemon/back_pic_table.inc" @ 8303678 - .include "data/graphics/pokemon/mon_palette_table.inc" + .include "data/graphics/pokemon/palette_table.inc" @ 8304438 - .include "data/graphics/pokemon/mon_shiny_palette_table.inc" + .include "data/graphics/pokemon/shiny_palette_table.inc" gUnknown_083051F8:: @ 83051F8 .4byte gUnknown_082FF538 @@ -4376,10 +4376,10 @@ gUnknown_0830536C:: @ 830536C .include "data/graphics/trainers/front_pic_coords.inc" @ 8305654 - .include "data/graphics/trainers/trainer_front_pic_table.inc" + .include "data/graphics/trainers/front_pic_table.inc" @ 830593C - .include "data/graphics/trainers/trainer_front_pic_palette_table.inc" + .include "data/graphics/trainers/front_pic_palette_table.inc" gUnknown_08305C24:: @ 8305C24 .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009 @@ -4470,10 +4470,10 @@ gUnknown_08305D0C:: @ 8305D0C .include "data/graphics/trainers/back_pic_coords.inc" @ 8305D4C - .include "data/graphics/trainers/trainer_back_pic_table.inc" + .include "data/graphics/trainers/back_pic_table.inc" @ 8305D8C - .include "data/graphics/trainers/trainer_back_pic_palette_table.inc" + .include "data/graphics/trainers/back_pic_palette_table.inc" @ 8305DCC .include "data/enemy_mon_elevation.inc" @@ -4484,7 +4484,7 @@ gUnknown_08309AAC:: @ 8309AAC .incbin "baserom.gba", 0x309aac, 0x6e0 @ 830A18C - .include "data/graphics/pokemon/mon_front_pic_table.inc" + .include "data/graphics/pokemon/front_pic_table.inc" @ 830AF4C .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888 diff --git a/data/graphics.s b/data/graphics.s index c192db3ab2..2c29d6ca50 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -207,10 +207,10 @@ gUnknown_08C2EA9C:: @ 8C2EA9C .incbin "baserom.gba", 0xc2ea9c, 0xf6c @ 8C2FA08 - .include "data/graphics/pokemon/mon_graphics.inc" + .include "data/graphics/pokemon/graphics.inc" @ 8D51DC8 - .include "data/graphics/trainers/trainer_graphics.inc" + .include "data/graphics/trainers/graphics.inc" .align 2 gMonIcon_QuestionMark:: @ 8D774D0 diff --git a/data/graphics/pokemon/mon_back_pic_table.inc b/data/graphics/pokemon/back_pic_table.inc similarity index 100% rename from data/graphics/pokemon/mon_back_pic_table.inc rename to data/graphics/pokemon/back_pic_table.inc diff --git a/data/graphics/pokemon/mon_footprint_table.inc b/data/graphics/pokemon/footprint_table.inc similarity index 100% rename from data/graphics/pokemon/mon_footprint_table.inc rename to data/graphics/pokemon/footprint_table.inc diff --git a/data/graphics/pokemon/mon_front_pic_table.inc b/data/graphics/pokemon/front_pic_table.inc similarity index 100% rename from data/graphics/pokemon/mon_front_pic_table.inc rename to data/graphics/pokemon/front_pic_table.inc diff --git a/data/graphics/pokemon/mon_graphics.inc b/data/graphics/pokemon/graphics.inc similarity index 100% rename from data/graphics/pokemon/mon_graphics.inc rename to data/graphics/pokemon/graphics.inc diff --git a/data/graphics/pokemon/mon_icon_palette_indices.inc b/data/graphics/pokemon/icon_palette_indices.inc similarity index 100% rename from data/graphics/pokemon/mon_icon_palette_indices.inc rename to data/graphics/pokemon/icon_palette_indices.inc diff --git a/data/graphics/pokemon/mon_icon_palette_table.inc b/data/graphics/pokemon/icon_palette_table.inc similarity index 100% rename from data/graphics/pokemon/mon_icon_palette_table.inc rename to data/graphics/pokemon/icon_palette_table.inc diff --git a/data/graphics/pokemon/mon_icon_table.inc b/data/graphics/pokemon/icon_table.inc similarity index 100% rename from data/graphics/pokemon/mon_icon_table.inc rename to data/graphics/pokemon/icon_table.inc diff --git a/data/graphics/pokemon/mon_palette_table.inc b/data/graphics/pokemon/palette_table.inc similarity index 100% rename from data/graphics/pokemon/mon_palette_table.inc rename to data/graphics/pokemon/palette_table.inc diff --git a/data/graphics/pokemon/mon_shiny_palette_table.inc b/data/graphics/pokemon/shiny_palette_table.inc similarity index 100% rename from data/graphics/pokemon/mon_shiny_palette_table.inc rename to data/graphics/pokemon/shiny_palette_table.inc diff --git a/data/graphics/pokemon/mon_still_front_pic_table.inc b/data/graphics/pokemon/still_front_pic_table.inc similarity index 100% rename from data/graphics/pokemon/mon_still_front_pic_table.inc rename to data/graphics/pokemon/still_front_pic_table.inc diff --git a/data/graphics/trainers/trainer_back_pic_palette_table.inc b/data/graphics/trainers/back_pic_palette_table.inc similarity index 100% rename from data/graphics/trainers/trainer_back_pic_palette_table.inc rename to data/graphics/trainers/back_pic_palette_table.inc diff --git a/data/graphics/trainers/trainer_back_pic_table.inc b/data/graphics/trainers/back_pic_table.inc similarity index 100% rename from data/graphics/trainers/trainer_back_pic_table.inc rename to data/graphics/trainers/back_pic_table.inc diff --git a/data/graphics/trainers/trainer_front_pic_palette_table.inc b/data/graphics/trainers/front_pic_palette_table.inc similarity index 100% rename from data/graphics/trainers/trainer_front_pic_palette_table.inc rename to data/graphics/trainers/front_pic_palette_table.inc diff --git a/data/graphics/trainers/trainer_front_pic_table.inc b/data/graphics/trainers/front_pic_table.inc similarity index 100% rename from data/graphics/trainers/trainer_front_pic_table.inc rename to data/graphics/trainers/front_pic_table.inc diff --git a/data/graphics/trainers/trainer_graphics.inc b/data/graphics/trainers/graphics.inc similarity index 100% rename from data/graphics/trainers/trainer_graphics.inc rename to data/graphics/trainers/graphics.inc diff --git a/data/pokedex.s b/data/pokedex.s index e81a3d78aa..3ba94dbc59 100644 --- a/data/pokedex.s +++ b/data/pokedex.s @@ -95,7 +95,7 @@ gUnknown_0856E688:: @ 856E688 .incbin "baserom.gba", 0x56e688, 0xc @ 856E694 - .include "data/graphics/pokemon/mon_footprint_table.inc" + .include "data/graphics/pokemon/footprint_table.inc" gUnknown_0856ED08:: @ 856ED08 .incbin "baserom.gba", 0x56ed08, 0x28 diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s index ab3824f354..831664bb70 100644 --- a/data/pokemon_icon.s +++ b/data/pokemon_icon.s @@ -5,13 +5,13 @@ .align 2, 0 @ 857BCA8 - .include "data/graphics/pokemon/mon_icon_table.inc" + .include "data/graphics/pokemon/icon_table.inc" @ 857C388 - .include "data/graphics/pokemon/mon_icon_palette_indices.inc" + .include "data/graphics/pokemon/icon_palette_indices.inc" @ 857C540 - .include "data/graphics/pokemon/mon_icon_palette_table.inc" + .include "data/graphics/pokemon/icon_palette_table.inc" gUnknown_0857C570:: @ 857C570 .incbin "baserom.gba", 0x57c570, 0x44 From d87d19cfe5903f5fabb0de37d2c46ef84a83c168 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 4 Oct 2017 19:25:14 +0200 Subject: [PATCH 090/182] more battle2 done --- asm/battle_2.s | 977 +---------------------------------- include/battle.h | 25 +- include/pokemon.h | 2 +- src/battle_2.c | 509 ++++++++++++++---- src/battle_3.c | 14 +- src/battle_script_commands.c | 42 +- sym_ewram.txt | 4 +- 7 files changed, 478 insertions(+), 1095 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 5f970d7669..673a0a8331 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -5,951 +5,6 @@ .text - thumb_func_start sub_803CDB8 -sub_803CDB8: @ 803CDB8 - push {r4,r5,lr} - movs r3, 0 - movs r1, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - adds r5, r0, 0 - cmp r3, r2 - bge _0803CDDA - ldr r4, =gBattleCommunication -_0803CDCA: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0803CDD4 - adds r3, 0x1 -_0803CDD4: - adds r1, 0x1 - cmp r1, r2 - blt _0803CDCA -_0803CDDA: - adds r0, r3, 0x1 - ldrb r5, [r5] - cmp r0, r5 - beq _0803CDF0 - movs r0, 0 - b _0803CDF2 - .pool -_0803CDF0: - movs r0, 0x1 -_0803CDF2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_803CDB8 - - thumb_func_start sub_803CDF8 -sub_803CDF8: @ 803CDF8 - push {r4-r7,lr} - ldr r7, =gActiveBank - ldrb r0, [r7] - ldr r6, =gBattleStruct - ldr r1, [r6] - adds r1, r0, r1 - adds r1, 0x5C - ldr r4, =gBattleBufferB - lsls r0, 9 - adds r2, r4, 0x1 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r2 - ldrb r1, [r1] - bl RecordedBattle_SetBankAction - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x42 - ands r0, r1 - cmp r0, 0x42 - bne _0803CEC6 - ldrb r0, [r7] - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - lsls r0, 9 - adds r5, r4, 0x2 - adds r0, r5 - ldrb r2, [r0] - movs r3, 0xF0 - adds r0, r3, 0 - ands r0, r2 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - ldrb r1, [r7] - ldr r2, [r6] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0x61 - lsls r1, 9 - adds r4, 0x3 - mov r12, r4 - add r1, r12 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r7] - movs r4, 0x2 - eors r0, r4 - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - eors r0, r4 - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - ands r3, r0 - lsrs r3, 4 - ldrb r0, [r1] - orrs r3, r0 - strb r3, [r1] - ldrb r0, [r7] - eors r4, r0 - ldr r0, [r6] - lsls r1, r4, 1 - adds r1, r4 - adds r1, r0 - adds r1, 0x62 - ldrb r0, [r7] - lsls r0, 9 - add r0, r12 - ldrb r0, [r0] - strb r0, [r1] -_0803CEC6: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803CDF8 - - thumb_func_start sub_803CEDC -sub_803CEDC: @ 803CEDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gUnknown_0202407A - adds r4, r0, r2 - ldrb r5, [r4] - adds r2, r1, r2 - ldrb r3, [r2] - strb r3, [r4] - strb r5, [r2] - ldr r2, =gTurnOrder - adds r0, r2 - ldrb r5, [r0] - adds r1, r2 - ldrb r2, [r1] - strb r2, [r0] - strb r5, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803CEDC - - thumb_func_start GetWhoStrikesFirst -GetWhoStrikesFirst: @ 803CF10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0803CFD8 - ldr r1, [sp, 0x8] - str r1, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0803CFD8 - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r3, [r0] - cmp r3, 0x21 - bne _0803CF7C - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803CF8C -_0803CF7C: - cmp r3, 0x22 - bne _0803CF98 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0803CF98 -_0803CF8C: - movs r3, 0x2 - b _0803CF9A - .pool -_0803CF98: - movs r3, 0x1 -_0803CF9A: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r2, =gBattleMons - adds r0, r2 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x21 - bne _0803CFBA - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803CFCA -_0803CFBA: - cmp r2, 0x22 - bne _0803CFDA - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0803CFDA -_0803CFCA: - movs r7, 0x2 - b _0803CFDC - .pool -_0803CFD8: - movs r3, 0x1 -_0803CFDA: - movs r7, 0x1 -_0803CFDC: - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r4, r0, r1 - ldrh r0, [r4, 0x6] - muls r3, r0 - ldr r2, =gStatStageRatios - movs r1, 0x1B - ldrsb r1, [r4, r1] - lsls r1, 1 - adds r0, r1, r2 - ldrb r0, [r0] - muls r0, r3 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - bl __divsi3 - mov r8, r0 - ldrh r0, [r4, 0x2E] - cmp r0, 0xAF - bne _0803D02C - ldr r1, =gEnigmaBerries - mov r3, r9 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - ldrb r5, [r0, 0x1A] - b _0803D040 - .pool -_0803D02C: - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r5, r0, 24 -_0803D040: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x023f0102 - ands r0, r1 - cmp r0, 0 - bne _0803D074 - ldr r0, =0x00000869 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803D074 - mov r0, r9 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803D074 - movs r0, 0x6E - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x64 - bl __udivsi3 - mov r8, r0 -_0803D074: - cmp r6, 0x18 - bne _0803D07E - mov r2, r8 - lsrs r2, 1 - mov r8, r2 -_0803D07E: - ldr r1, =gBattleMons - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803D09C - mov r0, r8 - lsrs r0, 2 - mov r8, r0 -_0803D09C: - cmp r6, 0x1A - bne _0803D0B8 - ldr r0, =gRandomTurnNumber - ldrh r4, [r0] - lsls r0, r5, 16 - subs r0, r5 - movs r1, 0x64 - bl __divsi3 - cmp r4, r0 - bge _0803D0B8 - movs r1, 0x1 - negs r1, r1 - mov r8, r1 -_0803D0B8: - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r4, r0, r1 - ldrh r0, [r4, 0x6] - adds r3, r0, 0 - muls r3, r7 - ldr r2, =gStatStageRatios - movs r1, 0x1B - ldrsb r1, [r4, r1] - lsls r1, 1 - adds r0, r1, r2 - ldrb r0, [r0] - muls r0, r3 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - bl __divsi3 - adds r7, r0, 0 - ldrh r0, [r4, 0x2E] - cmp r0, 0xAF - bne _0803D118 - ldr r1, =gEnigmaBerries - mov r3, r10 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - ldrb r5, [r0, 0x1A] - b _0803D12C - .pool -_0803D118: - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r5, r0, 24 -_0803D12C: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x023f0102 - ands r0, r1 - cmp r0, 0 - bne _0803D15C - ldr r0, =0x00000869 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803D15C - mov r0, r10 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803D15C - movs r0, 0x6E - muls r0, r7 - movs r1, 0x64 - bl __udivsi3 - adds r7, r0, 0 -_0803D15C: - cmp r6, 0x18 - bne _0803D162 - lsrs r7, 1 -_0803D162: - ldr r2, =gBattleMons - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803D17E - lsrs r7, 2 -_0803D17E: - cmp r6, 0x1A - bne _0803D198 - ldr r0, =gRandomTurnNumber - ldrh r4, [r0] - lsls r0, r5, 16 - subs r0, r5 - movs r1, 0x64 - bl __divsi3 - cmp r4, r0 - bge _0803D198 - movs r7, 0x1 - negs r7, r7 -_0803D198: - ldr r2, [sp, 0x4] - cmp r2, 0 - beq _0803D1B8 - movs r3, 0 - b _0803D254 - .pool -_0803D1B8: - ldr r0, =gActionForBanks - mov r3, r9 - adds r1, r3, r0 - ldrb r1, [r1] - adds r2, r0, 0 - cmp r1, 0 - bne _0803D208 - ldr r0, =gProtectStructs - lsls r1, r3, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _0803D1E0 - movs r3, 0xA5 - b _0803D20A - .pool -_0803D1E0: - ldr r0, =gBattleStruct - ldr r0, [r0] - add r0, r9 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - mov r3, r9 - muls r3, r1 - adds r1, r3, 0 - adds r0, r1 - ldr r1, =gBattleMons - adds r1, 0xC - adds r0, r1 - ldrh r3, [r0] - b _0803D20A - .pool -_0803D208: - movs r3, 0 -_0803D20A: - mov r1, r10 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0803D254 - ldr r0, =gProtectStructs - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _0803D22C - movs r2, 0xA5 - b _0803D256 - .pool -_0803D22C: - ldr r0, =gBattleStruct - ldr r0, [r0] - add r0, r10 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - mov r2, r10 - muls r2, r1 - adds r1, r2, 0 - adds r0, r1 - ldr r1, =gBattleMons - adds r1, 0xC - adds r0, r1 - ldrh r2, [r0] - b _0803D256 - .pool -_0803D254: - movs r2, 0 -_0803D256: - ldr r4, =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - movs r1, 0x7 - ldrsb r1, [r0, r1] - lsls r3, r2, 1 - cmp r1, 0 - bne _0803D27A - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _0803D2B8 -_0803D27A: - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _0803D2AE - cmp r8, r7 - bne _0803D2A4 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803D2A4 - movs r3, 0x2 - b _0803D2D4 - .pool -_0803D2A4: - cmp r8, r7 - bcs _0803D2D6 - movs r0, 0x1 - str r0, [sp, 0x8] - b _0803D2D6 -_0803D2AE: - cmp r1, r0 - bge _0803D2D6 - movs r1, 0x1 - str r1, [sp, 0x8] - b _0803D2D6 -_0803D2B8: - cmp r8, r7 - bne _0803D2CE - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803D2CE - movs r2, 0x2 - str r2, [sp, 0x8] - b _0803D2D6 -_0803D2CE: - cmp r8, r7 - bcs _0803D2D6 - movs r3, 0x1 -_0803D2D4: - str r3, [sp, 0x8] -_0803D2D6: - ldr r0, [sp, 0x8] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetWhoStrikesFirst - - thumb_func_start sub_803D2E8 -sub_803D2E8: @ 803D2E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r3, 0 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0803D354 - ldr r0, =gActiveBank - strb r3, [r0] - ldr r4, =gNoOfAllBanks - mov r8, r0 - ldrb r0, [r4] - cmp r3, r0 - bcc _0803D310 - b _0803D54A -_0803D310: - ldr r7, =gUnknown_0202407A - ldr r6, =gActionForBanks - mov r2, r8 - ldr r5, =gTurnOrder -_0803D318: - adds r1, r3, r7 - ldrb r0, [r2] - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r3, r5 - ldrb r0, [r2] - strb r0, [r1] - adds r3, 0x1 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - cmp r0, r1 - bcc _0803D318 - b _0803D54A - .pool -_0803D354: - movs r2, 0x2 - ands r1, r2 - cmp r1, 0 - beq _0803D3A4 - ldr r0, =gActiveBank - strb r3, [r0] - ldr r1, =gNoOfAllBanks - mov r8, r0 - adds r2, r1, 0 - ldrb r2, [r2] - cmp r3, r2 - bcs _0803D3C0 - ldr r0, =gActionForBanks - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x3 - beq _0803D3BE -_0803D376: - mov r7, r8 - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcs _0803D3C0 - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803D376 - b _0803D3BE - .pool -_0803D3A4: - ldr r1, =gActionForBanks - ldrb r0, [r1] - ldr r4, =gActiveBank - mov r8, r4 - cmp r0, 0x3 - bne _0803D3B4 - strb r3, [r4] - movs r3, 0x5 -_0803D3B4: - ldrb r0, [r1, 0x2] - cmp r0, 0x3 - bne _0803D3C0 - mov r7, r8 - strb r2, [r7] -_0803D3BE: - movs r3, 0x5 -_0803D3C0: - cmp r3, 0x5 - bne _0803D448 - ldr r6, =gUnknown_0202407A - ldr r1, =gActionForBanks - mov r2, r8 - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6] - ldr r2, =gTurnOrder - mov r3, r8 - ldrb r0, [r3] - strb r0, [r2] - movs r3, 0x1 - movs r5, 0 - adds r4, r1, 0 - ldr r7, =gBattleMainFunc - mov r10, r7 - ldr r0, =bc_80154A0 - mov r12, r0 - ldr r1, =gBattleStruct - mov r9, r1 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803D41A - adds r7, r6, 0 - adds r6, r4, 0 - adds r4, r2, 0 - ldr r2, =gNoOfAllBanks -_0803D3FC: - mov r0, r8 - ldrb r0, [r0] - cmp r5, r0 - beq _0803D412 - adds r1, r3, r7 - adds r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, r4 - strb r5, [r0] - adds r3, 0x1 -_0803D412: - adds r5, 0x1 - ldrb r1, [r2] - cmp r5, r1 - blt _0803D3FC -_0803D41A: - mov r2, r12 - mov r3, r10 - str r2, [r3] - mov r4, r9 - ldr r0, [r4] - b _0803D554 - .pool -_0803D448: - movs r0, 0 - mov r7, r8 - strb r0, [r7] - ldr r1, =gNoOfAllBanks - ldrb r0, [r1] - cmp r0, 0 - beq _0803D48E - ldr r6, =gActionForBanks - mov r2, r8 - ldr r5, =gUnknown_0202407A - ldr r4, =gTurnOrder -_0803D45E: - ldrb r0, [r2] - adds r0, r6 - ldrb r1, [r0] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0803D47C - adds r0, r3, r5 - strb r1, [r0] - adds r1, r3, r4 - mov r7, r8 - ldrb r0, [r7] - strb r0, [r1] - adds r3, 0x1 -_0803D47C: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcc _0803D45E -_0803D48E: - movs r0, 0 - mov r2, r8 - strb r0, [r2] - ldr r4, =gNoOfAllBanks - ldrb r0, [r4] - cmp r0, 0 - beq _0803D4D2 - ldr r6, =gActionForBanks - ldr r5, =gUnknown_0202407A - ldr r4, =gTurnOrder -_0803D4A2: - ldrb r0, [r2] - adds r0, r6 - ldrb r1, [r0] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0803D4C0 - adds r0, r3, r5 - strb r1, [r0] - adds r1, r3, r4 - mov r7, r8 - ldrb r0, [r7] - strb r0, [r1] - adds r3, 0x1 -_0803D4C0: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcc _0803D4A2 -_0803D4D2: - movs r5, 0 - b _0803D540 - .pool -_0803D4E8: - adds r4, r5, 0x1 - adds r7, r4, 0 - ldrb r1, [r1] - cmp r7, r1 - bge _0803D53E - ldr r6, =gUnknown_0202407A - lsls r2, r5, 24 - mov r8, r2 -_0803D4F8: - ldr r0, =gTurnOrder - adds r1, r5, r0 - ldrb r3, [r1] - adds r0, r4, r0 - ldrb r1, [r0] - adds r0, r5, r6 - ldrb r2, [r0] - cmp r2, 0x1 - beq _0803D534 - adds r0, r4, r6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0803D534 - cmp r2, 0x2 - beq _0803D534 - cmp r0, 0x2 - beq _0803D534 - adds r0, r3, 0 - movs r2, 0 - bl GetWhoStrikesFirst - lsls r0, 24 - cmp r0, 0 - beq _0803D534 - lsls r1, r4, 24 - lsrs r1, 24 - mov r3, r8 - lsrs r0, r3, 24 - bl sub_803CEDC -_0803D534: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803D4F8 -_0803D53E: - adds r5, r7, 0 -_0803D540: - ldr r1, =gNoOfAllBanks - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _0803D4E8 -_0803D54A: - ldr r1, =gBattleMainFunc - ldr r0, =bc_80154A0 - str r0, [r1] - ldr r0, =gBattleStruct - ldr r0, [r0] -_0803D554: - adds r0, 0x48 - movs r1, 0 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803D2E8 thumb_func_start TurnValuesCleanUp TurnValuesCleanUp: @ 803D580 @@ -1215,7 +270,7 @@ _0803D7AE: movs r0, 0 strb r0, [r1] ldr r1, =gFightStateTracker - ldr r0, =gUnknown_0202407A + ldr r0, =gActionsByTurnOrder movs r3, 0 ldrb r0, [r0] strb r0, [r1] @@ -2100,7 +1155,7 @@ sub_803E0B8: @ 803E0B8 movs r0, 0x4 str r0, [sp] ldr r6, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -2641,7 +1696,7 @@ _0803E5C4: b _0803E74E _0803E5E2: ldr r4, =gActiveBank - ldr r0, =gTurnOrder + ldr r0, =gBanksByTurnOrder ldr r3, [sp] adds r0, r3, r0 ldrb r0, [r0] @@ -2908,7 +1963,7 @@ _0803E83C: bs2_8016374: @ 803E868 push {r4,lr} ldr r3, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -2973,7 +2028,7 @@ sub_803E90C: @ 803E90C push {r5-r7} ldr r4, =gBankAttacker ldr r2, =gBankTarget - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -3534,7 +2589,7 @@ _0803EE24: sub_803EE48: @ 803EE48 push {r4-r6,lr} ldr r4, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r5, =gCurrentMoveTurn ldrb r0, [r5] adds r0, r1 @@ -3672,7 +2727,7 @@ _0803EF98: thumb_func_start sub_803EFA8 sub_803EFA8: @ 803EFA8 ldr r2, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -3697,7 +2752,7 @@ sub_803EFA8: @ 803EFA8 thumb_func_start bs5_8016AC0 bs5_8016AC0: @ 803EFF0 ldr r2, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -3730,7 +2785,7 @@ bs5_8016AC0: @ 803EFF0 sub_803F050: @ 803F050 push {r4-r6,lr} ldr r3, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -3817,7 +2872,7 @@ _0803F100: sub_803F120: @ 803F120 push {r4,lr} ldr r2, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -3903,7 +2958,7 @@ _0803F1CA: bs8_exit_by_flight: @ 803F1F0 push {r4,lr} ldr r2, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r4, =gCurrentMoveTurn ldrb r0, [r4] adds r0, r1 @@ -3926,7 +2981,7 @@ bs8_exit_by_flight: @ 803F1F0 thumb_func_start bs9_8016C9C bs9_8016C9C: @ 803F22C ldr r3, =gBankAttacker - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r0, =gCurrentMoveTurn ldrb r0, [r0] adds r0, r1 @@ -3958,7 +3013,7 @@ bs9_8016C9C: @ 803F22C ldr r1, =gFightStateTracker movs r0, 0xA strb r0, [r1] - ldr r1, =gUnknown_0202407A + ldr r1, =gActionsByTurnOrder movs r0, 0xC strb r0, [r1, 0x1] bx lr @@ -3993,7 +3048,7 @@ bsD_proceed: @ 803F2CC adds r0, 0x1 strb r0, [r1] ldr r3, =gFightStateTracker - ldr r2, =gUnknown_0202407A + ldr r2, =gActionsByTurnOrder ldrb r0, [r1] adds r0, r2 ldrb r0, [r0] @@ -4010,7 +3065,7 @@ bsD_proceed: @ 803F2CC thumb_func_start bsC_8016D70 bsC_8016D70: @ 803F300 push {r4-r6,lr} - ldr r1, =gTurnOrder + ldr r1, =gBanksByTurnOrder ldr r2, =gCurrentMoveTurn ldrb r0, [r2] adds r0, r1 @@ -4025,7 +3080,7 @@ bsC_8016D70: @ 803F300 adds r0, 0x1 strb r0, [r2] ldr r3, =gFightStateTracker - ldr r1, =gUnknown_0202407A + ldr r1, =gActionsByTurnOrder ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] diff --git a/include/battle.h b/include/battle.h index 50d2389ac2..7c8d89e57b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -161,6 +161,20 @@ #define SIDE_STATUS_MIST (1 << 8) #define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) +#define ACTION_USE_MOVE 0 +#define ACTION_USE_ITEM 1 +#define ACTION_SWITCH 2 +#define ACTION_RUN 3 +#define ACTION_WATCHES_CAREFULLY 4 +#define ACTION_SAFARI_ZONE_BALL 5 +#define ACTION_POKEBLOCK_CASE 6 +#define ACTION_GO_NEAR 7 +#define ACTION_SAFARI_ZONE_RUN 8 +#define ACTION_9 9 +#define ACTION_CANCEL_PARTNER 12 +#define ACTION_NOTHING_FAINTED 13 +#define ACTION_INIT_VALUE 0xFF + #define ABILITYEFFECT_ON_SWITCHIN 0x0 #define ABILITYEFFECT_ENDTURN 0x1 #define ABILITYEFFECT_MOVES_BLOCK 0x2 @@ -232,6 +246,7 @@ #define SPRITES_INIT_STATE1 0x1 // shares the Id as well #define SPRITES_INIT_STATE2 0x2 #define MOVE_EFFECT_BYTE 0x3 +#define ACTIONS_CONFIRMED_COUNT 0x4 #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 #define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8 @@ -601,7 +616,7 @@ struct BattleStruct u16 expValue; u8 field_52; u8 sentInPokes; - u8 field_54[4]; + bool8 selectionScriptFinished[BATTLE_BANKS_COUNT]; u8 field_58[4]; u8 field_5C[4]; u8 field_60[4][3]; @@ -615,8 +630,8 @@ struct BattleStruct u8 field_7D; u8 field_7E; u8 formToChangeInto; - u8 chosenMovesIds[4]; - u8 field_84[4]; + u8 chosenMovesIds[BATTLE_BANKS_COUNT]; + u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT]; u8 field_88; u8 field_89; u8 field_8A; @@ -890,8 +905,8 @@ bool8 CanRunFromBattle(u8 bank); bool8 IsRunningFromBattleImpossible(void); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); -u8 GetWhoStrikesFirst(u8 bankAtk, u8 bankDef, bool8 ignoreChosenMoves); -void sub_803CEDC(u8, u8); +u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); +void SwapTurnOrder(u8, u8); void BattleTurnPassed(void); // battle_3 diff --git a/include/pokemon.h b/include/pokemon.h index b3155881e9..5d97c16665 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -439,7 +439,7 @@ struct BattleMove u8 pp; u8 secondaryEffectChance; u8 target; - u8 priority; + s8 priority; u8 flags; }; diff --git a/src/battle_2.c b/src/battle_2.c index a18e1c698f..04907d0c0c 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -36,6 +36,7 @@ #include "battle_controllers.h" #include "pokedex.h" #include "abilities.h" +#include "moves.h" struct UnknownStruct6 { @@ -127,12 +128,16 @@ extern u16 gCurrentMove; extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT]; extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; -extern u8 gTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT]; extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; extern u8 gFightStateTracker; extern u8 gLastUsedAbility; extern u16 gLastUsedItem; +extern u8 gUnknown_0203CF00[]; +extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; +extern const u8* gBattlescriptCurrInstr; +extern u32 gBattlePalaceMoveSelectionRngValue; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const struct BattleMove gBattleMoves[]; @@ -153,6 +158,11 @@ extern const u8 gText_EmptyString3[]; // battlescripts extern const u8 gUnknown_082DB8BE[]; extern const u8 gUnknown_082DB881[]; +extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; +extern const u8 gUnknown_082DAB11[]; +extern const u8 gUnknown_082DB9BA[]; +extern const u8 gUnknown_082DAAFE[]; +extern const u8 gUnknown_082DAB0B[]; extern void HandleLinkBattleSetup(void); // rom_3 extern void SetUpBattleVarsAndBirchZigzagoon(void); // rom_3 @@ -215,11 +225,12 @@ static void BattleIntroOpponent2SendsOutMonAnimation(void); static void BattleIntroRecordMonsToDex(void); static void BattleIntroPlayer1SendsOutMonAnimation(void); static void TryDoEventsBeforeFirstTurn(void); -void sub_803BE74(void); +void HandleTurnActionSelectionState(void); void bc_bs_exec(void); -void sub_803D2E8(void); +static void SetActionsAndBanksTurnOrder(void); void sub_803CDF8(void); bool8 sub_803CDB8(void); +void bc_80154A0(void); void CB2_InitBattle(void) { @@ -3509,13 +3520,13 @@ static void TryDoEventsBeforeFirstTurn(void) if (gBattleStruct->switchInAbilitiesCounter == 0) { for (i = 0; i < gNoOfAllBanks; i++) - gTurnOrder[i] = i; + gBanksByTurnOrder[i] = i; for (i = 0; i < gNoOfAllBanks - 1; i++) { for (j = i + 1; j < gNoOfAllBanks; j++) { - if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], TRUE) != 0) - sub_803CEDC(i, j); + if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], TRUE) != 0) + SwapTurnOrder(i, j); } } } @@ -3528,7 +3539,7 @@ static void TryDoEventsBeforeFirstTurn(void) // check all switch in abilities happening from the fastest mon to slowest while (gBattleStruct->switchInAbilitiesCounter < gNoOfAllBanks) { - if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0) + if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBanksByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0) effect++; gBattleStruct->switchInAbilitiesCounter++; @@ -3543,7 +3554,7 @@ static void TryDoEventsBeforeFirstTurn(void) // check all switch in items having effect from the fastest mon to slowest while (gBattleStruct->switchInItemsCounter < gNoOfAllBanks) { - if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0) + if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBanksByTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0) effect++; gBattleStruct->switchInItemsCounter++; @@ -3554,14 +3565,14 @@ static void TryDoEventsBeforeFirstTurn(void) for (i = 0; i < BATTLE_BANKS_COUNT; i++) { *(gBattleStruct->field_5C + i) = 6; - gActionForBanks[i] = 0xFF; - gChosenMovesByBanks[i] = 0; + gActionForBanks[i] = ACTION_INIT_VALUE; + gChosenMovesByBanks[i] = MOVE_NONE; } TurnValuesCleanUp(0); SpecialStatusesClear(); *(&gBattleStruct->field_91) = gAbsentBankFlags; sub_814F9EC(gText_EmptyString3, 0); - gBattleMainFunc = sub_803BE74; + gBattleMainFunc = HandleTurnActionSelectionState; ResetSentPokesToOpponentValue(); for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) @@ -3659,8 +3670,8 @@ void BattleTurnPassed(void) for (i = 0; i < gNoOfAllBanks; i++) { - gActionForBanks[i] = 0xFF; - gChosenMovesByBanks[i] = 0; + gActionForBanks[i] = ACTION_INIT_VALUE; + gChosenMovesByBanks[i] = MOVE_NONE; } for (i = 0; i < 4; i++) @@ -3668,7 +3679,7 @@ void BattleTurnPassed(void) *(&gBattleStruct->field_91) = gAbsentBankFlags; sub_814F9EC(gText_EmptyString3, 0); - gBattleMainFunc = sub_803BE74; + gBattleMainFunc = HandleTurnActionSelectionState; gRandomTurnNumber = Random(); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -3743,8 +3754,6 @@ u8 IsRunningFromBattleImpossible(void) return 0; } -extern u8 gUnknown_0203CF00[]; - void sub_803BDA0(u8 bank) { s32 i; @@ -3777,32 +3786,31 @@ void sub_803BDA0(u8 bank) } } -extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; -extern const u8* gBattlescriptCurrInstr; +#define STATE_TURN_START_RECORD 0 +#define STATE_BEFORE_ACTION_CHOSEN 1 +#define STATE_WAIT_ACTION_CHOSEN 2 +#define STATE_WAIT_ACTION_CASE_CHOSEN 3 +#define STATE_WAIT_ACTION_CONFIRMED_STANDBY 4 +#define STATE_WAIT_ACTION_CONFIRMED 5 +#define STATE_SELECTION_SCRIPT 6 +#define STATE_WAIT_SET_BEFORE_ACTION 7 +#define STATE_SELECTION_SCRIPT_MAY_RUN 8 -extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; -extern const u8 gUnknown_082DAB11[]; -extern const u8 gUnknown_082DB9BA[]; -extern const u8 gUnknown_082DAAFE[]; -extern const u8 gUnknown_082DAB0B[]; - -extern u32 gBattlePalaceMoveSelectionRngValue; - -void sub_803BE74(void) +void HandleTurnActionSelectionState(void) { s32 i; - gBattleCommunication[4] = 0; + gBattleCommunication[ACTIONS_CONFIRMED_COUNT] = 0; for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { u8 identity = GetBankIdentity(gActiveBank); switch (gBattleCommunication[gActiveBank]) { - case 0: + case STATE_TURN_START_RECORD: // recorded battle related on start of every turn sub_8185FD0(); - gBattleCommunication[gActiveBank] = 1; + gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN; break; - case 1: + case STATE_BEFORE_ACTION_CHOSEN: // choose an action *(gBattleStruct->field_5C + gActiveBank) = 6; if (gBattleTypeFlags & BATTLE_TYPE_MULTI || !(identity & BIT_MON) @@ -3811,19 +3819,19 @@ void sub_803BE74(void) { if (gBattleStruct->field_91 & gBitTable[gActiveBank]) { - gActionForBanks[gActiveBank] = 13; + gActionForBanks[gActiveBank] = ACTION_NOTHING_FAINTED; if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - gBattleCommunication[gActiveBank] = 5; + gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED; else - gBattleCommunication[gActiveBank] = 4; + gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; } else { if (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gActiveBank].status2 & STATUS2_RECHARGE) { - gActionForBanks[gActiveBank] = 0; - gBattleCommunication[gActiveBank] = 4; + gActionForBanks[gActiveBank] = ACTION_USE_MOVE; + gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; } else { @@ -3834,7 +3842,7 @@ void sub_803BE74(void) } } break; - case 2: + case STATE_WAIT_ACTION_CHOSEN: // try to perform an action if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]); @@ -3842,12 +3850,12 @@ void sub_803BE74(void) switch (gBattleBufferB[gActiveBank][1]) { - case 0: + case ACTION_USE_MOVE: if (AreAllMovesUnusable()) { - gBattleCommunication[gActiveBank] = 6; - *(gBattleStruct->field_54 + gActiveBank) = 0; - *(gBattleStruct->field_84 + gActiveBank) = 4; + gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_WAIT_ACTION_CONFIRMED_STANDBY; *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3]; return; } @@ -3855,7 +3863,7 @@ void sub_803BE74(void) { gChosenMovesByBanks[gActiveBank] = gDisableStructs[gActiveBank].encoredMove; *(gBattleStruct->chosenMovesIds + gActiveBank) = gDisableStructs[gActiveBank].encoredMovePos; - gBattleCommunication[gActiveBank] = 4; + gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; return; } else @@ -3880,7 +3888,7 @@ void sub_803BE74(void) MarkBufferBankForExecution(gActiveBank); } break; - case 1: + case ACTION_USE_ITEM: if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER_NO_PYRAMID | BATTLE_TYPE_EREADER_TRAINER @@ -3888,9 +3896,9 @@ void sub_803BE74(void) { RecordedBattle_ClearBankAction(gActiveBank, 1); gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed; - gBattleCommunication[gActiveBank] = 6; - *(gBattleStruct->field_54 + gActiveBank) = 0; - *(gBattleStruct->field_84 + gActiveBank) = 1; + gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; return; } else @@ -3899,7 +3907,7 @@ void sub_803BE74(void) MarkBufferBankForExecution(gActiveBank); } break; - case 2: + case ACTION_SWITCH: *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; if (gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION) || gBattleTypeFlags & BATTLE_TYPE_ARENA @@ -3920,30 +3928,30 @@ void sub_803BE74(void) } else { - if (gActiveBank == 2 && gActionForBanks[0] == 2) + if (gActiveBank == 2 && gActionForBanks[0] == ACTION_SWITCH) EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); - else if (gActiveBank == 3 && gActionForBanks[1] == 2) + else if (gActiveBank == 3 && gActionForBanks[1] == ACTION_SWITCH) EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); else EmitChoosePokemon(0, 0, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); } MarkBufferBankForExecution(gActiveBank); break; - case 5: + case ACTION_SAFARI_ZONE_BALL: if (IsPlayerPartyAndPokemonStorageFull()) { gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB11; - gBattleCommunication[gActiveBank] = 6; - *(gBattleStruct->field_54 + gActiveBank) = 0; - *(gBattleStruct->field_84 + gActiveBank) = 1; + gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; return; } break; - case 6: + case ACTION_POKEBLOCK_CASE: EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]); MarkBufferBankForExecution(gActiveBank); break; - case 12: + case ACTION_CANCEL_PARTNER: gBattleCommunication[gActiveBank] = 7; gBattleCommunication[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] = 1; RecordedBattle_ClearBankAction(gActiveBank, 1); @@ -3954,22 +3962,22 @@ void sub_803BE74(void) MarkBufferBankForExecution(gActiveBank); return; } - else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 2) + else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_SWITCH) { RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 2); } - else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 3) + else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_RUN) { RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1); } - else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 0 + else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_USE_MOVE && (gProtectStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].onlyStruggle || gDisableStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].encoredMove)) { RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1); } else if (gBattleTypeFlags & BATTLE_TYPE_PALACE - && gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == 0) + && gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_USE_MOVE) { gRngValue = gBattlePalaceMoveSelectionRngValue; RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1); @@ -3985,28 +3993,28 @@ void sub_803BE74(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) - && gBattleBufferB[gActiveBank][1] == 3) + && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB9BA; gBattleCommunication[gActiveBank] = 8; - *(gBattleStruct->field_54 + gActiveBank) = 0; - *(gBattleStruct->field_84 + gActiveBank) = 1; + *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; return; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) - && gBattleBufferB[gActiveBank][1] == 3) + && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { BattleScriptExecute(gUnknown_082DAAFE); gBattleCommunication[gActiveBank] = 1; } else if (IsRunningFromBattleImpossible() != 0 - && gBattleBufferB[gActiveBank][1] == 3) + && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB0B; - gBattleCommunication[gActiveBank] = 6; - *(gBattleStruct->field_54 + gActiveBank) = 0; - *(gBattleStruct->field_84 + gActiveBank) = 1; + gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; return; } else @@ -4015,12 +4023,12 @@ void sub_803BE74(void) } } break; - case 3: + case STATE_WAIT_ACTION_CASE_CHOSEN: if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { switch (gActionForBanks[gActiveBank]) { - case 0: + case ACTION_USE_MOVE: switch (gBattleBufferB[gActiveBank][1]) { case 3: @@ -4033,7 +4041,7 @@ void sub_803BE74(void) gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1]; return; case 15: - gActionForBanks[gActiveBank] = 2; + gActionForBanks[gActiveBank] = ACTION_SWITCH; sub_803CDF8(); return; default: @@ -4046,10 +4054,10 @@ void sub_803BE74(void) else if (TrySetCantSelectMoveBattleScript()) { RecordedBattle_ClearBankAction(gActiveBank, 1); - gBattleCommunication[gActiveBank] = 6; - *(gBattleStruct->field_54 + gActiveBank) = 0; + gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; gBattleBufferB[gActiveBank][1] = 0; - *(gBattleStruct->field_84 + gActiveBank) = 2; + *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_WAIT_ACTION_CHOSEN; return; } else @@ -4067,7 +4075,7 @@ void sub_803BE74(void) break; } break; - case 1: + case ACTION_USE_ITEM: if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) == 0) { gBattleCommunication[gActiveBank] = 1; @@ -4078,7 +4086,7 @@ void sub_803BE74(void) gBattleCommunication[gActiveBank]++; } break; - case 2: + case ACTION_SWITCH: if (gBattleBufferB[gActiveBank][1] == 6) { gBattleCommunication[gActiveBank] = 1; @@ -4090,40 +4098,40 @@ void sub_803BE74(void) gBattleCommunication[gActiveBank]++; } break; - case 3: + case ACTION_RUN: gHitMarker |= HITMARKER_x8000; gBattleCommunication[gActiveBank]++; break; - case 4: + case ACTION_WATCHES_CAREFULLY: gBattleCommunication[gActiveBank]++; break; - case 5: + case ACTION_SAFARI_ZONE_BALL: gBattleCommunication[gActiveBank]++; break; - case 6: + case ACTION_POKEBLOCK_CASE: if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) != 0) { gBattleCommunication[gActiveBank]++; } else { - gBattleCommunication[gActiveBank] = 1; + gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN; } break; - case 7: + case ACTION_GO_NEAR: gBattleCommunication[gActiveBank]++; break; - case 8: + case ACTION_SAFARI_ZONE_RUN: gHitMarker |= HITMARKER_x8000; gBattleCommunication[gActiveBank]++; break; - case 9: + case ACTION_9: gBattleCommunication[gActiveBank]++; break; } } break; - case 4: + case STATE_WAIT_ACTION_CONFIRMED_STANDBY: if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { i = (sub_803CDB8() != 0); @@ -4142,16 +4150,16 @@ void sub_803BE74(void) gBattleCommunication[gActiveBank]++; } break; - case 5: + case STATE_WAIT_ACTION_CONFIRMED: if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { - gBattleCommunication[4]++; + gBattleCommunication[ACTIONS_CONFIRMED_COUNT]++; } break; - case 6: - if (*(gBattleStruct->field_54 + gActiveBank) != 0) + case STATE_SELECTION_SCRIPT: + if (*(gBattleStruct->selectionScriptFinished + gActiveBank)) { - gBattleCommunication[gActiveBank] = *(gBattleStruct->field_84 + gActiveBank); + gBattleCommunication[gActiveBank] = *(gBattleStruct->stateIdAfterSelScript + gActiveBank); } else { @@ -4164,25 +4172,25 @@ void sub_803BE74(void) gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; } break; - case 7: + case STATE_WAIT_SET_BEFORE_ACTION: if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { gBattleCommunication[gActiveBank] = 1; } break; - case 8: - if (*(gBattleStruct->field_54 + gActiveBank) != 0) + case STATE_SELECTION_SCRIPT_MAY_RUN: + if (*(gBattleStruct->selectionScriptFinished + gActiveBank)) { if (gBattleBufferB[gActiveBank][1] == 13) { gHitMarker |= HITMARKER_x8000; - gActionForBanks[gActiveBank] = 3; - gBattleCommunication[gActiveBank] = 4; + gActionForBanks[gActiveBank] = ACTION_RUN; + gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; } else { RecordedBattle_ClearBankAction(gActiveBank, 1); - gBattleCommunication[gActiveBank] = *(gBattleStruct->field_84 + gActiveBank); + gBattleCommunication[gActiveBank] = *(gBattleStruct->stateIdAfterSelScript + gActiveBank); } } else @@ -4199,18 +4207,323 @@ void sub_803BE74(void) } } - if (gBattleCommunication[4] == gNoOfAllBanks) + // check if everyone chose actions + if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gNoOfAllBanks) { sub_818603C(1); - gBattleMainFunc = sub_803D2E8; + gBattleMainFunc = SetActionsAndBanksTurnOrder; if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { for (i = 0; i < gNoOfAllBanks; i++) { - if (gActionForBanks[i] == 2) + if (gActionForBanks[i] == ACTION_SWITCH) sub_80571DC(i, *(gBattleStruct->field_5C + i)); } } } } + +bool8 sub_803CDB8(void) +{ + s32 i, var; + + for (var = 0, i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleCommunication[i] == 5) + var++; + } + + if (var + 1 == gNoOfAllBanks) + return TRUE; + else + return FALSE; +} + +void sub_803CDF8(void) +{ + *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1]; + RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]); + + if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF; + *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0); + *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3]; + + *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0); + *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4; + *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3]; + } +} + +extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; + +void SwapTurnOrder(u8 id1, u8 id2) +{ + u32 temp = gActionsByTurnOrder[id1]; + gActionsByTurnOrder[id1] = gActionsByTurnOrder[id2]; + gActionsByTurnOrder[id2] = temp; + + temp = gBanksByTurnOrder[id1]; + gBanksByTurnOrder[id1] = gBanksByTurnOrder[id2]; + gBanksByTurnOrder[id2] = temp; +} + +extern const u8 gStatStageRatios[][2]; + +u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves) +{ + u8 strikesFirst = 0; + u8 speedMultiplierBank1 = 0, speedMultiplierBank2 = 0; + u32 speedBank1 = 0, speedBank2 = 0; + u8 holdEffect = 0; + u8 holdEffectParam = 0; + u16 moveBank1 = 0, moveBank2 = 0; + + if (WEATHER_HAS_EFFECT) + { + if ((gBattleMons[bank1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY) + || (gBattleMons[bank1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY)) + speedMultiplierBank1 = 2; + else + speedMultiplierBank1 = 1; + + if ((gBattleMons[bank2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY) + || (gBattleMons[bank2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY)) + speedMultiplierBank2 = 2; + else + speedMultiplierBank2 = 1; + } + else + { + speedMultiplierBank1 = 1; + speedMultiplierBank2 = 1; + } + + speedBank1 = (gBattleMons[bank1].speed * speedMultiplierBank1) + * (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][0]) + / (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][1]); + + if (gBattleMons[bank1].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[bank1].holdEffect; + holdEffectParam = gEnigmaBerries[bank1].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank1].item); + holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank1].item); + } + + // badge boost + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER)) + && FlagGet(BADGE03_GET) + && GetBankSide(bank1) == SIDE_PLAYER) + { + speedBank1 = (speedBank1 * 110) / 100; + } + + if (holdEffect == HOLD_EFFECT_MACHO_BRACE) + speedBank1 /= 2; + + if (gBattleMons[bank1].status1 & STATUS_PARALYSIS) + speedBank1 /= 4; + + if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100) + speedBank1 = UINT_MAX; + + // check second bank's speed + + speedBank2 = (gBattleMons[bank2].speed * speedMultiplierBank2) + * (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][0]) + / (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][1]); + + if (gBattleMons[bank2].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[bank2].holdEffect; + holdEffectParam = gEnigmaBerries[bank2].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank2].item); + holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank2].item); + } + + // badge boost + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER)) + && FlagGet(BADGE03_GET) + && GetBankSide(bank2) == SIDE_PLAYER) + { + speedBank2 = (speedBank2 * 110) / 100; + } + + if (holdEffect == HOLD_EFFECT_MACHO_BRACE) + speedBank2 /= 2; + + if (gBattleMons[bank2].status1 & STATUS_PARALYSIS) + speedBank2 /= 4; + + if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100) + speedBank2 = UINT_MAX; + + if (ignoreChosenMoves) + { + moveBank1 = MOVE_NONE; + moveBank2 = MOVE_NONE; + } + else + { + if (gActionForBanks[bank1] == ACTION_USE_MOVE) + { + if (gProtectStructs[bank1].onlyStruggle) + moveBank1 = MOVE_STRUGGLE; + else + moveBank1 = gBattleMons[bank1].moves[*(gBattleStruct->chosenMovesIds + bank1)]; + } + else + moveBank1 = MOVE_NONE; + + if (gActionForBanks[bank2] == ACTION_USE_MOVE) + { + if (gProtectStructs[bank2].onlyStruggle) + moveBank2 = MOVE_STRUGGLE; + else + moveBank2 = gBattleMons[bank2].moves[*(gBattleStruct->chosenMovesIds + bank2)]; + } + else + moveBank2 = MOVE_NONE; + } + + // both move priorities are different than 0 + if (gBattleMoves[moveBank1].priority != 0 || gBattleMoves[moveBank2].priority != 0) + { + // both priorities are the same + if (gBattleMoves[moveBank1].priority == gBattleMoves[moveBank2].priority) + { + if (speedBank1 == speedBank2 && Random() & 1) + strikesFirst = 2; // same speeds, same priorities + else if (speedBank1 < speedBank2) + strikesFirst = 1; // bank2 has more speed + + // else bank1 has more speed + } + else if (gBattleMoves[moveBank1].priority < gBattleMoves[moveBank2].priority) + strikesFirst = 1; // bank2's move has greater priority + + // else bank1's move has greater priority + } + // both priorities are equal to 0 + else + { + if (speedBank1 == speedBank2 && Random() & 1) + strikesFirst = 2; // same speeds, same priorities + else if (speedBank1 < speedBank2) + strikesFirst = 1; // bank2 has more speed + + // else bank1 has more speed + } + + return strikesFirst; +} + +static void SetActionsAndBanksTurnOrder(void) +{ + s32 var = 0; + s32 i, j; + + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + gActionsByTurnOrder[var] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[var] = gActiveBank; + var++; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActionForBanks[gActiveBank] == ACTION_RUN) + { + var = 5; + break; + } + } + } + else + { + if (gActionForBanks[0] == ACTION_RUN) + { + gActiveBank = 0; + var = 5; + } + if (gActionForBanks[2] == ACTION_RUN) + { + gActiveBank = 2; + var = 5; + } + } + + if (var == 5) + { + gActionsByTurnOrder[0] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[0] = gActiveBank; + var = 1; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (i != gActiveBank) + { + gActionsByTurnOrder[var] = gActionForBanks[i]; + gBanksByTurnOrder[var] = i; + var++; + } + } + gBattleMainFunc = bc_80154A0; + gBattleStruct->field_48 = 0; + return; + } + else + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH) + { + gActionsByTurnOrder[var] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[var] = gActiveBank; + var++; + } + } + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH) + { + gActionsByTurnOrder[var] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[var] = gActiveBank; + var++; + } + } + for (i = 0; i < gNoOfAllBanks - 1; i++) + { + for (j = i + 1; j < gNoOfAllBanks; j++) + { + u8 bank1 = gBanksByTurnOrder[i]; + u8 bank2 = gBanksByTurnOrder[j]; + if (gActionsByTurnOrder[i] != ACTION_USE_ITEM + && gActionsByTurnOrder[j] != ACTION_USE_ITEM + && gActionsByTurnOrder[i] != ACTION_SWITCH + && gActionsByTurnOrder[j] != ACTION_SWITCH) + { + if (GetWhoStrikesFirst(bank1, bank2, FALSE)) + SwapTurnOrder(i, j); + } + } + } + } + } + gBattleMainFunc = bc_80154A0; + gBattleStruct->field_48 = 0; +} diff --git a/src/battle_3.c b/src/battle_3.c index 59028410de..c20d361a4f 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -32,7 +32,7 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gAbsentBankFlags; extern u16 gBattleWeather; -extern u8 gTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT]; extern u16 gSideAffecting[]; extern u8 gBattleCommunication[]; extern void (*gBattleMainFunc)(void); @@ -404,15 +404,15 @@ u8 UpdateTurnCounters(void) case 0: for (i = 0; i < gNoOfAllBanks; i++) { - gTurnOrder[i] = i; + gBanksByTurnOrder[i] = i; } for (i = 0; i < gNoOfAllBanks - 1; i++) { s32 j; for (j = i + 1; j < gNoOfAllBanks; j++) { - if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) - sub_803CEDC(i, j); + if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0)) + SwapTurnOrder(i, j); } } @@ -537,7 +537,7 @@ u8 UpdateTurnCounters(void) case 5: while (gBattleStruct->turnSideTracker < gNoOfAllBanks) { - gActiveBank = gTurnOrder[gBattleStruct->turnSideTracker]; + gActiveBank = gBanksByTurnOrder[gBattleStruct->turnSideTracker]; if (gWishFutureKnock.wishCounter[gActiveBank] != 0 && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp != 0) @@ -649,7 +649,7 @@ u8 TurnBasedEffects(void) gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); while (gBattleStruct->turnEffectsBank < gNoOfAllBanks && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) { - gActiveBank = gBankAttacker = gTurnOrder[gBattleStruct->turnEffectsBank]; + gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank]; if (gAbsentBankFlags & gBitTable[gActiveBank]) { gBattleStruct->turnEffectsBank++; @@ -1018,7 +1018,7 @@ bool8 sub_8041364(void) case 1: while (gBattleStruct->field_1A1 < gNoOfAllBanks) { - gActiveBank = gBankAttacker = gTurnOrder[gBattleStruct->field_1A1]; + gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->field_1A1]; if (gAbsentBankFlags & gBitTable[gActiveBank]) { gBattleStruct->field_1A1++; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 88c62841d5..380f9ec40d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -47,8 +47,8 @@ extern u8 gActiveBank; extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; -extern u8 gTurnOrder[BATTLE_BANKS_COUNT]; -extern u8 gUnknown_0202407A[BATTLE_BANKS_COUNT]; +extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gLastUsedAbility; extern u16 gBattleWeather; @@ -331,7 +331,7 @@ static void atk40_jump_if_move_affected_by_protect(void); static void atk41_call(void); static void atk42_jumpiftype2(void); static void atk43_jumpifabilitypresent(void); -static void atk44(void); +static void atk44_end_selection_script(void); static void atk45_playanimation(void); static void atk46_playanimation2(void); static void atk47_setgraphicalstatchangevalues(void); @@ -583,7 +583,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk41_call, atk42_jumpiftype2, atk43_jumpifabilitypresent, - atk44, + atk44_end_selection_script, atk45_playanimation, atk46_playanimation2, atk47_setgraphicalstatchangevalues, @@ -1151,11 +1151,11 @@ static void atk00_attackcanceler(void) for (i = 0; i < gNoOfAllBanks; i++) { - if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) { - PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH); - gProtectStructs[gTurnOrder[i]].stealMove = 0; - gBattleScripting.bank = gTurnOrder[i]; + PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0; + gBattleScripting.bank = gBanksByTurnOrder[i]; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; @@ -2378,7 +2378,7 @@ u8 BankGetTurnOrder(u8 bank) s32 i; for (i = 0; i < gNoOfAllBanks; i++) { - if (gTurnOrder[i] == bank) + if (gBanksByTurnOrder[i] == bank) break; } return i; @@ -4462,9 +4462,9 @@ static void atk43_jumpifabilitypresent(void) gBattlescriptCurrInstr += 6; } -static void atk44(void) +static void atk44_end_selection_script(void) { - *(gBankAttacker + gBattleStruct->field_54) = 1; + *(gBankAttacker + gBattleStruct->selectionScriptFinished) = TRUE; } static void atk45_playanimation(void) @@ -5903,15 +5903,15 @@ static void atk51_switch_handle_order(void) gBattleCommunication[0] = gBattleBufferB[gActiveBank][1]; *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1]; - if ((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_LINK)) == (BATTLE_TYPE_MULTI | BATTLE_TYPE_LINK)) + if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI) { *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF; *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0); *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3]; - *((gActiveBank ^ 2) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0); - *((gActiveBank ^ 2) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4; - *((gActiveBank ^ 2) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3]; + *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0); + *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4; + *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3]; } else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { @@ -5983,8 +5983,8 @@ static void atk52_switch_in_effects(void) for (i = 0; i < gNoOfAllBanks; i++) { - if (gTurnOrder[i] == gActiveBank) - gUnknown_0202407A[i] = 0xC; + if (gBanksByTurnOrder[i] == gActiveBank) + gActionsByTurnOrder[i] = ACTION_CANCEL_PARTNER; } for (i = 0; i < gNoOfAllBanks; i++) @@ -6569,7 +6569,7 @@ static void atk68_80246A0(void) s32 i; for (i = 0; i < gNoOfAllBanks; i++) - gUnknown_0202407A[i] = 0xC; + gActionsByTurnOrder[i] = ACTION_CANCEL_PARTNER; gBattlescriptCurrInstr++; } @@ -9710,8 +9710,8 @@ static void atkBA_jumpifnopursuitswitchdmg(void) for (i = 0; i < gNoOfAllBanks; i++) { - if (gTurnOrder[i] == gBankTarget) - gUnknown_0202407A[i] = 11; + if (gBanksByTurnOrder[i] == gBankTarget) + gActionsByTurnOrder[i] = 11; } gCurrentMove = MOVE_PURSUIT; @@ -10942,7 +10942,7 @@ static void atkEC_pursuit_sth(void) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT) { - gUnknown_0202407A[gActiveBank] = 11; + gActionsByTurnOrder[gActiveBank] = 11; gCurrentMove = MOVE_PURSUIT; gBattlescriptCurrInstr += 5; gBattleScripting.animTurn = 1; diff --git a/sym_ewram.txt b/sym_ewram.txt index 7de63abced..c50d8f0305 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -304,10 +304,10 @@ gBattlePartyID: @ 202406E gBanksBySide: @ 2024076 .space 0x4 -gUnknown_0202407A: @ 202407A +gActionsByTurnOrder: @ 202407A .space 0x4 -gTurnOrder: @ 202407E +gBanksByTurnOrder: @ 202407E .space 0x4 gCurrentMoveTurn: @ 2024082 From ddc2e96825c38e0ac05e602c07fc870d3464f139 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 4 Oct 2017 13:27:50 -0400 Subject: [PATCH 091/182] egg pls save me --- src/pokemon_summary_screen.c | 87 +++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 5499706249..9a478dabba 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1224,38 +1224,63 @@ void sub_81C13B0(u8 taskId, u8 b) gTasks[taskId].func = sub_81C0F44; } -struct struct_moveSwap -{ - u16 field_0; - u16 field_2; - u8 field_4; - u8 field_5; - u8 field_6; - u16* ptr_8; - u16* ptr_C; - u8* ptr_10; - u8* ptr_14; - u8* ptr_18; - u16* ptr_1C; - u8* ptr_20; - u8* ptr_24; -}; -/* void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b) +/* void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) { - struct struct_moveSwap sp; + u16* moveToPtr; + u8 r8; u8 r2; - sp.ptr_8 = &gUnknown_0203CF1C->summary.moves[a]; - sp.ptr_1C = &sp.field_2; - sp.field_2 = gUnknown_0203CF1C->summary.moves[a]; - sp.ptr_C = &gUnknown_0203CF1C->summary.moves[b]; - sp.field_0 = gUnknown_0203CF1C->summary.moves[b]; - sp.ptr_10 = &gUnknown_0203CF1C->summary.pp[a]; - sp.ptr_24 = &sp.field_5; - sp.field_5 = gUnknown_0203CF1C->summary.pp[a]; - sp.ptr_14 = &gUnknown_0203CF1C->summary.pp[b]; - sp.ptr_20 = &sp.field_4; - sp.field_4 = gUnknown_0203CF1C->summary.pp[b]; - sp.ptr_18 = &gUnknown_0203CF1C->summary.ppBonuses; - sp.field_6 = gUnknown_0203CF1C->summary.ppBonuses; + u8 r12; + u8 r1; + u16 localMoveTo; + u16 localMoveFrom; + u8 localPpTo; + u8 localPpFrom; + u8 localPpBonuses; + + u16* moveFromPtr; + u8* ppFromPtr; + u8* ppToPtr; + u8* ppBonusesPtr; + + moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; + localMoveFrom = *moveFromPtr; + + moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId]; + localMoveTo = *moveToPtr; + + ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; + localPpFrom = *ppFromPtr; + ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; + localPpTo = *ppToPtr; + + ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; + localPpBonuses = *ppBonusesPtr; + + r8 = gUnknown_08329D22[swappingFromId]; + r2 = (int)(localPpBonuses & r8) >> (swappingFromId << 1); + r12 = gUnknown_08329D22[swappingToId]; + r1 = (int)(localPpBonuses & r12) >> (swappingToId << 1); + localPpBonuses &= ~r8; + localPpBonuses &= ~r12; + r2 = r2 << (swappingToId << 1); + r1 = r1 << (swappingFromId << 1); + r2 += r1; + localPpBonuses |= r2; + + SetMonData(mon, swappingFromId + MON_DATA_MOVE1, moveToPtr); + SetMonData(mon, swappingToId + MON_DATA_MOVE1, moveFromPtr); + + SetMonData(mon, swappingFromId + MON_DATA_PP1, ppToPtr); + SetMonData(mon, swappingToId + MON_DATA_PP1, ppFromPtr); + + SetMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); + + *moveFromPtr = localMoveTo; + *moveToPtr = localMoveFrom; + + *ppFromPtr = localPpTo; + *ppToPtr = localPpFrom; + + *ppBonusesPtr = localPpBonuses; } */ \ No newline at end of file From e7175999f55da53392d269a2f03f498a03c9826c Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 5 Oct 2017 13:02:39 -0400 Subject: [PATCH 092/182] decompile braille_puzzles.c --- asm/braille_puzzles.s | 627 ------------------------------------ asm/field_control_avatar.s | 2 +- asm/rom6.s | 10 +- data/field_effect_scripts.s | 2 +- ld_script.txt | 2 +- src/braille_puzzles.c | 583 +++++++++++++++++++++++++++++++++ sym_ewram.txt | 2 +- 7 files changed, 592 insertions(+), 636 deletions(-) delete mode 100644 asm/braille_puzzles.s create mode 100755 src/braille_puzzles.c diff --git a/asm/braille_puzzles.s b/asm/braille_puzzles.s deleted file mode 100644 index 095b1b7930..0000000000 --- a/asm/braille_puzzles.s +++ /dev/null @@ -1,627 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_81795E8 -sub_81795E8: @ 81795E8 - push {lr} - ldr r0, =0x000008af - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08179634 - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldrh r1, [r2, 0x4] - ldr r0, =0x00004718 - cmp r1, r0 - bne _08179634 - ldr r1, [r2] - ldr r0, =0x0003000a - cmp r1, r0 - beq _08179616 - ldr r0, =0x00030009 - cmp r1, r0 - beq _08179616 - ldr r0, =0x0003000b - cmp r1, r0 - bne _08179634 -_08179616: - movs r0, 0x1 - b _08179636 - .pool -_08179634: - movs r0, 0 -_08179636: - pop {r1} - bx r1 - thumb_func_end sub_81795E8 - - thumb_func_start sub_817963C -sub_817963C: @ 817963C - push {lr} - ldr r2, =0x0000022a - movs r0, 0x10 - movs r1, 0x8 - bl MapGridSetMetatileIdAt - ldr r2, =0x0000022b - movs r0, 0x11 - movs r1, 0x8 - bl MapGridSetMetatileIdAt - movs r2, 0x8B - lsls r2, 2 - movs r0, 0x12 - movs r1, 0x8 - bl MapGridSetMetatileIdAt - ldr r2, =0x00000e32 - movs r0, 0x10 - movs r1, 0x9 - bl MapGridSetMetatileIdAt - ldr r2, =0x00000233 - movs r0, 0x11 - movs r1, 0x9 - bl MapGridSetMetatileIdAt - ldr r2, =0x00000e34 - movs r0, 0x12 - movs r1, 0x9 - bl MapGridSetMetatileIdAt - bl DrawWholeMapView - movs r0, 0x14 - bl PlaySE - ldr r0, =0x000008af - bl FlagSet - bl ScriptContext2_Disable - pop {r0} - bx r0 - .pool - thumb_func_end sub_817963C - - thumb_func_start sub_81796AC -sub_81796AC: @ 81796AC - push {r4,lr} - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - movs r1, 0x9D - lsls r1, 1 - cmp r0, r1 - bne _081796F4 - bl CalculatePlayerPartyCount - ldr r0, =gPlayerPartyCount - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - adds r1, r4, 0 - subs r1, 0x64 - adds r0, r1 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - ldr r1, =0x0000017d - cmp r0, r1 - bne _081796F4 - movs r0, 0x1 - b _081796F6 - .pool -_081796F4: - movs r0, 0 -_081796F6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81796AC - - thumb_func_start nullsub_84 -nullsub_84: @ 81796FC - bx lr - thumb_func_end nullsub_84 - - thumb_func_start sub_8179700 -sub_8179700: @ 8179700 - push {lr} - ldr r0, =sub_8179778 - movs r1, 0x9 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0xA] - strh r0, [r1, 0xC] - movs r0, 0x2 - strh r0, [r1, 0x10] - movs r0, 0x5 - strh r0, [r1, 0x12] - movs r0, 0x32 - strh r0, [r1, 0x14] - movs r0, 0 - bl SetCameraPanningCallback - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179700 - - thumb_func_start sub_817973C -sub_817973C: @ 817973C - push {lr} - ldr r0, =sub_8179778 - movs r1, 0x9 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0xA] - strh r0, [r1, 0xC] - movs r0, 0x3 - strh r0, [r1, 0x10] - movs r0, 0x5 - strh r0, [r1, 0x12] - movs r0, 0x2 - strh r0, [r1, 0x14] - movs r0, 0 - bl SetCameraPanningCallback - pop {r0} - bx r0 - .pool - thumb_func_end sub_817973C - - thumb_func_start sub_8179778 -sub_8179778: @ 8179778 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _081797D0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - negs r0, r0 - strh r0, [r4, 0x10] - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r0, 0 - bl SetCameraPanning - movs r2, 0xC - ldrsh r1, [r4, r2] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _081797D0 - adds r0, r5, 0 - bl DestroyTask - bl EnableBothScriptContexts - bl InstallCameraPanAheadCallback -_081797D0: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179778 - - thumb_func_start sub_81797DC -sub_81797DC: @ 81797DC - push {lr} - movs r0, 0x8B - lsls r0, 4 - bl FlagGet - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0817982C - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - ldrh r1, [r3, 0x4] - movs r0, 0xC3 - lsls r0, 3 - cmp r1, r0 - bne _0817982C - ldr r1, [r3] - ldr r0, =0x00170006 - cmp r1, r0 - beq _08179810 - ldr r0, =0x00170005 - cmp r1, r0 - beq _08179810 - ldr r0, =0x00170007 - cmp r1, r0 - bne _0817982C -_08179810: - ldr r0, =gUnknown_0203BD14 - strb r2, [r0] - movs r0, 0x1 - b _0817982E - .pool -_0817982C: - movs r0, 0 -_0817982E: - pop {r1} - bx r1 - thumb_func_end sub_81797DC - - thumb_func_start sub_8179834 -sub_8179834: @ 8179834 - push {lr} - bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - movs r0, 0x3C - bl FieldEffectStart - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179834 - - thumb_func_start sub_8179850 -sub_8179850: @ 8179850 - push {lr} - movs r0, 0x3C - bl FieldEffectActiveListRemove - bl sub_8179860 - pop {r0} - bx r0 - thumb_func_end sub_8179850 - - thumb_func_start sub_8179860 -sub_8179860: @ 8179860 - push {lr} - ldr r2, =0x0000022a - movs r0, 0xE - movs r1, 0x1A - bl MapGridSetMetatileIdAt - ldr r2, =0x0000022b - movs r0, 0xF - movs r1, 0x1A - bl MapGridSetMetatileIdAt - movs r2, 0x8B - lsls r2, 2 - movs r0, 0x10 - movs r1, 0x1A - bl MapGridSetMetatileIdAt - ldr r2, =0x00000e32 - movs r0, 0xE - movs r1, 0x1B - bl MapGridSetMetatileIdAt - ldr r2, =0x00000233 - movs r0, 0xF - movs r1, 0x1B - bl MapGridSetMetatileIdAt - ldr r2, =0x00000e34 - movs r0, 0x10 - movs r1, 0x1B - bl MapGridSetMetatileIdAt - bl DrawWholeMapView - movs r0, 0x14 - bl PlaySE - movs r0, 0x8B - lsls r0, 4 - bl FlagSet - bl ScriptContext2_Disable - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179860 - - thumb_func_start sub_81798D0 -sub_81798D0: @ 81798D0 - push {lr} - ldr r0, =0x000008b2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08179910 - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldrh r1, [r2, 0x4] - ldr r0, =0x00004418 - cmp r1, r0 - bne _08179910 - ldr r1, [r2] - ldr r0, =0x00190008 - cmp r1, r0 - bne _08179910 - ldr r1, =gUnknown_0203BD14 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0x1 - b _08179912 - .pool -_08179910: - movs r0, 0 -_08179912: - pop {r1} - bx r1 - thumb_func_end sub_81798D0 - - thumb_func_start sub_8179918 -sub_8179918: @ 8179918 - push {lr} - bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - movs r0, 0x3C - bl FieldEffectStart - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179918 - - thumb_func_start sub_8179934 -sub_8179934: @ 8179934 - push {lr} - movs r0, 0x3C - bl FieldEffectActiveListRemove - bl sub_8179944 - pop {r0} - bx r0 - thumb_func_end sub_8179934 - - thumb_func_start sub_8179944 -sub_8179944: @ 8179944 - push {lr} - ldr r2, =0x0000022a - movs r0, 0xE - movs r1, 0x1A - bl MapGridSetMetatileIdAt - ldr r2, =0x0000022b - movs r0, 0xF - movs r1, 0x1A - bl MapGridSetMetatileIdAt - movs r2, 0x8B - lsls r2, 2 - movs r0, 0x10 - movs r1, 0x1A - bl MapGridSetMetatileIdAt - ldr r2, =0x00000e32 - movs r0, 0xE - movs r1, 0x1B - bl MapGridSetMetatileIdAt - ldr r2, =0x00000233 - movs r0, 0xF - movs r1, 0x1B - bl MapGridSetMetatileIdAt - ldr r2, =0x00000e34 - movs r0, 0x10 - movs r1, 0x1B - bl MapGridSetMetatileIdAt - bl DrawWholeMapView - movs r0, 0x14 - bl PlaySE - ldr r0, =0x000008b2 - bl FlagSet - bl ScriptContext2_Disable - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179944 - - thumb_func_start nullsub_64 -nullsub_64: @ 81799B4 - bx lr - thumb_func_end nullsub_64 - - thumb_func_start sub_81799B8 -sub_81799B8: @ 81799B8 - push {lr} - bl oei_task_add - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gUnknown_0203BD14 - ldrb r0, [r0] - cmp r0, 0x1 - bne _081799E4 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r2, =sub_8179934 - b _081799F0 - .pool -_081799E4: - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r2, =sub_8179850 -_081799F0: - lsrs r1, r2, 16 - strh r1, [r0, 0x18] - strh r2, [r0, 0x1A] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_81799B8 - - thumb_func_start sub_8179A04 -sub_8179A04: @ 8179A04 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldrh r1, [r0, 0x4] - ldr r0, =0x00004318 - cmp r1, r0 - beq _08179A1A - b _08179B5A -_08179A1A: - ldr r0, =0x000008b1 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08179A28 - b _08179B5A -_08179A28: - movs r0, 0x2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08179A36 - b _08179B5A -_08179A36: - movs r0, 0x3 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08179A58 - b _08179B5A - .pool -_08179A54: - movs r0, 0x1 - b _08179B5C -_08179A58: - movs r5, 0 - mov r8, r4 - ldr r4, =gUnknown_085EFE74 - adds r0, r4, 0x1 - mov r12, r0 - ldr r6, =0x0000403b - ldr r1, =0x0000403c - mov r9, r1 -_08179A68: - lsls r0, r5, 1 - adds r1, r0, r4 - add r0, r12 - ldrb r3, [r0] - mov r7, r8 - ldr r2, [r7] - movs r7, 0 - ldrsh r0, [r2, r7] - ldrb r1, [r1] - cmp r0, r1 - bne _08179B44 - movs r1, 0x2 - ldrsh r0, [r2, r1] - cmp r0, r3 - bne _08179B44 - cmp r5, 0xF - bhi _08179AB0 - adds r0, r6, 0 - bl VarGet - lsls r0, 16 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r5 - orrs r1, r0 - lsrs r1, 16 - adds r0, r6, 0 - bl VarSet - b _08179AF0 - .pool -_08179AB0: - cmp r5, 0x1F - bhi _08179AD2 - mov r0, r9 - bl VarGet - lsls r0, 16 - adds r2, r5, 0 - subs r2, 0x10 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r2 - orrs r1, r0 - lsrs r1, 16 - mov r0, r9 - bl VarSet - b _08179AF0 -_08179AD2: - ldr r4, =0x0000403d - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - adds r2, r5, 0 - subs r2, 0x20 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r2 - orrs r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet -_08179AF0: - ldr r0, =0x0000403b - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =0x0000ffff - cmp r4, r0 - bne _08179B5A - ldr r0, =0x0000403c - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bne _08179B5A - ldr r0, =0x0000403d - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xF - bne _08179B5A - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, [r0] - ldr r0, =0x00150008 - cmp r1, r0 - beq _08179A54 - b _08179B5A - .pool -_08179B44: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x23 - bls _08179A68 - movs r0, 0x3 - bl FlagSet - movs r0, 0x2 - bl FlagReset -_08179B5A: - movs r0, 0 -_08179B5C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8179A04 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 1f2d638c36..fa923d94b9 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1411,7 +1411,7 @@ _0809CA64: b _0809CB28 .pool _0809CA7C: - bl sub_8179A04 + bl ShouldDoBrailleRegicePuzzle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/rom6.s b/asm/rom6.s index cd1421b4fa..6d2fb532b6 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -258,7 +258,7 @@ sub_813561C: @ 813561C thumb_func_start sub_8135654 sub_8135654: @ 8135654 push {r4,lr} - bl sub_81797DC + bl ShouldDoBrailleStrengthEffect lsls r0, 24 cmp r0, 0 beq _0813568C @@ -404,7 +404,7 @@ sub_8135780: @ 8135780 lsrs r0, r2, 16 strh r0, [r1, 0x18] strh r2, [r1, 0x1A] - bl sub_81795E8 + bl ShouldDoBrailleDigEffect lsls r0, 24 cmp r0, 0 bne _081357AC @@ -422,12 +422,12 @@ sub_81357BC: @ 81357BC push {r4,lr} movs r0, 0x26 bl FieldEffectActiveListRemove - bl sub_81795E8 + bl ShouldDoBrailleDigEffect lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _081357D6 - bl sub_817963C + bl DoBrailleDigEffect b _081357EE _081357D6: ldr r0, =task08_080A1C44 @@ -3329,7 +3329,7 @@ _081370E2: thumb_func_start sub_81370FC sub_81370FC: @ 81370FC push {r4,lr} - bl sub_81798D0 + bl ShouldDoBrailleFlyEffect lsls r0, 24 cmp r0, 0 beq _08137134 diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 89ed273010..ceb3270843 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -316,7 +316,7 @@ gFieldEffectScript_FieldMoveShowMonInit:: @ 82DBCCC field_eff_end gFieldEffectScript_Unknown60:: @ 82DBCD2 - field_eff_callnative sub_81799B8 + field_eff_callnative FldEff_UsePuzzleEffect field_eff_end gFieldEffectScript_Unknown61:: @ 82DBCD8 diff --git a/ld_script.txt b/ld_script.txt index 3170e19193..0dc9d7bc9b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -222,7 +222,7 @@ SECTIONS { asm/berry_tag_screen.o(.text); asm/mystery_event_menu.o(.text); asm/save_failed_screen.o(.text); - asm/braille_puzzles.o(.text); + src/braille_puzzles.o(.text); asm/pokeblock_feed.o(.text); asm/clear_save_data_screen.o(.text); asm/intro_credits_graphics.o(.text); diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c new file mode 100755 index 0000000000..4d28daff44 --- /dev/null +++ b/src/braille_puzzles.c @@ -0,0 +1,583 @@ +#include "global.h" +#include "event_data.h" +#include "songs.h" +#include "sound.h" +#include "script.h" +#include "species.h" +#include "task.h" +#include "field_effect.h" +#include "flags.h" + +extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap +extern void DrawWholeMapView(); // field_camera +extern void SetCameraPanningCallback(void ( *callback)()); // field_camera +extern void InstallCameraPanAheadCallback(void); +extern void SetCameraPanning(s16 x, s16 y); +extern u8 brm_get_pokemon_selection(void); +extern void FieldEffectActiveListRemove(u8 id); // field_effect +extern u8 oei_task_add(void); + +// why do this, GF? +enum +{ + STRENGTH_PUZZLE, + FLY_PUZZLE +}; + +extern u8 gBraillePuzzleCallbackFlag; +extern u8 gUnknown_085EFE74[][2]; + +void SealedChamberShakingEffect(u8); +void sub_8179860(void); +void sub_8179944(void); + +bool8 ShouldDoBrailleDigEffect(void) +{ + if (!FlagGet(SYS_BRAILLE_DIG) + && (gSaveBlock1Ptr->location.mapGroup == 0x18 + && gSaveBlock1Ptr->location.mapNum == 0x47)) + { + if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3) + return TRUE; + if (gSaveBlock1Ptr->pos.x == 9 && gSaveBlock1Ptr->pos.y == 3) + return TRUE; + if (gSaveBlock1Ptr->pos.x == 11 && gSaveBlock1Ptr->pos.y == 3) + return TRUE; + } + + return FALSE; +} + +void DoBrailleDigEffect(void) +{ + MapGridSetMetatileIdAt(16, 8, 554); + MapGridSetMetatileIdAt(17, 8, 555); + MapGridSetMetatileIdAt(18, 8, 556); + MapGridSetMetatileIdAt(16, 9, 3634); + MapGridSetMetatileIdAt(17, 9, 563); + MapGridSetMetatileIdAt(18, 9, 3636); + DrawWholeMapView(); + PlaySE(SE_BAN); + FlagSet(SYS_BRAILLE_DIG); + ScriptContext2_Disable(); +} + +bool8 CheckRelicanthWailord(void) +{ + // Emerald change: why did they flip it? + // First comes Wailord + if (GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD) + { + CalculatePlayerPartyCount(); + // Last comes Relicanth + if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH) + return TRUE; + } + return FALSE; +} + +// THEORY: this was caused by block commenting out all of the older R/S braille functions but leaving the call to it itself, which creates the nullsub. +// the code is shown below to show what this might look like. +void ShouldDoBrailleStrengthEffectOld(void) +{ + /* + if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS)) + { + if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) + return TRUE; + else if (gSaveBlock1.pos.x == 9 && gSaveBlock1.pos.y == 23) + return TRUE; + else if (gSaveBlock1.pos.x == 11 && gSaveBlock1.pos.y == 23) + return TRUE; + } + + return FALSE; +} + +void DoBrailleStrengthEffect(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH); + MapGridSetMetatileIdAt(14, 26, 554); + MapGridSetMetatileIdAt(15, 26, 555); + MapGridSetMetatileIdAt(16, 26, 556); + MapGridSetMetatileIdAt(14, 27, 3634); + MapGridSetMetatileIdAt(15, 27, 563); + MapGridSetMetatileIdAt(16, 27, 3636); + DrawWholeMapView(); + PlaySE(SE_BAN); + FlagSet(SYS_BRAILLE_STRENGTH); + ScriptContext2_Disable(); +} + +bool8 ShouldDoBrailleFlyEffect(void) +{ + if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB)) + { + if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) + return TRUE; + } + + return FALSE; +} + +void DoBrailleFlyEffect(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); +} + +bool8 FldEff_UseFlyAncientTomb(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16; + gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback; + return FALSE; +} + +void UseFlyAncientTomb_Callback(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB); + UseFlyAncientTomb_Finish(); +} + +void UseFlyAncientTomb_Finish(void) +{ + MapGridSetMetatileIdAt(14, 26, 554); + MapGridSetMetatileIdAt(15, 26, 555); + MapGridSetMetatileIdAt(16, 26, 556); + MapGridSetMetatileIdAt(14, 27, 3634); + MapGridSetMetatileIdAt(15, 27, 563); + MapGridSetMetatileIdAt(16, 27, 3636); + DrawWholeMapView(); + PlaySE(SE_BAN); + FlagSet(SYS_BRAILLE_FLY); + ScriptContext2_Disable(); +} + */ +} + +void DoSealedChamberShakingEffect1(void) +{ + u8 taskId = CreateTask(SealedChamberShakingEffect, 9); + + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[4] = 2; + gTasks[taskId].data[5] = 5; + gTasks[taskId].data[6] = 50; + SetCameraPanningCallback(0); +} + +void DoSealedChamberShakingEffect2(void) +{ + u8 taskId = CreateTask(SealedChamberShakingEffect, 9); + + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[4] = 3; + gTasks[taskId].data[5] = 5; + gTasks[taskId].data[6] = 2; + SetCameraPanningCallback(0); +} + +void SealedChamberShakingEffect(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[1]++; + + if (!(task->data[1] % task->data[5])) + { + task->data[1] = 0; + task->data[2]++; + task->data[4] = -task->data[4]; + SetCameraPanning(0, task->data[4]); + if (task->data[2] == task->data[6]) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + InstallCameraPanAheadCallback(); + } + } +} + +// moved later in the function because it was rewritten. +bool8 ShouldDoBrailleStrengthEffect(void) +{ + if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x06)) + { + if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23) + { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; } + else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23) + { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; } + else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23) + { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; } + } + + return FALSE; +} + +void sub_8179834(void) +{ + gFieldEffectSpawnParams[0] = brm_get_pokemon_selection(); + FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); +} + +void UseStrengthDesertRuins_Callback(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB); + sub_8179860(); +} + +void sub_8179860(void) +{ + MapGridSetMetatileIdAt(14, 26, 554); + MapGridSetMetatileIdAt(15, 26, 555); + MapGridSetMetatileIdAt(16, 26, 556); + MapGridSetMetatileIdAt(14, 27, 3634); + MapGridSetMetatileIdAt(15, 27, 563); + MapGridSetMetatileIdAt(16, 27, 3636); + DrawWholeMapView(); + PlaySE(SE_BAN); + FlagSet(SYS_BRAILLE_STRENGTH); + ScriptContext2_Disable(); +} + +bool8 ShouldDoBrailleFlyEffect(void) +{ + if(!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44)) + { + if(gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25) + { gBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; } + } + return FALSE; +} + +void sub_8179918(void) +{ + gFieldEffectSpawnParams[0] = brm_get_pokemon_selection(); + FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); +} + +void UseFlyAncientTomb_Callback(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB); + sub_8179944(); +} + +void sub_8179944(void) +{ + MapGridSetMetatileIdAt(14, 26, 554); + MapGridSetMetatileIdAt(15, 26, 555); + MapGridSetMetatileIdAt(16, 26, 556); + MapGridSetMetatileIdAt(14, 27, 3634); + MapGridSetMetatileIdAt(15, 27, 563); + MapGridSetMetatileIdAt(16, 27, 3636); + DrawWholeMapView(); + PlaySE(SE_BAN); + FlagSet(SYS_BRAILLE_FLY); + ScriptContext2_Disable(); +} + +// theory: another commented out DoBrailleWait and Task_BrailleWait. +void DoBrailleWait(void) +{ + /* + if (!FlagGet(SYS_BRAILLE_WAIT)) + CreateTask(Task_BrailleWait, 0x50); +} + +void Task_BrailleWait(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = 7200; + data[0] = 1; + break; + case 1: + if (BrailleWait_CheckButtonPress() != FALSE) + { + MenuZeroFillScreen(); + PlaySE(SE_SELECT); + data[0] = 2; + } + else + { + data[1] = data[1] - 1; + if (data[1] == 0) + { + MenuZeroFillScreen(); + data[0] = 3; + data[1] = 30; + } + } + break; + case 2: + if (BrailleWait_CheckButtonPress() == FALSE) + { + data[1] = data[1] - 1; + if (data[1] == 0) + data[0] = 4; + break; + } + sub_8064E2C(); + DestroyTask(taskId); + ScriptContext2_Disable(); + break; + case 3: + data[1] = data[1] - 1; + if (data[1] == 0) + data[0] = 4; + break; + case 4: + sub_8064E2C(); + ScriptContext1_SetupScript(S_OpenRegiceChamber); + DestroyTask(taskId); + break; + } +} + +bool32 BrailleWait_CheckButtonPress(void) +{ + u16 keyMask = A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON | DPAD_ANY; + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + keyMask |= L_BUTTON | R_BUTTON; + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A) + keyMask |= L_BUTTON; + + if (gMain.newKeys & keyMask) + return TRUE; + else + return FALSE; + */ +} + +// this used to be FldEff_UseFlyAncientTomb . why did GF merge the 2 functions? +bool8 FldEff_UsePuzzleEffect(void) +{ + u8 taskId = oei_task_add(); + + if(gBraillePuzzleCallbackFlag == FLY_PUZZLE) + { + gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16; + gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback; + } + else + { + gTasks[taskId].data[8] = (u32)UseStrengthDesertRuins_Callback >> 16; + gTasks[taskId].data[9] = (u32)UseStrengthDesertRuins_Callback; + } + return FALSE; +} + +// can't get this one to match due to the weird macro-like varsets with strange bitshifting. +// to note: 0x10000 is loaded in, and its obviously supposed to be 1, but i cant get 0x80 << 9 to be loaded in without using it directly. +// maybe there's some way of writing it that works? +#ifdef NONMATCHING +// ShouldDoBrailleRegicePuzzle +bool8 ShouldDoBrailleRegicePuzzle(void) +{ + u8 i; + + if (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x43) + { + // _08179A1A + if (FlagGet(SYS_BRAILLE_WAIT) != FALSE) + return FALSE; + if (FlagGet(2) == FALSE) + return FALSE; + if (FlagGet(3) == TRUE) + return FALSE; + + for(i = 0; i < 36; i++) + { + if(gSaveBlock1Ptr->pos.x == gUnknown_085EFE74[i][0] && gSaveBlock1Ptr->pos.y == gUnknown_085EFE74[i][1]) + { + if(i < 16) + VarSet(0x403B, (0x10000 << i | VarGet(0x403B) << 16) >> 16); // correct + else if(i < 32) + VarSet(0x403C, (0x10000 << (i - 16) | VarGet(0x403C) << 16) >> 16); // hmm? + else + VarSet(0x403D, (0x10000 << (i - 32) | VarGet(0x403D) << 16) >> 16); // hmm? + + if(VarGet(0x403B) != 0xFFFF || VarGet(0x403C) != 0xFF || VarGet(0x403D) != 0xF) + return FALSE; + + if(gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21) + return TRUE; + else + return FALSE; + } + } + } + // TODO: Find what flags 2 and 3 are. + FlagSet(3); + FlagReset(2); + return FALSE; +} +#else +__attribute__((naked)) +bool8 ShouldDoBrailleRegicePuzzle(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + ldr r4, =gSaveBlock1Ptr\n\ + ldr r0, [r4]\n\ + ldrh r1, [r0, 0x4]\n\ + ldr r0, =0x00004318\n\ + cmp r1, r0\n\ + beq _08179A1A\n\ + b _08179B5A\n\ +_08179A1A:\n\ + ldr r0, =0x000008b1\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08179A28\n\ + b _08179B5A\n\ +_08179A28:\n\ + movs r0, 0x2\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08179A36\n\ + b _08179B5A\n\ +_08179A36:\n\ + movs r0, 0x3\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _08179A58\n\ + b _08179B5A\n\ + .pool\n\ +_08179A54:\n\ + movs r0, 0x1\n\ + b _08179B5C\n\ +_08179A58:\n\ + movs r5, 0\n\ + mov r8, r4\n\ + ldr r4, =gUnknown_085EFE74\n\ + adds r0, r4, 0x1\n\ + mov r12, r0\n\ + ldr r6, =0x0000403b\n\ + ldr r1, =0x0000403c\n\ + mov r9, r1\n\ +_08179A68:\n\ + lsls r0, r5, 1\n\ + adds r1, r0, r4\n\ + add r0, r12\n\ + ldrb r3, [r0]\n\ + mov r7, r8\n\ + ldr r2, [r7]\n\ + movs r7, 0\n\ + ldrsh r0, [r2, r7]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bne _08179B44\n\ + movs r1, 0x2\n\ + ldrsh r0, [r2, r1]\n\ + cmp r0, r3\n\ + bne _08179B44\n\ + cmp r5, 0xF\n\ + bhi _08179AB0\n\ + adds r0, r6, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + lsls r1, r5\n\ + orrs r1, r0\n\ + lsrs r1, 16\n\ + adds r0, r6, 0\n\ + bl VarSet\n\ + b _08179AF0\n\ + .pool\n\ +_08179AB0:\n\ + cmp r5, 0x1F\n\ + bhi _08179AD2\n\ + mov r0, r9\n\ + bl VarGet\n\ + lsls r0, 16\n\ + adds r2, r5, 0\n\ + subs r2, 0x10\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + lsls r1, r2\n\ + orrs r1, r0\n\ + lsrs r1, 16\n\ + mov r0, r9\n\ + bl VarSet\n\ + b _08179AF0\n\ +_08179AD2:\n\ + ldr r4, =0x0000403d\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + adds r2, r5, 0\n\ + subs r2, 0x20\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + lsls r1, r2\n\ + orrs r1, r0\n\ + lsrs r1, 16\n\ + adds r0, r4, 0\n\ + bl VarSet\n\ +_08179AF0:\n\ + ldr r0, =0x0000403b\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + ldr r0, =0x0000ffff\n\ + cmp r4, r0\n\ + bne _08179B5A\n\ + ldr r0, =0x0000403c\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, r4\n\ + bne _08179B5A\n\ + ldr r0, =0x0000403d\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xF\n\ + bne _08179B5A\n\ + ldr r0, =gSaveBlock1Ptr\n\ + ldr r0, [r0]\n\ + ldr r1, [r0]\n\ + ldr r0, =0x00150008\n\ + cmp r1, r0\n\ + beq _08179A54\n\ + b _08179B5A\n\ + .pool\n\ +_08179B44:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x23\n\ + bls _08179A68\n\ + movs r0, 0x3\n\ + bl FlagSet\n\ + movs r0, 0x2\n\ + bl FlagReset\n\ +_08179B5A:\n\ + movs r0, 0\n\ +_08179B5C:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} +#endif diff --git a/sym_ewram.txt b/sym_ewram.txt index 7848dcc7c6..cb42f9e76a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1651,7 +1651,7 @@ gUnknown_0203BCFE: @ 203BCFE gUnknown_0203BD0E: @ 203BD0E .space 0x6 -gUnknown_0203BD14: @ 203BD14 +gBraillePuzzleCallbackFlag: @ 203BD14 .space 0x4 gUnknown_0203BD18: @ 203BD18 From c88a39b5d5e2fbe5548c77a194fb030fb59231f3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 5 Oct 2017 13:05:25 -0400 Subject: [PATCH 093/182] formatting --- src/braille_puzzles.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 4d28daff44..83d32b56c3 100755 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -246,9 +246,9 @@ void sub_8179860(void) bool8 ShouldDoBrailleFlyEffect(void) { - if(!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44)) + if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44)) { - if(gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25) + if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25) { gBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; } } return FALSE; @@ -362,7 +362,7 @@ bool8 FldEff_UsePuzzleEffect(void) { u8 taskId = oei_task_add(); - if(gBraillePuzzleCallbackFlag == FLY_PUZZLE) + if (gBraillePuzzleCallbackFlag == FLY_PUZZLE) { gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16; gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback; @@ -394,21 +394,21 @@ bool8 ShouldDoBrailleRegicePuzzle(void) if (FlagGet(3) == TRUE) return FALSE; - for(i = 0; i < 36; i++) + for (i = 0; i < 36; i++) { - if(gSaveBlock1Ptr->pos.x == gUnknown_085EFE74[i][0] && gSaveBlock1Ptr->pos.y == gUnknown_085EFE74[i][1]) + if (gSaveBlock1Ptr->pos.x == gUnknown_085EFE74[i][0] && gSaveBlock1Ptr->pos.y == gUnknown_085EFE74[i][1]) { - if(i < 16) + if (i < 16) VarSet(0x403B, (0x10000 << i | VarGet(0x403B) << 16) >> 16); // correct - else if(i < 32) + else if (i < 32) VarSet(0x403C, (0x10000 << (i - 16) | VarGet(0x403C) << 16) >> 16); // hmm? else VarSet(0x403D, (0x10000 << (i - 32) | VarGet(0x403D) << 16) >> 16); // hmm? - if(VarGet(0x403B) != 0xFFFF || VarGet(0x403C) != 0xFF || VarGet(0x403D) != 0xF) + if (VarGet(0x403B) != 0xFFFF || VarGet(0x403C) != 0xFF || VarGet(0x403D) != 0xF) return FALSE; - if(gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21) + if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21) return TRUE; else return FALSE; From 342e616d4b49d1772628947782a931964d36e167 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 6 Oct 2017 00:12:01 +0200 Subject: [PATCH 094/182] battle2 more and more and more --- asm/battle_2.s | 2623 +--------------------------------- asm/evolution_scene.s | 14 +- asm/party_menu.s | 2 +- asm/pokemon_item_effect.s | 2 +- data/battle_scripts_1.s | 22 +- data/battle_scripts_2.s | 8 +- data/data2b.s | 4 +- include/battle.h | 54 +- include/evolution_scene.h | 10 + include/pokemon.h | 6 + include/recorded_battle.h | 1 + include/songs.h | 84 +- src/battle_2.c | 896 +++++++++++- src/battle_3.c | 16 +- src/battle_script_commands.c | 54 +- sym_ewram.txt | 4 +- 16 files changed, 1046 insertions(+), 2754 deletions(-) create mode 100644 include/evolution_scene.h diff --git a/asm/battle_2.s b/asm/battle_2.s index 673a0a8331..c0d8fd72a1 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,2591 +6,12 @@ .text - thumb_func_start TurnValuesCleanUp -TurnValuesCleanUp: @ 803D580 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - adds r5, r1, 0 - cmp r2, 0 - beq _0803D678 - ldr r7, =gProtectStructs - adds r6, r5, 0 - ldr r0, =gBattleMons + 0x50 - mov r12, r0 - ldr r1, =gDisableStructs - mov r8, r1 - mov r10, r8 -_0803D5AE: - mov r2, r9 - cmp r2, 0 - beq _0803D5EC - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _0803D648 - .pool -_0803D5EC: - ldrb r0, [r6] - lsls r0, 4 - adds r2, r0, r7 - movs r1, 0 - mov r4, r10 - movs r3, 0 -_0803D5F8: - adds r0, r2, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0xF - bls _0803D5F8 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1, 0x16] - cmp r0, 0 - beq _0803D616 - subs r0, 0x1 - strb r0, [r1, 0x16] -_0803D616: - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1, 0x19] - cmp r0, 0 - beq _0803D648 - subs r0, 0x1 - strb r0, [r1, 0x19] - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x19] - cmp r0, 0 - bne _0803D648 - movs r0, 0x58 - muls r2, r0 - add r2, r12 - ldr r0, [r2] - ldr r1, =0xffbfffff - ands r0, r1 - str r0, [r2] -_0803D648: - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _0803D666 - movs r0, 0x58 - muls r2, r0 - add r2, r12 - ldr r0, [r2] - ldr r1, =0xfeffffff - ands r0, r1 - str r0, [r2] -_0803D666: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcc _0803D5AE -_0803D678: - movs r0, 0 - ldr r2, =gSideTimers - strb r0, [r2, 0x8] - strb r0, [r2, 0x14] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end TurnValuesCleanUp - - thumb_func_start SpecialStatusesClear -SpecialStatusesClear: @ 803D6A0 - push {r4-r6,lr} - ldr r2, =gActiveBank - movs r0, 0 - strb r0, [r2] - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - adds r6, r0, 0 - cmp r1, 0 - beq _0803D6DE - adds r3, r2, 0 - movs r4, 0 - ldr r5, =gSpecialStatuses -_0803D6B8: - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r5 - movs r1, 0 -_0803D6C4: - adds r0, r2, r1 - strb r4, [r0] - adds r1, 0x1 - cmp r1, 0x13 - bls _0803D6C4 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r6] - cmp r0, r1 - bcc _0803D6B8 -_0803D6DE: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end SpecialStatusesClear - - thumb_func_start bc_80154A0 -bc_80154A0: @ 803D6F0 - push {r4-r7,lr} - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _0803D7AE - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x48 - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - mov r12, r2 - adds r6, r1, 0 - ldrb r1, [r6] - cmp r0, r1 - bcs _0803D7AE - ldr r5, =gActiveBank - ldr r4, =gBankAttacker - movs r7, 0x84 - lsls r7, 1 -_0803D71C: - ldr r1, [r2] - adds r1, 0x48 - ldrb r0, [r1] - strb r0, [r4] - strb r0, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gChosenMovesByBanks - ldrb r3, [r5] - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - bne _0803D7A0 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803D7A0 - ldr r2, =gDisableStructs - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _0803D7A0 - ldr r0, =gProtectStructs - lsls r1, r3, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - blt _0803D7A0 - ldr r0, =gUnknown_082DB1FF - bl BattleScriptExecute - b _0803D7E8 - .pool -_0803D7A0: - mov r2, r12 - ldr r0, [r2] - adds r0, 0x48 - ldrb r0, [r0] - ldrb r1, [r6] - cmp r0, r1 - bcc _0803D71C -_0803D7AE: - bl b_clear_atk_up_if_hit_flag_unless_enraged - ldr r1, =gCurrentMoveTurn - movs r0, 0 - strb r0, [r1] - ldr r1, =gFightStateTracker - ldr r0, =gActionsByTurnOrder - movs r3, 0 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gDynamicBasePower - movs r2, 0 - strh r3, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - strb r2, [r0, 0x13] - ldr r1, =gBattleMainFunc - ldr r0, =bc_bs_exec - str r0, [r1] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x3] - strb r2, [r0, 0x4] - ldr r0, =gBattleScripting - strb r2, [r0, 0x16] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r2, [r0] -_0803D7E8: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end bc_80154A0 - - thumb_func_start bc_bs_exec -bc_bs_exec: @ 803D818 - push {r4-r6,lr} - ldr r6, =gBattleOutcome - ldrb r0, [r6] - ldr r2, =gFightStateTracker - cmp r0, 0 - beq _0803D828 - movs r0, 0xC - strb r0, [r2] -_0803D828: - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, 0x4B - ldr r4, =gCurrentMoveTurn - ldrb r1, [r4] - strb r1, [r0] - ldr r1, =gUnknown_0831BC0C - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, =gNoOfAllBanks - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bcc _0803D894 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r3, =gBattleMainFunc - ldr r2, =gUnknown_0831BC44 - ldrb r1, [r6] - movs r0, 0x7F - ands r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - b _0803D8AC - .pool -_0803D894: - ldr r0, [r5] - adds r0, 0x4B - ldrb r0, [r0] - cmp r0, r1 - beq _0803D8AC - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffdff - ands r0, r1 - ldr r1, =0xfff7ffff - ands r0, r1 - str r0, [r2] -_0803D8AC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bc_bs_exec - - thumb_func_start HandleEndTurn_BattleWon -HandleEndTurn_BattleWon: @ 803D8C0 - push {r4,lr} - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - ldr r0, =0x02000002 - ands r0, r2 - cmp r0, 0 - beq _0803D920 - ldr r1, =gScriptResult - ldr r4, =gBattleOutcome - ldrb r0, [r4] - strh r0, [r1] - ldr r1, =gBattleTextBuff1 - ldrb r0, [r4] - strb r0, [r1] - movs r0, 0 - bl GetBankByIdentity - ldr r1, =gBankAttacker - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA35 - str r0, [r1] - ldrb r1, [r4] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - b _0803DAA4 - .pool -_0803D920: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0803D95C - ldr r0, =0x043f0900 - ands r2, r0 - cmp r2, 0 - beq _0803D95C - bl BattleMusicStop - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA87 - str r0, [r1] - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - ldr r0, =0x000003fe - cmp r1, r0 - bne _0803D946 - b _0803DA8A -_0803D946: - b _0803DA94 - .pool -_0803D95C: - ldr r0, [r1] - movs r1, 0xA - ands r0, r1 - cmp r0, 0x8 - beq _0803D968 - b _0803DA9E -_0803D968: - bl BattleMusicStop - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DA92D - str r0, [r1] - ldr r2, =gTrainers - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - subs r0, 0x3 - cmp r0, 0x32 - bls _0803D98A - b _0803DA94 -_0803D98A: - lsls r0, 2 - ldr r1, =_0803D9A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803D9A8: - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA74 - .4byte _0803DA8A - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA74 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA80 -_0803DA74: - ldr r0, =0x00000163 - bl PlayBGM - b _0803DAA4 - .pool -_0803DA80: - movs r0, 0xD4 - lsls r0, 1 - bl PlayBGM - b _0803DAA4 -_0803DA8A: - movs r0, 0xB1 - lsls r0, 1 - bl PlayBGM - b _0803DAA4 -_0803DA94: - movs r0, 0xCE - lsls r0, 1 - bl PlayBGM - b _0803DAA4 -_0803DA9E: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DA96A - str r0, [r1] -_0803DAA4: - ldr r1, =gBattleMainFunc - ldr r0, =HandleEndTurn_FinishBattle - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end HandleEndTurn_BattleWon - - thumb_func_start HandleEndTurn_BattleLost -HandleEndTurn_BattleLost: @ 803DAC0 - push {r4,lr} - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0803DB7C - ldr r0, =0x003f0100 - ands r1, r0 - cmp r1, 0 - beq _0803DB44 - ldr r3, =gBattleOutcome - ldrb r2, [r3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0803DB2C - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB9C8 - str r0, [r1] - movs r0, 0x7F - ands r0, r2 - strb r0, [r3] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - b _0803DB82 - .pool -_0803DB2C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA0B - str r0, [r1] - movs r0, 0x7F - ands r0, r2 - strb r0, [r3] - b _0803DB82 - .pool -_0803DB44: - ldr r1, =gBattleTextBuff1 - ldr r4, =gBattleOutcome - ldrb r0, [r4] - strb r0, [r1] - movs r0, 0 - bl GetBankByIdentity - ldr r1, =gBankAttacker - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA35 - str r0, [r1] - ldrb r1, [r4] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - b _0803DB82 - .pool -_0803DB7C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DA96D - str r0, [r1] -_0803DB82: - ldr r1, =gBattleMainFunc - ldr r0, =HandleEndTurn_FinishBattle - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end HandleEndTurn_BattleLost - - thumb_func_start HandleEndTurn_RanFromBattle -HandleEndTurn_RanFromBattle: @ 803DBA0 - push {lr} - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - ldr r0, =0x003f0100 - ands r0, r2 - cmp r0, 0 - beq _0803DBFC - movs r0, 0x8 - ands r2, r0 - cmp r2, 0 - beq _0803DBFC - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB9C1 - str r0, [r1] - ldr r1, =gBattleOutcome - movs r0, 0x9 - strb r0, [r1] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - b _0803DC6A - .pool -_0803DBFC: - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 19 - ands r0, r1 - cmp r0, 0 - beq _0803DC24 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB9C1 - str r0, [r1] - ldr r1, =gBattleOutcome - movs r0, 0x9 - strb r0, [r1] - b _0803DC6A - .pool -_0803DC24: - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 27 - lsrs r0, 30 - cmp r0, 0x1 - beq _0803DC54 - cmp r0, 0x2 - beq _0803DC64 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAAF0 - b _0803DC68 - .pool -_0803DC54: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAADB - b _0803DC68 - .pool -_0803DC64: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAAE9 -_0803DC68: - str r0, [r1] -_0803DC6A: - ldr r1, =gBattleMainFunc - ldr r0, =HandleEndTurn_FinishBattle - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end HandleEndTurn_RanFromBattle - - thumb_func_start HandleEndTurn_MonFled -HandleEndTurn_MonFled: @ 803DC84 - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - ldr r2, =gBankAttacker - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, =gBattlePartyID - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAAF7 - str r0, [r1] - ldr r1, =gBattleMainFunc - ldr r0, =HandleEndTurn_FinishBattle - str r0, [r1] - bx lr - .pool - thumb_func_end HandleEndTurn_MonFled - - thumb_func_start HandleEndTurn_FinishBattle -HandleEndTurn_FinishBattle: @ 803DCD8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gFightStateTracker - ldrb r0, [r0] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0803DCEE - b _0803DE10 -_0803DCEE: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x023f0b92 - ands r1, r0 - cmp r1, 0 - bne _0803DDB6 - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcs _0803DDB2 - adds r5, r2, 0 - ldr r0, =gBattlePartyID - mov r8, r0 - movs r7, 0x64 - ldr r6, =gPlayerParty -_0803DD10: - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803DDA0 - ldr r4, =gBattleResults - ldrh r0, [r4, 0x6] - cmp r0, 0 - bne _0803DD74 - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x6] - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0x2 - adds r2, r4, 0 - adds r2, 0x8 - bl GetMonData - b _0803DDA0 - .pool -_0803DD74: - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x26] - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0x2 - adds r2, r4, 0 - adds r2, 0x14 - bl GetMonData -_0803DDA0: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803DD10 -_0803DDB2: - bl sub_80EC728 -_0803DDB6: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x023f0b9a - ands r0, r1 - cmp r0, 0 - bne _0803DDD2 - ldr r0, =gBattleResults - ldrb r1, [r0, 0x5] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803DDD2 - bl sub_80EE184 -_0803DDD2: - bl sub_8186444 - movs r0, 0x3 - bl BeginFastPaletteFade - movs r0, 0x5 - bl FadeOutMapMusic - ldr r1, =gBattleMainFunc - ldr r0, =sub_803DE40 - str r0, [r1] - ldr r1, =gUnknown_030061E8 - ldr r0, =BattleMainCB2 - str r0, [r1] - b _0803DE2A - .pool -_0803DE10: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803DE2A - ldr r1, =gBattleScriptingCommandsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0803DE2A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end HandleEndTurn_FinishBattle - - thumb_func_start sub_803DE40 -sub_803DE40: @ 803DE40 - push {lr} - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0803DE86 - bl ResetSpriteData - ldr r0, =gLeveledUpInBattle - ldrb r0, [r0] - cmp r0, 0 - beq _0803DE62 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _0803DE80 -_0803DE62: - ldr r1, =gBattleMainFunc - ldr r0, =c4_overworld - str r0, [r1] - b _0803DEA2 - .pool -_0803DE80: - ldr r1, =gBattleMainFunc - ldr r0, =bc_evolution_cutscene - str r0, [r1] -_0803DE86: - bl FreeAllWindowBuffers - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0803DEA2 - bl FreeMonSpritesGfx - bl FreeBattleResources - bl FreeBattleSpritesData -_0803DEA2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DE40 - - thumb_func_start bc_evolution_cutscene -bc_evolution_cutscene: @ 803DEB4 - push {r4-r6,lr} - ldr r0, =gLeveledUpInBattle - ldrb r1, [r0] - adds r3, r0, 0 - cmp r1, 0 - beq _0803DF2E -_0803DEC0: - movs r6, 0 -_0803DEC2: - ldrb r2, [r3] - ldr r0, =gBitTable - lsls r1, r6, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0803DF20 - bics r2, r1 - strb r2, [r3] - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0803DF20 - bl FreeAllWindowBuffers - ldr r0, =gBattleMainFunc - ldr r1, =sub_803DF48 - str r1, [r0] - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl evolution_cutscene - b _0803DF34 - .pool -_0803DF20: - adds r6, 0x1 - ldr r3, =gLeveledUpInBattle - cmp r6, 0x5 - ble _0803DEC2 - ldrb r0, [r3] - cmp r0, 0 - bne _0803DEC0 -_0803DF2E: - ldr r1, =gBattleMainFunc - ldr r0, =c4_overworld - str r0, [r1] -_0803DF34: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bc_evolution_cutscene - - thumb_func_start sub_803DF48 -sub_803DF48: @ 803DF48 - push {lr} - ldr r0, =gMain - ldr r1, [r0, 0x4] - ldr r0, =BattleMainCB2 - cmp r1, r0 - bne _0803DF5A - ldr r1, =gBattleMainFunc - ldr r0, =bc_evolution_cutscene - str r0, [r1] -_0803DF5A: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DF48 - - thumb_func_start c4_overworld -c4_overworld: @ 803DF70 - push {r4-r6,lr} - ldr r6, =gBattleTypeFlags - ldr r0, [r6] - movs r5, 0x2 - ands r0, r5 - cmp r0, 0 - bne _0803DF8C - ldr r4, =gPlayerParty - adds r0, r4, 0 - bl RandomlyGivePartyPokerus - adds r0, r4, 0 - bl PartySpreadPokerus -_0803DF8C: - ldr r4, [r6] - adds r0, r4, 0 - ands r0, r5 - cmp r0, 0 - beq _0803DF9E - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0803DFEC -_0803DF9E: - ldr r1, =gScriptResult - ldr r5, =gBattleOutcome - ldrb r0, [r5] - strh r0, [r1] - ldr r3, =gMain - ldr r0, =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - movs r0, 0x80 - lsls r0, 3 - ands r4, r0 - cmp r4, 0 - beq _0803DFDE - ldr r0, =gEnemyParty - bl UpdateRoamerHPStatus - ldrb r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803DFDA - cmp r1, 0x7 - bne _0803DFDE -_0803DFDA: - bl SetRoamerInactive -_0803DFDE: - movs r0, 0x5A - bl m4aSongNumStop - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_0803DFEC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end c4_overworld - - thumb_func_start bc_move_exec_returning -bc_move_exec_returning: @ 803E018 - push {lr} - ldr r0, =gFightStateTracker - ldrb r0, [r0] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0803E060 - ldr r3, =gBattleResources - ldr r0, [r3] - ldr r0, [r0, 0xC] - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0 - beq _0803E03C - subs r0, 0x1 - strb r0, [r1] -_0803E03C: - ldr r2, =gBattleMainFunc - ldr r0, [r3] - ldr r1, [r0, 0xC] - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - b _0803E07A - .pool -_0803E060: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803E07A - ldr r1, =gBattleScriptingCommandsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0803E07A: - pop {r0} - bx r0 - .pool - thumb_func_end bc_move_exec_returning - - thumb_func_start sub_803E08C -sub_803E08C: @ 803E08C - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803E0A8 - ldr r1, =gBattleScriptingCommandsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0803E0A8: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803E08C - - thumb_func_start sub_803E0B8 -sub_803E0B8: @ 803E0B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0x4 - str r0, [sp] - ldr r6, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6] - ldr r1, =gBattleStruct - ldr r3, [r1] - adds r0, r3, 0 - adds r0, 0x91 - ldrb r2, [r0] - ldr r1, =gBitTable - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0803E110 - ldr r1, =gFightStateTracker - movs r0, 0xC - b _0803E83C - .pool -_0803E110: - ldr r1, =gCritMultiplier - movs r0, 0x1 - strb r0, [r1] - ldr r1, =gBattleScripting - movs r0, 0x1 - strb r0, [r1, 0xE] - ldr r5, =0x000001a3 - adds r0, r3, r5 - strb r2, [r0] - ldr r0, =gBattleMoveFlags - strb r2, [r0] - ldr r0, =gMultiHitCounter - strb r2, [r0] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x6] - ldr r2, =gCurrMovePos - ldr r0, =gUnknown_020241E9 - mov r9, r0 - ldrb r0, [r6] - ldr r3, =gBattleStruct - ldr r1, [r3] - adds r0, r1 - adds r0, 0x80 - ldrb r0, [r0] - mov r5, r9 - strb r0, [r5] - strb r0, [r2] - ldr r1, =gProtectStructs - ldrb r4, [r6] - lsls r0, r4, 4 - adds r3, r0, r1 - ldrb r1, [r3] - lsls r0, r1, 29 - mov r8, r2 - cmp r0, 0 - bge _0803E1BC - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r2, =gCurrentMove - ldr r1, =gLastUsedMove - movs r0, 0xA5 - strh r0, [r1] - strh r0, [r2] - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 4 - orrs r0, r1 - str r0, [r2] - movs r0, 0xA5 - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, =gBattleStruct - ldr r2, [r3] - b _0803E316 - .pool -_0803E1BC: - ldr r5, =gBattleMons - mov r10, r5 - movs r0, 0x58 - adds r5, r4, 0 - muls r5, r0 - mov r0, r10 - adds r0, 0x50 - adds r0, r5, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0803E1E2 - movs r7, 0x80 - lsls r7, 15 - ands r7, r1 - cmp r7, 0 - beq _0803E204 -_0803E1E2: - ldr r3, =gCurrentMove - ldr r2, =gLastUsedMove - ldr r1, =gLockedMoves - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - strh r0, [r3] - b _0803E33C - .pool -_0803E204: - ldr r1, =gDisableStructs - mov r12, r1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r12 - ldrh r3, [r0, 0x6] - adds r1, r3, 0 - cmp r1, 0 - beq _0803E2DC - ldrb r2, [r0, 0xC] - lsls r0, r2, 1 - adds r0, r5 - mov r4, r10 - adds r4, 0xC - adds r0, r4 - ldrh r0, [r0] - cmp r1, r0 - bne _0803E268 - ldr r2, =gCurrentMove - ldr r0, =gLastUsedMove - strh r3, [r0] - strh r3, [r2] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xC] - mov r3, r9 - strb r0, [r3] - mov r5, r8 - strb r0, [r5] - ldrh r0, [r2] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, =gBattleStruct - ldr r2, [r3] - b _0803E316 - .pool -_0803E268: - cmp r1, 0 - beq _0803E2DC - cmp r1, r0 - beq _0803E2DC - mov r5, r9 - strb r2, [r5] - mov r0, r8 - strb r2, [r0] - ldr r3, =gCurrentMove - ldr r2, =gLastUsedMove - ldrb r0, [r0] - lsls r0, 1 - ldrb r1, [r6] - movs r5, 0x58 - muls r1, r5 - adds r0, r1 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r2] - strh r0, [r3] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - movs r2, 0 - strh r7, [r0, 0x6] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - strb r2, [r0, 0xC] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - ldrb r2, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xE] - ldrh r0, [r3] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, =gBattleStruct - ldr r2, [r3] - b _0803E316 - .pool -_0803E2DC: - ldr r3, =gBattleMons - mov r5, r8 - ldrb r0, [r5] - lsls r0, 1 - ldr r4, =gBankAttacker - ldrb r2, [r4] - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldr r1, =gChosenMovesByBanks - lsls r2, 1 - adds r2, r1 - ldrh r3, [r0] - ldrh r2, [r2] - cmp r3, r2 - beq _0803E334 - ldr r1, =gCurrentMove - ldr r0, =gLastUsedMove - strh r3, [r0] - strh r3, [r1] - ldrh r0, [r1] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r4] - ldr r2, =gBattleStruct - ldr r2, [r2] -_0803E316: - adds r1, r2 - strb r0, [r1, 0xC] - b _0803E33C - .pool -_0803E334: - ldr r1, =gCurrentMove - ldr r0, =gLastUsedMove - strh r3, [r0] - strh r3, [r1] -_0803E33C: - ldr r2, =gBattleMons - ldr r1, =gBankAttacker - ldrb r3, [r1] - movs r0, 0x58 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x28] - mov r8, r1 - cmp r0, 0 - beq _0803E384 - adds r0, r3, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E37C - ldr r0, =gBattleResults - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0, 0x22] - b _0803E384 - .pool -_0803E37C: - ldr r0, =gBattleResults - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0, 0x24] -_0803E384: - mov r1, r8 - ldrb r0, [r1] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gSideTimers - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r1 - ldrb r0, [r5, 0x8] - cmp r0, 0 - beq _0803E400 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _0803E400 - mov r3, r8 - ldrb r0, [r3] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5, 0x9] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E400 - ldr r1, =gBattleMons - ldrb r2, [r5, 0x9] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0803E400 - ldr r0, =gBankTarget - strb r2, [r0] - b _0803E76A - .pool -_0803E400: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - ldr r5, =gBankAttacker - mov r8, r5 - cmp r0, 0 - bne _0803E412 - b _0803E6E0 -_0803E412: - ldr r1, =gSideTimers - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x8] - cmp r5, 0 - beq _0803E424 - b _0803E630 -_0803E424: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0803E440 - ldrb r0, [r4, 0x6] - cmp r0, 0x10 - bne _0803E440 - b _0803E630 -_0803E440: - ldr r3, =gBattleMons - ldr r2, =gBankAttacker - ldrb r6, [r2] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, r6, r0 - ldrb r1, [r0, 0xC] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0x1F - bne _0803E460 - b _0803E630 -_0803E460: - ldrb r0, [r4, 0x2] - cmp r0, 0xD - beq _0803E468 - b _0803E630 -_0803E468: - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gActiveBank - strb r5, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bcs _0803E4E0 - adds r4, r1, 0 -_0803E480: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _0803E4CE - ldr r0, =gBankAttacker - ldrb r1, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r0 - ldrb r0, [r1, 0xC] - ldrb r1, [r4] - cmp r0, r1 - beq _0803E4CE - ldr r1, =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1F - bne _0803E4CE - adds r0, r2, 0 - bl BankGetTurnOrder - lsls r0, 24 - lsrs r0, 24 - ldr r3, [sp] - cmp r0, r3 - bcs _0803E4CE - ldrb r0, [r4] - bl BankGetTurnOrder - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] -_0803E4CE: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803E480 -_0803E4E0: - ldr r5, [sp] - cmp r5, 0x4 - beq _0803E4E8 - b _0803E5E2 -_0803E4E8: - ldr r2, =gBattleMoves - ldr r0, =gLastUsedMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - ands r5, r0 - cmp r5, 0 - beq _0803E568 - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E548 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803E544 - movs r0, 0x1 - b _0803E55A - .pool -_0803E544: - movs r0, 0x3 - b _0803E55A -_0803E548: - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803E558 - movs r0, 0 - b _0803E55A -_0803E558: - movs r0, 0x2 -_0803E55A: - bl GetBankByIdentity - ldr r1, =gBankTarget - strb r0, [r1] - b _0803E578 - .pool -_0803E568: - ldr r2, =gBankTarget - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r2] -_0803E578: - ldr r7, =gAbsentBankFlags - ldrb r0, [r7] - ldr r1, =gBitTable - mov r8, r1 - ldr r5, =gBankTarget - ldrb r1, [r5] - lsls r1, 2 - add r1, r8 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _0803E592 - b _0803E76A -_0803E592: - ldr r6, =gBankAttacker - ldrb r0, [r6] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E5C4 - ldrb r0, [r5] - b _0803E758 - .pool -_0803E5C4: - ldrb r0, [r6] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - strb r0, [r5] - ldrb r1, [r7] - ldrb r2, [r5] - lsls r0, r2, 2 - add r0, r8 - b _0803E74E -_0803E5E2: - ldr r4, =gActiveBank - ldr r0, =gBanksByTurnOrder - ldr r3, [sp] - adds r0, r3, r0 - ldrb r0, [r0] - strb r0, [r4] - ldrb r0, [r4] - ldr r2, =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r1, r2 - adds r1, 0x20 - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r2, =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r1, =gBankTarget - ldrb r0, [r4] - strb r0, [r1] - b _0803E76A - .pool -_0803E630: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r4, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0803E6E0 - ldr r2, =gBattleMoves - ldr r0, =gLastUsedMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803E6E0 - mov r5, r8 - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E684 - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0803E680 - movs r0, 0x1 - b _0803E696 - .pool -_0803E680: - movs r0, 0x3 - b _0803E696 -_0803E684: - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0803E694 - movs r0, 0 - b _0803E696 -_0803E694: - movs r0, 0x2 -_0803E696: - bl GetBankByIdentity - ldr r1, =gBankTarget - strb r0, [r1] - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldr r5, =gBankTarget - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803E76A - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E76A - ldrb r0, [r5] - b _0803E758 - .pool -_0803E6E0: - ldr r5, =gBankTarget - mov r2, r8 - ldrb r0, [r2] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r5] - ldr r6, =gAbsentBankFlags - ldrb r1, [r6] - ldr r7, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803E76A - ldrb r0, [r2] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E730 - ldrb r0, [r5] - b _0803E758 - .pool -_0803E730: - mov r1, r8 - ldrb r0, [r1] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - strb r0, [r5] - ldrb r1, [r6] - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r7 -_0803E74E: - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803E76A - adds r0, r2, 0 -_0803E758: - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - strb r0, [r5] -_0803E76A: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 10 - ands r1, r2 - adds r5, r0, 0 - cmp r1, 0 - beq _0803E808 - ldr r0, =gProtectStructs - ldr r4, =gBankAttacker - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x2] - lsls r0, 27 - cmp r0, 0 - bge _0803E808 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0803E7B4 - ldr r1, =gFightStateTracker - movs r0, 0xC - b _0803E83C - .pool -_0803E7B4: - ldr r3, =gUnknown_02024230 - lsls r0, r2, 2 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0 - beq _0803E7EC - ldr r1, =gBattleCommunication - movs r2, 0 - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldrb r0, [r4] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r3 - str r2, [r0] - b _0803E824 - .pool -_0803E7EC: - ldr r1, =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =BattleScript_MoveUsedLoafingAround - str r0, [r1] - b _0803E824 - .pool -_0803E808: - ldr r4, =gBattlescriptCurrInstr - ldr r3, =gBattleScriptsForMoveEffects - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] -_0803E824: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0803E838 - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl sub_81A56E8 -_0803E838: - ldr r1, =gFightStateTracker - movs r0, 0xA -_0803E83C: - strb r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803E0B8 - - thumb_func_start bs2_8016374 -bs2_8016374: @ 803E868 - push {r4,lr} - ldr r3, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldr r0, =gBattle_BG0_X - movs r2, 0 - strh r2, [r0] - ldr r0, =gBattle_BG0_Y - strh r2, [r0] - ldr r1, =gActionSelectionCursor - ldrb r0, [r3] - adds r0, r1 - strb r2, [r0] - ldr r1, =gMoveSelectionCursor - ldrb r0, [r3] - adds r0, r1 - strb r2, [r0] - ldr r2, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x7 - strb r0, [r2, 0x1] - ldrb r4, [r3] - strb r4, [r2, 0x2] - ldrb r0, [r3] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x58 - ldrb r0, [r0] - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - ldr r0, =gBattleScripting - strb r4, [r0, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAB15 - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - ldr r1, =gBattleResults - ldrb r0, [r1, 0x2] - cmp r0, 0xFE - bhi _0803E8CE - adds r0, 0x1 - strb r0, [r1, 0x2] -_0803E8CE: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end bs2_8016374 - - thumb_func_start sub_803E90C -sub_803E90C: @ 803E90C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, =gBankAttacker - ldr r2, =gBankTarget - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r4] - ldr r0, =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG0_Y - strh r1, [r0] - ldrb r0, [r4] - bl sub_8045868 - ldr r5, =gLastUsedItem - ldr r2, =gBattleBufferB - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - strh r3, [r5] - cmp r3, 0xC - bhi _0803E998 - ldr r2, =gBattlescriptCurrInstr - ldr r1, =gUnknown_082DBD08 - ldrh r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, =gFightStateTracker - mov r10, r0 - b _0803EBF6 - .pool -_0803E998: - adds r0, r3, 0 - subs r0, 0x50 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0803E9C0 - ldr r0, =gBattlescriptCurrInstr - ldr r1, =gUnknown_082DBD54 - ldr r1, [r1] - str r1, [r0] - ldr r1, =gFightStateTracker - mov r10, r1 - b _0803EBF6 - .pool -_0803E9C0: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E9E8 - ldr r0, =gBattlescriptCurrInstr - ldr r1, =gUnknown_082DBD3C - ldr r1, [r1] - str r1, [r0] - ldr r2, =gFightStateTracker - mov r10, r2 - b _0803EBF6 - .pool -_0803E9E8: - ldr r3, =gBattleScripting - ldrb r0, [r4] - strb r0, [r3, 0x17] - lsls r0, 24 - lsrs r0, 25 - ldr r2, =gBattleStruct - ldr r1, [r2] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - subs r0, 0x1 - mov r8, r4 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - mov r12, r3 - adds r7, r2, 0 - ldr r2, =gFightStateTracker - mov r10, r2 - cmp r0, 0x4 - bls _0803EA14 - b _0803EBDE -_0803EA14: - lsls r0, 2 - ldr r1, =_0803EA38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803EA38: - .4byte _0803EBDE - .4byte _0803EBDE - .4byte _0803EA4C - .4byte _0803EAE0 - .4byte _0803EBB0 -_0803EA4C: - ldr r5, =gBattleCommunication - movs r0, 0 - strb r0, [r5, 0x5] - ldr r2, =gBankAttacker - ldrb r0, [r2] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _0803EA98 - movs r0, 0x3E - ands r0, r1 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - ldr r2, =gFightStateTracker - mov r10, r2 - cmp r0, 0 - bne _0803EA7E - b _0803EBDE -_0803EA7E: - movs r0, 0x5 - strb r0, [r5, 0x5] - b _0803EBDE - .pool -_0803EA98: - ldr r0, =gBattlescriptCurrInstr - mov r9, r0 - ldr r6, =gUnknown_082DBD3C - ldr r1, =gFightStateTracker - mov r10, r1 - mov r4, r8 - adds r3, r7, 0 - adds r2, r5, 0 -_0803EAA8: - ldrb r1, [r4] - lsrs r1, 1 - ldr r0, [r3] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldrb r0, [r2, 0x5] - adds r0, 0x1 - strb r0, [r2, 0x5] - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803EAA8 - b _0803EBDE - .pool -_0803EAE0: - ldr r3, =gBattleCommunication - movs r0, 0x4 - strb r0, [r3, 0x5] - ldr r2, =gBankAttacker - ldrb r0, [r2] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r6, r0, 0 - adds r6, 0xC6 - ldrb r1, [r6] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r8, r2 - cmp r5, 0 - beq _0803EB28 - movs r0, 0x5 - strb r0, [r3, 0x5] - ldr r2, =gBattlescriptCurrInstr - mov r9, r2 - ldr r6, =gUnknown_082DBD3C - ldr r0, =gFightStateTracker - mov r10, r0 - b _0803EBDE - .pool -_0803EB28: - ldr r3, =gBattleTextBuff1 - movs r4, 0xFD - strb r4, [r3] - movs r0, 0x5 - strb r0, [r3, 0x1] - movs r2, 0x1 - strb r2, [r3, 0x2] - movs r0, 0xFF - strb r0, [r3, 0x3] - ldr r1, =gBattleTextBuff2 - strb r4, [r1] - strb r5, [r1, 0x1] - movs r0, 0xD2 - strb r0, [r1, 0x2] - strb r5, [r1, 0x3] - subs r0, 0xD3 - strb r0, [r1, 0x4] - ldrb r0, [r6] - ands r2, r0 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - ldr r0, =gFightStateTracker - mov r10, r0 - cmp r2, 0 - bne _0803EB8C - mov r5, r8 - adds r4, r7, 0 - adds r2, r3, 0 -_0803EB62: - ldrb r1, [r5] - lsrs r1, 1 - ldr r0, [r4] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldrb r0, [r2, 0x2] - adds r0, 0x1 - strb r0, [r2, 0x2] - ldrb r0, [r5] - lsrs r0, 1 - ldr r1, [r4] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803EB62 -_0803EB8C: - ldrb r0, [r3, 0x2] - adds r0, 0xE - movs r1, 0 - mov r2, r12 - strb r0, [r2, 0x10] - strb r1, [r2, 0x11] - b _0803EBDE - .pool -_0803EBB0: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803EBCC - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0803EBD0 - .pool -_0803EBCC: - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] -_0803EBD0: - ldr r0, =gBankAttacker - mov r8, r0 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - ldr r2, =gFightStateTracker - mov r10, r2 -_0803EBDE: - mov r1, r8 - ldrb r0, [r1] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - mov r2, r9 - str r0, [r2] -_0803EBF6: - movs r0, 0xA - mov r1, r10 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803E90C - - thumb_func_start CanRunFromBattle -CanRunFromBattle: @ 803EC20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0803EC54 - ldr r1, =gEnigmaBerries - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x7] - b _0803EC5E - .pool -_0803EC54: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r1, r0, 24 -_0803EC5E: - ldr r0, =gStringBank - strb r5, [r0] - cmp r1, 0x25 - bne _0803EC9C - ldr r2, =gLastUsedItem - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r2] - ldr r0, =gProtectStructs - lsls r2, r5, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2, 0x1] - b _0803ED70 - .pool -_0803EC9C: - ldr r0, =gBattleMons - mov r10, r0 - movs r2, 0x58 - mov r9, r2 - mov r0, r9 - muls r0, r5 - add r0, r10 - mov r8, r0 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x32 - bne _0803ED5C - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _0803ED38 - ldr r4, =gBattleStruct - ldr r1, [r4] - adds r1, 0x6C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_81A9E28 - lsls r0, 24 - lsrs r1, r0, 24 - mov r2, r8 - ldrh r0, [r2, 0x6] - muls r0, r1 - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - add r1, r10 - ldrh r1, [r1, 0x6] - bl __divsi3 - ldr r1, [r4] - adds r1, 0x6C - ldrb r2, [r1] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 1 - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - movs r1, 0xFF - ands r1, r0 - cmp r4, r1 - bhi _0803ED0C - b _0803EE12 -_0803ED0C: - ldr r0, =gLastUsedAbility - strb r6, [r0] - ldr r0, =gProtectStructs - lsls r2, r5, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x1] - b _0803ED70 - .pool -_0803ED38: - ldr r0, =gLastUsedAbility - strb r6, [r0] - ldr r0, =gProtectStructs - lsls r2, r5, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x1] - b _0803ED70 - .pool -_0803ED5C: - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - ldr r0, =0x043f0100 - ands r0, r2 - cmp r0, 0 - beq _0803ED80 - movs r0, 0x8 - ands r2, r0 - cmp r2, 0 - beq _0803ED80 -_0803ED70: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - b _0803EE12 - .pool -_0803ED80: - ldr r0, [r1] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803EE06 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _0803EDBC - bl sub_81A9E28 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r4, =gBattleMons - movs r3, 0x58 - adds r0, r5, 0 - muls r0, r3 - adds r0, r4 - ldrh r0, [r0, 0x6] - muls r0, r1 - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - muls r1, r3 - adds r1, r4 - b _0803EDDA - .pool -_0803EDBC: - ldr r3, =gBattleMons - movs r2, 0x58 - adds r0, r5, 0 - muls r0, r2 - adds r4, r0, r3 - movs r1, 0x1 - adds r0, r5, 0 - eors r0, r1 - muls r0, r2 - adds r1, r0, r3 - ldrh r0, [r4, 0x6] - ldrh r2, [r1, 0x6] - cmp r0, r2 - bcs _0803EE00 - lsls r0, 7 -_0803EDDA: - ldrh r1, [r1, 0x6] - bl __divsi3 - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, 0x6C - ldrb r2, [r1] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 1 - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - movs r1, 0xFF - ands r1, r0 - cmp r4, r1 - bls _0803EE06 -_0803EE00: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_0803EE06: - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, 0x6C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0803EE12: - cmp r7, 0 - beq _0803EE24 - ldr r1, =gCurrentMoveTurn - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r1] - ldr r1, =gBattleOutcome - movs r0, 0x4 - strb r0, [r1] -_0803EE24: - adds r0, r7, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end CanRunFromBattle - thumb_func_start sub_803EE48 sub_803EE48: @ 803EE48 push {r4-r6,lr} ldr r4, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r5, =gCurrentMoveTurn + ldr r5, =gCurrentTurnActionNumber ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] @@ -2671,19 +92,19 @@ _0803EF0C: cmp r0, 0 bne _0803EF4C ldrb r0, [r4] - bl CanRunFromBattle + bl TryRunFromBattle lsls r0, 24 cmp r0, 0 bne _0803EF98 ldrb r0, [r4] - bl sub_8045868 + bl ClearFuryCutterDestinyBondGrudge ldr r1, =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x5] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAB02 str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA b _0803EF96 .pool @@ -2705,7 +126,7 @@ _0803EF4C: ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAB02 str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA b _0803EF96 .pool @@ -2728,7 +149,7 @@ _0803EF98: sub_803EFA8: @ 803EFA8 ldr r2, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn + ldr r0, =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -2742,7 +163,7 @@ sub_803EFA8: @ 803EFA8 ldr r0, =gUnknown_082DBD58 ldr r0, [r0] str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] bx lr @@ -2753,7 +174,7 @@ sub_803EFA8: @ 803EFA8 bs5_8016AC0: @ 803EFF0 ldr r2, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn + ldr r0, =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -2771,10 +192,10 @@ bs5_8016AC0: @ 803EFF0 movs r0, 0x5 strh r0, [r1] ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD08 + ldr r0, =gBattlescriptsForBallThrow ldr r0, [r0, 0x14] str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] bx lr @@ -2786,7 +207,7 @@ sub_803F050: @ 803F050 push {r4-r6,lr} ldr r3, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn + ldr r0, =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -2859,7 +280,7 @@ _0803F100: ldr r0, =gUnknown_082DBD58 ldr r0, [r0, 0x8] str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] pop {r4-r6} @@ -2873,7 +294,7 @@ sub_803F120: @ 803F120 push {r4,lr} ldr r2, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn + ldr r0, =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -2945,7 +366,7 @@ _0803F1CA: ldr r0, =gUnknown_082DBD58 ldr r0, [r0, 0x4] str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] pop {r4} @@ -2959,7 +380,7 @@ bs8_exit_by_flight: @ 803F1F0 push {r4,lr} ldr r2, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r4, =gCurrentMoveTurn + ldr r4, =gCurrentTurnActionNumber ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -2982,7 +403,7 @@ bs8_exit_by_flight: @ 803F1F0 bs9_8016C9C: @ 803F22C ldr r3, =gBankAttacker ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentMoveTurn + ldr r0, =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -3010,7 +431,7 @@ bs9_8016C9C: @ 803F22C ldr r0, =gUnknown_082DBD58 ldr r0, [r0, 0xC] str r0, [r1] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] ldr r1, =gActionsByTurnOrder @@ -3032,7 +453,7 @@ bsB_exit_by_move: @ 803F2A4 ldr r0, [r0] adds r0, 0x4D strb r1, [r0] - ldr r1, =gFightStateTracker + ldr r1, =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] _0803F2C0: @@ -3043,11 +464,11 @@ _0803F2C0: thumb_func_start bsD_proceed bsD_proceed: @ 803F2CC - ldr r1, =gCurrentMoveTurn + ldr r1, =gCurrentTurnActionNumber ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - ldr r3, =gFightStateTracker + ldr r3, =gCurrentActionFuncId ldr r2, =gActionsByTurnOrder ldrb r0, [r1] adds r0, r2 @@ -3066,7 +487,7 @@ bsD_proceed: @ 803F2CC bsC_8016D70: @ 803F300 push {r4-r6,lr} ldr r1, =gBanksByTurnOrder - ldr r2, =gCurrentMoveTurn + ldr r2, =gCurrentTurnActionNumber ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -3079,7 +500,7 @@ bsC_8016D70: @ 803F300 ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] - ldr r3, =gFightStateTracker + ldr r3, =gCurrentActionFuncId ldr r1, =gActionsByTurnOrder ldrb r0, [r2] adds r0, r1 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 8894037877..e5e9aaab9e 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -68,7 +68,7 @@ _0813DA00: adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 - bl evolution_cutscene + bl EvolutionScene _0813DA30: add sp, 0x4 pop {r4-r7} @@ -77,8 +77,8 @@ _0813DA30: .pool thumb_func_end sub_813D9C0 - thumb_func_start sub_813DA40 -sub_813DA40: @ 813DA40 + thumb_func_start BeginEvolutionScene +BeginEvolutionScene: @ 813DA40 push {r4-r6,lr} adds r4, r1, 0 adds r5, r2, 0 @@ -110,10 +110,10 @@ sub_813DA40: @ 813DA40 pop {r0} bx r0 .pool - thumb_func_end sub_813DA40 + thumb_func_end BeginEvolutionScene - thumb_func_start evolution_cutscene -evolution_cutscene: @ 813DA8C + thumb_func_start EvolutionScene +EvolutionScene: @ 813DA8C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -393,7 +393,7 @@ evolution_cutscene: @ 813DA8C pop {r0} bx r0 .pool - thumb_func_end evolution_cutscene + thumb_func_end EvolutionScene thumb_func_start sub_813DD7C sub_813DD7C: @ 813DD7C diff --git a/asm/party_menu.s b/asm/party_menu.s index 4eb080b136..a881d45890 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -13868,7 +13868,7 @@ sub_81B7810: @ 81B7810 adds r0, r7, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_813DA40 + bl BeginEvolutionScene adds r0, r5, 0 bl DestroyTask b _081B786E diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s index 5dc6452e9c..49b2059671 100644 --- a/asm/pokemon_item_effect.s +++ b/asm/pokemon_item_effect.s @@ -221,7 +221,7 @@ _0806BEE0: mov r0, r8 movs r2, 0 ldr r3, [sp, 0x10] - bl sub_813DA40 + bl BeginEvolutionScene movs r0, 0 bl _0806CD5C _0806BEF0: diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0b797feef6..faa945bddb 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -45,34 +45,34 @@ gUnknown_082DA7C4:: @ 82DA7C4 gUnknown_082DA7CD:: @ 82DA7CD .incbin "baserom.gba", 0x2da7cd, 0x160 -gUnknown_082DA92D:: @ 82DA92D +BattleScript_LocalTrainerBattleWon:: @ 82DA92D .incbin "baserom.gba", 0x2da92d, 0x3d -gUnknown_082DA96A:: @ 82DA96A +BattleScript_PayDayMoneyAndPickUpItems:: @ 82DA96A .incbin "baserom.gba", 0x2da96a, 0x3 -gUnknown_082DA96D:: @ 82DA96D +BattleScript_LocalBattleLost:: @ 82DA96D .incbin "baserom.gba", 0x2da96d, 0x9e gUnknown_082DAA0B:: @ 82DAA0B .incbin "baserom.gba", 0x2daa0b, 0x2a -gUnknown_082DAA35:: @ 82DAA35 +BattleScript_LinkBattleWonOrLost:: @ 82DAA35 .incbin "baserom.gba", 0x2daa35, 0x52 -gUnknown_082DAA87:: @ 82DAA87 +BattleScript_FrontierTrainerBattleWon:: @ 82DAA87 .incbin "baserom.gba", 0x2daa87, 0x54 -gUnknown_082DAADB:: @ 82DAADB +BattleScript_SmokeBallEscape:: @ 82DAADB .incbin "baserom.gba", 0x2daadb, 0xe -gUnknown_082DAAE9:: @ 82DAAE9 +BattleScript_RanAwayUsingMonAbility:: @ 82DAAE9 .incbin "baserom.gba", 0x2daae9, 0x7 -gUnknown_082DAAF0:: @ 82DAAF0 +BattleScript_GotAwaySafely:: @ 82DAAF0 .incbin "baserom.gba", 0x2daaf0, 0x7 -gUnknown_082DAAF7:: @ 82DAAF7 +BattleScript_WildMonFled:: @ 82DAAF7 .incbin "baserom.gba", 0x2daaf7, 0x7 gUnknown_082DAAFE:: @ 82DAAFE @@ -87,7 +87,7 @@ gUnknown_082DAB0B:: @ 82DAB0B gUnknown_082DAB11:: @ 82DAB11 .incbin "baserom.gba", 0x2dab11, 0x4 -gUnknown_082DAB15:: @ 82DAB15 +BattleScript_ActionSwitch:: @ 82DAB15 .incbin "baserom.gba", 0x2dab15, 0xa4 BattleScript_Pausex20:: @ 82DABB9 @@ -255,7 +255,7 @@ BattleScript_OneHitKOMsg:: @ 82DB1CE BattleScript_SAtkDown2:: @ 82DB1D5 .incbin "baserom.gba", 0x2db1d5, 0x2a -gUnknown_082DB1FF:: @ 82DB1FF +BattleScript_FocusPunchSetUp:: @ 82DB1FF .incbin "baserom.gba", 0x2db1ff, 0x14 BattleScript_MoveUsedIsAsleep:: @ 82DB213 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index adabccb88c..985c09b23c 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -4,7 +4,7 @@ .section script_data, "aw", %progbits .align 2 -gUnknown_082DBD08:: @ 82DBD08 +gBattlescriptsForBallThrow:: @ 82DBD08 .4byte gUnknown_082DBD68 .4byte gUnknown_082DBD68 .4byte gUnknown_082DBD68 @@ -29,8 +29,8 @@ gUnknown_082DBD3C:: @ 82DBD3C .4byte gUnknown_082DBE91 .align 2 -gUnknown_082DBD54:: @ 82DBD54 - .4byte gUnknown_082DBEB3 +gBattlescriptsForRunningByItem:: @ 82DBD54 + .4byte BattleScript_RunByUsingItem .align 2 gUnknown_082DBD58:: @ 82DBD58 @@ -72,7 +72,7 @@ gUnknown_082DBE6F:: @ 82DBE6F gUnknown_082DBE91:: @ 82DBE91 .incbin "baserom.gba", 0x2dbe91, 0x22 -gUnknown_082DBEB3:: @ 82DBEB3 +BattleScript_RunByUsingItem:: @ 82DBEB3 .incbin "baserom.gba", 0x2dbeb3, 0xA gUnknown_082DBEBD:: @ 82DBEBD diff --git a/data/data2b.s b/data/data2b.s index 96d56c820c..717b70d4dc 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -226,10 +226,10 @@ gTrainerMoneyTable:: @ 831AEB8 @ 831BAD4 .include "data/text/ability_description_pointers.inc" -gUnknown_0831BC0C:: @ 831BC0C +gTurnActionsFuncsTable:: @ 831BC0C .incbin "baserom.gba", 0x31bc0c, 0x38 -gUnknown_0831BC44:: @ 831BC44 +gEndTurnFuncsTable:: @ 831BC44 .incbin "baserom.gba", 0x31bc44, 0x2c gStatusConditionString_PoisonJpn:: @ 831BC70 diff --git a/include/battle.h b/include/battle.h index 7c8d89e57b..639558e60b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -56,6 +56,7 @@ #define BATTLE_TYPE_RAYQUAZA 0x40000000 #define BATTLE_TYPE_x80000000 0x80000000 +#define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 #define TRAINER_OPPONENT_800 0x800 #define STEVEN_PARTNER_ID 0xC03 @@ -71,8 +72,11 @@ #define BATTLE_PLAYER_TELEPORTED 0x5 #define BATTLE_POKE_FLED 0x6 #define BATTLE_CAUGHT 0x7 +#define BATTLE_FORFEITED 0x9 #define BATTLE_OPPONENT_TELEPORTED 0xA +#define BATTLE_OUTCOME_BIT_x80 0x80 + #define STATUS_SLEEP 0x7 #define STATUS_POISON 0x8 #define STATUS_BURN 0x10 @@ -171,8 +175,10 @@ #define ACTION_GO_NEAR 7 #define ACTION_SAFARI_ZONE_RUN 8 #define ACTION_9 9 -#define ACTION_CANCEL_PARTNER 12 -#define ACTION_NOTHING_FAINTED 13 +#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action +#define ACTION_CANCEL_PARTNER 12 // when choosing an action +#define ACTION_FINISHED 12 // when executing an action +#define ACTION_NOTHING_FAINTED 13 // when choosing an action #define ACTION_INIT_VALUE 0xFF #define ABILITYEFFECT_ON_SWITCHIN 0x0 @@ -559,22 +565,19 @@ struct BattleResults u8 playerSwitchesCounter; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 - u8 unk5_0:1; // 0x5 - u8 unk5_1:1; // 0x5 - u8 caughtMonBall:4; // 0x5 - u8 unk5_6:1; // 0x5 - u8 unk5_7:1; // 0x5 - u16 poke1Species; // 0x6 - u8 pokeString1[10]; // 0x8 - u8 unk12; + u8 unk5_0:1; // 0x5 , 0x1 + u8 unk5_1:1; // 0x5 , 0x2 + u8 caughtMonBall:4; // 0x5 , 0x4/0x8/0x10/0x20 + u8 unk5_6:1; // 0x5 , 0x40 + u8 unk5_7:1; // 0x5 , 0x80 + u16 playerMon1Species; // 0x6 + u8 playerMon1Name[11]; // 0x8 u8 battleTurnCounter; // 0x13 - u8 pokeString2[10]; // 0x14 - u8 field_1E; // 0x1E - u8 field_1F; // 0x1F + u8 playerMon2Name[11]; // 0x14 u16 lastOpponentSpecies; // 0x20 - u16 lastUsedMove; // 0x22 - u16 opponentMove; // 0x24 - u16 opponentSpecies; // 0x26 + u16 lastUsedMovePlayer; // 0x22 + u16 lastUsedMoveOpponent; // 0x24 + u16 playerMon2Species; // 0x26 u16 caughtMonSpecies; // 0x28 u8 caughtMonNick[10]; // 0x2A u8 filler34[2]; @@ -605,7 +608,7 @@ struct BattleStruct u8 field_45; u8 field_46; u8 field_47; - u8 field_48; + u8 focusPunchBank; u8 field_49; u8 moneyMultiplier; u8 field_4B; @@ -620,7 +623,7 @@ struct BattleStruct u8 field_58[4]; u8 field_5C[4]; u8 field_60[4][3]; - u8 field_6C; + u8 runTries; u8 caughtMonNick[11]; u8 field_78; u8 field_79; @@ -630,7 +633,7 @@ struct BattleStruct u8 field_7D; u8 field_7E; u8 formToChangeInto; - u8 chosenMovesIds[BATTLE_BANKS_COUNT]; + u8 chosenMovePositions[BATTLE_BANKS_COUNT]; u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT]; u8 field_88; u8 field_89; @@ -665,7 +668,9 @@ struct BattleStruct u8 field_B3; void (*savedCallback)(void); u16 usedHeldItems[BATTLE_BANKS_COUNT]; - u8 field_C0[8]; + u8 field_C0[4]; + u8 field_C4[2]; + u8 field_C6[2]; u16 choicedMove[BATTLE_BANKS_COUNT]; u16 changedItems[BATTLE_BANKS_COUNT]; u8 intimidateBank; @@ -818,6 +823,7 @@ extern struct BattleStruct* gBattleStruct; #define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 #define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_CAN_RUN_FROM_BATTLE 2 #define VARIOUS_GET_MOVE_TARGET 3 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 @@ -901,13 +907,15 @@ void sub_803FA70(u8 bank); void BattleMainCB2(void); void VBlankCB_Battle(void); void ResetSentPokesToOpponentValue(void); -bool8 CanRunFromBattle(u8 bank); +bool8 TryRunFromBattle(u8 bank); bool8 IsRunningFromBattleImpossible(void); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); void SwapTurnOrder(u8, u8); void BattleTurnPassed(void); +void RunBattleScriptCommands_PopCallbacksStack(void); +void RunBattleScriptCommands(void); // battle_3 #define MOVE_LIMITATION_ZEROMOVE (1 << 0) @@ -928,7 +936,7 @@ u8 UpdateTurnCounters(void); u8 TurnBasedEffects(void); bool8 sub_8041364(void); bool8 sub_8041728(void); -void b_clear_atk_up_if_hit_flag_unless_enraged(void); +void TryClearRageStatuses(void); u8 AtkCanceller_UnableToUseMove(void); bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); u8 CastformDataTypeChange(u8 bank); @@ -936,7 +944,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) void BattleScriptExecute(const u8* BS_ptr); void BattleScriptPushCursorAndCallback(const u8* BS_ptr); u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -void sub_8045868(u8 bank); +void ClearFuryCutterDestinyBondGrudge(u8 bank); void sub_80458B4(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsPokeDisobedient(void); diff --git a/include/evolution_scene.h b/include/evolution_scene.h new file mode 100644 index 0000000000..48bd6ebe1d --- /dev/null +++ b/include/evolution_scene.h @@ -0,0 +1,10 @@ +#ifndef GUARD_EVOLUTION_SCENE_H +#define GUARD_EVOLUTION_SCENE_H + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); + +extern void (*gCB2_AfterEvolution)(void); + +#endif // GUARD_EVOLUTION_SCENE_H diff --git a/include/pokemon.h b/include/pokemon.h index 5d97c16665..c41099b095 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -634,6 +634,12 @@ bool16 sub_806D82C(u8 id); u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); void sub_8068AA4(void); // sets stats for deoxys bool8 HasTwoFramesAnimation(u16 species); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +void RandomlyGivePartyPokerus(struct Pokemon *party); +u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); +u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); +void UpdatePartyPokerusTime(u16 days); +void PartySpreadPokerus(struct Pokemon *party); #include "sprite.h" diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 2df1620e40..65ad998e6a 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -14,5 +14,6 @@ u8 sub_8185FB8(void); u8 MoveRecordedBattleToSaveData(void); void sub_818603C(u8); void sub_8185FD0(void); +void sub_8186444(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/include/songs.h b/include/songs.h index d828e40688..5a1fff00cb 100644 --- a/include/songs.h +++ b/include/songs.h @@ -252,23 +252,23 @@ enum SE_W114, SE_W063B, BGM_STOP = 349, - BGM_TETSUJI, - BGM_FIELD13, - BGM_KACHI22, - BGM_KACHI2, - BGM_KACHI3, - BGM_KACHI5, - BGM_PCC, - BGM_NIBI, - BGM_SUIKUN, - BGM_DOORO1, - BGM_DOORO_X1, - BGM_DOORO_X3, - BGM_MACHI_S2, - BGM_MACHI_S4, - BGM_GIM, - BGM_NAMINORI, - BGM_DAN01, + /*0x15E*/ BGM_TETSUJI, + /*0x15F*/ BGM_FIELD13, + /*0x160*/ BGM_KACHI22, + /*0x161*/ BGM_KACHI2, + /*0x162*/ BGM_KACHI3, + /*0x163*/ BGM_KACHI5, + /*0x164*/ BGM_PCC, + /*0x165*/ BGM_NIBI, + /*0x166*/ BGM_SUIKUN, + /*0x167*/ BGM_DOORO1, + /*0x168*/ BGM_DOORO_X1, + /*0x169*/ BGM_DOORO_X3, + /*0x16A*/ BGM_MACHI_S2, + /*0x16B*/ BGM_MACHI_S4, + /*0x16C*/ BGM_GIM, + /*0x16D*/ BGM_NAMINORI, + /*0x16E*/ BGM_DAN01, /*0x16F*/ BGM_FANFA1, /*0x170*/ BGM_ME_ASA, /*0x171*/ BGM_ME_BACHI, @@ -306,31 +306,31 @@ enum /*0x191*/ BGM_NEXTROAD, /*0x192*/ BGM_GRANROAD, /*0x193*/ BGM_CYCLING, - BGM_FRIENDLY, - BGM_MISHIRO, - BGM_TOZAN, - BGM_GIRLEYE, - BGM_MINAMO, - BGM_ASHROAD, - BGM_EVENT0, - BGM_DEEPDEEP, - BGM_KACHI1, - BGM_TITLE3, - BGM_DEMO1, - BGM_GIRL_SUP, - BGM_HAGESHII, - BGM_KAKKOII, - BGM_KAZANBAI, - BGM_AQA_0, - BGM_TSURETEK, - BGM_BOY_SUP, - BGM_RAINBOW, - BGM_AYASII, - BGM_KACHI4, - BGM_ROPEWAY, - BGM_CASINO, - BGM_HIGHTOWN, - BGM_SAFARI, + /*0x194*/ BGM_FRIENDLY, + /*0x195*/ BGM_MISHIRO, + /*0x196*/ BGM_TOZAN, + /*0x197*/ BGM_GIRLEYE, + /*0x198*/ BGM_MINAMO, + /*0x199*/ BGM_ASHROAD, + /*0x19A*/ BGM_EVENT0, + /*0x19B*/ BGM_DEEPDEEP, + /*0x19C*/ BGM_KACHI1, + /*0x19D*/ BGM_TITLE3, + /*0x19E*/ BGM_DEMO1, + /*0x19F*/ BGM_GIRL_SUP, + /*0x1A0*/ BGM_HAGESHII, + /*0x1A1*/ BGM_KAKKOII, + /*0x1A2*/ BGM_KAZANBAI, + /*0x1A3*/ BGM_AQA_0, + /*0x1A4*/ BGM_TSURETEK, + /*0x1A5*/ BGM_BOY_SUP, + /*0x1A6*/ BGM_RAINBOW, + /*0x1A7*/ BGM_AYASII, + /*0x1A8*/ BGM_KACHI4, + /*0x1A9*/ BGM_ROPEWAY, + /*0x1AA*/ BGM_CASINO, + /*0x1AB*/ BGM_HIGHTOWN, + /*0x1AC*/ BGM_SAFARI, BGM_C_ROAD, BGM_AJITO, BGM_M_BOAT, diff --git a/src/battle_2.c b/src/battle_2.c index 04907d0c0c..ab1aae7477 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -37,6 +37,9 @@ #include "pokedex.h" #include "abilities.h" #include "moves.h" +#include "trainer_classes.h" +#include "evolution_scene.h" +#include "roamer.h" struct UnknownStruct6 { @@ -80,6 +83,7 @@ extern u16 gTrainerBattleOpponent_B; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern void (*gPreBattleCallback1)(void); extern void (*gBattleMainFunc)(void); +extern void (*gUnknown_030061E8)(void); extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for? extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for? extern u8 gBattleOutcome; @@ -131,13 +135,20 @@ extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT]; extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; -extern u8 gFightStateTracker; +extern u8 gCurrentActionFuncId; extern u8 gLastUsedAbility; extern u16 gLastUsedItem; extern u8 gUnknown_0203CF00[]; extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; extern const u8* gBattlescriptCurrInstr; extern u32 gBattlePalaceMoveSelectionRngValue; +extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gCurrentTurnActionNumber; +extern u16 gDynamicBasePower; +extern u8 gCritMultiplier; +extern u8 gCurrMovePos; +extern u8 gUnknown_020241E9; +extern u16 gLastUsedMove; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const struct BattleMove gBattleMoves[]; @@ -145,6 +156,7 @@ extern const u16 gUnknown_08C004E0[]; // battle textbox palette extern const struct BgTemplate gUnknown_0831AA08[]; extern const struct WindowTemplate * const gUnknown_0831ABA0[]; extern const u8 gUnknown_0831ACE0[]; +extern const u8 gStatStageRatios[][2]; // strings extern const u8 gText_LinkStandby3[]; @@ -163,7 +175,23 @@ extern const u8 gUnknown_082DAB11[]; extern const u8 gUnknown_082DB9BA[]; extern const u8 gUnknown_082DAAFE[]; extern const u8 gUnknown_082DAB0B[]; +extern const u8 BattleScript_FocusPunchSetUp[]; +extern const u8 BattleScript_LinkBattleWonOrLost[]; +extern const u8 BattleScript_FrontierTrainerBattleWon[]; +extern const u8 BattleScript_LocalTrainerBattleWon[]; +extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; +extern const u8 BattleScript_LocalBattleLost[]; +extern const u8 gUnknown_082DB9C8[]; +extern const u8 gUnknown_082DAA0B[]; +extern const u8 gUnknown_082DB9C1[]; +extern const u8 BattleScript_RanAwayUsingMonAbility[]; +extern const u8 BattleScript_SmokeBallEscape[]; +extern const u8 BattleScript_GotAwaySafely[]; +extern const u8 BattleScript_WildMonFled[]; +extern const u8 BattleScript_MoveUsedLoafingAround[]; +extern const u8 BattleScript_ActionSwitch[]; +// functions extern void HandleLinkBattleSetup(void); // rom_3 extern void SetUpBattleVarsAndBirchZigzagoon(void); // rom_3 extern void sub_8032768(void); // rom_3 @@ -179,8 +207,13 @@ extern void sub_80B3AF8(u8 taskId); // cable club extern void sub_8076918(u8 bank); extern void sub_80729D0(u8 healthoxSpriteId); extern void sub_81A56B4(void); // battle frontier 2 +extern u8 sub_81A9E28(void); // battle frontier 2 +extern void sub_81A56E8(u8 bank); // battle frontier 2 extern void sub_81B8FB0(u8, u8); // party menu extern u8 pokemon_order_func(u8); // party menu +extern void sub_80EC728(void); // tv +extern void sub_80EE184(void); // tv +extern bool8 InBattlePyramid(void); // this file's functions static void CB2_InitBattleInternal(void); @@ -209,7 +242,7 @@ void sub_8039E9C(struct Sprite *sprite); void SpriteCallbackDummy_3(struct Sprite *sprite); void oac_poke_ally_(struct Sprite *sprite); void SpecialStatusesClear(void); -void TurnValuesCleanUp(u8); +void TurnValuesCleanUp(bool8 var0); static void SpriteCB_HealthBoxBounce(struct Sprite *sprite); static void BattleStartClearSetData(void); static void BattleIntroGetMonsData(void); @@ -226,11 +259,16 @@ static void BattleIntroRecordMonsToDex(void); static void BattleIntroPlayer1SendsOutMonAnimation(void); static void TryDoEventsBeforeFirstTurn(void); void HandleTurnActionSelectionState(void); -void bc_bs_exec(void); +static void RunTurnActionsFunctions(void); static void SetActionsAndBanksTurnOrder(void); void sub_803CDF8(void); bool8 sub_803CDB8(void); -void bc_80154A0(void); +static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void); +void HandleEndTurn_FinishBattle(void); +static void FreeResetData_ReturnToOvOrDoEvolutions(void); +static void ReturnFromBattleToOverworld(void); +static void TryEvolvePokemon(void); +static void WaitForEvoSceneToFinish(void); void CB2_InitBattle(void) { @@ -2645,7 +2683,7 @@ static void BattleStartClearSetData(void) u32 j; u8 *dataPtr; - TurnValuesCleanUp(0); + TurnValuesCleanUp(FALSE); SpecialStatusesClear(); for (i = 0; i < BATTLE_BANKS_COUNT; i++) @@ -2715,7 +2753,7 @@ static void BattleStartClearSetData(void) gBattleScripting.animTargetsHit = 0; gLeveledUpInBattle = 0; gAbsentBankFlags = 0; - gBattleStruct->field_6C = 0; + gBattleStruct->runTries = 0; gBattleStruct->field_79 = 0; gBattleStruct->field_7A = 0; *(&gBattleStruct->field_7C) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; @@ -3568,7 +3606,7 @@ static void TryDoEventsBeforeFirstTurn(void) gActionForBanks[i] = ACTION_INIT_VALUE; gChosenMovesByBanks[i] = MOVE_NONE; } - TurnValuesCleanUp(0); + TurnValuesCleanUp(FALSE); SpecialStatusesClear(); *(&gBattleStruct->field_91) = gAbsentBankFlags; sub_814F9EC(gText_EmptyString3, 0); @@ -3627,7 +3665,7 @@ void BattleTurnPassed(void) { s32 i; - TurnValuesCleanUp(1); + TurnValuesCleanUp(TRUE); if (gBattleOutcome == 0) { if (UpdateTurnCounters() != 0) @@ -3641,7 +3679,7 @@ void BattleTurnPassed(void) if (sub_8041364() != 0) return; - TurnValuesCleanUp(0); + TurnValuesCleanUp(FALSE); gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); gHitMarker &= ~(HITMARKER_x400000); @@ -3657,8 +3695,8 @@ void BattleTurnPassed(void) if (gBattleOutcome != 0) { - gFightStateTracker = 12; - gBattleMainFunc = bc_bs_exec; + gCurrentActionFuncId = 12; + gBattleMainFunc = RunTurnActionsFunctions; return; } @@ -3862,7 +3900,7 @@ void HandleTurnActionSelectionState(void) else if (gDisableStructs[gActiveBank].encoredMove != 0) { gChosenMovesByBanks[gActiveBank] = gDisableStructs[gActiveBank].encoredMove; - *(gBattleStruct->chosenMovesIds + gActiveBank) = gDisableStructs[gActiveBank].encoredMovePos; + *(gBattleStruct->chosenMovePositions + gActiveBank) = gDisableStructs[gActiveBank].encoredMovePos; gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; return; } @@ -4067,8 +4105,8 @@ void HandleTurnActionSelectionState(void) RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][2]); RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][3]); } - *(gBattleStruct->chosenMovesIds + gActiveBank) = gBattleBufferB[gActiveBank][2]; - gChosenMovesByBanks[gActiveBank] = gBattleMons[gActiveBank].moves[*(gBattleStruct->chosenMovesIds + gActiveBank)]; + *(gBattleStruct->chosenMovePositions + gActiveBank) = gBattleBufferB[gActiveBank][2]; + gChosenMovesByBanks[gActiveBank] = gBattleMons[gActiveBank].moves[*(gBattleStruct->chosenMovePositions + gActiveBank)]; *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3]; gBattleCommunication[gActiveBank]++; } @@ -4257,8 +4295,6 @@ void sub_803CDF8(void) } } -extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; - void SwapTurnOrder(u8 id1, u8 id2) { u32 temp = gActionsByTurnOrder[id1]; @@ -4270,8 +4306,6 @@ void SwapTurnOrder(u8 id1, u8 id2) gBanksByTurnOrder[id2] = temp; } -extern const u8 gStatStageRatios[][2]; - u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves) { u8 strikesFirst = 0; @@ -4379,7 +4413,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves) if (gProtectStructs[bank1].onlyStruggle) moveBank1 = MOVE_STRUGGLE; else - moveBank1 = gBattleMons[bank1].moves[*(gBattleStruct->chosenMovesIds + bank1)]; + moveBank1 = gBattleMons[bank1].moves[*(gBattleStruct->chosenMovePositions + bank1)]; } else moveBank1 = MOVE_NONE; @@ -4389,7 +4423,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves) if (gProtectStructs[bank2].onlyStruggle) moveBank2 = MOVE_STRUGGLE; else - moveBank2 = gBattleMons[bank2].moves[*(gBattleStruct->chosenMovesIds + bank2)]; + moveBank2 = gBattleMons[bank2].moves[*(gBattleStruct->chosenMovePositions + bank2)]; } else moveBank2 = MOVE_NONE; @@ -4482,8 +4516,8 @@ static void SetActionsAndBanksTurnOrder(void) var++; } } - gBattleMainFunc = bc_80154A0; - gBattleStruct->field_48 = 0; + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; + gBattleStruct->focusPunchBank = 0; return; } else @@ -4524,6 +4558,820 @@ static void SetActionsAndBanksTurnOrder(void) } } } - gBattleMainFunc = bc_80154A0; - gBattleStruct->field_48 = 0; + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; + gBattleStruct->focusPunchBank = 0; +} + +void TurnValuesCleanUp(bool8 var0) +{ + s32 i; + u8 *dataPtr; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (var0) + { + gProtectStructs[gActiveBank].protected = 0; + gProtectStructs[gActiveBank].endured = 0; + } + else + { + dataPtr = (u8*)(&gProtectStructs[gActiveBank]); + for (i = 0; i < sizeof(struct ProtectStruct); i++) + dataPtr[i] = 0; + + if (gDisableStructs[gActiveBank].isFirstTurn) + gDisableStructs[gActiveBank].isFirstTurn--; + + if (gDisableStructs[gActiveBank].rechargeCounter) + { + gDisableStructs[gActiveBank].rechargeCounter--; + if (gDisableStructs[gActiveBank].rechargeCounter == 0) + gBattleMons[gActiveBank].status2 &= ~(STATUS2_RECHARGE); + } + } + + if (gDisableStructs[gActiveBank].substituteHP == 0) + gBattleMons[gActiveBank].status2 &= ~(STATUS2_SUBSTITUTE); + } + + gSideTimers[0].followmeTimer = 0; + gSideTimers[1].followmeTimer = 0; +} + +void SpecialStatusesClear(void) +{ + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + s32 i; + u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBank]); + + for (i = 0; i < sizeof(struct SpecialStatus); i++) + dataPtr[i] = 0; + } +} + +static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) +{ + if (!(gHitMarker & HITMARKER_x8000)) + { + while (gBattleStruct->focusPunchBank < gNoOfAllBanks) + { + gActiveBank = gBankAttacker = gBattleStruct->focusPunchBank; + gBattleStruct->focusPunchBank++; + if (gChosenMovesByBanks[gActiveBank] == MOVE_FOCUS_PUNCH + && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP) + && !(gDisableStructs[gBankAttacker].truantCounter) + && !(gProtectStructs[gActiveBank].onlyStruggle)) + { + BattleScriptExecute(BattleScript_FocusPunchSetUp); + return; + } + } + } + + TryClearRageStatuses(); + gCurrentTurnActionNumber = 0; +{ + // something stupid needed to match + u8 zero; + gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)]; +} + gDynamicBasePower = 0; + gBattleStruct->dynamicMoveType = 0; + gBattleMainFunc = RunTurnActionsFunctions; + gBattleCommunication[3] = 0; + gBattleCommunication[4] = 0; + gBattleScripting.field_16 = 0; + gBattleResources->battleScriptsStack->size = 0; +} + +extern void (* const gTurnActionsFuncsTable[])(void); +extern void (* const gEndTurnFuncsTable[])(void); + +static void RunTurnActionsFunctions(void) +{ + if (gBattleOutcome != 0) + gCurrentActionFuncId = 12; + + *(&gBattleStruct->field_4B) = gCurrentTurnActionNumber; + gTurnActionsFuncsTable[gCurrentActionFuncId](); + + if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished + { + gHitMarker &= ~(HITMARKER_x100000); + gBattleMainFunc = gEndTurnFuncsTable[gBattleOutcome & 0x7F]; + } + else + { + if (gBattleStruct->field_4B != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank + { + gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); + gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); + } + } +} + +void HandleEndTurn_BattleWon(void) +{ + gCurrentActionFuncId = 0; + + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + gScriptResult = gBattleOutcome; + gBattleTextBuff1[0] = gBattleOutcome; + gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); + gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; + gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER + && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_EREADER_TRAINER)) + { + BattleMusicStop(); + gBattlescriptCurrInstr = BattleScript_FrontierTrainerBattleWon; + + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE) + PlayBGM(BGM_KACHI3); + else + PlayBGM(BGM_KACHI1); + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + BattleMusicStop(); + gBattlescriptCurrInstr = BattleScript_LocalTrainerBattleWon; + + switch (gTrainers[gTrainerBattleOpponent_A].trainerClass) + { + case CLASS_ELITE_FOUR: + case CLASS_CHAMPION: + PlayBGM(BGM_KACHI5); + break; + case CLASS_TEAM_AQUA: + case CLASS_TEAM_MAGMA: + case CLASS_AQUA_ADMIN: + case CLASS_AQUA_LEADER: + case CLASS_MAGMA_ADMIN: + case CLASS_MAGMA_LEADER: + PlayBGM(BGM_KACHI4); + break; + case CLASS_LEADER: + PlayBGM(BGM_KACHI3); + break; + default: + PlayBGM(BGM_KACHI1); + break; + } + } + else + { + gBattlescriptCurrInstr = BattleScript_PayDayMoneyAndPickUpItems; + } + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_BattleLost(void) +{ + gCurrentActionFuncId = 0; + + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + if (gBattleOutcome & BATTLE_OUTCOME_BIT_x80) + { + gBattlescriptCurrInstr = gUnknown_082DB9C8; + gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); + gSaveBlock2Ptr->field_CA9_b = 1; + } + else + { + gBattlescriptCurrInstr = gUnknown_082DAA0B; + gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); + } + } + else + { + gBattleTextBuff1[0] = gBattleOutcome; + gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); + gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; + gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); + } + } + else + { + gBattlescriptCurrInstr = BattleScript_LocalBattleLost; + } + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_RanFromBattle(void) +{ + gCurrentActionFuncId = 0; + + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER && gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + gBattlescriptCurrInstr = gUnknown_082DB9C1; + gBattleOutcome = BATTLE_FORFEITED; + gSaveBlock2Ptr->field_CA9_b = 1; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + gBattlescriptCurrInstr = gUnknown_082DB9C1; + gBattleOutcome = BATTLE_FORFEITED; + } + else + { + switch (gProtectStructs[gBankAttacker].fleeFlag) + { + default: + gBattlescriptCurrInstr = BattleScript_GotAwaySafely; + break; + case 1: + gBattlescriptCurrInstr = BattleScript_SmokeBallEscape; + break; + case 2: + gBattlescriptCurrInstr = BattleScript_RanAwayUsingMonAbility; + break; + } + } + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_MonFled(void) +{ + gCurrentActionFuncId = 0; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]); + gBattlescriptCurrInstr = BattleScript_WildMonFled; + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_FinishBattle(void) +{ + if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC) + { + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_FIRST_BATTLE + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_WALLY_TUTORIAL + | BATTLE_TYPE_FRONTIER))) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + if (gBattleResults.playerMon1Species == SPECIES_NONE) + { + gBattleResults.playerMon1Species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, gBattleResults.playerMon1Name); + } + else + { + gBattleResults.playerMon2Species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name); + } + } + } + sub_80EC728(); + } + + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_x2000000 + | BATTLE_TYPE_TRAINER + | BATTLE_TYPE_FIRST_BATTLE + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_WALLY_TUTORIAL)) + && gBattleResults.unk5_6) + { + sub_80EE184(); + } + + sub_8186444(); + BeginFastPaletteFade(3); + FadeOutMapMusic(5); + gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions; + gUnknown_030061E8 = BattleMainCB2; + } + else + { + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } +} + +static void FreeResetData_ReturnToOvOrDoEvolutions(void) +{ + if (!gPaletteFade.active) + { + ResetSpriteData(); + if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON) + { + gBattleMainFunc = ReturnFromBattleToOverworld; + return; + } + else + { + gBattleMainFunc = TryEvolvePokemon; + } + } + + FreeAllWindowBuffers(); + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + FreeMonSpritesGfx(); + FreeBattleResources(); + FreeBattleSpritesData(); + } +} + +static void TryEvolvePokemon(void) +{ + s32 i; + + while (gLeveledUpInBattle != 0) + { + for (i = 0; i < 6; i++) + { + if (gLeveledUpInBattle & gBitTable[i]) + { + u16 species; + u8 levelUpBits = gLeveledUpInBattle; + + levelUpBits &= ~(gBitTable[i]); + gLeveledUpInBattle = levelUpBits; + + species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits); + if (species != SPECIES_NONE) + { + FreeAllWindowBuffers(); + gBattleMainFunc = WaitForEvoSceneToFinish; + EvolutionScene(&gPlayerParty[i], species, TRUE, i); + return; + } + } + } + } + + gBattleMainFunc = ReturnFromBattleToOverworld; +} + +static void WaitForEvoSceneToFinish(void) +{ + if (gMain.callback2 == BattleMainCB2) + gBattleMainFunc = TryEvolvePokemon; +} + +static void ReturnFromBattleToOverworld(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + RandomlyGivePartyPokerus(gPlayerParty); + PartySpreadPokerus(gPlayerParty); + } + + if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0) + return; + + gScriptResult = gBattleOutcome; + gMain.inBattle = 0; + gMain.callback1 = gPreBattleCallback1; + + if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) + { + UpdateRoamerHPStatus(&gEnemyParty[0]); + if ((gBattleOutcome & BATTLE_WON) || gBattleOutcome == BATTLE_CAUGHT) + SetRoamerInactive(); + } + + m4aSongNumStop(0x5A); + SetMainCallback2(gMain.savedCallback); +} + +void RunBattleScriptCommands_PopCallbacksStack(void) +{ + if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC) + { + if (BATTLE_CALLBACKS_STACK->size != 0) + BATTLE_CALLBACKS_STACK->size--; + gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size]; + } + else + { + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } +} + +void RunBattleScriptCommands(void) +{ + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); +} + +extern const u8 * const gBattleScriptsForMoveEffects[]; + +void HandleAction_UseMove(void) +{ + u8 side; + u8 var = 4; + + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + + if (*(&gBattleStruct->field_91) & gBitTable[gBankAttacker]) + { + gCurrentActionFuncId = ACTION_FINISHED; + return; + } + + gCritMultiplier = 1; + gBattleScripting.dmgMultiplier = 1; + gBattleStruct->atkCancellerTracker = 0; + gBattleMoveFlags = 0; + gMultiHitCounter = 0; + gBattleCommunication[6] = 0; + gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBankAttacker); + + // choose move + if (gProtectStructs[gBankAttacker].onlyStruggle) + { + gProtectStructs[gBankAttacker].onlyStruggle = 0; + gCurrentMove = gLastUsedMove = MOVE_STRUGGLE; + gHitMarker |= HITMARKER_NO_PPDEDUCT; + *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); + } + else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) + { + gCurrentMove = gLastUsedMove = gLockedMoves[gBankAttacker]; + } + // encore forces you to use the same move + else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE + && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) + { + gCurrentMove = gLastUsedMove = gDisableStructs[gBankAttacker].encoredMove; + gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; + *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); + } + // check if the encored move wasn't overwritten + else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE + && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) + { + gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; + gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE; + gDisableStructs[gBankAttacker].encoredMovePos = 0; + gDisableStructs[gBankAttacker].encoreTimer1 = 0; + *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); + } + else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker]) + { + gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); + } + else + { + gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + } + + if (gBattleMons[gBankAttacker].hp != 0) + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + gBattleResults.lastUsedMovePlayer = gCurrentMove; + else + gBattleResults.lastUsedMoveOpponent = gCurrentMove; + } + + // choose target + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; + if (gSideTimers[side].followmeTimer != 0 + && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED + && GetBankSide(gBankAttacker) != GetBankSide(gSideTimers[side].followmeTarget) + && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) + { + gBankTarget = gSideTimers[side].followmeTarget; + } + else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && gSideTimers[side].followmeTimer == 0 + && (gBattleMoves[gCurrentMove].power != 0 + || gBattleMoves[gCurrentMove].target != MOVE_TARGET_x10) + && gBattleMons[*(gBattleStruct->moveTarget + gBankAttacker)].ability != ABILITY_LIGHTNING_ROD + && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + { + side = GetBankSide(gBankAttacker); + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (side != GetBankSide(gActiveBank) + && *(gBattleStruct->moveTarget + gBankAttacker) != gActiveBank + && gBattleMons[gActiveBank].ability == ABILITY_LIGHTNING_ROD + && BankGetTurnOrder(gActiveBank) < var) + { + var = BankGetTurnOrder(gActiveBank); + } + } + if (var == 4) + { + if (gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM) + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + } + else + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + } + else + { + gBankTarget = *(gBattleStruct->moveTarget + gBankAttacker); + } + + if (gAbsentBankFlags & gBitTable[gBankTarget]) + { + if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)) + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + else + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + } + } + else + { + gActiveBank = gBanksByTurnOrder[var]; + RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability); + gSpecialStatuses[gActiveBank].lightningRodRedirected = 1; + gBankTarget = gActiveBank; + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM) + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + } + else + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + + if (gAbsentBankFlags & gBitTable[gBankTarget] + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)) + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + } + else + { + gBankTarget = *(gBattleStruct->moveTarget + gBankAttacker); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + { + if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)) + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + else + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + } + } + + // choose battlescript + if (gBattleTypeFlags & BATTLE_TYPE_PALACE + && gProtectStructs[gBankAttacker].flag_x10) + { + if (gBattleMons[gBankAttacker].hp == 0) + { + gCurrentActionFuncId = 12; + return; + } + else if (gUnknown_02024230[gBankAttacker] != NULL) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gBattlescriptCurrInstr = gUnknown_02024230[gBankAttacker]; + gUnknown_02024230[gBankAttacker] = NULL; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + } + } + else + { + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + } + + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + sub_81A56E8(gBankAttacker); + + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_Switch(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gActionSelectionCursor[gBankAttacker] = 0; + gMoveSelectionCursor[gBankAttacker] = 0; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, *(gBattleStruct->field_58 + gBankAttacker)) + + gBattleScripting.bank = gBankAttacker; + gBattlescriptCurrInstr = BattleScript_ActionSwitch; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + + if (gBattleResults.playerSwitchesCounter < 255) + gBattleResults.playerSwitchesCounter++; +} + +extern const u8 * const gBattlescriptsForBallThrow[]; +extern const u8 * const gBattlescriptsForRunningByItem[]; +extern const u8 * const gUnknown_082DBD3C[]; + +void HandleAction_UseItem(void) +{ + gBankAttacker = gBankTarget = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + ClearFuryCutterDestinyBondGrudge(gBankAttacker); + gLastUsedItem = gBattleBufferB[gBankAttacker][1] | (gBattleBufferB[gBankAttacker][2] << 8); + + if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball + { + gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem]; + } + else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL) + { + gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0]; + } + else if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + gBattlescriptCurrInstr = gUnknown_082DBD3C[0]; + } + else + { + gBattleScripting.bank = gBankAttacker; + + switch (*(gBattleStruct->field_C4 + (gBankAttacker >> 1))) + { + case 1: + case 2: + break; + case 3: + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (*(gBattleStruct->field_C6 + gBankAttacker / 2) & 1) + { + if (*(gBattleStruct->field_C6 + gBankAttacker / 2) & 0x3E) + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + else + { + while (!(*(gBattleStruct->field_C6 + gBankAttacker / 2) & 1)) + { + *(gBattleStruct->field_C6 + gBankAttacker / 2) >>= 1; + gBattleCommunication[MULTISTRING_CHOOSER]++; + } + } + break; + case 4: + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + if (*(gBattleStruct->field_C6 + (gBankAttacker >> 1)) & 0x80) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + else + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK) + PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2) + + while (!((*(gBattleStruct->field_C6 + (gBankAttacker >> 1))) & 1)) + { + *(gBattleStruct->field_C6 + gBankAttacker / 2) >>= 1; + gBattleTextBuff1[2]++; + } + + gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14; + gBattleScripting.animArg2 = 0; + } + break; + case 5: + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + } + + gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->field_C4 + gBankAttacker / 2)]; + } + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +bool8 TryRunFromBattle(u8 bank) +{ + bool8 effect = FALSE; + u8 holdEffect; + u8 pyramidMultiplier; + u8 speedVar; + + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[bank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); + + gStringBank = bank; + + if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) + { + gLastUsedItem = gBattleMons[bank].item ; + gProtectStructs[bank].fleeFlag = 1; + effect++; + } + else if (gBattleMons[bank].ability == ABILITY_RUN_AWAY) + { + if (InBattlePyramid()) + { + gBattleStruct->runTries++; + pyramidMultiplier = sub_81A9E28(); + speedVar = (gBattleMons[bank].speed * pyramidMultiplier) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30); + if (speedVar > (Random() & 0xFF)) + { + gLastUsedAbility = ABILITY_RUN_AWAY; + gProtectStructs[bank].fleeFlag = 2; + effect++; + } + } + else + { + gLastUsedAbility = ABILITY_RUN_AWAY; + gProtectStructs[bank].fleeFlag = 2; + effect++; + } + } + else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + effect++; + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (InBattlePyramid()) + { + pyramidMultiplier = sub_81A9E28(); + speedVar = (gBattleMons[bank].speed * pyramidMultiplier) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30); + if (speedVar > (Random() & 0xFF)) + effect++; + } + else if (gBattleMons[bank].speed < gBattleMons[bank ^ BIT_SIDE].speed) + { + speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30); + if (speedVar > (Random() & 0xFF)) + effect++; + } + else // same speed or faster + { + effect++; + } + } + + gBattleStruct->runTries++; + } + + if (effect) + { + gCurrentTurnActionNumber = gNoOfAllBanks; + gBattleOutcome = BATTLE_RAN; + } + + return effect; } diff --git a/src/battle_3.c b/src/battle_3.c index c20d361a4f..58e0a05c7e 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -50,7 +50,7 @@ extern u8 gBattleMoveFlags; extern s32 gTakenDmg[BATTLE_BANKS_COUNT]; extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT]; extern u8 gLastUsedAbility; -extern u8 gFightStateTracker; +extern u8 gCurrentActionFuncId; extern u32 gBattleExecBuffer; extern u16 gRandomMove; extern u8 gCurrMovePos; @@ -181,8 +181,6 @@ extern const u16 gSoundMovesTable[]; extern void sub_803F9EC(); extern bool8 sub_80423F4(u8 bank, u8, u8); extern u8 weather_get_current(void); -extern void sub_803E08C(void); -extern void bc_move_exec_returning(void); extern s8 GetFlavourRelationByPersonality(u32 personality, u8 flavor); void BattleScriptPush(const u8* bsPtr) @@ -1156,7 +1154,7 @@ bool8 sub_8041728(void) return FALSE; } -void b_clear_atk_up_if_hit_flag_unless_enraged(void) +void TryClearRageStatuses(void) { int i; for (i = 0; i < gNoOfAllBanks; i++) @@ -5441,8 +5439,8 @@ void BattleScriptExecute(const u8* BS_ptr) { gBattlescriptCurrInstr = BS_ptr; BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc; - gBattleMainFunc = bc_move_exec_returning; - gFightStateTracker = 0; + gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack; + gCurrentActionFuncId = 0; } void BattleScriptPushCursorAndCallback(const u8* BS_ptr) @@ -5450,7 +5448,7 @@ void BattleScriptPushCursorAndCallback(const u8* BS_ptr) BattleScriptPushCursor(); gBattlescriptCurrInstr = BS_ptr; BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc; - gBattleMainFunc = sub_803E08C; + gBattleMainFunc = RunBattleScriptCommands; } enum @@ -5520,7 +5518,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) switch (caseID) { - case 0: + case ITEMEFFECT_ON_SWITCH_IN: switch (bankHoldEffect) { case HOLD_EFFECT_DOUBLE_PRIZE: @@ -6185,7 +6183,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) return effect; } -void sub_8045868(u8 bank) +void ClearFuryCutterDestinyBondGrudge(u8 bank) { gDisableStructs[bank].furyCutterCounter = 0; gBattleMons[bank].status2 &= ~(STATUS2_DESTINY_BOND); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 380f9ec40d..e68137c479 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -67,7 +67,7 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern const u8* gBattlescriptCurrInstr; extern u8 gCurrMovePos; -extern u8 gFightStateTracker; +extern u8 gCurrentActionFuncId; extern u32 gHitMarker; extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; @@ -92,7 +92,7 @@ extern u16 gMoveToLearn; extern u16 gRandomMove; extern u8 gBankInMenu; extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; -extern u8 gCurrentMoveTurn; +extern u8 gCurrentTurnActionNumber; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u16 gPartnerTrainerId; @@ -377,7 +377,7 @@ static void atk6E_set_atk_to_player0(void); static void atk6F_set_visible(void); static void atk70_record_last_used_ability(void); static void atk71_buffer_move_to_learn(void); -static void atk72_jump_if_can_run_frombattle(void); +static void atk72_jump_if_run_attempt_success(void); static void atk73_hp_thresholds(void); static void atk74_hp_thresholds2(void); static void atk75_item_effect_on_opponent(void); @@ -509,8 +509,8 @@ static void atkF2_display_dex_info(void); static void atkF3_nickname_caught_poke(void); static void atkF4_subattackerhpbydmg(void); static void atkF5_removeattackerstatus1(void); -static void atkF6_802BF48(void); -static void atkF7_802BF54(void); +static void atkF6_action_finished(void); +static void atkF7_turn_finished(void); static void atkF8_trainer_slide_back(void); void (* const gBattleScriptingCommandsTable[])(void) = @@ -629,7 +629,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk6F_set_visible, atk70_record_last_used_ability, atk71_buffer_move_to_learn, - atk72_jump_if_can_run_frombattle, + atk72_jump_if_run_attempt_success, atk73_hp_thresholds, atk74_hp_thresholds2, atk75_item_effect_on_opponent, @@ -761,8 +761,8 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkF3_nickname_caught_poke, atkF4_subattackerhpbydmg, atkF5_removeattackerstatus1, - atkF6_802BF48, - atkF7_802BF54, + atkF6_action_finished, + atkF7_turn_finished, atkF8_trainer_slide_back }; @@ -1097,9 +1097,9 @@ static void atk00_attackcanceler(void) { s32 i; - if (gBattleOutcome) + if (gBattleOutcome != 0) { - gFightStateTracker = 0xC; + gCurrentActionFuncId = ACTION_FINISHED; return; } if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) @@ -2736,7 +2736,7 @@ void SetMoveEffect(bool8 primary, u8 certain) } else { - if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) + if (BankGetTurnOrder(gEffectBank) > gCurrentTurnActionNumber) gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr++; } @@ -3208,7 +3208,7 @@ static void atk19_faint_pokemon(void) && gBattleMons[gBankAttacker].hp != 0 && gCurrentMove != MOVE_STRUGGLE) { - u8 moveIndex = *(gBattleStruct->chosenMovesIds + gBankAttacker); + u8 moveIndex = *(gBattleStruct->chosenMovePositions + gBankAttacker); gBattleMons[gBankAttacker].pp[moveIndex] = 0; BattleScriptPush(gBattlescriptCurrInstr); @@ -4421,13 +4421,13 @@ static void atk3D_end(void) gBattleMoveFlags = 0; gActiveBank = 0; - gFightStateTracker = 0xB; + gCurrentActionFuncId = 0xB; } static void atk3E_end2(void) { gActiveBank = 0; - gFightStateTracker = 0xB; + gCurrentActionFuncId = 0xB; } static void atk3F_end3(void) // pops the main function stack @@ -6956,9 +6956,9 @@ static void atk71_buffer_move_to_learn(void) gBattlescriptCurrInstr++; } -static void atk72_jump_if_can_run_frombattle(void) +static void atk72_jump_if_run_attempt_success(void) { - if (CanRunFromBattle(gBank1)) + if (TryRunFromBattle(gBank1)) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); else gBattlescriptCurrInstr += 5; @@ -7045,7 +7045,7 @@ static void atk76_various(void) else gBankTarget = gActiveBank; break; - case 2: + case VARIOUS_CAN_RUN_FROM_BATTLE: gBattleCommunication[0] = IsRunningFromBattleImpossible(); break; case VARIOUS_GET_MOVE_TARGET: @@ -7196,7 +7196,7 @@ static void atk76_various(void) gBattleOutcome = BATTLE_OPPONENT_TELEPORTED; break; case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC: - EmitPlaySound(0, 0x19C, 1); + EmitPlaySound(0, BGM_KACHI1, 1); MarkBufferBankForExecution(gActiveBank); break; } @@ -7212,7 +7212,7 @@ static void atk77_set_protect_like(void) // protect and endure if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE) gDisableStructs[gBankAttacker].protectUses = 0; - if (gCurrentMoveTurn == (gNoOfAllBanks - 1)) + if (gCurrentTurnActionNumber == (gNoOfAllBanks - 1)) notLastTurn = FALSE; if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] >= Random() && notLastTurn) @@ -9715,7 +9715,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void) } gCurrentMove = MOVE_PURSUIT; - gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovesIds + gBankTarget); + gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBankTarget); gBattlescriptCurrInstr += 5; gBattleScripting.animTurn = 1; gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); @@ -10631,7 +10631,7 @@ static void atkDF_setmagiccoat(void) { gBankTarget = gBankAttacker; gSpecialStatuses[gBankAttacker].flag20 = 1; - if (gCurrentMoveTurn == gNoOfAllBanks - 1) // moves last turn + if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -10645,7 +10645,7 @@ static void atkDF_setmagiccoat(void) static void atkE0_setstealstatchange(void) // snatch { gSpecialStatuses[gBankAttacker].flag20 = 1; - if (gCurrentMoveTurn == gNoOfAllBanks - 1) // moves last turn + if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -11393,15 +11393,15 @@ static void atkF5_removeattackerstatus1(void) gBattlescriptCurrInstr++; } -static void atkF6_802BF48(void) +static void atkF6_action_finished(void) { - gFightStateTracker = 0xC; + gCurrentActionFuncId = ACTION_FINISHED; } -static void atkF7_802BF54(void) +static void atkF7_turn_finished(void) { - gFightStateTracker = 0xC; - gCurrentMoveTurn = gNoOfAllBanks; + gCurrentActionFuncId = ACTION_FINISHED; + gCurrentTurnActionNumber = gNoOfAllBanks; } static void atkF8_trainer_slide_back(void) diff --git a/sym_ewram.txt b/sym_ewram.txt index c50d8f0305..c00f5e1d65 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -310,10 +310,10 @@ gActionsByTurnOrder: @ 202407A gBanksByTurnOrder: @ 202407E .space 0x4 -gCurrentMoveTurn: @ 2024082 +gCurrentTurnActionNumber: @ 2024082 .space 0x1 -gFightStateTracker: @ 2024083 +gCurrentActionFuncId: @ 2024083 .space 0x1 gBattleMons: @ 2024084 From d5e7ddddb7f744a2be6410fdf7a333b4010ed478 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 6 Oct 2017 01:57:52 -0500 Subject: [PATCH 095/182] Extract baseroms from data2c --- data/data2b.s | 34 +- data/data2c.s | 131 +++++- .../pokemon/animation_delay_table.inc | 412 ++++++++++++++++++ .../graphics/pokemon/front_anim_ids_table.inc | 412 ++++++++++++++++++ data/pokemon_icon.s | 3 +- 5 files changed, 968 insertions(+), 24 deletions(-) create mode 100644 data/graphics/pokemon/animation_delay_table.inc create mode 100644 data/graphics/pokemon/front_anim_ids_table.inc diff --git a/data/data2b.s b/data/data2b.s index 02ef511bf4..0d964fcf55 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -23,14 +23,23 @@ gUnknown_082FF3A8:: @ 82FF3A8 .byte 0x00, 0x88, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0x90, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0x98, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + + .align 2 +gUnknown_082FF3C8:: @ 82FF3C8 .byte 0x00, 0xa0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xa8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xb0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xb8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + + .align 2 +gUnknown_082FF3E8:: @ 82FF3E8 .byte 0x00, 0xc0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xc8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xd0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xd8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 + + .align 2 +gUnknown_082FF408:: @ 82FF408 .byte 0x00, 0xe0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xe8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 .byte 0x00, 0xf0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00 @@ -42,32 +51,53 @@ gUnknown_082FF428:: @ 82FF428 obj_frame_tiles gTrainerBackPic_Brendan + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_Brendan + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_Brendan + 0x1800, 0x0800 + + .align 2 +gUnknown_082FF448:: @ 82FF448 obj_frame_tiles gTrainerBackPic_May, 0x0800 obj_frame_tiles gTrainerBackPic_May + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_May + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_May + 0x1800, 0x0800 + + .align 2 +gUnknown_082FF468:: @ 82FF468 obj_frame_tiles gTrainerBackPic_Red, 0x0800 obj_frame_tiles gTrainerBackPic_Red + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_Red + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_Red + 0x1800, 0x0800 obj_frame_tiles gTrainerBackPic_Red + 0x2000, 0x0800 + + .align 2 +gUnknown_082FF490:: @ 82FF490 obj_frame_tiles gTrainerBackPic_Leaf, 0x0800 obj_frame_tiles gTrainerBackPic_Leaf + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_Leaf + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_Leaf + 0x1800, 0x0800 obj_frame_tiles gTrainerBackPic_Leaf + 0x2000, 0x0800 + + .align 2 +gUnknown_082FF4B8:: @ 82FF4B8 obj_frame_tiles gTrainerBackPic_RubySapphireBrendan, 0x0800 obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1800, 0x0800 + + .align 2 +gUnknown_082FF4D8:: @ 82FF4D8 obj_frame_tiles gTrainerBackPic_RubySapphireMay, 0x0800 obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1800, 0x0800 + + .align 2 +gUnknown_082FF4F8:: @ 82FF4F8 obj_frame_tiles gTrainerBackPic_Wally, 0x0800 obj_frame_tiles gTrainerBackPic_Wally + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_Wally + 0x1000, 0x0800 obj_frame_tiles gTrainerBackPic_Wally + 0x1800, 0x0800 + + .align 2 +gUnknown_082FF518:: @ 82FF518 obj_frame_tiles gTrainerBackPic_Steven, 0x0800 obj_frame_tiles gTrainerBackPic_Steven + 0x0800, 0x0800 obj_frame_tiles gTrainerBackPic_Steven + 0x1000, 0x0800 @@ -4478,7 +4508,9 @@ gUnknown_08305D0C:: @ 8305D0C @ 8305DCC .include "data/enemy_mon_elevation.inc" - .incbin "baserom.gba", 0x305f68, 0x3b44 + .incbin "baserom.gba", 0x305f68, 0x2d54 + + .incbin "baserom.gba", 0x308cbc, 0xdf0 gUnknown_08309AAC:: @ 8309AAC .incbin "baserom.gba", 0x309aac, 0x6e0 diff --git a/data/data2c.s b/data/data2c.s index 26f237c1c1..be715493c4 100644 --- a/data/data2c.s +++ b/data/data2c.s @@ -11,8 +11,9 @@ @ 831C898 .include "data/battle_moves.inc" - @ 0x31d93c unreferenced unknown data -.byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 +@ 0x31d93c +@ unreferenced unknown data + .byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 @ 831D94C .include "data/pokedex_order.inc" @@ -53,56 +54,142 @@ @ 832937C .include "data/level_up_learnset_pointers.inc" -gMonFrontAnimIdsTable:: @ 83299EC - .incbin "baserom.gba", 0x3299ec, 0x19b +@ 83299EC + .include "data/graphics/pokemon/front_anim_ids_table.inc" -gMonAnimationDelayTable:: @ 8329B87 - .incbin "baserom.gba", 0x329b87, 0x19b +@ 8329B87 + .include "data/graphics/pokemon/animation_delay_table.inc" + .align 1 gUnknown_08329D22:: @ 8329D22 - .incbin "baserom.gba", 0x329d22, 0x4 +@ Masks for getting PP Up count, also PP Max values + .byte 0x03, 0x0c, 0x30, 0xc0 + .align 1 gUnknown_08329D26:: @ 8329D26 - .incbin "baserom.gba", 0x329d26, 0x4 +@ Masks for setting PP Up count + .byte 0xfc, 0xf3, 0xcf, 0x3f + .align 1 gUnknown_08329D2A:: @ 8329D2A - .incbin "baserom.gba", 0x329d2a, 0x4 +@ Values added to PP Up count + .byte 0x01, 0x04, 0x10, 0x40 + .align 1 gStatStageRatios:: @ 8329D2E - .incbin "baserom.gba", 0x329d2e, 0x1a + .byte 0x0a, 0x28 + .byte 0x0a, 0x23 + .byte 0x0a, 0x1e + .byte 0x0a, 0x19 + .byte 0x0a, 0x14 + .byte 0x0a, 0x0f + .byte 0x0a, 0x0a + .byte 0x0f, 0x0a + .byte 0x14, 0x0a + .byte 0x19, 0x0a + .byte 0x1e, 0x0a + .byte 0x23, 0x0a + .byte 0x28, 0x0a + .align 1 gUnknown_08329D48:: @ 8329D48 - .incbin "baserom.gba", 0x329d48, 0xc + .2byte 0x0032, 0x005f, 0x005a, 0x00b4, 0x005f, 0x005a + .align 1 gUnknown_08329D54:: @ 8329D54 - .incbin "baserom.gba", 0x329d54, 0x20 + .2byte 0x0003, 0x000a, 0x001b, 0x002b, 0x001e, 0x0043, 0x0042, 0x0019 + .2byte 0x0012, 0x000c, 0x001c, 0x0047, 0x001f, 0x0036, 0x0002, 0x0014 + .align 1 gHoldEffectToType:: @ 8329D74 - .incbin "baserom.gba", 0x329d74, 0x24 + .byte 0x1f, 0x06 + .byte 0x2a, 0x08 + .byte 0x2e, 0x04 + .byte 0x2f, 0x05 + .byte 0x30, 0x0c + .byte 0x31, 0x11 + .byte 0x32, 0x01 + .byte 0x33, 0x0d + .byte 0x34, 0x0b + .byte 0x35, 0x02 + .byte 0x36, 0x03 + .byte 0x37, 0x0f + .byte 0x38, 0x07 + .byte 0x39, 0x0e + .byte 0x3a, 0x0a + .byte 0x3b, 0x10 + .byte 0x3c, 0x00 + .byte 0x00, 0x00 + .align 2 gUnknown_08329D98:: @ 8329D98 - .incbin "baserom.gba", 0x329d98, 0x60 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3A8, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF3C8, gUnknown_082FF694, oac_poke_opponent + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3E8, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF408, gUnknown_082FF694, oac_poke_opponent + .align 2 gUnknown_08329DF8:: @ 8329DF8 - .incbin "baserom.gba", 0x329df8, 0xc0 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF428, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF448, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF468, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF490, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4B8, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4D8, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4 + spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4 gSecretBaseTrainerClasses:: @ 8329EB8 - .incbin "baserom.gba", 0x329eb8, 0xa + .byte TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOLTRAINER_1 + .byte TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_2, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOLTRAINER_2 gUnknown_08329EC2:: @ 8329EC2 - .incbin "baserom.gba", 0x329ec2, 0x6 + .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e gUnknown_08329EC8:: @ 8329EC8 - .incbin "baserom.gba", 0x329ec8, 0x6 + .byte 1, 1, 3, 2, 4, 6 gUnknown_08329ECE:: @ 8329ECE - .incbin "baserom.gba", 0x329ece, 0x1c +@ Happiness deltas + .byte 0x05, 0x03, 0x02 + .byte 0x05, 0x03, 0x02 + .byte 0x01, 0x01, 0x00 + .byte 0x03, 0x02, 0x01 + .byte 0x01, 0x01, 0x00 + .byte 0x01, 0x01, 0x01 + .byte 0xff, 0xff, 0xff + .byte 0xfb, 0xfb, 0xf6 + .byte 0xfb, 0xfb, 0xf6 + .align 1 gHMMoves:: @ 8329EEA - .incbin "baserom.gba", 0x329eea, 0x12 + .2byte MOVE_CUT + .2byte MOVE_FLY + .2byte MOVE_SURF + .2byte MOVE_STRENGTH + .2byte MOVE_FLASH + .2byte MOVE_ROCK_SMASH + .2byte MOVE_WATERFALL + .2byte MOVE_DIVE + .2byte 0xffff + .align 1 gAlteringCaveWildMonHeldItems:: @ 8329EFC - .incbin "baserom.gba", 0x329efc, 0x2c + .2byte 0, ITEM_NONE + .2byte SPECIES_MAREEP, ITEM_GANLON_BERRY + .2byte SPECIES_PINECO, ITEM_APICOT_BERRY + .2byte SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM + .2byte SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY + .2byte SPECIES_AIPOM, ITEM_BERRY_JUICE + .2byte SPECIES_SHUCKLE, ITEM_BERRY_JUICE + .2byte SPECIES_STANTLER, ITEM_PETAYA_BERRY + .2byte SPECIES_SMEARGLE, ITEM_SALAC_BERRY + .align 2 +gUnknown_08329F20:: @ 8329F20 + .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00 + + .align 2 gUnknown_08329F28:: @ 8329F28 - .incbin "baserom.gba", 0x329f28, 0x18 + spr_template 0xffff, 0xffff, gUnknown_08329F20, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + diff --git a/data/graphics/pokemon/animation_delay_table.inc b/data/graphics/pokemon/animation_delay_table.inc new file mode 100644 index 0000000000..55d602bab8 --- /dev/null +++ b/data/graphics/pokemon/animation_delay_table.inc @@ -0,0 +1,412 @@ +gMonAnimationDelayTable:: @ 8329B87 + .byte 0x00 @ SPECIES_BULBASAUR + .byte 0x00 @ SPECIES_IVYSAUR + .byte 0x00 @ SPECIES_VENUSAUR + .byte 0x00 @ SPECIES_CHARMANDER + .byte 0x00 @ SPECIES_CHARMELEON + .byte 0x00 @ SPECIES_CHARIZARD + .byte 0x00 @ SPECIES_SQUIRTLE + .byte 0x00 @ SPECIES_WARTORTLE + .byte 0x32 @ SPECIES_BLASTOISE + .byte 0x00 @ SPECIES_CATERPIE + .byte 0x00 @ SPECIES_METAPOD + .byte 0x00 @ SPECIES_BUTTERFREE + .byte 0x0a @ SPECIES_WEEDLE + .byte 0x14 @ SPECIES_KAKUNA + .byte 0x23 @ SPECIES_BEEDRILL + .byte 0x00 @ SPECIES_PIDGEY + .byte 0x19 @ SPECIES_PIDGEOTTO + .byte 0x00 @ SPECIES_PIDGEOT + .byte 0x00 @ SPECIES_RATTATA + .byte 0x00 @ SPECIES_RATICATE + .byte 0x00 @ SPECIES_SPEAROW + .byte 0x02 @ SPECIES_FEAROW + .byte 0x1e @ SPECIES_EKANS + .byte 0x00 @ SPECIES_ARBOK + .byte 0x00 @ SPECIES_PIKACHU + .byte 0x00 @ SPECIES_RAICHU + .byte 0x00 @ SPECIES_SANDSHREW + .byte 0x00 @ SPECIES_SANDSLASH + .byte 0x1c @ SPECIES_NIDORAN_F + .byte 0x00 @ SPECIES_NIDORINA + .byte 0x00 @ SPECIES_NIDOQUEEN + .byte 0x00 @ SPECIES_NIDORAN_M + .byte 0x00 @ SPECIES_NIDORINO + .byte 0x19 @ SPECIES_NIDOKING + .byte 0x00 @ SPECIES_CLEFAIRY + .byte 0x00 @ SPECIES_CLEFABLE + .byte 0x00 @ SPECIES_VULPIX + .byte 0x00 @ SPECIES_NINETALES + .byte 0x00 @ SPECIES_JIGGLYPUFF + .byte 0x00 @ SPECIES_WIGGLYTUFF + .byte 0x00 @ SPECIES_ZUBAT + .byte 0x00 @ SPECIES_GOLBAT + .byte 0x00 @ SPECIES_ODDISH + .byte 0x00 @ SPECIES_GLOOM + .byte 0x00 @ SPECIES_VILEPLUME + .byte 0x0a @ SPECIES_PARAS + .byte 0x2d @ SPECIES_PARASECT + .byte 0x14 @ SPECIES_VENONAT + .byte 0x00 @ SPECIES_VENOMOTH + .byte 0x19 @ SPECIES_DIGLETT + .byte 0x23 @ SPECIES_DUGTRIO + .byte 0x28 @ SPECIES_MEOWTH + .byte 0x14 @ SPECIES_PERSIAN + .byte 0x00 @ SPECIES_PSYDUCK + .byte 0x00 @ SPECIES_GOLDUCK + .byte 0x14 @ SPECIES_MANKEY + .byte 0x00 @ SPECIES_PRIMEAPE + .byte 0x1e @ SPECIES_GROWLITHE + .byte 0x28 @ SPECIES_ARCANINE + .byte 0x00 @ SPECIES_POLIWAG + .byte 0x05 @ SPECIES_POLIWHIRL + .byte 0x00 @ SPECIES_POLIWRATH + .byte 0x00 @ SPECIES_ABRA + .byte 0x00 @ SPECIES_KADABRA + .byte 0x00 @ SPECIES_ALAKAZAM + .byte 0x00 @ SPECIES_MACHOP + .byte 0x00 @ SPECIES_MACHOKE + .byte 0x00 @ SPECIES_MACHAMP + .byte 0x00 @ SPECIES_BELLSPROUT + .byte 0x03 @ SPECIES_WEEPINBELL + .byte 0x00 @ SPECIES_VICTREEBEL + .byte 0x00 @ SPECIES_TENTACOOL + .byte 0x00 @ SPECIES_TENTACRUEL + .byte 0x00 @ SPECIES_GEODUDE + .byte 0x00 @ SPECIES_GRAVELER + .byte 0x00 @ SPECIES_GOLEM + .byte 0x00 @ SPECIES_PONYTA + .byte 0x00 @ SPECIES_RAPIDASH + .byte 0x00 @ SPECIES_SLOWPOKE + .byte 0x00 @ SPECIES_SLOWBRO + .byte 0x00 @ SPECIES_MAGNEMITE + .byte 0x00 @ SPECIES_MAGNETON + .byte 0x00 @ SPECIES_FARFETCH_D + .byte 0x00 @ SPECIES_DODUO + .byte 0x00 @ SPECIES_DODRIO + .byte 0x00 @ SPECIES_SEEL + .byte 0x00 @ SPECIES_DEWGONG + .byte 0x00 @ SPECIES_GRIMER + .byte 0x2d @ SPECIES_MUK + .byte 0x14 @ SPECIES_SHELLDER + .byte 0x00 @ SPECIES_CLOYSTER + .byte 0x00 @ SPECIES_GASTLY + .byte 0x17 @ SPECIES_HAUNTER + .byte 0x00 @ SPECIES_GENGAR + .byte 0x00 @ SPECIES_ONIX + .byte 0x30 @ SPECIES_DROWZEE + .byte 0x28 @ SPECIES_HYPNO + .byte 0x00 @ SPECIES_KRABBY + .byte 0x00 @ SPECIES_KINGLER + .byte 0x00 @ SPECIES_VOLTORB + .byte 0x00 @ SPECIES_ELECTRODE + .byte 0x00 @ SPECIES_EXEGGCUTE + .byte 0x00 @ SPECIES_EXEGGUTOR + .byte 0x00 @ SPECIES_CUBONE + .byte 0x00 @ SPECIES_MAROWAK + .byte 0x00 @ SPECIES_HITMONLEE + .byte 0x19 @ SPECIES_HITMONCHAN + .byte 0x00 @ SPECIES_LICKITUNG + .byte 0x00 @ SPECIES_KOFFING + .byte 0x00 @ SPECIES_WEEZING + .byte 0x00 @ SPECIES_RHYHORN + .byte 0x00 @ SPECIES_RHYDON + .byte 0x00 @ SPECIES_CHANSEY + .byte 0x00 @ SPECIES_TANGELA + .byte 0x00 @ SPECIES_KANGASKHAN + .byte 0x00 @ SPECIES_HORSEA + .byte 0x00 @ SPECIES_SEADRA + .byte 0x00 @ SPECIES_GOLDEEN + .byte 0x00 @ SPECIES_SEAKING + .byte 0x00 @ SPECIES_STARYU + .byte 0x00 @ SPECIES_STARMIE + .byte 0x00 @ SPECIES_MR_MIME + .byte 0x0a @ SPECIES_SCYTHER + .byte 0x00 @ SPECIES_JYNX + .byte 0x00 @ SPECIES_ELECTABUZZ + .byte 0x00 @ SPECIES_MAGMAR + .byte 0x00 @ SPECIES_PINSIR + .byte 0x0a @ SPECIES_TAUROS + .byte 0x00 @ SPECIES_MAGIKARP + .byte 0x00 @ SPECIES_GYARADOS + .byte 0x00 @ SPECIES_LAPRAS + .byte 0x00 @ SPECIES_DITTO + .byte 0x00 @ SPECIES_EEVEE + .byte 0x00 @ SPECIES_VAPOREON + .byte 0x00 @ SPECIES_JOLTEON + .byte 0x00 @ SPECIES_FLAREON + .byte 0x00 @ SPECIES_PORYGON + .byte 0x00 @ SPECIES_OMANYTE + .byte 0x00 @ SPECIES_OMASTAR + .byte 0x00 @ SPECIES_KABUTO + .byte 0x00 @ SPECIES_KABUTOPS + .byte 0x00 @ SPECIES_AERODACTYL + .byte 0x00 @ SPECIES_SNORLAX + .byte 0x00 @ SPECIES_ARTICUNO + .byte 0x00 @ SPECIES_ZAPDOS + .byte 0x00 @ SPECIES_MOLTRES + .byte 0x00 @ SPECIES_DRATINI + .byte 0x00 @ SPECIES_DRAGONAIR + .byte 0x00 @ SPECIES_DRAGONITE + .byte 0x00 @ SPECIES_MEWTWO + .byte 0x00 @ SPECIES_MEW + .byte 0x00 @ SPECIES_CHIKORITA + .byte 0x00 @ SPECIES_BAYLEEF + .byte 0x00 @ SPECIES_MEGANIUM + .byte 0x00 @ SPECIES_CYNDAQUIL + .byte 0x00 @ SPECIES_QUILAVA + .byte 0x14 @ SPECIES_TYPHLOSION + .byte 0x00 @ SPECIES_TOTODILE + .byte 0x00 @ SPECIES_CROCONAW + .byte 0x05 @ SPECIES_FERALIGATR + .byte 0x00 @ SPECIES_SENTRET + .byte 0x00 @ SPECIES_FURRET + .byte 0x00 @ SPECIES_HOOTHOOT + .byte 0x00 @ SPECIES_NOCTOWL + .byte 0x00 @ SPECIES_LEDYBA + .byte 0x00 @ SPECIES_LEDIAN + .byte 0x00 @ SPECIES_SPINARAK + .byte 0x00 @ SPECIES_ARIADOS + .byte 0x00 @ SPECIES_CROBAT + .byte 0x00 @ SPECIES_CHINCHOU + .byte 0x00 @ SPECIES_LANTURN + .byte 0x00 @ SPECIES_PICHU + .byte 0x00 @ SPECIES_CLEFFA + .byte 0x00 @ SPECIES_IGGLYBUFF + .byte 0x00 @ SPECIES_TOGEPI + .byte 0x00 @ SPECIES_TOGETIC + .byte 0x1e @ SPECIES_NATU + .byte 0x00 @ SPECIES_XATU + .byte 0x32 @ SPECIES_MAREEP + .byte 0x00 @ SPECIES_FLAAFFY + .byte 0x0a @ SPECIES_AMPHAROS + .byte 0x00 @ SPECIES_BELLOSSOM + .byte 0x00 @ SPECIES_MARILL + .byte 0x00 @ SPECIES_AZUMARILL + .byte 0x00 @ SPECIES_SUDOWOODO + .byte 0x28 @ SPECIES_POLITOED + .byte 0x00 @ SPECIES_HOPPIP + .byte 0x00 @ SPECIES_SKIPLOOM + .byte 0x00 @ SPECIES_JUMPLUFF + .byte 0x00 @ SPECIES_AIPOM + .byte 0x00 @ SPECIES_SUNKERN + .byte 0x00 @ SPECIES_SUNFLORA + .byte 0x00 @ SPECIES_YANMA + .byte 0x00 @ SPECIES_WOOPER + .byte 0x00 @ SPECIES_QUAGSIRE + .byte 0x00 @ SPECIES_ESPEON + .byte 0x00 @ SPECIES_UMBREON + .byte 0x00 @ SPECIES_MURKROW + .byte 0x00 @ SPECIES_SLOWKING + .byte 0x00 @ SPECIES_MISDREAVUS + .byte 0x00 @ SPECIES_UNOWN + .byte 0x00 @ SPECIES_WOBBUFFET + .byte 0x00 @ SPECIES_GIRAFARIG + .byte 0x00 @ SPECIES_PINECO + .byte 0x00 @ SPECIES_FORRETRESS + .byte 0x0a @ SPECIES_DUNSPARCE + .byte 0x00 @ SPECIES_GLIGAR + .byte 0x2d @ SPECIES_STEELIX + .byte 0x00 @ SPECIES_SNUBBULL + .byte 0x00 @ SPECIES_GRANBULL + .byte 0x27 @ SPECIES_QWILFISH + .byte 0x13 @ SPECIES_SCIZOR + .byte 0x00 @ SPECIES_SHUCKLE + .byte 0x00 @ SPECIES_HERACROSS + .byte 0x00 @ SPECIES_SNEASEL + .byte 0x00 @ SPECIES_TEDDIURSA + .byte 0x00 @ SPECIES_URSARING + .byte 0x00 @ SPECIES_SLUGMA + .byte 0x00 @ SPECIES_MAGCARGO + .byte 0x00 @ SPECIES_SWINUB + .byte 0x00 @ SPECIES_PILOSWINE + .byte 0x00 @ SPECIES_CORSOLA + .byte 0x00 @ SPECIES_REMORAID + .byte 0x14 @ SPECIES_OCTILLERY + .byte 0x00 @ SPECIES_DELIBIRD + .byte 0x00 @ SPECIES_MANTINE + .byte 0x00 @ SPECIES_SKARMORY + .byte 0x00 @ SPECIES_HOUNDOUR + .byte 0x00 @ SPECIES_HOUNDOOM + .byte 0x00 @ SPECIES_KINGDRA + .byte 0x00 @ SPECIES_PHANPY + .byte 0x00 @ SPECIES_DONPHAN + .byte 0x00 @ SPECIES_PORYGON2 + .byte 0x00 @ SPECIES_STANTLER + .byte 0x00 @ SPECIES_SMEARGLE + .byte 0x00 @ SPECIES_TYROGUE + .byte 0x00 @ SPECIES_HITMONTOP + .byte 0x28 @ SPECIES_SMOOCHUM + .byte 0x00 @ SPECIES_ELEKID + .byte 0x00 @ SPECIES_MAGBY + .byte 0x00 @ SPECIES_MILTANK + .byte 0x00 @ SPECIES_BLISSEY + .byte 0x00 @ SPECIES_RAIKOU + .byte 0x00 @ SPECIES_ENTEI + .byte 0x00 @ SPECIES_SUICUNE + .byte 0x00 @ SPECIES_LARVITAR + .byte 0x00 @ SPECIES_PUPITAR + .byte 0x0a @ SPECIES_TYRANITAR + .byte 0x14 @ SPECIES_LUGIA + .byte 0x00 @ SPECIES_HO_OH + .byte 0x00 @ SPECIES_CELEBI + .byte 0x00 @ 252 + .byte 0x00 @ 253 + .byte 0x00 @ 254 + .byte 0x00 @ 255 + .byte 0x00 @ 256 + .byte 0x00 @ 257 + .byte 0x00 @ 258 + .byte 0x00 @ 259 + .byte 0x00 @ 260 + .byte 0x00 @ 261 + .byte 0x00 @ 262 + .byte 0x00 @ 263 + .byte 0x00 @ 264 + .byte 0x00 @ 265 + .byte 0x00 @ 266 + .byte 0x00 @ 267 + .byte 0x00 @ 268 + .byte 0x00 @ 269 + .byte 0x00 @ 270 + .byte 0x00 @ 271 + .byte 0x00 @ 272 + .byte 0x00 @ 273 + .byte 0x00 @ 274 + .byte 0x00 @ 275 + .byte 0x00 @ 276 + .byte 0x00 @ SPECIES_TREECKO + .byte 0x00 @ SPECIES_GROVYLE + .byte 0x00 @ SPECIES_SCEPTILE + .byte 0x00 @ SPECIES_TORCHIC + .byte 0x00 @ SPECIES_COMBUSKEN + .byte 0x00 @ SPECIES_BLAZIKEN + .byte 0x00 @ SPECIES_MUDKIP + .byte 0x00 @ SPECIES_MARSHTOMP + .byte 0x00 @ SPECIES_SWAMPERT + .byte 0x00 @ SPECIES_POOCHYENA + .byte 0x00 @ SPECIES_MIGHTYENA + .byte 0x00 @ SPECIES_ZIGZAGOON + .byte 0x00 @ SPECIES_LINOONE + .byte 0x00 @ SPECIES_WURMPLE + .byte 0x00 @ SPECIES_SILCOON + .byte 0x00 @ SPECIES_BEAUTIFLY + .byte 0x00 @ SPECIES_CASCOON + .byte 0x00 @ SPECIES_DUSTOX + .byte 0x00 @ SPECIES_LOTAD + .byte 0x00 @ SPECIES_LOMBRE + .byte 0x00 @ SPECIES_LUDICOLO + .byte 0x00 @ SPECIES_SEEDOT + .byte 0x00 @ SPECIES_NUZLEAF + .byte 0x00 @ SPECIES_SHIFTRY + .byte 0x00 @ SPECIES_NINCADA + .byte 0x00 @ SPECIES_NINJASK + .byte 0x00 @ SPECIES_SHEDINJA + .byte 0x00 @ SPECIES_TAILLOW + .byte 0x00 @ SPECIES_SWELLOW + .byte 0x00 @ SPECIES_SHROOMISH + .byte 0x00 @ SPECIES_BRELOOM + .byte 0x00 @ SPECIES_SPINDA + .byte 0x00 @ SPECIES_WINGULL + .byte 0x00 @ SPECIES_PELIPPER + .byte 0x00 @ SPECIES_SURSKIT + .byte 0x00 @ SPECIES_MASQUERAIN + .byte 0x00 @ SPECIES_WAILMER + .byte 0x0a @ SPECIES_WAILORD + .byte 0x00 @ SPECIES_SKITTY + .byte 0x00 @ SPECIES_DELCATTY + .byte 0x1e @ SPECIES_KECLEON + .byte 0x00 @ SPECIES_BALTOY + .byte 0x00 @ SPECIES_CLAYDOL + .byte 0x00 @ SPECIES_NOSEPASS + .byte 0x00 @ SPECIES_TORKOAL + .byte 0x00 @ SPECIES_SABLEYE + .byte 0x00 @ SPECIES_BARBOACH + .byte 0x00 @ SPECIES_WHISCASH + .byte 0x00 @ SPECIES_LUVDISC + .byte 0x00 @ SPECIES_CORPHISH + .byte 0x00 @ SPECIES_CRAWDAUNT + .byte 0x00 @ SPECIES_FEEBAS + .byte 0x2d @ SPECIES_MILOTIC + .byte 0x00 @ SPECIES_CARVANHA + .byte 0x00 @ SPECIES_SHARPEDO + .byte 0x00 @ SPECIES_TRAPINCH + .byte 0x00 @ SPECIES_VIBRAVA + .byte 0x00 @ SPECIES_FLYGON + .byte 0x00 @ SPECIES_MAKUHITA + .byte 0x00 @ SPECIES_HARIYAMA + .byte 0x00 @ SPECIES_ELECTRIKE + .byte 0x00 @ SPECIES_MANECTRIC + .byte 0x00 @ SPECIES_NUMEL + .byte 0x00 @ SPECIES_CAMERUPT + .byte 0x0f @ SPECIES_SPHEAL + .byte 0x00 @ SPECIES_SEALEO + .byte 0x00 @ SPECIES_WALREIN + .byte 0x00 @ SPECIES_CACNEA + .byte 0x00 @ SPECIES_CACTURNE + .byte 0x14 @ SPECIES_SNORUNT + .byte 0x00 @ SPECIES_GLALIE + .byte 0x00 @ SPECIES_LUNATONE + .byte 0x00 @ SPECIES_SOLROCK + .byte 0x00 @ SPECIES_AZURILL + .byte 0x00 @ SPECIES_SPOINK + .byte 0x0f @ SPECIES_GRUMPIG + .byte 0x00 @ SPECIES_PLUSLE + .byte 0x00 @ SPECIES_MINUN + .byte 0x00 @ SPECIES_MAWILE + .byte 0x00 @ SPECIES_MEDITITE + .byte 0x00 @ SPECIES_MEDICHAM + .byte 0x00 @ SPECIES_SWABLU + .byte 0x00 @ SPECIES_ALTARIA + .byte 0x0f @ SPECIES_WYNAUT + .byte 0x00 @ SPECIES_DUSKULL + .byte 0x1e @ SPECIES_DUSCLOPS + .byte 0x00 @ SPECIES_ROSELIA + .byte 0x00 @ SPECIES_SLAKOTH + .byte 0x00 @ SPECIES_VIGOROTH + .byte 0x00 @ SPECIES_SLAKING + .byte 0x00 @ SPECIES_GULPIN + .byte 0x00 @ SPECIES_SWALOT + .byte 0x00 @ SPECIES_TROPIUS + .byte 0x00 @ SPECIES_WHISMUR + .byte 0x00 @ SPECIES_LOUDRED + .byte 0x00 @ SPECIES_EXPLOUD + .byte 0x00 @ SPECIES_CLAMPERL + .byte 0x00 @ SPECIES_HUNTAIL + .byte 0x00 @ SPECIES_GOREBYSS + .byte 0x2d @ SPECIES_ABSOL + .byte 0x00 @ SPECIES_SHUPPET + .byte 0x00 @ SPECIES_BANETTE + .byte 0x00 @ SPECIES_SEVIPER + .byte 0x00 @ SPECIES_ZANGOOSE + .byte 0x00 @ SPECIES_RELICANTH + .byte 0x00 @ SPECIES_ARON + .byte 0x00 @ SPECIES_LAIRON + .byte 0x00 @ SPECIES_AGGRON + .byte 0x00 @ SPECIES_CASTFORM + .byte 0x00 @ SPECIES_VOLBEAT + .byte 0x00 @ SPECIES_ILLUMISE + .byte 0x00 @ SPECIES_LILEEP + .byte 0x00 @ SPECIES_CRADILY + .byte 0x00 @ SPECIES_ANORITH + .byte 0x00 @ SPECIES_ARMALDO + .byte 0x00 @ SPECIES_RALTS + .byte 0x00 @ SPECIES_KIRLIA + .byte 0x00 @ SPECIES_GARDEVOIR + .byte 0x00 @ SPECIES_BAGON + .byte 0x00 @ SPECIES_SHELGON + .byte 0x46 @ SPECIES_SALAMENCE + .byte 0x00 @ SPECIES_BELDUM + .byte 0x00 @ SPECIES_METANG + .byte 0x00 @ SPECIES_METAGROSS + .byte 0x00 @ SPECIES_REGIROCK + .byte 0x00 @ SPECIES_REGICE + .byte 0x00 @ SPECIES_REGISTEEL + .byte 0x3c @ SPECIES_KYOGRE + .byte 0x00 @ SPECIES_GROUDON + .byte 0x3c @ SPECIES_RAYQUAZA + .byte 0x00 @ SPECIES_LATIAS + .byte 0x00 @ SPECIES_LATIOS + .byte 0x00 @ SPECIES_JIRACHI + .byte 0x00 @ SPECIES_DEOXYS + .byte 0x00 @ SPECIES_CHIMECHO diff --git a/data/graphics/pokemon/front_anim_ids_table.inc b/data/graphics/pokemon/front_anim_ids_table.inc new file mode 100644 index 0000000000..6e2d7fe0e6 --- /dev/null +++ b/data/graphics/pokemon/front_anim_ids_table.inc @@ -0,0 +1,412 @@ +gMonFrontAnimIdsTable:: @ 83299EC + .byte 0x06 @ SPECIES_BULBASAUR + .byte 0x17 @ SPECIES_IVYSAUR + .byte 0x2f @ SPECIES_VENUSAUR + .byte 0x52 @ SPECIES_CHARMANDER + .byte 0x25 @ SPECIES_CHARMELEON + .byte 0x10 @ SPECIES_CHARIZARD + .byte 0x0b @ SPECIES_SQUIRTLE + .byte 0x13 @ SPECIES_WARTORTLE + .byte 0x19 @ SPECIES_BLASTOISE + .byte 0x0b @ SPECIES_CATERPIE + .byte 0x0b @ SPECIES_METAPOD + .byte 0x1d @ SPECIES_BUTTERFREE + .byte 0x46 @ SPECIES_WEEDLE + .byte 0x20 @ SPECIES_KAKUNA + .byte 0x02 @ SPECIES_BEEDRILL + .byte 0x47 @ SPECIES_PIDGEY + .byte 0x17 @ SPECIES_PIDGEOTTO + .byte 0x29 @ SPECIES_PIDGEOT + .byte 0x43 @ SPECIES_RATTATA + .byte 0x2b @ SPECIES_RATICATE + .byte 0x18 @ SPECIES_SPEAROW + .byte 0x2b @ SPECIES_FEAROW + .byte 0x16 @ SPECIES_EKANS + .byte 0x17 @ SPECIES_ARBOK + .byte 0x2c @ SPECIES_PIKACHU + .byte 0x17 @ SPECIES_RAICHU + .byte 0x2d @ SPECIES_SANDSHREW + .byte 0x17 @ SPECIES_SANDSLASH + .byte 0x00 @ SPECIES_NIDORAN_F + .byte 0x17 @ SPECIES_NIDORINA + .byte 0x0f @ SPECIES_NIDOQUEEN + .byte 0x09 @ SPECIES_NIDORAN_M + .byte 0x13 @ SPECIES_NIDORINO + .byte 0x0f @ SPECIES_NIDOKING + .byte 0x00 @ SPECIES_CLEFAIRY + .byte 0x4a @ SPECIES_CLEFABLE + .byte 0x17 @ SPECIES_VULPIX + .byte 0x10 @ SPECIES_NINETALES + .byte 0x48 @ SPECIES_JIGGLYPUFF + .byte 0x31 @ SPECIES_WIGGLYTUFF + .byte 0x00 @ SPECIES_ZUBAT + .byte 0x1d @ SPECIES_GOLBAT + .byte 0x00 @ SPECIES_ODDISH + .byte 0x45 @ SPECIES_GLOOM + .byte 0x49 @ SPECIES_VILEPLUME + .byte 0x46 @ SPECIES_PARAS + .byte 0x0f @ SPECIES_PARASECT + .byte 0x06 @ SPECIES_VENONAT + .byte 0x4b @ SPECIES_VENOMOTH + .byte 0x10 @ SPECIES_DIGLETT + .byte 0x4c @ SPECIES_DUGTRIO + .byte 0x52 @ SPECIES_MEOWTH + .byte 0x17 @ SPECIES_PERSIAN + .byte 0x06 @ SPECIES_PSYDUCK + .byte 0x4c @ SPECIES_GOLDUCK + .byte 0x32 @ SPECIES_MANKEY + .byte 0x48 @ SPECIES_PRIMEAPE + .byte 0x25 @ SPECIES_GROWLITHE + .byte 0x02 @ SPECIES_ARCANINE + .byte 0x00 @ SPECIES_POLIWAG + .byte 0x32 @ SPECIES_POLIWHIRL + .byte 0x19 @ SPECIES_POLIWRATH + .byte 0x31 @ SPECIES_ABRA + .byte 0x09 @ SPECIES_KADABRA + .byte 0x17 @ SPECIES_ALAKAZAM + .byte 0x00 @ SPECIES_MACHOP + .byte 0x10 @ SPECIES_MACHOKE + .byte 0x31 @ SPECIES_MACHAMP + .byte 0x17 @ SPECIES_BELLSPROUT + .byte 0x0d @ SPECIES_WEEPINBELL + .byte 0x32 @ SPECIES_VICTREEBEL + .byte 0x00 @ SPECIES_TENTACOOL + .byte 0x00 @ SPECIES_TENTACRUEL + .byte 0x48 @ SPECIES_GEODUDE + .byte 0x48 @ SPECIES_GRAVELER + .byte 0x2f @ SPECIES_GOLEM + .byte 0x20 @ SPECIES_PONYTA + .byte 0x11 @ SPECIES_RAPIDASH + .byte 0x45 @ SPECIES_SLOWPOKE + .byte 0x0b @ SPECIES_SLOWBRO + .byte 0x54 @ SPECIES_MAGNEMITE + .byte 0x2c @ SPECIES_MAGNETON + .byte 0x48 @ SPECIES_FARFETCH_D + .byte 0x4c @ SPECIES_DODUO + .byte 0x41 @ SPECIES_DODRIO + .byte 0x0b @ SPECIES_SEEL + .byte 0x45 @ SPECIES_DEWGONG + .byte 0x46 @ SPECIES_GRIMER + .byte 0x30 @ SPECIES_MUK + .byte 0x12 @ SPECIES_SHELLDER + .byte 0x1d @ SPECIES_CLOYSTER + .byte 0x15 @ SPECIES_GASTLY + .byte 0x35 @ SPECIES_HAUNTER + .byte 0x3a @ SPECIES_GENGAR + .byte 0x43 @ SPECIES_ONIX + .byte 0x4f @ SPECIES_DROWZEE + .byte 0x09 @ SPECIES_HYPNO + .byte 0x03 @ SPECIES_KRABBY + .byte 0x4b @ SPECIES_KINGLER + .byte 0x00 @ SPECIES_VOLTORB + .byte 0x00 @ SPECIES_ELECTRODE + .byte 0x46 @ SPECIES_EXEGGCUTE + .byte 0x32 @ SPECIES_EXEGGUTOR + .byte 0x48 @ SPECIES_CUBONE + .byte 0x05 @ SPECIES_MAROWAK + .byte 0x16 @ SPECIES_HITMONLEE + .byte 0x09 @ SPECIES_HITMONCHAN + .byte 0x45 @ SPECIES_LICKITUNG + .byte 0x13 @ SPECIES_KOFFING + .byte 0x04 @ SPECIES_WEEZING + .byte 0x10 @ SPECIES_RHYHORN + .byte 0x13 @ SPECIES_RHYDON + .byte 0x45 @ SPECIES_CHANSEY + .byte 0x48 @ SPECIES_TANGELA + .byte 0x17 @ SPECIES_KANGASKHAN + .byte 0x12 @ SPECIES_HORSEA + .byte 0x04 @ SPECIES_SEADRA + .byte 0x0d @ SPECIES_GOLDEEN + .byte 0x1c @ SPECIES_SEAKING + .byte 0x4e @ SPECIES_STARYU + .byte 0x12 @ SPECIES_STARMIE + .byte 0x46 @ SPECIES_MR_MIME + .byte 0x02 @ SPECIES_SCYTHER + .byte 0x17 @ SPECIES_JYNX + .byte 0x2c @ SPECIES_ELECTABUZZ + .byte 0x0f @ SPECIES_MAGMAR + .byte 0x09 @ SPECIES_PINSIR + .byte 0x19 @ SPECIES_TAUROS + .byte 0x05 @ SPECIES_MAGIKARP + .byte 0x48 @ SPECIES_GYARADOS + .byte 0x17 @ SPECIES_LAPRAS + .byte 0x01 @ SPECIES_DITTO + .byte 0x17 @ SPECIES_EEVEE + .byte 0x17 @ SPECIES_VAPOREON + .byte 0x00 @ SPECIES_JOLTEON + .byte 0x17 @ SPECIES_FLAREON + .byte 0x52 @ SPECIES_PORYGON + .byte 0x51 @ SPECIES_OMANYTE + .byte 0x09 @ SPECIES_OMASTAR + .byte 0x1d @ SPECIES_KABUTO + .byte 0x0f @ SPECIES_KABUTOPS + .byte 0x47 @ SPECIES_AERODACTYL + .byte 0x0b @ SPECIES_SNORLAX + .byte 0x09 @ SPECIES_ARTICUNO + .byte 0x2c @ SPECIES_ZAPDOS + .byte 0x45 @ SPECIES_MOLTRES + .byte 0x00 @ SPECIES_DRATINI + .byte 0x10 @ SPECIES_DRAGONAIR + .byte 0x47 @ SPECIES_DRAGONITE + .byte 0x09 @ SPECIES_MEWTWO + .byte 0x0d @ SPECIES_MEW + .byte 0x00 @ SPECIES_CHIKORITA + .byte 0x00 @ SPECIES_BAYLEEF + .byte 0x17 @ SPECIES_MEGANIUM + .byte 0x52 @ SPECIES_CYNDAQUIL + .byte 0x17 @ SPECIES_QUILAVA + .byte 0x10 @ SPECIES_TYPHLOSION + .byte 0x31 @ SPECIES_TOTODILE + .byte 0x0f @ SPECIES_CROCONAW + .byte 0x0f @ SPECIES_FERALIGATR + .byte 0x00 @ SPECIES_SENTRET + .byte 0x32 @ SPECIES_FURRET + .byte 0x47 @ SPECIES_HOOTHOOT + .byte 0x17 @ SPECIES_NOCTOWL + .byte 0x52 @ SPECIES_LEDYBA + .byte 0x47 @ SPECIES_LEDIAN + .byte 0x4f @ SPECIES_SPINARAK + .byte 0x0f @ SPECIES_ARIADOS + .byte 0x00 @ SPECIES_CROBAT + .byte 0x45 @ SPECIES_CHINCHOU + .byte 0x51 @ SPECIES_LANTURN + .byte 0x1e @ SPECIES_PICHU + .byte 0x52 @ SPECIES_CLEFFA + .byte 0x0c @ SPECIES_IGGLYBUFF + .byte 0x0b @ SPECIES_TOGEPI + .byte 0x00 @ SPECIES_TOGETIC + .byte 0x31 @ SPECIES_NATU + .byte 0x09 @ SPECIES_XATU + .byte 0x00 @ SPECIES_MAREEP + .byte 0x1e @ SPECIES_FLAAFFY + .byte 0x2c @ SPECIES_AMPHAROS + .byte 0x0b @ SPECIES_BELLOSSOM + .byte 0x00 @ SPECIES_MARILL + .byte 0x4a @ SPECIES_AZUMARILL + .byte 0x46 @ SPECIES_SUDOWOODO + .byte 0x32 @ SPECIES_POLITOED + .byte 0x1c @ SPECIES_HOPPIP + .byte 0x18 @ SPECIES_SKIPLOOM + .byte 0x51 @ SPECIES_JUMPLUFF + .byte 0x32 @ SPECIES_AIPOM + .byte 0x52 @ SPECIES_SUNKERN + .byte 0x00 @ SPECIES_SUNFLORA + .byte 0x2b @ SPECIES_YANMA + .byte 0x00 @ SPECIES_WOOPER + .byte 0x16 @ SPECIES_QUAGSIRE + .byte 0x09 @ SPECIES_ESPEON + .byte 0x10 @ SPECIES_UMBREON + .byte 0x00 @ SPECIES_MURKROW + .byte 0x13 @ SPECIES_SLOWKING + .byte 0x1c @ SPECIES_MISDREAVUS + .byte 0x0a @ SPECIES_UNOWN + .byte 0x30 @ SPECIES_WOBBUFFET + .byte 0x1e @ SPECIES_GIRAFARIG + .byte 0x0b @ SPECIES_PINECO + .byte 0x10 @ SPECIES_FORRETRESS + .byte 0x00 @ SPECIES_DUNSPARCE + .byte 0x13 @ SPECIES_GLIGAR + .byte 0x0f @ SPECIES_STEELIX + .byte 0x17 @ SPECIES_SNUBBULL + .byte 0x10 @ SPECIES_GRANBULL + .byte 0x3a @ SPECIES_QWILFISH + .byte 0x02 @ SPECIES_SCIZOR + .byte 0x0b @ SPECIES_SHUCKLE + .byte 0x41 @ SPECIES_HERACROSS + .byte 0x16 @ SPECIES_SNEASEL + .byte 0x17 @ SPECIES_TEDDIURSA + .byte 0x10 @ SPECIES_URSARING + .byte 0x17 @ SPECIES_SLUGMA + .byte 0x17 @ SPECIES_MAGCARGO + .byte 0x00 @ SPECIES_SWINUB + .byte 0x0f @ SPECIES_PILOSWINE + .byte 0x03 @ SPECIES_CORSOLA + .byte 0x52 @ SPECIES_REMORAID + .byte 0x17 @ SPECIES_OCTILLERY + .byte 0x52 @ SPECIES_DELIBIRD + .byte 0x0d @ SPECIES_MANTINE + .byte 0x17 @ SPECIES_SKARMORY + .byte 0x17 @ SPECIES_HOUNDOUR + .byte 0x10 @ SPECIES_HOUNDOOM + .byte 0x42 @ SPECIES_KINGDRA + .byte 0x32 @ SPECIES_PHANPY + .byte 0x19 @ SPECIES_DONPHAN + .byte 0x00 @ SPECIES_PORYGON2 + .byte 0x00 @ SPECIES_STANTLER + .byte 0x31 @ SPECIES_SMEARGLE + .byte 0x16 @ SPECIES_TYROGUE + .byte 0x02 @ SPECIES_HITMONTOP + .byte 0x09 @ SPECIES_SMOOCHUM + .byte 0x2c @ SPECIES_ELEKID + .byte 0x00 @ SPECIES_MAGBY + .byte 0x45 @ SPECIES_MILTANK + .byte 0x00 @ SPECIES_BLISSEY + .byte 0x2c @ SPECIES_RAIKOU + .byte 0x09 @ SPECIES_ENTEI + .byte 0x10 @ SPECIES_SUICUNE + .byte 0x52 @ SPECIES_LARVITAR + .byte 0x10 @ SPECIES_PUPITAR + .byte 0x0f @ SPECIES_TYRANITAR + .byte 0x3a @ SPECIES_LUGIA + .byte 0x09 @ SPECIES_HO_OH + .byte 0x18 @ SPECIES_CELEBI + .byte 0x00 @ 252 + .byte 0x00 @ 253 + .byte 0x00 @ 254 + .byte 0x00 @ 255 + .byte 0x00 @ 256 + .byte 0x00 @ 257 + .byte 0x00 @ 258 + .byte 0x00 @ 259 + .byte 0x00 @ 260 + .byte 0x00 @ 261 + .byte 0x00 @ 262 + .byte 0x00 @ 263 + .byte 0x00 @ 264 + .byte 0x00 @ 265 + .byte 0x00 @ 266 + .byte 0x00 @ 267 + .byte 0x00 @ 268 + .byte 0x00 @ 269 + .byte 0x00 @ 270 + .byte 0x00 @ 271 + .byte 0x00 @ 272 + .byte 0x00 @ 273 + .byte 0x00 @ 274 + .byte 0x00 @ 275 + .byte 0x00 @ 276 + .byte 0x00 @ SPECIES_TREECKO + .byte 0x17 @ SPECIES_GROVYLE + .byte 0x10 @ SPECIES_SCEPTILE + .byte 0x16 @ SPECIES_TORCHIC + .byte 0x06 @ SPECIES_COMBUSKEN + .byte 0x0f @ SPECIES_BLAZIKEN + .byte 0x01 @ SPECIES_MUDKIP + .byte 0x04 @ SPECIES_MARSHTOMP + .byte 0x1e @ SPECIES_SWAMPERT + .byte 0x10 @ SPECIES_POOCHYENA + .byte 0x10 @ SPECIES_MIGHTYENA + .byte 0x03 @ SPECIES_ZIGZAGOON + .byte 0x09 @ SPECIES_LINOONE + .byte 0x00 @ SPECIES_WURMPLE + .byte 0x00 @ SPECIES_SILCOON + .byte 0x04 @ SPECIES_BEAUTIFLY + .byte 0x04 @ SPECIES_CASCOON + .byte 0x06 @ SPECIES_DUSTOX + .byte 0x00 @ SPECIES_LOTAD + .byte 0x00 @ SPECIES_LOMBRE + .byte 0x49 @ SPECIES_LUDICOLO + .byte 0x05 @ SPECIES_SEEDOT + .byte 0x00 @ SPECIES_NUZLEAF + .byte 0x02 @ SPECIES_SHIFTRY + .byte 0x00 @ SPECIES_NINCADA + .byte 0x46 @ SPECIES_NINJASK + .byte 0x1c @ SPECIES_SHEDINJA + .byte 0x1e @ SPECIES_TAILLOW + .byte 0x01 @ SPECIES_SWELLOW + .byte 0x00 @ SPECIES_SHROOMISH + .byte 0x00 @ SPECIES_BRELOOM + .byte 0x31 @ SPECIES_SPINDA + .byte 0x1b @ SPECIES_WINGULL + .byte 0x1c @ SPECIES_PELIPPER + .byte 0x00 @ SPECIES_SURSKIT + .byte 0x00 @ SPECIES_MASQUERAIN + .byte 0x01 @ SPECIES_WAILMER + .byte 0x1c @ SPECIES_WAILORD + .byte 0x00 @ SPECIES_SKITTY + .byte 0x17 @ SPECIES_DELCATTY + .byte 0x35 @ SPECIES_KECLEON + .byte 0x1d @ SPECIES_BALTOY + .byte 0x51 @ SPECIES_CLAYDOL + .byte 0x49 @ SPECIES_NOSEPASS + .byte 0x17 @ SPECIES_TORKOAL + .byte 0x15 @ SPECIES_SABLEYE + .byte 0x49 @ SPECIES_BARBOACH + .byte 0x49 @ SPECIES_WHISCASH + .byte 0x1d @ SPECIES_LUVDISC + .byte 0x10 @ SPECIES_CORPHISH + .byte 0x09 @ SPECIES_CRAWDAUNT + .byte 0x49 @ SPECIES_FEEBAS + .byte 0x22 @ SPECIES_MILOTIC + .byte 0x49 @ SPECIES_CARVANHA + .byte 0x56 @ SPECIES_SHARPEDO + .byte 0x10 @ SPECIES_TRAPINCH + .byte 0x0f @ SPECIES_VIBRAVA + .byte 0x4b @ SPECIES_FLYGON + .byte 0x0b @ SPECIES_MAKUHITA + .byte 0x34 @ SPECIES_HARIYAMA + .byte 0x00 @ SPECIES_ELECTRIKE + .byte 0x00 @ SPECIES_MANECTRIC + .byte 0x04 @ SPECIES_NUMEL + .byte 0x10 @ SPECIES_CAMERUPT + .byte 0x53 @ SPECIES_SPHEAL + .byte 0x17 @ SPECIES_SEALEO + .byte 0x0f @ SPECIES_WALREIN + .byte 0x49 @ SPECIES_CACNEA + .byte 0x04 @ SPECIES_CACTURNE + .byte 0x45 @ SPECIES_SNORUNT + .byte 0x0a @ SPECIES_GLALIE + .byte 0x0e @ SPECIES_LUNATONE + .byte 0x08 @ SPECIES_SOLROCK + .byte 0x00 @ SPECIES_AZURILL + .byte 0x56 @ SPECIES_SPOINK + .byte 0x32 @ SPECIES_GRUMPIG + .byte 0x00 @ SPECIES_PLUSLE + .byte 0x01 @ SPECIES_MINUN + .byte 0x00 @ SPECIES_MAWILE + .byte 0x05 @ SPECIES_MEDITITE + .byte 0x45 @ SPECIES_MEDICHAM + .byte 0x04 @ SPECIES_SWABLU + .byte 0x16 @ SPECIES_ALTARIA + .byte 0x32 @ SPECIES_WYNAUT + .byte 0x0a @ SPECIES_DUSKULL + .byte 0x02 @ SPECIES_DUSCLOPS + .byte 0x45 @ SPECIES_ROSELIA + .byte 0x45 @ SPECIES_SLAKOTH + .byte 0x31 @ SPECIES_VIGOROTH + .byte 0x45 @ SPECIES_SLAKING + .byte 0x00 @ SPECIES_GULPIN + .byte 0x45 @ SPECIES_SWALOT + .byte 0x10 @ SPECIES_TROPIUS + .byte 0x03 @ SPECIES_WHISMUR + .byte 0x49 @ SPECIES_LOUDRED + .byte 0x19 @ SPECIES_EXPLOUD + .byte 0x12 @ SPECIES_CLAMPERL + .byte 0x09 @ SPECIES_HUNTAIL + .byte 0x1c @ SPECIES_GOREBYSS + .byte 0x11 @ SPECIES_ABSOL + .byte 0x1c @ SPECIES_SHUPPET + .byte 0x0d @ SPECIES_BANETTE + .byte 0x17 @ SPECIES_SEVIPER + .byte 0x09 @ SPECIES_ZANGOOSE + .byte 0x1a @ SPECIES_RELICANTH + .byte 0x45 @ SPECIES_ARON + .byte 0x00 @ SPECIES_LAIRON + .byte 0x19 @ SPECIES_AGGRON + .byte 0x1d @ SPECIES_CASTFORM + .byte 0x00 @ SPECIES_VOLBEAT + .byte 0x05 @ SPECIES_ILLUMISE + .byte 0x17 @ SPECIES_LILEEP + .byte 0x19 @ SPECIES_CRADILY + .byte 0x12 @ SPECIES_ANORITH + .byte 0x10 @ SPECIES_ARMALDO + .byte 0x45 @ SPECIES_RALTS + .byte 0x00 @ SPECIES_KIRLIA + .byte 0x00 @ SPECIES_GARDEVOIR + .byte 0x19 @ SPECIES_BAGON + .byte 0x04 @ SPECIES_SHELGON + .byte 0x0f @ SPECIES_SALAMENCE + .byte 0x0f @ SPECIES_BELDUM + .byte 0x04 @ SPECIES_METANG + .byte 0x10 @ SPECIES_METAGROSS + .byte 0x01 @ SPECIES_REGIROCK + .byte 0x44 @ SPECIES_REGICE + .byte 0x09 @ SPECIES_REGISTEEL + .byte 0x2d @ SPECIES_KYOGRE + .byte 0x10 @ SPECIES_GROUDON + .byte 0x0f @ SPECIES_RAYQUAZA + .byte 0x2d @ SPECIES_LATIAS + .byte 0x10 @ SPECIES_LATIOS + .byte 0x0d @ SPECIES_JIRACHI + .byte 0x1b @ SPECIES_DEOXYS + .byte 0x1d @ SPECIES_CHIMECHO diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s index 831664bb70..9d6c7ac2e0 100644 --- a/data/pokemon_icon.s +++ b/data/pokemon_icon.s @@ -17,7 +17,8 @@ gUnknown_0857C570:: @ 857C570 .incbin "baserom.gba", 0x57c570, 0x44 gUnknown_0857C5B4:: @ 857C5B4 - .incbin "baserom.gba", 0x57c5b4, 0x34 + .incbin "baserom.gba", 0x57c5b4, 0x14 + .incbin "baserom.gba", 0x57c5c8, 0x20 gUnknown_0857C5E8:: @ 857C5E8 .incbin "baserom.gba", 0x57c5e8, 0x8 From 3cc20c7c3f9c3b6a3c0fc8b47c0128c067f34a4a Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 6 Oct 2017 17:06:45 +0200 Subject: [PATCH 096/182] battle 2 is done --- asm/battle_2.s | 1422 ----------------------------- asm/rom3.s | 6 +- data/battle_scripts_1.s | 2 +- data/battle_scripts_2.s | 2 +- include/battle.h | 166 +--- include/battle_2.h | 19 + include/battle_controllers.h | 49 +- include/battle_script_commands.h | 58 ++ include/battle_util.h | 83 ++ include/link.h | 1 + include/pokemon.h | 2 + ld_script.txt | 3 +- src/battle_2.c | 235 ++++- src/battle_script_commands.c | 18 +- src/{battle_3.c => battle_util.c} | 284 +++++- 15 files changed, 708 insertions(+), 1642 deletions(-) delete mode 100644 asm/battle_2.s create mode 100644 include/battle_2.h create mode 100644 include/battle_script_commands.h create mode 100644 include/battle_util.h rename src/{battle_3.c => battle_util.c} (96%) diff --git a/asm/battle_2.s b/asm/battle_2.s deleted file mode 100644 index c0d8fd72a1..0000000000 --- a/asm/battle_2.s +++ /dev/null @@ -1,1422 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_803EE48 -sub_803EE48: @ 803EE48 - push {r4-r6,lr} - ldr r4, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r5, =gCurrentTurnActionNumber - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0803EF0C - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - strb r1, [r5] - ldr r2, =gActiveBank - movs r0, 0 - strb r0, [r2] - lsls r1, 24 - cmp r1, 0 - beq _0803EEE0 - adds r4, r2, 0 - ldr r6, =gActionForBanks - ldr r5, =gBattleOutcome -_0803EE7C: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803EEBC - ldrb r0, [r4] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803EECE - ldrb r0, [r5] - movs r1, 0x2 - b _0803EECA - .pool -_0803EEBC: - ldrb r0, [r4] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803EECE - ldrb r0, [r5] - movs r1, 0x1 -_0803EECA: - orrs r0, r1 - strb r0, [r5] -_0803EECE: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803EE7C -_0803EEE0: - ldr r2, =gBattleOutcome - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - b _0803EF96 - .pool -_0803EF0C: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803EF4C - ldrb r0, [r4] - bl TryRunFromBattle - lsls r0, 24 - cmp r0, 0 - bne _0803EF98 - ldrb r0, [r4] - bl ClearFuryCutterDestinyBondGrudge - ldr r1, =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAB02 - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - b _0803EF96 - .pool -_0803EF4C: - ldr r1, =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x0400e000 - ands r0, r1 - cmp r0, 0 - beq _0803EF8C - ldr r1, =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAB02 - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - b _0803EF96 - .pool -_0803EF8C: - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r5] - ldr r1, =gBattleOutcome - movs r0, 0x6 -_0803EF96: - strb r0, [r1] -_0803EF98: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803EE48 - - thumb_func_start sub_803EFA8 -sub_803EFA8: @ 803EFA8 - ldr r2, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG0_Y - strh r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0] - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - bx lr - .pool - thumb_func_end sub_803EFA8 - - thumb_func_start bs5_8016AC0 -bs5_8016AC0: @ 803EFF0 - ldr r2, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG0_Y - strh r1, [r0] - ldr r1, =gNumSafariBalls - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - ldr r1, =gLastUsedItem - movs r0, 0x5 - strh r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gBattlescriptsForBallThrow - ldr r0, [r0, 0x14] - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - bx lr - .pool - thumb_func_end bs5_8016AC0 - - thumb_func_start sub_803F050 -sub_803F050: @ 803F050 - push {r4-r6,lr} - ldr r3, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldr r0, =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG0_Y - strh r1, [r0] - ldr r6, =gBattleCommunication - ldr r2, =gBattleBufferB - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - subs r0, 0x1 - strb r0, [r6, 0x5] - ldr r1, =gLastUsedItem - ldrb r0, [r3] - lsls r0, 9 - adds r2, 0x2 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1] - ldr r1, =gBattleResults - ldrb r0, [r1, 0x1F] - cmp r0, 0xFE - bhi _0803F096 - adds r0, 0x1 - strb r0, [r1, 0x1F] -_0803F096: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x7A - ldrb r0, [r1] - cmp r0, 0x2 - bhi _0803F0A8 - adds r0, 0x1 - strb r0, [r1] -_0803F0A8: - ldr r0, [r2] - adds r3, r0, 0 - adds r3, 0x7B - ldrb r5, [r3] - adds r4, r5, 0 - cmp r4, 0x1 - bls _0803F100 - ldr r2, =gUnknown_0831BCE0 - adds r0, 0x7A - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - ldrb r6, [r6, 0x5] - adds r0, r6 - adds r0, r2 - ldrb r0, [r0] - cmp r4, r0 - bcs _0803F0FC - movs r0, 0x1 - b _0803F0FE - .pool -_0803F0FC: - subs r0, r5, r0 -_0803F0FE: - strb r0, [r3] -_0803F100: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0, 0x8] - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F050 - - thumb_func_start sub_803F120 -sub_803F120: @ 803F120 - push {r4,lr} - ldr r2, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gBattle_BG0_X - movs r4, 0 - strh r4, [r0] - ldr r0, =gBattle_BG0_Y - strh r4, [r0] - ldr r3, =gBattleStruct - ldr r0, [r3] - adds r2, r0, 0 - adds r2, 0x7C - ldr r1, =gUnknown_0831BCEF - adds r0, 0x79 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - ldrb r1, [r2] - adds r0, r1 - strb r0, [r2] - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x7C - ldrb r0, [r1] - cmp r0, 0x14 - bls _0803F162 - movs r0, 0x14 - strb r0, [r1] -_0803F162: - ldr r0, [r3] - adds r2, r0, 0 - adds r2, 0x7B - ldr r1, =gUnknown_0831BCF3 - adds r0, 0x79 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - ldrb r1, [r2] - adds r0, r1 - strb r0, [r2] - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x7B - ldrb r0, [r1] - cmp r0, 0x14 - bls _0803F188 - movs r0, 0x14 - strb r0, [r1] -_0803F188: - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x79 - ldrb r0, [r1] - cmp r0, 0x2 - bhi _0803F1C4 - adds r0, 0x1 - strb r0, [r1] - ldr r0, =gBattleCommunication - strb r4, [r0, 0x5] - b _0803F1CA - .pool -_0803F1C4: - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_0803F1CA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0, 0x4] - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F120 - - thumb_func_start bs8_exit_by_flight -bs8_exit_by_flight: @ 803F1F0 - push {r4,lr} - ldr r2, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r4, =gCurrentTurnActionNumber - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x11 - bl PlaySE - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r4] - ldr r1, =gBattleOutcome - movs r0, 0x4 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end bs8_exit_by_flight - - thumb_func_start bs9_8016C9C -bs9_8016C9C: @ 803F22C - ldr r3, =gBankAttacker - ldr r1, =gBanksByTurnOrder - ldr r0, =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - strb r2, [r3] - ldr r0, =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG0_Y - strh r1, [r0] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - ldr r2, =gBattlePartyID - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0, 0xC] - str r0, [r1] - ldr r1, =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - ldr r1, =gActionsByTurnOrder - movs r0, 0xC - strb r0, [r1, 0x1] - bx lr - .pool - thumb_func_end bs9_8016C9C - - thumb_func_start bsB_exit_by_move -bsB_exit_by_move: @ 803F2A4 - push {lr} - bl sub_8041728 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0803F2C0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4D - strb r1, [r0] - ldr r1, =gCurrentActionFuncId - movs r0, 0xC - strb r0, [r1] -_0803F2C0: - pop {r0} - bx r0 - .pool - thumb_func_end bsB_exit_by_move - - thumb_func_start bsD_proceed -bsD_proceed: @ 803F2CC - ldr r1, =gCurrentTurnActionNumber - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r3, =gCurrentActionFuncId - ldr r2, =gActionsByTurnOrder - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r3] - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xf1e892af - ands r0, r1 - str r0, [r2] - bx lr - .pool - thumb_func_end bsD_proceed - - thumb_func_start bsC_8016D70 -bsC_8016D70: @ 803F300 - push {r4-r6,lr} - ldr r1, =gBanksByTurnOrder - ldr r2, =gCurrentTurnActionNumber - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - ldr r6, =gBattleStruct - ldr r1, [r6] - adds r0, r1 - adds r0, 0x5C - movs r1, 0x6 - strb r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r3, =gCurrentActionFuncId - ldr r1, =gActionsByTurnOrder - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - bl SpecialStatusesClear - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xf1e892af - ands r0, r1 - str r0, [r2] - ldr r0, =gCurrentMove - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattleMoveDamage - movs r4, 0 - str r4, [r0] - ldr r0, =gBattleMoveFlags - strb r1, [r0] - ldr r5, =gBattleScripting - strb r1, [r5, 0x18] - strb r1, [r5, 0x19] - ldr r2, =gUnknown_02024250 - ldr r3, =gBankAttacker - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - strh r4, [r0] - ldr r2, =gUnknown_02024258 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - strh r4, [r0] - ldr r0, [r6] - strb r1, [r0, 0x13] - ldr r0, =gDynamicBasePower - strh r4, [r0] - strb r1, [r5, 0x14] - ldr r0, =gBattleCommunication - strb r1, [r0, 0x3] - strb r1, [r0, 0x4] - strb r1, [r5, 0x16] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bsC_8016D70 - - thumb_func_start GetBattleBank -GetBattleBank: @ 803F3CC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0 - cmp r1, 0xE - bhi _0803F47A - lsls r0, r1, 2 - ldr r1, =_0803F3E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803F3E8: - .4byte _0803F424 - .4byte _0803F430 - .4byte _0803F43C - .4byte _0803F458 - .4byte _0803F464 - .4byte _0803F458 - .4byte _0803F464 - .4byte _0803F448 - .4byte _0803F464 - .4byte _0803F464 - .4byte _0803F44C - .4byte _0803F464 - .4byte _0803F468 - .4byte _0803F46C - .4byte _0803F470 -_0803F424: - ldr r0, =gBankTarget - ldrb r0, [r0] - b _0803F47A - .pool -_0803F430: - ldr r0, =gBankAttacker - ldrb r0, [r0] - b _0803F47A - .pool -_0803F43C: - ldr r0, =gEffectBank - ldrb r0, [r0] - b _0803F47A - .pool -_0803F448: - movs r0, 0 - b _0803F47A -_0803F44C: - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - b _0803F47A - .pool -_0803F458: - ldr r0, =gBank1 - ldrb r0, [r0] - b _0803F47A - .pool -_0803F464: - movs r0, 0 - b _0803F472 -_0803F468: - movs r0, 0x1 - b _0803F472 -_0803F46C: - movs r0, 0x2 - b _0803F472 -_0803F470: - movs r0, 0x3 -_0803F472: - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 -_0803F47A: - pop {r1} - bx r1 - thumb_func_end GetBattleBank - - thumb_func_start PressurePPLose -PressurePPLose: @ 803F480 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gBattleMons - movs r4, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r1 - cmp r0, 0x2E - bne _0803F532 - movs r3, 0 - adds r0, r5, 0 - muls r0, r4 - adds r1, 0xC - adds r1, r0, r1 - b _0803F4BC - .pool -_0803F4B4: - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x3 - bgt _0803F4C2 -_0803F4BC: - ldrh r0, [r1] - cmp r0, r2 - bne _0803F4B4 -_0803F4C2: - cmp r3, 0x4 - beq _0803F532 - movs r7, 0x58 - adds r2, r5, 0 - muls r2, r7 - adds r0, r3, r2 - mov r6, r12 - adds r6, 0x24 - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _0803F4DE - subs r0, 0x1 - strb r0, [r1] -_0803F4DE: - mov r0, r12 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0803F532 - ldr r1, =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803F532 - ldr r4, =gActiveBank - strb r5, [r4] - adds r1, r3, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r7 - adds r0, r6 - adds r0, r3 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803F532: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end PressurePPLose - - thumb_func_start PressurePPLoseOnUsingImprision -PressurePPLoseOnUsingImprision: @ 803F548 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x4 - mov r8, r0 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bge _0803F5F0 - ldr r1, =gBattleMons - movs r0, 0x58 - adds r7, r5, 0 - muls r7, r0 - adds r1, 0xC - mov r10, r1 -_0803F57E: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - adds r6, r4, 0x1 - cmp r9, r0 - beq _0803F5E6 - ldr r0, =gBattleMons - movs r3, 0x58 - adds r1, r4, 0 - muls r1, r3 - adds r1, r0 - adds r1, 0x20 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0x2E - bne _0803F5E6 - movs r2, 0 - adds r0, r5, 0 - muls r0, r3 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x8F - lsls r1, 1 - cmp r0, r1 - beq _0803F5CE - adds r3, r1, 0 - mov r0, r10 - adds r1, r7, r0 -_0803F5C0: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _0803F5CE - ldrh r0, [r1] - cmp r0, r3 - bne _0803F5C0 -_0803F5CE: - cmp r2, 0x4 - beq _0803F5E6 - mov r8, r2 - adds r1, r2, r7 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0803F5E6 - subs r0, 0x1 - strb r0, [r1] -_0803F5E6: - adds r4, r6, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803F57E -_0803F5F0: - mov r1, r8 - cmp r1, 0x4 - beq _0803F658 - ldr r6, =gBattleMons - movs r3, 0x58 - adds r0, r5, 0 - muls r0, r3 - adds r1, r6, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0803F658 - ldr r1, =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - mov r4, r8 - lsls r0, r4, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803F658 - ldr r4, =gActiveBank - strb r5, [r4] - mov r1, r8 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r3 - adds r2, r6, 0 - adds r2, 0x24 - adds r0, r2 - add r0, r8 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803F658: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end PressurePPLoseOnUsingImprision - - thumb_func_start PressurePPLoseOnUsingPerishSong -PressurePPLoseOnUsingPerishSong: @ 803F67C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - movs r6, 0x4 - movs r1, 0 - ldr r0, =gNoOfAllBanks - mov r8, r0 - ldrb r0, [r0] - cmp r1, r0 - bge _0803F6FE - ldr r7, =gBattleMons - movs r2, 0x58 - mov r12, r2 - mov r5, r12 - muls r5, r3 - adds r0, r7, 0 - adds r0, 0xC - adds r2, r5, r0 - mov r10, r2 - mov r9, r5 -_0803F6AE: - mov r0, r12 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r1, 0x1 - cmp r0, 0x2E - bne _0803F6F4 - cmp r1, r3 - beq _0803F6F4 - movs r2, 0 - mov r1, r10 - ldrh r0, [r1] - cmp r0, 0xC3 - beq _0803F6DE - ldr r1, =gBattleMons + 0xC - add r1, r9 -_0803F6D0: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _0803F6DE - ldrh r0, [r1] - cmp r0, 0xC3 - bne _0803F6D0 -_0803F6DE: - cmp r2, 0x4 - beq _0803F6F4 - adds r6, r2, 0 - adds r0, r6, r5 - ldr r2, =gBattleMons + 0x24 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0803F6F4 - subs r0, 0x1 - strb r0, [r1] -_0803F6F4: - adds r1, r4, 0 - mov r0, r8 - ldrb r0, [r0] - cmp r1, r0 - blt _0803F6AE -_0803F6FE: - cmp r6, 0x4 - beq _0803F762 - ldr r7, =gBattleMons - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0803F762 - ldr r1, =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r6, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803F762 - ldr r4, =gActiveBank - strb r3, [r4] - adds r1, r6, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r5 - adds r2, r7, 0 - adds r2, 0x24 - adds r0, r2 - adds r0, r6 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetMonData - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0803F762: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end PressurePPLoseOnUsingPerishSong - - thumb_func_start sub_803F790 -sub_803F790: @ 803F790 - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803F7D0 - movs r2, 0 - ldr r4, =gNoOfAllBanks - ldrb r0, [r4] - cmp r2, r0 - bge _0803F7EE - ldr r3, =gBattleExecBuffer - ldr r5, =gBitTable -_0803F7AC: - ldm r5!, {r1} - lsls r1, 28 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _0803F7AC - b _0803F7EE - .pool -_0803F7D0: - movs r2, 0 - ldr r4, =gNoOfAllBanks - ldrb r0, [r4] - cmp r2, r0 - bge _0803F7EE - ldr r3, =gBattleExecBuffer - ldr r5, =gBitTable -_0803F7DE: - ldr r0, [r3] - ldm r5!, {r1} - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _0803F7DE -_0803F7EE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F790 - - thumb_func_start MarkBufferBankForExecution -MarkBufferBankForExecution: @ 803F800 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803F834 - ldr r2, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - b _0803F844 - .pool -_0803F834: - ldr r2, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] -_0803F844: - pop {r0} - bx r0 - .pool - thumb_func_end MarkBufferBankForExecution - - thumb_func_start sub_803F850 -sub_803F850: @ 803F850 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r5, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r7, 2 - adds r6, r0, r1 - b _0803F87A - .pool -_0803F86C: - lsls r0, r4, 2 - ldr r1, [r6] - lsls r1, r0 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - adds r4, 0x1 -_0803F87A: - bl sub_8009FCC - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _0803F86C - ldr r2, =gBattleExecBuffer - movs r1, 0x80 - lsls r1, 21 - lsls r1, r7 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F850 - - thumb_func_start CancelMultiTurnMoves -CancelMultiTurnMoves: @ 803F8A0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleMons - movs r2, 0x58 - adds r3, r0, 0 - muls r3, r2 - adds r1, 0x50 - adds r3, r1 - ldr r1, [r3] - ldr r2, =0xffffefff - ands r1, r2 - ldr r2, =0xfffff3ff - ands r1, r2 - movs r2, 0x71 - negs r2, r2 - ands r1, r2 - ldr r2, =0xfffffcff - ands r1, r2 - str r1, [r3] - ldr r1, =gStatuses3 - lsls r2, r0, 2 - adds r2, r1 - ldr r1, [r2] - ldr r3, =0xfffbff3f - ands r1, r3 - str r1, [r2] - ldr r2, =gDisableStructs - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x11] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x11] - movs r0, 0 - strb r0, [r1, 0x10] - bx lr - .pool - thumb_func_end CancelMultiTurnMoves - - thumb_func_start HasMoveFailed -HasMoveFailed: @ 803F90C - push {lr} - lsls r0, 24 - ldr r1, =gProtectStructs - lsrs r0, 20 - adds r1, r0, r1 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - bne _0803F952 - ldrb r2, [r1, 0x1] - lsls r0, r2, 30 - cmp r0, 0 - blt _0803F952 - lsls r0, r2, 26 - cmp r0, 0 - blt _0803F952 - lsls r0, r2, 25 - cmp r0, 0 - blt _0803F952 - lsrs r0, r2, 7 - cmp r0, 0 - bne _0803F952 - ldrb r1, [r1, 0x2] - lsls r0, r1, 31 - cmp r0, 0 - bne _0803F952 - lsls r0, r1, 30 - cmp r0, 0 - blt _0803F952 - lsls r0, r1, 29 - cmp r0, 0 - blt _0803F952 - lsls r0, r2, 31 - cmp r0, 0 - beq _0803F95C -_0803F952: - movs r0, 0x1 - b _0803F95E - .pool -_0803F95C: - movs r0, 0 -_0803F95E: - pop {r1} - bx r1 - thumb_func_end HasMoveFailed - - thumb_func_start PrepareStringBattle -PrepareStringBattle: @ 803F964 - push {r4,lr} - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r4, =gActiveBank - strb r1, [r4] - movs r0, 0 - adds r1, r2, 0 - bl dp01_build_cmdbuf_x10_TODO - ldrb r0, [r4] - bl MarkBufferBankForExecution - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end PrepareStringBattle - - thumb_func_start ResetSentPokesToOpponentValue -ResetSentPokesToOpponentValue: @ 803F988 - push {r4-r6,lr} - movs r3, 0 - ldr r0, =gSentPokesToOpponent - strb r3, [r0] - strb r3, [r0, 0x1] - movs r1, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - adds r6, r0, 0 - cmp r1, r2 - bge _0803F9B6 - ldr r5, =gBitTable - adds r4, r2, 0 - ldr r2, =gBattlePartyID -_0803F9A4: - ldrh r0, [r2] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - orrs r3, r0 - adds r2, 0x4 - adds r1, 0x2 - cmp r1, r4 - blt _0803F9A4 -_0803F9B6: - movs r1, 0x1 - adds r2, r6, 0 - ldrb r0, [r2] - cmp r1, r0 - bge _0803F9D6 - ldr r5, =gSentPokesToOpponent - movs r4, 0x2 -_0803F9C4: - adds r0, r1, 0 - ands r0, r4 - asrs r0, 1 - adds r0, r5 - strb r3, [r0] - adds r1, 0x2 - ldrb r0, [r2] - cmp r1, r0 - blt _0803F9C4 -_0803F9D6: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ResetSentPokesToOpponentValue - - thumb_func_start sub_803F9EC -sub_803F9EC: @ 803F9EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803FA50 - movs r0, 0x2 - ands r0, r5 - lsls r0, 24 - lsrs r0, 25 - mov r12, r0 - ldr r1, =gSentPokesToOpponent - adds r0, r1 - strb r4, [r0] - adds r5, r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - mov r8, r1 - cmp r4, r2 - bge _0803FA4A - ldr r0, =gAbsentBankFlags - ldrb r7, [r0] - ldr r1, =gBitTable - adds r6, r2, 0 - ldr r3, =gBattlePartyID - adds r2, r1, 0 -_0803FA2E: - ldr r0, [r2] - ands r0, r7 - cmp r0, 0 - bne _0803FA40 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r4, r0 -_0803FA40: - adds r3, 0x4 - adds r2, 0x8 - adds r5, 0x2 - cmp r5, r6 - blt _0803FA2E -_0803FA4A: - mov r0, r12 - add r0, r8 - strb r4, [r0] -_0803FA50: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F9EC - - thumb_func_start sub_803FA70 -sub_803FA70: @ 803FA70 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803FA8C - adds r0, r4, 0 - bl sub_803F9EC - b _0803FAC2 -_0803FA8C: - movs r3, 0x1 - ldr r5, =gNoOfAllBanks - ldrb r0, [r5] - cmp r3, r0 - bge _0803FAC2 - ldr r0, =gSentPokesToOpponent - mov r12, r0 - movs r7, 0x2 - ldr r6, =gBitTable - ldr r1, =gBattlePartyID - lsls r0, r4, 1 - adds r4, r0, r1 -_0803FAA4: - adds r2, r3, 0 - ands r2, r7 - asrs r2, 1 - add r2, r12 - ldrh r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - adds r3, 0x1 - ldrb r0, [r5] - cmp r3, r0 - blt _0803FAA4 -_0803FAC2: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803FA70 - - .align 2, 0 @ Don't pad with nop. - \ No newline at end of file diff --git a/asm/rom3.s b/asm/rom3.s index 6a3e7e2995..bde4935684 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -2570,8 +2570,8 @@ _08033BB6: .pool thumb_func_end EmitMoveAnimation - thumb_func_start dp01_build_cmdbuf_x10_TODO -dp01_build_cmdbuf_x10_TODO: @ 8033BE4 + thumb_func_start EmitPrintString +EmitPrintString: @ 8033BE4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2685,7 +2685,7 @@ _08033C88: pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x10_TODO + thumb_func_end EmitPrintString thumb_func_start EmitPrintStringPlayerOnly EmitPrintStringPlayerOnly: @ 8033CFC diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index faa945bddb..b2dfec5d8c 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -78,7 +78,7 @@ BattleScript_WildMonFled:: @ 82DAAF7 gUnknown_082DAAFE:: @ 82DAAFE .incbin "baserom.gba", 0x2daafe, 0x4 -gUnknown_082DAB02:: @ 82DAB02 +BattleScript_PrintFailedToRunString:: @ 82DAB02 .incbin "baserom.gba", 0x2dab02, 0x9 gUnknown_082DAB0B:: @ 82DAB0B diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 985c09b23c..4a4dc46653 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -33,7 +33,7 @@ gBattlescriptsForRunningByItem:: @ 82DBD54 .4byte BattleScript_RunByUsingItem .align 2 -gUnknown_082DBD58:: @ 82DBD58 +gBattlescriptsForSafariActions:: @ 82DBD58 .4byte gUnknown_082DBEBD .4byte gUnknown_082DBEC4 .4byte gUnknown_082DBECD diff --git a/include/battle.h b/include/battle.h index 639558e60b..d41702396a 100644 --- a/include/battle.h +++ b/include/battle.h @@ -1,6 +1,11 @@ #ifndef GUARD_BATTLE_H #define GUARD_BATTLE_H +// should they be included here or included individually by every file? +#include "battle_util.h" +#include "battle_script_commands.h" +#include "battle_2.h" + /* Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. Each bank has a value consisting of two bits. @@ -119,8 +124,8 @@ #define STATUS3_MINIMIZED 0x100 #define STATUS3_ROOTED 0x400 #define STATUS3_CHARGED_UP 0x200 -#define STATUS3_YAWN 0x1800 //two bits -#define STATUS3_IMPRISONED_OTHERS 0x2000 +#define STATUS3_YAWN 0x1800 // two bits +#define STATUS3_IMPRISONED_OTHERS 0x2000 #define STATUS3_GRUDGE 0x4000 #define STATUS3_CANT_SCORE_A_CRIT 0x8000 #define STATUS3_MUDSPORT 0x10000 @@ -131,6 +136,7 @@ #define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)) +#define HITMARKER_x10 0x00000010 #define HITMARKER_x20 0x00000020 #define HITMARKER_DESTINYBOND 0x00000040 #define HITMARKER_NO_ANIMATIONS 0x00000080 @@ -141,7 +147,7 @@ #define HITMARKER_PURSUIT_TRAP 0x00001000 #define HITMARKER_IGNORE_SAFEGUARD 0x00002000 #define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 -#define HITMARKER_x8000 0x00008000 +#define HITMARKER_RUN 0x00008000 #define HITMARKER_IGNORE_ON_AIR 0x00010000 #define HITMARKER_IGNORE_UNDERGROUND 0x00020000 #define HITMARKER_IGNORE_UNDERWATER 0x00040000 @@ -152,6 +158,7 @@ #define HITMARKER_x800000 0x00800000 #define HITMARKER_GRUDGE 0x01000000 #define HITMARKER_OBEYS 0x02000000 +#define HITMARKER_x4000000 0x04000000 #define HITMARKER_x8000000 0x08000000 #define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C)) #define HITMARKER_UNK(bank) ((0x10000000 << bank)) @@ -181,32 +188,6 @@ #define ACTION_NOTHING_FAINTED 13 // when choosing an action #define ACTION_INIT_VALUE 0xFF -#define ABILITYEFFECT_ON_SWITCHIN 0x0 -#define ABILITYEFFECT_ENDTURN 0x1 -#define ABILITYEFFECT_MOVES_BLOCK 0x2 -#define ABILITYEFFECT_ABSORBING 0x3 -#define ABILITYEFFECT_CONTACT 0x4 -#define ABILITYEFFECT_IMMUNITY 0x5 -#define ABILITYEFFECT_FORECAST 0x6 -#define ABILITYEFFECT_SYNCHRONIZE 0x7 -#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 -#define ABILITYEFFECT_INTIMIDATE1 0x9 -#define ABILITYEFFECT_INTIMIDATE2 0xA -#define ABILITYEFFECT_TRACE 0xB -#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC -#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD -#define ABILITYEFFECT_FIELD_SPORT 0xE -#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF -#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 -#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 -#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 -#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 -#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF - -#define ITEMEFFECT_ON_SWITCH_IN 0x0 - -#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) - #define MOVESTATUS_MISSED (1 << 0) #define MOVESTATUS_SUPEREFFECTIVE (1 << 1) #define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) @@ -271,25 +252,6 @@ #define TYPE_MUL_NORMAL 10 #define TYPE_MUL_SUPER_EFFECTIVE 20 -#define BS_GET_TARGET 0 -#define BS_GET_ATTACKER 1 -#define BS_GET_EFFECT_BANK 2 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability -#define BS_GET_SCRIPTING_BANK 10 -#define BS_GET_OPPONENT1 12 -#define BS_GET_PLAYER2 13 -#define BS_GET_OPPONENT2 14 - -// for battle script commands -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 - struct TrainerMonNoItemDefaultMoves { u16 iv; @@ -375,8 +337,8 @@ struct DisableStruct /*0x0F*/ u8 perishSong1 : 4; /*0x0F*/ u8 perishSong2 : 4; /*0x10*/ u8 furyCutterCounter; - /*0x11*/ u8 rolloutTimer1 : 4; - /*0x11*/ u8 rolloutTimer2 : 4; + /*0x11*/ u8 rolloutCounter1 : 4; + /*0x11*/ u8 rolloutCounter2 : 4; /*0x12*/ u8 chargeTimer1 : 4; /*0x12*/ u8 chargeTimer2 : 4; /*0x13*/ u8 tauntTimer1:4; @@ -408,7 +370,7 @@ struct ProtectStruct u32 prlzImmobility:1; /* field_1 */ u32 confusionSelfDmg:1; - u32 notEffective:1; + u32 targetNotAffected:1; u32 chargingTurn:1; u32 fleeFlag:2; // for RunAway and Smoke Ball u32 usedImprisionedMove:1; @@ -574,6 +536,7 @@ struct BattleResults u8 playerMon1Name[11]; // 0x8 u8 battleTurnCounter; // 0x13 u8 playerMon2Name[11]; // 0x14 + u8 field_1F; // 0x1F u16 lastOpponentSpecies; // 0x20 u16 lastUsedMovePlayer; // 0x22 u16 lastUsedMoveOpponent; // 0x24 @@ -814,39 +777,10 @@ extern struct BattleStruct* gBattleStruct; #define B_ANIM_x1C 0x1C #define B_ANIM_x1D 0x1D -#define ATK48_STAT_NEGATIVE 0x1 -#define ATK48_STAT_BY_TWO 0x2 -#define ATK48_BIT_x4 0x4 -#define ATK48_LOWER_FAIL_CHECK 0x8 - -#define ATK4F_DONT_CHECK_STATUSES 0x80 - -#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 -#define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_CAN_RUN_FROM_BATTLE 2 -#define VARIOUS_GET_MOVE_TARGET 3 -#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 -#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 - -#define ATK80_DMG_CHANGE_SIGN 0 -#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 -#define ATK80_DMG_DOUBLED 2 - #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit -#define STAT_CHANGE_BS_PTR 0x1 -#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 - -#define STAT_CHANGE_WORKED 0 -#define STAT_CHANGE_DIDNT_WORK 1 - #define SET_STAT_BUFF_ID(n)((n & 0xF)) #define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) @@ -892,78 +826,6 @@ void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); void task00_0800F6FC(u8 taskId); -// battle_2 -void CB2_InitBattle(void); -void CB2_QuitRecordedBattle(void); -void CancelMultiTurnMoves(u8 bank); -void PressurePPLose(u8 bankAtk, u8 bankDef, u16 move); -void PrepareStringBattle(u16 stringId, u8 bank); -u8 GetBattleBank(u8 caseId); -void FaintClearSetData(void); -bool8 HasMoveFailed(u8 bank); -void SwitchInClearSetData(void); -void sub_803BDA0(u8 bank); -void sub_803FA70(u8 bank); -void BattleMainCB2(void); -void VBlankCB_Battle(void); -void ResetSentPokesToOpponentValue(void); -bool8 TryRunFromBattle(u8 bank); -bool8 IsRunningFromBattleImpossible(void); -void PressurePPLoseOnUsingPerishSong(u8 bankAtk); -void PressurePPLoseOnUsingImprision(u8 bankAtk); -u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); -void SwapTurnOrder(u8, u8); -void BattleTurnPassed(void); -void RunBattleScriptCommands_PopCallbacksStack(void); -void RunBattleScriptCommands(void); - -// battle_3 -#define MOVE_LIMITATION_ZEROMOVE (1 << 0) -#define MOVE_LIMITATION_PP (1 << 1) -#define MOVE_LIMITATION_DISABLED (1 << 2) -#define MOVE_LIMITATION_TORMENTED (1 << 3) -#define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) - -void BattleScriptPush(const u8* bsPtr); -void BattleScriptPushCursor(void); -void BattleScriptPop(void); -u8 TrySetCantSelectMoveBattleScript(void); -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); -bool8 AreAllMovesUnusable(void); -u8 GetImprisonedMovesCount(u8 bank, u16 move); -u8 UpdateTurnCounters(void); -u8 TurnBasedEffects(void); -bool8 sub_8041364(void); -bool8 sub_8041728(void); -void TryClearRageStatuses(void); -u8 AtkCanceller_UnableToUseMove(void); -bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); -u8 CastformDataTypeChange(u8 bank); -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -void BattleScriptExecute(const u8* BS_ptr); -void BattleScriptPushCursorAndCallback(const u8* BS_ptr); -u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -void ClearFuryCutterDestinyBondGrudge(u8 bank); -void sub_80458B4(void); -u8 GetMoveTarget(u16 move, u8 useMoveTarget); -u8 IsPokeDisobedient(void); - -// battle_script_commands -void AI_CalcDmg(u8 bankAtk, u8 bankDef); -u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); -u8 AI_TypeCalc(u16 move, u16 species, u8 ability); -u8 BankGetTurnOrder(u8 bank); -void SetMoveEffect(bool8 primary, u8 certain); -void BattleDestroyCursorAt(u8 cursorPosition); -void BattleCreateCursorAt(u8 cursorPosition); -void BufferMoveToLearnIntoBattleTextBuff2(void); -void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); -bool8 UproarWakeUpCheck(u8 bank); - -extern void (* const gBattleScriptingCommandsTable[])(void); -extern const u8 gUnknown_0831C494[]; - // battle_5 void AllocateBattleResrouces(void); void FreeBattleResources(void); diff --git a/include/battle_2.h b/include/battle_2.h new file mode 100644 index 0000000000..e4385db042 --- /dev/null +++ b/include/battle_2.h @@ -0,0 +1,19 @@ +#ifndef GUARD_BATTLE_2_H +#define GUARD_BATTLE_2_H + +void CB2_InitBattle(void); +void CB2_QuitRecordedBattle(void); +void FaintClearSetData(void); +void SwitchInClearSetData(void); +void sub_803BDA0(u8 bank); +void BattleMainCB2(void); +void VBlankCB_Battle(void); +bool8 TryRunFromBattle(u8 bank); +u8 IsRunningFromBattleImpossible(void); +u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); +void SwapTurnOrder(u8 id1, u8 id2); +void BattleTurnPassed(void); +void RunBattleScriptCommands_PopCallbacksStack(void); +void RunBattleScriptCommands(void); + +#endif // GUARD_BATTLE_2_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 9a7f947fa6..2281fdaffb 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -1,6 +1,28 @@ #ifndef GUARD_BATTLE_CONTROLLERS_H #define GUARD_BATTLE_CONTROLLERS_H +#define REQUEST_ALL_BATTLE 0x0 +#define REQUEST_SPECIES_BATTLE 0x1 +#define REQUEST_HELDITEM_BATTLE 0x2 +#define REQUEST_MOVES_PP_BATTLE 0x3 +#define REQUEST_PPMOVE1_BATTLE 0x9 +#define REQUEST_PPMOVE2_BATTLE 0xA +#define REQUEST_PPMOVE3_BATTLE 0xB +#define REQUEST_PPMOVE4_BATTLE 0xC +#define REQUEST_STATUS_BATTLE 0x28 +#define REQUEST_HP_BATTLE 0x2A + +#define RESET_ACTION_MOVE_SELECTION 0 +#define RESET_ACTION_SELECTION 1 +#define RESET_MOVE_SELECTION 2 + +#define BALL_NO_SHAKES 0 +#define BALL_1_SHAKE 1 +#define BALL_2_SHAKES 2 +#define BALL_3_SHAKES_FAIL 3 +#define BALL_3_SHAKES_SUCCESS 4 +#define BALL_TRAINER_BLOCK 5 + struct HpAndStatus { u16 hp; @@ -24,17 +46,6 @@ struct ChooseMoveStruct u8 monType2; }; -#define REQUEST_ALL_BATTLE 0x0 -#define REQUEST_SPECIES_BATTLE 0x1 -#define REQUEST_HELDITEM_BATTLE 0x2 -#define REQUEST_MOVES_PP_BATTLE 0x3 -#define REQUEST_PPMOVE1_BATTLE 0x9 -#define REQUEST_PPMOVE2_BATTLE 0xA -#define REQUEST_PPMOVE3_BATTLE 0xB -#define REQUEST_PPMOVE4_BATTLE 0xC -#define REQUEST_STATUS_BATTLE 0x28 -#define REQUEST_HP_BATTLE 0x2A - // rom3.s, emitters void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); @@ -70,22 +81,8 @@ void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct* movePpData); void EmitOpenBag(u8 bufferId, u8* arg1); void Emit_x32(u8 bufferId); - -#define RESET_ACTION_MOVE_SELECTION 0 -#define RESET_ACTION_SELECTION 1 -#define RESET_MOVE_SELECTION 2 - +void EmitPrintString(u8 bufferId, u16 stringId); void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); - -#define BALL_NO_SHAKES 0 -#define BALL_1_SHAKE 1 -#define BALL_2_SHAKES 2 -#define BALL_3_SHAKES_FAIL 3 -#define BALL_3_SHAKES_SUCCESS 4 -#define BALL_TRAINER_BLOCK 5 - void EmitBallThrow(u8 bufferId, u8 caseId); -void MarkBufferBankForExecution(u8 bank); - #endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h new file mode 100644 index 0000000000..ae0d20f285 --- /dev/null +++ b/include/battle_script_commands.h @@ -0,0 +1,58 @@ +#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H +#define GUARD_BATTLE_SCRIPT_COMMANDS_H + +#define CMP_EQUAL 0x0 +#define CMP_NOT_EQUAL 0x1 +#define CMP_GREATER_THAN 0x2 +#define CMP_LESS_THAN 0x3 +#define CMP_COMMON_BITS 0x4 +#define CMP_NO_COMMON_BITS 0x5 + +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update +#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability +#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability + +#define ATK48_STAT_NEGATIVE 0x1 +#define ATK48_STAT_BY_TWO 0x2 +#define ATK48_BIT_x4 0x4 +#define ATK48_LOWER_FAIL_CHECK 0x8 + +#define ATK4F_DONT_CHECK_STATUSES 0x80 + +#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 +#define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_CAN_RUN_FROM_BATTLE 2 +#define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 +#define VARIOUS_WAIT_CRY 18 +#define VARIOUS_RETURN_OPPONENT_MON1 19 +#define VARIOUS_RETURN_OPPONENT_MON2 20 +#define VARIOUS_SET_TELEPORT_OUTCOME 25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 + +#define ATK80_DMG_CHANGE_SIGN 0 +#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 +#define ATK80_DMG_DOUBLED 2 + +#define STAT_CHANGE_BS_PTR 0x1 +#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 + +#define STAT_CHANGE_WORKED 0 +#define STAT_CHANGE_DIDNT_WORK 1 + +void AI_CalcDmg(u8 bankAtk, u8 bankDef); +u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); +u8 AI_TypeCalc(u16 move, u16 species, u8 ability); +u8 BankGetTurnOrder(u8 bank); +void SetMoveEffect(bool8 primary, u8 certain); +void BattleDestroyCursorAt(u8 cursorPosition); +void BattleCreateCursorAt(u8 cursorPosition); +void BufferMoveToLearnIntoBattleTextBuff2(void); +void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); +bool8 UproarWakeUpCheck(u8 bank); + +extern void (* const gBattleScriptingCommandsTable[])(void); +extern const u8 gUnknown_0831C494[]; + +#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H diff --git a/include/battle_util.h b/include/battle_util.h new file mode 100644 index 0000000000..c1ff7d8ab7 --- /dev/null +++ b/include/battle_util.h @@ -0,0 +1,83 @@ +#ifndef GUARD_BATTLE_UTIL_H +#define GUARD_BATTLE_UTIL_H + +#define MOVE_LIMITATION_ZEROMOVE (1 << 0) +#define MOVE_LIMITATION_PP (1 << 1) +#define MOVE_LIMITATION_DISABLED (1 << 2) +#define MOVE_LIMITATION_TORMENTED (1 << 3) +#define MOVE_LIMITATION_TAUNT (1 << 4) +#define MOVE_LIMITATION_IMPRISION (1 << 5) + +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_CONTACT 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF +#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 +#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 +#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF + +#define ITEMEFFECT_ON_SWITCH_IN 0x0 + +#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) + +#define BS_GET_TARGET 0 +#define BS_GET_ATTACKER 1 +#define BS_GET_EFFECT_BANK 2 +#define BS_GET_SCRIPTING_BANK 10 +#define BS_GET_PLAYER1 11 +#define BS_GET_OPPONENT1 12 +#define BS_GET_PLAYER2 13 +#define BS_GET_OPPONENT2 14 + +u8 GetBattleBank(u8 caseId); +void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); +void PressurePPLoseOnUsingPerishSong(u8 bankAtk); +void PressurePPLoseOnUsingImprision(u8 bankAtk); +void MarkAllBufferBanksForExecution(void); // unused +void MarkBufferBankForExecution(u8 bank); +void sub_803F850(u8 arg0); +void CancelMultiTurnMoves(u8 bank); +bool8 WasUnableToUseMove(u8 bank); +void PrepareStringBattle(u16 stringId, u8 bank); +void ResetSentPokesToOpponentValue(void); +void sub_803F9EC(u8 bank); +void sub_803FA70(u8 bank); +void BattleScriptPush(const u8* bsPtr); +void BattleScriptPushCursor(void); +void BattleScriptPop(void); +u8 TrySetCantSelectMoveBattleScript(void); +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +bool8 AreAllMovesUnusable(void); +u8 GetImprisonedMovesCount(u8 bank, u16 move); +u8 UpdateTurnCounters(void); +u8 TurnBasedEffects(void); +bool8 sub_8041364(void); +bool8 sub_8041728(void); +void TryClearRageStatuses(void); +u8 AtkCanceller_UnableToUseMove(void); +bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); +u8 CastformDataTypeChange(u8 bank); +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); +void BattleScriptExecute(const u8* BS_ptr); +void BattleScriptPushCursorAndCallback(const u8* BS_ptr); +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); +void ClearFuryCutterDestinyBondGrudge(u8 bank); +void HandleAction_RunBattleScript(void); +u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 IsPokeDisobedient(void); + +#endif // GUARD_BATTLE_UTIL_H diff --git a/include/link.h b/include/link.h index 9d581a6c11..012c904806 100644 --- a/include/link.h +++ b/include/link.h @@ -183,5 +183,6 @@ bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); void sub_800ADF8(void); +u8 sub_8009FCC(void); #endif // GUARD_LINK_H diff --git a/include/pokemon.h b/include/pokemon.h index c41099b095..263a37426f 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -640,6 +640,8 @@ u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); +s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2); +s8 GetFlavourRelationByPersonality(u32 personality, u8 a2); #include "sprite.h" diff --git a/ld_script.txt b/ld_script.txt index f5361e8e4d..0e8454ef81 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -58,8 +58,7 @@ SECTIONS { src/decompress.o(.text); asm/battle_1.o(.text); src/battle_2.o(.text); - asm/battle_2.o(.text); - src/battle_3.o(.text); + src/battle_util.o(.text); src/battle_script_commands.o(.text); asm/battle_5.o(.text); asm/battle_controller_player.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index ab1aae7477..37ab7ab1f3 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -40,6 +40,7 @@ #include "trainer_classes.h" #include "evolution_scene.h" #include "roamer.h" +#include "safari_zone.h" struct UnknownStruct6 { @@ -157,6 +158,10 @@ extern const struct BgTemplate gUnknown_0831AA08[]; extern const struct WindowTemplate * const gUnknown_0831ABA0[]; extern const u8 gUnknown_0831ACE0[]; extern const u8 gStatStageRatios[][2]; +extern const u8 gUnknown_0831BCE0[]; +extern const u8 gUnknown_0831BCEF[]; +extern const u8 gUnknown_0831BCF3[]; +extern const u8 * const gBattleScriptsForMoveEffects[]; // strings extern const u8 gText_LinkStandby3[]; @@ -190,6 +195,7 @@ extern const u8 BattleScript_GotAwaySafely[]; extern const u8 BattleScript_WildMonFled[]; extern const u8 BattleScript_MoveUsedLoafingAround[]; extern const u8 BattleScript_ActionSwitch[]; +extern const u8 BattleScript_PrintFailedToRunString[]; // functions extern void HandleLinkBattleSetup(void); // rom_3 @@ -2942,7 +2948,7 @@ void FaintClearSetData(void) gProtectStructs[gActiveBank].flag0Unknown = 0; gProtectStructs[gActiveBank].prlzImmobility = 0; gProtectStructs[gActiveBank].confusionSelfDmg = 0; - gProtectStructs[gActiveBank].notEffective = 0; + gProtectStructs[gActiveBank].targetNotAffected = 0; gProtectStructs[gActiveBank].chargingTurn = 0; gProtectStructs[gActiveBank].fleeFlag = 0; gProtectStructs[gActiveBank].usedImprisionedMove = 0; @@ -3824,15 +3830,18 @@ void sub_803BDA0(u8 bank) } } -#define STATE_TURN_START_RECORD 0 -#define STATE_BEFORE_ACTION_CHOSEN 1 -#define STATE_WAIT_ACTION_CHOSEN 2 -#define STATE_WAIT_ACTION_CASE_CHOSEN 3 -#define STATE_WAIT_ACTION_CONFIRMED_STANDBY 4 -#define STATE_WAIT_ACTION_CONFIRMED 5 -#define STATE_SELECTION_SCRIPT 6 -#define STATE_WAIT_SET_BEFORE_ACTION 7 -#define STATE_SELECTION_SCRIPT_MAY_RUN 8 +enum +{ + STATE_TURN_START_RECORD, + STATE_BEFORE_ACTION_CHOSEN, + STATE_WAIT_ACTION_CHOSEN, + STATE_WAIT_ACTION_CASE_CHOSEN, + STATE_WAIT_ACTION_CONFIRMED_STANDBY, + STATE_WAIT_ACTION_CONFIRMED, + STATE_SELECTION_SCRIPT, + STATE_WAIT_SET_BEFORE_ACTION, + STATE_SELECTION_SCRIPT_MAY_RUN +}; void HandleTurnActionSelectionState(void) { @@ -4137,7 +4146,7 @@ void HandleTurnActionSelectionState(void) } break; case ACTION_RUN: - gHitMarker |= HITMARKER_x8000; + gHitMarker |= HITMARKER_RUN; gBattleCommunication[gActiveBank]++; break; case ACTION_WATCHES_CAREFULLY: @@ -4160,7 +4169,7 @@ void HandleTurnActionSelectionState(void) gBattleCommunication[gActiveBank]++; break; case ACTION_SAFARI_ZONE_RUN: - gHitMarker |= HITMARKER_x8000; + gHitMarker |= HITMARKER_RUN; gBattleCommunication[gActiveBank]++; break; case ACTION_9: @@ -4221,7 +4230,7 @@ void HandleTurnActionSelectionState(void) { if (gBattleBufferB[gActiveBank][1] == 13) { - gHitMarker |= HITMARKER_x8000; + gHitMarker |= HITMARKER_RUN; gActionForBanks[gActiveBank] = ACTION_RUN; gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; } @@ -4613,7 +4622,7 @@ void SpecialStatusesClear(void) static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) { - if (!(gHitMarker & HITMARKER_x8000)) + if (!(gHitMarker & HITMARKER_RUN)) { while (gBattleStruct->focusPunchBank < gNoOfAllBanks) { @@ -4976,8 +4985,6 @@ void RunBattleScriptCommands(void) gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } -extern const u8 * const gBattleScriptsForMoveEffects[]; - void HandleAction_UseMove(void) { u8 side; @@ -5216,6 +5223,7 @@ void HandleAction_Switch(void) extern const u8 * const gBattlescriptsForBallThrow[]; extern const u8 * const gBattlescriptsForRunningByItem[]; extern const u8 * const gUnknown_082DBD3C[]; +extern const u8 * const gBattlescriptsForSafariActions[]; void HandleAction_UseItem(void) { @@ -5375,3 +5383,198 @@ bool8 TryRunFromBattle(u8 bank) return effect; } + +void HandleAction_Run(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + gCurrentTurnActionNumber = gNoOfAllBanks; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + if (gActionForBanks[gActiveBank] == ACTION_RUN) + gBattleOutcome |= BATTLE_LOST; + } + else + { + if (gActionForBanks[gActiveBank] == ACTION_RUN) + gBattleOutcome |= BATTLE_WON; + } + } + + gBattleOutcome |= BATTLE_OUTCOME_BIT_x80; + gSaveBlock2Ptr->field_CA9_b = 1; + } + else + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + if (!TryRunFromBattle(gBankAttacker)) // failed to run away + { + ClearFuryCutterDestinyBondGrudge(gBankAttacker); + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + } + } + else + { + if (gBattleMons[gBankAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + } + else + { + gCurrentTurnActionNumber = gNoOfAllBanks; + gBattleOutcome = BATTLE_POKE_FLED; + } + } + } +} + +void HandleAction_WatchesCarefully(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_SafariZoneBallThrow(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gNumSafariBalls--; + gLastUsedItem = ITEM_SAFARI_BALL; + gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_ThrowPokeblock(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBankAttacker][1] - 1; + gLastUsedItem = gBattleBufferB[gBankAttacker][2]; + + if (gBattleResults.field_1F < 0xFF) + gBattleResults.field_1F++; + if (gBattleStruct->field_7A < 3) + gBattleStruct->field_7A++; + if (gBattleStruct->field_7B > 1) + { + if (gBattleStruct->field_7B < gUnknown_0831BCE0[3 * gBattleStruct->field_7A + gBattleCommunication[MULTISTRING_CHOOSER]]) + gBattleStruct->field_7B = 1; + else + gBattleStruct->field_7B -= gUnknown_0831BCE0[3 * gBattleStruct->field_7A + gBattleCommunication[MULTISTRING_CHOOSER]]; + } + + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_GoNear(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + + gBattleStruct->field_7C += gUnknown_0831BCEF[gBattleStruct->field_79]; + if (gBattleStruct->field_7C > 20) + gBattleStruct->field_7C = 20; + + gBattleStruct->field_7B +=gUnknown_0831BCF3[gBattleStruct->field_79]; + if (gBattleStruct->field_7B > 20) + gBattleStruct->field_7B = 20; + + if (gBattleStruct->field_79 < 3) + { + gBattleStruct->field_79++; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_SafriZoneRun(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + PlaySE(SE_NIGERU); + gCurrentTurnActionNumber = gNoOfAllBanks; + gBattleOutcome = BATTLE_RAN; +} + +void HandleAction_Action9(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]) + + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + gActionsByTurnOrder[1] = ACTION_FINISHED; +} + +void HandleAction_Action11(void) +{ + if (!sub_8041728()) + { + gBattleStruct->field_4D = 0; + gCurrentActionFuncId = ACTION_FINISHED; + } +} + +void HandleAction_NothingIsFainted(void) +{ + gCurrentTurnActionNumber++; + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; + gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED + | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR + | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 + | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_x8000000 | HITMARKER_x4000000); +} + +void HandleAction_ActionFinished(void) +{ + *(gBattleStruct->field_5C + gBanksByTurnOrder[gCurrentTurnActionNumber]) = 6; + gCurrentTurnActionNumber++; + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; + SpecialStatusesClear(); + gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED + | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR + | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 + | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_x8000000 | HITMARKER_x4000000); + + gCurrentMove = 0; + gBattleMoveDamage = 0; + gBattleMoveFlags = 0; + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + gUnknown_02024250[gBankAttacker] = 0; + gUnknown_02024258[gBankAttacker] = 0; + gBattleStruct->dynamicMoveType = 0; + gDynamicBasePower = 0; + gBattleScripting.atk49_state = 0; + gBattleCommunication[3] = 0; + gBattleCommunication[4] = 0; + gBattleScripting.field_16 = 0; + gBattleResources->battleScriptsStack->size = 0; +} + diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e68137c479..e53292442b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1600,7 +1600,7 @@ static void atk06_typecalc(void) RecordAbilityBattle(gBankTarget, gLastUsedAbility); } if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) - gProtectStructs[gBankAttacker].notEffective = 1; + gProtectStructs[gBankAttacker].targetNotAffected = 1; gBattlescriptCurrInstr++; } @@ -1639,14 +1639,14 @@ static void CheckWonderGuardAndLevitate(void) if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0) { gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; - gProtectStructs[gBankAttacker].notEffective = 1; + gProtectStructs[gBankAttacker].targetNotAffected = 1; } if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == TYPE_MUL_NO_EFFECT) { gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; - gProtectStructs[gBankAttacker].notEffective = 1; + gProtectStructs[gBankAttacker].targetNotAffected = 1; } // check super effective @@ -5066,7 +5066,7 @@ static void atk49_moveend(void) case 9: // make attacker sprite visible if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || !(gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE)) - || HasMoveFailed(gBankAttacker)) + || WasUnableToUseMove(gBankAttacker)) { gActiveBank = gBankAttacker; EmitSpriteInvisibility(0, FALSE); @@ -5297,7 +5297,7 @@ static void atk4A_typecalc2(void) RecordAbilityBattle(gBankTarget, gLastUsedAbility); } if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) - gProtectStructs[gBankAttacker].notEffective = 1; + gProtectStructs[gBankAttacker].targetNotAffected = 1; gBattlescriptCurrInstr++; } @@ -9518,19 +9518,19 @@ static void atkB3_rolloutdamagecalculation(void) if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) // first hit { - gDisableStructs[gBankAttacker].rolloutTimer1 = 5; - gDisableStructs[gBankAttacker].rolloutTimer2 = 5; + gDisableStructs[gBankAttacker].rolloutCounter1 = 5; + gDisableStructs[gBankAttacker].rolloutCounter2 = 5; gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gBankAttacker] = gCurrentMove; } - if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0) // last hit + if (--gDisableStructs[gBankAttacker].rolloutCounter1 == 0) // last hit { gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); } gDynamicBasePower = gBattleMoves[gCurrentMove].power; - for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutTimer1); i++) + for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutCounter1); i++) gDynamicBasePower *= 2; if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL) diff --git a/src/battle_3.c b/src/battle_util.c similarity index 96% rename from src/battle_3.c rename to src/battle_util.c index 58e0a05c7e..c5a85dd2bc 100644 --- a/src/battle_3.c +++ b/src/battle_util.c @@ -17,6 +17,7 @@ #include "battle_controllers.h" #include "event_data.h" #include "calculate_base_damage.h" +#include "link.h" extern const u8* gBattlescriptCurrInstr; extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; @@ -33,7 +34,7 @@ extern u8 gBankTarget; extern u8 gAbsentBankFlags; extern u16 gBattleWeather; extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT]; -extern u16 gSideAffecting[]; +extern u16 gSideAffecting[2]; extern u8 gBattleCommunication[]; extern void (*gBattleMainFunc)(void); extern s32 gBattleMoveDamage; @@ -45,7 +46,7 @@ extern u32 gHitMarker; extern u8 gEffectBank; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u8 gBank1; -extern u16 gChosenMovesByBanks[]; +extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; extern u8 gBattleMoveFlags; extern s32 gTakenDmg[BATTLE_BANKS_COUNT]; extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT]; @@ -55,8 +56,10 @@ extern u32 gBattleExecBuffer; extern u16 gRandomMove; extern u8 gCurrMovePos; extern u8 gUnknown_020241E9; +extern u8 gSentPokesToOpponent[2]; extern const struct BattleMove gBattleMoves[]; +extern const u16 gSoundMovesTable[]; // scripts extern const u8 gUnknown_082DAE2A[]; @@ -169,6 +172,7 @@ extern const u8 gUnknown_082DB6A5[]; //disobedient, uses a random move extern const u8 gUnknown_082DB6D9[]; //disobedient, went to sleep extern const u8 gUnknown_082DB6F0[]; //disobedient, hits itself +// strings extern const u8 gStatusConditionString_PoisonJpn[]; extern const u8 gStatusConditionString_SleepJpn[]; extern const u8 gStatusConditionString_ParalysisJpn[]; @@ -176,12 +180,272 @@ extern const u8 gStatusConditionString_BurnJpn[]; extern const u8 gStatusConditionString_IceJpn[]; extern const u8 gStatusConditionString_ConfusionJpn[]; extern const u8 gStatusConditionString_LoveJpn[]; -extern const u16 gSoundMovesTable[]; -extern void sub_803F9EC(); -extern bool8 sub_80423F4(u8 bank, u8, u8); extern u8 weather_get_current(void); -extern s8 GetFlavourRelationByPersonality(u32 personality, u8 flavor); + +u8 GetBattleBank(u8 caseId) +{ + u8 ret = 0; + switch (caseId) + { + case BS_GET_TARGET: + ret = gBankTarget; + break; + case BS_GET_ATTACKER: + ret = gBankAttacker; + break; + case BS_GET_EFFECT_BANK: + ret = gEffectBank; + break; + case 7: + ret = 0; + break; + case BS_GET_SCRIPTING_BANK: + ret = gBattleScripting.bank; + break; + case 3: + ret = gBank1; + break; + case 5: + ret = gBank1; + break; + case 4: + case 6: + case 8: + case 9: + case BS_GET_PLAYER1: + ret = GetBankByIdentity(IDENTITY_PLAYER_MON1); + break; + case BS_GET_OPPONENT1: + ret = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + break; + case BS_GET_PLAYER2: + ret = GetBankByIdentity(IDENTITY_PLAYER_MON2); + break; + case BS_GET_OPPONENT2: + ret = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + break; + } + return ret; +} + +void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move) +{ + s32 i; + + if (gBattleMons[bankDef].ability != ABILITY_PRESSURE) + return; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[bankAtk].moves[i] == move) + break; + } + + if (i == 4) // mons don't share any moves + return; + + if (gBattleMons[bankAtk].pp[i] != 0) + gBattleMons[bankAtk].pp[i]--; + + if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[bankAtk].unk18_b & gBitTable[i])) + { + gActiveBank = bankAtk; + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); + MarkBufferBankForExecution(gActiveBank); + } +} + +void PressurePPLoseOnUsingImprision(u8 bankAtk) +{ + s32 i, j; + s32 imprisionPos = 4; + u8 atkSide = GetBankSide(bankAtk); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (atkSide != GetBankSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE) + { + for (j = 0; j < 4; j++) + { + if (gBattleMons[bankAtk].moves[j] == MOVE_IMPRISON) + break; + } + if (j != 4) + { + imprisionPos = j; + if (gBattleMons[bankAtk].pp[j] != 0) + gBattleMons[bankAtk].pp[j]--; + } + } + } + + if (imprisionPos != 4 + && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos])) + { + gActiveBank = bankAtk; + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBank].pp[imprisionPos]); + MarkBufferBankForExecution(gActiveBank); + } +} + +void PressurePPLoseOnUsingPerishSong(u8 bankAtk) +{ + s32 i, j; + s32 perishSongPos = 4; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_PRESSURE && i != bankAtk) + { + for (j = 0; j < 4; j++) + { + if (gBattleMons[bankAtk].moves[j] == MOVE_PERISH_SONG) + break; + } + if (j != 4) + { + perishSongPos = j; + if (gBattleMons[bankAtk].pp[j] != 0) + gBattleMons[bankAtk].pp[j]--; + } + } + } + + if (perishSongPos != 4 + && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos])) + { + gActiveBank = bankAtk; + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBank].pp[perishSongPos]); + MarkBufferBankForExecution(gActiveBank); + } +} + +void MarkAllBufferBanksForExecution(void) // unused +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + for (i = 0; i < gNoOfAllBanks; i++) + gBattleExecBuffer |= gBitTable[i] << 0x1C; + } + else + { + for (i = 0; i < gNoOfAllBanks; i++) + gBattleExecBuffer |= gBitTable[i]; + } +} + +void MarkBufferBankForExecution(u8 bank) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleExecBuffer |= gBitTable[bank] << 0x1C; + } + else + { + gBattleExecBuffer |= gBitTable[bank]; + } +} + +void sub_803F850(u8 arg0) +{ + s32 i; + + for (i = 0; i < sub_8009FCC(); i++) + gBattleExecBuffer |= gBitTable[arg0] << (i << 2); + + gBattleExecBuffer &= ~(0x10000000 << arg0); +} + +void CancelMultiTurnMoves(u8 bank) +{ + gBattleMons[bank].status2 &= ~(STATUS2_MULTIPLETURNS); + gBattleMons[bank].status2 &= ~(STATUS2_LOCK_CONFUSE); + gBattleMons[bank].status2 &= ~(STATUS2_UPROAR); + gBattleMons[bank].status2 &= ~(STATUS2_BIDE); + + gStatuses3[bank] &= ~(STATUS3_SEMI_INVULNERABLE); + + gDisableStructs[bank].rolloutCounter1 = 0; + gDisableStructs[bank].furyCutterCounter = 0; +} + +bool8 WasUnableToUseMove(u8 bank) +{ + if (gProtectStructs[bank].prlzImmobility + || gProtectStructs[bank].targetNotAffected + || gProtectStructs[bank].usedImprisionedMove + || gProtectStructs[bank].loveImmobility + || gProtectStructs[bank].usedDisabledMove + || gProtectStructs[bank].usedTauntedMove + || gProtectStructs[bank].flag2Unknown + || gProtectStructs[bank].flinchImmobility + || gProtectStructs[bank].confusionSelfDmg) + return TRUE; + else + return FALSE; +} + +void PrepareStringBattle(u16 stringId, u8 bank) +{ + gActiveBank = bank; + EmitPrintString(0, stringId); + MarkBufferBankForExecution(gActiveBank); +} + +void ResetSentPokesToOpponentValue(void) +{ + s32 i; + u32 bits = 0; + + gSentPokesToOpponent[0] = 0; + gSentPokesToOpponent[1] = 0; + + for (i = 0; i < gNoOfAllBanks; i += 2) + bits |= gBitTable[gBattlePartyID[i]]; + + for (i = 1; i < gNoOfAllBanks; i += 2) + gSentPokesToOpponent[(i & BIT_MON) >> 1] = bits; +} + +void sub_803F9EC(u8 bank) +{ + s32 i = 0; + u32 bits = 0; + + if (GetBankSide(bank) == SIDE_OPPONENT) + { + u8 id = ((bank & BIT_MON) >> 1); + gSentPokesToOpponent[id] = 0; + + for (i = 0; i < gNoOfAllBanks; i += 2) + { + if (!(gAbsentBankFlags & gBitTable[i])) + bits |= gBitTable[gBattlePartyID[i]]; + } + + gSentPokesToOpponent[id] = bits; + } +} + +void sub_803FA70(u8 bank) +{ + if (GetBankSide(bank) == SIDE_OPPONENT) + { + sub_803F9EC(bank); + } + else + { + s32 i; + for (i = 1; i < gNoOfAllBanks; i++) + gSentPokesToOpponent[(i & BIT_MON) >> 1] |= gBitTable[gBattlePartyID[bank]]; + } +} void BattleScriptPush(const u8* bsPtr) { @@ -828,7 +1092,7 @@ u8 TurnBasedEffects(void) { gBankAttacker = gActiveBank; gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down - if (HasMoveFailed(gActiveBank)) + if (WasUnableToUseMove(gActiveBank)) { CancelMultiTurnMoves(gActiveBank); gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -854,7 +1118,7 @@ u8 TurnBasedEffects(void) if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) { gBattleMons[gActiveBank].status2 -= 0x400; - if (HasMoveFailed(gActiveBank)) + if (WasUnableToUseMove(gActiveBank)) CancelMultiTurnMoves(gActiveBank); else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS)) @@ -1125,7 +1389,7 @@ bool8 sub_8041728(void) case 4: do { - gBank1 = gBankTarget = gBattleStruct->field_4E; //or should banks be switched? + gBank1 = gBankTarget = gBattleStruct->field_4E; if (gBattleMons[gBattleStruct->field_4E].hp == 0 && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { @@ -6190,7 +6454,7 @@ void ClearFuryCutterDestinyBondGrudge(u8 bank) gStatuses3[bank] &= ~(STATUS3_GRUDGE); } -void sub_80458B4(void) +void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands { if (gBattleExecBuffer == 0) gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); From 7b88c7f2f0bceb6adc0ea3081c18e175dd4cb21c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 6 Oct 2017 19:09:37 +0200 Subject: [PATCH 097/182] move const data to battle files --- asm/battle_message.s | 2 +- data/battle_message.s | 7 ++ data/data2b.s | 43 ---------- include/battle_2.h | 11 +++ ld_script.txt | 2 + src/battle_2.c | 187 +++++++++++++++++++++++++++++------------- src/battle_util.c | 25 +++--- 7 files changed, 162 insertions(+), 115 deletions(-) diff --git a/asm/battle_message.s b/asm/battle_message.s index c39903dcc5..b114a36f8e 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -738,7 +738,7 @@ _0814E730: ldr r5, [sp] ldr r4, [sp, 0x4] movs r3, 0 - ldr r2, =gUnknown_0831BCA8 + ldr r2, =gStatusConditionStringsTable _0814E738: ldr r1, [r2] ldr r0, [r1] diff --git a/data/battle_message.s b/data/battle_message.s index 05847eed03..4c72557d80 100644 --- a/data/battle_message.s +++ b/data/battle_message.s @@ -1768,12 +1768,19 @@ gText_SafariBalls:: @ 85CCB2C gText_SafariBallLeft:: @ 85CCB3C .string "{HIGHLIGHT DARK_GREY}Left: $" .string "{HIGHLIGHT DARK_GREY}$" +gText_Sleep:: .string "sleep$" +gText_Poison:: .string "poison$" +gText_Burn:: .string "burn$" +gText_Paralysis:: .string "paralysis$" +gText_Ice:: .string "ice$" +gText_Confusion:: .string "confusion$" +gText_Love:: .string "love$" gText_SpaceAndSpace:: @ 85CCB79 diff --git a/data/data2b.s b/data/data2b.s index 717b70d4dc..802399fca6 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -225,46 +225,3 @@ gTrainerMoneyTable:: @ 831AEB8 @ 831BAD4 .include "data/text/ability_description_pointers.inc" - -gTurnActionsFuncsTable:: @ 831BC0C - .incbin "baserom.gba", 0x31bc0c, 0x38 - -gEndTurnFuncsTable:: @ 831BC44 - .incbin "baserom.gba", 0x31bc44, 0x2c - -gStatusConditionString_PoisonJpn:: @ 831BC70 - .incbin "baserom.gba", 0x31bc70, 0x8 - -gStatusConditionString_SleepJpn:: @ 831BC78 - .incbin "baserom.gba", 0x31bc78, 0x8 - -gStatusConditionString_ParalysisJpn:: @ 831BC80 - .incbin "baserom.gba", 0x31bc80, 0x8 - -gStatusConditionString_BurnJpn:: @ 831BC88 - .incbin "baserom.gba", 0x31bc88, 0x8 - -gStatusConditionString_IceJpn:: @ 831BC90 - .incbin "baserom.gba", 0x31bc90, 0x8 - -gStatusConditionString_ConfusionJpn:: @ 831BC98 - .incbin "baserom.gba", 0x31bc98, 0x8 - -gStatusConditionString_LoveJpn:: @ 831BCA0 - .incbin "baserom.gba", 0x31bca0, 0x8 - -gUnknown_0831BCA8:: @ 831BCA8 - .incbin "baserom.gba", 0x31bca8, 0x38 - -gUnknown_0831BCE0:: @ 831BCE0 - .incbin "baserom.gba", 0x31bce0, 0xf - -gUnknown_0831BCEF:: @ 831BCEF - .incbin "baserom.gba", 0x31bcef, 0x4 - -gUnknown_0831BCF3:: @ 831BCF3 - .incbin "baserom.gba", 0x31bcf3, 0x5 - -gSoundMovesTable:: @ 831BCF8 - .incbin "baserom.gba", 0x31bcf8, 0x18 - diff --git a/include/battle_2.h b/include/battle_2.h index e4385db042..edd6b6ef31 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -15,5 +15,16 @@ void SwapTurnOrder(u8 id1, u8 id2); void BattleTurnPassed(void); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); +void sub_8039E9C(struct Sprite *sprite); + +extern const u8 gStatusConditionString_PoisonJpn[8]; +extern const u8 gStatusConditionString_SleepJpn[8]; +extern const u8 gStatusConditionString_ParalysisJpn[8]; +extern const u8 gStatusConditionString_BurnJpn[8]; +extern const u8 gStatusConditionString_IceJpn[8]; +extern const u8 gStatusConditionString_ConfusionJpn[8]; +extern const u8 gStatusConditionString_LoveJpn[8]; + +extern const u8 * const gStatusConditionStringsTable[][2]; #endif // GUARD_BATTLE_2_H diff --git a/ld_script.txt b/ld_script.txt index 4d66ea561e..cf8591194b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -325,6 +325,8 @@ SECTIONS { data/link.o(.rodata); src/rtc.o(.rodata); data/data2b.o(.rodata); + src/battle_2.o(.rodata); + src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); data/battle_controller_player.o(.rodata); data/smokescreen.o(.rodata); diff --git a/src/battle_2.c b/src/battle_2.c index 37ab7ab1f3..fd7cf68630 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -158,10 +158,11 @@ extern const struct BgTemplate gUnknown_0831AA08[]; extern const struct WindowTemplate * const gUnknown_0831ABA0[]; extern const u8 gUnknown_0831ACE0[]; extern const u8 gStatStageRatios[][2]; -extern const u8 gUnknown_0831BCE0[]; -extern const u8 gUnknown_0831BCEF[]; -extern const u8 gUnknown_0831BCF3[]; extern const u8 * const gBattleScriptsForMoveEffects[]; +extern const u8 * const gBattlescriptsForBallThrow[]; +extern const u8 * const gBattlescriptsForRunningByItem[]; +extern const u8 * const gUnknown_082DBD3C[]; +extern const u8 * const gBattlescriptsForSafariActions[]; // strings extern const u8 gText_LinkStandby3[]; @@ -171,6 +172,13 @@ extern const u8 gText_BattleRecordCouldntBeSaved[]; extern const u8 gText_BattleRecordedOnPass[]; extern const u8 gText_ShedinjaJapaneseName[]; extern const u8 gText_EmptyString3[]; +extern const u8 gText_Poison[]; +extern const u8 gText_Sleep[]; +extern const u8 gText_Paralysis[]; +extern const u8 gText_Burn[]; +extern const u8 gText_Ice[]; +extern const u8 gText_Confusion[]; +extern const u8 gText_Love[]; // battlescripts extern const u8 gUnknown_082DB8BE[]; @@ -230,7 +238,7 @@ static void CB2_HandleStartMultiBattle(void); static void CB2_HandleStartBattle(void); static void TryCorrectShedinjaLanguage(struct Pokemon *mon); static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer); -void BattleMainCB1(void); +static void BattleMainCB1(void); static void sub_8038538(struct Sprite *sprite); static void sub_8038F14(void); static void sub_8038F34(void); @@ -243,12 +251,11 @@ static void sub_8039838(struct Sprite *sprite); static void sub_8039894(struct Sprite *sprite); static void sub_80398D0(struct Sprite *sprite); static void sub_8039A48(struct Sprite *sprite); -void sub_8039AF4(struct Sprite *sprite); -void sub_8039E9C(struct Sprite *sprite); -void SpriteCallbackDummy_3(struct Sprite *sprite); -void oac_poke_ally_(struct Sprite *sprite); -void SpecialStatusesClear(void); -void TurnValuesCleanUp(bool8 var0); +static void sub_8039AF4(struct Sprite *sprite); +static void SpriteCallbackDummy_3(struct Sprite *sprite); +static void oac_poke_ally_(struct Sprite *sprite); +static void SpecialStatusesClear(void); +static void TurnValuesCleanUp(bool8 var0); static void SpriteCB_HealthBoxBounce(struct Sprite *sprite); static void BattleStartClearSetData(void); static void BattleIntroGetMonsData(void); @@ -264,17 +271,92 @@ static void BattleIntroOpponent2SendsOutMonAnimation(void); static void BattleIntroRecordMonsToDex(void); static void BattleIntroPlayer1SendsOutMonAnimation(void); static void TryDoEventsBeforeFirstTurn(void); -void HandleTurnActionSelectionState(void); +static void HandleTurnActionSelectionState(void); static void RunTurnActionsFunctions(void); static void SetActionsAndBanksTurnOrder(void); -void sub_803CDF8(void); -bool8 sub_803CDB8(void); +static void sub_803CDF8(void); +static bool8 sub_803CDB8(void); static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void); -void HandleEndTurn_FinishBattle(void); static void FreeResetData_ReturnToOvOrDoEvolutions(void); static void ReturnFromBattleToOverworld(void); static void TryEvolvePokemon(void); static void WaitForEvoSceneToFinish(void); +static void HandleEndTurn_ContinueBattle(void); +static void HandleEndTurn_BattleWon(void); +static void HandleEndTurn_BattleLost(void); +static void HandleEndTurn_RanFromBattle(void); +static void HandleEndTurn_MonFled(void); +static void HandleEndTurn_FinishBattle(void); +static void HandleAction_UseMove(void); +static void HandleAction_Switch(void); +static void HandleAction_UseItem(void); +static void HandleAction_Run(void); +static void HandleAction_WatchesCarefully(void); +static void HandleAction_SafariZoneBallThrow(void); +static void HandleAction_ThrowPokeblock(void); +static void HandleAction_GoNear(void); +static void HandleAction_SafriZoneRun(void); +static void HandleAction_Action9(void); +static void HandleAction_Action11(void); +static void HandleAction_NothingIsFainted(void); +static void HandleAction_ActionFinished(void); + +// rom const data +static void (* const sTurnActionsFuncsTable[])(void) = +{ + HandleAction_UseMove, // ACTION_USE_MOVE + HandleAction_UseItem, // ACTION_USE_ITEM + HandleAction_Switch, // ACTION_SWITCH + HandleAction_Run, // ACTION_RUN + HandleAction_WatchesCarefully, // ACTION_WATCHES_CAREFULLY + HandleAction_SafariZoneBallThrow, // ACTION_SAFARI_ZONE_BALL + HandleAction_ThrowPokeblock, // ACTION_POKEBLOCK_CASE + HandleAction_GoNear, // ACTION_GO_NEAR + HandleAction_SafriZoneRun, // ACTION_SAFARI_ZONE_RUN + HandleAction_Action9, // ACTION_9 + HandleAction_RunBattleScript, // ACTION_RUN_BATTLESCRIPT + HandleAction_Action11, // not sure about this one + HandleAction_ActionFinished, // ACTION_FINISHED + HandleAction_NothingIsFainted, // ACTION_NOTHING_FAINTED +}; + +static void (* const sEndTurnFuncsTable[])(void) = +{ + HandleEndTurn_ContinueBattle, // battle outcome 0 + HandleEndTurn_BattleWon, // BATTLE_WON + HandleEndTurn_BattleLost, // BATTLE_LOST + HandleEndTurn_BattleLost, // BATTLE_DREW + HandleEndTurn_RanFromBattle, // BATTLE_RAN + HandleEndTurn_FinishBattle, // BATTLE_PLAYER_TELEPORTED + HandleEndTurn_MonFled, // BATTLE_POKE_FLED + HandleEndTurn_FinishBattle, // BATTLE_CAUGHT + HandleEndTurn_FinishBattle, // battle outcome 8 + HandleEndTurn_FinishBattle, // BATTLE_FORFEITED + HandleEndTurn_FinishBattle, // BATTLE_OPPONENT_TELEPORTED +}; + +const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$"); +const u8 gStatusConditionString_SleepJpn[8] = _("ねむり$$$$"); +const u8 gStatusConditionString_ParalysisJpn[8] = _("まひ$$$$$"); +const u8 gStatusConditionString_BurnJpn[8] = _("やけど$$$$"); +const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$"); +const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$"); +const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$"); + +const u8 * const gStatusConditionStringsTable[][2] = +{ + {gStatusConditionString_PoisonJpn, gText_Poison}, + {gStatusConditionString_SleepJpn, gText_Sleep}, + {gStatusConditionString_ParalysisJpn, gText_Paralysis}, + {gStatusConditionString_BurnJpn, gText_Burn}, + {gStatusConditionString_IceJpn, gText_Ice}, + {gStatusConditionString_ConfusionJpn, gText_Confusion}, + {gStatusConditionString_LoveJpn, gText_Love} +}; + +static const u8 sUnknown_0831BCE0[][3] = {{0, 0, 0}, {3, 5, 0}, {2, 3, 0}, {1, 2, 0}, {1, 1, 0}}; +static const u8 sUnknown_0831BCEF[] = {4, 3, 2, 1}; +static const u8 sUnknown_0831BCF3[] = {4, 4, 4, 4}; void CB2_InitBattle(void) { @@ -2493,7 +2575,7 @@ void sub_8039AD8(struct Sprite *sprite) sprite->callback = sub_8039AF4; } -void sub_8039AF4(struct Sprite *sprite) +static void sub_8039AF4(struct Sprite *sprite) { sprite->data3--; if (sprite->data3 == 0) @@ -2528,7 +2610,7 @@ void sub_8039BB4(struct Sprite *sprite) sprite->callback = oac_poke_ally_; } -void oac_poke_ally_(struct Sprite *sprite) +static void oac_poke_ally_(struct Sprite *sprite) { if ((gUnknown_020243FC & 1) == 0) { @@ -2546,7 +2628,7 @@ void sub_80105DC(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy_3; } -void SpriteCallbackDummy_3(struct Sprite *sprite) +static void SpriteCallbackDummy_3(struct Sprite *sprite) { } @@ -2675,7 +2757,7 @@ void BeginBattleIntro(void) gBattleMainFunc = BattleIntroGetMonsData; } -void BattleMainCB1(void) +static void BattleMainCB1(void) { gBattleMainFunc(); @@ -3643,7 +3725,7 @@ static void TryDoEventsBeforeFirstTurn(void) } } -void HandleEndTurn_ContinueBattle(void) +static void HandleEndTurn_ContinueBattle(void) { s32 i; @@ -3843,7 +3925,7 @@ enum STATE_SELECTION_SCRIPT_MAY_RUN }; -void HandleTurnActionSelectionState(void) +static void HandleTurnActionSelectionState(void) { s32 i; @@ -4271,7 +4353,7 @@ void HandleTurnActionSelectionState(void) } } -bool8 sub_803CDB8(void) +static bool8 sub_803CDB8(void) { s32 i, var; @@ -4287,7 +4369,7 @@ bool8 sub_803CDB8(void) return FALSE; } -void sub_803CDF8(void) +static void sub_803CDF8(void) { *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1]; RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]); @@ -4571,7 +4653,7 @@ static void SetActionsAndBanksTurnOrder(void) gBattleStruct->focusPunchBank = 0; } -void TurnValuesCleanUp(bool8 var0) +static void TurnValuesCleanUp(bool8 var0) { s32 i; u8 *dataPtr; @@ -4608,7 +4690,7 @@ void TurnValuesCleanUp(bool8 var0) gSideTimers[1].followmeTimer = 0; } -void SpecialStatusesClear(void) +static void SpecialStatusesClear(void) { for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { @@ -4655,21 +4737,18 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) gBattleResources->battleScriptsStack->size = 0; } -extern void (* const gTurnActionsFuncsTable[])(void); -extern void (* const gEndTurnFuncsTable[])(void); - static void RunTurnActionsFunctions(void) { if (gBattleOutcome != 0) gCurrentActionFuncId = 12; *(&gBattleStruct->field_4B) = gCurrentTurnActionNumber; - gTurnActionsFuncsTable[gCurrentActionFuncId](); + sTurnActionsFuncsTable[gCurrentActionFuncId](); if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished { gHitMarker &= ~(HITMARKER_x100000); - gBattleMainFunc = gEndTurnFuncsTable[gBattleOutcome & 0x7F]; + gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F]; } else { @@ -4681,7 +4760,7 @@ static void RunTurnActionsFunctions(void) } } -void HandleEndTurn_BattleWon(void) +static void HandleEndTurn_BattleWon(void) { gCurrentActionFuncId = 0; @@ -4739,7 +4818,7 @@ void HandleEndTurn_BattleWon(void) gBattleMainFunc = HandleEndTurn_FinishBattle; } -void HandleEndTurn_BattleLost(void) +static void HandleEndTurn_BattleLost(void) { gCurrentActionFuncId = 0; @@ -4775,7 +4854,7 @@ void HandleEndTurn_BattleLost(void) gBattleMainFunc = HandleEndTurn_FinishBattle; } -void HandleEndTurn_RanFromBattle(void) +static void HandleEndTurn_RanFromBattle(void) { gCurrentActionFuncId = 0; @@ -4809,7 +4888,7 @@ void HandleEndTurn_RanFromBattle(void) gBattleMainFunc = HandleEndTurn_FinishBattle; } -void HandleEndTurn_MonFled(void) +static void HandleEndTurn_MonFled(void) { gCurrentActionFuncId = 0; @@ -4819,7 +4898,7 @@ void HandleEndTurn_MonFled(void) gBattleMainFunc = HandleEndTurn_FinishBattle; } -void HandleEndTurn_FinishBattle(void) +static void HandleEndTurn_FinishBattle(void) { if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC) { @@ -4985,7 +5064,7 @@ void RunBattleScriptCommands(void) gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } -void HandleAction_UseMove(void) +static void HandleAction_UseMove(void) { u8 side; u8 var = 4; @@ -5202,7 +5281,7 @@ void HandleAction_UseMove(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } -void HandleAction_Switch(void) +static void HandleAction_Switch(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -5220,12 +5299,7 @@ void HandleAction_Switch(void) gBattleResults.playerSwitchesCounter++; } -extern const u8 * const gBattlescriptsForBallThrow[]; -extern const u8 * const gBattlescriptsForRunningByItem[]; -extern const u8 * const gUnknown_082DBD3C[]; -extern const u8 * const gBattlescriptsForSafariActions[]; - -void HandleAction_UseItem(void) +static void HandleAction_UseItem(void) { gBankAttacker = gBankTarget = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -5384,7 +5458,7 @@ bool8 TryRunFromBattle(u8 bank) return effect; } -void HandleAction_Run(void) +static void HandleAction_Run(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; @@ -5438,7 +5512,7 @@ void HandleAction_Run(void) } } -void HandleAction_WatchesCarefully(void) +static void HandleAction_WatchesCarefully(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -5447,7 +5521,7 @@ void HandleAction_WatchesCarefully(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } -void HandleAction_SafariZoneBallThrow(void) +static void HandleAction_SafariZoneBallThrow(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -5458,7 +5532,7 @@ void HandleAction_SafariZoneBallThrow(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } -void HandleAction_ThrowPokeblock(void) +static void HandleAction_ThrowPokeblock(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -5472,27 +5546,27 @@ void HandleAction_ThrowPokeblock(void) gBattleStruct->field_7A++; if (gBattleStruct->field_7B > 1) { - if (gBattleStruct->field_7B < gUnknown_0831BCE0[3 * gBattleStruct->field_7A + gBattleCommunication[MULTISTRING_CHOOSER]]) + if (gBattleStruct->field_7B < sUnknown_0831BCE0[gBattleStruct->field_7A][gBattleCommunication[MULTISTRING_CHOOSER]]) gBattleStruct->field_7B = 1; else - gBattleStruct->field_7B -= gUnknown_0831BCE0[3 * gBattleStruct->field_7A + gBattleCommunication[MULTISTRING_CHOOSER]]; + gBattleStruct->field_7B -= sUnknown_0831BCE0[gBattleStruct->field_7A][gBattleCommunication[MULTISTRING_CHOOSER]]; } gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2]; gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } -void HandleAction_GoNear(void) +static void HandleAction_GoNear(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - gBattleStruct->field_7C += gUnknown_0831BCEF[gBattleStruct->field_79]; + gBattleStruct->field_7C += sUnknown_0831BCEF[gBattleStruct->field_79]; if (gBattleStruct->field_7C > 20) gBattleStruct->field_7C = 20; - gBattleStruct->field_7B +=gUnknown_0831BCF3[gBattleStruct->field_79]; + gBattleStruct->field_7B +=sUnknown_0831BCF3[gBattleStruct->field_79]; if (gBattleStruct->field_7B > 20) gBattleStruct->field_7B = 20; @@ -5509,7 +5583,7 @@ void HandleAction_GoNear(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } -void HandleAction_SafriZoneRun(void) +static void HandleAction_SafriZoneRun(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; PlaySE(SE_NIGERU); @@ -5517,7 +5591,7 @@ void HandleAction_SafriZoneRun(void) gBattleOutcome = BATTLE_RAN; } -void HandleAction_Action9(void) +static void HandleAction_Action9(void) { gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -5530,7 +5604,7 @@ void HandleAction_Action9(void) gActionsByTurnOrder[1] = ACTION_FINISHED; } -void HandleAction_Action11(void) +static void HandleAction_Action11(void) { if (!sub_8041728()) { @@ -5539,7 +5613,7 @@ void HandleAction_Action11(void) } } -void HandleAction_NothingIsFainted(void) +static void HandleAction_NothingIsFainted(void) { gCurrentTurnActionNumber++; gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; @@ -5550,7 +5624,7 @@ void HandleAction_NothingIsFainted(void) | HITMARKER_x8000000 | HITMARKER_x4000000); } -void HandleAction_ActionFinished(void) +static void HandleAction_ActionFinished(void) { *(gBattleStruct->field_5C + gBanksByTurnOrder[gCurrentTurnActionNumber]) = 6; gCurrentTurnActionNumber++; @@ -5577,4 +5651,3 @@ void HandleAction_ActionFinished(void) gBattleScripting.field_16 = 0; gBattleResources->battleScriptsStack->size = 0; } - diff --git a/src/battle_util.c b/src/battle_util.c index c5a85dd2bc..c6762dd993 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -59,7 +59,6 @@ extern u8 gUnknown_020241E9; extern u8 gSentPokesToOpponent[2]; extern const struct BattleMove gBattleMoves[]; -extern const u16 gSoundMovesTable[]; // scripts extern const u8 gUnknown_082DAE2A[]; @@ -172,17 +171,15 @@ extern const u8 gUnknown_082DB6A5[]; //disobedient, uses a random move extern const u8 gUnknown_082DB6D9[]; //disobedient, went to sleep extern const u8 gUnknown_082DB6F0[]; //disobedient, hits itself -// strings -extern const u8 gStatusConditionString_PoisonJpn[]; -extern const u8 gStatusConditionString_SleepJpn[]; -extern const u8 gStatusConditionString_ParalysisJpn[]; -extern const u8 gStatusConditionString_BurnJpn[]; -extern const u8 gStatusConditionString_IceJpn[]; -extern const u8 gStatusConditionString_ConfusionJpn[]; -extern const u8 gStatusConditionString_LoveJpn[]; - extern u8 weather_get_current(void); +// rom const data +static const u16 sSoundMovesTable[] = +{ + MOVE_GROWL, MOVE_ROAR, MOVE_SING, MOVE_SUPERSONIC, MOVE_SCREECH, MOVE_SNORE, + MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF +}; + u8 GetBattleBank(u8 caseId) { u8 ret = 0; @@ -2109,12 +2106,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) //_08042EF8 if (gLastUsedAbility == ABILITY_SOUNDPROOF) { - for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) + for (i = 0; sSoundMovesTable[i] != 0xFFFF; i++) { - if (gSoundMovesTable[i] == move) + if (sSoundMovesTable[i] == move) break; } - if (gSoundMovesTable[i] != 0xFFFF) + if (sSoundMovesTable[i] != 0xFFFF) { if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; @@ -3415,7 +3412,7 @@ _08042EF8:\n\ bl _0804441E\n\ _08042F02:\n\ movs r4, 0\n\ - ldr r0, =gSoundMovesTable\n\ + ldr r0, =sSoundMovesTable\n\ ldrh r2, [r0]\n\ ldr r3, =0x0000ffff\n\ adds r1, r0, 0\n\ From d0dfc758fc6684e765736c7aad7190328d3e145c Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 6 Oct 2017 18:33:35 -0400 Subject: [PATCH 098/182] decompile save_failed_screen.c --- asm/save_failed_screen.s | 707 ----------------------------------- include/gba/flash_internal.h | 1 + include/save.h | 2 +- ld_script.txt | 2 +- src/save_failed_screen.c | 332 ++++++++++++++++ 5 files changed, 335 insertions(+), 709 deletions(-) delete mode 100644 asm/save_failed_screen.s create mode 100755 src/save_failed_screen.c diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s deleted file mode 100644 index 182ff89540..0000000000 --- a/asm/save_failed_screen.s +++ /dev/null @@ -1,707 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8178F44 -sub_8178F44: @ 8178F44 - push {r4,r5,lr} - sub sp, 0x18 - adds r5, r0, 0 - adds r4, r1, 0 - adds r3, r2, 0 - lsls r3, 24 - add r0, sp, 0x14 - movs r2, 0 - strb r2, [r0] - adds r1, r0, 0 - movs r0, 0xF - strb r0, [r1, 0x1] - movs r0, 0x3 - strb r0, [r1, 0x2] - ldr r0, =gUnknown_0203BD0E - ldrb r0, [r0] - lsls r4, 27 - lsrs r4, 24 - lsrs r3, 21 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r2, [sp] - str r2, [sp, 0x4] - str r1, [sp, 0x8] - str r2, [sp, 0xC] - str r5, [sp, 0x10] - movs r1, 0x1 - adds r2, r4, 0 - bl AddTextPrinterParametrized2 - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8178F44 - - thumb_func_start DoSaveFailedScreen -DoSaveFailedScreen: @ 8178F90 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =sub_8178FDC - bl SetMainCallback2 - ldr r0, =gUnknown_0203BCFC - strh r4, [r0] - ldr r1, =gUnknown_0203BCFE - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strh r0, [r1, 0x2] - ldr r0, =gUnknown_0203BD0E - strb r2, [r0] - strb r2, [r0, 0x1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end DoSaveFailedScreen - - thumb_func_start sub_8178FC8 -sub_8178FC8: @ 8178FC8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8178FC8 - - thumb_func_start sub_8178FDC -sub_8178FDC: @ 8178FDC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r7, r0, r1 - ldrb r0, [r7] - cmp r0, 0 - beq _08178FF8 - cmp r0, 0x1 - bne _08178FF8 - b _0817925C -_08178FF8: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0xE - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - add r1, sp, 0x4 - movs r0, 0 - strh r0, [r1] - ldr r2, =0x040000d4 - str r1, [r2] - movs r1, 0xC0 - lsls r1, 19 - str r1, [r2, 0x4] - ldr r0, =0x8100c000 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r3, 0 - mov r8, r3 - str r3, [sp, 0x8] - add r4, sp, 0x8 - str r4, [r2] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r2, 0x4] - ldr r0, =0x85000100 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - add r0, sp, 0x4 - mov r3, r8 - strh r3, [r0] - str r0, [r2] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r2, 0x4] - ldr r0, =0x81000200 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, =gUnknown_085B0E04 - bl LZ77UnCompVram - ldr r0, =gUnknown_085B0A80 - ldr r1, =0x06007000 - bl LZ77UnCompVram - ldr r0, =gUnknown_085B0C0C - ldr r1, =0x06007800 - bl LZ77UnCompVram - ldr r0, =gUnknown_085EFDE4 - ldr r1, =0x06010020 - bl LZ77UnCompVram - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085EFD88 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r5, =0x0201e000 - movs r0, 0 - adds r1, r5, 0 - bl SetBgTilemapBuffer - mov r0, r8 - str r0, [sp, 0x8] - ldr r2, =0x05000200 - adds r0, r4, 0 - adds r1, r5, 0 - bl CpuSet - ldr r1, =gUnknown_0850E87C - movs r2, 0x90 - lsls r2, 1 - movs r6, 0x85 - lsls r6, 2 - movs r0, 0 - adds r3, r6, 0 - bl LoadBgTiles - ldr r0, =gUnknown_085EFD94 - bl InitWindows - ldr r0, =gUnknown_085EFD9C - bl AddWindowWithoutTileMap - ldr r4, =gUnknown_0203BD0E - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0x80 - lsls r1, 4 - adds r2, r5, r1 - movs r1, 0x7 - bl SetWindowAttribute - ldr r0, =gUnknown_085EFDA4 - bl AddWindowWithoutTileMap - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r3, 0xE8 - lsls r3, 5 - adds r5, r3 - movs r1, 0x7 - adds r2, r5, 0 - bl SetWindowAttribute - bl DeactivateAllTextPrinters - bl ResetSpriteData - bl ResetTasks - bl ResetPaletteFade - ldr r0, =gUnknown_085B0A00 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - ldr r0, =gUnknown_085EFDC4 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - ldr r0, =gUnknown_0850FEFC - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - ldr r0, =gUnknown_0860F074 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrb r0, [r4] - movs r1, 0 - adds r2, r6, 0 - movs r3, 0xE - bl SetWindowBorderStyle - ldrb r0, [r4, 0x1] - movs r1, 0 - adds r2, r6, 0 - movs r3, 0xE - bl SetWindowBorderStyle - ldrb r0, [r4, 0x1] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r4, 0x1] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - ldr r0, =gText_SaveFailedCheckingBackup - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 - movs r0, 0x1 - negs r0, r0 - mov r1, r8 - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - bl EnableInterrupts - ldr r0, =sub_8178FC8 - bl SetVBlankCallback - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _08179272 - .pool -_0817925C: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08179272 - ldr r0, =sub_8179288 - bl SetMainCallback2 - ldr r0, =sub_8179454 - bl SetVBlankCallback -_08179272: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8178FDC - - thumb_func_start sub_8179288 -sub_8179288: @ 8179288 - push {r4-r6,lr} - movs r5, 0 - ldr r0, =gUnknown_0203BCFE - movs r1, 0x1 - strh r1, [r0] - ldr r1, =gDamagedSaveSectors - ldr r0, [r1] - cmp r0, 0 - beq _081792EC - adds r6, r1, 0 -_0817929C: - ldr r0, [r6] - bl sub_81795AC - lsls r0, 24 - cmp r0, 0 - bne _08179348 - ldr r4, =gUnknown_0203BD0E - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gText_CheckCompleted - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 - ldr r0, =gUnknown_0203BCFC - ldrb r0, [r0] - bl HandleSavingData - ldr r0, [r6] - cmp r0, 0 - beq _081792DC - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gText_SaveFailedCheckingBackup - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 -_081792DC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r6] - cmp r0, 0 - beq _081792EC - cmp r5, 0x2 - bls _0817929C -_081792EC: - cmp r5, 0x3 - bne _0817931C - ldr r0, =gUnknown_0203BD0E - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gText_BackupMemoryDamaged - b _08179330 - .pool -_0817931C: - ldr r0, =gUnknown_0203BD0E - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gGameContinueCallback - ldr r0, [r0] - cmp r0, 0 - bne _08179370 - ldr r0, =gText_SaveCompleteGameCannotContinue -_08179330: - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 - b _0817937A - .pool -_08179348: - ldr r0, =gUnknown_0203BD0E - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gText_BackupMemoryDamaged - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 - ldr r0, =sub_8179390 - bl SetMainCallback2 - b _08179380 - .pool -_08179370: - ldr r0, =gText_SaveCompletePressA - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 -_0817937A: - ldr r0, =sub_81793E0 - bl SetMainCallback2 -_08179380: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179288 - - thumb_func_start sub_8179390 -sub_8179390: @ 8179390 - push {lr} - ldr r1, =gUnknown_0203BCFE - movs r0, 0 - strh r0, [r1] - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081793C4 - ldr r0, =gUnknown_0203BD0E - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gText_GamePlayCannotBeContinued - movs r1, 0x1 - movs r2, 0 - bl sub_8178F44 - ldr r0, =sub_8178FC8 - bl SetVBlankCallback - ldr r0, =sub_81793E0 - bl SetMainCallback2 -_081793C4: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179390 - - thumb_func_start sub_81793E0 -sub_81793E0: @ 81793E0 - push {lr} - sub sp, 0x4 - ldr r0, =gUnknown_0203BCFE - movs r2, 0 - strh r2, [r0] - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08179410 - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =sub_8178FC8 - bl SetVBlankCallback - ldr r0, =sub_8179428 - bl SetMainCallback2 -_08179410: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81793E0 - - thumb_func_start sub_8179428 -sub_8179428: @ 8179428 - push {r4,r5,lr} - bl UpdatePaletteFade - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0817944E - ldr r5, =gGameContinueCallback - ldr r0, [r5] - cmp r0, 0 - bne _08179448 - bl DoSoftReset - b _0817944E - .pool -_08179448: - bl SetMainCallback2 - str r4, [r5] -_0817944E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8179428 - - thumb_func_start sub_8179454 -sub_8179454: @ 8179454 - push {r4,r5,lr} - ldr r5, =gMain - ldr r0, [r5, 0x24] - lsrs r4, r0, 3 - movs r0, 0x7 - ands r4, r0 - ldr r0, =gUnknown_085EFD80 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r5, 0x38] - str r1, [r5, 0x3C] - ldrh r1, [r5, 0x3A] - ldr r0, =0xfffffe00 - ands r0, r1 - movs r1, 0x70 - orrs r0, r1 - strh r0, [r5, 0x3A] - adds r1, r5, 0 - adds r1, 0x38 - movs r0, 0x48 - strb r0, [r1] - ldr r0, =gUnknown_0203BCFE - ldrh r0, [r0] - cmp r0, 0 - beq _081794DC - ldr r3, =gUnknown_085EFDAC - lsls r2, r4, 1 - adds r2, r4 - adds r0, r2, r3 - ldrb r4, [r0] - ldrh r1, [r5, 0x3C] - ldr r0, =0xfffffc00 - ands r0, r1 - orrs r0, r4 - strh r0, [r5, 0x3C] - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - lsls r1, 4 - adds r3, 0x1 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 3 - orrs r1, r0 - adds r3, r5, 0 - adds r3, 0x3B - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _081794E8 - .pool -_081794DC: - ldrh r0, [r5, 0x3C] - ldr r1, =0xfffffc00 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strh r1, [r5, 0x3C] -_081794E8: - ldr r0, =gUnknown_030022F8 - movs r1, 0xE0 - lsls r1, 19 - movs r2, 0x1 - bl CpuFastSet - ldr r1, =gUnknown_0203BCFE - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _08179500 - subs r0, 0x1 - strh r0, [r1, 0x2] -_08179500: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8179454 - - thumb_func_start sub_8179514 -sub_8179514: @ 8179514 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gSaveDataBuffer - movs r3, 0x80 - lsls r3, 5 - movs r1, 0 - adds r2, r4, 0 - bl ReadFlash - movs r1, 0 - ldr r2, =0x000003ff -_0817952C: - ldr r0, [r4] - cmp r0, 0 - beq _08179540 - movs r0, 0x1 - b _0817954E - .pool -_08179540: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - adds r4, 0x4 - cmp r1, r2 - bls _0817952C - movs r0, 0 -_0817954E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8179514 - - thumb_func_start sub_8179554 -sub_8179554: @ 8179554 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 - ldr r1, =0x00000fff - mov r8, r1 - ldr r7, =ProgramFlashByte -_08179566: - movs r4, 0 - adds r5, r0, 0x1 -_0817956A: - ldr r3, [r7] - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - bl _call_via_r3 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r8 - bls _0817956A - adds r0, r6, 0 - bl sub_8179514 - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r5, 16 - lsrs r0, 16 - cmp r1, 0 - beq _08179596 - cmp r0, 0x81 - bls _08179566 -_08179596: - adds r0, r1, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8179554 - - thumb_func_start sub_81795AC -sub_81795AC: @ 81795AC - push {r4-r6,lr} - adds r5, r0, 0 - movs r6, 0 -_081795B2: - movs r4, 0x1 - lsls r4, r6 - adds r0, r5, 0 - ands r0, r4 - cmp r0, 0 - beq _081795CC - adds r0, r6, 0 - bl sub_8179554 - lsls r0, 24 - cmp r0, 0 - bne _081795CC - bics r5, r4 -_081795CC: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x1F - bls _081795B2 - cmp r5, 0 - beq _081795DE - movs r0, 0x1 - b _081795E0 -_081795DE: - movs r0, 0 -_081795E0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81795AC - - .align 2, 0 @ Don't pad with nop. diff --git a/include/gba/flash_internal.h b/include/gba/flash_internal.h index 6156b6c143..ba84546aaf 100644 --- a/include/gba/flash_internal.h +++ b/include/gba/flash_internal.h @@ -65,6 +65,7 @@ u16 ReadFlashId(void); void StartFlashTimer(u8 phase); void SetReadFlash1(u16 *dest); void StopFlashTimer(void); +void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size); u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData); diff --git a/include/save.h b/include/save.h index e98233c67b..6c1238cd20 100644 --- a/include/save.h +++ b/include/save.h @@ -76,7 +76,7 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location); //u8 sub_8125B88(u8 a1, u8 *data, u16 size); u8 DoReadFlashWholeSection(u8, struct SaveSection *); u16 CalculateChecksum(void *, u16); -//u8 HandleSavingData(u8 saveType); +u8 HandleSavingData(u8 saveType); //u8 TrySavingData(u8 saveType); //u8 sub_8125D80(void); //bool8 sub_8125DA8(void); diff --git a/ld_script.txt b/ld_script.txt index 3170e19193..890e58a9e7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -221,7 +221,7 @@ SECTIONS { asm/diploma.o(.text); asm/berry_tag_screen.o(.text); asm/mystery_event_menu.o(.text); - asm/save_failed_screen.o(.text); + src/save_failed_screen.o(.text); asm/braille_puzzles.o(.text); asm/pokeblock_feed.o(.text); asm/clear_save_data_screen.o(.text); diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c new file mode 100755 index 0000000000..546342b9d1 --- /dev/null +++ b/src/save_failed_screen.c @@ -0,0 +1,332 @@ +#include "global.h" +#include "text.h" +#include "main.h" +#include "palette.h" +#include "gpu_regs.h" +#include "bg.h" +#include "task.h" +#include "window.h" +#include "menu.h" +#include "save.h" +#include "gba/flash_internal.h" + +#define MSG_WIN_TOP 12 +#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4) + +extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, u8 speed, u8 *str); + +extern void (*gGameContinueCallback)(void); + +extern u32 gDamagedSaveSectors; + +extern u16 gUnknown_0203BCFC; +extern const u8 gUnknown_085B0E04[]; +extern const u8 gUnknown_085B0A80[]; +extern const u8 gUnknown_085B0C0C[]; +extern const u8 gUnknown_085EFDE4[]; + +extern const struct OamData gUnknown_085EFD80; // sClockOamData +extern const u8 gUnknown_085EFDAC[8][3]; // sClockFrames + +extern const struct BgTemplate gUnknown_085EFD88[]; +extern const struct WindowTemplate gUnknown_085EFD94[]; +extern struct WindowTemplate gUnknown_085EFD9C; +extern struct WindowTemplate gUnknown_085EFDA4; +extern struct SaveSection gSaveDataBuffer; +extern const u32 gUnknown_0850E87C[]; + +extern const u16 gUnknown_085B0A00[]; +extern const u16 gUnknown_085EFDC4[]; +extern const u16 gUnknown_0850FEFC[]; +extern const u16 gUnknown_0860F074[]; + +extern u8 gText_SaveFailedCheckingBackup[]; +extern u8 gText_BackupMemoryDamaged[]; +extern u8 gText_CheckCompleted[]; +extern u8 gText_SaveCompleteGameCannotContinue[]; +extern u8 gText_SaveCompletePressA[]; +extern u8 gText_GamePlayCannotBeContinued[]; + +extern void sub_8179454(void); + +extern u8 gDecompressionBuffer[]; + +struct Unk203BCFC +{ + u16 unk0; + u16 unk2; +}; + +extern struct Unk203BCFC gUnknown_0203BCFE; + +struct Unk203BD0E +{ + u8 unk0; + u8 unk1; +}; + +extern struct Unk203BD0E gUnknown_0203BD0E; + +void sub_8178FDC(void); +void sub_8179288(void); +void sub_8179390(void); +void sub_81793E0(void); +bool8 sub_81795AC(u32); +void sub_8179428(void); +bool8 sub_8179514(u16 sector); + +void sub_8178F44(u8 *text, u8 var1, u8 var2) +{ + struct TextColor color; + + color.fgColor = 0; + color.bgColor = 15; + color.shadowColor = 3; + AddTextPrinterParametrized2(gUnknown_0203BD0E.unk0, 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text); +} + +void DoSaveFailedScreen(u8 saveType) +{ + SetMainCallback2(sub_8178FDC); + gUnknown_0203BCFC = saveType; + gUnknown_0203BCFE.unk0 = 0; + gUnknown_0203BCFE.unk2 = 0; + gUnknown_0203BD0E.unk0 = 0; + gUnknown_0203BD0E.unk1 = 0; +} + +void sub_8178FC8(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8178FDC(void) +{ + switch(gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + // how come this doesnt use the Dma manager? + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + LZ77UnCompVram(gUnknown_085B0E04, (void *)VRAM); + LZ77UnCompVram(gUnknown_085B0A80, (void *)(VRAM + 0x7000)); + LZ77UnCompVram(gUnknown_085B0C0C, (void *)(VRAM + 0x7800)); + LZ77UnCompVram(gUnknown_085EFDE4, (void *)(VRAM + 0x10020)); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085EFD88, 3); + SetBgTilemapBuffer(0, (void *)&gDecompressionBuffer[0x2000]); + CpuFill32(0, &gDecompressionBuffer[0x2000], 0x800); + LoadBgTiles(0, gUnknown_0850E87C, 0x120, 0x214); + InitWindows(gUnknown_085EFD94); + // AddWindowWithoutTileMap returns a u16/integer, but the info is clobbered into a u8 here resulting in lost info. Bug? + gUnknown_0203BD0E.unk0 = AddWindowWithoutTileMap(&gUnknown_085EFD9C); + SetWindowAttribute(gUnknown_0203BD0E.unk0, 7, (u32)&gDecompressionBuffer[0x2800]); + gUnknown_0203BD0E.unk1 = AddWindowWithoutTileMap(&gUnknown_085EFDA4); + SetWindowAttribute(gUnknown_0203BD0E.unk1, 7, (u32)&gDecompressionBuffer[0x3D00]); + DeactivateAllTextPrinters(); + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + LoadPalette(gUnknown_085B0A00, 0, 0x40); + LoadPalette(gUnknown_085EFDC4, 0x100, 0x20); + LoadPalette(gUnknown_0850FEFC, 0xE0, 0x20); + LoadPalette(gUnknown_0860F074, 0xF0, 0x20); + SetWindowBorderStyle(gUnknown_0203BD0E.unk0, FALSE, 0x214, 0xE); + SetWindowBorderStyle(gUnknown_0203BD0E.unk1, FALSE, 0x214, 0xE); + FillWindowPixelBuffer(gUnknown_0203BD0E.unk1, 0x11); // backwards? + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + CopyWindowToVram(gUnknown_0203BD0E.unk1, 2); // again? + CopyWindowToVram(gUnknown_0203BD0E.unk0, 1); + sub_8178F44(gText_SaveFailedCheckingBackup, 1, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + EnableInterrupts(1); + SetVBlankCallback(sub_8178FC8); + SetGpuReg(0, 0x1040); + ShowBg(0); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 1: + if(!UpdatePaletteFade()) + { + SetMainCallback2(sub_8179288); + SetVBlankCallback(sub_8179454); + } + break; + } +} + +void sub_8179288(void) +{ + u8 wipeTries = 0; + + gUnknown_0203BCFE.unk0 = TRUE; + + while (gDamagedSaveSectors != 0 && wipeTries < 3) + { + if (sub_81795AC(gDamagedSaveSectors) != FALSE) + { + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + sub_8178F44(gText_BackupMemoryDamaged, 1, 0); + SetMainCallback2(sub_8179390); + return; + } + + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + sub_8178F44(gText_CheckCompleted, 1, 0); + HandleSavingData(gUnknown_0203BCFC); + + if(gDamagedSaveSectors != 0) + { + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + sub_8178F44(gText_SaveFailedCheckingBackup, 1, 0); + } + + wipeTries++; + } + + if(wipeTries == 3) + { + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + sub_8178F44(gText_BackupMemoryDamaged, 1, 0); + } + else + { + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + + if(gGameContinueCallback == NULL) + sub_8178F44(gText_SaveCompleteGameCannotContinue, 1, 0); + else + sub_8178F44(gText_SaveCompletePressA, 1, 0); + } + + SetMainCallback2(sub_81793E0); +} + +void sub_8179390(void) +{ + gUnknown_0203BCFE.unk0 = FALSE; + + if(gMain.newKeys & A_BUTTON) + { + FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + sub_8178F44(gText_GamePlayCannotBeContinued, 1, 0); + SetVBlankCallback(sub_8178FC8); + SetMainCallback2(sub_81793E0); + } +} + +void sub_81793E0(void) +{ + gUnknown_0203BCFE.unk0 = FALSE; + + if(gMain.newKeys & A_BUTTON) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + SetVBlankCallback(sub_8178FC8); + SetMainCallback2(sub_8179428); + } +} + +void sub_8179428(void) +{ + if(!UpdatePaletteFade()) + { + if(gGameContinueCallback == NULL) // no callback exists, so do a soft reset. + { + DoSoftReset(); + } + else + { + SetMainCallback2((MainCallback)gGameContinueCallback); + gGameContinueCallback = NULL; + } + } +} + +void sub_8179454(void) +{ + unsigned int n = (gMain.vblankCounter2 >> 3) & 7; + + gMain.oamBuffer[0] = gUnknown_085EFD80; + gMain.oamBuffer[0].x = 112; + gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;; + + if(gUnknown_0203BCFE.unk0 != FALSE) + { + gMain.oamBuffer[0].tileNum = gUnknown_085EFDAC[n][0]; + gMain.oamBuffer[0].matrixNum = (gUnknown_085EFDAC[n][2] << 4) | (gUnknown_085EFDAC[n][1] << 3); + } + else + { + gMain.oamBuffer[0].tileNum = 1; + } + + CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4); + + if(gUnknown_0203BCFE.unk2) + gUnknown_0203BCFE.unk2--; +} + +bool8 sub_8179514(u16 sector) +{ + u32 *ptr = (u32 *)&gSaveDataBuffer; + u16 i; + + ReadFlash(sector, 0, (u8 *)ptr, 4096); + + for (i = 0; i < 0x400; i++, ptr++) + if (*ptr) + return TRUE; + + return FALSE; +} + +bool8 sub_8179554(u16 sector) +{ + u16 i, j; + bool8 failed = TRUE; + + for (i = 0; failed && i < 130; i++) + { + for (j = 0; j < 0x1000; j++) + ProgramFlashByte(sector, j, 0); + + failed = sub_8179514(sector); + } + + return failed; +} + +bool8 sub_81795AC(u32 sectorBits) +{ + u16 i; + + for (i = 0; i < 0x20; i++) + if ((sectorBits & (1 << i)) && !sub_8179554(i)) + sectorBits &= ~(1 << i); + + if (sectorBits == 0) + return FALSE; + else + return TRUE; +} From f383cb8354223de3d8a630800ebeffc470737960 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 6 Oct 2017 19:48:18 -0400 Subject: [PATCH 099/182] update labels --- asm/credits.s | 6 +- asm/starter_choose.s | 8 +- data/data4.s | 13 +-- data/save_failed_screen.s | 8 +- src/save_failed_screen.c | 210 +++++++++++++++++++------------------- sym_ewram.txt | 6 +- 6 files changed, 124 insertions(+), 127 deletions(-) diff --git a/asm/credits.s b/asm/credits.s index 0a568a3ae6..0b2da16b81 100644 --- a/asm/credits.s +++ b/asm/credits.s @@ -491,14 +491,14 @@ _08175906: ldr r1, =gReservedSpritePaletteCount movs r0, 0x8 strb r0, [r1] - ldr r0, =gUnknown_085B0E04 + ldr r0, =gBirchHelpGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram - ldr r0, =gUnknown_085B0C0C + ldr r0, =gBirchGrassTilemap ldr r1, =0x06003800 bl LZ77UnCompVram - ldr r0, =gUnknown_085B0A02 + ldr r0, =gBirchBagGrassPal + 0x2 movs r1, 0x1 movs r2, 0x3E bl LoadPalette diff --git a/asm/starter_choose.s b/asm/starter_choose.s index 7e998c45fe..da42959ead 100644 --- a/asm/starter_choose.s +++ b/asm/starter_choose.s @@ -122,12 +122,12 @@ set_256color_bg_bg0: @ 8133F0C ldr r0, =0x81000200 str r0, [r2, 0x8] ldr r0, [r2, 0x8] - ldr r0, =gUnknown_085B0E04 + ldr r0, =gBirchHelpGfx bl LZ77UnCompVram - ldr r0, =gUnknown_085B0A80 + ldr r0, =gBirchBagTilemap ldr r1, =0x06003000 bl LZ77UnCompVram - ldr r0, =gUnknown_085B0C0C + ldr r0, =gBirchGrassTilemap ldr r1, =0x06003800 bl LZ77UnCompVram movs r0, 0 @@ -155,7 +155,7 @@ set_256color_bg_bg0: @ 8133F0C movs r1, 0xE0 movs r2, 0x20 bl LoadPalette - ldr r0, =gUnknown_085B0A00 + ldr r0, =gBirchBagGrassPal movs r1, 0 movs r2, 0x40 bl LoadPalette diff --git a/data/data4.s b/data/data4.s index 202b1ffe7a..d99336e87e 100644 --- a/data/data4.s +++ b/data/data4.s @@ -14,19 +14,16 @@ gUnknown_085B09F4:: @ 85B09F4 gUnknown_085B09F8:: @ 85B09F8 .incbin "baserom.gba", 0x5b09f8, 0x8 -gUnknown_085B0A00:: @ 85B0A00 - .incbin "baserom.gba", 0x5b0a00, 0x2 +gBirchBagGrassPal:: @ 85B0A00 + .incbin "baserom.gba", 0x5b0a00, 0x80 -gUnknown_085B0A02:: @ 85B0A02 - .incbin "baserom.gba", 0x5b0a02, 0x7e - -gUnknown_085B0A80:: @ 85B0A80 +gBirchBagTilemap:: @ 85B0A80 .incbin "baserom.gba", 0x5b0a80, 0x18c -gUnknown_085B0C0C:: @ 85B0C0C +gBirchGrassTilemap:: @ 85B0C0C .incbin "baserom.gba", 0x5b0c0c, 0x1f8 -gUnknown_085B0E04:: @ 85B0E04 +gBirchHelpGfx:: @ 85B0E04 .incbin "baserom.gba", 0x5b0e04, 0xfc8 gUnknown_085B1DCC:: @ 85B1DCC diff --git a/data/save_failed_screen.s b/data/save_failed_screen.s index 446eee2d21..1b9fb7ed19 100644 --- a/data/save_failed_screen.s +++ b/data/save_failed_screen.s @@ -3,7 +3,7 @@ .section .rodata -gUnknown_085EFD80:: @ 85EFD80 +gClockOamData:: @ 85EFD80 .incbin "baserom.gba", 0x5efd80, 0x8 gUnknown_085EFD88:: @ 85EFD88 @@ -18,11 +18,11 @@ gUnknown_085EFD9C:: @ 85EFD9C gUnknown_085EFDA4:: @ 85EFDA4 .incbin "baserom.gba", 0x5efda4, 0x8 -gUnknown_085EFDAC:: @ 85EFDAC +gClockFrames:: @ 85EFDAC .incbin "baserom.gba", 0x5efdac, 0x18 -gUnknown_085EFDC4:: @ 85EFDC4 +gSaveFailedClockPal:: @ 85EFDC4 .incbin "baserom.gba", 0x5efdc4, 0x20 -gUnknown_085EFDE4:: @ 85EFDE4 +gSaveFailedClockGfx:: @ 85EFDE4 .incbin "baserom.gba", 0x5efde4, 0x90 diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 546342b9d1..666de5c95b 100755 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -19,14 +19,14 @@ extern void (*gGameContinueCallback)(void); extern u32 gDamagedSaveSectors; -extern u16 gUnknown_0203BCFC; -extern const u8 gUnknown_085B0E04[]; -extern const u8 gUnknown_085B0A80[]; -extern const u8 gUnknown_085B0C0C[]; -extern const u8 gUnknown_085EFDE4[]; +extern u16 gSaveFailedType; +extern const u8 gBirchHelpGfx[]; +extern const u8 gBirchBagTilemap[]; +extern const u8 gBirchGrassTilemap[]; +extern const u8 gSaveFailedClockGfx[]; -extern const struct OamData gUnknown_085EFD80; // sClockOamData -extern const u8 gUnknown_085EFDAC[8][3]; // sClockFrames +extern const struct OamData gClockOamData; // sClockOamData +extern const u8 gClockFrames[8][3]; // sClockFrames extern const struct BgTemplate gUnknown_085EFD88[]; extern const struct WindowTemplate gUnknown_085EFD94[]; @@ -35,8 +35,8 @@ extern struct WindowTemplate gUnknown_085EFDA4; extern struct SaveSection gSaveDataBuffer; extern const u32 gUnknown_0850E87C[]; -extern const u16 gUnknown_085B0A00[]; -extern const u16 gUnknown_085EFDC4[]; +extern const u16 gBirchBagGrassPal[]; +extern const u16 gSaveFailedClockPal[]; extern const u16 gUnknown_0850FEFC[]; extern const u16 gUnknown_0860F074[]; @@ -47,64 +47,64 @@ extern u8 gText_SaveCompleteGameCannotContinue[]; extern u8 gText_SaveCompletePressA[]; extern u8 gText_GamePlayCannotBeContinued[]; -extern void sub_8179454(void); - extern u8 gDecompressionBuffer[]; -struct Unk203BCFC +struct ClockInfo { - u16 unk0; - u16 unk2; + bool16 clockRunning; + u16 debugTimer; // appears to be unused; it's only set to 0 and never used within the game. perhaps it was a volatile-like timer expected to be modified by an external tool? }; -extern struct Unk203BCFC gUnknown_0203BCFE; +extern struct ClockInfo gSaveFailedClockInfo; -struct Unk203BD0E +struct WindowIds { - u8 unk0; - u8 unk1; + u8 textWindowId; + u8 clockWindowId; }; -extern struct Unk203BD0E gUnknown_0203BD0E; +extern struct WindowIds gSaveFailedWindowIds; -void sub_8178FDC(void); -void sub_8179288(void); -void sub_8179390(void); -void sub_81793E0(void); -bool8 sub_81795AC(u32); -void sub_8179428(void); -bool8 sub_8179514(u16 sector); +static void CB2_SaveFailedScreen(void); +static void CB2_WipeSave(void); +static void CB2_GameplayCannotBeContinued(void); +static void CB2_FadeAndReturnToTitleScreen(void); +static void CB2_ReturnToTitleScreen(void); +static void VBlankCB_UpdateClockGraphics(void); +static bool8 VerifySectorWipe(u16 sector); +static bool8 WipeSectors(u32); -void sub_8178F44(u8 *text, u8 var1, u8 var2) +// although this is a general text printer, it's only used in this file. +static void SaveFailedScreenTextPrint(u8 *text, u8 var1, u8 var2) { struct TextColor color; color.fgColor = 0; color.bgColor = 15; color.shadowColor = 3; - AddTextPrinterParametrized2(gUnknown_0203BD0E.unk0, 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text); + AddTextPrinterParametrized2(gSaveFailedWindowIds.textWindowId, 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text); } void DoSaveFailedScreen(u8 saveType) { - SetMainCallback2(sub_8178FDC); - gUnknown_0203BCFC = saveType; - gUnknown_0203BCFE.unk0 = 0; - gUnknown_0203BCFE.unk2 = 0; - gUnknown_0203BD0E.unk0 = 0; - gUnknown_0203BD0E.unk1 = 0; + SetMainCallback2(CB2_SaveFailedScreen); + gSaveFailedType = saveType; + gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo.debugTimer = 0; + gSaveFailedWindowIds.textWindowId = 0; + gSaveFailedWindowIds.clockWindowId = 0; } -void sub_8178FC8(void) +static void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_8178FDC(void) +static void CB2_SaveFailedScreen(void) { - switch(gMain.state) + switch (gMain.state) { case 0: default: @@ -126,10 +126,10 @@ void sub_8178FDC(void) DmaFill16(3, 0, VRAM, VRAM_SIZE); DmaFill32(3, 0, OAM, OAM_SIZE); DmaFill16(3, 0, PLTT, PLTT_SIZE); - LZ77UnCompVram(gUnknown_085B0E04, (void *)VRAM); - LZ77UnCompVram(gUnknown_085B0A80, (void *)(VRAM + 0x7000)); - LZ77UnCompVram(gUnknown_085B0C0C, (void *)(VRAM + 0x7800)); - LZ77UnCompVram(gUnknown_085EFDE4, (void *)(VRAM + 0x10020)); + LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x7000)); + LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x7800)); + LZ77UnCompVram(gSaveFailedClockGfx, (void *)(VRAM + 0x10020)); ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_085EFD88, 3); SetBgTilemapBuffer(0, (void *)&gDecompressionBuffer[0x2000]); @@ -137,28 +137,28 @@ void sub_8178FDC(void) LoadBgTiles(0, gUnknown_0850E87C, 0x120, 0x214); InitWindows(gUnknown_085EFD94); // AddWindowWithoutTileMap returns a u16/integer, but the info is clobbered into a u8 here resulting in lost info. Bug? - gUnknown_0203BD0E.unk0 = AddWindowWithoutTileMap(&gUnknown_085EFD9C); - SetWindowAttribute(gUnknown_0203BD0E.unk0, 7, (u32)&gDecompressionBuffer[0x2800]); - gUnknown_0203BD0E.unk1 = AddWindowWithoutTileMap(&gUnknown_085EFDA4); - SetWindowAttribute(gUnknown_0203BD0E.unk1, 7, (u32)&gDecompressionBuffer[0x3D00]); + gSaveFailedWindowIds.textWindowId = AddWindowWithoutTileMap(&gUnknown_085EFD9C); + SetWindowAttribute(gSaveFailedWindowIds.textWindowId, 7, (u32)&gDecompressionBuffer[0x2800]); + gSaveFailedWindowIds.clockWindowId = AddWindowWithoutTileMap(&gUnknown_085EFDA4); + SetWindowAttribute(gSaveFailedWindowIds.clockWindowId, 7, (u32)&gDecompressionBuffer[0x3D00]); DeactivateAllTextPrinters(); ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - LoadPalette(gUnknown_085B0A00, 0, 0x40); - LoadPalette(gUnknown_085EFDC4, 0x100, 0x20); + LoadPalette(gBirchBagGrassPal, 0, 0x40); + LoadPalette(gSaveFailedClockPal, 0x100, 0x20); LoadPalette(gUnknown_0850FEFC, 0xE0, 0x20); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); - SetWindowBorderStyle(gUnknown_0203BD0E.unk0, FALSE, 0x214, 0xE); - SetWindowBorderStyle(gUnknown_0203BD0E.unk1, FALSE, 0x214, 0xE); - FillWindowPixelBuffer(gUnknown_0203BD0E.unk1, 0x11); // backwards? - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); - CopyWindowToVram(gUnknown_0203BD0E.unk1, 2); // again? - CopyWindowToVram(gUnknown_0203BD0E.unk0, 1); - sub_8178F44(gText_SaveFailedCheckingBackup, 1, 0); + SetWindowBorderStyle(gSaveFailedWindowIds.textWindowId, FALSE, 0x214, 0xE); + SetWindowBorderStyle(gSaveFailedWindowIds.clockWindowId, FALSE, 0x214, 0xE); + FillWindowPixelBuffer(gSaveFailedWindowIds.clockWindowId, 0x11); // backwards? + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + CopyWindowToVram(gSaveFailedWindowIds.clockWindowId, 2); // again? + CopyWindowToVram(gSaveFailedWindowIds.textWindowId, 1); + SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); EnableInterrupts(1); - SetVBlankCallback(sub_8178FC8); + SetVBlankCallback(VBlankCB); SetGpuReg(0, 0x1040); ShowBg(0); ShowBg(2); @@ -166,92 +166,92 @@ void sub_8178FDC(void) gMain.state++; break; case 1: - if(!UpdatePaletteFade()) + if (!UpdatePaletteFade()) { - SetMainCallback2(sub_8179288); - SetVBlankCallback(sub_8179454); + SetMainCallback2(CB2_WipeSave); + SetVBlankCallback(VBlankCB_UpdateClockGraphics); } break; } } -void sub_8179288(void) +static void CB2_WipeSave(void) { u8 wipeTries = 0; - gUnknown_0203BCFE.unk0 = TRUE; + gSaveFailedClockInfo.clockRunning = TRUE; while (gDamagedSaveSectors != 0 && wipeTries < 3) { - if (sub_81795AC(gDamagedSaveSectors) != FALSE) + if (WipeSectors(gDamagedSaveSectors) != FALSE) { - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); - sub_8178F44(gText_BackupMemoryDamaged, 1, 0); - SetMainCallback2(sub_8179390); + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0); + SetMainCallback2(CB2_GameplayCannotBeContinued); return; } - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); - sub_8178F44(gText_CheckCompleted, 1, 0); - HandleSavingData(gUnknown_0203BCFC); + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + SaveFailedScreenTextPrint(gText_CheckCompleted, 1, 0); + HandleSavingData(gSaveFailedType); - if(gDamagedSaveSectors != 0) + if (gDamagedSaveSectors != 0) { - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); - sub_8178F44(gText_SaveFailedCheckingBackup, 1, 0); + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0); } wipeTries++; } - if(wipeTries == 3) + if (wipeTries == 3) { - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); - sub_8178F44(gText_BackupMemoryDamaged, 1, 0); + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0); } else { - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); - if(gGameContinueCallback == NULL) - sub_8178F44(gText_SaveCompleteGameCannotContinue, 1, 0); + if (gGameContinueCallback == NULL) + SaveFailedScreenTextPrint(gText_SaveCompleteGameCannotContinue, 1, 0); else - sub_8178F44(gText_SaveCompletePressA, 1, 0); + SaveFailedScreenTextPrint(gText_SaveCompletePressA, 1, 0); } - SetMainCallback2(sub_81793E0); + SetMainCallback2(CB2_FadeAndReturnToTitleScreen); } -void sub_8179390(void) +static void CB2_GameplayCannotBeContinued(void) { - gUnknown_0203BCFE.unk0 = FALSE; + gSaveFailedClockInfo.clockRunning = FALSE; - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) { - FillWindowPixelBuffer(gUnknown_0203BD0E.unk0, 0x11); - sub_8178F44(gText_GamePlayCannotBeContinued, 1, 0); - SetVBlankCallback(sub_8178FC8); - SetMainCallback2(sub_81793E0); + FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0); + SetVBlankCallback(VBlankCB); + SetMainCallback2(CB2_FadeAndReturnToTitleScreen); } } -void sub_81793E0(void) +static void CB2_FadeAndReturnToTitleScreen(void) { - gUnknown_0203BCFE.unk0 = FALSE; + gSaveFailedClockInfo.clockRunning = FALSE; - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - SetVBlankCallback(sub_8178FC8); - SetMainCallback2(sub_8179428); + SetVBlankCallback(VBlankCB); + SetMainCallback2(CB2_ReturnToTitleScreen); } } -void sub_8179428(void) +void CB2_ReturnToTitleScreen(void) { - if(!UpdatePaletteFade()) + if (!UpdatePaletteFade()) { - if(gGameContinueCallback == NULL) // no callback exists, so do a soft reset. + if (gGameContinueCallback == NULL) // no callback exists, so do a soft reset. { DoSoftReset(); } @@ -263,18 +263,18 @@ void sub_8179428(void) } } -void sub_8179454(void) +static void VBlankCB_UpdateClockGraphics(void) { unsigned int n = (gMain.vblankCounter2 >> 3) & 7; - gMain.oamBuffer[0] = gUnknown_085EFD80; + gMain.oamBuffer[0] = gClockOamData; gMain.oamBuffer[0].x = 112; gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;; - if(gUnknown_0203BCFE.unk0 != FALSE) + if (gSaveFailedClockInfo.clockRunning != FALSE) { - gMain.oamBuffer[0].tileNum = gUnknown_085EFDAC[n][0]; - gMain.oamBuffer[0].matrixNum = (gUnknown_085EFDAC[n][2] << 4) | (gUnknown_085EFDAC[n][1] << 3); + gMain.oamBuffer[0].tileNum = gClockFrames[n][0]; + gMain.oamBuffer[0].matrixNum = (gClockFrames[n][2] << 4) | (gClockFrames[n][1] << 3); } else { @@ -283,11 +283,11 @@ void sub_8179454(void) CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4); - if(gUnknown_0203BCFE.unk2) - gUnknown_0203BCFE.unk2--; + if (gSaveFailedClockInfo.debugTimer) + gSaveFailedClockInfo.debugTimer--; } -bool8 sub_8179514(u16 sector) +static bool8 VerifySectorWipe(u16 sector) { u32 *ptr = (u32 *)&gSaveDataBuffer; u16 i; @@ -301,7 +301,7 @@ bool8 sub_8179514(u16 sector) return FALSE; } -bool8 sub_8179554(u16 sector) +static bool8 WipeSector(u16 sector) { u16 i, j; bool8 failed = TRUE; @@ -311,18 +311,18 @@ bool8 sub_8179554(u16 sector) for (j = 0; j < 0x1000; j++) ProgramFlashByte(sector, j, 0); - failed = sub_8179514(sector); + failed = VerifySectorWipe(sector); } return failed; } -bool8 sub_81795AC(u32 sectorBits) +static bool8 WipeSectors(u32 sectorBits) { u16 i; for (i = 0; i < 0x20; i++) - if ((sectorBits & (1 << i)) && !sub_8179554(i)) + if ((sectorBits & (1 << i)) && !WipeSector(i)) sectorBits &= ~(1 << i); if (sectorBits == 0) diff --git a/sym_ewram.txt b/sym_ewram.txt index b7807e8a3b..6331eb565b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1639,13 +1639,13 @@ gUnknown_0203BCF4: @ 203BCF4 gUnknown_0203BCF8: @ 203BCF8 .space 0x4 -gUnknown_0203BCFC: @ 203BCFC +gSaveFailedType: @ 203BCFC .space 0x2 -gUnknown_0203BCFE: @ 203BCFE +gSaveFailedClockInfo: @ 203BCFE .space 0x10 -gUnknown_0203BD0E: @ 203BD0E +gSaveFailedWindowIds: @ 203BD0E .space 0x6 gBraillePuzzleCallbackFlag: @ 203BD14 From 35bb9b02e3089693e7c0424a9a1620ae5f7a1380 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 6 Oct 2017 20:26:53 -0400 Subject: [PATCH 100/182] ewram defines --- src/save_failed_screen.c | 77 +++++++++++++++++++++------------------- sym_ewram.txt | 9 +---- 2 files changed, 41 insertions(+), 45 deletions(-) diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 666de5c95b..8536e541ac 100755 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -19,7 +19,6 @@ extern void (*gGameContinueCallback)(void); extern u32 gDamagedSaveSectors; -extern u16 gSaveFailedType; extern const u8 gBirchHelpGfx[]; extern const u8 gBirchBagTilemap[]; extern const u8 gBirchGrassTilemap[]; @@ -49,21 +48,25 @@ extern u8 gText_GamePlayCannotBeContinued[]; extern u8 gDecompressionBuffer[]; -struct ClockInfo +// gSaveFailedClockInfo enum +enum { - bool16 clockRunning; - u16 debugTimer; // appears to be unused; it's only set to 0 and never used within the game. perhaps it was a volatile-like timer expected to be modified by an external tool? + CLOCK_RUNNING, + DEBUG_TIMER }; -extern struct ClockInfo gSaveFailedClockInfo; - -struct WindowIds +// gSaveFailedWindowIds enum +enum { - u8 textWindowId; - u8 clockWindowId; + TEXT_WIN_ID, + CLOCK_WIN_ID }; -extern struct WindowIds gSaveFailedWindowIds; +EWRAM_DATA u16 gSaveFailedType = {0}; +EWRAM_DATA u16 gSaveFailedClockInfo[2] = {0}; +EWRAM_DATA u8 gSaveFailedUnused1[12] = {0}; +EWRAM_DATA u8 gSaveFailedWindowIds[2] = {0}; +EWRAM_DATA u8 gSaveFailedUnused2[4] = {0}; static void CB2_SaveFailedScreen(void); static void CB2_WipeSave(void); @@ -82,17 +85,17 @@ static void SaveFailedScreenTextPrint(u8 *text, u8 var1, u8 var2) color.fgColor = 0; color.bgColor = 15; color.shadowColor = 3; - AddTextPrinterParametrized2(gSaveFailedWindowIds.textWindowId, 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text); + AddTextPrinterParametrized2(gSaveFailedWindowIds[TEXT_WIN_ID], 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text); } void DoSaveFailedScreen(u8 saveType) { SetMainCallback2(CB2_SaveFailedScreen); gSaveFailedType = saveType; - gSaveFailedClockInfo.clockRunning = FALSE; - gSaveFailedClockInfo.debugTimer = 0; - gSaveFailedWindowIds.textWindowId = 0; - gSaveFailedWindowIds.clockWindowId = 0; + gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE; + gSaveFailedClockInfo[DEBUG_TIMER] = 0; + gSaveFailedWindowIds[TEXT_WIN_ID] = 0; + gSaveFailedWindowIds[CLOCK_WIN_ID] = 0; } static void VBlankCB(void) @@ -137,10 +140,10 @@ static void CB2_SaveFailedScreen(void) LoadBgTiles(0, gUnknown_0850E87C, 0x120, 0x214); InitWindows(gUnknown_085EFD94); // AddWindowWithoutTileMap returns a u16/integer, but the info is clobbered into a u8 here resulting in lost info. Bug? - gSaveFailedWindowIds.textWindowId = AddWindowWithoutTileMap(&gUnknown_085EFD9C); - SetWindowAttribute(gSaveFailedWindowIds.textWindowId, 7, (u32)&gDecompressionBuffer[0x2800]); - gSaveFailedWindowIds.clockWindowId = AddWindowWithoutTileMap(&gUnknown_085EFDA4); - SetWindowAttribute(gSaveFailedWindowIds.clockWindowId, 7, (u32)&gDecompressionBuffer[0x3D00]); + gSaveFailedWindowIds[TEXT_WIN_ID] = AddWindowWithoutTileMap(&gUnknown_085EFD9C); + SetWindowAttribute(gSaveFailedWindowIds[TEXT_WIN_ID], 7, (u32)&gDecompressionBuffer[0x2800]); + gSaveFailedWindowIds[CLOCK_WIN_ID] = AddWindowWithoutTileMap(&gUnknown_085EFDA4); + SetWindowAttribute(gSaveFailedWindowIds[CLOCK_WIN_ID], 7, (u32)&gDecompressionBuffer[0x3D00]); DeactivateAllTextPrinters(); ResetSpriteData(); ResetTasks(); @@ -149,12 +152,12 @@ static void CB2_SaveFailedScreen(void) LoadPalette(gSaveFailedClockPal, 0x100, 0x20); LoadPalette(gUnknown_0850FEFC, 0xE0, 0x20); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); - SetWindowBorderStyle(gSaveFailedWindowIds.textWindowId, FALSE, 0x214, 0xE); - SetWindowBorderStyle(gSaveFailedWindowIds.clockWindowId, FALSE, 0x214, 0xE); - FillWindowPixelBuffer(gSaveFailedWindowIds.clockWindowId, 0x11); // backwards? - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); - CopyWindowToVram(gSaveFailedWindowIds.clockWindowId, 2); // again? - CopyWindowToVram(gSaveFailedWindowIds.textWindowId, 1); + SetWindowBorderStyle(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE); + SetWindowBorderStyle(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE); + FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], 0x11); // backwards? + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again? + CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1); SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); EnableInterrupts(1); @@ -179,25 +182,25 @@ static void CB2_WipeSave(void) { u8 wipeTries = 0; - gSaveFailedClockInfo.clockRunning = TRUE; + gSaveFailedClockInfo[CLOCK_RUNNING] = TRUE; while (gDamagedSaveSectors != 0 && wipeTries < 3) { if (WipeSectors(gDamagedSaveSectors) != FALSE) { - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0); SetMainCallback2(CB2_GameplayCannotBeContinued); return; } - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); SaveFailedScreenTextPrint(gText_CheckCompleted, 1, 0); HandleSavingData(gSaveFailedType); if (gDamagedSaveSectors != 0) { - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0); } @@ -206,12 +209,12 @@ static void CB2_WipeSave(void) if (wipeTries == 3) { - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0); } else { - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); if (gGameContinueCallback == NULL) SaveFailedScreenTextPrint(gText_SaveCompleteGameCannotContinue, 1, 0); @@ -224,11 +227,11 @@ static void CB2_WipeSave(void) static void CB2_GameplayCannotBeContinued(void) { - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE; if (gMain.newKeys & A_BUTTON) { - FillWindowPixelBuffer(gSaveFailedWindowIds.textWindowId, 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0); SetVBlankCallback(VBlankCB); SetMainCallback2(CB2_FadeAndReturnToTitleScreen); @@ -237,7 +240,7 @@ static void CB2_GameplayCannotBeContinued(void) static void CB2_FadeAndReturnToTitleScreen(void) { - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE; if (gMain.newKeys & A_BUTTON) { @@ -271,7 +274,7 @@ static void VBlankCB_UpdateClockGraphics(void) gMain.oamBuffer[0].x = 112; gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;; - if (gSaveFailedClockInfo.clockRunning != FALSE) + if (gSaveFailedClockInfo[CLOCK_RUNNING] != FALSE) { gMain.oamBuffer[0].tileNum = gClockFrames[n][0]; gMain.oamBuffer[0].matrixNum = (gClockFrames[n][2] << 4) | (gClockFrames[n][1] << 3); @@ -283,8 +286,8 @@ static void VBlankCB_UpdateClockGraphics(void) CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4); - if (gSaveFailedClockInfo.debugTimer) - gSaveFailedClockInfo.debugTimer--; + if (gSaveFailedClockInfo[DEBUG_TIMER]) + gSaveFailedClockInfo[DEBUG_TIMER]--; } static bool8 VerifySectorWipe(u16 sector) diff --git a/sym_ewram.txt b/sym_ewram.txt index 6331eb565b..b1572bf25a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1639,14 +1639,7 @@ gUnknown_0203BCF4: @ 203BCF4 gUnknown_0203BCF8: @ 203BCF8 .space 0x4 -gSaveFailedType: @ 203BCFC - .space 0x2 - -gSaveFailedClockInfo: @ 203BCFE - .space 0x10 - -gSaveFailedWindowIds: @ 203BD0E - .space 0x6 + .include "src/save_failed_screen.o" gBraillePuzzleCallbackFlag: @ 203BD14 .space 0x4 From 058fed1fd89d74182ec8bf6cca97a090496441e9 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 6 Oct 2017 20:35:29 -0400 Subject: [PATCH 101/182] oops --- src/save_failed_screen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 8536e541ac..3f92195741 100755 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -250,7 +250,7 @@ static void CB2_FadeAndReturnToTitleScreen(void) } } -void CB2_ReturnToTitleScreen(void) +static void CB2_ReturnToTitleScreen(void) { if (!UpdatePaletteFade()) { From e38fd8347d2519551648c351d528cc3fee3924d4 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 6 Oct 2017 21:59:47 -0400 Subject: [PATCH 102/182] use rodata for save_failed_screen --- data/save_failed_screen.s | 28 -------- graphics/misc/clock_small.pal | 19 +++++ graphics/misc/clock_small.png | Bin 0 -> 221 bytes include/window.h | 2 +- ld_script.txt | 2 +- src/save_failed_screen.c | 127 +++++++++++++++++++++++++++++----- src/window.c | 2 +- 7 files changed, 131 insertions(+), 49 deletions(-) delete mode 100644 data/save_failed_screen.s create mode 100755 graphics/misc/clock_small.pal create mode 100755 graphics/misc/clock_small.png diff --git a/data/save_failed_screen.s b/data/save_failed_screen.s deleted file mode 100644 index 1b9fb7ed19..0000000000 --- a/data/save_failed_screen.s +++ /dev/null @@ -1,28 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gClockOamData:: @ 85EFD80 - .incbin "baserom.gba", 0x5efd80, 0x8 - -gUnknown_085EFD88:: @ 85EFD88 - .incbin "baserom.gba", 0x5efd88, 0xc - -gUnknown_085EFD94:: @ 85EFD94 - .incbin "baserom.gba", 0x5efd94, 0x8 - -gUnknown_085EFD9C:: @ 85EFD9C - .incbin "baserom.gba", 0x5efd9c, 0x8 - -gUnknown_085EFDA4:: @ 85EFDA4 - .incbin "baserom.gba", 0x5efda4, 0x8 - -gClockFrames:: @ 85EFDAC - .incbin "baserom.gba", 0x5efdac, 0x18 - -gSaveFailedClockPal:: @ 85EFDC4 - .incbin "baserom.gba", 0x5efdc4, 0x20 - -gSaveFailedClockGfx:: @ 85EFDE4 - .incbin "baserom.gba", 0x5efde4, 0x90 diff --git a/graphics/misc/clock_small.pal b/graphics/misc/clock_small.pal new file mode 100755 index 0000000000..3398fcbe3f --- /dev/null +++ b/graphics/misc/clock_small.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 139 90 +0 0 0 +57 57 57 +123 123 123 +189 189 189 +255 255 255 +255 65 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/misc/clock_small.png b/graphics/misc/clock_small.png new file mode 100755 index 0000000000000000000000000000000000000000..6b9f6c1f7730f24185477b95df18914f96c69791 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ!VDx|6+TY^aRPioT$8$^fJ{qE%j)Xty?gim z2LeY;pa?FoQ?Nl1D3{^s;us<^H8~+6As{G;fmu~tT$MvsiYskpOWV>mD?Cop`l@FO oVxO-Qv)8zF-%tokl> 3) & 7; - gMain.oamBuffer[0] = gClockOamData; + gMain.oamBuffer[0] = sClockOamData; gMain.oamBuffer[0].x = 112; gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;; if (gSaveFailedClockInfo[CLOCK_RUNNING] != FALSE) { - gMain.oamBuffer[0].tileNum = gClockFrames[n][0]; - gMain.oamBuffer[0].matrixNum = (gClockFrames[n][2] << 4) | (gClockFrames[n][1] << 3); + gMain.oamBuffer[0].tileNum = sClockFrames[n][0]; + gMain.oamBuffer[0].matrixNum = (sClockFrames[n][2] << 4) | (sClockFrames[n][1] << 3); } else { diff --git a/src/window.c b/src/window.c index 704060b9d7..f4cb48ec04 100644 --- a/src/window.c +++ b/src/window.c @@ -190,7 +190,7 @@ u16 AddWindow(const struct WindowTemplate *template) return win; } -int AddWindowWithoutTileMap(struct WindowTemplate *template) +int AddWindowWithoutTileMap(const struct WindowTemplate *template) { u16 win; u8 bgLayer; From 2ecb9fcd130af975dd85a86e8e0fb23520aa7869 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 6 Oct 2017 23:30:35 -0400 Subject: [PATCH 103/182] oops --- src/save.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/save.c b/src/save.c index aee20d451d..2c1b26ca9f 100644 --- a/src/save.c +++ b/src/save.c @@ -15,7 +15,6 @@ extern const struct SaveSectionOffsets gSaveSectionOffsets[0xE]; extern void DoSaveFailedScreen(u8); // save_failed_screen extern void LoadSerializedGame(void); // load_save extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data); -extern void ReadFlash(u8 sector, u32 arg1, void* data, u32 size); // iwram common u16 gLastWrittenSector; @@ -806,7 +805,7 @@ u32 sub_81535DC(u8 sector, u8* dst) if (sector != 30 && sector != 31) return 0xFF; - ReadFlash(sector, 0, &gSaveDataBuffer, sizeof(struct SaveSection)); + ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection)); if (*(u32*)(&gSaveDataBuffer.data[0]) != 0xB39D) return 0xFF; // copies whole save section except u32 counter From db63fc1a093472ebb5b7d5a75781037026bf2fe5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 7 Oct 2017 15:15:47 +0200 Subject: [PATCH 104/182] battle message huge take off --- asm/battle_frontier_2.s | 4 +- asm/battle_link_817C95C.s | 14 +- asm/battle_message.s | 694 ----------- data/battle_message.s | 2083 ---------------------------------- include/battle.h | 2 +- include/battle_message.h | 16 +- include/battle_string_ids.h | 385 +++++++ ld_script.txt | 3 +- src/battle_2.c | 9 +- src/battle_message.c | 1428 +++++++++++++++++++++++ src/battle_script_commands.c | 27 +- sym_ewram.txt | 21 +- 12 files changed, 1857 insertions(+), 2829 deletions(-) delete mode 100644 data/battle_message.s create mode 100644 include/battle_string_ids.h create mode 100644 src/battle_message.c diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index de56171670..9e01d22d1c 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -20577,7 +20577,7 @@ _081A5328: movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x1] - ldr r0, =gText_JapaneseHonorific + ldr r0, =gText_PlayerMon1Name bl BattleStringExpandPlaceholdersToDisplayedString ldr r4, =gDisplayedStringBattle adds r0, r4, 0 @@ -20586,7 +20586,7 @@ _081A5328: ldr r0, =gText_Vs movs r1, 0x10 bl sub_814F9EC - ldr r0, =gText_RivalBuffer + ldr r0, =gText_OpponentMon1Name bl BattleStringExpandPlaceholdersToDisplayedString adds r0, r4, 0 movs r1, 0x11 diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s index 39ae59d8b4..ec5baadd97 100644 --- a/asm/battle_link_817C95C.s +++ b/asm/battle_link_817C95C.s @@ -665,7 +665,7 @@ _0817D16C: bl _0817DFAC .pool _0817D1B8: - ldr r1, =gUnknown_02022F5C + ldr r1, =gBattleTextBuff1 + 4 ldrb r0, [r1] cmp r0, 0 beq _0817D1C4 @@ -917,7 +917,7 @@ _0817D3C0: bne _0817D3CC bl _0817E0A6 _0817D3CC: - ldr r1, =gUnknown_02022F6A + ldr r1, =gBattleTextBuff2 + 2 ldrh r0, [r1] cmp r0, 0xD1 bne _0817D3E8 @@ -946,7 +946,7 @@ _0817D3FE: ldrb r1, [r1] cmp r0, r1 bne _0817D436 - ldr r1, =gUnknown_02022F6A + ldr r1, =gBattleTextBuff2 + 2 ldrh r0, [r1] cmp r0, 0xD1 bne _0817D42C @@ -988,7 +988,7 @@ _0817D45C: bne _0817D468 bl _0817E0A6 _0817D468: - ldr r1, =gUnknown_02022F6A + ldr r1, =gBattleTextBuff2 + 2 ldrh r0, [r1] cmp r0, 0xD3 bne _0817D484 @@ -2182,7 +2182,7 @@ _0817DE10: b _0817DFAA .pool _0817DE58: - ldr r1, =gUnknown_02022F5A + ldr r1, =gBattleTextBuff1 + 2 ldrh r0, [r1] cmp r0, 0x73 bne _0817DE82 @@ -2204,7 +2204,7 @@ _0817DE58: ands r0, r2 strb r0, [r1] _0817DE82: - ldr r2, =gUnknown_02022F5A + ldr r2, =gBattleTextBuff1 + 2 ldrh r0, [r2] cmp r0, 0x71 bne _0817DEAA @@ -2225,7 +2225,7 @@ _0817DE82: ands r0, r2 strb r0, [r1] _0817DEAA: - ldr r1, =gUnknown_02022F5A + ldr r1, =gBattleTextBuff1 + 2 ldrh r0, [r1] cmp r0, 0x36 beq _0817DEB4 diff --git a/asm/battle_message.s b/asm/battle_message.s index b114a36f8e..9afa6e3995 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -5,700 +5,6 @@ .text - thumb_func_start BufferStringBattle -BufferStringBattle: @ 814E0C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r6, r0, 16 - movs r7, 0 - ldr r4, =gStringInfo - ldr r0, =gActiveBank - mov r8, r0 - ldrb r1, [r0] - lsls r1, 9 - ldr r0, =gBattleBufferA + 4 - adds r1, r0 - str r1, [r4] - ldr r2, =gLastUsedItem - ldrh r0, [r1, 0x4] - strh r0, [r2] - ldr r2, =gLastUsedAbility - ldrb r0, [r1, 0x6] - strb r0, [r2] - ldr r5, =gBattleScripting - ldrb r0, [r1, 0x7] - strb r0, [r5, 0x17] - ldr r3, =gBattleStruct - ldr r0, [r3] - adds r0, 0x52 - ldrb r1, [r1, 0x8] - strb r1, [r0] - ldr r0, [r3] - adds r0, 0xB1 - ldr r1, [r4] - ldrb r1, [r1, 0x9] - strb r1, [r0] - ldr r1, =gStringBank - ldr r2, [r4] - ldrb r0, [r2, 0xA] - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x8E - ldrb r1, [r2, 0xB] - strb r1, [r0] - movs r2, 0 - mov r12, r8 - mov r9, r5 - ldr r1, =gBattleTextBuff1 - mov r10, r1 - ldr r3, =gAbilitiesPerBank -_0814E126: - adds r0, r2, r3 - ldr r1, [r4] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0814E126 - movs r2, 0 - ldr r0, =gBattleTextBuff1 - mov r8, r0 - ldr r3, =gStringInfo - ldr r5, =gBattleTextBuff2 - ldr r4, =gBattleTextBuff3 -_0814E144: - mov r0, r8 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x10 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r5 - ldr r0, [r3] - adds r0, 0x20 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r4 - ldr r0, [r3] - adds r0, 0x30 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0xF - ble _0814E144 - cmp r6, 0x5 - bls _0814E176 - b _0814E6B8 -_0814E176: - lsls r0, r6, 2 - ldr r1, =_0814E1B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0814E1B4: - .4byte _0814E1CC - .4byte _0814E2AC - .4byte _0814E394 - .4byte _0814E430 - .4byte _0814E4F8 - .4byte _0814E55C -_0814E1CC: - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0814E26C - ldr r0, =0x02000002 - ands r0, r2 - cmp r0, 0 - beq _0814E248 - movs r0, 0x80 - lsls r0, 16 - ands r0, r2 - cmp r0, 0 - bne _0814E260 - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - beq _0814E214 - movs r0, 0x80 - lsls r0, 17 - ands r2, r0 - ldr r7, =gText_TwoTrainersWantToBattle - cmp r2, 0 - bne _0814E200 - b _0814E6D8 -_0814E200: - ldr r7, =gText_TwoTrainersWantToBattle3 - b _0814E6D8 - .pool -_0814E214: - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _0814E22C - ldr r7, =gText_TrainerXYWantsToBattle - b _0814E6D8 - .pool -_0814E22C: - movs r0, 0x80 - lsls r0, 17 - ands r2, r0 - ldr r7, =gText_TrainerXWantsToBattle - cmp r2, 0 - bne _0814E23A - b _0814E6D8 -_0814E23A: - ldr r7, =gText_TrainerWantsToBattle - b _0814E6D8 - .pool -_0814E248: - movs r0, 0x80 - lsls r0, 15 - ands r0, r2 - cmp r0, 0 - bne _0814E260 - movs r0, 0x80 - lsls r0, 8 - ands r2, r0 - ldr r7, =gText_TrainerXYWantsToBattle - cmp r2, 0 - bne _0814E260 - b _0814E6D8 -_0814E260: - ldr r7, =gText_TwoTrainersWantToBattle2 - b _0814E6D8 - .pool -_0814E26C: - movs r0, 0x80 - lsls r0, 6 - ands r0, r2 - cmp r0, 0 - beq _0814E280 - ldr r7, =gText_WildPkmnAppeared2 - b _0814E6D8 - .pool -_0814E280: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0814E290 - ldr r7, =gText_TwoWildPkmnAppeared - b _0814E6D8 - .pool -_0814E290: - movs r0, 0x80 - lsls r0, 2 - ands r2, r0 - ldr r7, =gText_WildPkmnAppeared - cmp r2, 0 - bne _0814E29E - b _0814E6D8 -_0814E29E: - ldr r7, =gText_WildPkmnAppearedPause - b _0814E6D8 - .pool -_0814E2AC: - mov r1, r12 - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0814E310 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0814E308 - movs r0, 0x80 - lsls r0, 15 - ands r0, r1 - cmp r0, 0 - beq _0814E2DC - ldr r7, =gText_TrainerXYSentOutZGoN - b _0814E6D8 - .pool -_0814E2DC: - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0814E2F0 - ldr r7, =gText_GoTwoPkmn - b _0814E6D8 - .pool -_0814E2F0: - movs r0, 0x40 - ands r1, r0 - ldr r7, =gText_GoTwoPkmn - cmp r1, 0 - bne _0814E2FC - b _0814E6D8 -_0814E2FC: - ldr r7, =gText_EnemySentOutPkmnGoPkmn - b _0814E6D8 - .pool -_0814E308: - ldr r7, =gText_GoPkmn - b _0814E6D8 - .pool -_0814E310: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0814E368 - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - bne _0814E330 - movs r0, 0x80 - lsls r0, 16 - ands r0, r1 - cmp r0, 0 - beq _0814E33C -_0814E330: - ldr r7, =gText_TwoTrainersSentPkmn - b _0814E6D8 - .pool -_0814E33C: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0814E34C - ldr r7, =gText_TwoTrainersSentOutPkmn - b _0814E6D8 - .pool -_0814E34C: - ldr r0, =0x02000002 - ands r1, r0 - ldr r7, =gText_TrainerXYSentOutTwoPkmn - cmp r1, 0 - bne _0814E358 - b _0814E6D8 -_0814E358: - ldr r7, =gText_TrainerXSentOutTwoPkmn - b _0814E6D8 - .pool -_0814E368: - ldr r0, =0x02000002 - ands r1, r0 - cmp r1, 0 - beq _0814E380 - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - ldr r7, =gText_TrainerXSentOutPkmn - cmp r1, r0 - beq _0814E380 - b _0814E6D8 -_0814E380: - ldr r7, =gText_TrainerXYSentOutPkmn - b _0814E6D8 - .pool -_0814E394: - mov r1, r12 - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0814E3EC - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB1 - ldrb r2, [r0] - cmp r2, 0 - bne _0814E3BC - ldr r7, =gText_PkmnThatsEnough - b _0814E6D8 - .pool -_0814E3BC: - cmp r2, 0x1 - beq _0814E3CC - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0814E3D8 -_0814E3CC: - ldr r7, =gText_PkmnComeBack - b _0814E6D8 - .pool -_0814E3D8: - ldr r7, =gText_PkmnGoodComeBack - cmp r2, 0x2 - beq _0814E3E0 - b _0814E6D8 -_0814E3E0: - ldr r7, =gText_PkmnOkComeBack - b _0814E6D8 - .pool -_0814E3EC: - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 4 - ldr r2, =gBattleTypeFlags - cmp r1, r0 - beq _0814E406 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0814E428 -_0814E406: - ldr r0, [r2] - movs r1, 0x40 - ands r0, r1 - ldr r7, =gText_TrainerXWithdrewPkmn - cmp r0, 0 - bne _0814E414 - b _0814E6D8 -_0814E414: - ldr r7, =gText_TrainerXWithdrewPkmn2 - b _0814E6D8 - .pool -_0814E428: - ldr r7, =gText_TrainerXYWithdrewPkmn - b _0814E6D8 - .pool -_0814E430: - mov r4, r9 - ldrb r0, [r4, 0x17] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0814E488 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0xB1 - ldrb r2, [r0] - cmp r2, 0 - beq _0814E456 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0814E468 -_0814E456: - ldr r7, =gText_GoPkmn2 - b _0814E6D8 - .pool -_0814E468: - cmp r2, 0x1 - bne _0814E474 - ldr r7, =gText_DoItPkmn - b _0814E6D8 - .pool -_0814E474: - ldr r7, =gText_YourFoesWeakGetEmPkmn - cmp r2, 0x2 - beq _0814E47C - b _0814E6D8 -_0814E47C: - ldr r7, =gText_GoForItPkmn - b _0814E6D8 - .pool -_0814E488: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0814E4DC - movs r0, 0x80 - lsls r0, 16 - ands r0, r1 - cmp r0, 0 - beq _0814E4AC - ldrb r0, [r4, 0x17] - b _0814E4EA - .pool -_0814E4AC: - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - beq _0814E4BC - ldr r7, =gText_TrainerXSentOutPkmn3 - b _0814E6D8 - .pool -_0814E4BC: - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - ldr r7, =gText_TrainerXSentOutPkmn2 - cmp r1, r0 - beq _0814E4CC - b _0814E6D8 -_0814E4CC: - ldr r7, =gText_TrainerXYSentOutPkmn2 - b _0814E6D8 - .pool -_0814E4DC: - movs r0, 0x80 - lsls r0, 8 - ands r1, r0 - cmp r1, 0 - beq _0814E4CC - mov r1, r9 - ldrb r0, [r1, 0x17] -_0814E4EA: - ldr r7, =gText_TrainerXYSentOutPkmn3 - cmp r0, 0x1 - beq _0814E4F2 - b _0814E6D8 -_0814E4F2: - b _0814E4CC - .pool -_0814E4F8: - mov r0, r10 - bl sub_814F8F8 - ldr r0, =gStringInfo - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _0814E534 - ldr r0, =gBattleTextBuff2 - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, 0x8E - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - ldr r2, =gText_UnknownMoveTypes - adds r1, r2 - bl StringCopy - b _0814E544 - .pool -_0814E534: - ldr r0, =gBattleTextBuff2 - ldrh r2, [r2] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy -_0814E544: - ldr r0, =gBattleTextBuff2 - bl sub_814F950 - ldr r7, =gText_XUsedY2 - b _0814E6D8 - .pool -_0814E55C: - ldr r4, =gBattleTextBuff1 - ldrb r1, [r4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0814E5C4 - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - mov r1, r12 - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0814E58A - ldrb r1, [r4] - cmp r1, 0x3 - beq _0814E58A - movs r0, 0x3 - eors r0, r1 - strb r0, [r4] -_0814E58A: - ldr r0, =gBattleTextBuff1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0814E5A4 - ldr r7, =gText_GotAwaySafely - b _0814E6D8 - .pool -_0814E5A4: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - ldr r7, =gText_WildFled - cmp r0, 0 - bne _0814E5B4 - b _0814E6D8 -_0814E5B4: - ldr r7, =gText_TwoWildFled - b _0814E6D8 - .pool -_0814E5C4: - mov r1, r12 - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0814E5E0 - ldrb r1, [r4] - cmp r1, 0x3 - beq _0814E5E0 - movs r0, 0x3 - eors r0, r1 - strb r0, [r4] -_0814E5E0: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0814E638 - ldr r0, =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0814E628 - cmp r0, 0x2 - bgt _0814E608 - cmp r0, 0x1 - beq _0814E60E - b _0814E6D8 - .pool -_0814E608: - cmp r0, 0x3 - beq _0814E630 - b _0814E6D8 -_0814E60E: - movs r0, 0x80 - lsls r0, 16 - ands r1, r0 - ldr r7, =gText_PlayerBeatTwo - cmp r1, 0 - beq _0814E6D8 - ldr r7, =gText_TwoEnemiesDefeated - b _0814E6D8 - .pool -_0814E628: - ldr r7, =gText_PlayerLostToTwo - b _0814E6D8 - .pool -_0814E630: - ldr r7, =gText_PlayerBattledToDrawVsTwo - b _0814E6D8 - .pool -_0814E638: - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _0814E680 - ldr r0, =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0814E670 - cmp r0, 0x2 - bgt _0814E660 - cmp r0, 0x1 - beq _0814E666 - b _0814E6D8 - .pool -_0814E660: - cmp r0, 0x3 - beq _0814E678 - b _0814E6D8 -_0814E666: - ldr r7, =gText_PlayerDefeatedXY - b _0814E6D8 - .pool -_0814E670: - ldr r7, =gText_PlayerLostAgainst2 - b _0814E6D8 - .pool -_0814E678: - ldr r7, =gText_PlayerBattledToDraw2 - b _0814E6D8 - .pool -_0814E680: - ldr r0, =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0814E6A8 - cmp r0, 0x2 - bgt _0814E698 - cmp r0, 0x1 - beq _0814E69E - b _0814E6D8 - .pool -_0814E698: - cmp r0, 0x3 - beq _0814E6B0 - b _0814E6D8 -_0814E69E: - ldr r7, =gText_PlayerDefeated - b _0814E6D8 - .pool -_0814E6A8: - ldr r7, =gText_PlayerLostAgainst - b _0814E6D8 - .pool -_0814E6B0: - ldr r7, =gText_PlayerBattledToDraw - b _0814E6D8 - .pool -_0814E6B8: - movs r0, 0xBE - lsls r0, 1 - cmp r6, r0 - bls _0814E6CC - ldr r1, =gDisplayedStringBattle - movs r0, 0xFF - strb r0, [r1] - b _0814E6DE - .pool -_0814E6CC: - ldr r1, =gBattleStringsTable - adds r0, r6, 0 - subs r0, 0xC - lsls r0, 2 - adds r0, r1 - ldr r7, [r0] -_0814E6D8: - adds r0, r7, 0 - bl BattleStringExpandPlaceholdersToDisplayedString -_0814E6DE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end BufferStringBattle - thumb_func_start BattleStringExpandPlaceholdersToDisplayedString BattleStringExpandPlaceholdersToDisplayedString: @ 814E6F0 push {lr} diff --git a/data/battle_message.s b/data/battle_message.s deleted file mode 100644 index 4c72557d80..0000000000 --- a/data/battle_message.s +++ /dev/null @@ -1,2083 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gText_Buffer36:: @ 85C9B78 - .string "{STRING 36}$" - -gText_PkmnGainedEXP:: @ 85C9B7B - .string "{STRING 0} gained{PLAYER}\n{STRING 52} EXP. Points!\p$" - -gText_EmptyString4:: @ 85C9B98 - .string "$" - -gText_ABoosted:: @ 85C9B99 - .string " a boosted$" - -gText_PkmnGrewToLv:: @ 85C9BA4 - .string "{STRING 0} grew to\nLV. {PLAYER}!{UNKNOWN_A}\p$" - -gText_PkmnLearnedMove:: @ 85C9BBA - .string "{STRING 0} learned\n{PLAYER}!{UNKNOWN_A}\p$" - -gText_TryToLearnMove1:: @ 85C9BCC - .string "{STRING 0} is trying to\nlearn {PLAYER}.\p$" - -gText_TryToLearnMove2:: @ 85C9BE7 - .string "But, {STRING 0} can’t learn\nmore than four moves.\p$" - -gText_TryToLearnMove3:: @ 85C9C12 - .string "Delete a move to make\nroom for {PLAYER}?$" - -gText_PkmnForgotMove:: @ 85C9C35 - .string "{STRING 0} forgot\n{PLAYER}.\p$" - -gText_StopLearningMove:: @ 85C9C44 - .string "{PAUSE 32}Stop learning\n{PLAYER}?$" - -gText_DidNotLearnMove:: @ 85C9C59 - .string "{STRING 0} did not learn\n{PLAYER}.\p$" - -gText_UseNextPkmn:: @ 85C9C6F - .string "Use next POKéMON?$" - -gText_AttackMissed:: @ 85C9C81 - .string "{STRING 15}’s\nattack missed!$" - -gText_PkmnProtectedItself:: @ 85C9C95 - .string "{STRING 16}\nprotected itself!$" - -gText_AvoidedDamage:: @ 85C9CAA - .string "{STRING 16} avoided\ndamage with {STRING 25}!$" - -gText_PkmnMakesGroundMiss:: @ 85C9CC5 - .string "{STRING 16} makes GROUND\nmoves miss with {STRING 25}!$" - -gText_PkmnAvoidedAttack:: @ 85C9CE9 - .string "{STRING 16} avoided\nthe attack!$" - -gText_ItDoesntAffect:: @ 85C9D00 - .string "It doesn’t affect\n{STRING 16}…$" - -gText_PkmnFainted:: @ 85C9D16 - .string "{STRING 15}\nfainted!\p$" - -gText_PkmnFainted2:: @ 85C9D23 - .string "{STRING 16}\nfainted!\p$" - -gText_PlayerGotMoney:: @ 85C9D30 - .string "{STRING 35} got ¥{STRING 0}\nfor winning!\p$" - -gText_PlayerWhiteout:: @ 85C9D49 - .string "{STRING 35} is out of\nusable POKéMON!\p$" - -gText_PlayerWhiteout2:: @ 85C9D67 - .string "{STRING 35} whited out!{PAUSE_UNTIL_PRESS}$" - -gText_PreventsEscape:: @ 85C9D78 - .string "{STRING 19} prevents\nescape with {STRING 26}!\p$" - -gText_CantEscape2:: @ 85C9D95 - .string "Can’t escape!\p$" - -gText_PkmnCantEscape2:: @ 85C9DA4 - .string "{STRING 15} can’t escape!$" - -gText_HitXTimes:: @ 85C9DB5 - .string "Hit {STRING 0} time(s)!$" - -gText_PkmnFellAsleep:: @ 85C9DC5 - .string "{STRING 17}\nfell asleep!$" - -gText_PkmnMadeSleep:: @ 85C9DD5 - .string "{STRING 19}’s {STRING 26}\nmade {STRING 17} sleep!$" - -gText_PkmnAlreadyAsleep:: @ 85C9DEC - .string "{STRING 16} is\nalready asleep!$" - -gText_PkmnAlreadyAsleep2:: @ 85C9E02 - .string "{STRING 15} is\nalready asleep!$" - -gText_PkmnWasntAffected:: @ 85C9E18 - .string "{STRING 16}\nwasn’t affected!$" - -gText_PkmnWasPoisoned:: @ 85C9E2C - .string "{STRING 17}\nwas poisoned!$" - -gText_PkmnPoisonedBy:: @ 85C9E3D - .string "{STRING 19}’s {STRING 26}\npoisoned {STRING 17}!$" - -gText_PkmnHurtByPoison:: @ 85C9E52 - .string "{STRING 15} is hurt\nby poison!$" - -gText_PkmnAlreadyPoisoned:: @ 85C9E68 - .string "{STRING 16} is already\npoisoned.$" - -gText_PkmnBadlyPoisoned:: @ 85C9E80 - .string "{STRING 17} is badly\npoisoned!$" - -gText_PkmnEnergyDrained:: @ 85C9E96 - .string "{STRING 16} had its\nenergy drained!$" - -gText_PkmnWasBurned:: @ 85C9EB1 - .string "{STRING 17} was burned!$" - -gText_PkmnBurnedBy:: @ 85C9EC0 - .string "{STRING 19}’s {STRING 26}\nburned {STRING 17}!$" - -gText_PkmnHurtByBurn:: @ 85C9ED3 - .string "{STRING 15} is hurt\nby its burn!$" - -gText_PkmnAlreadyHasBurn:: @ 85C9EEB - .string "{STRING 16} already\nhas a burn.$" - -gText_PkmnWasFrozen:: @ 85C9F02 - .string "{STRING 17} was\nfrozen solid!$" - -gText_PkmnFrozenBy:: @ 85C9F17 - .string "{STRING 19}’s {STRING 26}\nfroze {STRING 17} solid!$" - -gText_PkmnIsFrozen:: @ 85C9F2F - .string "{STRING 15} is\nfrozen solid!$" - -gText_PkmnWasDefrosted:: @ 85C9F43 - .string "{STRING 16} was\ndefrosted!$" - -gText_PkmnWasDefrosted2:: @ 85C9F55 - .string "{STRING 15} was\ndefrosted!$" - -gText_PkmnWasDefrostedBy:: @ 85C9F67 - .string "{STRING 15} was\ndefrosted by {STRING 20}!$" - -gText_PkmnWasParalyzed:: @ 85C9F7F - .string "{STRING 17} is paralyzed!\nIt may be unable to move!$" - -gText_PkmnWasParalyzedBy:: @ 85C9FAA - .string "{STRING 19}’s {STRING 26}\nparalyzed {STRING 17}!\lIt may be unable to move!$" - -gText_PkmnIsParalyzed:: @ 85C9FDA - .string "{STRING 15} is paralyzed!\nIt can’t move!$" - -gText_PkmnIsAlreadyParalyzed:: @ 85C9FFA - .string "{STRING 16} is\nalready paralyzed!$" - -gText_PkmnHealedParalysis:: @ 85CA013 - .string "{STRING 16} was\nhealed of paralysis!$" - -gText_PkmnDreamEaten:: @ 85CA02F - .string "{STRING 16}’s\ndream was eaten!$" - -gText_StatsWontIncrease:: @ 85CA045 - .string "{STRING 15}’s {STRING 0}\nwon’t go higher!$" - -gText_StatsWontDecrease:: @ 85CA05E - .string "{STRING 16}’s {STRING 0}\nwon’t go lower!$" - -gText_TeamStoppedWorking:: @ 85CA076 - .string "Your team’s {STRING 0}\nstopped working!$" - -gText_FoeStoppedWorking:: @ 85CA096 - .string "The foe’s {STRING 0}\nstopped working!$" - -gText_PkmnIsConfused:: @ 85CA0B4 - .string "{STRING 15} is\nconfused!$" - -gText_PkmnHealedConfusion:: @ 85CA0C4 - .string "{STRING 15} snapped\nout of confusion!$" - -gText_PkmnWasConfused:: @ 85CA0E1 - .string "{STRING 17} became\nconfused!$" - -gText_PkmnAlreadyConfused:: @ 85CA0F5 - .string "{STRING 16} is\nalready confused!$" - -gText_PkmnFellInLove:: @ 85CA10D - .string "{STRING 16}\nfell in love!$" - -gText_PkmnInLove:: @ 85CA11E - .string "{STRING 15} is in love\nwith {STRING 19}!$" - -gText_PkmnImmobilizedByLove:: @ 85CA135 - .string "{STRING 15} is\nimmobilized by love!$" - -gText_PkmnBlownAway:: @ 85CA150 - .string "{STRING 16} was\nblown away!$" - -gText_PkmnChangedType:: @ 85CA163 - .string "{STRING 15} transformed\ninto the {STRING 0} type!$" - -gText_PkmnFlinched:: @ 85CA184 - .string "{STRING 15} flinched!$" - -gText_PkmnRegainedHealth:: @ 85CA191 - .string "{STRING 16} regained\nhealth!$" - -gText_PkmnHPFull:: @ 85CA1A5 - .string "{STRING 16}’s\nHP is full!$" - -gText_PkmnRaisedSpDef:: @ 85CA1B6 - .string "{STRING 42}’s {STRING 20}\nraised SP. DEF!$" - -gText_PkmnRaisedSpDefALittle:: @ 85CA1CE - .string "{STRING 42}’s {STRING 20}\nraised SP. DEF a little!$" - -gText_PkmnRaisedDef:: @ 85CA1EF - .string "{STRING 42}’s {STRING 20}\nraised DEFENSE!$" - -gText_PkmnRaisedDefALittle:: @ 85CA207 - .string "{STRING 42}’s {STRING 20}\nraised DEFENSE a little!$" - -gText_PkmnCoveredByVeil:: @ 85CA228 - .string "{STRING 42}’s party is covered\nby a veil!$" - -gText_PkmnUsedSafeguard:: @ 85CA249 - .string "{STRING 16}’s party is protected\nby SAFEGUARD!$" - -gText_PkmnSafeguardExpired:: @ 85CA26F - .string "{STRING 44}’s party is no longer\nprotected by SAFEGUARD!$" - -gText_PkmnWentToSleep:: @ 85CA29F - .string "{STRING 15} went\nto sleep!$" - -gText_PkmnSleptHealthy:: @ 85CA2B1 - .string "{STRING 15} slept and\nbecame healthy!$" - -gText_PkmnWhippedWhirlwind:: @ 85CA2CE - .string "{STRING 15} whipped\nup a whirlwind!$" - -gText_PkmnTookSunlight:: @ 85CA2E9 - .string "{STRING 15} took\nin sunlight!$" - -gText_PkmnLoweredHead:: @ 85CA2FE - .string "{STRING 15} lowered\nits head!$" - -gText_PkmnIsGlowing:: @ 85CA313 - .string "{STRING 15} is glowing!$" - -gText_PkmnFlewHigh:: @ 85CA322 - .string "{STRING 15} flew\nup high!$" - -gText_PkmnDugHole:: @ 85CA333 - .string "{STRING 15} dug a hole!$" - -gText_PkmnHidUnderwater:: @ 85CA342 - .string "{STRING 15} hid\nunderwater!$" - -gText_PkmnSprangUp:: @ 85CA355 - .string "{STRING 15} sprang up!$" - -gText_PkmnSqueezedByBind:: @ 85CA363 - .string "{STRING 16} was squeezed by\n{STRING 15}’s BIND!$" - -gText_PkmnTrappedInVortex:: @ 85CA381 - .string "{STRING 16} was trapped\nin the vortex!$" - -gText_PkmnTrappedBySandTomb:: @ 85CA39F - .string "{STRING 16} was trapped\nby SAND TOMB!$" - -gText_PkmnWrappedBy:: @ 85CA3BC - .string "{STRING 16} was WRAPPED by\n{STRING 15}!$" - -gText_PkmnClamped:: @ 85CA3D2 - .string "{STRING 15} CLAMPED\n{STRING 16}!$" - -gText_PkmnHurtBy:: @ 85CA3E1 - .string "{STRING 15} is hurt\nby {STRING 0}!$" - -gText_PkmnFreedFrom:: @ 85CA3F3 - .string "{STRING 15} was freed\nfrom {STRING 0}!$" - -gText_PkmnCrashed:: @ 85CA409 - .string "{STRING 15} kept going\nand crashed!$" - -gText_PkmnShroudedInMist:: @ 85CA424 - .string "{STRING 42} became\nshrouded in MIST!$" - -gText_PkmnProtectedByMist:: @ 85CA440 - .string "{STRING 19} is protected\nby MIST!$" - -gText_PkmnGettingPumped:: @ 85CA459 - .string "{STRING 15} is getting\npumped!$" - -gText_PkmnHitWithRecoil:: @ 85CA46F - .string "{STRING 15} is hit\nwith recoil!$" - -gText_PkmnProtectedItself2:: @ 85CA486 - .string "{STRING 15} protected\nitself!$" - -gText_PkmnBuffetedBySandstorm:: @ 85CA49B - .string "{STRING 15} is buffeted\nby the sandstorm!$" - -gText_PkmnPeltedByHail:: @ 85CA4BC - .string "{STRING 15} is pelted\nby HAIL!$" - -gText_PkmnsXWoreOff:: @ 85CA4D2 - .string "{STRING 40}’s {STRING 0}\nwore off!$" - -gText_PkmnSeeded:: @ 85CA4E4 - .string "{STRING 16} was seeded!$" - -gText_PkmnEvadedAttack:: @ 85CA4F3 - .string "{STRING 16} evaded\nthe attack!$" - -gText_PkmnSappedByLeechSeed:: @ 85CA509 - .string "{STRING 15}’s health is\nsapped by LEECH SEED!$" - -gText_PkmnFastAsleep:: @ 85CA52E - .string "{STRING 15} is fast\nasleep.$" - -gText_PkmnWokeUp:: @ 85CA541 - .string "{STRING 15} woke up!$" - -gText_PkmnUproarKeptAwake:: @ 85CA54D - .string "But {STRING 19}’s UPROAR\nkept it awake!$" - -gText_PkmnWokeUpInUproar:: @ 85CA56C - .string "{STRING 15} woke up\nin the UPROAR!$" - -gText_PkmnCausedUproar:: @ 85CA586 - .string "{STRING 15} caused\nan UPROAR!$" - -gText_PkmnMakingUproar:: @ 85CA59B - .string "{STRING 15} is making\nan UPROAR!$" - -gText_PkmnCalmedDown:: @ 85CA5B3 - .string "{STRING 15} calmed down.$" - -gText_PkmnCantSleepInUproar:: @ 85CA5C3 - .string "But {STRING 16} can’t\nsleep in an UPROAR!$" - -gText_PkmnStockpiled:: @ 85CA5E4 - .string "{STRING 15} STOCKPILED\n{STRING 0}!$" - -gText_PkmnCantStockpile:: @ 85CA5F6 - .string "{STRING 15} can’t\nSTOCKPILE any more!$" - -gText_PkmnCantSleepInUproar2:: @ 85CA613 - .string "But {STRING 16} can’t\nsleep in an UPROAR!$" - -gText_UproarKeptPkmnAwake:: @ 85CA634 - .string "But the UPROAR kept\n{STRING 16} awake!$" - -gText_PkmnStayedAwakeUsing:: @ 85CA652 - .string "{STRING 16} stayed awake\nusing its {STRING 25}!$" - -gText_PkmnStoringEnergy:: @ 85CA670 - .string "{STRING 15} is storing\nenergy!$" - -gText_PkmnUnleashedEnergy:: @ 85CA686 - .string "{STRING 15} unleashed\nenergy!$" - -gText_PkmnFatigueConfusion:: @ 85CA69B - .string "{STRING 15} became\nconfused due to fatigue!$" - -gText_PkmnPickedUpItem:: @ 85CA6BE - .string "{STRING 35} picked up\n¥{STRING 0}!\p$" - -gText_PkmnUnaffected:: @ 85CA6D1 - .string "{STRING 16} is\nunaffected!$" - -gText_PkmnTransformedInto:: @ 85CA6E3 - .string "{STRING 15} transformed\ninto {STRING 0}!$" - -gText_PkmnMadeSubstitute:: @ 85CA6FB - .string "{STRING 15} made\na SUBSTITUTE!$" - -gText_PkmnHasSubstitute:: @ 85CA711 - .string "{STRING 15} already\nhas a SUBSTITUTE!$" - -gText_SubstituteDamaged:: @ 85CA72E - .string "The SUBSTITUTE took damage\nfor {STRING 16}!\p$" - -gText_PkmnSubstituteFaded:: @ 85CA752 - .string "{STRING 16}’s\nSUBSTITUTE faded!\p$" - -gText_PkmnMustRecharge:: @ 85CA76A - .string "{STRING 15} must\nrecharge!$" - -gText_PkmnRageBuilding:: @ 85CA76C - .string "{STRING 16}’s RAGE\nis building!$" - -gText_PkmnMoveWasDisabled:: @ 85CA793 - .string "{STRING 16}’s {STRING 0}\nwas disabled!$" - -gText_PkmnMoveDisabledNoMore:: @ 85CA7A9 - .string "{STRING 15} is disabled\nno more!$" - -gText_PkmnGotEncore:: @ 85CA7C1 - .string "{STRING 16} got\nan ENCORE!$" - -gText_PkmnEncoreEnded:: @ 85CA7D3 - .string "{STRING 15}’s ENCORE\nended!$" - -gText_PkmnTookAim:: @ 85CA7E6 - .string "{STRING 15} took aim\nat {STRING 16}!$" - -gText_PkmnSketchedMove:: @ 85CA7F9 - .string "{STRING 15} SKETCHED\n{STRING 0}!$" - -gText_PkmnTryingToTakeFoe:: @ 85CA809 - .string "{STRING 15} is trying\nto take its foe with it!$" - -gText_PkmnTookFoe:: @ 85CA82F - .string "{STRING 16} took\n{STRING 15} with it!$" - -gText_PkmnReducedPP:: @ 85CA843 - .string "Reduced {STRING 16}’s\n{STRING 0} by {PLAYER}!$" - -gText_PkmnStoleItem:: @ 85CA85A - .string "{STRING 15} stole\n{STRING 16}’s {STRING 22}!$" - -gText_PkmnCantEscape:: @ 85CA86C - .string "{STRING 16} can’t\nescape now!$" - -gText_PkmnFellIntoNightmare:: @ 85CA881 - .string "{STRING 16} fell into\na NIGHTMARE!$" - -gText_PkmnLockedInNightmare:: @ 85CA89B - .string "{STRING 15} is locked\nin a NIGHTMARE!$" - -gText_PkmnLaidCurse:: @ 85CA8B8 - .string "{STRING 15} cut its own HP and\nlaid a CURSE on {STRING 16}!$" - -gText_PkmnAfflictedByCurse:: @ 85CA8E2 - .string "{STRING 15} is afflicted\nby the CURSE!$" - -gText_SpikesScattered:: @ 85CA900 - .string "SPIKES were scattered all around\nthe opponent’s side!$" - -gText_PkmnHurtBySpikes:: @ 85CA936 - .string "{STRING 19} is hurt\nby SPIKES!$" - -gText_PkmnIdentified:: @ 85CA94C - .string "{STRING 15} identified\n{STRING 16}!$" - -gText_PkmnPerishCountFell:: @ 85CA95E - .string "{STRING 15}’s PERISH count\nfell to {STRING 0}!$" - -gText_PkmnBracedItself:: @ 85CA97C - .string "{STRING 15} braced\nitself!$" - -gText_PkmnEnduredHit:: @ 85CA98E - .string "{STRING 16} ENDURED\nthe hit!$" - -gText_MagnitudeStrength:: @ 85CA9A2 - .string "MAGNITUDE {STRING 0}!$" - -gText_PkmnCutHPMaxedAttack:: @ 85CA9B0 - .string "{STRING 15} cut its own HP\nand maximized ATTACK!$" - -gText_PkmnCopiedStatChanges:: @ 85CA9D8 - .string "{STRING 15} copied\n{STRING 16}’s stat changes!$" - -gText_PkmnGotFree:: @ 85CA9F5 - .string "{STRING 15} got free of\n{STRING 16}’s {STRING 0}!$" - -gText_PkmnShedLeechSeed:: @ 85CAA0D - .string "{STRING 15} shed\nLEECH SEED!$" - -gText_PkmnBlewAwaySpikes:: @ 85CAA21 - .string "{STRING 15} blew away\nSPIKES!$" - -gText_PkmnFledFromBattle:: @ 85CAA36 - .string "{STRING 15} fled from\nbattle!$" - -gText_PkmnForesawAttack:: @ 85CAA4B - .string "{STRING 15} foresaw\nan attack!$" - -gText_PkmnTookAttack:: @ 85CAA61 - .string "{STRING 16} took the\n{STRING 0} attack!$" - -gText_PkmnChoseXAsDestiny:: @ 85CAA78 - .string "{STRING 15} chose\n{STRING 20} as its destiny!$" - -gText_PkmnAttack:: @ 85CAA94 - .string "{STRING 0}’s attack!$" - -gText_PkmnCenterAttention:: @ 85CAAA1 - .string "{STRING 15} became the\ncenter of attention!$" - -gText_PkmnChargingPower:: @ 85CAAC4 - .string "{STRING 15} began\ncharging power!$" - -gText_NaturePowerTurnedInto:: @ 85CAADD - .string "NATURE POWER turned into\n{STRING 20}!$" - -gText_PkmnStatusNormal:: @ 85CAAFA - .string "{STRING 15}’s status\nreturned to normal!$" - -gText_PkmnSubjectedToTorment:: @ 85CAB1A - .string "{STRING 16} was subjected\nto TORMENT!$" - -gText_PkmnTighteningFocus:: @ 85CAB37 - .string "{STRING 15} is tightening\nits focus!$" - -gText_PkmnFellForTaunt:: @ 85CAB53 - .string "{STRING 16} fell for\nthe TAUNT!$" - -gText_PkmnReadyToHelp:: @ 85CAB6A - .string "{STRING 15} is ready to\nhelp {STRING 16}!$" - -gText_PkmnSwitchedItems:: @ 85CAB82 - .string "{STRING 15} switched\nitems with its opponent!$" - -gText_PkmnObtainedX:: @ 85CABA7 - .string "{STRING 15} obtained\n{STRING 0}.$" - -gText_PkmnObtainedX2:: @ 85CABB7 - .string "{STRING 16} obtained\n{PLAYER}.$" - -gText_PkmnObtainedXYObtainedZ:: @ 85CABC7 - .string "{STRING 15} obtained\n{STRING 0}.\p{STRING 16} obtained\n{PLAYER}.$" - -gText_PkmnCopiedFoe:: @ 85CAB82 - .string "{STRING 15} copied\n{STRING 16}’s {STRING 25}!$" - -gText_PkmnMadeWish:: @ 85CABFA - .string "{STRING 15} made a WISH!$" - -gText_PkmnWishCameTrue:: @ 85CAC0A - .string "{STRING 0}’s WISH\ncame true!$" - -gText_PkmnPlantedRoots:: @ 85CAC1F - .string "{STRING 15} planted its roots!$" - -gText_PkmnAbsorbedNutrients:: @ 85CAC35 - .string "{STRING 15} absorbed\nnutrients with its roots!$" - -gText_PkmnAnchoredItself:: @ 85CAC5B - .string "{STRING 16} anchored\nitself with its roots!$" - -gText_PkmnWasMadeDrowsy:: @ 85CAC7E - .string "{STRING 15} made\n{STRING 16} drowsy!$" - -gText_PkmnKnockedOff:: @ 85CAC91 - .string "{STRING 15} knocked off\n{STRING 16}’s {STRING 22}!$" - -gText_PkmnSwappedAbilities:: @ 85CACA9 - .string "{STRING 15} swapped abilities\nwith its opponent!$" - -gText_PkmnSealedOpponentMove:: @ 85CACD1 - .string "{STRING 15} sealed the\nopponent’s move(s)!$" - -gText_PkmnWantsGrudge:: @ 85CACF3 - .string "{STRING 15} wants the\nopponent to bear a GRUDGE!$" - -gText_PkmnLostPPGrudge:: @ 85CAD1B - .string "{STRING 15}’s {STRING 0} lost\nall its PP due to the GRUDGE!$" - -gText_PkmnShroudedItself:: @ 85CAD46 - .string "{STRING 15} shrouded\nitself in {STRING 20}!$" - -gText_PkmnMoveBounced:: @ 85CAD60 - .string "{STRING 15}’s {STRING 20}\nwas bounced back by MAGIC COAT!$" - -gText_PkmnWaitsForTarget:: @ 85CAD88 - .string "{STRING 15} waits for a target\nto make a move!$" - -gText_PkmnSnatchedMove:: @ 85CADAE - .string "{STRING 16} SNATCHED\n{STRING 19}’s move!$" - -gText_ElectricityWeakened:: @ 85CADC5 - .string "Electricity’s power was\nweakened!$" - -gText_FireWeakened:: @ 85CADE7 - .string "Fire’s power was\nweakened!$" - -gText_XFoundOneY:: @ 85CAE02 - .string "{STRING 15} found\none {STRING 22}!$" - -gText_SoothingAroma:: @ 85CAE13 - .string "A soothing aroma wafted\nthrough the area!$" - -gText_ItemsCantBeUsedNow:: @ 85CAE3D - .string "Items can’t be used now.{PAUSE 64}$" - -gText_ForXCommaYZ:: @ 85CAE59 - .string "For {STRING 19},\n{STRING 22} {STRING 0}$" - -gText_PkmnUsedXToGetPumped:: @ 85CAE67 - .string "{STRING 19} used\n{STRING 22} to get pumped!$" - -gText_PkmnLostFocus:: @ 85CAE81 - .string "{STRING 15} lost its\nfocus and couldn’t move!$" - -gText_PkmnWasDraggedOut:: @ 85CAEA6 - .string "{STRING 16} was\ndragged out!\p$" - -gText_TheWallShattered:: @ 85CAEBB - .string "The wall shattered!$" - -gText_ButNoEffect:: @ 85CAECF - .string "But it had no effect!$" - -gText_PkmnHasNoMovesLeft:: @ 85CAEE5 - .string "{STRING 18} has no\nmoves left!\p$" - -gText_PkmnMoveIsDisabled:: @ 85CAEFC - .string "{STRING 18}’s {STRING 20}\nis disabled!\p$" - -gText_PkmnCantUseMoveTorment:: @ 85CAF12 - .string "{STRING 18} can’t use the same\nmove in a row due to the TORMENT!\p$" - -gText_PkmnCantUseMoveTaunt:: @ 85CAF4B - .string "{STRING 18} can’t use\n{STRING 20} after the TAUNT!\p$" - -gText_PkmnCantUseMoveSealed:: @ 85CAF6D - .string "{STRING 18} can’t use the\nsealed {STRING 20}!\p$" - -gText_PkmnMadeItRain:: @ 85CAF8A - .string "{STRING 19}’s {STRING 26}\nmade it rain!$" - -gText_PkmnRaisedSpeed:: @ 85CAFA0 - .string "{STRING 19}’s {STRING 26}\nraised its SPEED!$" - -gText_PkmnProtectedBy:: @ 85CAFBA - .string "{STRING 16} was protected\nby {STRING 25}!$" - -gText_PkmnPreventsUsage:: @ 85CAFD2 - .string "{STRING 16}’s {STRING 25}\nprevents {STRING 15}\lfrom using {STRING 20}!$" - -gText_PkmnRestoredHPUsing:: @ 85CAFF5 - .string "{STRING 16} restored HP\nusing its {STRING 25}!$" - -gText_PkmnsXMadeYUseless:: @ 85CB012 - .string "{STRING 16}’s {STRING 25}\nmade {STRING 20} useless!$" - -gText_PkmnChangedTypeWith:: @ 85CB02B - .string "{STRING 16}’s {STRING 25}\nmade it the {STRING 0} type!$" - -gText_PkmnPreventsParalysisWith:: @ 85CB048 - .string "{STRING 17}’s {STRING 25}\nprevents paralysis!$" - -gText_PkmnPreventsRomanceWith:: @ 85CB064 - .string "{STRING 16}’s {STRING 25}\nprevents romance!$" - -gText_PkmnPreventsPoisoningWith:: @ 85CB07E - .string "{STRING 17}’s {STRING 25}\nprevents poisoning!$" - -gText_PkmnPreventsConfusionWith:: @ 85CB09A - .string "{STRING 16}’s {STRING 25}\nprevents confusion!$" - -gText_PkmnRaisedFirePowerWith:: @ 85CB0B6 - .string "{STRING 16}’s {STRING 25}\nraised its FIRE power!$" - -gText_PkmnAnchorsItselfWith:: @ 85CB0D5 - .string "{STRING 16} anchors\nitself with {STRING 25}!$" - -gText_PkmnCutsAttackWith:: @ 85CB0F0 - .string "{STRING 19}’s {STRING 26}\ncuts {STRING 16}’s ATTACK!$" - -gText_PkmnPreventsStatLossWith:: @ 85CB10A - .string "{STRING 19}’s {STRING 26}\nprevents stat loss!$" - -gText_PkmnHurtsWith:: @ 85CB126 - .string "{STRING 16}’s {STRING 25}\nhurt {STRING 15}!$" - -gText_PkmnTraced:: @ 85CB137 - .string "{STRING 19} TRACED\n{STRING 0}’s {PLAYER}!$" - -gText_PkmnsXPreventsBurns:: @ 85CB14A - .string "{STRING 17}’s {STRING 27}\nprevents burns!$" - -gText_PkmnsXBlocksY:: @ 85CB162 - .string "{STRING 16}’s {STRING 25}\nblocks {STRING 20}!$" - -gText_PkmnsXBlocksY2:: @ 85CB175 - .string "{STRING 19}’s {STRING 26}\nblocks {STRING 20}!$" - -gText_PkmnsXRestoredHPALittle2:: @ 85CB188 - .string "{STRING 15}’s {STRING 24}\nrestored its HP a little!$" - -gText_PkmnsXWhippedUpSandstorm:: @ 85CB1AA - .string "{STRING 19}’s {STRING 26}\nwhipped up a sandstorm!$" - -gText_PkmnsXIntensifiedSun:: @ 85CB1CA - .string "{STRING 19}’s {STRING 26}\nintensified the sun’s rays!$" - -gText_PkmnsXPreventsYLoss:: @ 85CB1EE - .string "{STRING 19}’s {STRING 26}\nprevents {STRING 0} loss!$" - -gText_PkmnsXInfatuatedY:: @ 85CB208 - .string "{STRING 16}’s {STRING 25}\ninfatuated {STRING 15}!$" - -gText_PkmnsXMadeYIneffective:: @ 85CB21F - .string "{STRING 16}’s {STRING 25}\nmade {STRING 20} ineffective!$" - -gText_PkmnsXCuredYProblem:: @ 85CB23C - .string "{STRING 19}’s {STRING 26}\ncured its {STRING 0} problem!$" - -gText_ItSuckedLiquidOoze:: @ 85CB25A - .string "It sucked up the\nLIQUID OOZE!$" - -gText_PkmnTransformed:: @ 85CB278 - .string "{STRING 19} transformed!$" - -gText_PkmnsXTookAttack:: @ 85CB288 - .string "{STRING 16}’s {STRING 25}\ntook the attack!$" - -gText_PkmnsXPreventsSwitching:: @ 85CB2A1 - .string "{STRING 0}’s {STRING 23}\nprevents switching!\p$" - -gText_PreventedFromWorking:: @ 85CB2BE - .string "{STRING 16}’s {STRING 25}\nprevented {STRING 19}’s\l{STRING 0} from working!$" - -gText_PkmnsXMadeItIneffective:: @ 85CB2E6 - .string "{STRING 19}’s {STRING 26}\nmade it ineffective!$" - -gText_PkmnsXPreventsFlinching:: @ 85CB303 - .string "{STRING 17}’s {STRING 27}\nprevents flinching!$" - -gText_PkmnsXPreventsYsZ:: @ 85CB31F - .string "{STRING 15}’s {STRING 24}\nprevents {STRING 16}’s\l{STRING 25} from working!$" - -gText_PkmnsXCuredItsYProblem:: @ 85CB346 - .string "{STRING 19}’s {STRING 26}\ncured its {STRING 0} problem!$" - -gText_PkmnsXHadNoEffectOnY:: @ 85CB364 - .string "{STRING 19}’s {STRING 26}\nhad no effect on {STRING 17}!$" - -gText_StatSharply:: @ 85CB381 - .string "sharply $" - -gText_StatRose:: @ 85CB38A - .string "rose!$" - -gText_StatHarshly:: @ 85CB390 - .string "harshly $" - -gText_StatFell:: @ 85CB399 - .string "fell!$" - -gText_PkmnsStatChanged:: @ 85CB39F - .string "{STRING 15}’s {STRING 0}\n{PLAYER}$" - -gText_PkmnsStatChanged2:: @ 85CB3AA - .string "{STRING 16}’s {STRING 0}\n{PLAYER}$" - -gText_UsingXTheYOfZN:: @ 85CB3B5 - .string "Using {STRING 22}, the {STRING 0}\nof {STRING 19} {PLAYER}$" - -gText_PkmnsStatChanged3:: @ 85CB3CF - .string "{STRING 15}’s {STRING 0}\n{PLAYER}$" - -gText_PkmnsStatChanged4:: @ 85CB3DA - .string "{STRING 16}’s {STRING 0}\n{PLAYER}$" - -gText_StatsWontIncrease2:: @ 85CB3E5 - .string "{STRING 15}’s stats won’t\ngo any higher!$" - -gText_StatsWontDecrease2:: @ 85CB405 - .string "{STRING 16}’s stats won’t\ngo any lower!$" - -gText_CriticalHit:: @ 85CB424 - .string "A critical hit!$" - -gText_OneHitKO:: @ 85CB434 - .string "It’s a one-hit KO!$" - -gText_123Poof:: @ 85CB447 - .string "{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p$" - -gText_AndEllipsis:: @ 85CB473 - .string "And…\p$" - -gText_HMMovesCantBeForgotten:: @ 85CB479 - .string "HM moves can’t be\nforgotten now.\p$" - -gText_NotVeryEffective:: @ 85CB49B - .string "It’s not very effective…$" - -gText_SuperEffective:: @ 85CB4B4 - .string "It’s super effective!$" - -gText_GotAwaySafely:: @ 85CB4CA - .string "{PLAY_SE 0x0011}Got away safely!\p$" - -gText_PkmnFledUsingIts:: @ 85CB4E0 - .string "{PLAY_SE 0x0011}{STRING 15} fled\nusing its {STRING 22}!\p$" - -gText_PkmnFledUsing:: @ 85CB4FB - .string "{PLAY_SE 0x0011}{STRING 15} fled\nusing {STRING 24}!\p$" - -gText_WildPkmnFled:: @ 85CB512 - .string "{PLAY_SE 0x0011}Wild {STRING 0} fled!$" - -gText_PlayerDefeated:: @ 85CB524 - .string "Player defeated\n{STRING 32}!$" - -gText_PlayerBeatTwo:: @ 85CB538 - .string "Player beat {STRING 32}\nand {STRING 33}!$" - -gText_PlayerLostAgainst:: @ 85CB54F - .string "Player lost against\n{STRING 32}!$" - -gText_PlayerLostToTwo:: @ 85CB567 - .string "Player lost to {STRING 32}\nand {STRING 33}!$" - -gText_PlayerBattledToDraw:: @ 85CB581 - .string "Player battled to a draw against\n{STRING 32}!$" - -gText_PlayerBattledToDrawVsTwo:: @ 85CB5A6 - .string "Player battled to a draw against\n{STRING 32} and {STRING 33}!$" - -gText_WildFled:: @ 85CB5D2 - .string "{PLAY_SE 0x0011}{STRING 32} fled!$" - -gText_TwoWildFled:: @ 85CB5DF - .string "{PLAY_SE 0x0011}{STRING 32} and\n{STRING 33} fled!$" - -gText_NoRunningFromTrainers:: @ 85CB5F3 - .string "No! There’s no running\nfrom a TRAINER battle!\p$" - -gText_CantEscape:: @ 85CB622 - .string "Can’t escape!\p$" - -gText_DontLeaveBirch:: @ 85CB631 - .string "PROF. BIRCH: Don’t leave me like this!\p$" - -gText_ButNothingHappened:: @ 85CB659 - .string "But nothing happened!$" - -gText_ButItFailed:: @ 85CB66F - .string "But it failed!$" - -gText_ItHurtConfusion:: @ 85CB67E - .string "It hurt itself in its\nconfusion!$" - -gText_MirrorMoveFailed:: @ 85CB69F - .string "The MIRROR MOVE failed!$" - -gText_StartedToRain:: @ 85CB6B7 - .string "It started to rain!$" - -gText_DownpourStarted:: @ 85CB6CB - .string "A downpour started!$" - -gText_RainContinues:: @ 85CB6DF - .string "Rain continues to fall.$" - -gText_DownpourContinues:: @ 85CB6F7 - .string "The downpour continues.$" - -gText_RainStopped:: @ 85CB70F - .string "The rain stopped.$" - -gText_SandstormBrewed:: @ 85CB721 - .string "A sandstorm brewed!$" - -gText_SandstormRages:: @ 85CB735 - .string "The sandstorm rages.$" - -gText_SandstormSubsided:: @ 85CB74A - .string "The sandstorm subsided.$" - -gText_SunlightGotBright:: @ 85CB762 - .string "The sunlight got bright!$" - -gText_SunlightStrong:: @ 85CB77B - .string "The sunlight is strong.$" - -gText_SunlightFaded:: @ 85CB793 - .string "The sunlight faded.$" - -gText_StartedHail:: @ 85CB7A7 - .string "It started to hail!$" - -gText_HailContinues:: @ 85CB7BB - .string "Hail continues to fall.$" - -gText_HailStopped:: @ 85CB7D3 - .string "The hail stopped.$" - -gText_FailedToSpitUp:: @ 85CB7E5 - .string "But it failed to SPIT UP\na thing!$" - -gText_FailedToSwallow:: @ 85CB807 - .string "But it failed to SWALLOW\na thing!$" - -gText_WindBecameHeatWave:: @ 85CB829 - .string "The wind turned into a\nHEAT WAVE!$" - -gText_StatChangesGone:: @ 85CB84B - .string "All stat changes were\neliminated!$" - -gText_CoinsScattered:: @ 85CB86D - .string "Coins scattered everywhere!$" - -gText_TooWeakForSubstitute:: @ 85CB889 - .string "It was too weak to make\na SUBSTITUTE!$" - -gText_SharedPain:: @ 85CB8AF - .string "The battlers shared\ntheir pain!$" - -gText_BellChimed:: @ 85CB8CF - .string "A bell chimed!$" - -gText_FaintInThree:: @ 85CB8DE - .string "All affected POKéMON will\nfaint in three turns!$" - -gText_NoPPLeft:: @ 85CB90E - .string "There’s no PP left for\nthis move!\p$" - -gText_ButNoPPLeft:: @ 85CB931 - .string "But there was no PP left\nfor the move!$" - -gText_PkmnIgnoresAsleep:: @ 85CB958 - .string "{STRING 15} ignored\norders while asleep!$" - -gText_PkmnIgnoredOrders:: @ 85CB978 - .string "{STRING 15} ignored\norders!$" - -gText_PkmnBeganToNap:: @ 85CB98B - .string "{STRING 15} began to nap!$" - -gText_PkmnLoafing:: @ 85CB99C - .string "{STRING 15} is\nloafing around!$" - -gText_PkmnWontObey:: @ 85CB9B2 - .string "{STRING 15} won’t\nobey!$" - -gText_PkmnTurnedAway:: @ 85CB9C1 - .string "{STRING 15} turned away!$" - -gText_PkmnPretendNotNotice:: @ 85CB9D1 - .string "{STRING 15} pretended\nnot to notice!$" - -gText_EnemyAboutToSwitchPkmn:: @ 85CB9ED - .string "{STRING 28} {STRING 29} is\nabout to use {PLAYER}.\pWill {STRING 35} change\nPOKéMON?$" - -gText_PkmnLearnedMove2:: @ 85CBA1F - .string "{STRING 15} learned\n{STRING 0}!$" - -gText_PlayerDefeatedXY:: @ 85CBA2E - .string "Player defeated\n{STRING 28} {STRING 29}!\p$" - -gText_CreptCloser:: @ 85CBA46 - .string "{STRING 35} crept closer to\n{RIVAL}!$" - -gText_CantGetCloser:: @ 85CBA5D - .string "{STRING 35} can’t get any closer!$" - -gText_PkmnWatchingCarefully:: @ 85CBA76 - .string "{RIVAL} is watching\ncarefully!$" - -gText_PkmnCuriousAboutX:: @ 85CBA90 - .string "{RIVAL} is curious about\nthe {STRING 0}!$" - -gText_PkmnEnthralledByX:: @ 85CBAAC - .string "{RIVAL} is enthralled by\nthe {STRING 0}!$" - -gText_PkmnIgnoredX:: @ 85CBAC8 - .string "{RIVAL} completely ignored\nthe {STRING 0}!$" - -gText_ThrewPokeblockAtPkmn:: @ 85CBAE6 - .string "{STRING 35} threw a {POKEBLOCK}\nat the {RIVAL}!$" - -gText_OutOfSafariBalls:: @ 85CBB02 - .string "{PLAY_SE 0x0049}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p$" - - .string "{RIVAL} appeared!\p$" - -gText_WildPkmnAppeared:: @ 85CBB47 - .string "Wild {RIVAL} appeared!\p$" - -gText_WildPkmnAppeared2:: @ 85CBB5A - .string "Wild {RIVAL} appeared!\p$" - -gText_WildPkmnAppearedPause:: @ 85CBB6D - .string "Wild {RIVAL} appeared!{PAUSE 127}$" - -gText_TwoWildPkmnAppeared:: @ 85CBB82 - .string "Wild {RIVAL} and\n{AQUA} appeared!\p$" - -gText_TrainerXYWantsToBattle:: @ 85CBB9C - .string "{STRING 28} {STRING 29}\nwould like to battle!\p$" - -gText_TrainerXWantsToBattle:: @ 85CBBB9 - .string "{STRING 32}\nwants to battle!$" - -gText_TwoTrainersWantToBattle:: @ 85CBBCD - .string "{STRING 32} and {STRING 33}\nwant to battle!$" - -gText_TrainerXYSentOutPkmn:: @ 85CBBE7 - .string "{STRING 28} {STRING 29} sent\nout {RIVAL}!$" - -gText_TrainerXYSentOutTwoPkmn:: @ 85CBBFA - .string "{STRING 28} {STRING 29} sent\nout {RIVAL} and {AQUA}!$" - -gText_TrainerXYSentOutPkmn2:: @ 85CBC14 - .string "{STRING 28} {STRING 29} sent\nout {STRING 0}!$" - -gText_TrainerXSentOutPkmn:: @ 85CBC27 - .string "{STRING 32} sent out\n{RIVAL}!$" - -gText_TrainerXSentOutTwoPkmn:: @ 85CBC37 - .string "{STRING 32} sent out\n{RIVAL} and {AQUA}!$" - -gText_TwoTrainersSentOutPkmn:: @ 85CBC4E - .string "{STRING 32} sent out {STRING 10}!\n{STRING 33} sent out {STRING 12}!$" - -gText_TrainerXSentOutPkmn2:: @ 85CBC6E - .string "{STRING 32} sent out\n{STRING 0}!$" - -gText_TrainerXSentOutPkmn3:: @ 85CBC7E - .string "{STRING 34} sent out\n{STRING 0}!$" - -gText_GoPkmn:: @ 85CBC8E - .string "Go! {STRING 5}!$" - -gText_GoTwoPkmn:: @ 85CBC96 - .string "Go! {STRING 5} and\n{VERSION}!$" - -gText_GoPkmn2:: @ 85CBCA5 - .string "Go! {STRING 0}!$" - -gText_DoItPkmn:: @ 85CBCAD - .string "Do it! {STRING 0}!$" - -gText_GoForItPkmn:: @ 85CBCB8 - .string "Go for it, {STRING 0}!$" - -gText_YourFoesWeakGetEmPkmn:: @ 85CBCC7 - .string "Your foe’s weak!\nGet ’em, {STRING 0}!$" - -gText_EnemySentOutPkmnGoPkmn:: @ 85CBCE5 - .string "{STRING 31} sent out {STRING 11}!\nGo! {STRING 9}!$" - -gText_PkmnThatsEnough:: @ 85CBCFD - .string "{STRING 0}, that’s enough!\nCome back!$" - -gText_PkmnComeBack:: @ 85CBD1B - .string "{STRING 0}, come back!$" - -gText_PkmnOkComeBack:: @ 85CBD2A - .string "{STRING 0}, OK!\nCome back!$" - -gText_PkmnGoodComeBack:: @ 85CBD3D - .string "{STRING 0}, good!\nCome back!$" - -gText_TrainerXYWithdrewPkmn:: @ 85CBD52 - .string "{STRING 28} {STRING 29}\nwithdrew {STRING 0}!$" - -gText_TrainerXWithdrewPkmn:: @ 85CBD65 - .string "{STRING 32} withdrew\n{STRING 0}!$" - -gText_TrainerXWithdrewPkmn2:: @ 85CBD75 - .string "{STRING 34} withdrew\n{STRING 0}!$" - -gText_WildPkmnPrefix:: @ 85CBD85 - .string "Wild $" - -gText_FoePkmnPrefix:: @ 85CBD8B - .string "Foe $" - - .string "$" - -gText_FoePkmnPrefix2:: @ 85CBD91 - .string "Foe$" - -gText_AllyPkmnPrefix:: @ 85CBD95 - .string "Ally$" - -gText_FoePkmnPrefix3:: @ 85CBD9A - .string "Foe$" - -gText_AllyPkmnPrefix2:: @ 85CBD9E - .string "Ally$" - -gText_FoePkmnPrefix4:: @ 85CBDA3 - .string "Foe$" - -gText_AllyPkmnPrefix3:: @ 85CBDA7 - .string "Ally$" - -gText_XUsedY2:: @ 85CBDAC - .string "{STRING 15} used\n{PLAYER}$" - -gText_ExclamationMark:: @ 85CBDB7 - .string "!$" - -gText_ExclamationMark2:: @ 85CBDB9 - .string "!$" - -gText_ExclamationMark3:: @ 85CBDBB - .string "!$" - -gText_ExclamationMark4:: @ 85CBDBD - .string "!$" - -gText_ExclamationMark5:: @ 85CBDBF - .string "!$" - -gText_HP2:: @ 85CBDC1 - .string "HP$" - -gText_Attack2:: @ 85CBDC4 - .string "ATTACK$" - -gText_Defense2:: @ 85CBDCB - .string "DEFENSE$" - -gText_Speed:: @ 85CBDD3 - .string "SPEED$" - -gText_SpAtk2:: @ 85CBDD9 - .string "SP. ATK$" - -gText_SpDef2:: @ 85CBDE1 - .string "SP. DEF$" - -gText_Accuracy:: @ 85CBDE9 - .string "accuracy$" - -gText_Evasiveness:: @ 85CBDF2 - .string "evasiveness$" - - .align 2 -gStatNamesTable:: @ 85CBE00 - .4byte gText_HP2 - .4byte gText_Attack2 - .4byte gText_Defense2 - .4byte gText_Speed - .4byte gText_SpAtk2 - .4byte gText_SpDef2 - .4byte gText_Accuracy - .4byte gText_Evasiveness - -gText_PokeblockWasTooSpicy:: @ 85CBE20 - .string "was too spicy!$" - -gText_PokeblockWasTooDry:: @ 85CBE2F - .string "was too dry!$" - -gText_PokeblockWasTooSweet:: @ 85CBE3C - .string "was too sweet!$" - -gText_PokeblockWasTooBitter:: @ 85CBE4B - .string "was too bitter!$" - -gText_PokeblockWasTooSour:: @ 85CBE5B - .string "was too sour!$" - - .align 2 -gPokeblockWasTooXStringTable:: @ 85CBE6C - .4byte gText_PokeblockWasTooSpicy - .4byte gText_PokeblockWasTooDry - .4byte gText_PokeblockWasTooSweet - .4byte gText_PokeblockWasTooBitter - .4byte gText_PokeblockWasTooSour - -gText_XUsedY:: @ 85CBE80 - .string "{STRING 35} used\n{STRING 22}!$" - -gText_WallyUsedY:: @ 85CBE8C - .string "WALLY used\n{STRING 22}!$" - -gText_XYUsedZ:: @ 85CBE9B - .string "{STRING 28} {STRING 29}\nused {STRING 22}!$" - -gText_TrainerBlockedBall:: @ 85CBEAA - .string "The TRAINER blocked the BALL!$" - -gText_DontBeAThief:: @ 85CBEC8 - .string "Don’t be a thief!$" - -gText_ItDodgedBall:: @ 85CBEDA - .string "It dodged the thrown BALL!\nThis POKéMON can’t be caught!$" - -gText_YouMissedPkmn:: @ 85CBF13 - .string "You missed the POKéMON!$" - -gText_PkmnBrokeFree:: @ 85CBF2B - .string "Oh, no!\nThe POKéMON broke free!$" - -gText_ItAppearedCaught:: @ 85CBF4B - .string "Aww!\nIt appeared to be caught!$" - -gText_AarghAlmostHadIt:: @ 85CBF6A - .string "Aargh!\nAlmost had it!$" - -gText_ShootSoClose:: @ 85CBF80 - .string "Shoot!\nIt was so close, too!$" - -gText_GotchaPkmnCaught:: @ 85CBF9D - .string "Gotcha!\n{RIVAL} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p$" - -gText_GotchaPkmnCaught2:: @ 85CBFBB - .string "Gotcha!\n{RIVAL} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}$" - -gText_GiveNicknameCaptured:: @ 85CBFDB - .string "Give a nickname to the\ncaptured {RIVAL}?$" - -gText_PkmnSentToPC:: @ 85CBFFF - .string "{RIVAL} was sent to\n{STRING 39} PC.$" - -gText_Someones:: @ 85CC015 - .string "someone’s$" - -gText_Lanettes:: @ 85CC01F - .string "LANETTE’s$" - -gText_PkmnDataAddedToDex:: @ 85CC029 - .string "{RIVAL}’s data was\nadded to the POKéDEX.\p$" - -gText_ItIsRaining:: @ 85CC04E - .string "It is raining.$" - -gText_SandstormIsRaging:: @ 85CC05D - .string "A sandstorm is raging.$" - -gText_BoxIsFull:: @ 85CC074 - .string "The BOX is full!\nYou can’t catch any more!\p$" - -gText_EnigmaBerry:: @ 85CC0A0 - .string "ENIGMA BERRY$" - -gText_BerrySuffix:: @ 85CC0AD - .string " BERRY$" - -gText_PkmnsXCuredParalysis:: @ 85CC0B4 - .string "{STRING 19}’s {STRING 22}\ncured paralysis!$" - -gText_PkmnsXCuredPoison:: @ 85CC0CD - .string "{STRING 19}’s {STRING 22}\ncured poison!$" - -gText_PkmnsXHealedBurn:: @ 85CC0E3 - .string "{STRING 19}’s {STRING 22}\nhealed its burn!$" - -gText_PkmnsXDefrostedIt:: @ 85CC0FC - .string "{STRING 19}’s {STRING 22}\ndefrosted it!$" - -gText_PkmnsXWokeIt:: @ 85CC112 - .string "{STRING 19}’s {STRING 22}\nwoke it from its sleep!$" - -gText_PkmnsXSnappedOut:: @ 85CC132 - .string "{STRING 19}’s {STRING 22}\nsnapped it out of confusion!$" - -gText_PkmnsXCuredProblem:: @ 85CC157 - .string "{STRING 19}’s {STRING 22}\ncured its {STRING 0} problem!$" - -gText_PkmnsXNormalizedStatus:: @ 85CC175 - .string "{STRING 19}’s {STRING 22}\nnormalized its status!$" - -gText_PkmnsXRestoredHealth:: @ 85CC194 - .string "{STRING 19}’s {STRING 22}\nrestored health!$" - -gText_PkmnsXRestoredPP:: @ 85CC1AD - .string "{STRING 19}’s {STRING 22}\nrestored {STRING 0}’s PP!$" - -gText_PkmnsXRestoredStatus:: @ 85CC1C7 - .string "{STRING 19}’s {STRING 22}\nrestored its status!$" - -gText_PkmnsXRestoredHPALittle:: @ 85CC1E4 - .string "{STRING 19}’s {STRING 22}\nrestored its HP a little!$" - -gText_XAllowsOnlyY:: @ 85CC206 - .string "{STRING 22} allows the\nuse of only {STRING 20}!\p$" - -gText_PkmnHungOnWithX:: @ 85CC225 - .string "{STRING 16} hung on\nusing its {STRING 22}!$" - -gText_EmptyString3:: @ 85CC23E - .string "$" - -gText_YouThrowABallNowRight:: @ 85CC23F - .string "You throw a BALL now, right?\nI… I’ll do my best!$" - - .align 2 -gBattleStringsTable:: @ 85CC270 - .4byte gText_Buffer36 - .4byte gText_PkmnGainedEXP - .4byte gText_PkmnGrewToLv - .4byte gText_PkmnLearnedMove - .4byte gText_TryToLearnMove1 - .4byte gText_TryToLearnMove2 - .4byte gText_TryToLearnMove3 - .4byte gText_PkmnForgotMove - .4byte gText_StopLearningMove - .4byte gText_DidNotLearnMove - .4byte gText_PkmnLearnedMove2 - .4byte gText_AttackMissed - .4byte gText_PkmnProtectedItself - .4byte gText_StatsWontIncrease2 - .4byte gText_AvoidedDamage - .4byte gText_ItDoesntAffect - .4byte gText_PkmnFainted - .4byte gText_PkmnFainted2 - .4byte gText_PlayerGotMoney - .4byte gText_PlayerWhiteout - .4byte gText_PlayerWhiteout2 - .4byte gText_PreventsEscape - .4byte gText_HitXTimes - .4byte gText_PkmnFellAsleep - .4byte gText_PkmnMadeSleep - .4byte gText_PkmnAlreadyAsleep - .4byte gText_PkmnAlreadyAsleep2 - .4byte gText_PkmnWasntAffected - .4byte gText_PkmnWasPoisoned - .4byte gText_PkmnPoisonedBy - .4byte gText_PkmnHurtByPoison - .4byte gText_PkmnAlreadyPoisoned - .4byte gText_PkmnBadlyPoisoned - .4byte gText_PkmnEnergyDrained - .4byte gText_PkmnWasBurned - .4byte gText_PkmnBurnedBy - .4byte gText_PkmnHurtByBurn - .4byte gText_PkmnWasFrozen - .4byte gText_PkmnFrozenBy - .4byte gText_PkmnIsFrozen - .4byte gText_PkmnWasDefrosted - .4byte gText_PkmnWasDefrosted2 - .4byte gText_PkmnWasDefrostedBy - .4byte gText_PkmnWasParalyzed - .4byte gText_PkmnWasParalyzedBy - .4byte gText_PkmnIsParalyzed - .4byte gText_PkmnIsAlreadyParalyzed - .4byte gText_PkmnHealedParalysis - .4byte gText_PkmnDreamEaten - .4byte gText_StatsWontIncrease - .4byte gText_StatsWontDecrease - .4byte gText_TeamStoppedWorking - .4byte gText_FoeStoppedWorking - .4byte gText_PkmnIsConfused - .4byte gText_PkmnHealedConfusion - .4byte gText_PkmnWasConfused - .4byte gText_PkmnAlreadyConfused - .4byte gText_PkmnFellInLove - .4byte gText_PkmnInLove - .4byte gText_PkmnImmobilizedByLove - .4byte gText_PkmnBlownAway - .4byte gText_PkmnChangedType - .4byte gText_PkmnFlinched - .4byte gText_PkmnRegainedHealth - .4byte gText_PkmnHPFull - .4byte gText_PkmnRaisedSpDef - .4byte gText_PkmnRaisedDef - .4byte gText_PkmnCoveredByVeil - .4byte gText_PkmnUsedSafeguard - .4byte gText_PkmnSafeguardExpired - .4byte gText_PkmnWentToSleep - .4byte gText_PkmnSleptHealthy - .4byte gText_PkmnWhippedWhirlwind - .4byte gText_PkmnTookSunlight - .4byte gText_PkmnLoweredHead - .4byte gText_PkmnIsGlowing - .4byte gText_PkmnFlewHigh - .4byte gText_PkmnDugHole - .4byte gText_PkmnSqueezedByBind - .4byte gText_PkmnTrappedInVortex - .4byte gText_PkmnWrappedBy - .4byte gText_PkmnClamped - .4byte gText_PkmnHurtBy - .4byte gText_PkmnFreedFrom - .4byte gText_PkmnCrashed - .4byte gText_PkmnShroudedInMist - .4byte gText_PkmnProtectedByMist - .4byte gText_PkmnGettingPumped - .4byte gText_PkmnHitWithRecoil - .4byte gText_PkmnProtectedItself2 - .4byte gText_PkmnBuffetedBySandstorm - .4byte gText_PkmnPeltedByHail - .4byte gText_PkmnSeeded - .4byte gText_PkmnEvadedAttack - .4byte gText_PkmnSappedByLeechSeed - .4byte gText_PkmnFastAsleep - .4byte gText_PkmnWokeUp - .4byte gText_PkmnUproarKeptAwake - .4byte gText_PkmnWokeUpInUproar - .4byte gText_PkmnCausedUproar - .4byte gText_PkmnMakingUproar - .4byte gText_PkmnCalmedDown - .4byte gText_PkmnCantSleepInUproar - .4byte gText_PkmnStockpiled - .4byte gText_PkmnCantStockpile - .4byte gText_PkmnCantSleepInUproar2 - .4byte gText_UproarKeptPkmnAwake - .4byte gText_PkmnStayedAwakeUsing - .4byte gText_PkmnStoringEnergy - .4byte gText_PkmnUnleashedEnergy - .4byte gText_PkmnFatigueConfusion - .4byte gText_PkmnPickedUpItem - .4byte gText_PkmnUnaffected - .4byte gText_PkmnTransformedInto - .4byte gText_PkmnMadeSubstitute - .4byte gText_PkmnHasSubstitute - .4byte gText_SubstituteDamaged - .4byte gText_PkmnSubstituteFaded - .4byte gText_PkmnMustRecharge - .4byte gText_PkmnRageBuilding - .4byte gText_PkmnMoveWasDisabled - .4byte gText_PkmnMoveIsDisabled - .4byte gText_PkmnMoveDisabledNoMore - .4byte gText_PkmnGotEncore - .4byte gText_PkmnEncoreEnded - .4byte gText_PkmnTookAim - .4byte gText_PkmnSketchedMove - .4byte gText_PkmnTryingToTakeFoe - .4byte gText_PkmnTookFoe - .4byte gText_PkmnReducedPP - .4byte gText_PkmnStoleItem - .4byte gText_PkmnCantEscape - .4byte gText_PkmnFellIntoNightmare - .4byte gText_PkmnLockedInNightmare - .4byte gText_PkmnLaidCurse - .4byte gText_PkmnAfflictedByCurse - .4byte gText_SpikesScattered - .4byte gText_PkmnHurtBySpikes - .4byte gText_PkmnIdentified - .4byte gText_PkmnPerishCountFell - .4byte gText_PkmnBracedItself - .4byte gText_PkmnEnduredHit - .4byte gText_MagnitudeStrength - .4byte gText_PkmnCutHPMaxedAttack - .4byte gText_PkmnCopiedStatChanges - .4byte gText_PkmnGotFree - .4byte gText_PkmnShedLeechSeed - .4byte gText_PkmnBlewAwaySpikes - .4byte gText_PkmnFledFromBattle - .4byte gText_PkmnForesawAttack - .4byte gText_PkmnTookAttack - .4byte gText_PkmnAttack - .4byte gText_PkmnCenterAttention - .4byte gText_PkmnChargingPower - .4byte gText_NaturePowerTurnedInto - .4byte gText_PkmnStatusNormal - .4byte gText_PkmnHasNoMovesLeft - .4byte gText_PkmnSubjectedToTorment - .4byte gText_PkmnCantUseMoveTorment - .4byte gText_PkmnTighteningFocus - .4byte gText_PkmnFellForTaunt - .4byte gText_PkmnCantUseMoveTaunt - .4byte gText_PkmnReadyToHelp - .4byte gText_PkmnSwitchedItems - .4byte gText_PkmnCopiedFoe - .4byte gText_PkmnMadeWish - .4byte gText_PkmnWishCameTrue - .4byte gText_PkmnPlantedRoots - .4byte gText_PkmnAbsorbedNutrients - .4byte gText_PkmnAnchoredItself - .4byte gText_PkmnWasMadeDrowsy - .4byte gText_PkmnKnockedOff - .4byte gText_PkmnSwappedAbilities - .4byte gText_PkmnSealedOpponentMove - .4byte gText_PkmnCantUseMoveSealed - .4byte gText_PkmnWantsGrudge - .4byte gText_PkmnLostPPGrudge - .4byte gText_PkmnShroudedItself - .4byte gText_PkmnMoveBounced - .4byte gText_PkmnWaitsForTarget - .4byte gText_PkmnSnatchedMove - .4byte gText_PkmnMadeItRain - .4byte gText_PkmnRaisedSpeed - .4byte gText_PkmnProtectedBy - .4byte gText_PkmnPreventsUsage - .4byte gText_PkmnRestoredHPUsing - .4byte gText_PkmnChangedTypeWith - .4byte gText_PkmnPreventsParalysisWith - .4byte gText_PkmnPreventsRomanceWith - .4byte gText_PkmnPreventsPoisoningWith - .4byte gText_PkmnPreventsConfusionWith - .4byte gText_PkmnRaisedFirePowerWith - .4byte gText_PkmnAnchorsItselfWith - .4byte gText_PkmnCutsAttackWith - .4byte gText_PkmnPreventsStatLossWith - .4byte gText_PkmnHurtsWith - .4byte gText_PkmnTraced - .4byte gText_StatSharply - .4byte gText_StatRose - .4byte gText_StatHarshly - .4byte gText_StatFell - .4byte gText_PkmnsStatChanged - .4byte gText_PkmnsStatChanged2 - .4byte gText_PkmnsStatChanged3 - .4byte gText_PkmnsStatChanged4 - .4byte gText_CriticalHit - .4byte gText_OneHitKO - .4byte gText_123Poof - .4byte gText_AndEllipsis - .4byte gText_NotVeryEffective - .4byte gText_SuperEffective - .4byte gText_GotAwaySafely - .4byte gText_WildPkmnFled - .4byte gText_NoRunningFromTrainers - .4byte gText_CantEscape - .4byte gText_DontLeaveBirch - .4byte gText_ButNothingHappened - .4byte gText_ButItFailed - .4byte gText_ItHurtConfusion - .4byte gText_MirrorMoveFailed - .4byte gText_StartedToRain - .4byte gText_DownpourStarted - .4byte gText_RainContinues - .4byte gText_DownpourContinues - .4byte gText_RainStopped - .4byte gText_SandstormBrewed - .4byte gText_SandstormRages - .4byte gText_SandstormSubsided - .4byte gText_SunlightGotBright - .4byte gText_SunlightStrong - .4byte gText_SunlightFaded - .4byte gText_StartedHail - .4byte gText_HailContinues - .4byte gText_HailStopped - .4byte gText_FailedToSpitUp - .4byte gText_FailedToSwallow - .4byte gText_WindBecameHeatWave - .4byte gText_StatChangesGone - .4byte gText_CoinsScattered - .4byte gText_TooWeakForSubstitute - .4byte gText_SharedPain - .4byte gText_BellChimed - .4byte gText_FaintInThree - .4byte gText_NoPPLeft - .4byte gText_ButNoPPLeft - .4byte gText_XUsedY - .4byte gText_WallyUsedY - .4byte gText_TrainerBlockedBall - .4byte gText_DontBeAThief - .4byte gText_ItDodgedBall - .4byte gText_YouMissedPkmn - .4byte gText_PkmnBrokeFree - .4byte gText_ItAppearedCaught - .4byte gText_AarghAlmostHadIt - .4byte gText_ShootSoClose - .4byte gText_GotchaPkmnCaught - .4byte gText_GotchaPkmnCaught2 - .4byte gText_GiveNicknameCaptured - .4byte gText_PkmnSentToPC - .4byte gText_PkmnDataAddedToDex - .4byte gText_ItIsRaining - .4byte gText_SandstormIsRaging - .4byte gText_CantEscape2 - .4byte gText_PkmnIgnoresAsleep - .4byte gText_PkmnIgnoredOrders - .4byte gText_PkmnBeganToNap - .4byte gText_PkmnLoafing - .4byte gText_PkmnWontObey - .4byte gText_PkmnTurnedAway - .4byte gText_PkmnPretendNotNotice - .4byte gText_EnemyAboutToSwitchPkmn - .4byte gText_CreptCloser - .4byte gText_CantGetCloser - .4byte gText_PkmnWatchingCarefully - .4byte gText_PkmnCuriousAboutX - .4byte gText_PkmnEnthralledByX - .4byte gText_PkmnIgnoredX - .4byte gText_ThrewPokeblockAtPkmn - .4byte gText_OutOfSafariBalls - .4byte gText_PkmnsXCuredParalysis - .4byte gText_PkmnsXCuredPoison - .4byte gText_PkmnsXHealedBurn - .4byte gText_PkmnsXDefrostedIt - .4byte gText_PkmnsXWokeIt - .4byte gText_PkmnsXSnappedOut - .4byte gText_PkmnsXCuredProblem - .4byte gText_PkmnsXRestoredHealth - .4byte gText_PkmnsXRestoredPP - .4byte gText_PkmnsXRestoredStatus - .4byte gText_PkmnsXRestoredHPALittle - .4byte gText_XAllowsOnlyY - .4byte gText_PkmnHungOnWithX - .4byte gText_EmptyString3 - .4byte gText_PkmnsXPreventsBurns - .4byte gText_PkmnsXBlocksY - .4byte gText_PkmnsXRestoredHPALittle2 - .4byte gText_PkmnsXWhippedUpSandstorm - .4byte gText_PkmnsXPreventsYLoss - .4byte gText_PkmnsXInfatuatedY - .4byte gText_PkmnsXMadeYIneffective - .4byte gText_PkmnsXCuredYProblem - .4byte gText_ItSuckedLiquidOoze - .4byte gText_PkmnTransformed - .4byte gText_ElectricityWeakened - .4byte gText_FireWeakened - .4byte gText_PkmnHidUnderwater - .4byte gText_PkmnSprangUp - .4byte gText_HMMovesCantBeForgotten - .4byte gText_XFoundOneY - .4byte gText_PlayerDefeatedXY - .4byte gText_SoothingAroma - .4byte gText_ItemsCantBeUsedNow - .4byte gText_ForXCommaYZ - .4byte gText_UsingXTheYOfZN - .4byte gText_PkmnUsedXToGetPumped - .4byte gText_PkmnsXMadeYUseless - .4byte gText_PkmnTrappedBySandTomb - .4byte gText_EmptyString4 - .4byte gText_ABoosted - .4byte gText_PkmnsXIntensifiedSun - .4byte gText_PkmnMakesGroundMiss - .4byte gText_YouThrowABallNowRight - .4byte gText_PkmnsXTookAttack - .4byte gText_PkmnChoseXAsDestiny - .4byte gText_PkmnLostFocus - .4byte gText_UseNextPkmn - .4byte gText_PkmnFledUsingIts - .4byte gText_PkmnFledUsing - .4byte gText_PkmnWasDraggedOut - .4byte gText_PreventedFromWorking - .4byte gText_PkmnsXNormalizedStatus - .4byte gText_XYUsedZ - .4byte gText_BoxIsFull - .4byte gText_PkmnAvoidedAttack - .4byte gText_PkmnsXMadeItIneffective - .4byte gText_PkmnsXPreventsFlinching - .4byte gText_PkmnAlreadyHasBurn - .4byte gText_StatsWontDecrease2 - .4byte gText_PkmnsXBlocksY2 - .4byte gText_PkmnsXWoreOff - .4byte gText_PkmnRaisedDefALittle - .4byte gText_PkmnRaisedSpDefALittle - .4byte gText_TheWallShattered - .4byte gText_PkmnsXPreventsYsZ - .4byte gText_PkmnsXCuredItsYProblem - .4byte gText_PkmnCantEscape2 - .4byte gText_PkmnObtainedX - .4byte gText_PkmnObtainedX2 - .4byte gText_PkmnObtainedXYObtainedZ - .4byte gText_ButNoEffect - .4byte gText_PkmnsXHadNoEffectOnY - .4byte gText_TwoEnemiesDefeated - .4byte gText_String48 - .4byte gText_PkmnIncapableOfPower - .4byte gText_GlintAppearsInEye - .4byte gText_PkmnGettingIntoPosition - .4byte gText_PkmnBeganGrowlingDeeply - .4byte gText_PkmnEagerForMore - .4byte gText_DefeatedOpponentByReferee - .4byte gText_LostToOpponentByReferee - .4byte gText_TiedOpponentByReferee - .4byte gText_QuestionForfeitMatch - .4byte gText_ForfeitedMatch - .4byte gText_PkmnTransferredSomeonesPC - .4byte gText_PkmnTransferredLanettesPC - .4byte gText_PkmnBoxSomeonesPCFull - .4byte gText_PkmnBoxLanettesPCFull - .4byte gText_String37 - .4byte gText_String49 - - .align 2 -gMissStringIds:: @ 85CC834 - .2byte 0x0017, 0x0018, 0x0159, 0x001a, 0x014c - -gUnknown_085CC83E:: @ 85CC83E - .2byte 0x00e2, 0x00e3, 0x0021 - .2byte 0x0112, 0x0165, 0x00e8, 0x00e9, 0x00e5, 0x00ed, 0x00f0, 0x00f3 - .2byte 0x00ee, 0x00f4, 0x0066, 0x0067, 0x00ef, 0x00f5, 0x00ea, 0x00eb - .2byte 0x00ec, 0x0065, 0x0098, 0x00e5, 0x00e5, 0x004e, 0x0160, 0x004d - .2byte 0x0161, 0x004f, 0x0068, 0x0069, 0x001b, 0x006a, 0x0139, 0x0052 - .2byte 0x0053, 0x0070, 0x0071, 0x0073, 0x0074, 0x006c, 0x006e, 0x00f7 - .2byte 0x004c, 0x0075, 0x0076, 0x0077, 0x00d5, 0x00d6, 0x003d, 0x0130 - .2byte 0x0145, 0x0146, 0x00d7, 0x00d8, 0x003e, 0x0130, 0x0054, 0x0055 - .2byte 0x0056, 0x0057, 0x0058, 0x0059, 0x013d, 0x013e, 0x005a, 0x005c - .2byte 0x005b, 0x005d, 0x005b, 0x0148, 0x0061, 0x00e5, 0x0063, 0x00e5 - .2byte 0x007d, 0x00e5, 0x007e, 0x00fb, 0x0028, 0x0029, 0x0037, 0x0038 - .2byte 0x0023, 0x0024, 0x002e, 0x002f, 0x0031, 0x0032, 0x0035, 0x0036 - .2byte 0x0017, 0x007c, 0x0045, 0x0136, 0x002d, 0x0139, 0x013b, 0x013c - .2byte 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0142, 0x00a1, 0x014f, 0x0107 - .2byte 0x0108, 0x0109, 0x010a, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110 - .2byte 0x0110, 0x0110, 0x0110, 0x0111, 0x0110, 0x0110, 0x0110, 0x00f1 - .2byte 0x0110, 0x0110, 0x0110, 0x0116, 0x0117, 0x0118, 0x0119, 0x016d - .2byte 0x011b, 0x011c, 0x011e, 0x011f, 0x0120, 0x0128, 0x0123, 0x0126 - .2byte 0x0125, 0x0124, 0x0127, 0x0129, 0x0156, 0x0131, 0x0163, 0x016a - .2byte 0x00c7, 0x0163, 0x016a, 0x00c9, 0x0163, 0x016a, 0x0166, 0x0167 - .2byte 0x0168, 0x00cb, 0x0137, 0x0177, 0x0178, 0x0179, 0x017a - -gTrappingMoves:: @ 85CC982 - .2byte MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xffff - -gText_PkmnIsEvolving:: @ 85CC990 - .string "What?\n{STR_VAR_1} is evolving!$" - -gText_CongratsPkmnEvolved:: @ 85CC9A6 - .string "Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p$" - -gText_PkmnStoppedEvolving:: @ 85CC9D3 - .string "Huh? {STR_VAR_1}\nstopped evolving!\p$" - -gText_EllipsisQuestionMark:: @ 85CC9EE - .string "……?\p$" - -gText_WhatWillPkmnDo:: @ 85CC9F3 - .string "What will\n{STRING 18} do?$" - -gText_WhatWillPkmnDo2:: @ 85CCA04 - .string "What will\n{STRING 35} do?$" - -gText_WhatWillWallyDo:: @ 85CCA15 - .string "What will\nWALLY do?$" - -gText_LinkStandby:: @ 85CCA29 - .string "{PAUSE 16}Link standby…$" - -gText_BattleMenu:: @ 85CCA3A - .string "FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN$" - -gText_SafariZoneMenu:: @ 85CCA54 - .string "BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN$" - -gText_MoveInterfacePP:: @ 85CCA6F - .string "PP $" - -gText_MoveInterfaceType:: @ 85CCA73 - .string "TYPE/$" - - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/$" - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}$" - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?$" - -gText_BattleYesNoChoice:: @ 85CCABB - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo$" - -gText_BattleSwitchWhich:: @ 85CCACA - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?$" - - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}$" - .string "{UP_ARROW}$" - .string "{ESCAPE 4}$" - .string "-$" - -gText_HP:: @ 85CCAF1 - .string "HP$" - -gText_Attack:: @ 85CCAF4 - .string "ATTACK$" - -gText_Defense:: @ 85CCAFB - .string "DEFENSE$" - -gText_SpAtk:: @ 85CCB03 - .string "SP. ATK$" - -gText_SpDef:: @ 85CCB0B - .string "SP. DEF$" - - .align 2 - .4byte gText_HP - .4byte gText_SpAtk - .4byte gText_Attack - .4byte gText_SpDef - .4byte gText_Defense - .4byte gText_Speed - -gText_SafariBalls:: @ 85CCB2C - .string "{HIGHLIGHT DARK_GREY}SAFARI BALLS$" - -gText_SafariBallLeft:: @ 85CCB3C - .string "{HIGHLIGHT DARK_GREY}Left: $" - .string "{HIGHLIGHT DARK_GREY}$" -gText_Sleep:: - .string "sleep$" -gText_Poison:: - .string "poison$" -gText_Burn:: - .string "burn$" -gText_Paralysis:: - .string "paralysis$" -gText_Ice:: - .string "ice$" -gText_Confusion:: - .string "confusion$" -gText_Love:: - .string "love$" - -gText_SpaceAndSpace:: @ 85CCB79 - .string " and $" - -gText_CommaSpace:: @ 85CCB7F - .string ", $" - -gText_Space2:: @ 85CCB82 - .string " $" - -gText_ScrollTextUp:: @ 85CCB84 - .string "\l$" - -gText_NewLine:: @ 85CCB86 - .string "\n$" - -gText_Are:: @ 85CCB88 - .string "are$" - -gText_Are2:: @ 85CCB8C - .string "are$" - -gText_BadEgg:: @ 85CCB90 - .string "Bad EGG$" - -gText_BattleWallyName:: @ 85CCB98 - .string "WALLY$" - -gText_Win:: @ 85CCB9E - .string "{HIGHLIGHT TRANSPARENT}Win$" - -gText_Loss:: @ 85CCBA5 - .string "{HIGHLIGHT TRANSPARENT}Loss$" - -gText_Draw:: @ 85CCBAD - .string "{HIGHLIGHT TRANSPARENT}Draw$" - -gText_SpaceIs:: @ 85CCBB5 - .string " is$" - -gText_ApostropheS:: @ 85CCBB9 - .string "’s$" - -gText_UnknownMoveTypes:: @ 85CCBBC - .string "a NORMAL move$ " - .string "a FIGHTING move$ " - .string "a FLYING move$ " - .string "a POISON move$ " - .string "a GROUND move$ " - .string "a ROCK move$ " - .string "a BUG move$ " - .string "a GHOST move$ " - .string "a STEEL move$ " - .string "a ??? move$ " - .string "a FIRE move$ " - .string "a WATER move$ " - .string "a GRASS move$ " - .string "an ELECTRIC move$" - .string "a PSYCHIC move$ " - .string "an ICE move$ " - .string "a DRAGON move$ " - .string "a DARK move$ " - -gText_BattleTourney:: @ 85CCCEE - .string "BATTLE TOURNEY$" - -gText_Round1:: @ 85CCCFD - .string "Round 1$" - -gText_Round2:: @ 85CCD05 - .string "Round 2$" - -gText_Semifinal:: @ 85CCC0D - .string "Semifinal$" - -gText_Final:: @ 85CCD17 - .string "Final$" - - .align 2 -gRoundsStringTable:: @ 85CCD20 - .4byte gText_Round1 - .4byte gText_Round2 - .4byte gText_Semifinal - .4byte gText_Final - - .string "The great new hope!\p$" - .string "Will the championship dream come true?!\p$" - .string "A former CHAMPION!\p$" - .string "The previous CHAMPION!\p$" - .string "The unbeaten CHAMPION!\p$" - -gText_JapaneseHonorific:: @ 85CCDB2 - .string "{KUN}$" - -gText_Vs:: @ 85CCDB5 - .string "VS$" - -gText_RivalBuffer:: @ 85CCDB8 - .string "{RIVAL}$" - -gText_Mind:: @ 85CCDBB - .string "Mind$" - -gText_Skill:: @ 85CCDC0 - .string "Skill$" - -gText_Body:: @ 85CCDC6 - .string "Body$" - -gText_Judgement:: @ 85CCDCB - .string "{STRING 0}{CLEAR 13}Judgment{CLEAR 13}{PLAYER}$" - -gText_TwoTrainersSentPkmn:: @ 85CCDDE - .string "{STRING 28} {STRING 29} sent\nout {RIVAL}!\p{STRING 46} {STRING 47} sent\nout {AQUA}!$" - -gText_TrainerXYSentOutPkmn3:: @ 85CCE04 - .string "{STRING 46} {STRING 47} sent\nout {STRING 0}!$" - -gText_TwoTrainersWantToBattle2:: @ 85CCE17 - .string "{STRING 28} {STRING 29} and\n{STRING 46} {STRING 47}\lwant to battle!\p$" - -gText_TrainerXYSentOutZGoN:: @ 85CCE38 - .string "{STRING 50} {STRING 51} sent\nout {VERSION}!\lGo, {STRING 5}!$" - -gText_TwoEnemiesDefeated:: @ 85CCE53 - .string "{STRING 28} {STRING 29} and\n{STRING 46} {STRING 47}\lwere defeated!\p$" - -gText_String48:: @ 85CCE73 - .string "{STRING 48}$" - -gText_PkmnIncapableOfPower:: @ 85CCE76 - .string "{STRING 15} appears incapable\nof using its power!$" - -gText_GlintAppearsInEye:: @ 85CCE9F - .string "A glint appears in\n{STRING 19}’s eyes!$" - -gText_PkmnGettingIntoPosition:: @ 85CCEBD - .string "{STRING 19} is getting into\nposition!$" - -gText_PkmnBeganGrowlingDeeply:: @ 85CCEDA - .string "{STRING 19} began growling deeply!$" - -gText_PkmnEagerForMore:: @ 85CCEF4 - .string "{STRING 19} is eager for more!$" - -gUnknown_085CCF0A:: @ 85CCF0A - .2byte 0x016E, 0x016F, 0x0170, 0x0171 - -gText_RefIfNothingIsDecided:: @ 85CCF12 - .string "REFEREE: If nothing is decided in\n3 turns, we will go to judging!$" - -gText_RefThatsIt:: @ 85CCF54 - .string "REFEREE: That’s it! We will now go to\njudging to determine the winner!$" - -gText_RefJudgeMind:: @ 85CCF9B - .string "REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p$" - -gText_RefJudgeSkill:: @ 85CCFE2 - .string "REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p$" - -gText_RefJudgeBody:: @ 85CD029 - .string "REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p$" - -gText_RefJudgement1:: @ 85CD071 - .string "REFEREE: Judgment: {STRING 0} to {PLAYER}!\nThe winner is {STRING 35}’s {STRING 5}!\p$" - -gText_RefJudgement2:: @ 85CD0A6 - .string "REFEREE: Judgment: {STRING 0} to {PLAYER}!\nThe winner is {STRING 29}’s {RIVAL}!\p$" - -gText_RefJudgement3:: @ 85CD0DB - .string "REFEREE: Judgment: 3 to 3!\nWe have a draw!\p$" - -gText_DefeatedOpponentByReferee:: @ 85CD107 - .string "{STRING 5} defeated the opponent\n{RIVAL} in a REFEREE’s decision!$" - -gText_LostToOpponentByReferee:: @ 85CD13C - .string "{STRING 5} lost to the opponent\n{RIVAL} in a REFEREE’s decision!$" - -gText_TiedOpponentByReferee:: @ 85CD170 - .string "{STRING 5} tied the opponent\n{RIVAL} in a REFEREE’s decision!$" - -gText_RefCommenceBattle:: @ 85CD1A1 - .string "REFEREE: {STRING 5} VS {RIVAL}!\nCommence battling!$" - - .align 2 -gRefereeStringsTable:: @ 85CD1C8 - .4byte gText_RefIfNothingIsDecided - .4byte gText_RefThatsIt - .4byte gText_RefJudgeMind - .4byte gText_RefJudgeSkill - .4byte gText_RefJudgeBody - .4byte gText_RefJudgement1 - .4byte gText_RefJudgement2 - .4byte gText_RefJudgement3 - .4byte gText_RefCommenceBattle - -gText_QuestionForfeitMatch:: @ 85CD1EC - .string "Would you like to forfeit the match\nand quit now?$" - -gText_ForfeitedMatch:: @ 85CD21E - .string "{STRING 35} forfeited the match!$" - -gText_String37:: @ 85CD236 - .string "{STRING 37}$" - -gText_String49:: @ 85CD239 - .string "{STRING 49}$" - - .string "{PLAY_SE 0x0011}{STRING 28} {STRING 29} fled!$" - -gText_PlayerLostAgainst2:: @ 85CD24C - .string "Player lost against\n{STRING 28} {STRING 29}!$" - -gText_PlayerBattledToDraw2:: @ 85CD267 - .string "Player battled to a draw against\n{STRING 28} {STRING 29}!$" - -gText_RecordBattleToPass:: @ 85CD28F - .string "Would you like to record your battle\non your FRONTIER PASS?$" - -gText_BattleRecordedOnPass:: @ 85CD2CB - .string "{STRING 35}’s battle result was recorded\non the FRONTIER PASS.$" - -gText_TrainerWantsToBattle:: @ 85CD301 - .string "{STRING 32}\nwants to battle!{PAUSE 49}$" - -gText_TwoTrainersWantToBattle3:: @ 85CD318 - .string "{STRING 32} and {STRING 33}\nwant to battle!{PAUSE 49}$" - - .align 1 -gUnknown_085CD336:: @ 85CD336 - .2byte 0x000e, 0x0046, 0x004a, 0x006a, 0x006b, 0x006c, 0x006e, 0x006f - .2byte 0x0079, 0x007b, 0x007d, 0x0094, 0x0096, 0x0097, 0x009b, 0x009c - .2byte 0x009f, 0x00a4, 0x00aa, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x00cd - .2byte 0x00cf, 0x00d6, 0x00ed, 0x00f4, 0x00f5, 0x010a, 0x010f, 0x0112 - .2byte 0x0113, 0x011a, 0x0125, 0x0136, 0x013c, 0x0140, 0x0149, 0x014a - .2byte 0x014e, 0x0154, 0x0000, 0x0064, 0x0069, 0x0075, 0x0085, 0x00af - .2byte 0x010d, 0x0153, 0x0000, 0x0060, 0x0061, 0x0066, 0x0068, 0x008c - .2byte 0x0090, 0x00a5, 0x00b8, 0x010c, 0x0111, 0x0118, 0x0119, 0x0129 - .2byte 0x012a, 0x012c, 0x0139, 0x015a, 0x015b, 0x0000, 0x0001, 0x000a - .2byte 0x000b, 0x0011, 0x0013, 0x0014, 0x0015, 0x001e, 0x0023, 0x0025 - .2byte 0x0027, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0040, 0x0047 - .2byte 0x0051, 0x0059, 0x005a, 0x005b, 0x005c, 0x0067, 0x0076, 0x007a - .2byte 0x0080, 0x0084, 0x008b, 0x0091, 0x00a3, 0x00a9, 0x00ab, 0x00ae - .2byte 0x00c1, 0x00cc, 0x00d5, 0x00f9, 0x00fd, 0x00ff, 0x0100, 0x0103 - .2byte 0x0104, 0x0110, 0x011b, 0x0141, 0x0157, 0x0000 - -gUnknown_085CD422:: @ 85CD422 - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 -gUnknown_085CD42C:: @ 85CD42C - .2byte 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101 - .2byte 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100 - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000 - .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102 - .2byte 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100 - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100 - .2byte 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x01ff - .2byte 0x0000, 0x0100, 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100 - .2byte 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, 0x0600, 0x0000 - - .align 2 -gUnknown_085CD54C:: @ 85C54C - .2byte 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101 - .2byte 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100 - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000 - .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102 - .2byte 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100 - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100 - .2byte 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0100, 0x0f0e, 0x0000 - .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00 - .2byte 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000 - .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff - .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0111, 0x0100, 0x0000, 0x0201 - .2byte 0x0301, 0x0000 - - .align 2 -gUnknown_085CD660:: @ 85CD660 - .4byte gUnknown_085CD42C - .4byte gUnknown_085CD54C - - .align 2 -gUnknown_085CD668:: @ 85CD668 - .byte 0x08, 0x04, 0x01, 0x00 diff --git a/include/battle.h b/include/battle.h index d41702396a..bb61c70433 100644 --- a/include/battle.h +++ b/include/battle.h @@ -604,7 +604,7 @@ struct BattleStruct u8 field_8B; u8 field_8C; u8 field_8D; - u8 field_8E; + u8 stringMoveType; u8 expGetterBank; u8 field_90; u8 field_91; diff --git a/include/battle_message.h b/include/battle_message.h index 3bc7117bb4..1884c9e371 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -206,11 +206,19 @@ u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src); u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); void sub_814F9EC(const u8* text, u8 arg1); -extern u8 gBattleTextBuff1[]; -extern u8 gBattleTextBuff2[]; -extern u8 gBattleTextBuff3[]; -extern u8 gDisplayedStringBattle[]; +#define TEXT_BUFF_ARRAY_COUNT 16 +extern u8 gDisplayedStringBattle[300]; +extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT]; +extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; +extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT]; + +extern const u8* const gStatNamesTable[]; +extern const u8* const gPokeblockWasTooXStringTable[]; extern const u8* const gRefereeStringsTable[]; +extern const u8* const gStatNamesTable2[]; + +extern const u16 gMissStringIds[]; +extern const u16 gTrappingMoves[]; #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h new file mode 100644 index 0000000000..546cb2e462 --- /dev/null +++ b/include/battle_string_ids.h @@ -0,0 +1,385 @@ +#ifndef GUARD_BATTLE_STRING_IDS_H +#define GUARD_BATTLE_STRING_IDS_H + +#define BATTLESTRINGS_COUNT 369 + +#define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved + +#define STRINGID_INTROMSG 0 +#define STRINGID_INTROSENDOUT 1 +#define STRINGID_RETURNMON 2 +#define STRINGID_SWITCHINMON 3 +#define STRINGID_USEDMOVE 4 +#define STRINGID_BATTLEEND 5 + +#define STRINGID_TRAINER1LOSETEXT 12 +#define STRINGID_PKMNGAINEDEXP 13 +#define STRINGID_PKMNGREWTOLV 14 +#define STRINGID_PKMNLEARNEDMOVE 15 +#define STRINGID_TRYTOLEARNMOVE1 16 +#define STRINGID_TRYTOLEARNMOVE2 17 +#define STRINGID_TRYTOLEARNMOVE3 18 +#define STRINGID_PKMNFORGOTMOVE 19 +#define STRINGID_STOPLEARNINGMOVE 20 +#define STRINGID_DIDNOTLEARNMOVE 21 +#define STRINGID_PKMNLEARNEDMOVE2 22 +#define STRINGID_ATTACKMISSED 23 +#define STRINGID_PKMNPROTECTEDITSELF 24 +#define STRINGID_STATSWONTINCREASE2 25 +#define STRINGID_AVOIDEDDAMAGE 26 +#define STRINGID_ITDOESNTAFFECT 27 +#define STRINGID_PKMNFAINTED 28 +#define STRINGID_PKMNFAINTED2 29 +#define STRINGID_PLAYERGOTMONEY 30 +#define STRINGID_PLAYERWHITEOUT 31 +#define STRINGID_PLAYERWHITEOUT2 32 +#define STRINGID_PREVENTSESCAPE 33 +#define STRINGID_HITXTIMES 34 +#define STRINGID_PKMNFELLASLEEP 35 +#define STRINGID_PKMNMADESLEEP 36 +#define STRINGID_PKMNALREADYASLEEP 37 +#define STRINGID_PKMNALREADYASLEEP2 38 +#define STRINGID_PKMNWASNTAFFECTED 39 +#define STRINGID_PKMNWASPOISONED 40 +#define STRINGID_PKMNPOISONEDBY 41 +#define STRINGID_PKMNHURTBYPOISON 42 +#define STRINGID_PKMNALREADYPOISONED 43 +#define STRINGID_PKMNBADLYPOISONED 44 +#define STRINGID_PKMNENERGYDRAINED 45 +#define STRINGID_PKMNWASBURNED 46 +#define STRINGID_PKMNBURNEDBY 47 +#define STRINGID_PKMNHURTBYBURN 48 +#define STRINGID_PKMNWASFROZEN 49 +#define STRINGID_PKMNFROZENBY 50 +#define STRINGID_PKMNISFROZEN 51 +#define STRINGID_PKMNWASDEFROSTED 52 +#define STRINGID_PKMNWASDEFROSTED2 53 +#define STRINGID_PKMNWASDEFROSTEDBY 54 +#define STRINGID_PKMNWASPARALYZED 55 +#define STRINGID_PKMNWASPARALYZEDBY 56 +#define STRINGID_PKMNISPARALYZED 57 +#define STRINGID_PKMNISALREADYPARALYZED 58 +#define STRINGID_PKMNHEALEDPARALYSIS 59 +#define STRINGID_PKMNDREAMEATEN 60 +#define STRINGID_STATSWONTINCREASE 61 +#define STRINGID_STATSWONTDECREASE 62 +#define STRINGID_TEAMSTOPPEDWORKING 63 +#define STRINGID_FOESTOPPEDWORKING 64 +#define STRINGID_PKMNISCONFUSED 65 +#define STRINGID_PKMNHEALEDCONFUSION 66 +#define STRINGID_PKMNWASCONFUSED 67 +#define STRINGID_PKMNALREADYCONFUSED 68 +#define STRINGID_PKMNFELLINLOVE 69 +#define STRINGID_PKMNINLOVE 70 +#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 +#define STRINGID_PKMNBLOWNAWAY 72 +#define STRINGID_PKMNCHANGEDTYPE 73 +#define STRINGID_PKMNFLINCHED 74 +#define STRINGID_PKMNREGAINEDHEALTH 75 +#define STRINGID_PKMNHPFULL 76 +#define STRINGID_PKMNRAISEDSPDEF 77 +#define STRINGID_PKMNRAISEDDEF 78 +#define STRINGID_PKMNCOVEREDBYVEIL 79 +#define STRINGID_PKMNUSEDSAFEGUARD 80 +#define STRINGID_PKMNSAFEGUARDEXPIRED 81 +#define STRINGID_PKMNWENTTOSLEEP 82 +#define STRINGID_PKMNSLEPTHEALTHY 83 +#define STRINGID_PKMNWHIPPEDWHIRLWIND 84 +#define STRINGID_PKMNTOOKSUNLIGHT 85 +#define STRINGID_PKMNLOWEREDHEAD 86 +#define STRINGID_PKMNISGLOWING 87 +#define STRINGID_PKMNFLEWHIGH 88 +#define STRINGID_PKMNDUGHOLE 89 +#define STRINGID_PKMNSQUEEZEDBYBIND 90 +#define STRINGID_PKMNTRAPPEDINVORTEX 91 +#define STRINGID_PKMNWRAPPEDBY 92 +#define STRINGID_PKMNCLAMPED 93 +#define STRINGID_PKMNHURTBY 94 +#define STRINGID_PKMNFREEDFROM 95 +#define STRINGID_PKMNCRASHED 96 +#define STRINGID_PKMNSHROUDEDINMIST 97 +#define STRINGID_PKMNPROTECTEDBYMIST 98 +#define STRINGID_PKMNGETTINGPUMPED 99 +#define STRINGID_PKMNHITWITHRECOIL 100 +#define STRINGID_PKMNPROTECTEDITSELF2 101 +#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 +#define STRINGID_PKMNPELTEDBYHAIL 103 +#define STRINGID_PKMNSEEDED 104 +#define STRINGID_PKMNEVADEDATTACK 105 +#define STRINGID_PKMNSAPPEDBYLEECHSEED 106 +#define STRINGID_PKMNFASTASLEEP 107 +#define STRINGID_PKMNWOKEUP 108 +#define STRINGID_PKMNUPROARKEPTAWAKE 109 +#define STRINGID_PKMNWOKEUPINUPROAR 110 +#define STRINGID_PKMNCAUSEDUPROAR 111 +#define STRINGID_PKMNMAKINGUPROAR 112 +#define STRINGID_PKMNCALMEDDOWN 113 +#define STRINGID_PKMNCANTSLEEPINUPROAR 114 +#define STRINGID_PKMNSTOCKPILED 115 +#define STRINGID_PKMNCANTSTOCKPILE 116 +#define STRINGID_PKMNCANTSLEEPINUPROAR2 117 +#define STRINGID_UPROARKEPTPKMNAWAKE 118 +#define STRINGID_PKMNSTAYEDAWAKEUSING 119 +#define STRINGID_PKMNSTORINGENERGY 120 +#define STRINGID_PKMNUNLEASHEDENERGY 121 +#define STRINGID_PKMNFATIGUECONFUSION 122 +#define STRINGID_PKMNPICKEDUPITEM 123 +#define STRINGID_PKMNUNAFFECTED 124 +#define STRINGID_PKMNTRANSFORMEDINTO 125 +#define STRINGID_PKMNMADESUBSTITUTE 126 +#define STRINGID_PKMNHASSUBSTITUTE 127 +#define STRINGID_SUBSTITUTEDAMAGED 128 +#define STRINGID_PKMNSUBSTITUTEFADED 129 +#define STRINGID_PKMNMUSTRECHARGE 130 +#define STRINGID_PKMNRAGEBUILDING 131 +#define STRINGID_PKMNMOVEWASDISABLED 132 +#define STRINGID_PKMNMOVEISDISABLED 133 +#define STRINGID_PKMNMOVEDISABLEDNOMORE 134 +#define STRINGID_PKMNGOTENCORE 135 +#define STRINGID_PKMNENCOREENDED 136 +#define STRINGID_PKMNTOOKAIM 137 +#define STRINGID_PKMNSKETCHEDMOVE 138 +#define STRINGID_PKMNTRYINGTOTAKEFOE 139 +#define STRINGID_PKMNTOOKFOE 140 +#define STRINGID_PKMNREDUCEDPP 141 +#define STRINGID_PKMNSTOLEITEM 142 +#define STRINGID_PKMNCANTESCAPE 143 +#define STRINGID_PKMNFELLINTONIGHTMARE 144 +#define STRINGID_PKMNLOCKEDINNIGHTMARE 145 +#define STRINGID_PKMNLAIDCURSE 146 +#define STRINGID_PKMNAFFLICTEDBYCURSE 147 +#define STRINGID_SPIKESSCATTERED 148 +#define STRINGID_PKMNHURTBYSPIKES 149 +#define STRINGID_PKMNIDENTIFIED 150 +#define STRINGID_PKMNPERISHCOUNTFELL 151 +#define STRINGID_PKMNBRACEDITSELF 152 +#define STRINGID_PKMNENDUREDHIT 153 +#define STRINGID_MAGNITUDESTRENGTH 154 +#define STRINGID_PKMNCUTHPMAXEDATTACK 155 +#define STRINGID_PKMNCOPIEDSTATCHANGES 156 +#define STRINGID_PKMNGOTFREE 157 +#define STRINGID_PKMNSHEDLEECHSEED 158 +#define STRINGID_PKMNBLEWAWAYSPIKES 159 +#define STRINGID_PKMNFLEDFROMBATTLE 160 +#define STRINGID_PKMNFORESAWATTACK 161 +#define STRINGID_PKMNTOOKATTACK 162 +#define STRINGID_PKMNATTACK 163 +#define STRINGID_PKMNCENTERATTENTION 164 +#define STRINGID_PKMNCHARGINGPOWER 165 +#define STRINGID_NATUREPOWERTURNEDINTO 166 +#define STRINGID_PKMNSTATUSNORMAL 167 +#define STRINGID_PKMNHASNOMOVESLEFT 168 +#define STRINGID_PKMNSUBJECTEDTOTORMENT 169 +#define STRINGID_PKMNCANTUSEMOVETORMENT 170 +#define STRINGID_PKMNTIGHTENINGFOCUS 171 +#define STRINGID_PKMNFELLFORTAUNT 172 +#define STRINGID_PKMNCANTUSEMOVETAUNT 173 +#define STRINGID_PKMNREADYTOHELP 174 +#define STRINGID_PKMNSWITCHEDITEMS 175 +#define STRINGID_PKMNCOPIEDFOE 176 +#define STRINGID_PKMNMADEWISH 177 +#define STRINGID_PKMNWISHCAMETRUE 178 +#define STRINGID_PKMNPLANTEDROOTS 179 +#define STRINGID_PKMNABSORBEDNUTRIENTS 180 +#define STRINGID_PKMNANCHOREDITSELF 181 +#define STRINGID_PKMNWASMADEDROWSY 182 +#define STRINGID_PKMNKNOCKEDOFF 183 +#define STRINGID_PKMNSWAPPEDABILITIES 184 +#define STRINGID_PKMNSEALEDOPPONENTMOVE 185 +#define STRINGID_PKMNCANTUSEMOVESEALED 186 +#define STRINGID_PKMNWANTSGRUDGE 187 +#define STRINGID_PKMNLOSTPPGRUDGE 188 +#define STRINGID_PKMNSHROUDEDITSELF 189 +#define STRINGID_PKMNMOVEBOUNCED 190 +#define STRINGID_PKMNWAITSFORTARGET 191 +#define STRINGID_PKMNSNATCHEDMOVE 192 +#define STRINGID_PKMNMADEITRAIN 193 +#define STRINGID_PKMNRAISEDSPEED 194 +#define STRINGID_PKMNPROTECTEDBY 195 +#define STRINGID_PKMNPREVENTSUSAGE 196 +#define STRINGID_PKMNRESTOREDHPUSING 197 +#define STRINGID_PKMNCHANGEDTYPEWITH 198 +#define STRINGID_PKMNPREVENTSPARALYSISWITH 199 +#define STRINGID_PKMNPREVENTSROMANCEWITH 200 +#define STRINGID_PKMNPREVENTSPOISONINGWITH 201 +#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 +#define STRINGID_PKMNRAISEDFIREPOWERWITH 203 +#define STRINGID_PKMNANCHORSITSELFWITH 204 +#define STRINGID_PKMNCUTSATTACKWITH 205 +#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 +#define STRINGID_PKMNHURTSWITH 207 +#define STRINGID_PKMNTRACED 208 +#define STRINGID_STATSHARPLY 209 +#define STRINGID_STATROSE 210 +#define STRINGID_STATHARSHLY 211 +#define STRINGID_STATFELL 212 +#define STRINGID_PKMNSSTATCHANGED 213 +#define STRINGID_PKMNSSTATCHANGED2 214 +#define STRINGID_PKMNSSTATCHANGED3 215 +#define STRINGID_PKMNSSTATCHANGED4 216 +#define STRINGID_CRITICALHIT 217 +#define STRINGID_ONEHITKO 218 +#define STRINGID_123POOF 219 +#define STRINGID_ANDELLIPSIS 220 +#define STRINGID_NOTVERYEFFECTIVE 221 +#define STRINGID_SUPEREFFECTIVE 222 +#define STRINGID_GOTAWAYSAFELY 223 +#define STRINGID_WILDPKMNFLED 224 +#define STRINGID_NORUNNINGFROMTRAINERS 225 +#define STRINGID_CANTESCAPE 226 +#define STRINGID_DONTLEAVEBIRCH 227 +#define STRINGID_BUTNOTHINGHAPPENED 228 +#define STRINGID_BUTITFAILED 229 +#define STRINGID_ITHURTCONFUSION 230 +#define STRINGID_MIRRORMOVEFAILED 231 +#define STRINGID_STARTEDTORAIN 232 +#define STRINGID_DOWNPOURSTARTED 233 +#define STRINGID_RAINCONTINUES 234 +#define STRINGID_DOWNPOURCONTINUES 235 +#define STRINGID_RAINSTOPPED 236 +#define STRINGID_SANDSTORMBREWED 237 +#define STRINGID_SANDSTORMRAGES 238 +#define STRINGID_SANDSTORMSUBSIDED 239 +#define STRINGID_SUNLIGHTGOTBRIGHT 240 +#define STRINGID_SUNLIGHTSTRONG 241 +#define STRINGID_SUNLIGHTFADED 242 +#define STRINGID_STARTEDHAIL 243 +#define STRINGID_HAILCONTINUES 244 +#define STRINGID_HAILSTOPPED 245 +#define STRINGID_FAILEDTOSPITUP 246 +#define STRINGID_FAILEDTOSWALLOW 247 +#define STRINGID_WINDBECAMEHEATWAVE 248 +#define STRINGID_STATCHANGESGONE 249 +#define STRINGID_COINSSCATTERED 250 +#define STRINGID_TOOWEAKFORSUBSTITUTE 251 +#define STRINGID_SHAREDPAIN 252 +#define STRINGID_BELLCHIMED 253 +#define STRINGID_FAINTINTHREE 254 +#define STRINGID_NOPPLEFT 255 +#define STRINGID_BUTNOPPLEFT 256 +#define STRINGID_PLAYERUSEDITEM 257 +#define STRINGID_WALLYUSEDITEM 258 +#define STRINGID_TRAINERBLOCKEDBALL 259 +#define STRINGID_DONTBEATHIEF 260 +#define STRINGID_ITDODGEDBALL 261 +#define STRINGID_YOUMISSEDPKMN 262 +#define STRINGID_PKMNBROKEFREE 263 +#define STRINGID_ITAPPEAREDCAUGHT 264 +#define STRINGID_AARGHALMOSTHADIT 265 +#define STRINGID_SHOOTSOCLOSE 266 +#define STRINGID_GOTCHAPKMNCAUGHT 267 +#define STRINGID_GOTCHAPKMNCAUGHT2 268 +#define STRINGID_GIVENICKNAMECAPTURED 269 +#define STRINGID_PKMNSENTTOPC 270 +#define STRINGID_PKMNDATAADDEDTODEX 271 +#define STRINGID_ITISRAINING 272 +#define STRINGID_SANDSTORMISRAGING 273 +#define STRINGID_CANTESCAPE2 274 +#define STRINGID_PKMNIGNORESASLEEP 275 +#define STRINGID_PKMNIGNOREDORDERS 276 +#define STRINGID_PKMNBEGANTONAP 277 +#define STRINGID_PKMNLOAFING 278 +#define STRINGID_PKMNWONTOBEY 279 +#define STRINGID_PKMNTURNEDAWAY 280 +#define STRINGID_PKMNPRETENDNOTNOTICE 281 +#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 +#define STRINGID_CREPTCLOSER 283 +#define STRINGID_CANTGETCLOSER 284 +#define STRINGID_PKMNWATCHINGCAREFULLY 285 +#define STRINGID_PKMNCURIOUSABOUTX 286 +#define STRINGID_PKMNENTHRALLEDBYX 287 +#define STRINGID_PKMNIGNOREDX 288 +#define STRINGID_THREWPOKEBLOCKATPKMN 289 +#define STRINGID_OUTOFSAFARIBALLS 290 +#define STRINGID_PKMNSITEMCUREDPARALYSIS 291 +#define STRINGID_PKMNSITEMCUREDPOISON 292 +#define STRINGID_PKMNSITEMHEALEDBURN 293 +#define STRINGID_PKMNSITEMDEFROSTEDIT 294 +#define STRINGID_PKMNSITEMWOKEIT 295 +#define STRINGID_PKMNSITEMSNAPPEDOUT 296 +#define STRINGID_PKMNSITEMCUREDPROBLEM 297 +#define STRINGID_PKMNSITEMRESTOREDHEALTH 298 +#define STRINGID_PKMNSITEMRESTOREDPP 299 +#define STRINGID_PKMNSITEMRESTOREDSTATUS 300 +#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 +#define STRINGID_ITEMALLOWSONLYYMOVE 302 +#define STRINGID_PKMNHUNGONWITHX 303 +#define STRINGID_EMPTYSTRING3 304 +#define STRINGID_PKMNSXPREVENTSBURNS 305 +#define STRINGID_PKMNSXBLOCKSY 306 +#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 +#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 +#define STRINGID_PKMNSXPREVENTSYLOSS 309 +#define STRINGID_PKMNSXINFATUATEDY 310 +#define STRINGID_PKMNSXMADEYINEFFECTIVE 311 +#define STRINGID_PKMNSXCUREDYPROBLEM 312 +#define STRINGID_ITSUCKEDLIQUIDOOZE 313 +#define STRINGID_PKMNTRANSFORMED 314 +#define STRINGID_ELECTRICITYWEAKENED 315 +#define STRINGID_FIREWEAKENED 316 +#define STRINGID_PKMNHIDUNDERWATER 317 +#define STRINGID_PKMNSPRANGUP 318 +#define STRINGID_HMMOVESCANTBEFORGOTTEN 319 +#define STRINGID_XFOUNDONEY 320 +#define STRINGID_PLAYERDEFEATEDTRAINER1 321 +#define STRINGID_SOOTHINGAROMA 322 +#define STRINGID_ITEMSCANTBEUSEDNOW 323 +#define STRINGID_FORXCOMMAYZ 324 +#define STRINGID_USINGXTHEYOFZN 325 +#define STRINGID_PKMNUSEDXTOGETPUMPED 326 +#define STRINGID_PKMNSXMADEYUSELESS 327 +#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 +#define STRINGID_EMPTYSTRING4 329 +#define STRINGID_ABOOSTED 330 +#define STRINGID_PKMNSXINTENSIFIEDSUN 331 +#define STRINGID_PKMNMAKESGROUNDMISS 332 +#define STRINGID_YOUTHROWABALLNOWRIGHT 333 +#define STRINGID_PKMNSXTOOKATTACK 334 +#define STRINGID_PKMNCHOSEXASDESTINY 335 +#define STRINGID_PKMNLOSTFOCUS 336 +#define STRINGID_USENEXTPKMN 337 +#define STRINGID_PKMNFLEDUSINGITS 338 +#define STRINGID_PKMNFLEDUSING 339 +#define STRINGID_PKMNWASDRAGGEDOUT 340 +#define STRINGID_PREVENTEDFROMWORKING 341 +#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 +#define STRINGID_TRAINER1USEDITEM 343 +#define STRINGID_BOXISFULL 344 +#define STRINGID_PKMNAVOIDEDATTACK 345 +#define STRINGID_PKMNSXMADEITINEFFECTIVE 346 +#define STRINGID_PKMNSXPREVENTSFLINCHING 347 +#define STRINGID_PKMNALREADYHASBURN 348 +#define STRINGID_STATSWONTDECREASE2 349 +#define STRINGID_PKMNSXBLOCKSY2 350 +#define STRINGID_PKMNSXWOREOFF 351 +#define STRINGID_PKMNRAISEDDEFALITTLE 352 +#define STRINGID_PKMNRAISEDSPDEFALITTLE 353 +#define STRINGID_THEWALLSHATTERED 354 +#define STRINGID_PKMNSXPREVENTSYSZ 355 +#define STRINGID_PKMNSXCUREDITSYPROBLEM 356 +#define STRINGID_PKMNCANTESCAPE2 357 +#define STRINGID_PKMNOBTAINEDX 358 +#define STRINGID_PKMNOBTAINEDX2 359 +#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 +#define STRINGID_BUTNOEFFECT 361 +#define STRINGID_PKMNSXHADNOEFFECTONY 362 +#define STRINGID_TWOENEMIESDEFEATED 363 +#define STRINGID_TRAINER2LOSETEXT 364 +#define STRINGID_PKMNINCAPABLEOFPOWER 365 +#define STRINGID_GLINTAPPEARSINEYE 366 +#define STRINGID_PKMNGETTINGINTOPOSITION 367 +#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368 +#define STRINGID_PKMNEAGERFORMORE 369 +#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370 +#define STRINGID_LOSTTOOPPONENTBYREFEREE 371 +#define STRINGID_TIEDOPPONENTBYREFEREE 372 +#define STRINGID_QUESTIONFORFEITMATCH 373 +#define STRINGID_FORFEITEDMATCH 374 +#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375 +#define STRINGID_PKMNTRANSFERREDLANETTESPC 376 +#define STRINGID_PKMNBOXSOMEONESPCFULL 377 +#define STRINGID_PKMNBOXLANETTESPCFULL 378 +#define STRINGID_TRAINER1WINTEXT 379 +#define STRINGID_TRAINER2WINTEXT 380 + +#endif // GUARD_BATTLE_STRING_IDS_H diff --git a/ld_script.txt b/ld_script.txt index de6ba62f15..20ec4d145f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -190,6 +190,7 @@ SECTIONS { asm/fldeff_strength.o(.text); asm/battle_transition.o(.text); asm/battle_controller_linkpartner.o(.text); + src/battle_message.o(.text); asm/battle_message.o(.text); asm/cable_car.o(.text); asm/math_util.o(.text); @@ -411,7 +412,7 @@ SECTIONS { src/battle_ai_script_commands.o(.rodata); data/data4.o(.rodata); data/battle_controller_link_partner.o(.rodata); - data/battle_message.o(.rodata); + src/battle_message.o(.rodata); data/cable_car.o(.rodata); data/save.o(.rodata); data/field_effect_helpers.o(.rodata); diff --git a/src/battle_2.c b/src/battle_2.c index fd7cf68630..0fc7e8ffd8 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -41,6 +41,7 @@ #include "evolution_scene.h" #include "roamer.h" #include "safari_zone.h" +#include "battle_string_ids.h" struct UnknownStruct6 { @@ -3299,7 +3300,7 @@ static void BattleIntroPrintTrainerWantsToBattle(void) if (gBattleExecBuffer == 0) { gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); - PrepareStringBattle(0, gActiveBank); + PrepareStringBattle(STRINGID_INTROMSG, gActiveBank); gBattleMainFunc = BattleIntroPrintOpponentSendsOut; } } @@ -3309,7 +3310,7 @@ static void BattleIntroPrintWildMonAttacked(void) if (gBattleExecBuffer == 0) { gBattleMainFunc = BattleIntroPrintPlayerSendsOut; - PrepareStringBattle(0, 0); + PrepareStringBattle(STRINGID_INTROMSG, 0); } } @@ -3332,7 +3333,7 @@ static void BattleIntroPrintOpponentSendsOut(void) else identity = IDENTITY_OPPONENT_MON1; - PrepareStringBattle(1, GetBankByIdentity(identity)); + PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity)); gBattleMainFunc = BattleIntroOpponent1SendsOutMonAnimation; } @@ -3535,7 +3536,7 @@ static void BattleIntroPrintPlayerSendsOut(void) identity = IDENTITY_PLAYER_MON1; if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) - PrepareStringBattle(1, GetBankByIdentity(identity)); + PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity)); gBattleMainFunc = BattleIntroPlayer1SendsOutMonAnimation; } diff --git a/src/battle_message.c b/src/battle_message.c new file mode 100644 index 0000000000..aaaf23faed --- /dev/null +++ b/src/battle_message.c @@ -0,0 +1,1428 @@ +#include "global.h" +#include "battle.h" +#include "battle_message.h" +#include "battle_string_ids.h" +#include "moves.h" +#include "text.h" +#include "string_util.h" + +extern u16 gLastUsedItem; +extern u8 gLastUsedAbility; +extern u8 gActiveBank; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbilitiesPerBank[BATTLE_BANKS_COUNT]; +extern u32 gBattleTypeFlags; +extern u16 gTrainerBattleOpponent_A; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; +extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; + +extern const u8 gMoveNames[LAST_MOVE_INDEX + 1][13]; + +// strings +extern const u8 gText_PkmnBoxSomeonesPCFull[]; +extern const u8 gText_PkmnBoxLanettesPCFull[]; +extern const u8 gText_PkmnTransferredSomeonesPC[]; +extern const u8 gText_PkmnTransferredLanettesPC[]; + +// this file's functions +void sub_814F8F8(u8 *txtPtr); +void sub_814F950(u8 *txtPtr); + +// ewram variables +EWRAM_DATA u8 gDisplayedStringBattle[300] = {0}; +EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0}; +EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0}; +EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0}; + +// const rom data + +const u8 gText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}"); +const u8 gText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p"); +const u8 gText_EmptyString4[] = _(""); +const u8 gText_ABoosted[] = _(" a boosted"); +const u8 gText_PkmnGrewToLv[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{UNKNOWN_A}\p"); +const u8 gText_PkmnLearnedMove[] = _("{B_BUFF1} learned\n{B_BUFF2}!{UNKNOWN_A}\p"); +const u8 gText_TryToLearnMove1[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p"); +const u8 gText_TryToLearnMove2[] = _("But, {B_BUFF1} can’t learn\nmore than four moves.\p"); +const u8 gText_TryToLearnMove3[] = _("Delete a move to make\nroom for {B_BUFF2}?"); +const u8 gText_PkmnForgotMove[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p"); +const u8 gText_StopLearningMove[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?"); +const u8 gText_DidNotLearnMove[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p"); +const u8 gText_UseNextPkmn[] = _("Use next POKéMON?"); +const u8 gText_AttackMissed[] = _("{B_ATK_NAME_WITH_PREFIX}’s\nattack missed!"); +const u8 gText_PkmnProtectedItself[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!"); +const u8 gText_AvoidedDamage[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!"); +const u8 gText_PkmnMakesGroundMiss[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!"); +const u8 gText_PkmnAvoidedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!"); +const u8 gText_ItDoesntAffect[] = _("It doesn’t affect\n{B_DEF_NAME_WITH_PREFIX}…"); +const u8 gText_PkmnFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); +const u8 gText_PkmnFainted2[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); +const u8 gText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); +const u8 gText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); +const u8 gText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); +const u8 gText_PreventsEscape[] = _("{B_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); +const u8 gText_CantEscape2[] = _("Can’t escape!\p"); +const u8 gText_PkmnCantEscape2[] = _("{B_ATK_NAME_WITH_PREFIX} can’t escape!"); +const u8 gText_HitXTimes[] = _("Hit {B_BUFF1} time(s)!"); +const u8 gText_PkmnFellAsleep[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!"); +const u8 gText_PkmnMadeSleep[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); +const u8 gText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!"); +const u8 gText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!"); +const u8 gText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn’t affected!"); +const u8 gText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!"); +const u8 gText_PkmnPoisonedBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!"); +const u8 gText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned."); +const u8 gText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); +const u8 gText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); +const u8 gText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); +const u8 gText_PkmnBurnedBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); +const u8 gText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); +const u8 gText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); +const u8 gText_PkmnFrozenBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); +const u8 gText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!"); +const u8 gText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); +const u8 gText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); +const u8 gText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); +const u8 gText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); +const u8 gText_PkmnWasParalyzedBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); +const u8 gText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can’t move!"); +const u8 gText_PkmnIsAlreadyParalyzed[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!"); +const u8 gText_PkmnHealedParalysis[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!"); +const u8 gText_PkmnDreamEaten[] = _("{B_DEF_NAME_WITH_PREFIX}’s\ndream was eaten!"); +const u8 gText_StatsWontIncrease[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\nwon’t go higher!"); +const u8 gText_StatsWontDecrease[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\nwon’t go lower!"); +const u8 gText_TeamStoppedWorking[] = _("Your team’s {B_BUFF1}\nstopped working!"); +const u8 gText_FoeStoppedWorking[] = _("The foe’s {B_BUFF1}\nstopped working!"); +const u8 gText_PkmnIsConfused[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!"); +const u8 gText_PkmnHealedConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!"); +const u8 gText_PkmnWasConfused[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!"); +const u8 gText_PkmnAlreadyConfused[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!"); +const u8 gText_PkmnFellInLove[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!"); +const u8 gText_PkmnInLove[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_ACTIVE_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnImmobilizedByLove[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!"); +const u8 gText_PkmnBlownAway[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!"); +const u8 gText_PkmnChangedType[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!"); +const u8 gText_PkmnFlinched[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!"); +const u8 gText_PkmnRegainedHealth[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!"); +const u8 gText_PkmnHPFull[] = _("{B_DEF_NAME_WITH_PREFIX}’s\nHP is full!"); +const u8 gText_PkmnRaisedSpDef[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised SP. DEF!"); +const u8 gText_PkmnRaisedSpDefALittle[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised SP. DEF a little!"); +const u8 gText_PkmnRaisedDef[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised DEFENSE!"); +const u8 gText_PkmnRaisedDefALittle[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised DEFENSE a little!"); +const u8 gText_PkmnCoveredByVeil[] = _("{B_ATK_PREFIX2}’s party is covered\nby a veil!"); +const u8 gText_PkmnUsedSafeguard[] = _("{B_DEF_NAME_WITH_PREFIX}’s party is protected\nby SAFEGUARD!"); +const u8 gText_PkmnSafeguardExpired[] = _("{B_ATK_PREFIX3}’s party is no longer\nprotected by SAFEGUARD!"); +const u8 gText_PkmnWentToSleep[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!"); +const u8 gText_PkmnSleptHealthy[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!"); +const u8 gText_PkmnWhippedWhirlwind[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!"); +const u8 gText_PkmnTookSunlight[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!"); +const u8 gText_PkmnLoweredHead[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!"); +const u8 gText_PkmnIsGlowing[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!"); +const u8 gText_PkmnFlewHigh[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!"); +const u8 gText_PkmnDugHole[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!"); +const u8 gText_PkmnHidUnderwater[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!"); +const u8 gText_PkmnSprangUp[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!"); +const u8 gText_PkmnSqueezedByBind[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}’s BIND!"); +const u8 gText_PkmnTrappedInVortex[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!"); +const u8 gText_PkmnTrappedBySandTomb[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!"); +const u8 gText_PkmnWrappedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnClamped[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnHurtBy[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!"); +const u8 gText_PkmnFreedFrom[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!"); +const u8 gText_PkmnCrashed[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!"); +const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); +const u8 gText_PkmnProtectedByMist[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); +const u8 gText_PkmnGettingPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!"); +const u8 gText_PkmnHitWithRecoil[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!"); +const u8 gText_PkmnProtectedItself2[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!"); +const u8 gText_PkmnBuffetedBySandstorm[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!"); +const u8 gText_PkmnPeltedByHail[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!"); +const u8 gText_PkmnsXWoreOff[] = _("{B_ATK_PREFIX1}’s {B_BUFF1}\nwore off!"); +const u8 gText_PkmnSeeded[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!"); +const u8 gText_PkmnEvadedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!"); +const u8 gText_PkmnSappedByLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX}’s health is\nsapped by LEECH SEED!"); +const u8 gText_PkmnFastAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep."); +const u8 gText_PkmnWokeUp[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!"); +const u8 gText_PkmnUproarKeptAwake[] = _("But {B_ACTIVE_NAME_WITH_PREFIX}’s UPROAR\nkept it awake!"); +const u8 gText_PkmnWokeUpInUproar[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!"); +const u8 gText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!"); +const u8 gText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); +const u8 gText_PkmnCalmedDown[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down."); +const u8 gText_PkmnCantSleepInUproar[] = _("But {B_DEF_NAME_WITH_PREFIX} can’t\nsleep in an UPROAR!"); +const u8 gText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!"); +const u8 gText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can’t\nSTOCKPILE any more!"); +const u8 gText_PkmnCantSleepInUproar2[] = _("But {B_DEF_NAME_WITH_PREFIX} can’t\nsleep in an UPROAR!"); +const u8 gText_UproarKeptPkmnAwake[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!"); +const u8 gText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!"); +const u8 gText_PkmnStoringEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!"); +const u8 gText_PkmnUnleashedEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!"); +const u8 gText_PkmnFatigueConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!"); +const u8 gText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); +const u8 gText_PkmnUnaffected[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!"); +const u8 gText_PkmnTransformedInto[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!"); +const u8 gText_PkmnMadeSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!"); +const u8 gText_PkmnHasSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!"); +const u8 gText_SubstituteDamaged[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p"); +const u8 gText_PkmnSubstituteFaded[] = _("{B_DEF_NAME_WITH_PREFIX}’s\nSUBSTITUTE faded!\p"); +const u8 gText_PkmnMustRecharge[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!"); +const u8 gText_PkmnRageBuilding[] = _("{B_DEF_NAME_WITH_PREFIX}’s RAGE\nis building!"); +const u8 gText_PkmnMoveWasDisabled[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\nwas disabled!"); +const u8 gText_PkmnMoveDisabledNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!"); +const u8 gText_PkmnGotEncore[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!"); +const u8 gText_PkmnEncoreEnded[] = _("{B_ATK_NAME_WITH_PREFIX}’s ENCORE\nended!"); +const u8 gText_PkmnTookAim[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnSketchedMove[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!"); +const u8 gText_PkmnTryingToTakeFoe[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!"); +const u8 gText_PkmnTookFoe[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!"); +const u8 gText_PkmnReducedPP[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}’s\n{B_BUFF1} by {B_BUFF2}!"); +const u8 gText_PkmnStoleItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!"); +const u8 gText_PkmnCantEscape[] = _("{B_DEF_NAME_WITH_PREFIX} can’t\nescape now!"); +const u8 gText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!"); +const u8 gText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); +const u8 gText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); +const u8 gText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponent’s side!"); +const u8 gText_PkmnHurtBySpikes[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); +const u8 gText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}’s PERISH count\nfell to {B_BUFF1}!"); +const u8 gText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); +const u8 gText_PkmnEnduredHit[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!"); +const u8 gText_MagnitudeStrength[] = _("MAGNITUDE {B_BUFF1}!"); +const u8 gText_PkmnCutHPMaxedAttack[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!"); +const u8 gText_PkmnCopiedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}’s stat changes!"); +const u8 gText_PkmnGotFree[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}!"); +const u8 gText_PkmnShedLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!"); +const u8 gText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!"); +const u8 gText_PkmnFledFromBattle[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!"); +const u8 gText_PkmnForesawAttack[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!"); +const u8 gText_PkmnTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!"); +const u8 gText_PkmnChoseXAsDestiny[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!"); +const u8 gText_PkmnAttack[] = _("{B_BUFF1}’s attack!"); +const u8 gText_PkmnCenterAttention[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!"); +const u8 gText_PkmnChargingPower[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!"); +const u8 gText_NaturePowerTurnedInto[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!"); +const u8 gText_PkmnStatusNormal[] = _("{B_ATK_NAME_WITH_PREFIX}’s status\nreturned to normal!"); +const u8 gText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!"); +const u8 gText_PkmnTighteningFocus[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!"); +const u8 gText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!"); +const u8 gText_PkmnReadyToHelp[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnSwitchedItems[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!"); +const u8 gText_PkmnObtainedX[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}."); +const u8 gText_PkmnObtainedX2[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); +const u8 gText_PkmnObtainedXYObtainedZ[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); +const u8 gText_PkmnCopiedFoe[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}!"); +const u8 gText_PkmnMadeWish[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!"); +const u8 gText_PkmnWishCameTrue[] = _("{B_BUFF1}’s WISH\ncame true!"); +const u8 gText_PkmnPlantedRoots[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!"); +const u8 gText_PkmnAbsorbedNutrients[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!"); +const u8 gText_PkmnAnchoredItself[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!"); +const u8 gText_PkmnWasMadeDrowsy[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!"); +const u8 gText_PkmnKnockedOff[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!"); +const u8 gText_PkmnSwappedAbilities[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!"); +const u8 gText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent’s move(s)!"); +const u8 gText_PkmnWantsGrudge[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!"); +const u8 gText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1} lost\nall its PP due to the GRUDGE!"); +const u8 gText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!"); +const u8 gText_PkmnMoveBounced[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!"); +const u8 gText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for a target\nto make a move!"); +const u8 gText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_ACTIVE_NAME_WITH_PREFIX}’s move!"); +const u8 gText_ElectricityWeakened[] = _("Electricity’s power was\nweakened!"); +const u8 gText_FireWeakened[] = _("Fire’s power was\nweakened!"); +const u8 gText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!"); +const u8 gText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!"); +const u8 gText_ItemsCantBeUsedNow[] = _("Items can’t be used now.{PAUSE 64}"); +const u8 gText_ForXCommaYZ[] = _("For {B_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); +const u8 gText_PkmnUsedXToGetPumped[] = _("{B_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!"); +const u8 gText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn’t move!"); +const u8 gText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); +const u8 gText_TheWallShattered[] = _("The wall shattered!"); +const u8 gText_ButNoEffect[] = _("But it had no effect!"); +const u8 gText_PkmnHasNoMovesLeft[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); +const u8 gText_PkmnMoveIsDisabled[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nis disabled!\p"); +const u8 gText_PkmnCantUseMoveTorment[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can’t use the same\nmove in a row due to the TORMENT!\p"); +const u8 gText_PkmnCantUseMoveTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can’t use\n{B_CURRENT_MOVE} after the TAUNT!\p"); +const u8 gText_PkmnCantUseMoveSealed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can’t use the\nsealed {B_CURRENT_MOVE}!\p"); +const u8 gText_PkmnMadeItRain[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); +const u8 gText_PkmnRaisedSpeed[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); +const u8 gText_PkmnProtectedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!"); +const u8 gText_PkmnPreventsUsage[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!"); +const u8 gText_PkmnRestoredHPUsing[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!"); +const u8 gText_PkmnsXMadeYUseless[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!"); +const u8 gText_PkmnChangedTypeWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!"); +const u8 gText_PkmnPreventsParalysisWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents paralysis!"); +const u8 gText_PkmnPreventsRomanceWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents romance!"); +const u8 gText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents poisoning!"); +const u8 gText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents confusion!"); +const u8 gText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nraised its FIRE power!"); +const u8 gText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); +const u8 gText_PkmnCutsAttackWith[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}’s ATTACK!"); +const u8 gText_PkmnPreventsStatLossWith[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); +const u8 gText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnTraced[] = _("{B_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}’s {B_BUFF2}!"); +const u8 gText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}’s {STRING 27}\nprevents burns!"); +const u8 gText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); +const u8 gText_PkmnsXBlocksY2[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); +const u8 gText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}’s {STRING 24}\nrestored its HP a little!"); +const u8 gText_PkmnsXWhippedUpSandstorm[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); +const u8 gText_PkmnsXIntensifiedSun[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nintensified the sun’s rays!"); +const u8 gText_PkmnsXPreventsYLoss[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); +const u8 gText_PkmnsXInfatuatedY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnsXMadeYIneffective[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!"); +const u8 gText_PkmnsXCuredYProblem[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); +const u8 gText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!"); +const u8 gText_PkmnTransformed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} transformed!"); +const u8 gText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ntook the attack!"); +const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}’s {STRING 23}\nprevents switching!\p"); +const u8 gText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevented {B_ACTIVE_NAME_WITH_PREFIX}’s\l{B_BUFF1} from working!"); +const u8 gText_PkmnsXMadeItIneffective[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); +const u8 gText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}’s {STRING 27}\nprevents flinching!"); +const u8 gText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}’s {STRING 24}\nprevents {B_DEF_NAME_WITH_PREFIX}’s\l{B_DEF_ABILITY} from working!"); +const u8 gText_PkmnsXCuredItsYProblem[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); +const u8 gText_PkmnsXHadNoEffectOnY[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gText_StatSharply[] = _("sharply "); +const u8 gText_StatRose[] = _("rose!"); +const u8 gText_StatHarshly[] = _("harshly "); +const u8 gText_StatFell[] = _("fell!"); +const u8 gText_PkmnsStatChanged[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); +const u8 gText_PkmnsStatChanged2[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); +const u8 gText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}"); +const u8 gText_PkmnsStatChanged3[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); +const u8 gText_PkmnsStatChanged4[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); +const u8 gText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}’s stats won’t\ngo any higher!"); +const u8 gText_StatsWontDecrease2[] = _("{B_DEF_NAME_WITH_PREFIX}’s stats won’t\ngo any lower!"); +const u8 gText_CriticalHit[] = _("A critical hit!"); +const u8 gText_OneHitKO[] = _("It’s a one-hit KO!"); +const u8 gText_123Poof[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p"); +const u8 gText_AndEllipsis[] = _("And…\p"); +const u8 gText_HMMovesCantBeForgotten[] = _("HM moves can’t be\nforgotten now.\p"); +const u8 gText_NotVeryEffective[] = _("It’s not very effective…"); +const u8 gText_SuperEffective[] = _("It’s super effective!"); +const u8 gText_GotAwaySafely[] = _("{PLAY_SE 0x0011}Got away safely!\p"); +const u8 gText_PkmnFledUsingIts[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); +const u8 gText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {STRING 24}!\p"); +const u8 gText_WildPkmnFled[] = _("{PLAY_SE 0x0011}Wild {B_BUFF1} fled!"); +const u8 gText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_20}!"); +const u8 gText_TwoLinkTrainersDefeated[] = _("Player beat {B_20}\nand {B_21}!"); +const u8 gText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_20}!"); +const u8 gText_PlayerLostToTwo[] = _("Player lost to {B_20}\nand {B_21}!"); +const u8 gText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_20}!"); +const u8 gText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_20} and {B_21}!"); +const u8 gText_WildFled[] = _("{PLAY_SE 0x0011}{B_20} fled!"); +const u8 gText_TwoWildFled[] = _("{PLAY_SE 0x0011}{B_20} and\n{B_21} fled!"); +const u8 gText_NoRunningFromTrainers[] = _("No! There’s no running\nfrom a TRAINER battle!\p"); +const u8 gText_CantEscape[] = _("Can’t escape!\p"); +const u8 gText_DontLeaveBirch[] = _("PROF. BIRCH: Don’t leave me like this!\p"); +const u8 gText_ButNothingHappened[] = _("But nothing happened!"); +const u8 gText_ButItFailed[] = _("But it failed!"); +const u8 gText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!"); +const u8 gText_MirrorMoveFailed[] = _("The MIRROR MOVE failed!"); +const u8 gText_StartedToRain[] = _("It started to rain!"); +const u8 gText_DownpourStarted[] = _("A downpour started!"); +const u8 gText_RainContinues[] = _("Rain continues to fall."); +const u8 gText_DownpourContinues[] = _("The downpour continues."); +const u8 gText_RainStopped[] = _("The rain stopped."); +const u8 gText_SandstormBrewed[] = _("A sandstorm brewed!"); +const u8 gText_SandstormRages[] = _("The sandstorm rages."); +const u8 gText_SandstormSubsided[] = _("The sandstorm subsided."); +const u8 gText_SunlightGotBright[] = _("The sunlight got bright!"); +const u8 gText_SunlightStrong[] = _("The sunlight is strong."); +const u8 gText_SunlightFaded[] = _("The sunlight faded."); +const u8 gText_StartedHail[] = _("It started to hail!"); +const u8 gText_HailContinues[] = _("Hail continues to fall."); +const u8 gText_HailStopped[] = _("The hail stopped."); +const u8 gText_FailedToSpitUp[] = _("But it failed to SPIT UP\na thing!"); +const u8 gText_FailedToSwallow[] = _("But it failed to SWALLOW\na thing!"); +const u8 gText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!"); +const u8 gText_StatChangesGone[] = _("All stat changes were\neliminated!"); +const u8 gText_CoinsScattered[] = _("Coins scattered everywhere!"); +const u8 gText_TooWeakForSubstitute[] = _("It was too weak to make\na SUBSTITUTE!"); +const u8 gText_SharedPain[] = _("The battlers shared\ntheir pain!"); +const u8 gText_BellChimed[] = _("A bell chimed!"); +const u8 gText_FaintInThree[] = _("All affected POKéMON will\nfaint in three turns!"); +const u8 gText_NoPPLeft[] = _("There’s no PP left for\nthis move!\p"); +const u8 gText_ButNoPPLeft[] = _("But there was no PP left\nfor the move!"); +const u8 gText_PkmnIgnoresAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!"); +const u8 gText_PkmnIgnoredOrders[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!"); +const u8 gText_PkmnBeganToNap[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!"); +const u8 gText_PkmnLoafing[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!"); +const u8 gText_PkmnWontObey[] = _("{B_ATK_NAME_WITH_PREFIX} won’t\nobey!"); +const u8 gText_PkmnTurnedAway[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!"); +const u8 gText_PkmnPretendNotNotice[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!"); +const u8 gText_EnemyAboutToSwitchPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?"); +const u8 gText_PkmnLearnedMove2[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!"); +const u8 gText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); +const u8 gText_CreptCloser[] = _("{B_PLAYER_NAME} crept closer to\n{B_OPPONENT_MON1_NAME}!"); +const u8 gText_CantGetCloser[] = _("{B_PLAYER_NAME} can’t get any closer!"); +const u8 gText_PkmnWatchingCarefully[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!"); +const u8 gText_PkmnCuriousAboutX[] = _("{B_OPPONENT_MON1_NAME} is curious about\nthe {B_BUFF1}!"); +const u8 gText_PkmnEnthralledByX[] = _("{B_OPPONENT_MON1_NAME} is enthralled by\nthe {B_BUFF1}!"); +const u8 gText_PkmnIgnoredX[] = _("{B_OPPONENT_MON1_NAME} completely ignored\nthe {B_BUFF1}!"); +const u8 gText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEBLOCK}\nat the {B_OPPONENT_MON1_NAME}!"); +const u8 gText_OutOfSafariBalls[] = _("{PLAY_SE 0x0049}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p"); +const u8 gText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p"); +const u8 gText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); +const u8 gText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); +const u8 gText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); +const u8 gText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); +const u8 gText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); +const u8 gText_LinkTrainerWantsToBattle[] = _("{B_20}\nwants to battle!"); +const u8 gText_TwoLinkTrainersWantToBattle[] = _("{B_20} and {B_21}\nwant to battle!"); +const u8 gText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!"); +const u8 gText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); +const u8 gText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); +const u8 gText_LinkTrainerSentOutPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME}!"); +const u8 gText_LinkTrainerSentOutTwoPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); +const u8 gText_TwoLinkTrainersSentOutPkmn[] = _("{B_20} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_21} sent out {B_LINK_OPPONENT_MON2_NAME}!"); +const u8 gText_LinkTrainerSentOutPkmn2[] = _("{B_20} sent out\n{B_BUFF1}!"); +const u8 gText_LinkTrainerMultiSentOutPkmn[] = _("{B_22} sent out\n{B_BUFF1}!"); +const u8 gText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!"); +const u8 gText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!"); +const u8 gText_GoPkmn2[] = _("Go! {B_BUFF1}!"); +const u8 gText_DoItPkmn[] = _("Do it! {B_BUFF1}!"); +const u8 gText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!"); +const u8 gText_YourFoesWeakGetEmPkmn[] = _("Your foe’s weak!\nGet ’em, {B_BUFF1}!"); +const u8 gText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_1F} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!"); +const u8 gText_PkmnThatsEnough[] = _("{B_BUFF1}, that’s enough!\nCome back!"); +const u8 gText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); +const u8 gText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); +const u8 gText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); +const u8 gText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); +const u8 gText_LinkTrainer1WithdrewPkmn[] = _("{B_20} withdrew\n{B_BUFF1}!"); +const u8 gText_LinkTrainer2WithdrewPkmn[] = _("{B_22} withdrew\n{B_BUFF1}!"); +const u8 gText_WildPkmnPrefix[] = _("Wild "); +const u8 gText_FoePkmnPrefix[] = _("Foe "); +const u8 gText_EmptyString8[] = _( ""); +const u8 gText_FoePkmnPrefix2[] = _("Foe"); +const u8 gText_AllyPkmnPrefix[] = _("Ally"); +const u8 gText_FoePkmnPrefix3[] = _("Foe"); +const u8 gText_AllyPkmnPrefix2[] = _("Ally"); +const u8 gText_FoePkmnPrefix4[] = _("Foe"); +const u8 gText_AllyPkmnPrefix3[] = _("Ally"); +const u8 gText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); +const u8 gText_ExclamationMark[] = _("!"); +const u8 gText_ExclamationMark2[] = _("!"); +const u8 gText_ExclamationMark3[] = _("!"); +const u8 gText_ExclamationMark4[] = _("!"); +const u8 gText_ExclamationMark5[] = _("!"); +const u8 gText_HP2[] = _("HP"); +const u8 gText_Attack2[] = _("ATTACK"); +const u8 gText_Defense2[] = _("DEFENSE"); +const u8 gText_Speed[] = _("SPEED"); +const u8 gText_SpAtk2[] = _("SP. ATK"); +const u8 gText_SpDef2[] = _("SP. DEF"); +const u8 gText_Accuracy[] = _("accuracy"); +const u8 gText_Evasiveness[] = _("evasiveness"); + +const u8 * const gStatNamesTable[] = +{ + gText_HP2, gText_Attack2, gText_Defense2, + gText_Speed, gText_SpAtk2, gText_SpDef2, + gText_Accuracy, gText_Evasiveness +}; + +const u8 gText_PokeblockWasTooSpicy[] = _("was too spicy!"); +const u8 gText_PokeblockWasTooDry[] = _("was too dry!"); +const u8 gText_PokeblockWasTooSweet[] = _("was too sweet!"); +const u8 gText_PokeblockWasTooBitter[] = _("was too bitter!"); +const u8 gText_PokeblockWasTooSour[] = _("was too sour!"); + +const u8 * const gPokeblockWasTooXStringTable[] = +{ + gText_PokeblockWasTooSpicy, gText_PokeblockWasTooDry, + gText_PokeblockWasTooSweet, gText_PokeblockWasTooBitter, + gText_PokeblockWasTooSour +}; + +const u8 gText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); +const u8 gText_WallyUsedItem[] = _("WALLY used\n{B_LAST_ITEM}!"); +const u8 gText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); +const u8 gText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); +const u8 gText_DontBeAThief[] = _("Don’t be a thief!"); +const u8 gText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can’t be caught!"); +const u8 gText_YouMissedPkmn[] = _("You missed the POKéMON!"); +const u8 gText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); +const u8 gText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); +const u8 gText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); +const u8 gText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); +const u8 gText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p"); +const u8 gText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}"); +const u8 gText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); +const u8 gText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); +const u8 gText_Someones[] = _("someone’s"); +const u8 gText_Lanettes[] = _("LANETTE’s"); +const u8 gText_PkmnDataAddedToDex[] = _("{B_OPPONENT_MON1_NAME}’s data was\nadded to the POKéDEX.\p"); +const u8 gText_ItIsRaining[] = _("It is raining."); +const u8 gText_SandstormIsRaging[] = _("A sandstorm is raging."); +const u8 gText_BoxIsFull[] = _("The BOX is full!\nYou can’t catch any more!\p"); +const u8 gText_EnigmaBerry[] = _("ENIGMA BERRY"); +const u8 gText_BerrySuffix[] = _(" BERRY"); +const u8 gText_PkmnsItemCuredParalysis[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured paralysis!"); +const u8 gText_PkmnsItemCuredPoison[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured poison!"); +const u8 gText_PkmnsItemHealedBurn[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nhealed its burn!"); +const u8 gText_PkmnsItemDefrostedIt[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ndefrosted it!"); +const u8 gText_PkmnsItemWokeIt[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nwoke it from its sleep!"); +const u8 gText_PkmnsItemSnappedOut[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nsnapped it out of confusion!"); +const u8 gText_PkmnsItemCuredProblem[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); +const u8 gText_PkmnsItemNormalizedStatus[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nnormalized its status!"); +const u8 gText_PkmnsItemRestoredHealth[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored health!"); +const u8 gText_PkmnsItemRestoredPP[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored {B_BUFF1}’s PP!"); +const u8 gText_PkmnsItemRestoredStatus[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its status!"); +const u8 gText_PkmnsItemRestoredHPALittle[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its HP a little!"); +const u8 gText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p"); +const u8 gText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); +const u8 gText_EmptyString3[] = _(""); +const u8 gText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I’ll do my best!"); + +// early declaration of strings +const u8 gText_PkmnIncapableOfPower[]; +const u8 gText_GlintAppearsInEye[]; +const u8 gText_PkmnGettingIntoPosition[]; +const u8 gText_PkmnBeganGrowlingDeeply[]; +const u8 gText_PkmnEagerForMore[]; +const u8 gText_DefeatedOpponentByReferee[]; +const u8 gText_LostToOpponentByReferee[]; +const u8 gText_TiedOpponentByReferee[]; +const u8 gText_QuestionForfeitMatch[]; +const u8 gText_ForfeitedMatch[]; +const u8 gText_Trainer1WinText[]; +const u8 gText_Trainer2WinText[]; +const u8 gText_TwoInGameTrainersDefeated[]; +const u8 gText_Trainer2LoseText[]; + +const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] = +{ + gText_Trainer1LoseText, + gText_PkmnGainedEXP, + gText_PkmnGrewToLv, + gText_PkmnLearnedMove, + gText_TryToLearnMove1, + gText_TryToLearnMove2, + gText_TryToLearnMove3, + gText_PkmnForgotMove, + gText_StopLearningMove, + gText_DidNotLearnMove, + gText_PkmnLearnedMove2, + gText_AttackMissed, + gText_PkmnProtectedItself, + gText_StatsWontIncrease2, + gText_AvoidedDamage, + gText_ItDoesntAffect, + gText_PkmnFainted, + gText_PkmnFainted2, + gText_PlayerGotMoney, + gText_PlayerWhiteout, + gText_PlayerWhiteout2, + gText_PreventsEscape, + gText_HitXTimes, + gText_PkmnFellAsleep, + gText_PkmnMadeSleep, + gText_PkmnAlreadyAsleep, + gText_PkmnAlreadyAsleep2, + gText_PkmnWasntAffected, + gText_PkmnWasPoisoned, + gText_PkmnPoisonedBy, + gText_PkmnHurtByPoison, + gText_PkmnAlreadyPoisoned, + gText_PkmnBadlyPoisoned, + gText_PkmnEnergyDrained, + gText_PkmnWasBurned, + gText_PkmnBurnedBy, + gText_PkmnHurtByBurn, + gText_PkmnWasFrozen, + gText_PkmnFrozenBy, + gText_PkmnIsFrozen, + gText_PkmnWasDefrosted, + gText_PkmnWasDefrosted2, + gText_PkmnWasDefrostedBy, + gText_PkmnWasParalyzed, + gText_PkmnWasParalyzedBy, + gText_PkmnIsParalyzed, + gText_PkmnIsAlreadyParalyzed, + gText_PkmnHealedParalysis, + gText_PkmnDreamEaten, + gText_StatsWontIncrease, + gText_StatsWontDecrease, + gText_TeamStoppedWorking, + gText_FoeStoppedWorking, + gText_PkmnIsConfused, + gText_PkmnHealedConfusion, + gText_PkmnWasConfused, + gText_PkmnAlreadyConfused, + gText_PkmnFellInLove, + gText_PkmnInLove, + gText_PkmnImmobilizedByLove, + gText_PkmnBlownAway, + gText_PkmnChangedType, + gText_PkmnFlinched, + gText_PkmnRegainedHealth, + gText_PkmnHPFull, + gText_PkmnRaisedSpDef, + gText_PkmnRaisedDef, + gText_PkmnCoveredByVeil, + gText_PkmnUsedSafeguard, + gText_PkmnSafeguardExpired, + gText_PkmnWentToSleep, + gText_PkmnSleptHealthy, + gText_PkmnWhippedWhirlwind, + gText_PkmnTookSunlight, + gText_PkmnLoweredHead, + gText_PkmnIsGlowing, + gText_PkmnFlewHigh, + gText_PkmnDugHole, + gText_PkmnSqueezedByBind, + gText_PkmnTrappedInVortex, + gText_PkmnWrappedBy, + gText_PkmnClamped, + gText_PkmnHurtBy, + gText_PkmnFreedFrom, + gText_PkmnCrashed, + gText_PkmnShroudedInMist, + gText_PkmnProtectedByMist, + gText_PkmnGettingPumped, + gText_PkmnHitWithRecoil, + gText_PkmnProtectedItself2, + gText_PkmnBuffetedBySandstorm, + gText_PkmnPeltedByHail, + gText_PkmnSeeded, + gText_PkmnEvadedAttack, + gText_PkmnSappedByLeechSeed, + gText_PkmnFastAsleep, + gText_PkmnWokeUp, + gText_PkmnUproarKeptAwake, + gText_PkmnWokeUpInUproar, + gText_PkmnCausedUproar, + gText_PkmnMakingUproar, + gText_PkmnCalmedDown, + gText_PkmnCantSleepInUproar, + gText_PkmnStockpiled, + gText_PkmnCantStockpile, + gText_PkmnCantSleepInUproar2, + gText_UproarKeptPkmnAwake, + gText_PkmnStayedAwakeUsing, + gText_PkmnStoringEnergy, + gText_PkmnUnleashedEnergy, + gText_PkmnFatigueConfusion, + gText_PkmnPickedUpItem, + gText_PkmnUnaffected, + gText_PkmnTransformedInto, + gText_PkmnMadeSubstitute, + gText_PkmnHasSubstitute, + gText_SubstituteDamaged, + gText_PkmnSubstituteFaded, + gText_PkmnMustRecharge, + gText_PkmnRageBuilding, + gText_PkmnMoveWasDisabled, + gText_PkmnMoveIsDisabled, + gText_PkmnMoveDisabledNoMore, + gText_PkmnGotEncore, + gText_PkmnEncoreEnded, + gText_PkmnTookAim, + gText_PkmnSketchedMove, + gText_PkmnTryingToTakeFoe, + gText_PkmnTookFoe, + gText_PkmnReducedPP, + gText_PkmnStoleItem, + gText_PkmnCantEscape, + gText_PkmnFellIntoNightmare, + gText_PkmnLockedInNightmare, + gText_PkmnLaidCurse, + gText_PkmnAfflictedByCurse, + gText_SpikesScattered, + gText_PkmnHurtBySpikes, + gText_PkmnIdentified, + gText_PkmnPerishCountFell, + gText_PkmnBracedItself, + gText_PkmnEnduredHit, + gText_MagnitudeStrength, + gText_PkmnCutHPMaxedAttack, + gText_PkmnCopiedStatChanges, + gText_PkmnGotFree, + gText_PkmnShedLeechSeed, + gText_PkmnBlewAwaySpikes, + gText_PkmnFledFromBattle, + gText_PkmnForesawAttack, + gText_PkmnTookAttack, + gText_PkmnAttack, + gText_PkmnCenterAttention, + gText_PkmnChargingPower, + gText_NaturePowerTurnedInto, + gText_PkmnStatusNormal, + gText_PkmnHasNoMovesLeft, + gText_PkmnSubjectedToTorment, + gText_PkmnCantUseMoveTorment, + gText_PkmnTighteningFocus, + gText_PkmnFellForTaunt, + gText_PkmnCantUseMoveTaunt, + gText_PkmnReadyToHelp, + gText_PkmnSwitchedItems, + gText_PkmnCopiedFoe, + gText_PkmnMadeWish, + gText_PkmnWishCameTrue, + gText_PkmnPlantedRoots, + gText_PkmnAbsorbedNutrients, + gText_PkmnAnchoredItself, + gText_PkmnWasMadeDrowsy, + gText_PkmnKnockedOff, + gText_PkmnSwappedAbilities, + gText_PkmnSealedOpponentMove, + gText_PkmnCantUseMoveSealed, + gText_PkmnWantsGrudge, + gText_PkmnLostPPGrudge, + gText_PkmnShroudedItself, + gText_PkmnMoveBounced, + gText_PkmnWaitsForTarget, + gText_PkmnSnatchedMove, + gText_PkmnMadeItRain, + gText_PkmnRaisedSpeed, + gText_PkmnProtectedBy, + gText_PkmnPreventsUsage, + gText_PkmnRestoredHPUsing, + gText_PkmnChangedTypeWith, + gText_PkmnPreventsParalysisWith, + gText_PkmnPreventsRomanceWith, + gText_PkmnPreventsPoisoningWith, + gText_PkmnPreventsConfusionWith, + gText_PkmnRaisedFirePowerWith, + gText_PkmnAnchorsItselfWith, + gText_PkmnCutsAttackWith, + gText_PkmnPreventsStatLossWith, + gText_PkmnHurtsWith, + gText_PkmnTraced, + gText_StatSharply, + gText_StatRose, + gText_StatHarshly, + gText_StatFell, + gText_PkmnsStatChanged, + gText_PkmnsStatChanged2, + gText_PkmnsStatChanged3, + gText_PkmnsStatChanged4, + gText_CriticalHit, + gText_OneHitKO, + gText_123Poof, + gText_AndEllipsis, + gText_NotVeryEffective, + gText_SuperEffective, + gText_GotAwaySafely, + gText_WildPkmnFled, + gText_NoRunningFromTrainers, + gText_CantEscape, + gText_DontLeaveBirch, + gText_ButNothingHappened, + gText_ButItFailed, + gText_ItHurtConfusion, + gText_MirrorMoveFailed, + gText_StartedToRain, + gText_DownpourStarted, + gText_RainContinues, + gText_DownpourContinues, + gText_RainStopped, + gText_SandstormBrewed, + gText_SandstormRages, + gText_SandstormSubsided, + gText_SunlightGotBright, + gText_SunlightStrong, + gText_SunlightFaded, + gText_StartedHail, + gText_HailContinues, + gText_HailStopped, + gText_FailedToSpitUp, + gText_FailedToSwallow, + gText_WindBecameHeatWave, + gText_StatChangesGone, + gText_CoinsScattered, + gText_TooWeakForSubstitute, + gText_SharedPain, + gText_BellChimed, + gText_FaintInThree, + gText_NoPPLeft, + gText_ButNoPPLeft, + gText_PlayerUsedItem, + gText_WallyUsedItem, + gText_TrainerBlockedBall, + gText_DontBeAThief, + gText_ItDodgedBall, + gText_YouMissedPkmn, + gText_PkmnBrokeFree, + gText_ItAppearedCaught, + gText_AarghAlmostHadIt, + gText_ShootSoClose, + gText_GotchaPkmnCaught, + gText_GotchaPkmnCaught2, + gText_GiveNicknameCaptured, + gText_PkmnSentToPC, + gText_PkmnDataAddedToDex, + gText_ItIsRaining, + gText_SandstormIsRaging, + gText_CantEscape2, + gText_PkmnIgnoresAsleep, + gText_PkmnIgnoredOrders, + gText_PkmnBeganToNap, + gText_PkmnLoafing, + gText_PkmnWontObey, + gText_PkmnTurnedAway, + gText_PkmnPretendNotNotice, + gText_EnemyAboutToSwitchPkmn, + gText_CreptCloser, + gText_CantGetCloser, + gText_PkmnWatchingCarefully, + gText_PkmnCuriousAboutX, + gText_PkmnEnthralledByX, + gText_PkmnIgnoredX, + gText_ThrewPokeblockAtPkmn, + gText_OutOfSafariBalls, + gText_PkmnsItemCuredParalysis, + gText_PkmnsItemCuredPoison, + gText_PkmnsItemHealedBurn, + gText_PkmnsItemDefrostedIt, + gText_PkmnsItemWokeIt, + gText_PkmnsItemSnappedOut, + gText_PkmnsItemCuredProblem, + gText_PkmnsItemRestoredHealth, + gText_PkmnsItemRestoredPP, + gText_PkmnsItemRestoredStatus, + gText_PkmnsItemRestoredHPALittle, + gText_ItemAllowsOnlyYMove, + gText_PkmnHungOnWithX, + gText_EmptyString3, + gText_PkmnsXPreventsBurns, + gText_PkmnsXBlocksY, + gText_PkmnsXRestoredHPALittle2, + gText_PkmnsXWhippedUpSandstorm, + gText_PkmnsXPreventsYLoss, + gText_PkmnsXInfatuatedY, + gText_PkmnsXMadeYIneffective, + gText_PkmnsXCuredYProblem, + gText_ItSuckedLiquidOoze, + gText_PkmnTransformed, + gText_ElectricityWeakened, + gText_FireWeakened, + gText_PkmnHidUnderwater, + gText_PkmnSprangUp, + gText_HMMovesCantBeForgotten, + gText_XFoundOneY, + gText_PlayerDefeatedLinkTrainerTrainer1, + gText_SoothingAroma, + gText_ItemsCantBeUsedNow, + gText_ForXCommaYZ, + gText_UsingXTheYOfZN, + gText_PkmnUsedXToGetPumped, + gText_PkmnsXMadeYUseless, + gText_PkmnTrappedBySandTomb, + gText_EmptyString4, + gText_ABoosted, + gText_PkmnsXIntensifiedSun, + gText_PkmnMakesGroundMiss, + gText_YouThrowABallNowRight, + gText_PkmnsXTookAttack, + gText_PkmnChoseXAsDestiny, + gText_PkmnLostFocus, + gText_UseNextPkmn, + gText_PkmnFledUsingIts, + gText_PkmnFledUsing, + gText_PkmnWasDraggedOut, + gText_PreventedFromWorking, + gText_PkmnsItemNormalizedStatus, + gText_Trainer1UsedItem, + gText_BoxIsFull, + gText_PkmnAvoidedAttack, + gText_PkmnsXMadeItIneffective, + gText_PkmnsXPreventsFlinching, + gText_PkmnAlreadyHasBurn, + gText_StatsWontDecrease2, + gText_PkmnsXBlocksY2, + gText_PkmnsXWoreOff, + gText_PkmnRaisedDefALittle, + gText_PkmnRaisedSpDefALittle, + gText_TheWallShattered, + gText_PkmnsXPreventsYsZ, + gText_PkmnsXCuredItsYProblem, + gText_PkmnCantEscape2, + gText_PkmnObtainedX, + gText_PkmnObtainedX2, + gText_PkmnObtainedXYObtainedZ, + gText_ButNoEffect, + gText_PkmnsXHadNoEffectOnY, + gText_TwoInGameTrainersDefeated, + gText_Trainer2LoseText, + gText_PkmnIncapableOfPower, + gText_GlintAppearsInEye, + gText_PkmnGettingIntoPosition, + gText_PkmnBeganGrowlingDeeply, + gText_PkmnEagerForMore, + gText_DefeatedOpponentByReferee, + gText_LostToOpponentByReferee, + gText_TiedOpponentByReferee, + gText_QuestionForfeitMatch, + gText_ForfeitedMatch, + gText_PkmnTransferredSomeonesPC, + gText_PkmnTransferredLanettesPC, + gText_PkmnBoxSomeonesPCFull, + gText_PkmnBoxLanettesPCFull, + gText_Trainer1WinText, + gText_Trainer2WinText, +}; + +const u16 gMissStringIds[] = +{ + STRINGID_ATTACKMISSED, STRINGID_PKMNPROTECTEDITSELF, + STRINGID_PKMNAVOIDEDATTACK, STRINGID_AVOIDEDDAMAGE, + STRINGID_PKMNMAKESGROUNDMISS +}; + +// todo: change values to string Ids +const u16 gUnknown_085CC83E[] = +{ + 0x00e2, 0x00e3, 0x0021, + 0x0112, 0x0165, 0x00e8, 0x00e9, 0x00e5, 0x00ed, 0x00f0, 0x00f3, + 0x00ee, 0x00f4, 0x0066, 0x0067, 0x00ef, 0x00f5, 0x00ea, 0x00eb, + 0x00ec, 0x0065, 0x0098, 0x00e5, 0x00e5, 0x004e, 0x0160, 0x004d, + 0x0161, 0x004f, 0x0068, 0x0069, 0x001b, 0x006a, 0x0139, 0x0052, + 0x0053, 0x0070, 0x0071, 0x0073, 0x0074, 0x006c, 0x006e, 0x00f7, + 0x004c, 0x0075, 0x0076, 0x0077, 0x00d5, 0x00d6, 0x003d, 0x0130, + 0x0145, 0x0146, 0x00d7, 0x00d8, 0x003e, 0x0130, 0x0054, 0x0055, + 0x0056, 0x0057, 0x0058, 0x0059, 0x013d, 0x013e, 0x005a, 0x005c, + 0x005b, 0x005d, 0x005b, 0x0148, 0x0061, 0x00e5, 0x0063, 0x00e5, + 0x007d, 0x00e5, 0x007e, 0x00fb, 0x0028, 0x0029, 0x0037, 0x0038, + 0x0023, 0x0024, 0x002e, 0x002f, 0x0031, 0x0032, 0x0035, 0x0036, + 0x0017, 0x007c, 0x0045, 0x0136, 0x002d, 0x0139, 0x013b, 0x013c, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0142, 0x00a1, 0x014f, 0x0107, + 0x0108, 0x0109, 0x010a, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, + 0x0110, 0x0110, 0x0110, 0x0111, 0x0110, 0x0110, 0x0110, 0x00f1, + 0x0110, 0x0110, 0x0110, 0x0116, 0x0117, 0x0118, 0x0119, 0x016d, + 0x011b, 0x011c, 0x011e, 0x011f, 0x0120, 0x0128, 0x0123, 0x0126, + 0x0125, 0x0124, 0x0127, 0x0129, 0x0156, 0x0131, 0x0163, 0x016a, + 0x00c7, 0x0163, 0x016a, 0x00c9, 0x0163, 0x016a, 0x0166, 0x0167, + 0x0168, 0x00cb, 0x0137, 0x0177, 0x0178, 0x0179, 0x017a, +}; + +const u16 gTrappingMoves[] = +{ + MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xFFFF +}; + +const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); +const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p"); +const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); +const u8 gText_EllipsisQuestionMark[] = _("……?\p"); +const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_SCR_ACTIVE_NAME_WITH_PREFIX} do?"); +const u8 gText_WhatWillPkmnDo2[] = _("What will\n{B_PLAYER_NAME} do?"); +const u8 gText_WhatWillWallyDo[] = _("What will\nWALLY do?"); +const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); +const u8 gText_BattleMenu[] = _("FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); +const u8 gText_SafariZoneMenu[] = _("BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN"); +const u8 gText_MoveInterfacePP[] = _("PP "); +const u8 gText_MoveInterfaceType[] = _("TYPE/"); +const u8 gText_MoveInterfacePpType[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/"); +const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}"); +const u8 gText_WhichMoveToForget4[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?"); +const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo"); +const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?"); +const u8 gText_BattleSwitchWhich2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}"); +const u8 gText_BattleSwitchWhich3[] = _("{UP_ARROW}"); +const u8 gText_BattleSwitchWhich4[] = _("{ESCAPE 4}"); +const u8 gText_BattleSwitchWhich5[] = _("-"); + +const u8 gText_HP[] = _("HP"); +const u8 gText_Attack[] = _("ATTACK"); +const u8 gText_Defense[] = _("DEFENSE"); +const u8 gText_SpAtk[] = _("SP. ATK"); +const u8 gText_SpDef[] = _("SP. DEF"); + +const u8 * const gStatNamesTable2[] = +{ + gText_HP, gText_SpAtk, gText_Attack, + gText_SpDef, gText_Defense, gText_Speed +}; + +const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GREY}SAFARI BALLS"); +const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GREY}Left: $" "{HIGHLIGHT DARK_GREY}");const u8 gText_Sleep[] = _( "sleep");const u8 gText_Poison[] = _( "poison");const u8 gText_Burn[] = _( "burn");const u8 gText_Paralysis[] = _( "paralysis");const u8 gText_Ice[] = _( "ice");const u8 gText_Confusion[] = _( "confusion");const u8 gText_Love[] = _( "love"); +const u8 gText_SpaceAndSpace[] = _(" and "); +const u8 gText_CommaSpace[] = _(", "); +const u8 gText_Space2[] = _(" "); +const u8 gText_ScrollTextUp[] = _("\l"); +const u8 gText_NewLine[] = _("\n"); +const u8 gText_Are[] = _("are"); +const u8 gText_Are2[] = _("are"); +const u8 gText_BadEgg[] = _("Bad EGG"); +const u8 gText_BattleWallyName[] = _("WALLY"); +const u8 gText_Win[] = _("{HIGHLIGHT TRANSPARENT}Win"); +const u8 gText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Loss"); +const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}Draw"); +const u8 gText_SpaceIs[] = _(" is"); +const u8 gText_ApostropheS[] = _("’s"); + +const u8 gText_UnknownMoveTypes[][17] = +{ + _("a NORMAL move"), + _("a FIGHTING move"), + _("a FLYING move"), + _("a POISON move"), + _("a GROUND move"), + _("a ROCK move"), + _("a BUG move"), + _("a GHOST move"), + _("a STEEL move"), + _("a ??? move"), + _("a FIRE move"), + _("a WATER move"), + _("a GRASS move"), + _("an ELECTRIC move"), + _("a PSYCHIC move"), + _("an ICE move"), + _("a DRAGON move"), + _("a DARK move") +}; + +const u8 gText_BattleTourney[] = _("BATTLE TOURNEY"); +const u8 gText_Round1[] = _("Round 1"); +const u8 gText_Round2[] = _("Round 2"); +const u8 gText_Semifinal[] = _("Semifinal"); +const u8 gText_Final[] = _("Final"); + +const u8 * const gRoundsStringTable[] = +{ + gText_Round1, + gText_Round2, + gText_Semifinal, + gText_Final +}; + +const u8 gText_TheGreatNewHope[] = _("The great new hope!\p"); +const u8 gText_WillChampinshipDreamComeTrue[] = _("Will the championship dream come true?!\p"); +const u8 gText_AFormerChampion[] = _("A former CHAMPION!\p"); +const u8 gText_ThePreviousChampion[] = _("The previous CHAMPION!\p"); +const u8 gText_TheUnbeatenChampion[] = _("The unbeaten CHAMPION!\p"); + +const u8 gText_PlayerMon1Name[] = _("{B_PLAYER_MON1_NAME}"); +const u8 gText_Vs[] = _("VS"); +const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}"); +const u8 gText_Mind[] = _("Mind"); +const u8 gText_Skill[] = _("Skill"); +const u8 gText_Body[] = _("Body"); +const u8 gText_Judgement[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}"); +const u8 gText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_OPPONENT_MON2_NAME}!"); +const u8 gText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_BUFF1}!"); +const u8 gText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwant to battle!\p"); +const u8 gText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_CLASS} {B_PARTNER_NAME} sent\nout {B_PLAYER_MON2_NAME}!\lGo, {B_PLAYER_MON1_NAME}!"); +const u8 gText_TwoInGameTrainersDefeated[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwere defeated!\p"); +const u8 gText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}"); +const u8 gText_PkmnIncapableOfPower[] = _("{B_ATK_NAME_WITH_PREFIX} appears incapable\nof using its power!"); +const u8 gText_GlintAppearsInEye[] = _("A glint appears in\n{B_ACTIVE_NAME_WITH_PREFIX}’s eyes!"); +const u8 gText_PkmnGettingIntoPosition[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!"); +const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_ACTIVE_NAME_WITH_PREFIX} began growling deeply!"); +const u8 gText_PkmnEagerForMore[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is eager for more!"); + +const u16 gUnknown_085CCF0A[] = +{ + 0x016E, 0x016F, 0x0170, 0x0171 +}; + +const u8 gText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!"); +const u8 gText_RefThatsIt[] = _("REFEREE: That’s it! We will now go to\njudging to determine the winner!"); +const u8 gText_RefJudgeMind[] = _("REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p"); +const u8 gText_RefJudgeSkill[] = _("REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p"); +const u8 gText_RefJudgeBody[] = _("REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p"); +const u8 gText_RefJudgement1[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}’s {B_PLAYER_MON1_NAME}!\p"); +const u8 gText_RefJudgement2[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}’s {B_OPPONENT_MON1_NAME}!\p"); +const u8 gText_RefJudgement3[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p"); +const u8 gText_DefeatedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} defeated the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!"); +const u8 gText_LostToOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} lost to the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!"); +const u8 gText_TiedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} tied the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!"); +const u8 gText_RefCommenceBattle[] = _("REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}!\nCommence battling!"); + +const u8 * const gRefereeStringsTable[] = +{ + gText_RefIfNothingIsDecided, + gText_RefThatsIt, + gText_RefJudgeMind, + gText_RefJudgeSkill, + gText_RefJudgeBody, + gText_RefJudgement1, + gText_RefJudgement2, + gText_RefJudgement3, + gText_RefCommenceBattle, +}; + +const u8 gText_QuestionForfeitMatch[] = _("Would you like to forfeit the match\nand quit now?"); +const u8 gText_ForfeitedMatch[] = _("{B_PLAYER_NAME} forfeited the match!"); +const u8 gText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}"); +const u8 gText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}"); +const u8 gText_Trainer1Fled[] = _( "{PLAY_SE 0x0011}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); +const u8 gText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); +const u8 gText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); +const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?"); +const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}’s battle result was recorded\non the FRONTIER PASS."); +const u8 gText_LinkTrainerWantsToBattlePause[] = _("{B_20}\nwants to battle!{PAUSE 49}"); +const u8 gText_TwoLinkTrainersWantToBattlePause[] = _("{B_20} and {B_21}\nwant to battle!{PAUSE 49}"); + +const u16 gUnknown_085CD336[] = +{ + 0x000e, 0x0046, 0x004a, 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, + 0x0079, 0x007b, 0x007d, 0x0094, 0x0096, 0x0097, 0x009b, 0x009c, + 0x009f, 0x00a4, 0x00aa, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x00cd, + 0x00cf, 0x00d6, 0x00ed, 0x00f4, 0x00f5, 0x010a, 0x010f, 0x0112, + 0x0113, 0x011a, 0x0125, 0x0136, 0x013c, 0x0140, 0x0149, 0x014a, + 0x014e, 0x0154, 0x0000, 0x0064, 0x0069, 0x0075, 0x0085, 0x00af, + 0x010d, 0x0153, 0x0000, 0x0060, 0x0061, 0x0066, 0x0068, 0x008c, + 0x0090, 0x00a5, 0x00b8, 0x010c, 0x0111, 0x0118, 0x0119, 0x0129, + 0x012a, 0x012c, 0x0139, 0x015a, 0x015b, 0x0000, 0x0001, 0x000a, + 0x000b, 0x0011, 0x0013, 0x0014, 0x0015, 0x001e, 0x0023, 0x0025, + 0x0027, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0040, 0x0047, + 0x0051, 0x0059, 0x005a, 0x005b, 0x005c, 0x0067, 0x0076, 0x007a, + 0x0080, 0x0084, 0x008b, 0x0091, 0x00a3, 0x00a9, 0x00ab, 0x00ae, + 0x00c1, 0x00cc, 0x00d5, 0x00f9, 0x00fd, 0x00ff, 0x0100, 0x0103, + 0x0104, 0x0110, 0x011b, 0x0141, 0x0157, 0x0000, +}; + +const u8 gUnknown_085CD422[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0}; + +const u16 gUnknown_085CD42C[] = +{ + 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101, + 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000, + 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102, + 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100, + 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x01ff, + 0x0000, 0x0100, 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, + 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, 0x0600, 0x0000, +}; + +const u16 gUnknown_085CD54C[] = +{ + 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101, + 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000, + 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102, + 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100, + 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0100, 0x0f0e, 0x0000, + 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, + 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, + 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, + 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0111, 0x0100, 0x0000, 0x0201, + 0x0301, 0x0000 +}; + +const u16 * const gUnknown_085CD660[] = +{ + gUnknown_085CD42C, gUnknown_085CD54C +}; + +const u8 gUnknown_085CD668[] = {8, 4, 1, 0}; + +extern struct StringInfoBattle *gStringInfo; + +void BufferStringBattle(u16 stringID) +{ + s32 i; + const u8* stringPtr = NULL; + + gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]); + gLastUsedItem = gStringInfo->lastItem; + gLastUsedAbility = gStringInfo->lastAbility; + gBattleScripting.bank = gStringInfo->scrActive; + *(&gBattleStruct->field_52) = gStringInfo->unk1605E; + *(&gBattleStruct->hpScale) = gStringInfo->hpScale; + gStringBank = gStringInfo->StringBank; + *(&gBattleStruct->stringMoveType) = gStringInfo->moveType; + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + gAbilitiesPerBank[i] = gStringInfo->abilities[i]; + } + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) + { + gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i]; + gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i]; + gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i]; + } + + switch (stringID) + { + case STRINGID_INTROMSG: // first battle msg + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + if (gBattleTypeFlags & BATTLE_TYPE_x800000) + { + stringPtr = gText_TwoTrainersWantToBattle; + } + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + stringPtr = gText_TwoLinkTrainersWantToBattlePause; + else + stringPtr = gText_TwoLinkTrainersWantToBattle; + } + else + { + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = gText_Trainer1WantsToBattle; + else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + stringPtr = gText_LinkTrainerWantsToBattlePause; + else + stringPtr = gText_LinkTrainerWantsToBattle; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + stringPtr = gText_TwoTrainersWantToBattle; + else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + stringPtr = gText_TwoTrainersWantToBattle; + else + stringPtr = gText_Trainer1WantsToBattle; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + stringPtr = gText_WildPkmnAppeared2; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles + stringPtr = gText_TwoWildPkmnAppeared; + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + stringPtr = gText_WildPkmnAppearedPause; + else + stringPtr = gText_WildPkmnAppeared; + } + break; + case STRINGID_INTROSENDOUT: // poke first send-out + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + stringPtr = gText_InGamePartnerSentOutZGoN; + else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + stringPtr = gText_GoTwoPkmn; + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gText_LinkPartnerSentOutPkmnGoPkmn; + else + stringPtr = gText_GoTwoPkmn; + } + else + { + stringPtr = gText_GoPkmn; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + stringPtr = gText_TwoTrainersSentPkmn; + else if (gBattleTypeFlags & BATTLE_TYPE_x800000) + stringPtr = gText_TwoTrainersSentPkmn; + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gText_TwoLinkTrainersSentOutPkmn; + else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + stringPtr = gText_LinkTrainerSentOutTwoPkmn; + else + stringPtr = gText_Trainer1SentOutTwoPkmn; + } + else + { + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))) + stringPtr = gText_Trainer1SentOutPkmn; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = gText_Trainer1SentOutPkmn; + else + stringPtr = gText_LinkTrainerSentOutPkmn; + } + } + break; + case STRINGID_RETURNMON: // sending poke to ball msg + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + if (*(&gBattleStruct->hpScale) == 0) + stringPtr = gText_PkmnThatsEnough; + else if (*(&gBattleStruct->hpScale) == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gText_PkmnComeBack; + else if (*(&gBattleStruct->hpScale) == 2) + stringPtr = gText_PkmnOkComeBack; + else + stringPtr = gText_PkmnGoodComeBack; + } + else + { + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_800 || gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gText_LinkTrainer2WithdrewPkmn; + else + stringPtr = gText_LinkTrainer1WithdrewPkmn; + } + else + { + stringPtr = gText_Trainer1WithdrewPkmn; + } + } + break; + case STRINGID_SWITCHINMON: // switch-in msg + if (GetBankSide(gBattleScripting.bank) == SIDE_PLAYER) + { + if (*(&gBattleStruct->hpScale) == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gText_GoPkmn2; + else if (*(&gBattleStruct->hpScale) == 1) + stringPtr = gText_DoItPkmn; + else if (*(&gBattleStruct->hpScale) == 2) + stringPtr = gText_GoForItPkmn; + else + stringPtr = gText_YourFoesWeakGetEmPkmn; + } + else + { + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + if (gBattleTypeFlags & BATTLE_TYPE_x800000) + { + if (gBattleScripting.bank == 1) + stringPtr = gText_Trainer1SentOutPkmn2; + else + stringPtr = gText_Trainer2SentOutPkmn; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gText_LinkTrainerMultiSentOutPkmn; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = gText_Trainer1SentOutPkmn2; + else + stringPtr = gText_LinkTrainerSentOutPkmn2; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + if (gBattleScripting.bank == 1) + stringPtr = gText_Trainer1SentOutPkmn2; + else + stringPtr = gText_Trainer2SentOutPkmn; + } + else + { + stringPtr = gText_Trainer1SentOutPkmn2; + } + } + } + break; + case STRINGID_USEDMOVE: // pokemon used a move msg + sub_814F8F8(gBattleTextBuff1); + + if (gStringInfo->currentMove > LAST_MOVE_INDEX) + StringCopy(gBattleTextBuff2, gText_UnknownMoveTypes[*(&gBattleStruct->stringMoveType)]); + else + StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]); + + sub_814F950(gBattleTextBuff2); + stringPtr = gText_AttackerUsedX; + break; + case STRINGID_BATTLEEND: // battle end + if (gBattleTextBuff1[0] & BATTLE_OUTCOME_BIT_x80) + { + gBattleTextBuff1[0] &= ~(BATTLE_OUTCOME_BIT_x80); + if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW) + gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON); + + if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW) + stringPtr = gText_GotAwaySafely; + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gText_TwoWildFled; + else + stringPtr = gText_WildFled; + } + else + { + if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW) + gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON); + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + if (gBattleTypeFlags & BATTLE_TYPE_x800000) + stringPtr = gText_TwoInGameTrainersDefeated; + else + stringPtr = gText_TwoLinkTrainersDefeated; + break; + case BATTLE_LOST: + stringPtr = gText_PlayerLostToTwo; + break; + case BATTLE_DREW: + stringPtr = gText_PlayerBattledToDrawVsTwo; + break; + } + } + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gText_PlayerDefeatedLinkTrainerTrainer1; + break; + case BATTLE_LOST: + stringPtr = gText_PlayerLostAgainstTrainer1; + break; + case BATTLE_DREW: + stringPtr = gText_PlayerBattledToDrawTrainer1; + break; + } + } + else + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gText_PlayerDefeatedLinkTrainer; + break; + case BATTLE_LOST: + stringPtr = gText_PlayerLostAgainstLinkTrainer; + break; + case BATTLE_DREW: + stringPtr = gText_PlayerBattledToDrawLinkTrainer; + break; + } + } + } + break; + default: // load a string from the table + if (stringID >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER) + { + gDisplayedStringBattle[0] = EOS; + return; + } + else + { + stringPtr = gBattleStringsTable[stringID - BATTLESTRINGS_ID_ADDER]; + } + break; + } + + BattleStringExpandPlaceholdersToDisplayedString(stringPtr); +} diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e53292442b..17b0e2ff97 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -34,6 +34,7 @@ #include "pokemon_storage_system.h" #include "task.h" #include "naming_screen.h" +#include "battle_string_ids.h" // variables @@ -1375,7 +1376,7 @@ static void atk02_attackstring(void) return; if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED))) { - PrepareStringBattle(4, gBankAttacker); + PrepareStringBattle(STRINGID_USEDMOVE, gBankAttacker); gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED; } gBattlescriptCurrInstr++; @@ -2000,7 +2001,7 @@ static void atk0B_healthbarupdate(void) if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { - PrepareStringBattle(0x80, gActiveBank); + PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, gActiveBank); } else { @@ -2157,7 +2158,7 @@ static void atk0D_critmessage(void) { if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - PrepareStringBattle(0xD9, gBankAttacker); + PrepareStringBattle(STRINGID_CRITICALHIT, gBankAttacker); gBattleCommunication[MSG_DISPLAY] = 1; } gBattlescriptCurrInstr++; @@ -2229,22 +2230,22 @@ static void atk0F_resultmessage(void) switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED))) { case MOVESTATUS_SUPEREFFECTIVE: - stringId = 0xDE; + stringId = STRINGID_SUPEREFFECTIVE; break; case MOVESTATUS_NOTVERYEFFECTIVE: - stringId = 0xDD; + stringId = STRINGID_NOTVERYEFFECTIVE; break; case MOVESTATUS_ONEHITKO: - stringId = 0xDA; + stringId = STRINGID_ONEHITKO; break; case MOVESTATUS_ENDURED: - stringId = 0x99; + stringId = STRINGID_PKMNENDUREDHIT; break; case MOVESTATUS_FAILED: - stringId = 0xE5; + stringId = STRINGID_BUTITFAILED; break; case MOVESTATUS_NOTAFFECTED: - stringId = 0x1B; + stringId = STRINGID_ITDOESNTAFFECT; break; case MOVESTATUS_HUNGON: gLastUsedItem = gBattleMons[gBankTarget].item; @@ -2256,7 +2257,7 @@ static void atk0F_resultmessage(void) default: if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) { - stringId = 0x1B; + stringId = STRINGID_ITDOESNTAFFECT; } else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO) { @@ -2285,7 +2286,7 @@ static void atk0F_resultmessage(void) } else if (gBattleMoveFlags & MOVESTATUS_FAILED) { - stringId = 0xE5; + stringId = STRINGID_BUTITFAILED; } else { @@ -3592,7 +3593,7 @@ static void atk23_getexp(void) PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage) - PrepareStringBattle(0xD, gBattleStruct->expGetterBank); + PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank); MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species); } gBattleStruct->sentInPokes >>= 1; @@ -6181,7 +6182,7 @@ static void atk5A_yesnoboxlearnmove(void) u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MOVE1 + movePosition); if (IsHMMove2(moveId)) { - PrepareStringBattle(0x13F, gActiveBank); + PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBank); gBattleScripting.learnMoveState = 6; } else diff --git a/sym_ewram.txt b/sym_ewram.txt index b1572bf25a..0299dad2e6 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -238,26 +238,7 @@ gBattle_WIN1H: @ 2022E28 gBattle_WIN1V: @ 2022E2A .space 0x2 -gDisplayedStringBattle: @ 2022E2C - .space 0x12C - -gBattleTextBuff1: @ 2022F58 - .space 0x2 - -gUnknown_02022F5A: @ 2022F5A - .space 0x2 - -gUnknown_02022F5C: @ 2022F5C - .space 0xC - -gBattleTextBuff2: @ 2022F68 - .space 0x2 - -gUnknown_02022F6A: @ 2022F6A - .space 0xE - -gBattleTextBuff3: @ 2022F78 - .space 0x10 + .include "src/battle_message.o" gUnknown_02022F88: @ 2022F88 .space 0x64 From 7552caaadc3b5ec64bc4ea8c6927d6d452238730 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 7 Oct 2017 19:59:41 +0200 Subject: [PATCH 105/182] placeholders for battle strings are done --- asm/battle_message.s | 1954 -------------------------------------- asm/battle_setup.s | 12 +- asm/battle_tower.s | 12 +- asm/rom6.s | 2 +- charmap.txt | 6 +- include/battle_2.h | 2 +- include/battle_message.h | 106 +-- include/global.h | 37 +- src/battle_2.c | 2 +- src/battle_message.c | 745 ++++++++++++++- 10 files changed, 783 insertions(+), 2095 deletions(-) diff --git a/asm/battle_message.s b/asm/battle_message.s index 9afa6e3995..d78167a261 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -5,1960 +5,6 @@ .text - thumb_func_start BattleStringExpandPlaceholdersToDisplayedString -BattleStringExpandPlaceholdersToDisplayedString: @ 814E6F0 - push {lr} - ldr r1, =gDisplayedStringBattle - bl BattleStringExpandPlaceholders - pop {r1} - bx r1 - .pool - thumb_func_end BattleStringExpandPlaceholdersToDisplayedString - - thumb_func_start AppendStatusString -AppendStatusString: @ 814E700 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, =gUnknown_085CD422 - mov r0, sp - movs r2, 0x8 - bl memcpy - mov r2, sp - movs r3, 0 - b _0814E728 - .pool -_0814E71C: - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x7 - bhi _0814E730 -_0814E728: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814E71C -_0814E730: - ldr r5, [sp] - ldr r4, [sp, 0x4] - movs r3, 0 - ldr r2, =gStatusConditionStringsTable -_0814E738: - ldr r1, [r2] - ldr r0, [r1] - cmp r5, r0 - bne _0814E750 - ldr r0, [r1, 0x4] - cmp r4, r0 - bne _0814E750 - ldr r0, [r2, 0x4] - b _0814E75A - .pool -_0814E750: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x6 - bls _0814E738 - movs r0, 0 -_0814E75A: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end AppendStatusString - - thumb_func_start BattleStringExpandPlaceholders - BattleStringExpandPlaceholders: @ 814E764 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - mov r9, r0 - mov r8, r1 - movs r6, 0 - movs r4, 0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0814E794 - ldr r0, =gUnknown_0203C7B4 - ldrb r7, [r0] - b _0814E79C - .pool -_0814E794: - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 -_0814E79C: - mov r0, r9 - ldrb r1, [r0] - bl _0814F620 -_0814E7A4: - cmp r1, 0xFD - beq _0814E7AC - bl _0814F610 -_0814E7AC: - movs r1, 0x1 - add r9, r1 - mov r2, r9 - ldrb r0, [r2] - cmp r0, 0x34 - bls _0814E7BC - bl _0814F5C0 -_0814E7BC: - lsls r0, 2 - ldr r1, =_0814E7CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0814E7CC: - .4byte _0814E8A0 - .4byte _0814E8CE - .4byte _0814E90A - .4byte _0814E914 - .4byte _0814E920 - .4byte _0814E92C - .4byte _0814E960 - .4byte _0814E994 - .4byte _0814E9C8 - .4byte _0814E9FC - .4byte _0814EA38 - .4byte _0814EA78 - .4byte _0814EAB8 - .4byte _0814EAF8 - .4byte _0814EBB0 - .4byte _0814EC38 - .4byte _0814ECD4 - .4byte _0814ED70 - .4byte _0814EE0C - .4byte _0814EEA8 - .4byte _0814EF44 - .4byte _0814EF5C - .4byte _0814EF98 - .4byte _0814F080 - .4byte _0814F088 - .4byte _0814F098 - .4byte _0814F0A8 - .4byte _0814F0B8 - .4byte _0814F0D8 - .4byte _0814F164 - .4byte _0814F220 - .4byte _0814F230 - .4byte _0814F244 - .4byte _0814F258 - .4byte _0814F27C - .4byte _0814F298 - .4byte _0814F2C0 - .4byte _0814F300 - .4byte _0814F330 - .4byte _0814F3C4 - .4byte _0814F410 - .4byte _0814F418 - .4byte _0814F3E4 - .4byte _0814F3EC - .4byte _0814F43C - .4byte _0814F444 - .4byte _0814F468 - .4byte _0814F4B8 - .4byte _0814F508 - .4byte _0814F548 - .4byte _0814F594 - .4byte _0814F5B4 - .4byte _0814E8E4 -_0814E8A0: - ldr r5, =gBattleTextBuff1 - ldrb r0, [r5] - cmp r0, 0xFD - bne _0814E8B8 - ldr r4, =gStringVar1 - adds r0, r5, 0 - b _0814E8F0 - .pool -_0814E8B8: - adds r0, r5, 0 - bl AppendStatusString - adds r4, r0, 0 - cmp r4, 0 - beq _0814E8C8 - bl _0814F5C0 -_0814E8C8: - adds r4, r5, 0 - bl _0814F5C0 -_0814E8CE: - ldr r1, =gBattleTextBuff2 - ldrb r0, [r1] - cmp r0, 0xFD - bne _0814E904 - ldr r4, =gStringVar2 - b _0814E8EE - .pool -_0814E8E4: - ldr r1, =gBattleTextBuff3 - ldrb r0, [r1] - cmp r0, 0xFD - bne _0814E904 - ldr r4, =gStringVar3 -_0814E8EE: - adds r0, r1, 0 -_0814E8F0: - adds r1, r4, 0 - bl ExpandBattleTextBuffPlaceholders - bl _0814F5C0 - .pool -_0814E904: - adds r4, r1, 0 - bl _0814F5C0 -_0814E90A: - ldr r4, =gStringVar1 - bl _0814F5C0 - .pool -_0814E914: - ldr r4, =gStringVar2 - bl _0814F5C0 - .pool -_0814E920: - ldr r4, =gStringVar3 - bl _0814F5C0 - .pool -_0814E92C: - movs r0, 0 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814E960: - movs r0, 0x1 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814E994: - movs r0, 0x2 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814E9C8: - movs r0, 0x3 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814E9FC: - ldr r2, =gBattlePartyID - ldr r1, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EA38: - ldr r2, =gBattlePartyID - ldr r1, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EA78: - ldr r2, =gBattlePartyID - ldr r1, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EAB8: - ldr r2, =gBattlePartyID - ldr r1, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x3 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EAF8: - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - adds r2, r4, 0 - cmp r0, 0 - beq _0814EB74 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814EB36 - ldr r4, =gText_FoePkmnPrefix - b _0814EB36 - .pool -_0814EB2C: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_0814EB36: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814EB2C - ldrb r0, [r2] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814EB9E - .pool -_0814EB74: - ldrb r0, [r2] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814EB9E: - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EBB0: - ldr r4, =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0814EBF8 - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814EC24 - .pool -_0814EBF8: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByIdentity - ldr r1, =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814EC24: - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EC38: - ldr r5, =gBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0814ECA8 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814EC56 - ldr r4, =gText_FoePkmnPrefix -_0814EC56: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, =gBattlePartyID - ldr r2, =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0814EC78 -_0814EC66: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814EC66 -_0814EC78: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - add r0, r12 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814ECC2 - .pool -_0814ECA8: - ldr r1, =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814ECC2: - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814ECD4: - ldr r5, =gBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0814ED44 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814ECF2 - ldr r4, =gText_FoePkmnPrefix -_0814ECF2: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, =gBattlePartyID - ldr r2, =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0814ED14 -_0814ED02: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814ED02 -_0814ED14: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - add r0, r12 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814ED5E - .pool -_0814ED44: - ldr r1, =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814ED5E: - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814ED70: - ldr r5, =gEffectBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0814EDE0 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814ED8E - ldr r4, =gText_FoePkmnPrefix -_0814ED8E: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, =gBattlePartyID - ldr r2, =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0814EDB0 -_0814ED9E: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814ED9E -_0814EDB0: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - add r0, r12 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814EDFA - .pool -_0814EDE0: - ldr r1, =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814EDFA: - mov r0, sp - bl StringGetEnd10 - bl _0814F5BE - .pool -_0814EE0C: - ldr r5, =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0814EE7C - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814EE2A - ldr r4, =gText_FoePkmnPrefix -_0814EE2A: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, =gBattlePartyID - ldr r2, =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0814EE4C -_0814EE3A: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814EE3A -_0814EE4C: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - add r0, r12 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814EE96 - .pool -_0814EE7C: - ldr r1, =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814EE96: - mov r0, sp - bl StringGetEnd10 - b _0814F5BE - .pool -_0814EEA8: - ldr r5, =gBattleScripting - ldrb r0, [r5, 0x17] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0814EF18 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814EEC6 - ldr r4, =gText_FoePkmnPrefix -_0814EEC6: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, =gBattlePartyID - ldr r2, =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0814EEE8 -_0814EED6: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814EED6 -_0814EEE8: - ldrb r0, [r2, 0x17] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - add r0, r12 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814EF32 - .pool -_0814EF18: - ldr r1, =gBattlePartyID - ldrb r0, [r5, 0x17] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814EF32: - mov r0, sp - bl StringGetEnd10 - b _0814F5BE - .pool -_0814EF44: - ldr r0, =gStringInfo - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bhi _0814EF6A - ldrh r1, [r2] - b _0814EF8A - .pool -_0814EF5C: - ldr r0, =gStringInfo - ldr r2, [r0] - ldrh r1, [r2, 0x2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _0814EF88 -_0814EF6A: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - ldr r1, =gText_UnknownMoveTypes - adds r4, r0, r1 - b _0814F5C0 - .pool -_0814EF88: - ldrh r1, [r2, 0x2] -_0814EF8A: - movs r0, 0xD - muls r1, r0 - ldr r0, =gMoveNames - adds r4, r1, r0 - b _0814F5C0 - .pool -_0814EF98: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0814F06E - ldr r2, =gLastUsedItem - ldrh r0, [r2] - cmp r0, 0xAF - bne _0814F064 - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - bne _0814F014 - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r0, [r0] - cmp r0, 0 - beq _0814EFE0 - ldr r2, =gStringBank - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0814EFEC - b _0814F05C - .pool -_0814EFE0: - ldr r2, =gStringBank - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0814F05C -_0814EFEC: - ldrb r0, [r2] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, =gText_BerrySuffix - mov r0, sp - bl StringAppend - b _0814F5BE - .pool -_0814F014: - ldr r2, =gLinkPlayers - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _0814F05C - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, =gText_BerrySuffix - mov r0, sp - bl StringAppend - b _0814F5BE - .pool -_0814F05C: - ldr r4, =gText_EnigmaBerry - b _0814F5C0 - .pool -_0814F064: - ldrh r0, [r2] - mov r1, sp - bl CopyItemName - b _0814F5BE -_0814F06E: - ldr r0, =gLastUsedItem - ldrh r0, [r0] - mov r1, sp - bl CopyItemName - b _0814F5BE - .pool -_0814F080: - ldr r0, =gLastUsedAbility - b _0814F0C0 - .pool -_0814F088: - ldr r1, =gAbilitiesPerBank - ldr r0, =gBankAttacker - b _0814F0BC - .pool -_0814F098: - ldr r1, =gAbilitiesPerBank - ldr r0, =gBankTarget - b _0814F0BC - .pool -_0814F0A8: - ldr r1, =gAbilitiesPerBank - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - b _0814F0BE - .pool -_0814F0B8: - ldr r1, =gAbilitiesPerBank - ldr r0, =gEffectBank -_0814F0BC: - ldrb r0, [r0] -_0814F0BE: - adds r0, r1 -_0814F0C0: - ldrb r1, [r0] - movs r0, 0xD - muls r1, r0 - ldr r0, =gAbilityNames - adds r4, r1, r0 - b _0814F5C0 - .pool -_0814F0D8: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 20 - ands r0, r1 - cmp r0, 0 - beq _0814F0F0 - bl GetSecretBaseTrainerNameIndex - b _0814F59C - .pool -_0814F0F0: - ldr r3, =gTrainerBattleOpponent_A - ldrh r2, [r3] - movs r0, 0xC0 - lsls r0, 4 - cmp r2, r0 - bne _0814F10C - bl sub_8068BB0 - lsls r0, 16 - lsrs r0, 16 - b _0814F5A0 - .pool -_0814F10C: - ldr r0, =0x000003fe - cmp r2, r0 - bne _0814F11C - bl sub_81A4D00 - b _0814F59C - .pool -_0814F11C: - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F12C - ldrh r0, [r3] - b _0814F598 - .pool -_0814F12C: - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _0814F13E - ldrh r0, [r3] - bl sub_81D5530 - b _0814F59C -_0814F13E: - movs r0, 0x80 - lsls r0, 4 - ands r1, r0 - cmp r1, 0 - beq _0814F14E - bl sub_8165264 - b _0814F59C -_0814F14E: - ldr r2, =gTrainers - ldrh r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r0, 0xD - b _0814F5A2 - .pool -_0814F164: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 20 - ands r0, r1 - cmp r0, 0 - beq _0814F1AC - movs r2, 0 - ldr r4, =gBattleResources - ldr r3, [r4] -_0814F178: - mov r1, sp - adds r0, r1, r2 - ldr r1, [r3] - adds r1, 0x2 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x6 - ble _0814F178 - mov r3, sp - adds r1, r3, r2 - movs r0, 0xFF - strb r0, [r1] - ldr r0, [r4] - ldr r0, [r0] - ldrb r1, [r0, 0xD] - mov r0, sp - bl ConvertInternationalString - b _0814F5BE - .pool -_0814F1AC: - ldr r3, =gTrainerBattleOpponent_A - ldrh r2, [r3] - movs r0, 0xC0 - lsls r0, 4 - cmp r2, r0 - bne _0814F1C4 - movs r1, 0x1 - adds r0, r7, 0 - eors r0, r1 - b _0814F284 - .pool -_0814F1C4: - ldr r0, =0x000003fe - cmp r2, r0 - bne _0814F1D8 - mov r0, sp - bl sub_81A4D50 - b _0814F5BE - .pool -_0814F1D8: - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F1E8 - ldrh r1, [r3] - b _0814F5B8 - .pool -_0814F1E8: - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _0814F1FC - ldrh r1, [r3] - mov r0, sp - bl sub_81D5554 - b _0814F5BE -_0814F1FC: - movs r0, 0x80 - lsls r0, 4 - ands r1, r0 - cmp r1, 0 - beq _0814F20E - mov r0, sp - bl sub_8165284 - b _0814F5BE -_0814F20E: - ldrh r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTrainers + 0x4 @ name offset - adds r4, r1, r0 - b _0814F5C0 - .pool -_0814F220: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, =gLinkPlayers + 8 - adds r4, r0, r1 - b _0814F5C0 - .pool -_0814F230: - ldr r4, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - b _0814F266 - .pool -_0814F244: - ldr r4, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - b _0814F266 - .pool -_0814F258: - ldr r4, =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x3 -_0814F266: - eors r0, r1 - bl sub_806D864 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x8 - adds r4, r1, r4 - b _0814F5C0 - .pool -_0814F27C: - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - bl sub_806D864 -_0814F284: - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, =gLinkPlayers + 8 - adds r4, r1, r0 - b _0814F5C0 - .pool -_0814F298: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0814F2B4 - ldr r4, =gLinkPlayers + 8 - b _0814F5C0 - .pool -_0814F2B4: - ldr r0, =gSaveBlock2Ptr - ldr r4, [r0] - b _0814F5C0 - .pool -_0814F2C0: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F2E0 - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x2 - b _0814F55A - .pool -_0814F2E0: - movs r0, 0x80 - lsls r0, 19 - ands r1, r0 - cmp r1, 0 - beq _0814F2F8 - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x4 - b _0814F584 - .pool -_0814F2F8: - bl sub_80B1CA4 - adds r4, r0, 0 - b _0814F5C0 -_0814F300: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F31C - ldr r0, =gTrainerBattleOpponent_A - b _0814F556 - .pool -_0814F31C: - movs r0, 0x80 - lsls r0, 19 - ands r1, r0 - cmp r1, 0 - bne _0814F328 - b _0814F5C0 -_0814F328: - ldr r0, =gTrainerBattleOpponent_A - b _0814F580 - .pool -_0814F330: - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0814F39C - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, =gText_WildPkmnPrefix - cmp r1, 0 - beq _0814F34E - ldr r4, =gText_FoePkmnPrefix -_0814F34E: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r5, =gEnemyParty - mov r12, r5 - ldr r2, =gBattleStruct - cmp r0, 0xFF - beq _0814F36E -_0814F35C: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814F35C -_0814F36E: - ldr r0, [r2] - adds r0, 0x52 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - add r0, r12 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814F3B4 - .pool -_0814F39C: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x52 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814F3B4: - mov r0, sp - bl StringGetEnd10 - b _0814F5BE - .pool -_0814F3C4: - ldr r0, =0x000008ab - bl FlagGet - lsls r0, 24 - ldr r4, =gText_Someones - cmp r0, 0 - bne _0814F3D4 - b _0814F5C0 -_0814F3D4: - ldr r4, =gText_Lanettes - b _0814F5C0 - .pool -_0814F3E4: - ldr r0, =gBankAttacker - b _0814F3EE - .pool -_0814F3EC: - ldr r0, =gBankTarget -_0814F3EE: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, =gText_FoePkmnPrefix3 - cmp r0, 0 - beq _0814F3FE - b _0814F5C0 -_0814F3FE: - ldr r4, =gText_AllyPkmnPrefix2 - b _0814F5C0 - .pool -_0814F410: - ldr r0, =gBankAttacker - b _0814F41A - .pool -_0814F418: - ldr r0, =gBankTarget -_0814F41A: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, =gText_FoePkmnPrefix2 - cmp r0, 0 - beq _0814F42A - b _0814F5C0 -_0814F42A: - ldr r4, =gText_AllyPkmnPrefix - b _0814F5C0 - .pool -_0814F43C: - ldr r0, =gBankAttacker - b _0814F446 - .pool -_0814F444: - ldr r0, =gBankTarget -_0814F446: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, =gText_FoePkmnPrefix4 - cmp r0, 0 - beq _0814F456 - b _0814F5C0 -_0814F456: - ldr r4, =gText_AllyPkmnPrefix3 - b _0814F5C0 - .pool -_0814F468: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F484 - ldr r0, =gTrainerBattleOpponent_B - b _0814F596 - .pool -_0814F484: - movs r0, 0x80 - lsls r0, 19 - ands r1, r0 - cmp r1, 0 - beq _0814F49C - ldr r0, =gTrainerBattleOpponent_B - ldrh r0, [r0] - bl sub_81D5530 - b _0814F59C - .pool -_0814F49C: - ldr r2, =gTrainers - ldr r0, =gTrainerBattleOpponent_B - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r0, 0xD - b _0814F5A2 - .pool -_0814F4B8: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F4D4 - ldr r0, =gTrainerBattleOpponent_B - b _0814F5B6 - .pool -_0814F4D4: - movs r0, 0x80 - lsls r0, 19 - ands r1, r0 - cmp r1, 0 - beq _0814F4F0 - ldr r0, =gTrainerBattleOpponent_B - ldrh r1, [r0] - mov r0, sp - bl sub_81D5554 - b _0814F5BE - .pool -_0814F4F0: - ldr r0, =gTrainerBattleOpponent_B - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, =gTrainers + 0x4 @ name offset - adds r4, r0, r1 - b _0814F5C0 - .pool -_0814F508: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F528 - ldr r0, =gTrainerBattleOpponent_B - ldrh r1, [r0] - movs r0, 0x2 - b _0814F55A - .pool -_0814F528: - movs r0, 0x80 - lsls r0, 19 - ands r1, r0 - cmp r1, 0 - beq _0814F540 - ldr r0, =gTrainerBattleOpponent_B - ldrh r1, [r0] - movs r0, 0x4 - b _0814F584 - .pool -_0814F540: - bl sub_80B1CE0 - adds r4, r0, 0 - b _0814F5C0 -_0814F548: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _0814F574 - ldr r0, =gTrainerBattleOpponent_B -_0814F556: - ldrh r1, [r0] - movs r0, 0x1 -_0814F55A: - bl sub_81A36D0 - ldr r4, =gStringVar4 - b _0814F5C0 - .pool -_0814F574: - movs r0, 0x80 - lsls r0, 19 - ands r1, r0 - cmp r1, 0 - beq _0814F5C0 - ldr r0, =gTrainerBattleOpponent_B -_0814F580: - ldrh r1, [r0] - movs r0, 0x3 -_0814F584: - bl sub_81D572C - ldr r4, =gStringVar4 - b _0814F5C0 - .pool -_0814F594: - ldr r0, =gPartnerTrainerId -_0814F596: - ldrh r0, [r0] -_0814F598: - bl GetFrontierOpponentClass -_0814F59C: - lsls r0, 24 - lsrs r0, 24 -_0814F5A0: - movs r1, 0xD -_0814F5A2: - muls r1, r0 - ldr r0, =gTrainerClassNames - adds r4, r1, r0 - b _0814F5C0 - .pool -_0814F5B4: - ldr r0, =gPartnerTrainerId -_0814F5B6: - ldrh r1, [r0] -_0814F5B8: - mov r0, sp - bl GetFrontierTrainerName -_0814F5BE: - mov r4, sp -_0814F5C0: - ldrb r1, [r4] - adds r0, r1, 0 - mov r5, r9 - ldrb r2, [r5] - mov r3, r9 - adds r3, 0x1 - cmp r0, 0xFF - beq _0814F5E2 -_0814F5D0: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0814F5D0 -_0814F5E2: - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x24 - beq _0814F5F6 - cmp r0, 0x30 - beq _0814F5F6 - cmp r0, 0x25 - beq _0814F5F6 - cmp r0, 0x31 - bne _0814F61C -_0814F5F6: - mov r0, r8 - adds r1, r0, r6 - movs r0, 0xFC - strb r0, [r1] - adds r6, 0x1 - mov r2, r8 - adds r1, r2, r6 - movs r0, 0x9 - strb r0, [r1] - adds r6, 0x1 - b _0814F61C - .pool -_0814F610: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - mov r3, r9 - adds r3, 0x1 -_0814F61C: - mov r9, r3 - ldrb r1, [r3] -_0814F620: - adds r0, r1, 0 - cmp r0, 0xFF - beq _0814F62A - bl _0814E7A4 -_0814F62A: - mov r5, r8 - adds r1, r5, r6 - mov r2, r9 - ldrb r0, [r2] - strb r0, [r1] - adds r6, 0x1 - adds r0, r6, 0 - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end BattleStringExpandPlaceholders - - thumb_func_start ExpandBattleTextBuffPlaceholders -ExpandBattleTextBuffPlaceholders: @ 814F648 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - movs r0, 0 - mov r8, r0 - movs r0, 0xFF - strb r0, [r6] - ldrb r0, [r7, 0x1] - cmp r0, 0xFF - bne _0814F666 - b _0814F8EA -_0814F666: - adds r0, r7, r5 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0xA - bls _0814F672 - b _0814F8E0 -_0814F672: - lsls r0, r1, 2 - ldr r1, =_0814F680 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0814F680: - .4byte _0814F6AC - .4byte _0814F6C8 - .4byte _0814F71C - .4byte _0814F734 - .4byte _0814F744 - .4byte _0814F7BC - .4byte _0814F7D0 - .4byte _0814F7E2 - .4byte _0814F828 - .4byte _0814F83C - .4byte _0814F858 -_0814F6AC: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r0, =gBattleStringsTable - subs r1, 0xC - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _0814F8BE - .pool -_0814F6C8: - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - beq _0814F6E4 - cmp r0, 0x2 - bgt _0814F6D8 - cmp r0, 0x1 - beq _0814F6DE - b _0814F706 -_0814F6D8: - cmp r0, 0x4 - beq _0814F6EC - b _0814F706 -_0814F6DE: - ldrb r4, [r4, 0x3] - mov r8, r4 - b _0814F706 -_0814F6E4: - ldrb r1, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - b _0814F702 -_0814F6EC: - ldrb r0, [r4, 0x3] - mov r8, r0 - ldrb r0, [r4, 0x4] - lsls r0, 8 - mov r1, r8 - orrs r1, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 -_0814F702: - orrs r1, r0 - mov r8, r1 -_0814F706: - adds r4, r5, r7 - ldrb r3, [r4, 0x2] - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - adds r0, r5, 0x3 - ldrb r4, [r4, 0x1] - adds r5, r0, r4 - b _0814F8E0 -_0814F71C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0xD - muls r1, r0 - ldr r0, =gMoveNames - adds r1, r0 - b _0814F8BE - .pool -_0814F734: - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, =gTypeNames - b _0814F846 - .pool -_0814F744: - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0814F768 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0814F7A4 - .pool -_0814F768: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0814F788 - ldr r1, =gText_FoePkmnPrefix - adds r0, r6, 0 - bl StringAppend - b _0814F790 - .pool -_0814F788: - ldr r1, =gText_WildPkmnPrefix - adds r0, r6, 0 - bl StringAppend -_0814F790: - adds r0, r5, r7 - ldrb r1, [r0, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0814F7A4: - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - b _0814F8DE - .pool -_0814F7BC: - ldr r1, =gStatNamesTable - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _0814F848 - .pool -_0814F7D0: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - adds r0, r6, 0 - bl GetSpeciesName - b _0814F8DE -_0814F7E2: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0814F808 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - b _0814F81A - .pool -_0814F808: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData -_0814F81A: - adds r0, r6, 0 - bl StringGetEnd10 - b _0814F8DE - .pool -_0814F828: - ldr r1, =gPokeblockWasTooXStringTable - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _0814F848 - .pool -_0814F83C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, =gAbilityNames -_0814F846: - adds r1, r0 -_0814F848: - adds r0, r6, 0 - bl StringAppend - adds r5, 0x2 - b _0814F8E0 - .pool -_0814F858: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0814F8D6 - cmp r2, 0xAF - bne _0814F8CC - ldr r2, =gLinkPlayers - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _0814F8BC - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, =gEnigmaBerries - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - ldr r1, =gText_BerrySuffix - b _0814F8BE - .pool -_0814F8BC: - ldr r1, =gText_EnigmaBerry -_0814F8BE: - adds r0, r6, 0 - bl StringAppend - b _0814F8DE - .pool -_0814F8CC: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName - b _0814F8DE -_0814F8D6: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName -_0814F8DE: - adds r5, 0x3 -_0814F8E0: - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0xFF - beq _0814F8EA - b _0814F666 -_0814F8EA: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ExpandBattleTextBuffPlaceholders thumb_func_start sub_814F8F8 sub_814F8F8: @ 814F8F8 diff --git a/asm/battle_setup.s b/asm/battle_setup.s index fcc0de95bd..fbedfff2fe 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -2617,8 +2617,8 @@ _080B1C96: .pool thumb_func_end sub_80B1C7C - thumb_func_start sub_80B1CA4 -sub_80B1CA4: @ 80B1CA4 + thumb_func_start GetTrainer1LoseText +GetTrainer1LoseText: @ 80B1CA4 push {r4,lr} ldr r0, =gTrainerBattleOpponent_A ldrh r1, [r0] @@ -2643,10 +2643,10 @@ _080B1CC0: pop {r1} bx r1 .pool - thumb_func_end sub_80B1CA4 + thumb_func_end GetTrainer1LoseText - thumb_func_start sub_80B1CE0 -sub_80B1CE0: @ 80B1CE0 + thumb_func_start GetTrainer2LoseText +GetTrainer2LoseText: @ 80B1CE0 push {r4,lr} ldr r4, =gStringVar4 ldr r0, =gUnknown_02038BE0 @@ -2660,7 +2660,7 @@ sub_80B1CE0: @ 80B1CE0 pop {r1} bx r1 .pool - thumb_func_end sub_80B1CE0 + thumb_func_end GetTrainer2LoseText thumb_func_start sub_80B1D04 sub_80B1D04: @ 80B1D04 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index eb91121aea..59971c5d23 100755 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -5857,8 +5857,8 @@ sub_8165244: @ 8165244 .pool thumb_func_end sub_8165244 - thumb_func_start sub_8165264 -sub_8165264: @ 8165264 + thumb_func_start GetEreaderTrainerClassId +GetEreaderTrainerClassId: @ 8165264 ldr r1, =gTrainerClassToNameIndex ldr r0, =gSaveBlock2Ptr ldr r0, [r0] @@ -5869,10 +5869,10 @@ sub_8165264: @ 8165264 ldrb r0, [r0] bx lr .pool - thumb_func_end sub_8165264 + thumb_func_end GetEreaderTrainerClassId - thumb_func_start sub_8165284 -sub_8165284: @ 8165284 + thumb_func_start GetEreaderTrainerName +GetEreaderTrainerName: @ 8165284 push {r4,lr} adds r3, r0, 0 movs r2, 0 @@ -5896,7 +5896,7 @@ _08165294: pop {r0} bx r0 .pool - thumb_func_end sub_8165284 + thumb_func_end GetEreaderTrainerName thumb_func_start sub_81652B4 sub_81652B4: @ 81652B4 diff --git a/asm/rom6.s b/asm/rom6.s index c53e6fe6e0..0b35ab0e8d 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -7347,7 +7347,7 @@ sub_8139228: @ 8139228 sub_8139238: @ 8139238 push {lr} ldr r0, =gStringVar1 - bl sub_8165284 + bl GetEreaderTrainerName pop {r0} bx r0 .pool diff --git a/charmap.txt b/charmap.txt index 8fe4147cc3..05eff30128 100644 --- a/charmap.txt +++ b/charmap.txt @@ -355,12 +355,12 @@ B_LINK_OPPONENT_MON1_NAME = FD 0A B_LINK_PLAYER_MON2_NAME = FD 0B B_LINK_OPPONENT_MON2_NAME = FD 0C B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D -B_ATK_NAME = FD 0E +B_ATK_PARTNER_NAME = FD 0E B_ATK_NAME_WITH_PREFIX = FD 0F B_DEF_NAME_WITH_PREFIX = FD 10 B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBank -B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 12 -B_ACTIVE_NAME_WITH_PREFIX = FD 13 +B_ACTIVE_NAME_WITH_PREFIX = FD 12 +B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13 B_CURRENT_MOVE = FD 14 B_LAST_MOVE = FD 15 B_LAST_ITEM = FD 16 diff --git a/include/battle_2.h b/include/battle_2.h index edd6b6ef31..ab5068446b 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -25,6 +25,6 @@ extern const u8 gStatusConditionString_IceJpn[8]; extern const u8 gStatusConditionString_ConfusionJpn[8]; extern const u8 gStatusConditionString_LoveJpn[8]; -extern const u8 * const gStatusConditionStringsTable[][2]; +extern const u8 * const gStatusConditionStringsTable[7][2]; #endif // GUARD_BATTLE_2_H diff --git a/include/battle_message.h b/include/battle_message.h index 1884c9e371..be2aca9b25 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -3,59 +3,59 @@ // for 0xFD -#define B_TXT_BUFF1 00 -#define B_TXT_BUFF2 01 -#define B_TXT_COPY_VAR_1 02 -#define B_TXT_COPY_VAR_2 03 -#define B_TXT_COPY_VAR_3 04 -#define B_TXT_PLAYER_MON1_NAME 05 -#define B_TXT_OPPONENT_MON1_NAME 06 -#define B_TXT_PLAYER_MON2_NAME 07 -#define B_TXT_OPPONENT_MON2_NAME 08 -#define B_TXT_LINK_PLAYER_MON1_NAME 09 -#define B_TXT_LINK_OPPONENT_MON1_NAME 0A -#define B_TXT_LINK_PLAYER_MON2_NAME 0B -#define B_TXT_LINK_OPPONENT_MON2_NAME 0C -#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0D -#define B_TXT_ATK_NAME 0E -#define B_TXT_ATK_NAME_WITH_PREFIX 0F -#define B_TXT_DEF_NAME_WITH_PREFIX 10 -#define B_TXT_EFF_NAME_WITH_PREFIX 11 // EFF = short for gEffectBank -#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 12 -#define B_TXT_ACTIVE_NAME_WITH_PREFIX 13 -#define B_TXT_CURRENT_MOVE 14 -#define B_TXT_LAST_MOVE 15 -#define B_TXT_LAST_ITEM 16 -#define B_TXT_LAST_ABILITY 17 -#define B_TXT_ATK_ABILITY 18 -#define B_TXT_DEF_ABILITY 19 -#define B_TXT_SCR_ACTIVE_ABILITY 1A -#define B_TXT_EFF_ABILITY 1B -#define B_TXT_TRAINER1_CLASS 1C -#define B_TXT_TRAINER1_NAME 1D -#define B_TXT_1E 1E // trainer name for a link player -#define B_TXT_1F 1F // trainer name for a link player -#define B_TXT_20 20 // trainer name for a link player -#define B_TXT_21 21 // trainer name for a link player -#define B_TXT_22 22 // trainer name for a link player -#define B_TXT_PLAYER_NAME 23 -#define B_TXT_TRAINER1_LOSE_TEXT 24 -#define B_TXT_TRAINER1_WIN_TEXT 25 -#define B_TXT_26 26 -#define B_TXT_PC_CREATOR_NAME 27 -#define B_TXT_ATK_PREFIX1 28 -#define B_TXT_DEF_PREFIX1 29 -#define B_TXT_ATK_PREFIX2 2A -#define B_TXT_DEF_PREFIX2 2B -#define B_TXT_ATK_PREFIX3 2C -#define B_TXT_DEF_PREFIX3 2D -#define B_TXT_TRAINER2_CLASS 2E -#define B_TXT_TRAINER2_NAME 2F -#define B_TXT_TRAINER2_LOSE_TEXT 30 -#define B_TXT_TRAINER2_WIN_TEXT 31 -#define B_TXT_PARTNER_CLASS 32 -#define B_TXT_PARTNER_NAME 33 -#define B_TXT_BUFF3 34 +#define B_TXT_BUFF1 0x0 +#define B_TXT_BUFF2 0x1 +#define B_TXT_COPY_VAR_1 0x2 +#define B_TXT_COPY_VAR_2 0x3 +#define B_TXT_COPY_VAR_3 0x4 +#define B_TXT_PLAYER_MON1_NAME 0x5 +#define B_TXT_OPPONENT_MON1_NAME 0x6 +#define B_TXT_PLAYER_MON2_NAME 0x7 +#define B_TXT_OPPONENT_MON2_NAME 0x8 +#define B_TXT_LINK_PLAYER_MON1_NAME 0x9 +#define B_TXT_LINK_OPPONENT_MON1_NAME 0xA +#define B_TXT_LINK_PLAYER_MON2_NAME 0xB +#define B_TXT_LINK_OPPONENT_MON2_NAME 0xC +#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0xD +#define B_TXT_ATK_PARTNER_NAME 0xE +#define B_TXT_ATK_NAME_WITH_PREFIX 0xF +#define B_TXT_DEF_NAME_WITH_PREFIX 0x10 +#define B_TXT_EFF_NAME_WITH_PREFIX 0x11 // EFF = short for gEffectBank +#define B_TXT_ACTIVE_NAME_WITH_PREFIX 0x12 +#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 0x13 +#define B_TXT_CURRENT_MOVE 0x14 +#define B_TXT_LAST_MOVE 0x15 +#define B_TXT_LAST_ITEM 0x16 +#define B_TXT_LAST_ABILITY 0x17 +#define B_TXT_ATK_ABILITY 0x18 +#define B_TXT_DEF_ABILITY 0x19 +#define B_TXT_SCR_ACTIVE_ABILITY 0x1A +#define B_TXT_EFF_ABILITY 0x1B +#define B_TXT_TRAINER1_CLASS 0x1C +#define B_TXT_TRAINER1_NAME 0x1D +#define B_TXT_1E 0x1E // trainer name for a link player +#define B_TXT_1F 0x1F // trainer name for a link player +#define B_TXT_20 0x20 // trainer name for a link player +#define B_TXT_21 0x21 // trainer name for a link player +#define B_TXT_22 0x22 // trainer name for a link player +#define B_TXT_PLAYER_NAME 0x23 +#define B_TXT_TRAINER1_LOSE_TEXT 0x24 +#define B_TXT_TRAINER1_WIN_TEXT 0x25 +#define B_TXT_26 0x26 +#define B_TXT_PC_CREATOR_NAME 0x27 +#define B_TXT_ATK_PREFIX1 0x28 +#define B_TXT_DEF_PREFIX1 0x29 +#define B_TXT_ATK_PREFIX2 0x2A +#define B_TXT_DEF_PREFIX2 0x2B +#define B_TXT_ATK_PREFIX3 0x2C +#define B_TXT_DEF_PREFIX3 0x2D +#define B_TXT_TRAINER2_CLASS 0x2E +#define B_TXT_TRAINER2_NAME 0x2F +#define B_TXT_TRAINER2_LOSE_TEXT 0x30 +#define B_TXT_TRAINER2_WIN_TEXT 0x31 +#define B_TXT_PARTNER_CLASS 0x32 +#define B_TXT_PARTNER_NAME 0x33 +#define B_TXT_BUFF3 0x34 // for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 diff --git a/include/global.h b/include/global.h index e0c09d29aa..e98b01ee20 100644 --- a/include/global.h +++ b/include/global.h @@ -225,24 +225,25 @@ extern struct SaveBlock2 *gSaveBlock2Ptr; struct SecretBaseRecord { - /*ID?*/ /*0x1A08*/ u8 sbr_field_0; - /*0x1A09*/ u8 sbr_field_1_0:4; - /*0x1A09*/ u8 gender:1; - /*0x1A09*/ u8 sbr_field_1_5:1; - /*0x1A09*/ u8 sbr_field_1_6:2; - /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes? - /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class - /*0x1A16*/ u16 sbr_field_e; - /*0x1A18*/ u8 sbr_field_10; - /*0x1A19*/ u8 sbr_field_11; - /*0x1A1A*/ u8 decorations[16]; - /*0x1A2A*/ u8 decorationPos[16]; - /*0x1A3A*/ u32 partyPersonality[6]; - /*0x1A54*/ u16 partyMoves[6 * 4]; - /*0x1A84*/ u16 partySpecies[6]; - /*0x1A90*/ u16 partyHeldItems[6]; - /*0x1A9C*/ u8 partyLevels[6]; - /*0x1AA2*/ u8 partyEVs[6]; + u8 sbr_field_0; + u8 sbr_field_1_0:4; + u8 gender:1; + u8 sbr_field_1_5:1; + u8 sbr_field_1_6:2; + u8 trainerName[7]; + u8 trainerId[4]; // byte 0 is used for determining trainer class + u8 language; + u16 sbr_field_e; + u8 sbr_field_10; + u8 sbr_field_11; + u8 decorations[16]; + u8 decorationPos[16]; + u32 partyPersonality[6]; + u16 partyMoves[6 * 4]; + u16 partySpecies[6]; + u16 partyHeldItems[6]; + u8 partyLevels[6]; + u8 partyEVs[6]; }; #include "game_stat.h" diff --git a/src/battle_2.c b/src/battle_2.c index 0fc7e8ffd8..8e48f3ed64 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -344,7 +344,7 @@ const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$"); const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$"); const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$"); -const u8 * const gStatusConditionStringsTable[][2] = +const u8 * const gStatusConditionStringsTable[7][2] = { {gStatusConditionString_PoisonJpn, gText_Poison}, {gStatusConditionString_SleepJpn, gText_Sleep}, diff --git a/src/battle_message.c b/src/battle_message.c index aaaf23faed..510b8a5812 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -5,6 +5,10 @@ #include "moves.h" #include "text.h" #include "string_util.h" +#include "items.h" +#include "event_data.h" +#include "link.h" +#include "item.h" extern u16 gLastUsedItem; extern u8 gLastUsedAbility; @@ -16,11 +20,16 @@ extern u8 gEffectBank; extern u8 gAbilitiesPerBank[BATTLE_BANKS_COUNT]; extern u32 gBattleTypeFlags; extern u16 gTrainerBattleOpponent_A; +extern u16 gTrainerBattleOpponent_B; +extern u16 gPartnerTrainerId; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern const u8 gMoveNames[LAST_MOVE_INDEX + 1][13]; +extern const u8 gAbilityNames[][13]; +extern const u8 gTrainerClassNames[][13]; +extern const u8 gTypeNames[][7]; // strings extern const u8 gText_PkmnBoxSomeonesPCFull[]; @@ -28,9 +37,24 @@ extern const u8 gText_PkmnBoxLanettesPCFull[]; extern const u8 gText_PkmnTransferredSomeonesPC[]; extern const u8 gText_PkmnTransferredLanettesPC[]; +extern u16 sub_8068BB0(void); // pokemon_1 +extern u8 sub_81A4D00(void); // battle_frontier_2 +extern u8 GetFrontierOpponentClass(u16 trainerId); // battle_tower +extern u8 sub_81D5530(u16 trainerId); // pokenav +extern u8 GetEreaderTrainerClassId(void); // battle_tower +extern void sub_81A4D50(u8 *txtPtr); // battle_frontier_2 +extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav +extern void GetEreaderTrainerName(u8 *txtPtr); +extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2 +extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav +extern const u8* GetTrainer1LoseText(void); // battle_setup +extern const u8* GetTrainer2LoseText(void); // battle_setup +extern void GetFrontierTrainerName(u8 *dst, u16 trainerId); + // this file's functions void sub_814F8F8(u8 *txtPtr); void sub_814F950(u8 *txtPtr); +static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); // ewram variables EWRAM_DATA u8 gDisplayedStringBattle[300] = {0}; @@ -64,33 +88,33 @@ const u8 gText_PkmnFainted2[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); const u8 gText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); const u8 gText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); const u8 gText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); -const u8 gText_PreventsEscape[] = _("{B_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); +const u8 gText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); const u8 gText_CantEscape2[] = _("Can’t escape!\p"); const u8 gText_PkmnCantEscape2[] = _("{B_ATK_NAME_WITH_PREFIX} can’t escape!"); const u8 gText_HitXTimes[] = _("Hit {B_BUFF1} time(s)!"); const u8 gText_PkmnFellAsleep[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!"); -const u8 gText_PkmnMadeSleep[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); +const u8 gText_PkmnMadeSleep[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); const u8 gText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!"); const u8 gText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!"); const u8 gText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn’t affected!"); const u8 gText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!"); -const u8 gText_PkmnPoisonedBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnPoisonedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); const u8 gText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!"); const u8 gText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned."); const u8 gText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); const u8 gText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); const u8 gText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); -const u8 gText_PkmnBurnedBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnBurnedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); const u8 gText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); const u8 gText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); const u8 gText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); -const u8 gText_PkmnFrozenBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); +const u8 gText_PkmnFrozenBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); const u8 gText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!"); const u8 gText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); const u8 gText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); const u8 gText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); const u8 gText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); -const u8 gText_PkmnWasParalyzedBy[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); +const u8 gText_PkmnWasParalyzedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); const u8 gText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can’t move!"); const u8 gText_PkmnIsAlreadyParalyzed[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!"); const u8 gText_PkmnHealedParalysis[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!"); @@ -104,7 +128,7 @@ const u8 gText_PkmnHealedConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout const u8 gText_PkmnWasConfused[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!"); const u8 gText_PkmnAlreadyConfused[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!"); const u8 gText_PkmnFellInLove[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!"); -const u8 gText_PkmnInLove[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_ACTIVE_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnInLove[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); const u8 gText_PkmnImmobilizedByLove[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!"); const u8 gText_PkmnBlownAway[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!"); const u8 gText_PkmnChangedType[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!"); @@ -137,7 +161,7 @@ const u8 gText_PkmnHurtBy[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}! const u8 gText_PkmnFreedFrom[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!"); const u8 gText_PkmnCrashed[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!"); const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); -const u8 gText_PkmnProtectedByMist[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); +const u8 gText_PkmnProtectedByMist[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); const u8 gText_PkmnGettingPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!"); const u8 gText_PkmnHitWithRecoil[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!"); const u8 gText_PkmnProtectedItself2[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!"); @@ -149,7 +173,7 @@ const u8 gText_PkmnEvadedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe atta const u8 gText_PkmnSappedByLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX}’s health is\nsapped by LEECH SEED!"); const u8 gText_PkmnFastAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep."); const u8 gText_PkmnWokeUp[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!"); -const u8 gText_PkmnUproarKeptAwake[] = _("But {B_ACTIVE_NAME_WITH_PREFIX}’s UPROAR\nkept it awake!"); +const u8 gText_PkmnUproarKeptAwake[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s UPROAR\nkept it awake!"); const u8 gText_PkmnWokeUpInUproar[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!"); const u8 gText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!"); const u8 gText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); @@ -188,7 +212,7 @@ const u8 gText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\n const u8 gText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); const u8 gText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); const u8 gText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponent’s side!"); -const u8 gText_PkmnHurtBySpikes[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); +const u8 gText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); const u8 gText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); const u8 gText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}’s PERISH count\nfell to {B_BUFF1}!"); const u8 gText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); @@ -231,25 +255,25 @@ const u8 gText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1} lo const u8 gText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!"); const u8 gText_PkmnMoveBounced[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!"); const u8 gText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for a target\nto make a move!"); -const u8 gText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_ACTIVE_NAME_WITH_PREFIX}’s move!"); +const u8 gText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s move!"); const u8 gText_ElectricityWeakened[] = _("Electricity’s power was\nweakened!"); const u8 gText_FireWeakened[] = _("Fire’s power was\nweakened!"); const u8 gText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!"); const u8 gText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!"); const u8 gText_ItemsCantBeUsedNow[] = _("Items can’t be used now.{PAUSE 64}"); -const u8 gText_ForXCommaYZ[] = _("For {B_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); -const u8 gText_PkmnUsedXToGetPumped[] = _("{B_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!"); +const u8 gText_ForXCommaYZ[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); +const u8 gText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!"); const u8 gText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn’t move!"); const u8 gText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); const u8 gText_TheWallShattered[] = _("The wall shattered!"); const u8 gText_ButNoEffect[] = _("But it had no effect!"); -const u8 gText_PkmnHasNoMovesLeft[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); -const u8 gText_PkmnMoveIsDisabled[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nis disabled!\p"); -const u8 gText_PkmnCantUseMoveTorment[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can’t use the same\nmove in a row due to the TORMENT!\p"); -const u8 gText_PkmnCantUseMoveTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can’t use\n{B_CURRENT_MOVE} after the TAUNT!\p"); -const u8 gText_PkmnCantUseMoveSealed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can’t use the\nsealed {B_CURRENT_MOVE}!\p"); -const u8 gText_PkmnMadeItRain[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); -const u8 gText_PkmnRaisedSpeed[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); +const u8 gText_PkmnHasNoMovesLeft[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); +const u8 gText_PkmnMoveIsDisabled[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nis disabled!\p"); +const u8 gText_PkmnCantUseMoveTorment[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use the same\nmove in a row due to the TORMENT!\p"); +const u8 gText_PkmnCantUseMoveTaunt[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use\n{B_CURRENT_MOVE} after the TAUNT!\p"); +const u8 gText_PkmnCantUseMoveSealed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use the\nsealed {B_CURRENT_MOVE}!\p"); +const u8 gText_PkmnMadeItRain[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); +const u8 gText_PkmnRaisedSpeed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); const u8 gText_PkmnProtectedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!"); const u8 gText_PkmnPreventsUsage[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!"); const u8 gText_PkmnRestoredHPUsing[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!"); @@ -261,37 +285,37 @@ const u8 gText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_ const u8 gText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents confusion!"); const u8 gText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nraised its FIRE power!"); const u8 gText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); -const u8 gText_PkmnCutsAttackWith[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}’s ATTACK!"); -const u8 gText_PkmnPreventsStatLossWith[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); +const u8 gText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}’s ATTACK!"); +const u8 gText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); const u8 gText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); -const u8 gText_PkmnTraced[] = _("{B_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}’s {B_BUFF2}!"); +const u8 gText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}’s {B_BUFF2}!"); const u8 gText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}’s {STRING 27}\nprevents burns!"); const u8 gText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); -const u8 gText_PkmnsXBlocksY2[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); +const u8 gText_PkmnsXBlocksY2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); const u8 gText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}’s {STRING 24}\nrestored its HP a little!"); -const u8 gText_PkmnsXWhippedUpSandstorm[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); -const u8 gText_PkmnsXIntensifiedSun[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nintensified the sun’s rays!"); -const u8 gText_PkmnsXPreventsYLoss[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); +const u8 gText_PkmnsXWhippedUpSandstorm[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); +const u8 gText_PkmnsXIntensifiedSun[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nintensified the sun’s rays!"); +const u8 gText_PkmnsXPreventsYLoss[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); const u8 gText_PkmnsXInfatuatedY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!"); const u8 gText_PkmnsXMadeYIneffective[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!"); -const u8 gText_PkmnsXCuredYProblem[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); +const u8 gText_PkmnsXCuredYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); const u8 gText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!"); -const u8 gText_PkmnTransformed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} transformed!"); +const u8 gText_PkmnTransformed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!"); const u8 gText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ntook the attack!"); const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}’s {STRING 23}\nprevents switching!\p"); -const u8 gText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevented {B_ACTIVE_NAME_WITH_PREFIX}’s\l{B_BUFF1} from working!"); -const u8 gText_PkmnsXMadeItIneffective[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); +const u8 gText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s\l{B_BUFF1} from working!"); +const u8 gText_PkmnsXMadeItIneffective[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); const u8 gText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}’s {STRING 27}\nprevents flinching!"); const u8 gText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}’s {STRING 24}\nprevents {B_DEF_NAME_WITH_PREFIX}’s\l{B_DEF_ABILITY} from working!"); -const u8 gText_PkmnsXCuredItsYProblem[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); -const u8 gText_PkmnsXHadNoEffectOnY[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gText_PkmnsXCuredItsYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); +const u8 gText_PkmnsXHadNoEffectOnY[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); const u8 gText_StatSharply[] = _("sharply "); const u8 gText_StatRose[] = _("rose!"); const u8 gText_StatHarshly[] = _("harshly "); const u8 gText_StatFell[] = _("fell!"); const u8 gText_PkmnsStatChanged[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); const u8 gText_PkmnsStatChanged2[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); -const u8 gText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}"); +const u8 gText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}"); const u8 gText_PkmnsStatChanged3[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); const u8 gText_PkmnsStatChanged4[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}"); const u8 gText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}’s stats won’t\ngo any higher!"); @@ -462,18 +486,18 @@ const u8 gText_SandstormIsRaging[] = _("A sandstorm is raging."); const u8 gText_BoxIsFull[] = _("The BOX is full!\nYou can’t catch any more!\p"); const u8 gText_EnigmaBerry[] = _("ENIGMA BERRY"); const u8 gText_BerrySuffix[] = _(" BERRY"); -const u8 gText_PkmnsItemCuredParalysis[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured paralysis!"); -const u8 gText_PkmnsItemCuredPoison[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured poison!"); -const u8 gText_PkmnsItemHealedBurn[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nhealed its burn!"); -const u8 gText_PkmnsItemDefrostedIt[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ndefrosted it!"); -const u8 gText_PkmnsItemWokeIt[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nwoke it from its sleep!"); -const u8 gText_PkmnsItemSnappedOut[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nsnapped it out of confusion!"); -const u8 gText_PkmnsItemCuredProblem[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); -const u8 gText_PkmnsItemNormalizedStatus[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nnormalized its status!"); -const u8 gText_PkmnsItemRestoredHealth[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored health!"); -const u8 gText_PkmnsItemRestoredPP[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored {B_BUFF1}’s PP!"); -const u8 gText_PkmnsItemRestoredStatus[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its status!"); -const u8 gText_PkmnsItemRestoredHPALittle[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its HP a little!"); +const u8 gText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured paralysis!"); +const u8 gText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured poison!"); +const u8 gText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nhealed its burn!"); +const u8 gText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ndefrosted it!"); +const u8 gText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nwoke it from its sleep!"); +const u8 gText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nsnapped it out of confusion!"); +const u8 gText_PkmnsItemCuredProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); +const u8 gText_PkmnsItemNormalizedStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nnormalized its status!"); +const u8 gText_PkmnsItemRestoredHealth[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored health!"); +const u8 gText_PkmnsItemRestoredPP[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored {B_BUFF1}’s PP!"); +const u8 gText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its status!"); +const u8 gText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its HP a little!"); const u8 gText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p"); const u8 gText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); const u8 gText_EmptyString3[] = _(""); @@ -910,7 +934,7 @@ const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p"); const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); const u8 gText_EllipsisQuestionMark[] = _("……?\p"); -const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_SCR_ACTIVE_NAME_WITH_PREFIX} do?"); +const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?"); const u8 gText_WhatWillPkmnDo2[] = _("What will\n{B_PLAYER_NAME} do?"); const u8 gText_WhatWillWallyDo[] = _("What will\nWALLY do?"); const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); @@ -1013,10 +1037,10 @@ const u8 gText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_CLASS} {B_PARTNER_NAME const u8 gText_TwoInGameTrainersDefeated[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwere defeated!\p"); const u8 gText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}"); const u8 gText_PkmnIncapableOfPower[] = _("{B_ATK_NAME_WITH_PREFIX} appears incapable\nof using its power!"); -const u8 gText_GlintAppearsInEye[] = _("A glint appears in\n{B_ACTIVE_NAME_WITH_PREFIX}’s eyes!"); -const u8 gText_PkmnGettingIntoPosition[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!"); -const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_ACTIVE_NAME_WITH_PREFIX} began growling deeply!"); -const u8 gText_PkmnEagerForMore[] = _("{B_ACTIVE_NAME_WITH_PREFIX} is eager for more!"); +const u8 gText_GlintAppearsInEye[] = _("A glint appears in\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s eyes!"); +const u8 gText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!"); +const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!"); +const u8 gText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!"); const u16 gUnknown_085CCF0A[] = { @@ -1080,7 +1104,7 @@ const u16 gUnknown_085CD336[] = 0x0104, 0x0110, 0x011b, 0x0141, 0x0157, 0x0000, }; -const u8 gUnknown_085CD422[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0}; +static const u8 sDummyWeirdStatusString[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0}; const u16 gUnknown_085CD42C[] = { @@ -1426,3 +1450,620 @@ void BufferStringBattle(u16 stringID) BattleStringExpandPlaceholdersToDisplayedString(stringPtr); } + +u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src) +{ + BattleStringExpandPlaceholders(src, gDisplayedStringBattle); +} + +static const u8* TryGetStatusString(u8* src) +{ + u32 i; + u8 status[8]; + u32 chars1, chars2; + u8* statusPtr; + + memcpy(status, sDummyWeirdStatusString, 8); + + statusPtr = status; + for (i = 0; i < 8; i++) + { + if (*src == EOS) + break; + *statusPtr = *src; + src++; + statusPtr++; + } + + chars1 = *(u32*)(&status[0]); + chars2 = *(u32*)(&status[4]); + + for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++) + { + if (chars1 == *(u32*)(&gStatusConditionStringsTable[i][0][0]) + && chars2 == *(u32*)(&gStatusConditionStringsTable[i][0][4])) + return gStatusConditionStringsTable[i][1]; + } + return NULL; +} + +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != SIDE_PLAYER) \ + { \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gText_FoePkmnPrefix; \ + else \ + toCpy = gText_WildPkmnPrefix; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + StringGetEnd10(text); \ + toCpy = text; + +extern u8 gUnknown_0203C7B4; + +u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) +{ + u32 dstID = 0; // if they used dstID, why not use srcID as well? + const u8* toCpy = NULL; + u8 text[30]; + u8 multiplayerID; + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + multiplayerID = gUnknown_0203C7B4; + else + multiplayerID = GetMultiplayerId(); + + while (*src != EOS) + { + if (*src == PLACEHOLDER_BEGIN) + { + src++; + switch (*src) + { + case B_TXT_BUFF1: + if (gBattleTextBuff1[0] == B_BUFF_PLACEHOLDER_BEGIN) + { + ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1); + toCpy = gStringVar1; + } + else + { + toCpy = TryGetStatusString(gBattleTextBuff1); + if (toCpy == NULL) + toCpy = gBattleTextBuff1; + } + break; + case B_TXT_BUFF2: + if (gBattleTextBuff2[0] == B_BUFF_PLACEHOLDER_BEGIN) + { + ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2); + toCpy = gStringVar2; + } + else + toCpy = gBattleTextBuff2; + break; + case B_TXT_BUFF3: + if (gBattleTextBuff3[0] == B_BUFF_PLACEHOLDER_BEGIN) + { + ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3); + toCpy = gStringVar3; + } + else + toCpy = gBattleTextBuff3; + break; + case B_TXT_COPY_VAR_1: + toCpy = gStringVar1; + break; + case B_TXT_COPY_VAR_2: + toCpy = gStringVar2; + break; + case B_TXT_COPY_VAR_3: + toCpy = gStringVar3; + break; + case B_TXT_PLAYER_MON1_NAME: // first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON1)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON1)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_PLAYER_MON2_NAME: // second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON2)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON2)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only bank 0/1 + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, + gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker))]) + break; + case B_TXT_ATK_PARTNER_NAME: // attacker partner name + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text); + else + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker]) + break; + case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix + HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget]) + break; + case B_TXT_EFF_NAME_WITH_PREFIX: // effect bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank]) + break; + case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank]) + break; + case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, gBattlePartyID[gBattleScripting.bank]) + break; + case B_TXT_CURRENT_MOVE: // current move name + if (gStringInfo->currentMove > LAST_MOVE_INDEX) + toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->currentMove]; + break; + case B_TXT_LAST_MOVE: // last used move name + if (gStringInfo->lastMove > LAST_MOVE_INDEX) + toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->lastMove]; + break; + case B_TXT_LAST_ITEM: // last used item + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if ((gBattleScripting.multiplayerId != 0 && (gStringBank & BIT_SIDE)) + || (gBattleScripting.multiplayerId == 0 && !(gStringBank & BIT_SIDE))) + { + StringCopy(text, gEnigmaBerries[gStringBank].name); + StringAppend(text, gText_BerrySuffix); + toCpy = text; + } + else + { + toCpy = gText_EnigmaBerry; + } + } + else + { + if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank) + { + StringCopy(text, gEnigmaBerries[gStringBank].name); + StringAppend(text, gText_BerrySuffix); + toCpy = text; + } + else + toCpy = gText_EnigmaBerry; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + break; + case B_TXT_LAST_ABILITY: // last used ability + toCpy = gAbilityNames[gLastUsedAbility]; + break; + case B_TXT_ATK_ABILITY: // attacker ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]]; + break; + case B_TXT_DEF_ABILITY: // target ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]]; + break; + case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBattleScripting.bank]]; + break; + case B_TXT_EFF_ABILITY: // effect bank ability + toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]]; + break; + case B_TXT_TRAINER1_CLASS: // trainer class name + if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE) + toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + toCpy = gTrainerClassNames[sub_8068BB0()]; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE) + toCpy = gTrainerClassNames[sub_81A4D00()]; + else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_A)]; + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_A)]; + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = gTrainerClassNames[GetEreaderTrainerClassId()]; + else + toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_A].trainerClass]; + break; + case B_TXT_TRAINER1_NAME: // trainer1 name + if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE) + { + for (i = 0; i < (s32) ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++) + text[i] = gBattleResources->secretBase->trainerName[i]; + text[i] = EOS; + ConvertInternationalString(text, gBattleResources->secretBase->language); + toCpy = text; + } + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + { + toCpy = gLinkPlayers[multiplayerID ^ BIT_SIDE].name; + } + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE) + { + sub_81A4D50(text); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + GetFrontierTrainerName(text, gTrainerBattleOpponent_A); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + sub_81D5554(text, gTrainerBattleOpponent_A); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + { + GetEreaderTrainerName(text); + toCpy = text; + } + else + { + toCpy = gTrainers[gTrainerBattleOpponent_A].trainerName; + } + break; + case B_TXT_1E: // link player name? + toCpy = gLinkPlayers[multiplayerID].name; + break; + case B_TXT_1F: // link partner name? + toCpy = gLinkPlayers[sub_806D864(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case B_TXT_20: // link opponent 1 name? + toCpy = gLinkPlayers[sub_806D864(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case B_TXT_21: // link opponent 2 name? + toCpy = gLinkPlayers[sub_806D864(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case B_TXT_22: // link scripting active name + toCpy = gLinkPlayers[sub_806D864(gBattleScripting.bank)].name; + break; + case B_TXT_PLAYER_NAME: // player name + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + toCpy = gLinkPlayers[0].name; + else + toCpy = gSaveBlock2Ptr->playerName; + break; + case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + sub_81A36D0(2, gTrainerBattleOpponent_A); + toCpy = gStringVar4; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + sub_81D572C(4, gTrainerBattleOpponent_A); + toCpy = gStringVar4; + } + else + { + toCpy = GetTrainer1LoseText(); + } + break; + case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + sub_81A36D0(1, gTrainerBattleOpponent_A); + toCpy = gStringVar4; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + sub_81D572C(3, gTrainerBattleOpponent_A); + toCpy = gStringVar4; + } + break; + case B_TXT_26: // ? + HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, *(&gBattleStruct->field_52)) + break; + case B_TXT_PC_CREATOR_NAME: // lanette pc + if (FlagGet(SYS_PC_LANETTE)) + toCpy = gText_Lanettes; + else + toCpy = gText_Someones; + break; + case B_TXT_ATK_PREFIX2: + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + toCpy = gText_AllyPkmnPrefix2; + else + toCpy = gText_FoePkmnPrefix3; + break; + case B_TXT_DEF_PREFIX2: + if (GetBankSide(gBankTarget) == SIDE_PLAYER) + toCpy = gText_AllyPkmnPrefix2; + else + toCpy = gText_FoePkmnPrefix3; + break; + case B_TXT_ATK_PREFIX1: + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + toCpy = gText_AllyPkmnPrefix; + else + toCpy = gText_FoePkmnPrefix2; + break; + case B_TXT_DEF_PREFIX1: + if (GetBankSide(gBankTarget) == SIDE_PLAYER) + toCpy = gText_AllyPkmnPrefix; + else + toCpy = gText_FoePkmnPrefix2; + break; + case B_TXT_ATK_PREFIX3: + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + toCpy = gText_AllyPkmnPrefix3; + else + toCpy = gText_FoePkmnPrefix4; + break; + case B_TXT_DEF_PREFIX3: + if (GetBankSide(gBankTarget) == SIDE_PLAYER) + toCpy = gText_AllyPkmnPrefix3; + else + toCpy = gText_FoePkmnPrefix4; + break; + case B_TXT_TRAINER2_CLASS: + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_B)]; + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_B)]; + else + toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_B].trainerClass]; + break; + case B_TXT_TRAINER2_NAME: + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + GetFrontierTrainerName(text, gTrainerBattleOpponent_B); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + sub_81D5554(text, gTrainerBattleOpponent_B); + toCpy = text; + } + else + { + toCpy = gTrainers[gTrainerBattleOpponent_B].trainerName; + } + break; + case B_TXT_TRAINER2_LOSE_TEXT: + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + sub_81A36D0(2, gTrainerBattleOpponent_B); + toCpy = gStringVar4; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + sub_81D572C(4, gTrainerBattleOpponent_B); + toCpy = gStringVar4; + } + else + { + toCpy = GetTrainer2LoseText(); + } + break; + case B_TXT_TRAINER2_WIN_TEXT: + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + sub_81A36D0(1, gTrainerBattleOpponent_B); + toCpy = gStringVar4; + } + else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + { + sub_81D572C(3, gTrainerBattleOpponent_B); + toCpy = gStringVar4; + } + break; + case B_TXT_PARTNER_CLASS: + toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)]; + break; + case B_TXT_PARTNER_NAME: + GetFrontierTrainerName(text, gPartnerTrainerId); + toCpy = text; + break; + } + + // missing if (toCpy != NULL) check + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT + || *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT) + { + dst[dstID] = EXT_CTRL_CODE_BEGIN; + dstID++; + dst[dstID] = 9; + dstID++; + } + } + else + { + dst[dstID] = *src; + dstID++; + } + src++; + } + + dst[dstID] = *src; + dstID++; + + return dstID; +} + +// TODO: move these to a general header like util.h +#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) + +static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) +{ + u32 srcID = 1; + u32 value = 0; + u8 text[12]; + u16 hword; + + *dst = EOS; + while (src[srcID] != B_BUFF_EOS) + { + switch (src[srcID]) + { + case B_BUFF_STRING: // battle string + hword = ByteRead16(&src[srcID + 1]); + StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]); + srcID += 3; + break; + case B_BUFF_NUMBER: // int to string + switch (src[srcID + 1]) + { + case 1: + value = src[srcID + 3]; + break; + case 2: + value = ByteRead16(&src[srcID + 3]); + break; + case 4: + value = ByteRead32(&src[srcID + 3]); + break; + } + ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]); + srcID += src[srcID + 1] + 3; + break; + case B_BUFF_MOVE: // move name + StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]); + srcID += 3; + break; + case B_BUFF_TYPE: // type name + StringAppend(dst, gTypeNames[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix + if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gText_FoePkmnPrefix); + else + StringAppend(dst, gText_WildPkmnPrefix); + + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + StringGetEnd10(text); + StringAppend(dst, text); + srcID += 3; + break; + case B_BUFF_STAT: // stats + StringAppend(dst, gStatNamesTable[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_SPECIES: // species name + GetSpeciesName(dst, ByteRead16(&src[srcID + 1])); + srcID += 3; + break; + case B_BUFF_MON_NICK: // poke nick without prefix + if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER) + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + else + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + StringGetEnd10(dst); + srcID += 3; + break; + case B_BUFF_NEGATIVE_FLAVOUR: // flavour table + StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_ABILITY: // ability names + StringAppend(dst, gAbilityNames[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_ITEM: // item name + hword = ByteRead16(&src[srcID + 1]); + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + if (hword == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank) + { + StringCopy(dst, gEnigmaBerries[gStringBank].name); + StringAppend(dst, gText_BerrySuffix); + } + else + StringAppend(dst, gText_EnigmaBerry); + } + else + CopyItemName(hword, dst); + } + else + CopyItemName(hword, dst); + srcID += 3; + break; + } + } +} From f0775000a1cd87174e9b3a5a6a365e189309385e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 7 Oct 2017 22:54:32 -0400 Subject: [PATCH 106/182] decompile diploma.c --- asm/diploma.s | 387 ----------------------------- asm/rom6.s | 2 +- data/diploma.s | 22 -- graphics/misc/diploma.png | Bin 0 -> 2064 bytes graphics/misc/diploma_hoenn.pal | 19 ++ graphics/misc/diploma_map.bin | Bin 0 -> 4096 bytes graphics/misc/diploma_national.pal | 19 ++ ld_script.txt | 4 +- src/diploma.c | 220 ++++++++++++++++ src/save_failed_screen.c | 2 +- sym_ewram.txt | 4 +- 11 files changed, 263 insertions(+), 416 deletions(-) delete mode 100644 asm/diploma.s delete mode 100644 data/diploma.s create mode 100755 graphics/misc/diploma.png create mode 100755 graphics/misc/diploma_hoenn.pal create mode 100755 graphics/misc/diploma_map.bin create mode 100755 graphics/misc/diploma_national.pal create mode 100755 src/diploma.c diff --git a/asm/diploma.s b/asm/diploma.s deleted file mode 100644 index 4f21fe39d3..0000000000 --- a/asm/diploma.s +++ /dev/null @@ -1,387 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8177874 -sub_8177874: @ 8177874 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8177874 - - thumb_func_start sub_8177888 -sub_8177888: @ 8177888 - push {r4,r5,lr} - sub sp, 0xC - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0xE - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - add r1, sp, 0x4 - movs r0, 0 - strh r0, [r1] - ldr r1, =0x040000d4 - add r0, sp, 0x4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r5, 0 - str r5, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r5, [r0] - str r0, [r1] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl remove_some_task - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - ldr r0, =gUnknown_085E7088 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - ldr r4, =gUnknown_0203BCF0 - movs r0, 0x80 - lsls r0, 5 - bl Alloc - str r0, [r4] - bl sub_8177B44 - bl sub_8177B9C - bl reset_temp_tile_data_buffers - ldr r1, =gUnknown_085E7804 - str r5, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram -_0817797C: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0817797C - ldr r0, =gUnknown_085E70C8 - ldr r1, =gUnknown_0203BCF0 - ldr r1, [r1] - bl LZDecompressWram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - bl pokedex_diploma_something - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - str r5, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - bl EnableInterrupts - ldr r0, =sub_8177874 - bl SetVBlankCallback - ldr r0, =sub_8177A08 - bl SetMainCallback2 - ldr r0, =sub_8177A20 - movs r1, 0 - bl CreateTask - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177888 - - thumb_func_start sub_8177A08 -sub_8177A08: @ 8177A08 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8177A08 - - thumb_func_start sub_8177A20 -sub_8177A20: @ 8177A20 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08177A40 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8177A50 - str r0, [r1] -_08177A40: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177A20 - - thumb_func_start sub_8177A50 -sub_8177A50: @ 8177A50 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08177A82 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8177A98 - str r1, [r0] -_08177A82: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177A50 - - thumb_func_start sub_8177A98 -sub_8177A98: @ 8177A98 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08177AC2 - ldr r0, =gUnknown_0203BCF0 - ldr r0, [r0] - bl Free - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl DestroyTask - ldr r0, =sub_80861E8 - bl SetMainCallback2 -_08177AC2: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177A98 - - thumb_func_start pokedex_diploma_something -pokedex_diploma_something: @ 8177AD4 - push {r4,lr} - bl sub_80C0944 - lsls r0, 16 - cmp r0, 0 - beq _08177AFC - movs r1, 0x80 - lsls r1, 1 - movs r0, 0x14 - bl SetGpuReg - ldr r0, =gStringVar1 - ldr r1, =gText_DexNational - bl StringCopy - b _08177B0C - .pool -_08177AFC: - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldr r0, =gStringVar1 - ldr r1, =gText_DexHoenn - bl StringCopy -_08177B0C: - ldr r4, =gStringVar4 - ldr r1, =gText_PokedexDiploma - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_8177BCC - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end pokedex_diploma_something - - thumb_func_start sub_8177B44 -sub_8177B44: @ 8177B44 - push {lr} - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085E81FC - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r0, =gUnknown_0203BCF0 - ldr r1, [r0] - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177B44 - - thumb_func_start sub_8177B9C -sub_8177B9C: @ 8177B9C - push {lr} - ldr r0, =gUnknown_085E8204 - bl InitWindows - bl DeactivateAllTextPrinters - ldr r0, =gUnknown_0860F074 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177B9C - - thumb_func_start sub_8177BCC -sub_8177BCC: @ 8177BCC - push {r4-r6,lr} - sub sp, 0x18 - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r1, =gUnknown_085E8214 - add r0, sp, 0x14 - movs r2, 0x3 - bl memcpy - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - add r0, sp, 0x14 - str r0, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - str r6, [sp, 0x10] - movs r0, 0 - movs r1, 0x1 - adds r2, r4, 0 - adds r3, r5, 0 - bl AddTextPrinterParametrized2 - add sp, 0x18 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8177BCC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom6.s b/asm/rom6.s index c53e6fe6e0..0a89608116 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -4705,7 +4705,7 @@ _08137CAC: thumb_func_start sub_8137CB4 sub_8137CB4: @ 8137CB4 push {lr} - ldr r0, =sub_8177888 + ldr r0, =CB2_ShowDiploma bl SetMainCallback2 bl ScriptContext2_Enable pop {r0} diff --git a/data/diploma.s b/data/diploma.s deleted file mode 100644 index 43a3d9c704..0000000000 --- a/data/diploma.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_085E7088:: @ 85E7088 - .incbin "baserom.gba", 0x5e7088, 0x40 - -gUnknown_085E70C8:: @ 85E70C8 - .incbin "baserom.gba", 0x5e70c8, 0x73c - -gUnknown_085E7804:: @ 85E7804 - .incbin "baserom.gba", 0x5e7804, 0x9f8 - -gUnknown_085E81FC:: @ 85E81FC - .incbin "baserom.gba", 0x5e81fc, 0x8 - -gUnknown_085E8204:: @ 85E8204 - .incbin "baserom.gba", 0x5e8204, 0x10 - -gUnknown_085E8214:: @ 85E8214 - .incbin "baserom.gba", 0x5e8214, 0x4 diff --git a/graphics/misc/diploma.png b/graphics/misc/diploma.png new file mode 100755 index 0000000000000000000000000000000000000000..d9607dce6f2f5a8d97bf9629fcd1ea0622099fa7 GIT binary patch literal 2064 zcmV+r2=DiaP)000M@ zNkl-{jP!iuJ zB!-;jB68f7Ld1`^m~qSlh+q~k7XWx>>g2p?3yN=(V}LVMnMHS^_KGK7eFBgq#O9g+ z(CY!mVhZgjib;G|KFj1Y?gA}}L;i_uZg{W8S4=`W|D$|(EhV6+1@r;b!SmY+K#FtpLS(o$q#99iW-#y2Q0c*2ugZS#B#KOx#N)0Q6T$lmJlgjld0fxe!eP zKvxG)1Vnia2sMC-k>rO8{qTzxj4X`XfJhMxOaL)2$t6D&(~19jIv^4rY%2g%sREe7 z24sWlXlO!I9nb9oA~96{l7LXTAXCRn5n&E-z^9Q0;5mpOdwdwZfCma-sa`Ng$^o;b zA5w_`ClqTl#Stz<$Q9K*f5SRp$MG z?!qz>nqknv+vipk@Um25%nx8!YpemDt3GzHBuv?yCYG7&X?bn-EzE51{g=7+JM&THr51x2n!kmIc;@1zU)L5CiW$ zJPr_WA1gAYy=rQJ)L=+@}*`FyVmCvql!u z00^Jc>J*zb^{&Q3L)(W2fcgPrX?+OGnpvaM$)wMRW+}%)`CfZD>(%C zu6Fd;L!DKKrVkoG?FeS9)A`i@`IWO%T|y6l`N6cYg9;W4ZmzIQZ@wxCan=CM_4={OC7eab_aqJ|(I!_*7ffCz#hE@Y$vKzV}A zG`)hE$@Z_P1KmmG)YJiXEN*j^ew@)MXr4|}7`nLFD;$q6*)ylEc>wqw{8E5ds4(=% uzfoiRIDp^n=mbw=2*A0IV?Xtk0P-KX_Kr4>ZYQn)0000bcD6o%g~Ie~?4+c(JxEU-Wnmnbe#T%x$7hD*ITNgHp{CTXPZ?(Xj1e~IQB zrjvWiSK6QWf$q*bbMKw|oM-p!+}prLHnEv?tPiA?BRG;Hb%fSxz19WNtWDae4T{U7 zhrR4$KRekK$XJf!c#hX`I##>1Gmw7m(_Za~@-1v-8>cgJ19Q5zX{)wG`F3`224{xo zIL1?$zyuYI*Eo&n;QBLlhIVLsl%L9JA(l*J5|gP+VT!6IYmz1^0~I2irc*&gDGL=K?O|qHFk5U7AaG87|Xhxh$XQGkm&F^Q*arYq^f=xq%zG zDc}$8EW$*W&^7#*tGPHA@5Cjz1TQ|`$N7jq z%`-g9b3D%ryvR$}^oQ3oaKD&KxRlGdoGZAJtFHLlU5ERp_ruRNa|^d}8@F=@cXAgy ze7hg`{##tDYx|c9lR1Tld4xxKjK_I`CwYpkz9q`{xL()i`dz2%3S<;Va}3AmXdR_p zzS9p*zwh(Cz9-5zxJK9Hnq8f%4`c!-auO%$M4h1ZzRnL$vv2Z^z9GsF?BU8VxW0J> z2whwsZ9>$|+nXKu&pOb6Ml_)rb*K-d79%hcBV~ltO1;zt(kxBVC=D{O=pOW<5B=yw zS0H0C4&yOi#>rUelFmT-rB8aLC(5^=6>XS~$PLWt(k89a66M>`ff<+?qT>(`K>`v) zBwpeqB7^JClo`???NNRzriEA{5lKjfA_Xa;k}OG*C=67HV46&g^4*vf;!}}^bYvhC zS;&%1$&hqOlhhDDOS)tDvyp>b><}N@Ux*?UqXeZWLz$FHi4;qb z6o&ZN{&G~H5>=>14QixXs-#jXq&&pO_LrLqQ)#M9wW%>Rw%S(NN?T#e?cfuLAhy5I z6q#aEVoFV!DYK=v#NL8iFaMZt!|fOXi=h~X;eq}yl7+HB=F2>pD|2MFz$ay&@XXT8XmWYWn@kUI7Nw8w$?JIZ{ui{5Fg=Ve1cE$89u+_Z#Nxgm+X`svR$^xR@ow(uj0SJm-q@_ z;~RX7@9;f-z>ny#?RMb%Z!xXrl$?|ka$JtdQ8^-qui__T3Vy=R_yxb>H~fx2@F!Yr zOO)?1y{6Cfn@-ae$S91)7>tq8GD^B^ryZPr+h==iPn2&kji$*on>te;$OKHpButWt dGC}HXogJKJ+hiMULzExb!_9HC1OL|!`~`@zlY9UG literal 0 HcmV?d00001 diff --git a/graphics/misc/diploma_national.pal b/graphics/misc/diploma_national.pal new file mode 100755 index 0000000000..03c37bf22f --- /dev/null +++ b/graphics/misc/diploma_national.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +24 41 82 +255 255 222 +255 255 189 +230 238 90 +213 222 0 +238 238 222 +222 230 230 +255 222 197 +222 222 189 +246 246 180 +238 230 180 +213 213 156 +230 230 139 +255 255 123 +238 238 106 +255 205 172 diff --git a/ld_script.txt b/ld_script.txt index de6ba62f15..39e5c5bc16 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -218,7 +218,7 @@ SECTIONS { asm/hall_of_fame.o(.text); asm/credits.o(.text); src/lottery_corner.o(.text); - asm/diploma.o(.text); + src/diploma.o(.text); asm/berry_tag_screen.o(.text); asm/mystery_event_menu.o(.text); src/save_failed_screen.o(.text); @@ -430,7 +430,7 @@ SECTIONS { data/hall_of_fame.o(.rodata); data/credits.o(.rodata); src/lottery_corner.o(.rodata); - data/diploma.o(.rodata); + src/diploma.o(.rodata); data/strings.o(.rodata); data/berry_tag_screen.o(.rodata); data/mystery_event_menu.o(.rodata); diff --git a/src/diploma.c b/src/diploma.c new file mode 100755 index 0000000000..765b018bc8 --- /dev/null +++ b/src/diploma.c @@ -0,0 +1,220 @@ +#include "global.h" +#include "palette.h" +#include "main.h" +#include "gpu_regs.h" +#include "unknown_task.h" +#include "task.h" +#include "malloc.h" +#include "decompress.h" +#include "bg.h" +#include "window.h" +#include "string_util.h" +#include "text.h" + +extern void reset_temp_tile_data_buffers(void); +extern int decompress_and_copy_tile_data_to_vram(u8 bg_id, void *src, int size, u16 offset, u8 mode); +extern bool8 free_temp_tile_data_buffers_if_possible(void); +extern void sub_80861E8(void); // rom4 +extern bool16 sub_80C0944(void); +extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str); + +extern u16 gUnknown_0860F074[]; + +extern u8 gText_DexNational[]; +extern u8 gText_DexHoenn[]; +extern u8 gText_PokedexDiploma[]; + +static void MainCB2(void); +static void Task_DiplomaFadeIn(u8); +static void Task_DiplomaWaitForKeyPress(u8); +static void Task_DiplomaFadeOut(u8); +static void DisplayDiplomaText(void); +static void InitDiplomaBg(void); +static void InitDiplomaWindow(void); +static void PrintDiplomaText(u8 *, u8, u8); + +EWRAM_DATA void **gDiplomaTilemapPtr = {NULL}; + +static void VBlankCB(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static const u16 gDiplomaPalettes[][16] = +{ + INCBIN_U16("graphics/misc/diploma_national.gbapal"), + INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"), +}; + +static const u8 gDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz"); +static const u8 gDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz"); + +void CB2_ShowDiploma(void) +{ + void **mallocPtr; + + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0); + // why doesn't this one use the dma manager either? + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + LoadPalette(gDiplomaPalettes, 0, 64); + gDiplomaTilemapPtr = malloc(0x1000); + InitDiplomaBg(); + InitDiplomaWindow(); + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1, &gDiplomaTiles, 0, 0, 0); + while (free_temp_tile_data_buffers_if_possible()) + ; + LZDecompressWram(&gDiplomaTilemap, gDiplomaTilemapPtr); + CopyBgTilemapBufferToVram(1); + DisplayDiplomaText(); + BlendPalettes(-1, 16, 0); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + EnableInterrupts(1); + SetVBlankCallback(VBlankCB); + SetMainCallback2(MainCB2); + CreateTask(Task_DiplomaFadeIn, 0); +} + +static void MainCB2(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void Task_DiplomaFadeIn(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = Task_DiplomaWaitForKeyPress; +} + +static void Task_DiplomaWaitForKeyPress(u8 taskId) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = Task_DiplomaFadeOut; + } +} + +static void Task_DiplomaFadeOut(u8 taskId) +{ + if (!gPaletteFade.active) + { + Free(gDiplomaTilemapPtr); + FreeAllWindowBuffers(); + DestroyTask(taskId); + SetMainCallback2(sub_80861E8); + } +} + +static void DisplayDiplomaText(void) +{ + if (sub_80C0944()) + { + SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_BG0_ON); + StringCopy(gStringVar1, gText_DexNational); + } + else + { + SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0); + StringCopy(gStringVar1, gText_DexHoenn); + } + StringExpandPlaceholders(gStringVar4, gText_PokedexDiploma); + PrintDiplomaText(gStringVar4, 0, 1); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + +static const struct BgTemplate gDiplomaBgTemplates[2] = +{ + { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 6, + .screenSize = 1, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, +}; + +static void InitDiplomaBg(void) +{ + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gDiplomaBgTemplates, 2); + SetBgTilemapBuffer(1, gDiplomaTilemapPtr); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ShowBg(0); + ShowBg(1); + SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDALPHA, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0); +} + +static const struct WindowTemplate gDiplomaWinTemplates[2] = +{ + { + .priority = 0, + .tilemapLeft = 5, + .tilemapTop = 2, + .width = 20, + .height = 16, + .paletteNum = 15, + .baseBlock = 1, + }, + DUMMY_WIN_TEMPLATE, +}; + +static void InitDiplomaWindow(void) +{ + InitWindows(gDiplomaWinTemplates); + DeactivateAllTextPrinters(); + LoadPalette(gUnknown_0860F074, 0xF0, 0x20); + FillWindowPixelBuffer(0, 0); + PutWindowTilemap(0); +} + +static void PrintDiplomaText(u8 *text, u8 var1, u8 var2) +{ + struct TextColor color = + { + .fgColor = 0, + .bgColor = 2, + .shadowColor = 3, + }; + + AddTextPrinterParametrized2(0, 1, var1, var2, 0, 0, &color, -1, text); +} diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 7a7c30388d..3f49b89e6b 100755 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -13,7 +13,7 @@ #define MSG_WIN_TOP 12 #define CLOCK_WIN_TOP (MSG_WIN_TOP - 4) -extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, u8 speed, u8 *str); +extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str); extern void (*gGameContinueCallback)(void); diff --git a/sym_ewram.txt b/sym_ewram.txt index b1572bf25a..166ea64d01 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1629,9 +1629,7 @@ gUnknown_0203BCE8: @ 203BCE8 .space 0x4 .include "src/lottery_corner.o" - -gUnknown_0203BCF0: @ 203BCF0 - .space 0x4 + .include "src/diploma.o" gUnknown_0203BCF4: @ 203BCF4 .space 0x4 From f775ccd571f82df745f608c23758185741867eab Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 7 Oct 2017 22:58:21 -0400 Subject: [PATCH 107/182] forgot to remove unnecessary local ptr --- src/diploma.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/diploma.c b/src/diploma.c index 765b018bc8..f2cbcabb7b 100755 --- a/src/diploma.c +++ b/src/diploma.c @@ -53,8 +53,6 @@ static const u8 gDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz"); void CB2_ShowDiploma(void) { - void **mallocPtr; - SetVBlankCallback(NULL); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0); SetGpuReg(REG_OFFSET_BG3CNT, DISPCNT_MODE_0); From 95e4ae06ceacc583ecd7678adda2f19675be507d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 8 Oct 2017 14:54:51 +0200 Subject: [PATCH 108/182] battle message decompiled and dumped --- asm/battle_controller_player.s | 2 +- asm/battle_message.s | 441 ------------------------------- asm/pokemon_summary_screen.s | 2 +- include/battle_2.h | 1 + include/battle_controllers.h | 4 +- include/battle_message.h | 2 + include/battle_string_ids.h | 10 +- include/text.h | 2 +- ld_script.txt | 1 - src/battle_2.c | 4 +- src/battle_message.c | 468 ++++++++++++++++++++++++++------- 11 files changed, 382 insertions(+), 555 deletions(-) delete mode 100644 asm/battle_message.s diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 1ea1bb5f23..73601e84c9 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -4401,7 +4401,7 @@ sub_8059B3C: @ 8059B3C ldrb r0, [r0] cmp r0, 0x1 beq _08059B98 - bl sub_814FBAC + bl SetPpNumbersPaletteInMoveSelection ldrb r1, [r7] lsls r4, r1, 9 adds r0, r5, 0x4 diff --git a/asm/battle_message.s b/asm/battle_message.s deleted file mode 100644 index d78167a261..0000000000 --- a/asm/battle_message.s +++ /dev/null @@ -1,441 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_814F8F8 -sub_814F8F8: @ 814F8F8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, =gStringInfo - ldr r3, =gUnknown_085CD336 -_0814F902: - cmp r2, 0x4 - beq _0814F918 - ldrh r1, [r3] - cmp r1, 0 - bne _0814F90E - adds r2, 0x1 -_0814F90E: - ldr r0, [r5] - adds r3, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _0814F902 -_0814F918: - cmp r2, 0 - blt _0814F944 - cmp r2, 0x2 - bgt _0814F938 - ldr r1, =gText_SpaceIs - adds r0, r4, 0 - bl StringCopy - b _0814F944 - .pool -_0814F938: - cmp r2, 0x4 - bgt _0814F944 - ldr r1, =gText_ApostropheS - adds r0, r4, 0 - bl StringCopy -_0814F944: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_814F8F8 - - thumb_func_start sub_814F950 -sub_814F950: @ 814F950 - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - b _0814F95A -_0814F958: - adds r3, 0x1 -_0814F95A: - ldrb r0, [r3] - cmp r0, 0xFF - bne _0814F958 - ldr r1, =gUnknown_085CD336 - ldr r5, =gStringInfo - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 -_0814F96A: - cmp r4, 0x4 - beq _0814F984 - ldrh r1, [r2] - cmp r1, 0 - bne _0814F976 - adds r4, 0x1 -_0814F976: - ldr r0, [r5] - adds r2, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _0814F96A - cmp r4, 0x4 - bhi _0814F9E0 -_0814F984: - lsls r0, r4, 2 - ldr r1, =_0814F99C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0814F99C: - .4byte _0814F9B0 - .4byte _0814F9B8 - .4byte _0814F9C0 - .4byte _0814F9C8 - .4byte _0814F9D8 -_0814F9B0: - ldr r1, =gText_ExclamationMark - b _0814F9CA - .pool -_0814F9B8: - ldr r1, =gText_ExclamationMark2 - b _0814F9CA - .pool -_0814F9C0: - ldr r1, =gText_ExclamationMark3 - b _0814F9CA - .pool -_0814F9C8: - ldr r1, =gText_ExclamationMark4 -_0814F9CA: - adds r0, r3, 0 - bl StringCopy - b _0814F9E0 - .pool -_0814F9D8: - ldr r1, =gText_ExclamationMark5 - adds r0, r3, 0 - bl StringCopy -_0814F9E0: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_814F950 - - thumb_func_start sub_814F9EC -sub_814F9EC: @ 814F9EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r4, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r1, =gUnknown_085CD660 - ldr r0, =gBattleScripting - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - mov r8, r0 - movs r0, 0x80 - ands r0, r7 - cmp r0, 0 - beq _0814FA24 - movs r0, 0x7F - ands r7, r0 - movs r0, 0 - b _0814FA36 - .pool -_0814FA24: - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - add r0, r8 - ldrb r1, [r0] - adds r0, r7, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 -_0814FA36: - mov r9, r0 - str r4, [sp] - mov r0, sp - strb r7, [r0, 0x4] - mov r1, sp - lsls r6, r7, 1 - adds r3, r6, r7 - lsls r3, 2 - add r3, r8 - ldrb r0, [r3, 0x1] - strb r0, [r1, 0x5] - ldrb r0, [r3, 0x2] - strb r0, [r1, 0x6] - ldrb r0, [r3, 0x3] - strb r0, [r1, 0x7] - mov r0, sp - ldrb r0, [r0, 0x6] - strb r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x7] - strb r0, [r1, 0x9] - ldrb r0, [r3, 0x4] - strb r0, [r1, 0xA] - ldrb r0, [r3, 0x5] - strb r0, [r1, 0xB] - mov r4, sp - ldrb r2, [r4, 0xC] - movs r1, 0x10 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r4, 0xC] - mov r2, sp - ldrb r0, [r3, 0x7] - lsls r0, 4 - movs r5, 0xF - strb r0, [r2, 0xC] - ldrb r2, [r3, 0x8] - adds r0, r5, 0 - ands r0, r2 - ldrb r2, [r4, 0xD] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0xD] - mov r2, sp - ldrb r0, [r3, 0x9] - lsls r0, 4 - ands r1, r5 - orrs r1, r0 - strb r1, [r2, 0xD] - mov r0, sp - ldrb r0, [r0, 0x6] - cmp r0, 0xFF - bne _0814FAC6 - ldr r0, =gBattleScripting - adds r0, 0x24 - ldrb r0, [r0] - adds r1, r7, 0 - bl sub_80397C4 - adds r2, r0, 0 - mov r0, sp - ldrb r0, [r0, 0x5] - ldr r1, [sp] - mov r3, sp - ldrb r3, [r3, 0xA] - bl GetStringCenterAlignXOffsetWithLetterSpacing - mov r2, sp - mov r1, sp - strb r0, [r1, 0x8] - strb r0, [r2, 0x6] -_0814FAC6: - cmp r7, 0x16 - bne _0814FAE0 - ldr r0, =gTextFlags - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - b _0814FAE8 - .pool -_0814FAE0: - ldr r0, =gTextFlags - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 -_0814FAE8: - strb r1, [r0] - adds r3, r0, 0 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r2, =0x01000002 - ands r1, r2 - adds r2, r0, 0 - cmp r1, 0 - beq _0814FB10 - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - b _0814FB18 - .pool -_0814FB10: - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_0814FB18: - strb r0, [r3] - cmp r7, 0 - beq _0814FB22 - cmp r7, 0x16 - bne _0814FB6C -_0814FB22: - ldr r1, [r2] - ldr r0, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0814FB34 - movs r6, 0x1 - b _0814FB5C - .pool -_0814FB34: - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - cmp r1, 0 - beq _0814FB54 - ldr r4, =gUnknown_085CD668 - bl sub_8185FC4 - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r6, [r0] - b _0814FB5C - .pool -_0814FB54: - bl sav2_get_text_speed - lsls r0, 24 - lsrs r6, r0, 24 -_0814FB5C: - ldr r0, =gTextFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _0814FB7E - .pool -_0814FB6C: - adds r0, r6, r7 - lsls r0, 2 - add r0, r8 - ldrb r6, [r0, 0x6] - ldrb r1, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r3] -_0814FB7E: - mov r0, sp - adds r1, r6, 0 - movs r2, 0 - bl AddTextPrinter - mov r0, r9 - cmp r0, 0 - beq _0814FB9C - adds r0, r7, 0 - bl PutWindowTilemap - adds r0, r7, 0 - movs r1, 0x3 - bl CopyWindowToVram -_0814FB9C: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_814F9EC - - thumb_func_start sub_814FBAC -sub_814FBAC: @ 814FBAC - push {r4,r5,lr} - ldr r0, =gActiveBank - ldrb r2, [r0] - lsls r1, r2, 9 - ldr r0, =gBattleBufferA + 4 - adds r1, r0 - ldr r4, =gUnknown_08D85620 - ldr r0, =gMoveSelectionCursor - adds r2, r0 - ldrb r2, [r2] - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2 - ldrb r0, [r0] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - bl sub_814FC20 - lsls r0, 24 - ldr r5, =gPlttBufferUnfaded - lsrs r0, 22 - adds r0, r4 - ldrh r1, [r0] - adds r2, r5, 0 - adds r2, 0xB8 - strh r1, [r2] - ldrh r0, [r0, 0x2] - adds r5, 0xB6 - strh r0, [r5] - ldr r4, =gPlttBufferFaded + 0xB8 - adds r0, r2, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl CpuSet - subs r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl CpuSet - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_814FBAC - - thumb_func_start sub_814FC20 -sub_814FC20: @ 814FC20 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, r2 - beq _0814FC68 - cmp r0, 0x2 - bhi _0814FC3A - cmp r2, 0x1 - bhi _0814FC68 - b _0814FC42 -_0814FC3A: - cmp r0, 0x7 - bhi _0814FC4C - cmp r2, 0x2 - bhi _0814FC68 -_0814FC42: - movs r0, 0x2 - subs r0, r2 - lsls r0, 24 - lsrs r0, 24 - b _0814FC6A -_0814FC4C: - cmp r2, 0 - bne _0814FC54 - movs r0, 0x2 - b _0814FC6A -_0814FC54: - lsrs r0, r1, 26 - cmp r2, r0 - bhi _0814FC5E - movs r0, 0x1 - b _0814FC6A -_0814FC5E: - lsrs r0, r1, 25 - cmp r3, r0 - bhi _0814FC68 - movs r0, 0 - b _0814FC6A -_0814FC68: - movs r0, 0x3 -_0814FC6A: - pop {r1} - bx r1 - thumb_func_end sub_814FC20 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index bcc52c1720..e1a5e4e4c3 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -7571,7 +7571,7 @@ sub_81C3B08: @ 81C3B08 adds r7, r4, 0 ldrb r0, [r5] adds r1, r6, 0 - bl sub_814FC20 + bl GetCurrentPpToMaxPpState lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 diff --git a/include/battle_2.h b/include/battle_2.h index ab5068446b..677bf0505a 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -15,6 +15,7 @@ void SwapTurnOrder(u8 id1, u8 id2); void BattleTurnPassed(void); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); +u32 sub_80397C4(u32 setId, u32 tableId); void sub_8039E9C(struct Sprite *sprite); extern const u8 gStatusConditionString_PoisonJpn[8]; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 2281fdaffb..eea544b556 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -39,8 +39,8 @@ struct MovePpInfo struct ChooseMoveStruct { u16 moves[4]; - u8 ppNumbers[4]; - u8 ppWithBonusNumbers[4]; + u8 currentPp[4]; + u8 maxPp[4]; u16 species; u8 monType1; u8 monType2; diff --git a/include/battle_message.h b/include/battle_message.h index be2aca9b25..3b154c5a64 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -205,6 +205,8 @@ void BufferStringBattle(u16 stringID); u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src); u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); void sub_814F9EC(const u8* text, u8 arg1); +void SetPpNumbersPaletteInMoveSelection(void); +u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); #define TEXT_BUFF_ARRAY_COUNT 16 diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index 546cb2e462..f242284b04 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -12,6 +12,8 @@ #define STRINGID_USEDMOVE 4 #define STRINGID_BATTLEEND 5 + +// todo: make some of those names less vague: attacker/target vs pkmn, etc. #define STRINGID_TRAINER1LOSETEXT 12 #define STRINGID_PKMNGAINEDEXP 13 #define STRINGID_PKMNGREWTOLV 14 @@ -28,8 +30,8 @@ #define STRINGID_STATSWONTINCREASE2 25 #define STRINGID_AVOIDEDDAMAGE 26 #define STRINGID_ITDOESNTAFFECT 27 -#define STRINGID_PKMNFAINTED 28 -#define STRINGID_PKMNFAINTED2 29 +#define STRINGID_ATTACKERFAINTED 28 +#define STRINGID_TARGETFAINTED 29 #define STRINGID_PLAYERGOTMONEY 30 #define STRINGID_PLAYERWHITEOUT 31 #define STRINGID_PLAYERWHITEOUT2 32 @@ -143,7 +145,7 @@ #define STRINGID_PKMNTOOKFOE 140 #define STRINGID_PKMNREDUCEDPP 141 #define STRINGID_PKMNSTOLEITEM 142 -#define STRINGID_PKMNCANTESCAPE 143 +#define STRINGID_TARGETCANTESCAPENOW 143 #define STRINGID_PKMNFELLINTONIGHTMARE 144 #define STRINGID_PKMNLOCKEDINNIGHTMARE 145 #define STRINGID_PKMNLAIDCURSE 146 @@ -357,7 +359,7 @@ #define STRINGID_THEWALLSHATTERED 354 #define STRINGID_PKMNSXPREVENTSYSZ 355 #define STRINGID_PKMNSXCUREDITSYPROBLEM 356 -#define STRINGID_PKMNCANTESCAPE2 357 +#define STRINGID_ATTACKERCANTESCAPE 357 #define STRINGID_PKMNOBTAINEDX 358 #define STRINGID_PKMNOBTAINEDX2 359 #define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 diff --git a/include/text.h b/include/text.h index 217de0687a..c09b41ad3f 100644 --- a/include/text.h +++ b/include/text.h @@ -103,7 +103,7 @@ struct TextPrinterSubStruct struct TextSubPrinter // TODO: Better name { - u8* current_text_offset; + const u8* current_text_offset; u8 windowId; u8 fontId; u8 x; diff --git a/ld_script.txt b/ld_script.txt index 20ec4d145f..12815bcd5b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -191,7 +191,6 @@ SECTIONS { asm/battle_transition.o(.text); asm/battle_controller_linkpartner.o(.text); src/battle_message.o(.text); - asm/battle_message.o(.text); asm/cable_car.o(.text); asm/math_util.o(.text); asm/roulette_util.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index 8e48f3ed64..be0d0be72e 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -4007,8 +4007,8 @@ static void HandleTurnActionSelectionState(void) for (i = 0; i < 4; i++) { moveInfo.moves[i] = gBattleMons[gActiveBank].moves[i]; - moveInfo.ppNumbers[i] = gBattleMons[gActiveBank].pp[i]; - moveInfo.ppWithBonusNumbers[i] = CalculatePPWithBonus( + moveInfo.currentPp[i] = gBattleMons[gActiveBank].pp[i]; + moveInfo.maxPp[i] = CalculatePPWithBonus( gBattleMons[gActiveBank].moves[i], gBattleMons[gActiveBank].ppBonuses, i); diff --git a/src/battle_message.c b/src/battle_message.c index 510b8a5812..77a461544c 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -9,6 +9,9 @@ #include "event_data.h" #include "link.h" #include "item.h" +#include "window.h" +#include "palette.h" +#include "battle_controllers.h" extern u16 gLastUsedItem; extern u8 gLastUsedAbility; @@ -25,11 +28,15 @@ extern u16 gPartnerTrainerId; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; +extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_0203C7B4; +extern struct StringInfoBattle *gStringInfo; extern const u8 gMoveNames[LAST_MOVE_INDEX + 1][13]; extern const u8 gAbilityNames[][13]; extern const u8 gTrainerClassNames[][13]; extern const u8 gTypeNames[][7]; +extern const u16 gUnknown_08D85620[]; // strings extern const u8 gText_PkmnBoxSomeonesPCFull[]; @@ -50,10 +57,13 @@ extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav extern const u8* GetTrainer1LoseText(void); // battle_setup extern const u8* GetTrainer2LoseText(void); // battle_setup extern void GetFrontierTrainerName(u8 *dst, u16 trainerId); +extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing); +extern u8 sub_8185FC4(void); +extern u8 sav2_get_text_speed(void); // this file's functions -void sub_814F8F8(u8 *txtPtr); -void sub_814F950(u8 *txtPtr); +static void sub_814F8F8(u8 *textPtr); +static void sub_814F950(u8 *dst); static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); // ewram variables @@ -63,6 +73,7 @@ EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0}; EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0}; // const rom data +// todo: make some of those names less vague: attacker/target vs pkmn, etc. const u8 gText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}"); const u8 gText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p"); @@ -83,14 +94,14 @@ const u8 gText_AvoidedDamage[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage wit const u8 gText_PkmnMakesGroundMiss[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!"); const u8 gText_PkmnAvoidedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!"); const u8 gText_ItDoesntAffect[] = _("It doesn’t affect\n{B_DEF_NAME_WITH_PREFIX}…"); -const u8 gText_PkmnFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); -const u8 gText_PkmnFainted2[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); +const u8 gText_AttackerFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); +const u8 gText_TargetFainted[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); const u8 gText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); const u8 gText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); const u8 gText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); const u8 gText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); const u8 gText_CantEscape2[] = _("Can’t escape!\p"); -const u8 gText_PkmnCantEscape2[] = _("{B_ATK_NAME_WITH_PREFIX} can’t escape!"); +const u8 gText_AttackerCantEscape[] = _("{B_ATK_NAME_WITH_PREFIX} can’t escape!"); const u8 gText_HitXTimes[] = _("Hit {B_BUFF1} time(s)!"); const u8 gText_PkmnFellAsleep[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!"); const u8 gText_PkmnMadeSleep[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); @@ -206,7 +217,7 @@ const u8 gText_PkmnTryingToTakeFoe[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto const u8 gText_PkmnTookFoe[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!"); const u8 gText_PkmnReducedPP[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}’s\n{B_BUFF1} by {B_BUFF2}!"); const u8 gText_PkmnStoleItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!"); -const u8 gText_PkmnCantEscape[] = _("{B_DEF_NAME_WITH_PREFIX} can’t\nescape now!"); +const u8 gText_TargetCantEscapeNow[] = _("{B_DEF_NAME_WITH_PREFIX} can’t\nescape now!"); const u8 gText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!"); const u8 gText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); const u8 gText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); @@ -289,10 +300,10 @@ const u8 gText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_ const u8 gText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); const u8 gText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); const u8 gText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}’s {B_BUFF2}!"); -const u8 gText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}’s {STRING 27}\nprevents burns!"); +const u8 gText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_EFF_ABILITY}\nprevents burns!"); const u8 gText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); const u8 gText_PkmnsXBlocksY2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); -const u8 gText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}’s {STRING 24}\nrestored its HP a little!"); +const u8 gText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_ATK_ABILITY}\nrestored its HP a little!"); const u8 gText_PkmnsXWhippedUpSandstorm[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); const u8 gText_PkmnsXIntensifiedSun[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nintensified the sun’s rays!"); const u8 gText_PkmnsXPreventsYLoss[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); @@ -302,11 +313,11 @@ const u8 gText_PkmnsXCuredYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B const u8 gText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!"); const u8 gText_PkmnTransformed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!"); const u8 gText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ntook the attack!"); -const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}’s {STRING 23}\nprevents switching!\p"); +const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}’s {B_LAST_ABILITY}\nprevents switching!\p"); const u8 gText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s\l{B_BUFF1} from working!"); const u8 gText_PkmnsXMadeItIneffective[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); -const u8 gText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}’s {STRING 27}\nprevents flinching!"); -const u8 gText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}’s {STRING 24}\nprevents {B_DEF_NAME_WITH_PREFIX}’s\l{B_DEF_ABILITY} from working!"); +const u8 gText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_EFF_ABILITY}\nprevents flinching!"); +const u8 gText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}’s\l{B_DEF_ABILITY} from working!"); const u8 gText_PkmnsXCuredItsYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); const u8 gText_PkmnsXHadNoEffectOnY[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); const u8 gText_StatSharply[] = _("sharply "); @@ -329,7 +340,7 @@ const u8 gText_NotVeryEffective[] = _("It’s not very effective…"); const u8 gText_SuperEffective[] = _("It’s super effective!"); const u8 gText_GotAwaySafely[] = _("{PLAY_SE 0x0011}Got away safely!\p"); const u8 gText_PkmnFledUsingIts[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); -const u8 gText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {STRING 24}!\p"); +const u8 gText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); const u8 gText_WildPkmnFled[] = _("{PLAY_SE 0x0011}Wild {B_BUFF1} fled!"); const u8 gText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_20}!"); const u8 gText_TwoLinkTrainersDefeated[] = _("Player beat {B_20}\nand {B_21}!"); @@ -537,8 +548,8 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] = gText_StatsWontIncrease2, gText_AvoidedDamage, gText_ItDoesntAffect, - gText_PkmnFainted, - gText_PkmnFainted2, + gText_AttackerFainted, + gText_TargetFainted, gText_PlayerGotMoney, gText_PlayerWhiteout, gText_PlayerWhiteout2, @@ -652,7 +663,7 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] = gText_PkmnTookFoe, gText_PkmnReducedPP, gText_PkmnStoleItem, - gText_PkmnCantEscape, + gText_TargetCantEscapeNow, gText_PkmnFellIntoNightmare, gText_PkmnLockedInNightmare, gText_PkmnLaidCurse, @@ -866,7 +877,7 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] = gText_TheWallShattered, gText_PkmnsXPreventsYsZ, gText_PkmnsXCuredItsYProblem, - gText_PkmnCantEscape2, + gText_AttackerCantEscape, gText_PkmnObtainedX, gText_PkmnObtainedX2, gText_PkmnObtainedXYObtainedZ, @@ -899,30 +910,80 @@ const u16 gMissStringIds[] = STRINGID_PKMNMAKESGROUNDMISS }; -// todo: change values to string Ids -const u16 gUnknown_085CC83E[] = +const u16 gNoEscapeStringIds[] = { - 0x00e2, 0x00e3, 0x0021, - 0x0112, 0x0165, 0x00e8, 0x00e9, 0x00e5, 0x00ed, 0x00f0, 0x00f3, - 0x00ee, 0x00f4, 0x0066, 0x0067, 0x00ef, 0x00f5, 0x00ea, 0x00eb, - 0x00ec, 0x0065, 0x0098, 0x00e5, 0x00e5, 0x004e, 0x0160, 0x004d, - 0x0161, 0x004f, 0x0068, 0x0069, 0x001b, 0x006a, 0x0139, 0x0052, - 0x0053, 0x0070, 0x0071, 0x0073, 0x0074, 0x006c, 0x006e, 0x00f7, - 0x004c, 0x0075, 0x0076, 0x0077, 0x00d5, 0x00d6, 0x003d, 0x0130, - 0x0145, 0x0146, 0x00d7, 0x00d8, 0x003e, 0x0130, 0x0054, 0x0055, - 0x0056, 0x0057, 0x0058, 0x0059, 0x013d, 0x013e, 0x005a, 0x005c, - 0x005b, 0x005d, 0x005b, 0x0148, 0x0061, 0x00e5, 0x0063, 0x00e5, - 0x007d, 0x00e5, 0x007e, 0x00fb, 0x0028, 0x0029, 0x0037, 0x0038, - 0x0023, 0x0024, 0x002e, 0x002f, 0x0031, 0x0032, 0x0035, 0x0036, - 0x0017, 0x007c, 0x0045, 0x0136, 0x002d, 0x0139, 0x013b, 0x013c, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0142, 0x00a1, 0x014f, 0x0107, - 0x0108, 0x0109, 0x010a, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, - 0x0110, 0x0110, 0x0110, 0x0111, 0x0110, 0x0110, 0x0110, 0x00f1, - 0x0110, 0x0110, 0x0110, 0x0116, 0x0117, 0x0118, 0x0119, 0x016d, - 0x011b, 0x011c, 0x011e, 0x011f, 0x0120, 0x0128, 0x0123, 0x0126, - 0x0125, 0x0124, 0x0127, 0x0129, 0x0156, 0x0131, 0x0163, 0x016a, - 0x00c7, 0x0163, 0x016a, 0x00c9, 0x0163, 0x016a, 0x0166, 0x0167, - 0x0168, 0x00cb, 0x0137, 0x0177, 0x0178, 0x0179, 0x017a, + STRINGID_CANTESCAPE, STRINGID_DONTLEAVEBIRCH, STRINGID_PREVENTSESCAPE, + STRINGID_CANTESCAPE2, STRINGID_ATTACKERCANTESCAPE +}; + +const u16 gMoveWeatherChangeStringIds[] = +{ + STRINGID_STARTEDTORAIN, STRINGID_DOWNPOURSTARTED, STRINGID_BUTITFAILED, + STRINGID_SANDSTORMBREWED, STRINGID_SUNLIGHTGOTBRIGHT, STRINGID_STARTEDHAIL +}; + +const u16 gSandStormHailContinuesStringIds[] = +{ + STRINGID_SANDSTORMRAGES, STRINGID_HAILCONTINUES +}; + +const u16 gSandStormHailDmgStringIds[] = +{ + STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL +}; + +// todo once battlescripts are dumped +const u16 gTooLazyToSplitThemStringIds[] = +{ + STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED, STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, + STRINGID_RAINSTOPPED, STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, + STRINGID_BUTITFAILED, STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, + STRINGID_PKMNRAISEDDEFALITTLE, STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, + STRINGID_PKMNCOVEREDBYVEIL, STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK, + STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE, + STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY, STRINGID_PKMNMAKINGUPROAR, + STRINGID_PKMNCALMEDDOWN, STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE, + STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR, STRINGID_FAILEDTOSWALLOW, + STRINGID_PKMNHPFULL, STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, + STRINGID_PKMNSTAYEDAWAKEUSING, STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, + STRINGID_STATSWONTINCREASE, STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, + STRINGID_PKMNUSEDXTOGETPUMPED, STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, + STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3, STRINGID_PKMNWHIPPEDWHIRLWIND, + STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING, + STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, + STRINGID_PKMNSPRANGUP, STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, + STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, + STRINGID_PKMNTRAPPEDBYSANDTOMB, STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED, + STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED, STRINGID_PKMNTRANSFORMEDINTO, + STRINGID_BUTITFAILED, STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE, + STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY, STRINGID_PKMNWASPARALYZED, + STRINGID_PKMNWASPARALYZEDBY, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP, + STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY, STRINGID_PKMNWASFROZEN, + STRINGID_PKMNFROZENBY, STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY, + STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED, STRINGID_PKMNFELLINLOVE, + STRINGID_PKMNSXINFATUATEDY, STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE, + STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED, STRINGID_BELLCHIMED, + STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, + STRINGID_SOOTHINGAROMA, STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY, + STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, + STRINGID_SHOOTSOCLOSE, STRINGID_ITISRAINING, STRINGID_ITISRAINING, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, + STRINGID_SANDSTORMISRAGING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, + STRINGID_ITISRAINING, STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_PKMNLOAFING, + STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, STRINGID_PKMNPRETENDNOTNOTICE, + STRINGID_PKMNINCAPABLEOFPOWER, STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER, + STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX, + STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT, + STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT, + STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS, STRINGID_PKMNSXPREVENTSBURNS, + STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPARALYSISWITH, + STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPOISONINGWITH, + STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNOBTAINEDX, + STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ, STRINGID_PKMNRAISEDFIREPOWERWITH, + STRINGID_PKMNSXMADEYINEFFECTIVE, STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, + STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL, }; const u16 gTrappingMoves[] = @@ -1022,7 +1083,6 @@ const u8 gText_WillChampinshipDreamComeTrue[] = _("Will the championship dream c const u8 gText_AFormerChampion[] = _("A former CHAMPION!\p"); const u8 gText_ThePreviousChampion[] = _("The previous CHAMPION!\p"); const u8 gText_TheUnbeatenChampion[] = _("The unbeaten CHAMPION!\p"); - const u8 gText_PlayerMon1Name[] = _("{B_PLAYER_MON1_NAME}"); const u8 gText_Vs[] = _("VS"); const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}"); @@ -1085,79 +1145,104 @@ const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}’s battle result was const u8 gText_LinkTrainerWantsToBattlePause[] = _("{B_20}\nwants to battle!{PAUSE 49}"); const u8 gText_TwoLinkTrainersWantToBattlePause[] = _("{B_20} and {B_21}\nwant to battle!{PAUSE 49}"); -const u16 gUnknown_085CD336[] = +static const u16 sUnknownMoveTable[] = { - 0x000e, 0x0046, 0x004a, 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, - 0x0079, 0x007b, 0x007d, 0x0094, 0x0096, 0x0097, 0x009b, 0x009c, - 0x009f, 0x00a4, 0x00aa, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x00cd, - 0x00cf, 0x00d6, 0x00ed, 0x00f4, 0x00f5, 0x010a, 0x010f, 0x0112, - 0x0113, 0x011a, 0x0125, 0x0136, 0x013c, 0x0140, 0x0149, 0x014a, - 0x014e, 0x0154, 0x0000, 0x0064, 0x0069, 0x0075, 0x0085, 0x00af, - 0x010d, 0x0153, 0x0000, 0x0060, 0x0061, 0x0066, 0x0068, 0x008c, - 0x0090, 0x00a5, 0x00b8, 0x010c, 0x0111, 0x0118, 0x0119, 0x0129, - 0x012a, 0x012c, 0x0139, 0x015a, 0x015b, 0x0000, 0x0001, 0x000a, - 0x000b, 0x0011, 0x0013, 0x0014, 0x0015, 0x001e, 0x0023, 0x0025, - 0x0027, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0040, 0x0047, - 0x0051, 0x0059, 0x005a, 0x005b, 0x005c, 0x0067, 0x0076, 0x007a, - 0x0080, 0x0084, 0x008b, 0x0091, 0x00a3, 0x00a9, 0x00ab, 0x00ae, - 0x00c1, 0x00cc, 0x00d5, 0x00f9, 0x00fd, 0x00ff, 0x0100, 0x0103, - 0x0104, 0x0110, 0x011b, 0x0141, 0x0157, 0x0000, + MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH, + MOVE_HARDEN, MOVE_MINIMIZE, MOVE_SMOKESCREEN, + MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_EGG_BOMB, + MOVE_SMOG, MOVE_BONE_CLUB, MOVE_FLASH, MOVE_SPLASH, + MOVE_ACID_ARMOR, MOVE_BONEMERANG, MOVE_REST, MOVE_SHARPEN, + MOVE_SUBSTITUTE, MOVE_MIND_READER, MOVE_SNORE, + MOVE_PROTECT, MOVE_SPIKES, MOVE_ENDURE, MOVE_ROLLOUT, + MOVE_SWAGGER, MOVE_SLEEP_TALK, MOVE_HIDDEN_POWER, + MOVE_PSYCH_UP, MOVE_EXTREME_SPEED, MOVE_FOLLOW_ME, + MOVE_TRICK, MOVE_ASSIST, MOVE_INGRAIN, MOVE_KNOCK_OFF, + MOVE_CAMOUFLAGE, MOVE_ASTONISH, MOVE_ODOR_SLEUTH, + MOVE_GRASS_WHISTLE, MOVE_SHEER_COLD, MOVE_MUDDY_WATER, + MOVE_IRON_DEFENSE, MOVE_BOUNCE, MOVE_NONE, + + MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, MOVE_AMNESIA, + MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, MOVE_NONE, + + MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, MOVE_DOUBLE_TEAM, + MOVE_BARRAGE, MOVE_TRANSFORM, MOVE_STRUGGLE, MOVE_SCARY_FACE, + MOVE_CHARGE, MOVE_WISH, MOVE_BRICK_BREAK, MOVE_YAWN, + MOVE_FEATHER_DANCE, MOVE_TEETER_DANCE, MOVE_MUD_SPORT, + MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, MOVE_NONE, + + MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP, + MOVE_WING_ATTACK, MOVE_FLY, MOVE_BIND, MOVE_SLAM, + MOVE_HORN_ATTACK, MOVE_WRAP, MOVE_THRASH, MOVE_TAIL_WHIP, + MOVE_LEER, MOVE_BITE, MOVE_GROWL, MOVE_ROAR, + MOVE_SING, MOVE_PECK, MOVE_ABSORB, MOVE_STRING_SHOT, + MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_DIG, MOVE_TOXIC, + MOVE_SCREECH, MOVE_METRONOME, MOVE_LICK, MOVE_CLAMP, + MOVE_CONSTRICT, MOVE_POISON_GAS, MOVE_BUBBLE, + MOVE_SLASH, MOVE_SPIDER_WEB, MOVE_NIGHTMARE, MOVE_CURSE, + MOVE_FORESIGHT, MOVE_CHARM, MOVE_ATTRACT, MOVE_ROCK_SMASH, + MOVE_UPROAR, MOVE_SPIT_UP, MOVE_SWALLOW, MOVE_TORMENT, + MOVE_FLATTER, MOVE_ROLE_PLAY, MOVE_ENDEAVOR, MOVE_TICKLE, + MOVE_COVET, MOVE_NONE }; -static const u8 sDummyWeirdStatusString[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0}; +static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS, EOS, 0, 0}; -const u16 gUnknown_085CD42C[] = +static const u8 gUnknown_085CD42C[] = { - 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101, - 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000, - 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102, - 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100, - 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x01ff, - 0x0000, 0x0100, 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, - 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, 0x0600, 0x0000, + 0xFF, 1, 0, 1, 0, 0, 1, 1, 0xF, 6, 0, 0, 0xFF, 1, + 1, 1, 0, 0, 0, 1, 0xF, 6, 0, 0, 0xEE, 1, 0, 1, 0, + 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, + 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, + 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, + 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, + 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, + 0xEE, 1, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, + 1, 2, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, 0xEE, 7, 0, + 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, + 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, + 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, 0xD, + 0xE, 0xF, 0, 0, 0, 1, 0x20, 1, 0, 0, 0, 1, 0, 2, + 0, 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, + 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, + 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, + 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, + 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0xFF, + 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0, 1, 0xFF, 1, 0, + 0, 0, 1, 0, 6, 0, 0, 0, 1, 0xFF, 1, 0, 0, 0, 1, 0, + 6, 0, 0, 0, 1, 0xFF, 1, 0, 0, 0, 1, 0, 6, 0, 0 }; -const u16 gUnknown_085CD54C[] = +static const u8 gUnknown_085CD54C[] = { - 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101, - 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000, - 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102, - 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100, - 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0100, 0x0f0e, 0x0000, - 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, - 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, - 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, - 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0111, 0x0100, 0x0000, 0x0201, - 0x0301, 0x0000 + 0xFF, 1, 0, 1, 0, 0, 1, 1, 0xF, 6, 0, 0, 0xFF, 1, + 1, 1, 0, 0, 0, 1, 0xF, 6, 0, 0, 0xEE, 1, 0, 1, 0, + 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, + 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, + 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, + 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, + 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, + 0xEE, 1, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, + 1, 2, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, 0xEE, 7, 0, + 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, + 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, + 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, 0xD, + 0xE, 0xF, 0, 0, 0, 1, 0x20, 1, 0, 0, 0, 1, 0, 2, + 0, 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 1, 0xE, 0xF, 0, + 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, + 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, + 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, + 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0xFF, + 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0xFF, 1, + 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0x11, 1, 0, 1, 0, 0, + 1, 2, 1, 3, 0, 0 }; -const u16 * const gUnknown_085CD660[] = +static const u8 * const gUnknown_085CD660[] = { gUnknown_085CD42C, gUnknown_085CD54C }; -const u8 gUnknown_085CD668[] = {8, 4, 1, 0}; - -extern struct StringInfoBattle *gStringInfo; +static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0}; void BufferStringBattle(u16 stringID) { @@ -1356,7 +1441,7 @@ void BufferStringBattle(u16 stringID) } break; case STRINGID_USEDMOVE: // pokemon used a move msg - sub_814F8F8(gBattleTextBuff1); + sub_814F8F8(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names? if (gStringInfo->currentMove > LAST_MOVE_INDEX) StringCopy(gBattleTextBuff2, gText_UnknownMoveTypes[*(&gBattleStruct->stringMoveType)]); @@ -1509,8 +1594,6 @@ static const u8* TryGetStatusString(u8* src) StringGetEnd10(text); \ toCpy = text; -extern u8 gUnknown_0203C7B4; - u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) { u32 dstID = 0; // if they used dstID, why not use srcID as well? @@ -2067,3 +2150,184 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) } } } + +static void sub_814F8F8(u8* textBuff) +{ + s32 counter = 0; + u32 i = 0; + + while (counter != 4) + { + if (sUnknownMoveTable[i] == MOVE_NONE) + counter++; + if (sUnknownMoveTable[i++] == gStringInfo->currentMove) + break; + } + + if (counter >= 0) + { + if (counter <= 2) + StringCopy(textBuff, gText_SpaceIs); // is + else if (counter <= 4) + StringCopy(textBuff, gText_ApostropheS); // 's + } +} + +static void sub_814F950(u8* dst) +{ + s32 counter = 0; + s32 i = 0; + + while (*dst != EOS) + dst++; + + while (counter != 4) + { + if (sUnknownMoveTable[i] == MOVE_NONE) + counter++; + if (sUnknownMoveTable[i++] == gStringInfo->currentMove) + break; + } + + switch (counter) + { + case 0: + StringCopy(dst, gText_ExclamationMark); + break; + case 1: + StringCopy(dst, gText_ExclamationMark2); + break; + case 2: + StringCopy(dst, gText_ExclamationMark3); + break; + case 3: + StringCopy(dst, gText_ExclamationMark4); + break; + case 4: + StringCopy(dst, gText_ExclamationMark5); + break; + } +} + +void sub_814F9EC(const u8 *text, u8 arg1) +{ + const u8 *r8 = gUnknown_085CD660[gBattleScripting.field_24]; + bool32 r9; + struct TextSubPrinter textSubPrinter; + u8 speed; + + if (arg1 & 0x80) + { + arg1 &= ~(0x80); + r9 = FALSE; + } + else + { + FillWindowPixelBuffer(arg1, r8[12 * arg1]); + r9 = TRUE; + } + + textSubPrinter.current_text_offset = text; + textSubPrinter.windowId = arg1; + textSubPrinter.fontId = r8[(12 * arg1) + 1]; + textSubPrinter.x = r8[(12 * arg1) + 2]; + textSubPrinter.y = r8[(12 * arg1) + 3]; + textSubPrinter.currentX = textSubPrinter.x; + textSubPrinter.currentY = textSubPrinter.y; + textSubPrinter.letterSpacing = r8[(12 * arg1) + 4]; + textSubPrinter.lineSpacing = r8[(12 * arg1) + 5]; + textSubPrinter.fontColor_l = 0; + textSubPrinter.fontColor_h = r8[(12 * arg1) + 7]; + textSubPrinter.bgColor = r8[(12 * arg1) + 8]; + textSubPrinter.shadowColor = r8[(12 * arg1) + 9]; + + if (textSubPrinter.x == 0xFF) + { + s32 var2; + u32 var = sub_80397C4(gBattleScripting.field_24, arg1); + var2 = GetStringCenterAlignXOffsetWithLetterSpacing(textSubPrinter.fontId, textSubPrinter.current_text_offset, var, textSubPrinter.letterSpacing); + textSubPrinter.x = textSubPrinter.currentX = var2; + } + + if (arg1 == 0x16) + gTextFlags.flag_1 = 0; + else + gTextFlags.flag_1 = 1; + + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED)) + gTextFlags.flag_2 = 1; + else + gTextFlags.flag_2 = 0; + + if (arg1 == 0 || arg1 == 0x16) + { + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + speed = 1; + else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + speed = sRecordedBattleTextSpeeds[sub_8185FC4()]; + else + speed = sav2_get_text_speed(); + + gTextFlags.flag_0 = 1; + } + else + { + speed = r8[(12 * arg1) + 6]; + gTextFlags.flag_0 = 0; + } + + AddTextPrinter(&textSubPrinter, speed, NULL); + + if (r9) + { + PutWindowTilemap(arg1); + CopyWindowToVram(arg1, 3); + } +} + +void SetPpNumbersPaletteInMoveSelection(void) +{ + struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]); + const u16 *palPtr = gUnknown_08D85620; + u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBank]], + chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBank]]); + + gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0]; + gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1]; + + CpuCopy16(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], sizeof(u16)); + CpuCopy16(&gPlttBufferUnfaded[91], &gPlttBufferFaded[91], sizeof(u16)); +} + +u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp) +{ + if (maxPp == currentPp) + { + return 3; + } + else if (maxPp <= 2) + { + if (currentPp > 1) + return 3; + else + return 2 - currentPp; + } + else if (maxPp <= 7) + { + if (currentPp > 2) + return 3; + else + return 2 - currentPp; + } + else + { + if (currentPp == 0) + return 2; + if (currentPp <= maxPp / 4) + return 1; + if (currentPp > maxPp / 2) + return 3; + } + + return 0; +} From a9d94cc5d62540f6f20b17280cb8f45adc5683b1 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 8 Oct 2017 22:21:34 -0400 Subject: [PATCH 109/182] decompile save_location.c --- asm/rom4.s | 4 +- asm/save_location.s | 205 ------------------------------------------- data/save_location.s | 13 --- ld_script.txt | 4 +- src/save_location.c | 145 ++++++++++++++++++++++++++++++ 5 files changed, 149 insertions(+), 222 deletions(-) delete mode 100755 asm/save_location.s delete mode 100644 data/save_location.s create mode 100755 src/save_location.c diff --git a/asm/rom4.s b/asm/rom4.s index 8423d0d9a9..0a624620dd 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -1375,7 +1375,7 @@ _080850C8: bl warp_shift bl set_current_map_header_from_sav1_save_old_name bl CopyFieldObjectTemplatesToSav1 - bl sav2_set_x9_depending_on_sav1_map + bl TrySetMapSaveWarpStatus bl ClearTempFieldEventData bl wild_pokemon_reroll bl prev_quest_postbuffer_cursor_backup_reset @@ -1463,7 +1463,7 @@ _080851A2: lsls r0, 24 lsrs r6, r0, 24 bl sub_80EB218 - bl sav2_set_x9_depending_on_sav1_map + bl TrySetMapSaveWarpStatus bl ClearTempFieldEventData bl wild_pokemon_reroll bl prev_quest_postbuffer_cursor_backup_reset diff --git a/asm/save_location.s b/asm/save_location.s deleted file mode 100755 index 1a5b3c6da2..0000000000 --- a/asm/save_location.s +++ /dev/null @@ -1,205 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sav1_are_mapnumbers_in_given_list -sav1_are_mapnumbers_in_given_list: @ 81AFC84 - push {r4,lr} - adds r2, r0, 0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x4 - ldrsb r1, [r0, r1] - lsls r1, 8 - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r0, [r2] - ldr r1, =0x0000ffff - cmp r0, r1 - beq _081AFCC4 - adds r4, r1, 0 - adds r1, r2, 0 -_081AFCAA: - ldrh r0, [r1] - cmp r0, r3 - bne _081AFCBC - movs r0, 0x1 - b _081AFCC6 - .pool -_081AFCBC: - adds r1, 0x2 - ldrh r0, [r1] - cmp r0, r4 - bne _081AFCAA -_081AFCC4: - movs r0, 0 -_081AFCC6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sav1_are_mapnumbers_in_given_list - - thumb_func_start sav1_is_in_pokecenter -sav1_is_in_pokecenter: @ 81AFCCC - push {lr} - ldr r0, =gUnknown_086143BC - bl sav1_are_mapnumbers_in_given_list - pop {r1} - bx r1 - .pool - thumb_func_end sav1_is_in_pokecenter - - thumb_func_start sub_81AFCDC -sub_81AFCDC: @ 81AFCDC - push {lr} - ldr r0, =gUnknown_0861440A - bl sav1_are_mapnumbers_in_given_list - pop {r1} - bx r1 - .pool - thumb_func_end sub_81AFCDC - - thumb_func_start sub_81AFCEC -sub_81AFCEC: @ 81AFCEC - push {lr} - ldr r0, =gUnknown_0861440E - bl sav1_are_mapnumbers_in_given_list - pop {r1} - bx r1 - .pool - thumb_func_end sub_81AFCEC - - thumb_func_start sav2_set_x9_bit3_when_sav1_in_pokecenter -sav2_set_x9_bit3_when_sav1_in_pokecenter: @ 81AFCFC - push {lr} - bl sav1_is_in_pokecenter - cmp r0, 0 - bne _081AFD18 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0xFD - ands r0, r1 - b _081AFD22 - .pool -_081AFD18: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - orrs r0, r1 -_081AFD22: - strb r0, [r2, 0x9] - pop {r0} - bx r0 - .pool - thumb_func_end sav2_set_x9_bit3_when_sav1_in_pokecenter - - thumb_func_start sub_81AFD2C -sub_81AFD2C: @ 81AFD2C - push {lr} - bl sub_81AFCDC - cmp r0, 0 - bne _081AFD48 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0xFB - ands r0, r1 - b _081AFD52 - .pool -_081AFD48: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x4 - orrs r0, r1 -_081AFD52: - strb r0, [r2, 0x9] - pop {r0} - bx r0 - .pool - thumb_func_end sub_81AFD2C - - thumb_func_start sub_81AFD5C -sub_81AFD5C: @ 81AFD5C - push {lr} - bl sub_81AFCEC - cmp r0, 0 - bne _081AFD78 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0xF7 - ands r0, r1 - b _081AFD82 - .pool -_081AFD78: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x8 - orrs r0, r1 -_081AFD82: - strb r0, [r2, 0x9] - pop {r0} - bx r0 - .pool - thumb_func_end sub_81AFD5C - - thumb_func_start sav2_set_x9_depending_on_sav1_map -sav2_set_x9_depending_on_sav1_map: @ 81AFD8C - push {lr} - bl sav2_set_x9_bit3_when_sav1_in_pokecenter - bl sub_81AFD2C - bl sub_81AFD5C - pop {r0} - bx r0 - thumb_func_end sav2_set_x9_depending_on_sav1_map - - thumb_func_start sub_81AFDA0 -sub_81AFDA0: @ 81AFDA0 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - adds r2, 0xA8 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - movs r1, 0x1 - orrs r0, r1 - movs r1, 0x2 - orrs r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - movs r1, 0x20 - orrs r0, r1 - movs r1, 0x8 - orrs r0, r1 - str r0, [r2] - bx lr - .pool - thumb_func_end sub_81AFDA0 - - thumb_func_start sub_81AFDD0 -sub_81AFDD0: @ 81AFDD0 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x80 - orrs r0, r1 - strb r0, [r2, 0x9] - bx lr - .pool - thumb_func_end sub_81AFDD0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/save_location.s b/data/save_location.s deleted file mode 100644 index eabed7d86a..0000000000 --- a/data/save_location.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_086143BC:: @ 86143BC - .incbin "baserom.gba", 0x6143bc, 0x4e - -gUnknown_0861440A:: @ 861440A - .incbin "baserom.gba", 0x61440a, 0x4 - -gUnknown_0861440E:: @ 861440E - .incbin "baserom.gba", 0x61440e, 0x2 diff --git a/ld_script.txt b/ld_script.txt index 39e5c5bc16..82588be3a9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -244,7 +244,7 @@ SECTIONS { asm/list_menu.o(.text); asm/menu_indicators.o(.text); asm/unk_text_util.o(.text); - asm/save_location.o(.text); + src/save_location.o(.text); asm/item_icon.o(.text); asm/party_menu.o(.text); asm/battle_tent.o(.text); @@ -451,7 +451,7 @@ SECTIONS { data/battle_frontier_2.o(.rodata); data/item_menu.o(.rodata); data/menu_indicators.o(.rodata); - data/save_location.o(.rodata); + src/save_location.o(.rodata); data/item_icon.o(.rodata); data/party_menu.o(.rodata); data/battle_tent.o(.rodata); diff --git a/src/save_location.c b/src/save_location.c new file mode 100755 index 0000000000..87067e14db --- /dev/null +++ b/src/save_location.c @@ -0,0 +1,145 @@ +#include "global.h" +#include "map_constants.h" + +// used to make the list defines a little less ugly. +#define MAP(name) ((MAP_GROUP_##name << 8) + (MAP_ID_##name)) + +// specialSaveWarp flags +#define POKECENTER_SAVEWARP (1 << 1) +#define LOBBY_SAVEWARP (1 << 2) +#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3) + +static bool32 IsCurMapInLocationList(const u16 *list) +{ + u16 locSum = (gSaveBlock1Ptr->location.mapGroup << 8) + (gSaveBlock1Ptr->location.mapNum); + + // im sure it was written a different way, but for the love of christ I cant figure out how to write it different where it still matches. + if (*list != 0xFFFF) + { + u16 termValue = 0xFFFF; + const u16 *localList; + for (localList = list; *localList != termValue; localList++) + if (*localList == locSum) + return TRUE; + } + return FALSE; +} + +// TODO: Not require a packed u16 array for these lists +static const u16 gSaveLocationPokeCenterList[] = +{ + MAP(OLDALE_TOWN_POKEMON_CENTER_1F), + MAP(OLDALE_TOWN_POKEMON_CENTER_2F), + MAP(DEWFORD_TOWN_POKEMON_CENTER_1F), + MAP(DEWFORD_TOWN_POKEMON_CENTER_2F), + MAP(LAVARIDGE_TOWN_POKEMON_CENTER_1F), + MAP(LAVARIDGE_TOWN_POKEMON_CENTER_2F), + MAP(FALLARBOR_TOWN_POKEMON_CENTER_1F), + MAP(FALLARBOR_TOWN_POKEMON_CENTER_2F), + MAP(VERDANTURF_TOWN_POKEMON_CENTER_1F), + MAP(VERDANTURF_TOWN_POKEMON_CENTER_2F), + MAP(PACIFIDLOG_TOWN_POKEMON_CENTER_1F), + MAP(PACIFIDLOG_TOWN_POKEMON_CENTER_2F), + MAP(PETALBURG_CITY_POKEMON_CENTER_1F), + MAP(PETALBURG_CITY_POKEMON_CENTER_2F), + MAP(SLATEPORT_CITY_POKEMON_CENTER_1F), + MAP(SLATEPORT_CITY_POKEMON_CENTER_2F), + MAP(MAUVILLE_CITY_POKEMON_CENTER_1F), + MAP(MAUVILLE_CITY_POKEMON_CENTER_2F), + MAP(RUSTBORO_CITY_POKEMON_CENTER_1F), + MAP(RUSTBORO_CITY_POKEMON_CENTER_2F), + MAP(FORTREE_CITY_POKEMON_CENTER_1F), + MAP(FORTREE_CITY_POKEMON_CENTER_2F), + MAP(LILYCOVE_CITY_POKEMON_CENTER_1F), + MAP(LILYCOVE_CITY_POKEMON_CENTER_2F), + MAP(MOSSDEEP_CITY_POKEMON_CENTER_1F), + MAP(MOSSDEEP_CITY_POKEMON_CENTER_2F), + MAP(SOOTOPOLIS_CITY_POKEMON_CENTER_1F), + MAP(SOOTOPOLIS_CITY_POKEMON_CENTER_2F), + MAP(EVER_GRANDE_CITY_POKEMON_CENTER_1F), + MAP(EVER_GRANDE_CITY_POKEMON_CENTER_2F), + MAP(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), + MAP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), + MAP(BATTLE_FRONTIER_POKEMON_CENTER_1F), + MAP(BATTLE_FRONTIER_POKEMON_CENTER_2F), + MAP(SINGLE_BATTLE_COLOSSEUM), + MAP(TRADE_CENTER), + MAP(RECORD_CORNER), + MAP(DOUBLE_BATTLE_COLOSSEUM), + 0xFFFF, +}; + +static bool32 IsCurMapPokeCenter(void) +{ + return IsCurMapInLocationList(gSaveLocationPokeCenterList); +} + +static const u16 gSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower +{ + MAP(BATTLE_TOWER_LOBBY), + 0xFFFF, +}; + +static bool32 IsCurMapReloadLocation(void) +{ + return IsCurMapInLocationList(gSaveLocationReloadLocList); +} + +// nulled out list. unknown what this would have been +static const u16 gUnknown_0861440E[] = +{ + 0xFFFF, +}; + +bool32 sub_81AFCEC(void) +{ + return IsCurMapInLocationList(gUnknown_0861440E); +} + +static void TrySetPokeCenterWarpStatus(void) +{ + if (IsCurMapPokeCenter() == FALSE) + gSaveBlock2Ptr->specialSaveWarp &= ~(POKECENTER_SAVEWARP); + else + gSaveBlock2Ptr->specialSaveWarp |= POKECENTER_SAVEWARP; +} + +static void TrySetReloadWarpStatus(void) +{ + if (!IsCurMapReloadLocation()) + gSaveBlock2Ptr->specialSaveWarp &= ~(LOBBY_SAVEWARP); + else + gSaveBlock2Ptr->specialSaveWarp |= LOBBY_SAVEWARP; +} + +// this function definitely sets a warp status, but because the list is empty, it's unknown what this does yet. +static void sub_81AFD5C(void) +{ + if (!sub_81AFCEC()) + gSaveBlock2Ptr->specialSaveWarp &= ~(UNK_SPECIAL_SAVE_WARP_FLAG_3); + else + gSaveBlock2Ptr->specialSaveWarp |= UNK_SPECIAL_SAVE_WARP_FLAG_3; +} + +void TrySetMapSaveWarpStatus(void) +{ + TrySetPokeCenterWarpStatus(); + TrySetReloadWarpStatus(); + sub_81AFD5C(); +} + +void sub_81AFDA0(void) +{ + gSaveBlock2Ptr->field_A8 |= 0x8000; + gSaveBlock2Ptr->field_A8 |= 0x1; + gSaveBlock2Ptr->field_A8 |= 0x2; + gSaveBlock2Ptr->field_A8 |= 0x4; + gSaveBlock2Ptr->field_A8 |= 0x10; + gSaveBlock2Ptr->field_A8 |= 0x20; + gSaveBlock2Ptr->field_A8 |= 0x8; +} + +void sub_81AFDD0(void) +{ + gSaveBlock2Ptr->specialSaveWarp |= 0x80; +} From 97c6201cfe57470cfb7f4d00961ec2247573eda8 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 9 Oct 2017 02:19:44 -0400 Subject: [PATCH 110/182] add build/ support. --- .gitignore | 1 + Makefile | 81 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index e1600820c6..9f10eb5b13 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,6 @@ tools/* *.dump *.sa* Thumbs.db +build/ .DS_Store *.ddump diff --git a/Makefile b/Makefile index e176b12582..dd1a96ebbc 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef LD := $(DEVKITARM)/bin/arm-none-eabi-ld -LDFLAGS := -T ld_script.ld -Map pokeemerald.map +LDFLAGS := -T ld_script.ld -Map ../../pokeemerald.map OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy @@ -35,17 +35,22 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen .PHONY: rom clean compare tidy + +$(shell mkdir -p build/ build/emerald/{,asm,data,src}) + C_SRCS := $(wildcard src/*.c) -C_OBJS := $(C_SRCS:%.c=%.o) +C_OBJS := $(C_SRCS:%.c=build/emerald/%.o) ASM_SRCS := $(wildcard asm/*.s) -ASM_OBJS := $(ASM_SRCS:%.s=%.o) +ASM_OBJS := $(ASM_SRCS:%.s=build/emerald/%.o) DATA_ASM_SRCS := $(wildcard data/*.s) -DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=%.o) +DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=build/emerald/%.o) OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) +$OBJS_REL := $(OBJS:build/emerald/%=%) + ROM := pokeemerald.gba ELF := $(ROM:.gba=.elf) @@ -59,8 +64,10 @@ clean: tidy find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + tidy: - rm -f ld_script.ld sym_bss.ld sym_common.ld sym_ewram.ld - rm -f $(ROM) $(ELF) $(OBJS) $(C_SRCS:%.c=%.i) pokeemerald.map + rm -f pokeemerald.gba + rm -f pokeemerald.map + rm -f pokeemerald.elf + rm -r build/* include graphics_file_rules.mk @@ -75,56 +82,58 @@ include graphics_file_rules.mk %.lz: % ; $(GFX) $< $@ %.rl: % ; $(GFX) $< $@ -src/libc.o: CC1 := tools/agbcc/bin/old_agbcc -src/libc.o: CFLAGS := -O2 +%src/libc.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libc.o: CFLAGS := -O2 -src/siirtc.o: CFLAGS := -mthumb-interwork +%src/siirtc.o: CFLAGS := -mthumb-interwork -src/agb_flash.o: CFLAGS := -O -mthumb-interwork -src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork -src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork +%src/agb_flash.o: CFLAGS := -O -mthumb-interwork +%src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork +%src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork -src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc -src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc +%src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc +%src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc ifeq ($(NODEP),) -%.o: c_dep = $(shell $(SCANINC) $*.c) +build/emerald/src/%.o: c_dep = $(shell $(SCANINC) src/$(*F).c) else -%.o: c_dep := +build/emerald/src/%.o: c_dep := endif -$(C_OBJS): %.o : %.c $$(c_dep) - @$(CPP) $(CPPFLAGS) $< -o $*.i - @$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s - @echo -e ".text\n\t.align\t2, 0\n" >> $*.s - $(AS) $(ASFLAGS) -o $@ $*.s +build/emerald/%.o : %.c $$(c_dep) + @$(CPP) $(CPPFLAGS) $< -o build/emerald/$*.i + @$(PREPROC) build/emerald/$*.i charmap.txt | $(CC1) $(CFLAGS) -o build/emerald/$*.s + @echo -e ".text\n\t.align\t2, 0\n" >> build/emerald/$*.s + $(AS) $(ASFLAGS) -o $@ build/emerald/$*.s ifeq ($(NODEP),) -%.o: asm_dep = $(shell $(SCANINC) $*.s) +build/emerald/asm/%.o: asm_dep = $(shell $(SCANINC) asm/$(*F).s) +build/emerald/data/%.o: asm_dep = $(shell $(SCANINC) data/$(*F).s) else -%.o: asm_dep := +build/emerald/asm/%.o: asm_dep := +build/emerald/data/%.o: asm_dep := endif -$(ASM_OBJS): %.o: %.s $$(asm_dep) +build/emerald/asm/%.o: asm/%.s $$(asm_dep) $(AS) $(ASFLAGS) -o $@ $< -$(DATA_ASM_OBJS): %.o: %.s $$(asm_dep) +build/emerald/data/%.o: data/%.s $$(asm_dep) $(PREPROC) $< charmap.txt | $(AS) $(ASFLAGS) -o $@ -sym_bss.ld: sym_bss.txt - $(RAMSCRGEN) .bss sym_bss.txt ENGLISH >$@ +build/emerald/sym_bss.ld: sym_bss.txt + cd build/emerald && ../../$(RAMSCRGEN) .bss ../../sym_bss.txt ENGLISH >sym_bss.ld -sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) - $(RAMSCRGEN) COMMON sym_common.txt ENGLISH -c src,common_syms >$@ +build/emerald/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) + cd build/emerald && ../../$(RAMSCRGEN) COMMON ../../sym_common.txt ENGLISH -c src,../../common_syms >sym_common.ld -sym_ewram.ld: sym_ewram.txt - $(RAMSCRGEN) ewram_data sym_ewram.txt ENGLISH >$@ +build/emerald/sym_ewram.ld: sym_ewram.txt + cd build/emerald && ../../$(RAMSCRGEN) ewram_data ../../sym_ewram.txt ENGLISH >sym_ewram.ld -ld_script.ld: ld_script.txt sym_bss.ld sym_common.ld sym_ewram.ld - sed -f ld_script.sed ld_script.txt >ld_script.ld +build/emerald/ld_script.ld: ld_script.txt build/emerald/sym_bss.ld build/emerald/sym_common.ld build/emerald/sym_ewram.ld + cd build/emerald && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" >ld_script.ld -$(ELF): ld_script.ld $(OBJS) - $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBGCC) +pokeemerald.elf: build/emerald/ld_script.ld $(OBJS) + cd build/emerald && $(LD) $(LDFLAGS) -o ../../$@ $(OBJS_REL) ../../$(LIBGCC) -$(ROM): $(ELF) +pokeemerald.gba: %.gba: %.elf $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ From 6941be8e338ed842352d3984b69a9051517df7b0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 13:41:07 +0200 Subject: [PATCH 111/182] match and clean up ai script commands --- src/battle_ai_script_commands.c | 840 +++++--------------------------- 1 file changed, 115 insertions(+), 725 deletions(-) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 92126e40c7..bba66983b1 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -7,11 +7,13 @@ #include "rng.h" #include "item.h" #include "battle_move_effects.h" +#include "moves.h" +#include "util.h" #define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) #define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8) #define AIScriptRead8(ptr) ((ptr)[0]) -#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr) +#define AIScriptReadPtr(ptr) (const u8*) AIScriptRead32(ptr) #define AI_ACTION_DONE 0x0001 #define AI_ACTION_FLEE 0x0002 @@ -52,16 +54,16 @@ AI scripts. extern u32 gBattleTypeFlags; extern u8 gActiveBank; -extern struct BattlePokemon gBattleMons[4]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gBankTarget; extern u8 gAbsentBankFlags; -extern u16 gLastUsedMovesByBanks[4]; +extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; -extern u32 gStatuses3[4]; +extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern u16 gSideAffecting[2]; -extern u16 gBattlePartyID[4]; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u16 gDynamicBasePower; extern u8 gBattleMoveFlags; extern s32 gBattleMoveDamage; @@ -70,13 +72,8 @@ extern u16 gBattleWeather; extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; -extern const u32 gBitTable[]; -extern u8 * const gBattleAI_ScriptsTable[]; +extern const u8 * const gBattleAI_ScriptsTable[]; -extern u8 GetWhoStrikesFirst(u8, u8, u8); -extern void AI_CalcDmg(u8, u8); - -extern u8 CheckMoveLimitations(); extern u32 GetAiScriptsInRecordedBattle(); extern u32 GetAiScriptsInBattleFactory(); @@ -116,8 +113,8 @@ static void BattleAICmd_if_move(void); static void BattleAICmd_if_not_move(void); static void BattleAICmd_if_in_bytes(void); static void BattleAICmd_if_not_in_bytes(void); -static void BattleAICmd_if_in_words(void); -static void BattleAICmd_if_not_in_words(void); +static void BattleAICmd_if_in_hwords(void); +static void BattleAICmd_if_not_in_hwords(void); static void BattleAICmd_if_user_can_damage(void); static void BattleAICmd_if_user_cant_damage(void); static void BattleAICmd_get_turn_count(void); @@ -227,8 +224,8 @@ static const BattleAICmdFunc sBattleAICmdTable[] = BattleAICmd_if_not_move, // 0x1A BattleAICmd_if_in_bytes, // 0x1B BattleAICmd_if_not_in_bytes, // 0x1C - BattleAICmd_if_in_words, // 0x1D - BattleAICmd_if_not_in_words, // 0x1E + BattleAICmd_if_in_hwords, // 0x1D + BattleAICmd_if_not_in_hwords, // 0x1E BattleAICmd_if_user_can_damage, // 0x1F BattleAICmd_if_user_cant_damage, // 0x20 BattleAICmd_get_turn_count, // 0x21 @@ -472,13 +469,11 @@ static u8 BattleAI_ChooseMoveOrAction_Singles(void) return consideredMoveArray[Random() % numOfBestMoves]; } -#ifdef NONMATCHING static u8 BattleAI_ChooseMoveOrAction_Doubles(void) { s32 i; s32 j; s32 scriptsToRun; - s16 mostMovePoints; s16 bestMovePointsForTarget[4]; s8 mostViableTargetsArray[4]; u8 actionOrMoveIndex[4]; @@ -486,27 +481,27 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void) u8 mostViableMovesIndices[4]; s32 mostViableTargetsNo; s32 mostViableMovesNo; + s16 mostMovePoints; - for (i = 0; i < 4; i++) //08130D14 + for (i = 0; i < 4; i++) { if (i == sBank_AI || gBattleMons[i].hp == 0) { - //_08130D2E actionOrMoveIndex[i] = -1; bestMovePointsForTarget[i] = -1; } - //_08130D48 else { if (gBattleTypeFlags & BATTLE_TYPE_PALACE) BattleAI_SetupAIData(gBattleStruct->field_92 >> 4); else BattleAI_SetupAIData(0xF); - //_08130D76 + gBankTarget = i; - if ((i & 1) != (sBank_AI & 1)) + + if ((i & BIT_SIDE) != (sBank_AI & BIT_SIDE)) RecordLastUsedMoveByTarget(); - //_08130D90 + AI_THINKING_STRUCT->aiLogicId = 0; AI_THINKING_STRUCT->movesetIndex = 0; scriptsToRun = AI_THINKING_STRUCT->aiFlags; @@ -521,14 +516,12 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void) AI_THINKING_STRUCT->aiLogicId++; AI_THINKING_STRUCT->movesetIndex = 0; } - //_08130DD8 if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE) actionOrMoveIndex[i] = 4; else if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH) actionOrMoveIndex[i] = 5; else { - //_08130E10 mostViableMovesScores[0] = AI_THINKING_STRUCT->score[0]; mostViableMovesIndices[0] = 0; mostViableMovesNo = 1; @@ -555,17 +548,20 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void) bestMovePointsForTarget[i] = mostViableMovesScores[0]; // don't use a move against ally if it has less than 100 pts - if (i == (sBank_AI ^ 2) && bestMovePointsForTarget[i] < 100) + if (i == (sBank_AI ^ BIT_MON) && bestMovePointsForTarget[i] < 100) + { bestMovePointsForTarget[i] = -1; + mostViableMovesScores[0] = mostViableMovesScores[0]; // needed to match + } + } } - //_08130EAE } - //08130EC4 mostMovePoints = bestMovePointsForTarget[0]; mostViableTargetsArray[0] = 0; mostViableTargetsNo = 1; + for (i = 1; i < 4; i++) { //_08130EDA @@ -582,305 +578,10 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void) mostViableTargetsNo = 1; } } + gBankTarget = mostViableTargetsArray[Random() % mostViableTargetsNo]; return actionOrMoveIndex[gBankTarget]; } -#else -__attribute__((naked)) -static u8 BattleAI_ChooseMoveOrAction_Doubles(void) -{ - asm(".syntax unified\n\ - 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\ - movs r0, 0\n\ - mov r8, r0\n\ - mov r1, sp\n\ - adds r1, 0xC\n\ - str r1, [sp, 0x1C]\n\ - mov r2, sp\n\ - adds r2, 0x8\n\ - str r2, [sp, 0x18]\n\ - str r1, [sp, 0x20]\n\ - mov r10, sp\n\ -_08130D14:\n\ - ldr r0, =sBank_AI\n\ - ldrb r0, [r0]\n\ - cmp r8, r0\n\ - beq _08130D2E\n\ - movs r0, 0x58\n\ - mov r7, r8\n\ - muls r7, r0\n\ - adds r0, r7, 0\n\ - ldr r1, =gBattleMons\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _08130D48\n\ -_08130D2E:\n\ - movs r0, 0xFF\n\ - ldr r2, [sp, 0x20]\n\ - strb r0, [r2]\n\ - ldr r0, =0x0000ffff\n\ - mov r7, r10\n\ - strh r0, [r7]\n\ - b _08130EAE\n\ - .pool\n\ -_08130D48:\n\ - ldr r0, =gBattleTypeFlags\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08130D70\n\ - ldr r0, =gBattleStruct\n\ - ldr r0, [r0]\n\ - adds r0, 0x92\n\ - ldrb r0, [r0]\n\ - lsrs r0, 4\n\ - bl BattleAI_SetupAIData\n\ - b _08130D76\n\ - .pool\n\ -_08130D70:\n\ - movs r0, 0xF\n\ - bl BattleAI_SetupAIData\n\ -_08130D76:\n\ - ldr r0, =gBankTarget\n\ - mov r1, r8\n\ - strb r1, [r0]\n\ - movs r1, 0x1\n\ - mov r2, r8\n\ - ands r2, r1\n\ - ldr r0, =sBank_AI\n\ - ldrb r0, [r0]\n\ - ands r1, r0\n\ - cmp r2, r1\n\ - beq _08130D90\n\ - bl RecordLastUsedMoveByTarget\n\ -_08130D90:\n\ - ldr r2, =gBattleResources\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - movs r1, 0\n\ - strb r1, [r0, 0x11]\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - strb r1, [r0, 0x1]\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - ldr r4, [r0, 0xC]\n\ - mov r9, r2\n\ - cmp r4, 0\n\ - beq _08130DD8\n\ - mov r5, r9\n\ - movs r6, 0\n\ -_08130DB0:\n\ - movs r0, 0x1\n\ - ands r0, r4\n\ - cmp r0, 0\n\ - beq _08130DC2\n\ - ldr r0, [r5]\n\ - ldr r0, [r0, 0x14]\n\ - strb r6, [r0]\n\ - bl BattleAI_DoAIProcessing\n\ -_08130DC2:\n\ - asrs r4, 1\n\ - ldr r0, [r5]\n\ - ldr r1, [r0, 0x14]\n\ - ldrb r0, [r1, 0x11]\n\ - adds r0, 0x1\n\ - strb r0, [r1, 0x11]\n\ - ldr r0, [r5]\n\ - ldr r0, [r0, 0x14]\n\ - strb r6, [r0, 0x1]\n\ - cmp r4, 0\n\ - bne _08130DB0\n\ -_08130DD8:\n\ - mov r2, r9\n\ - ldr r0, [r2]\n\ - ldr r3, [r0, 0x14]\n\ - ldrb r1, [r3, 0x10]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08130DFC\n\ - movs r0, 0x4\n\ - ldr r7, [sp, 0x20]\n\ - strb r0, [r7]\n\ - b _08130EAE\n\ - .pool\n\ -_08130DFC:\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r2, 0\n\ - beq _08130E10\n\ - movs r0, 0x5\n\ - ldr r1, [sp, 0x20]\n\ - strb r0, [r1]\n\ - b _08130EAE\n\ -_08130E10:\n\ - add r1, sp, 0x10\n\ - ldrb r0, [r3, 0x4]\n\ - strb r0, [r1]\n\ - add r0, sp, 0x14\n\ - strb r2, [r0]\n\ - movs r5, 0x1\n\ - movs r3, 0x1\n\ - adds r6, r1, 0\n\ - ldr r0, =sBank_AI\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - ldr r2, =gBattleMons + 0xC\n\ - adds r0, r2\n\ - adds r4, r0, 0x2\n\ - add r7, sp, 0x14\n\ -_08130E30:\n\ - ldrh r0, [r4]\n\ - cmp r0, 0\n\ - beq _08130E72\n\ - ldrb r1, [r6]\n\ - mov r2, r9\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - adds r0, 0x4\n\ - adds r2, r0, r3\n\ - movs r0, 0\n\ - ldrsb r0, [r2, r0]\n\ - cmp r1, r0\n\ - bne _08130E56\n\ - adds r0, r6, r5\n\ - ldrb r1, [r2]\n\ - strb r1, [r0]\n\ - adds r0, r7, r5\n\ - strb r3, [r0]\n\ - adds r5, 0x1\n\ -_08130E56:\n\ - ldrb r1, [r6]\n\ - mov r2, r9\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - adds r0, 0x4\n\ - adds r2, r0, r3\n\ - movs r0, 0\n\ - ldrsb r0, [r2, r0]\n\ - cmp r1, r0\n\ - bge _08130E72\n\ - ldrb r0, [r2]\n\ - strb r0, [r6]\n\ - strb r3, [r7]\n\ - movs r5, 0x1\n\ -_08130E72:\n\ - adds r4, 0x2\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _08130E30\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - adds r1, r5, 0\n\ - bl __modsi3\n\ - add r0, sp\n\ - adds r0, 0x14\n\ - ldrb r0, [r0]\n\ - ldr r7, [sp, 0x20]\n\ - strb r0, [r7]\n\ - ldrb r2, [r6]\n\ - mov r0, r10\n\ - strh r2, [r0]\n\ - ldr r0, =sBank_AI\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - eors r0, r1\n\ - cmp r8, r0\n\ - bne _08130EAE\n\ - cmp r2, 0x63\n\ - bgt _08130EAE\n\ - ldr r0, =0x0000ffff\n\ - mov r1, r10\n\ - strh r0, [r1]\n\ -_08130EAE:\n\ - ldr r2, [sp, 0x20]\n\ - adds r2, 0x1\n\ - str r2, [sp, 0x20]\n\ - movs r7, 0x2\n\ - add r10, r7\n\ - movs r0, 0x1\n\ - add r8, r0\n\ - mov r1, r8\n\ - cmp r1, 0x3\n\ - bgt _08130EC4\n\ - b _08130D14\n\ -_08130EC4:\n\ - mov r0, sp\n\ - ldrh r5, [r0]\n\ - movs r0, 0\n\ - ldr r2, [sp, 0x18]\n\ - strb r0, [r2]\n\ - movs r4, 0x1\n\ - mov r8, r4\n\ - ldr r6, =gBankTarget\n\ - ldr r3, [sp, 0x18]\n\ - mov r1, sp\n\ - adds r1, 0x2\n\ -_08130EDA:\n\ - lsls r0, r5, 16\n\ - asrs r2, r0, 16\n\ - movs r7, 0\n\ - ldrsh r0, [r1, r7]\n\ - cmp r2, r0\n\ - bne _08130EEE\n\ - adds r0, r3, r4\n\ - mov r7, r8\n\ - strb r7, [r0]\n\ - adds r4, 0x1\n\ -_08130EEE:\n\ - movs r7, 0\n\ - ldrsh r0, [r1, r7]\n\ - cmp r2, r0\n\ - bge _08130EFE\n\ - ldrh r5, [r1]\n\ - mov r0, r8\n\ - strb r0, [r3]\n\ - movs r4, 0x1\n\ -_08130EFE:\n\ - adds r1, 0x2\n\ - movs r2, 0x1\n\ - add r8, r2\n\ - mov r7, r8\n\ - cmp r7, 0x3\n\ - ble _08130EDA\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - adds r1, r4, 0\n\ - bl __modsi3\n\ - ldr r1, [sp, 0x18]\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - strb r0, [r6]\n\ - ldrb r0, [r6]\n\ - ldr r2, [sp, 0x1C]\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\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 {r1}\n\ - bx r1\n\ - .pool\n\ - .syntax divided\n"); -} -#endif static void BattleAI_DoAIProcessing(void) { @@ -888,7 +589,7 @@ static void BattleAI_DoAIProcessing(void) { switch (AI_THINKING_STRUCT->aiState) { - case AIState_DoNotProcess: //Needed to match. + case AIState_DoNotProcess: // Needed to match. break; case AIState_SettingUp: gAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set AI ptr to logic ID. @@ -904,7 +605,7 @@ static void BattleAI_DoAIProcessing(void) break; case AIState_Processing: if (AI_THINKING_STRUCT->moveConsidered != 0) - sBattleAICmdTable[*gAIScriptPtr](); // run AI command. + sBattleAICmdTable[*gAIScriptPtr](); // Run AI command. else { AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0; @@ -934,7 +635,7 @@ static void RecordLastUsedMoveByTarget(void) { if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) break; - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] //HACK: This redundant condition is a hack to make the asm match. + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. && gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0) { gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget]; @@ -1261,7 +962,7 @@ static void BattleAICmd_if_not_equal(void) static void BattleAICmd_if_less_than_32(void) { - u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); + const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); if (AI_THINKING_STRUCT->funcResult < *temp) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5); @@ -1271,7 +972,7 @@ static void BattleAICmd_if_less_than_32(void) static void BattleAICmd_if_more_than_32(void) { - u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); + const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); if (AI_THINKING_STRUCT->funcResult > *temp) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5); @@ -1281,7 +982,7 @@ static void BattleAICmd_if_more_than_32(void) static void BattleAICmd_if_equal_32(void) { - u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); + const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); if (AI_THINKING_STRUCT->funcResult == *temp) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5); @@ -1291,7 +992,7 @@ static void BattleAICmd_if_equal_32(void) static void BattleAICmd_if_not_equal_32(void) { - u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); + const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1); if (AI_THINKING_STRUCT->funcResult != *temp) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5); @@ -1321,7 +1022,7 @@ static void BattleAICmd_if_not_move(void) static void BattleAICmd_if_in_bytes(void) { - u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1); + const u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1); while (*ptr != 0xFF) { @@ -1337,7 +1038,7 @@ static void BattleAICmd_if_in_bytes(void) static void BattleAICmd_if_not_in_bytes(void) { - u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1); + const u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1); while (*ptr != 0xFF) { @@ -1351,9 +1052,9 @@ static void BattleAICmd_if_not_in_bytes(void) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5); } -static void BattleAICmd_if_in_words(void) +static void BattleAICmd_if_in_hwords(void) { - u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1); + const u16 *ptr = (const u16 *)AIScriptReadPtr(gAIScriptPtr + 1); while (*ptr != 0xFFFF) { @@ -1367,9 +1068,9 @@ static void BattleAICmd_if_in_words(void) gAIScriptPtr += 9; } -static void BattleAICmd_if_not_in_words(void) +static void BattleAICmd_if_not_in_hwords(void) { - u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1); + const u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1); while (*ptr != 0xFFFF) { @@ -1456,9 +1157,9 @@ static u8 BattleAI_GetWantedBank(u8 index) default: return gBankTarget; case AI_USER_PARTNER: - return sBank_AI ^ 2; + return sBank_AI ^ BIT_MON; case AI_TARGET_PARTNER: - return gBankTarget ^ 2; + return gBankTarget ^ BIT_MON; } } @@ -1484,248 +1185,68 @@ static void BattleAICmd_get_last_used_bank_move_power(void) gAIScriptPtr += 1; } -__attribute__((naked)) // not even going to try. if it doesnt match in ruby, it wont match in emerald (yet). static void BattleAICmd_is_most_powerful_move(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - movs r3, 0\n\ - ldr r0, =sDiscouragedPowerfulMoveEffects\n\ - ldrh r1, [r0]\n\ - ldr r5, =0x0000ffff\n\ - ldr r6, =gBattleMoves\n\ - ldr r2, =gBattleResources\n\ - cmp r1, r5\n\ - beq _08131F86\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - ldrh r1, [r0, 0x2]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r6\n\ - ldrb r4, [r0]\n\ - ldr r1, =sDiscouragedPowerfulMoveEffects\n\ -_08131F76:\n\ - ldrh r0, [r1]\n\ - cmp r4, r0\n\ - beq _08131F86\n\ - adds r1, 0x2\n\ - adds r3, 0x1\n\ - ldrh r0, [r1]\n\ - cmp r0, r5\n\ - bne _08131F76\n\ -_08131F86:\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - ldrh r1, [r0, 0x2]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r6\n\ - ldrb r0, [r0, 0x1]\n\ - cmp r0, 0x1\n\ - bhi _08131F9C\n\ - b _08132126\n\ -_08131F9C:\n\ - lsls r0, r3, 1\n\ - ldr r1, =sDiscouragedPowerfulMoveEffects\n\ - adds r0, r1\n\ - ldrh r3, [r0]\n\ - ldr r0, =0x0000ffff\n\ - cmp r3, r0\n\ - beq _08131FAC\n\ - b _08132126\n\ -_08131FAC:\n\ - ldr r0, =gDynamicBasePower\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - ldr r0, =gBattleStruct\n\ - ldr r0, [r0]\n\ - strb r1, [r0, 0x13]\n\ - ldr r0, =gBattleScripting\n\ - movs r2, 0x1\n\ - strb r2, [r0, 0xE]\n\ - ldr r0, =gBattleMoveFlags\n\ - strb r1, [r0]\n\ - ldr r0, =gCritMultiplier\n\ - strb r2, [r0]\n\ - movs r6, 0\n\ - mov r9, r3\n\ - ldr r2, =sDiscouragedPowerfulMoveEffects\n\ - ldrh r2, [r2]\n\ - str r2, [sp, 0x10]\n\ -_08131FD0:\n\ - movs r3, 0\n\ - ldr r5, =gBattleMons\n\ - lsls r4, r6, 1\n\ - ldr r7, =sBank_AI\n\ - lsls r0, r6, 2\n\ - mov r8, r0\n\ - adds r1, r6, 0x1\n\ - mov r10, r1\n\ - ldr r2, [sp, 0x10]\n\ - cmp r2, r9\n\ - beq _08132014\n\ - ldr r2, =gBattleMoves\n\ - ldrb r1, [r7]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r4, r0\n\ - adds r1, r5, 0\n\ - adds r1, 0xC\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrb r2, [r0]\n\ - ldr r1, =sDiscouragedPowerfulMoveEffects\n\ -_08132004:\n\ - ldrh r0, [r1]\n\ - cmp r2, r0\n\ - beq _08132014\n\ - adds r1, 0x2\n\ - adds r3, 0x1\n\ - ldrh r0, [r1]\n\ - cmp r0, r9\n\ - bne _08132004\n\ -_08132014:\n\ - ldrb r1, [r7]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r4, r0\n\ - adds r1, r5, 0\n\ - adds r1, 0xC\n\ - adds r1, r0, r1\n\ - ldrh r0, [r1]\n\ - cmp r0, 0\n\ - beq _081320C0\n\ - lsls r0, r3, 1\n\ - ldr r2, =sDiscouragedPowerfulMoveEffects\n\ - adds r0, r2\n\ - ldrh r0, [r0]\n\ - cmp r0, r9\n\ - bne _081320C0\n\ - ldr r0, =gBattleMoves\n\ - ldrh r2, [r1]\n\ - lsls r1, r2, 1\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0x1\n\ - bls _081320C0\n\ - ldr r5, =gCurrentMove\n\ - strh r2, [r5]\n\ - ldrb r0, [r7]\n\ - ldr r4, =gBankTarget\n\ - ldrb r1, [r4]\n\ - bl AI_CalcDmg\n\ - ldrh r0, [r5]\n\ - ldrb r1, [r7]\n\ - ldrb r2, [r4]\n\ - bl TypeCalc\n\ - mov r4, sp\n\ - add r4, r8\n\ - ldr r2, =gBattleMoveDamage\n\ - ldr r0, =gBattleResources\n\ - ldr r0, [r0]\n\ - ldr r0, [r0, 0x14]\n\ - adds r0, 0x18\n\ - adds r0, r6\n\ - ldrb r1, [r0]\n\ - ldr r0, [r2]\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - str r0, [r4]\n\ - cmp r0, 0\n\ - bne _081320C8\n\ - movs r0, 0x1\n\ - str r0, [r4]\n\ - b _081320C8\n\ - .pool\n\ -_081320C0:\n\ - mov r1, sp\n\ - add r1, r8\n\ - movs r0, 0\n\ - str r0, [r1]\n\ -_081320C8:\n\ - mov r6, r10\n\ - cmp r6, 0x3\n\ - bgt _081320D0\n\ - b _08131FD0\n\ -_081320D0:\n\ - movs r6, 0\n\ - ldr r2, =gBattleResources\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x14]\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 2\n\ - add r0, sp\n\ - ldr r1, [sp]\n\ - ldr r0, [r0]\n\ - ldr r5, =gAIScriptPtr\n\ - cmp r1, r0\n\ - bgt _08132106\n\ - adds r4, r2, 0\n\ - mov r3, sp\n\ -_081320EC:\n\ - adds r3, 0x4\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - bgt _08132106\n\ - ldr r0, [r4]\n\ - ldr r0, [r0, 0x14]\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 2\n\ - add r0, sp\n\ - ldr r1, [r3]\n\ - ldr r0, [r0]\n\ - cmp r1, r0\n\ - ble _081320EC\n\ -_08132106:\n\ - cmp r6, 0x4\n\ - bne _0813211C\n\ - ldr r0, [r2]\n\ - ldr r1, [r0, 0x14]\n\ - movs r0, 0x2\n\ - str r0, [r1, 0x8]\n\ - b _08132130\n\ - .pool\n\ -_0813211C:\n\ - ldr r0, [r2]\n\ - ldr r1, [r0, 0x14]\n\ - movs r0, 0x1\n\ - str r0, [r1, 0x8]\n\ - b _08132130\n\ -_08132126:\n\ - ldr r0, [r2]\n\ - ldr r1, [r0, 0x14]\n\ - movs r0, 0\n\ - str r0, [r1, 0x8]\n\ - ldr r5, =gAIScriptPtr\n\ -_08132130:\n\ - ldr r0, [r5]\n\ - adds r0, 0x1\n\ - str r0, [r5]\n\ - add sp, 0x14\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\ - .pool\n\ - .syntax divided"); + s32 i, checkedMove; + s32 moveDmgs[4]; + + for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++) + { + if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i]) + break; + } + + if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1 + && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF) + { + gDynamicBasePower = 0; + *(&gBattleStruct->dynamicMoveType) = 0; + gBattleScripting.dmgMultiplier = 1; + gBattleMoveFlags = 0; + gCritMultiplier = 1; + + for (checkedMove = 0; checkedMove < 4; checkedMove++) + { + for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++) + { + if (gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i]) + break; + } + + if (gBattleMons[sBank_AI].moves[checkedMove] != MOVE_NONE + && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF + && gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].power > 1) + { + gCurrentMove = gBattleMons[sBank_AI].moves[checkedMove]; + AI_CalcDmg(sBank_AI, gBankTarget); + TypeCalc(gCurrentMove, sBank_AI, gBankTarget); + moveDmgs[checkedMove] = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[checkedMove] / 100; + if (moveDmgs[checkedMove] == 0) + moveDmgs[checkedMove] = 1; + } + else + { + moveDmgs[checkedMove] = 0; + } + } + + for (checkedMove = 0; checkedMove < 4; checkedMove++) + { + if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex]) + break; + } + + if (checkedMove == 4) + AI_THINKING_STRUCT->funcResult = 2; // is the most powerful + else + AI_THINKING_STRUCT->funcResult = 1; // not most powerful + } + else + { + AI_THINKING_STRUCT->funcResult = 0; // highly discouraged in terms of power + } + + gAIScriptPtr++; } static void BattleAICmd_get_last_used_bank_move(void) @@ -1756,7 +1277,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (GetWhoStrikesFirst(sBank_AI, gBankTarget, 1) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) == gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1764,7 +1285,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (GetWhoStrikesFirst(sBank_AI, gBankTarget, 1) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) != gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1792,7 +1313,7 @@ static void BattleAICmd_count_alive_pokemon(void) else index = gBankTarget; - if (GetBankSide(index) == 0) + if (GetBankSide(index) == SIDE_PLAYER) party = gPlayerParty; else party = gEnemyParty; @@ -1896,11 +1417,10 @@ static void BattleAICmd_get_ability(void) gAIScriptPtr += 2; } -#ifdef NONMATCHING static void BattleAICmd_check_ability(void) { - u8 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]); - u8 ability = gAIScriptPtr[2]; + u32 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]); + u32 ability = gAIScriptPtr[2]; if (gAIScriptPtr[1] == AI_TARGET || gAIScriptPtr[1] == AI_TARGET_PARTNER) { @@ -1920,8 +1440,9 @@ static void BattleAICmd_check_ability(void) { if (gBaseStats[gBattleMons[bank].species].ability2 != ABILITY_NONE) { - if (gBaseStats[gBattleMons[bank].species].ability1 != ability - && gBaseStats[gBattleMons[bank].species].ability2 != ability) + u8 abilityDummyVariable = ability; // needed to match + if (gBaseStats[gBattleMons[bank].species].ability1 != abilityDummyVariable + && gBaseStats[gBattleMons[bank].species].ability2 != abilityDummyVariable) { ability = gBaseStats[gBattleMons[bank].species].ability1; } @@ -1957,137 +1478,6 @@ static void BattleAICmd_check_ability(void) } gAIScriptPtr += 3; } -#else -__attribute__((naked)) -static void BattleAICmd_check_ability(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r4, =gAIScriptPtr\n\ - ldr r0, [r4]\n\ - ldrb r0, [r0, 0x1]\n\ - bl BattleAI_GetWantedBank\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r0, [r4]\n\ - ldrb r3, [r0, 0x2]\n\ - ldrb r0, [r0, 0x1]\n\ - cmp r0, 0\n\ - beq _0813253A\n\ - cmp r0, 0x2\n\ - bne _081325BC\n\ -_0813253A:\n\ - ldr r0, =gBattleResources\n\ - ldr r4, [r0]\n\ - ldr r1, [r4, 0x18]\n\ - adds r1, 0x40\n\ - adds r2, r1, r5\n\ - ldrb r1, [r2]\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - beq _0813255C\n\ - adds r3, r1, 0\n\ - ldr r0, [r4, 0x14]\n\ - str r3, [r0, 0x8]\n\ - b _081325CA\n\ - .pool\n\ -_0813255C:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - muls r0, r5\n\ - adds r4, r0, r1\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x17\n\ - beq _08132576\n\ - cmp r0, 0x2A\n\ - beq _08132576\n\ - cmp r0, 0x47\n\ - bne _08132588\n\ -_08132576:\n\ - movs r0, 0x58\n\ - muls r0, r5\n\ - adds r0, r1\n\ - adds r0, 0x20\n\ - ldrb r3, [r0]\n\ - b _081325CA\n\ - .pool\n\ -_08132588:\n\ - ldr r2, =gBaseStats\n\ - ldrh r1, [r4]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 2\n\ - adds r1, r0, r2\n\ - ldrb r4, [r1, 0x16]\n\ - cmp r4, 0\n\ - beq _081325B8\n\ - ldrb r2, [r1, 0x17]\n\ - cmp r2, 0\n\ - beq _081325B4\n\ - adds r0, r3, 0\n\ - cmp r4, r0\n\ - beq _081325CE\n\ - cmp r2, r0\n\ - beq _081325CE\n\ - adds r3, r4, 0\n\ - b _081325CA\n\ - .pool\n\ -_081325B4:\n\ - ldrb r3, [r1, 0x16]\n\ - b _081325CA\n\ -_081325B8:\n\ - ldrb r3, [r1, 0x17]\n\ - b _081325CA\n\ -_081325BC:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - muls r0, r5\n\ - adds r0, r1\n\ - adds r0, 0x20\n\ - ldrb r3, [r0]\n\ - ldr r6, =gBattleResources\n\ -_081325CA:\n\ - cmp r3, 0\n\ - bne _081325E8\n\ -_081325CE:\n\ - ldr r0, [r6]\n\ - ldr r1, [r0, 0x14]\n\ - movs r0, 0x2\n\ - str r0, [r1, 0x8]\n\ - ldr r2, =gAIScriptPtr\n\ - b _08132608\n\ - .pool\n\ -_081325E8:\n\ - ldr r0, =gAIScriptPtr\n\ - ldr r1, [r0]\n\ - adds r2, r0, 0\n\ - ldrb r1, [r1, 0x2]\n\ - cmp r3, r1\n\ - bne _08132600\n\ - ldr r0, [r6]\n\ - ldr r1, [r0, 0x14]\n\ - movs r0, 0x1\n\ - b _08132606\n\ - .pool\n\ -_08132600:\n\ - ldr r0, [r6]\n\ - ldr r1, [r0, 0x14]\n\ - movs r0, 0\n\ -_08132606:\n\ - str r0, [r1, 0x8]\n\ -_08132608:\n\ - ldr r0, [r2]\n\ - adds r0, 0x3\n\ - str r0, [r2]\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -} -#endif static void BattleAICmd_get_highest_type_effectiveness(void) { @@ -2184,7 +1574,7 @@ static void BattleAICmd_if_status_in_party(void) switch(gAIScriptPtr[1]) { - case 1: + case AI_USER: index = sBank_AI; break; default: @@ -2397,7 +1787,7 @@ static void BattleAICmd_if_cant_faint(void) static void BattleAICmd_if_has_move(void) { int i; - u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2); + const u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2); switch(gAIScriptPtr[1]) { @@ -2464,7 +1854,7 @@ static void BattleAICmd_if_has_move(void) static void BattleAICmd_if_dont_have_move(void) { int i; - u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2); + const u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2); switch(gAIScriptPtr[1]) { @@ -2631,7 +2021,7 @@ static void BattleAICmd_if_curr_move_disabled_or_encored(void) static void BattleAICmd_flee(void) { - AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK2 being enabled. + AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); } static void BattleAICmd_if_random_100(void) @@ -2646,7 +2036,7 @@ static void BattleAICmd_if_random_100(void) static void BattleAICmd_watch(void) { - AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK3 being enabled. + AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); } static void BattleAICmd_get_hold_effect(void) @@ -2675,7 +2065,7 @@ static void BattleAICmd_if_holds_item(void) u16 item; u8 var1, var2; - if ((bank & 1) == (sBank_AI & 1)) + if ((bank & BIT_SIDE) == (sBank_AI & BIT_SIDE)) item = gBattleMons[bank].item; else item = BATTLE_HISTORY->itemEffects[bank]; @@ -2752,7 +2142,7 @@ static void BattleAICmd_get_used_held_item(void) #ifdef NONMATCHING AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[bank]; #else - AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + 0xB8 + (bank * 2)); + AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + offsetof(struct BattleStruct, usedHeldItems) + (bank * 2)); #endif // NONMATCHING gAIScriptPtr += 2; From 7b690dbe3a71f800b7e112a75559e9db6ac1e8bc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 13:48:41 +0200 Subject: [PATCH 112/182] add save location header, change static names --- include/save_location.h | 9 +++++++++ src/save_location.c | 13 +++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 include/save_location.h diff --git a/include/save_location.h b/include/save_location.h new file mode 100644 index 0000000000..95b3a7d7db --- /dev/null +++ b/include/save_location.h @@ -0,0 +1,9 @@ +#ifndef GUARD_SAVE_LOCATION_H +#define GUARD_SAVE_LOCATION_H + +bool32 sub_81AFCEC(void); +void TrySetMapSaveWarpStatus(void); +void sub_81AFDA0(void); +void sub_81AFDD0(void); + +#endif // GUARD_SAVE_LOCATION_H diff --git a/src/save_location.c b/src/save_location.c index 87067e14db..61a5fd30d9 100755 --- a/src/save_location.c +++ b/src/save_location.c @@ -1,4 +1,5 @@ #include "global.h" +#include "save_location.h" #include "map_constants.h" // used to make the list defines a little less ugly. @@ -26,7 +27,7 @@ static bool32 IsCurMapInLocationList(const u16 *list) } // TODO: Not require a packed u16 array for these lists -static const u16 gSaveLocationPokeCenterList[] = +static const u16 sSaveLocationPokeCenterList[] = { MAP(OLDALE_TOWN_POKEMON_CENTER_1F), MAP(OLDALE_TOWN_POKEMON_CENTER_2F), @@ -71,10 +72,10 @@ static const u16 gSaveLocationPokeCenterList[] = static bool32 IsCurMapPokeCenter(void) { - return IsCurMapInLocationList(gSaveLocationPokeCenterList); + return IsCurMapInLocationList(sSaveLocationPokeCenterList); } -static const u16 gSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower +static const u16 sSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower { MAP(BATTLE_TOWER_LOBBY), 0xFFFF, @@ -82,18 +83,18 @@ static const u16 gSaveLocationReloadLocList[] = // there's only 1 location, and static bool32 IsCurMapReloadLocation(void) { - return IsCurMapInLocationList(gSaveLocationReloadLocList); + return IsCurMapInLocationList(sSaveLocationReloadLocList); } // nulled out list. unknown what this would have been -static const u16 gUnknown_0861440E[] = +static const u16 sUnknown_0861440E[] = { 0xFFFF, }; bool32 sub_81AFCEC(void) { - return IsCurMapInLocationList(gUnknown_0861440E); + return IsCurMapInLocationList(sUnknown_0861440E); } static void TrySetPokeCenterWarpStatus(void) From fdfbbb49518eb020a7d525039ab598629c1c24b5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 13:55:31 +0200 Subject: [PATCH 113/182] add diploma header and static names fix --- include/diploma.h | 6 ++++++ src/diploma.c | 29 +++++++++++++++-------------- 2 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 include/diploma.h diff --git a/include/diploma.h b/include/diploma.h new file mode 100644 index 0000000000..8d730fa057 --- /dev/null +++ b/include/diploma.h @@ -0,0 +1,6 @@ +#ifndef GUARD_DIPLOMA_H +#define GUARD_DIPLOMA_H + +void CB2_ShowDiploma(void); + +#endif // GUARD_DIPLOMA_H diff --git a/src/diploma.c b/src/diploma.c index f2cbcabb7b..d4a269757f 100755 --- a/src/diploma.c +++ b/src/diploma.c @@ -1,4 +1,5 @@ #include "global.h" +#include "diploma.h" #include "palette.h" #include "main.h" #include "gpu_regs.h" @@ -33,7 +34,7 @@ static void InitDiplomaBg(void); static void InitDiplomaWindow(void); static void PrintDiplomaText(u8 *, u8, u8); -EWRAM_DATA void **gDiplomaTilemapPtr = {NULL}; +EWRAM_DATA static void **sDiplomaTilemapPtr = {NULL}; static void VBlankCB(void) { @@ -42,14 +43,14 @@ static void VBlankCB(void) TransferPlttBuffer(); } -static const u16 gDiplomaPalettes[][16] = +static const u16 sDiplomaPalettes[][16] = { INCBIN_U16("graphics/misc/diploma_national.gbapal"), INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"), }; -static const u8 gDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz"); -static const u8 gDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz"); +static const u8 sDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz"); +static const u8 sDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz"); void CB2_ShowDiploma(void) { @@ -76,15 +77,15 @@ void CB2_ShowDiploma(void) ResetSpriteData(); ResetPaletteFade(); FreeAllSpritePalettes(); - LoadPalette(gDiplomaPalettes, 0, 64); - gDiplomaTilemapPtr = malloc(0x1000); + LoadPalette(sDiplomaPalettes, 0, 64); + sDiplomaTilemapPtr = malloc(0x1000); InitDiplomaBg(); InitDiplomaWindow(); reset_temp_tile_data_buffers(); - decompress_and_copy_tile_data_to_vram(1, &gDiplomaTiles, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(1, &sDiplomaTiles, 0, 0, 0); while (free_temp_tile_data_buffers_if_possible()) ; - LZDecompressWram(&gDiplomaTilemap, gDiplomaTilemapPtr); + LZDecompressWram(&sDiplomaTilemap, sDiplomaTilemapPtr); CopyBgTilemapBufferToVram(1); DisplayDiplomaText(); BlendPalettes(-1, 16, 0); @@ -122,7 +123,7 @@ static void Task_DiplomaFadeOut(u8 taskId) { if (!gPaletteFade.active) { - Free(gDiplomaTilemapPtr); + Free(sDiplomaTilemapPtr); FreeAllWindowBuffers(); DestroyTask(taskId); SetMainCallback2(sub_80861E8); @@ -147,7 +148,7 @@ static void DisplayDiplomaText(void) CopyWindowToVram(0, 3); } -static const struct BgTemplate gDiplomaBgTemplates[2] = +static const struct BgTemplate sDiplomaBgTemplates[2] = { { .bg = 0, @@ -172,8 +173,8 @@ static const struct BgTemplate gDiplomaBgTemplates[2] = static void InitDiplomaBg(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gDiplomaBgTemplates, 2); - SetBgTilemapBuffer(1, gDiplomaTilemapPtr); + InitBgsFromTemplates(0, sDiplomaBgTemplates, 2); + SetBgTilemapBuffer(1, sDiplomaTilemapPtr); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); ShowBg(0); ShowBg(1); @@ -182,7 +183,7 @@ static void InitDiplomaBg(void) SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0); } -static const struct WindowTemplate gDiplomaWinTemplates[2] = +static const struct WindowTemplate sDiplomaWinTemplates[2] = { { .priority = 0, @@ -198,7 +199,7 @@ static const struct WindowTemplate gDiplomaWinTemplates[2] = static void InitDiplomaWindow(void) { - InitWindows(gDiplomaWinTemplates); + InitWindows(sDiplomaWinTemplates); DeactivateAllTextPrinters(); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); FillWindowPixelBuffer(0, 0); From 9d4acb9635b3b74d5ae4edee70d673f49c0aab74 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 15:40:08 +0200 Subject: [PATCH 114/182] some work on international string util --- asm/international_string_util.s | 121 ---------------------------- include/international_string_util.h | 20 +++++ ld_script.txt | 1 + src/coins.c | 2 +- src/international_string_util.c | 57 +++++++++++++ 5 files changed, 79 insertions(+), 122 deletions(-) create mode 100644 include/international_string_util.h create mode 100644 src/international_string_util.c diff --git a/asm/international_string_util.s b/asm/international_string_util.s index 7c52fc41a3..fe04a13966 100755 --- a/asm/international_string_util.s +++ b/asm/international_string_util.s @@ -5,127 +5,6 @@ .text - thumb_func_start GetStringCenterAlignXOffset -@ s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth) -GetStringCenterAlignXOffset: @ 81DB35C - push {lr} - movs r3, 0 - bl GetStringCenterAlignXOffsetWithLetterSpacing - pop {r1} - bx r1 - thumb_func_end GetStringCenterAlignXOffset - - thumb_func_start GetStringRightAlignXOffset -@ s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth) -GetStringRightAlignXOffset: @ 81DB368 - push {lr} - movs r3, 0 - bl GetStringWidthDifference - pop {r1} - bx r1 - thumb_func_end GetStringRightAlignXOffset - - thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing -@ s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, u8 *str, s32 totalWidth, s16 letterSpacing) -GetStringCenterAlignXOffsetWithLetterSpacing: @ 81DB374 - push {lr} - bl GetStringWidthDifference - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - pop {r1} - bx r1 - thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing - - thumb_func_start GetStringWidthDifference -@ s32 GetStringWidthDifference(u8 fontId, u8 *str, s32 totalWidth, s16 letterSpacing) -GetStringWidthDifference: @ 81DB384 - push {r4,lr} - adds r4, r2, 0 - adds r2, r3, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - asrs r2, 16 - bl GetStringWidth - cmp r4, r0 - bgt _081DB39E - movs r0, 0 - b _081DB3A0 -_081DB39E: - subs r0, r4, r0 -_081DB3A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetStringWidthDifference - - thumb_func_start GetMaxWidthInMenuTable -GetMaxWidthInMenuTable: @ 81DB3A8 - push {r4-r6,lr} - movs r6, 0 - cmp r6, r1 - bge _081DB3CC - adds r5, r0, 0 - adds r4, r1, 0 -_081DB3B4: - ldr r1, [r5] - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - cmp r0, r6 - ble _081DB3C4 - adds r6, r0, 0 -_081DB3C4: - adds r5, 0x8 - subs r4, 0x1 - cmp r4, 0 - bne _081DB3B4 -_081DB3CC: - adds r0, r6, 0 - bl convert_pixel_width_to_tile_width - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetMaxWidthInMenuTable - - thumb_func_start sub_81DB3D8 -sub_81DB3D8: @ 81DB3D8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - adds r5, r2, 0 - movs r6, 0 - movs r4, 0 - cmp r6, r5 - bge _081DB40A -_081DB3EC: - adds r0, r7, r4 - ldrb r0, [r0] - lsls r0, 3 - add r0, r8 - ldr r1, [r0] - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - cmp r0, r6 - ble _081DB404 - adds r6, r0, 0 -_081DB404: - adds r4, 0x1 - cmp r4, r5 - blt _081DB3EC -_081DB40A: - adds r0, r6, 0 - bl convert_pixel_width_to_tile_width - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81DB3D8 thumb_func_start sub_81DB41C sub_81DB41C: @ 81DB41C diff --git a/include/international_string_util.h b/include/international_string_util.h new file mode 100644 index 0000000000..2aa3e18f86 --- /dev/null +++ b/include/international_string_util.h @@ -0,0 +1,20 @@ +#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H +#define GUARD_INTERNATIONAL_STRING_UTIL_H + +s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); +s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); +s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); +s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); +s32 GetMaxWidthInMenuTable(const u8 **str, s32 arg1); +s32 sub_81DB3D8(const u8 **str, u8* arg1, s32 arg2); +// sub_81DB41C +// sub_81DB468 +// sub_81DB494 +// sub_81DB4DC +// sub_81DB52C +// sub_81DB554 +// sub_81DB5AC +// sub_81DB5E8 +// sub_81DB620 + +#endif // GUARD_INTERNATIONAL_STRING_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 82588be3a9..cc32361f26 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -264,6 +264,7 @@ SECTIONS { asm/unk_sprite_file.o(.text); asm/unk_transition.o(.text); asm/unk_transition_2.o(.text); + src/international_string_util.o(.text); asm/international_string_util.o(.text); } =0 diff --git a/src/coins.c b/src/coins.c index 4ee601b22f..9c2d35168a 100644 --- a/src/coins.c +++ b/src/coins.c @@ -5,12 +5,12 @@ #include "text_window.h" #include "string_util.h" #include "menu.h" +#include "international_string_util.h" #define MAX_COINS 9999 EWRAM_DATA u8 sCoinsWindowId = 0; -extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); extern void sub_819746C(u8 windowId, bool8 copyToVram); extern const u8 gText_Coins[]; diff --git a/src/international_string_util.c b/src/international_string_util.c new file mode 100644 index 0000000000..c77b4f8ff4 --- /dev/null +++ b/src/international_string_util.c @@ -0,0 +1,57 @@ +#include "global.h" +#include "international_string_util.h" +#include "text.h" + +extern s32 convert_pixel_width_to_tile_width(s32 a0); // script menu + +s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth) +{ + return GetStringCenterAlignXOffsetWithLetterSpacing(fontId, str, totalWidth, 0); +} + +s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth) +{ + return GetStringWidthDifference(fontId, str, totalWidth, 0); +} + +s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing) +{ + return GetStringWidthDifference(fontId, str, totalWidth, letterSpacing) / 2; +} + +s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing) +{ + s32 stringWidth = GetStringWidth(fontId, str, letterSpacing); + if (totalWidth > stringWidth) + return totalWidth - stringWidth; + else + return 0; +} + +s32 GetMaxWidthInMenuTable(const u8 **str, s32 arg1) +{ + s32 i, var; + + for (var = 0, i = 0; i < arg1; i++) + { + s32 stringWidth = GetStringWidth(1, str[i * 2], 0); + if (stringWidth > var) + var = stringWidth; + } + + return convert_pixel_width_to_tile_width(var); +} + +s32 sub_81DB3D8(const u8 **str, u8* arg1, s32 arg2) +{ + s32 i, var; + + for (var = 0, i = 0; i < arg2; i++) + { + s32 stringWidth = GetStringWidth(1, str[arg1[i] * 2], 0); + if (stringWidth > var) + var = stringWidth; + } + + return convert_pixel_width_to_tile_width(var); +} From ab03b03c4bb872af131a9c52ef285c488b8e4865 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 18:18:40 +0200 Subject: [PATCH 115/182] decompile reshow battle screen --- asm/battle_7.s | 80 +- asm/battle_anim.s | 4 +- asm/battle_anim_80FE840.s | 26 +- asm/battle_anim_815A0D4.s | 6 +- asm/battle_controller_linkopponent.s | 44 +- asm/battle_controller_linkpartner.s | 40 +- asm/battle_controller_opponent.s | 50 +- asm/battle_controller_player.s | 94 +- asm/battle_controller_player_partner.s | 54 +- asm/battle_controller_recorded_opponent.s | 46 +- asm/battle_controller_recorded_player.s | 48 +- asm/battle_controller_safari.s | 26 +- asm/battle_controller_wally.s | 32 +- asm/battle_interface.s | 68 +- asm/party_menu.s | 6 +- asm/pokeball.s | 8 +- asm/reshow_battle_screen.s | 1040 --------------------- asm/rom_80A5C6C.s | 8 +- data/data2b.s | 4 +- include/battle.h | 26 +- include/battle_controller_player.h | 7 + include/battle_controllers.h | 2 + include/battle_interface.h | 28 + include/reshow_battle_screen.h | 1 + ld_script.txt | 2 +- src/battle_2.c | 4 +- src/battle_dome_cards.c | 4 +- src/pokemon_2.c | 6 +- src/reshow_battle_screen.c | 365 ++++++++ 29 files changed, 756 insertions(+), 1373 deletions(-) delete mode 100644 asm/reshow_battle_screen.s create mode 100644 include/battle_controller_player.h create mode 100644 include/battle_interface.h create mode 100644 src/reshow_battle_screen.c diff --git a/asm/battle_7.s b/asm/battle_7.s index 7f82e790a2..34c52e9a2c 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -1323,8 +1323,8 @@ _0805DC02: .pool thumb_func_end mplay_80342A4 - thumb_func_start sub_805DC0C -sub_805DC0C: @ 805DC0C + thumb_func_start BattleLoadOpponentMonSpriteGfx +BattleLoadOpponentMonSpriteGfx: @ 805DC0C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1474,10 +1474,10 @@ _0805DD46: pop {r0} bx r0 .pool - thumb_func_end sub_805DC0C + thumb_func_end BattleLoadOpponentMonSpriteGfx - thumb_func_start sub_805DD7C -sub_805DD7C: @ 805DD7C + thumb_func_start BattleLoadPlayerMonSpriteGfx +BattleLoadPlayerMonSpriteGfx: @ 805DD7C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1658,7 +1658,7 @@ _0805DEFC: pop {r0} bx r0 .pool - thumb_func_end sub_805DD7C + thumb_func_end BattleLoadPlayerMonSpriteGfx thumb_func_start nullsub_23 nullsub_23: @ 805DF30 @@ -1703,8 +1703,8 @@ sub_805DF38: @ 805DF38 .pool thumb_func_end sub_805DF38 - thumb_func_start sub_805DF84 -sub_805DF84: @ 805DF84 + thumb_func_start LoadBackTrainerBankSpriteGfx +LoadBackTrainerBankSpriteGfx: @ 805DF84 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -1742,7 +1742,7 @@ sub_805DF84: @ 805DF84 pop {r0} bx r0 .pool - thumb_func_end sub_805DF84 + thumb_func_end LoadBackTrainerBankSpriteGfx thumb_func_start nullsub_25 nullsub_25: @ 805DFE0 @@ -1772,7 +1772,7 @@ sub_805DFFC: @ 805DFFC adds r4, 0x8 adds r0, r4, 0 bl LoadSpritePalette - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0805E034 @@ -1821,8 +1821,8 @@ _0805E076: .pool thumb_func_end sub_805DFFC - thumb_func_start sub_805E08C -sub_805E08C: @ 805E08C + thumb_func_start BattleLoadAllHealthBoxesGfx +BattleLoadAllHealthBoxesGfx: @ 805E08C push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -1843,7 +1843,7 @@ _0805E09C: b _0805E1AE .pool _0805E0B8: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0805E120 @@ -1953,7 +1953,7 @@ _0805E1AE: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_805E08C + thumb_func_end BattleLoadAllHealthBoxesGfx thumb_func_start load_gfxc_health_bar load_gfxc_health_bar: @ 805E1B8 @@ -2002,7 +2002,7 @@ _0805E214: b _0805E324 _0805E21A: ldrb r0, [r4] - bl sub_805E08C + bl BattleLoadAllHealthBoxesGfx lsls r0, 24 cmp r0, 0 beq _0805E228 @@ -2022,12 +2022,12 @@ _0805E230: ldrb r0, [r4] cmp r0, 0 bne _0805E24C - bl battle_make_oam_safari_battle + bl CreateSafariPlayerHealthboxSprites b _0805E252 .pool _0805E24C: ldrb r0, [r4] - bl battle_make_oam_normal_battle + bl CreateBankHealthboxSprites _0805E252: ldr r2, =gHealthBoxesIds ldrb r1, [r4] @@ -2037,7 +2037,7 @@ _0805E252: .pool _0805E260: ldrb r0, [r4] - bl sub_8072B18 + bl SetBankHealthboxSpritePos ldr r0, =gBanksBySide ldrb r1, [r4] adds r0, r1, r0 @@ -2084,7 +2084,7 @@ _0805E29C: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute b _0805E302 .pool _0805E2E4: @@ -2101,13 +2101,13 @@ _0805E2E4: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute _0805E302: ldr r1, =gHealthBoxesIds ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible _0805E30E: ldrb r0, [r4] adds r0, 0x1 @@ -2128,7 +2128,7 @@ _0805E324: b _0805E346 .pool _0805E33C: - bl sub_805EC84 + bl LoadAndCreateEnemyShadowSprites bl sub_81B8C68 movs r6, 0x1 _0805E346: @@ -2541,7 +2541,7 @@ _0805E662: ldr r1, =gSprites adds r1, 0x8 adds r0, r1 - ldr r1, =gUnknown_08309AAC + ldr r1, =gMonAnimationsSpriteAnimsPtrTable mov r3, r8 lsls r2, r3, 2 adds r1, r2 @@ -2630,8 +2630,8 @@ _0805E77A: .pool thumb_func_end sub_805E448 - thumb_func_start sub_805E7DC -sub_805E7DC: @ 805E7DC + thumb_func_start BattleLoadSubstituteSpriteGfx +BattleLoadSubstituteSpriteGfx: @ 805E7DC push {r4-r7,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -2732,7 +2732,7 @@ _0805E898: ldr r1, =gEnemyParty adds r0, r1 adds r1, r4, 0 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx b _0805E8E6 .pool _0805E8D0: @@ -2745,13 +2745,13 @@ _0805E8D0: ldr r1, =gPlayerParty adds r0, r1 adds r1, r5, 0 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx _0805E8E6: pop {r4-r7} pop {r0} bx r0 .pool - thumb_func_end sub_805E7DC + thumb_func_end BattleLoadSubstituteSpriteGfx thumb_func_start refresh_graphics_maybe refresh_graphics_maybe: @ 805E8F4 @@ -2766,7 +2766,7 @@ refresh_graphics_maybe: @ 805E8F4 lsrs r4, 24 adds r0, r6, 0 adds r1, r5, 0 - bl sub_805E7DC + bl BattleLoadSubstituteSpriteGfx lsls r0, r4, 4 adds r0, r4 lsls r0, 2 @@ -2905,7 +2905,7 @@ _0805EA08: negs r0, r0 ands r0, r2 strb r0, [r1] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0805EA34 @@ -2914,7 +2914,7 @@ _0805EA08: b _0805EA5A .pool _0805EA34: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805EA5A @@ -2955,7 +2955,7 @@ BattleMusicStop: @ 805EA60 adds r0, r6, 0 ands r0, r2 strb r0, [r1] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805EAA2 @@ -3059,7 +3059,7 @@ sub_805EAE8: @ 805EAE8 mov r1, r8 bl sub_805E990 _0805EB5A: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805EB7E @@ -3195,8 +3195,8 @@ _0805EC6C: .pool thumb_func_end sub_805EB9C - thumb_func_start sub_805EC84 -sub_805EC84: @ 805EC84 + thumb_func_start LoadAndCreateEnemyShadowSprites +LoadAndCreateEnemyShadowSprites: @ 805EC84 push {r4-r7,lr} mov r7, r8 push {r7} @@ -3247,7 +3247,7 @@ sub_805EC84: @ 805EC84 lsls r0, 2 adds r0, r7 strh r5, [r0, 0x2E] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805ED56 @@ -3299,7 +3299,7 @@ _0805ED56: pop {r0} bx r0 .pool - thumb_func_end sub_805EC84 + thumb_func_end LoadAndCreateEnemyShadowSprites thumb_func_start sub_805ED70 @ int sub_805ED70(obj *a1) @@ -3418,8 +3418,8 @@ sub_805EE48: @ 805EE48 bx lr thumb_func_end sub_805EE48 - thumb_func_start sub_805EE54 -sub_805EE54: @ 805EE54 + thumb_func_start SetBankEnemyShadowSpriteCallback +SetBankEnemyShadowSpriteCallback: @ 805EE54 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -3482,7 +3482,7 @@ _0805EED0: pop {r0} bx r0 .pool - thumb_func_end sub_805EE54 + thumb_func_end SetBankEnemyShadowSpriteCallback thumb_func_start sub_805EEE0 sub_805EEE0: @ 805EEE0 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 645700d53c..5ce9c4cf94 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -4047,7 +4047,7 @@ sub_80A5AFC: @ 80A5AFC lsls r0, 24 cmp r0, 0 bne _080A5BA6 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A5BA6 @@ -4129,7 +4129,7 @@ sub_80A5BAC: @ 80A5BAC lsls r0, 24 cmp r0, 0 bne _080A5C38 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A5C38 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 58eb2ebf08..4ecdcbf680 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -721,7 +721,7 @@ sub_80FEE1C: @ 80FEE1C lsls r0, 24 cmp r0, 0 bne _080FEE36 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _080FEE3E @@ -1260,7 +1260,7 @@ _080FF260: sub_80FF268: @ 80FF268 push {r4,lr} adds r4, r0, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -5433,7 +5433,7 @@ _08101378: ldr r0, =gAnimationBankTarget _0810137A: ldrb r6, [r0] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081013C4 @@ -7557,7 +7557,7 @@ _08102448: bne _08102464 adds r0, r4, r5 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible _08102464: movs r1, 0x2 ldrsh r0, [r6, r1] @@ -7571,7 +7571,7 @@ _08102464: bne _08102482 adds r0, r4, r5 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible _08102482: adds r0, r4, 0x1 lsls r0, 24 @@ -7600,7 +7600,7 @@ _081024B2: ldr r0, =gHealthBoxesIds adds r0, r4, r0 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 @@ -13205,7 +13205,7 @@ _081051F2: movs r0, 0x1 adds r4, r0, 0 eors r4, r1 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0810526A @@ -26794,7 +26794,7 @@ _0810BF90: ldrsh r0, [r0, r1] cmp r0, 0 beq _0810BFA8 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0810BFB4 @@ -33105,7 +33105,7 @@ _0810F284: mov r0, r8 cmp r0, 0 bne _0810F2B8 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0810F2B8 @@ -33501,7 +33501,7 @@ _0810F5A6: lsls r0, 24 cmp r0, 0 bne _0810F5EE - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0810F5EE @@ -43194,7 +43194,7 @@ sub_81144F8: @ 81144F8 movs r2, 0x1 bl lcd_bg_operations _0811455C: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081145D6 @@ -47859,7 +47859,7 @@ sub_8116B14: @ 8116B14 movs r0, 0xA bl SetGpuReg _08116BA2: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08116C26 @@ -48295,7 +48295,7 @@ _08116F5C: movs r2, 0x1 bl lcd_bg_operations _08116FBA: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08117036 diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 81e4f9163d..fc21f001f4 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -3256,7 +3256,7 @@ _0815BAB6: lsls r1, r0, 2 adds r1, r2 ldrh r1, [r1, 0x2] - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback _0815BAF6: mov r0, r8 bl move_anim_task_del @@ -4001,7 +4001,7 @@ _0815C15C: bl GetBankIdentity lsls r0, 24 lsrs r4, r0, 24 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -9334,7 +9334,7 @@ sub_815EC48: @ 815EC48 lsls r0, 24 cmp r0, 0 bne _0815ECD0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x1 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 58f3b95b75..7a90e49495 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -199,11 +199,11 @@ sub_8064520: @ 8064520 movs r0, 0 mov r8, r0 movs r4, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0806454C - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08064584 @@ -531,7 +531,7 @@ _080647B4: ands r0, r1 cmp r0, 0 bne _0806487A - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0806484A @@ -557,7 +557,7 @@ _080647B4: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute mov r1, r9 ldrb r0, [r1] eors r0, r7 @@ -567,7 +567,7 @@ _080647B4: eors r0, r7 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _0806484A: ldr r5, =gHealthBoxesIds ldr r4, =gActiveBank @@ -583,13 +583,13 @@ _0806484A: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _0806487A: ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] @@ -760,7 +760,7 @@ _08064998: movs r1, 0 strb r1, [r0, 0x9] _080649E2: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08064A3A @@ -799,7 +799,7 @@ _080649E2: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback _08064A3A: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank @@ -827,7 +827,7 @@ _08064A3A: lsls r1, 16 lsrs r1, 16 adds r0, r5, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] @@ -974,7 +974,7 @@ sub_8064BC0: @ 8064BC0 ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -1017,7 +1017,7 @@ sub_8064C14: @ 8064C14 ldr r0, =gHealthBoxesIds adds r0, r3, r0 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl LinkOpponentBufferExecCompleted _08064C42: pop {r0} @@ -1065,7 +1065,7 @@ sub_8064C58: @ 8064C58 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl LinkOpponentBufferExecCompleted _08064CB2: pop {r4-r6} @@ -1321,13 +1321,13 @@ sub_8064E50: @ 8064E50 ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_8076918 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldrb r0, [r5] bl sub_805E408 ldr r1, =gBattleBankFunc @@ -1413,7 +1413,7 @@ _08064F72: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 @@ -3583,7 +3583,7 @@ sub_80662F8: @ 80662F8 muls r2, r0 adds r0, r2, 0 add r0, r9 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx ldrb r0, [r6] bl GetBankIdentity adds r1, r0, 0 @@ -3673,7 +3673,7 @@ sub_80662F8: @ 80662F8 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r1, =gBattleBankFunc ldrb r0, [r6] lsls r0, 2 @@ -3772,7 +3772,7 @@ sub_8066494: @ 8066494 adds r0, r1, 0 adds r0, r5 adds r1, r6, 0 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx adds r0, r6, 0 bl GetBankIdentity adds r1, r0, 0 @@ -3947,7 +3947,7 @@ _0806666C: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl LinkOpponentBufferExecCompleted _080666A8: pop {r4-r6} @@ -5242,7 +5242,7 @@ sub_806719C: @ 806719C ldr r2, =gEnemyParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -5779,7 +5779,7 @@ c3_08038DC4: @ 8067618 adds r0, r1 ldrh r0, [r0, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08067652 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 562b236d05..b26943cf5c 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -168,11 +168,11 @@ _0814AFF4: sub_814B004: @ 814B004 push {r4-r6,lr} movs r6, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0814B028 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0814B05C @@ -348,7 +348,7 @@ _0814B136: lsls r0, 2 adds r0, r2 strb r6, [r0, 0x9] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0814B1F0 @@ -383,7 +383,7 @@ _0814B136: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] mov r1, r8 eors r0, r1 @@ -393,7 +393,7 @@ _0814B136: eors r0, r1 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _0814B1F0: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank @@ -419,13 +419,13 @@ _0814B1F0: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] @@ -498,7 +498,7 @@ bx_t4_healthbar_update: @ 814B2D0 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -587,7 +587,7 @@ sub_814B340: @ 814B340 ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl LinkPartnerBufferExecCompleted _0814B3BC: pop {r4-r6} @@ -634,7 +634,7 @@ sub_814B3DC: @ 814B3DC ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl LinkPartnerBufferExecCompleted _0814B430: pop {r4-r6} @@ -878,13 +878,13 @@ sub_814B5A8: @ 814B5A8 muls r1, r6 adds r1, r5 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] bl sub_8076918 ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r1, =gBattleBankFunc ldrb r0, [r7] lsls r0, 2 @@ -3154,7 +3154,7 @@ sub_814CB0C: @ 814CB0C muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r6] lsls r0, 1 add r0, r8 @@ -3283,7 +3283,7 @@ sub_814CC28: @ 814CC28 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r5] lsls r1, r0, 9 adds r1, r6 @@ -3514,7 +3514,7 @@ _0814CE5C: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl LinkPartnerBufferExecCompleted _0814CE92: pop {r4-r6} @@ -3696,7 +3696,7 @@ _0814D002: ldr r5, =gActiveBank ldrb r1, [r5] adds r0, r4, 0 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r5] bl GetBankIdentity adds r1, r0, 0 @@ -3706,7 +3706,7 @@ _0814D002: bl sub_806A12C ldr r6, =gUnknown_0202499C mov r8, r7 - ldr r0, =gUnknown_08305D2C + ldr r0, =gTrainerBackPicCoords lsls r4, 2 adds r4, r0 ldrb r0, [r4] @@ -4551,7 +4551,7 @@ sub_814D738: @ 814D738 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -5217,7 +5217,7 @@ _0814DCF8: mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0814DD18 @@ -5276,7 +5276,7 @@ _0814DD48: muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_814CC98 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 066a0ceab3..6c553ad27a 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -200,11 +200,11 @@ sub_805F2F0: @ 805F2F0 push {r5-r7} movs r0, 0 mov r10, r0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F32C - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F31E @@ -520,7 +520,7 @@ _0805F5A6: ands r0, r1 cmp r0, 0 bne _0805F5EE - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F5EE @@ -583,7 +583,7 @@ _0805F5EE: ands r0, r1 cmp r0, 0 bne _0805F6B4 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F684 @@ -609,7 +609,7 @@ _0805F5EE: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute mov r1, r8 ldrb r0, [r1] eors r0, r7 @@ -619,7 +619,7 @@ _0805F5EE: eors r0, r7 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _0805F684: ldr r5, =gHealthBoxesIds ldr r4, =gActiveBank @@ -635,13 +635,13 @@ _0805F684: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _0805F6B4: ldr r3, =gBattleSpritesDataPtr ldr r2, [r3] @@ -739,11 +739,11 @@ _0805F774: movs r0, 0x1 str r0, [sp] _0805F792: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F7B2 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F810 @@ -838,7 +838,7 @@ _0805F86E: mov r0, r10 cmp r0, 0 beq _0805F958 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805F8D2 @@ -877,7 +877,7 @@ _0805F86E: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback _0805F8D2: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank @@ -905,7 +905,7 @@ _0805F8D2: lsls r1, 16 lsrs r1, 16 adds r0, r5, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] @@ -1068,7 +1068,7 @@ sub_805FA70: @ 805FA70 ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -1111,7 +1111,7 @@ sub_805FAC4: @ 805FAC4 ldr r0, =gHealthBoxesIds adds r0, r3, r0 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl OpponentBufferExecCompleted _0805FAF2: pop {r0} @@ -1159,7 +1159,7 @@ sub_805FB08: @ 805FB08 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl OpponentBufferExecCompleted _0805FB62: pop {r4-r6} @@ -1415,13 +1415,13 @@ sub_805FD00: @ 805FD00 ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_8076918 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldrb r0, [r5] bl sub_805E408 ldr r1, =gBattleBankFunc @@ -1507,7 +1507,7 @@ _0805FE22: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 @@ -3730,7 +3730,7 @@ sub_8061224: @ 8061224 ldrh r0, [r0] muls r0, r7 add r0, r10 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx ldrb r0, [r6] bl GetBankIdentity adds r1, r0, 0 @@ -3828,7 +3828,7 @@ sub_8061224: @ 8061224 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r1, =gBattleBankFunc ldrb r0, [r6] lsls r0, 2 @@ -3934,7 +3934,7 @@ sub_80613DC: @ 80613DC adds r0, r1, 0 adds r0, r5 adds r1, r6, 0 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx adds r0, r6, 0 bl GetBankIdentity adds r1, r0, 0 @@ -4109,7 +4109,7 @@ _080615B4: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl OpponentBufferExecCompleted _080615F0: pop {r4-r6} @@ -5692,7 +5692,7 @@ sub_8062390: @ 8062390 ldr r2, =gEnemyParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -6244,7 +6244,7 @@ sub_8062828: @ 8062828 adds r0, r1 ldrh r0, [r0, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0806286C diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 1ea1bb5f23..0859abc162 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -249,7 +249,7 @@ _08057674: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -277,7 +277,7 @@ _080576B4: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -321,7 +321,7 @@ _0805771A: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -333,7 +333,7 @@ _08057732: adds r0, r5 ldrb r0, [r0] movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt b _080577E8 .pool _0805774C: @@ -2385,11 +2385,11 @@ sub_805896C: @ 805896C mov r5, r8 push {r5-r7} movs r7, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08058998 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080589D0 @@ -2541,7 +2541,7 @@ _08058A0E: ldr r4, =gPlayerParty adds r0, r4 bl sub_805E990 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08058AE4 @@ -2672,7 +2672,7 @@ _08058BB2: ands r0, r1 cmp r0, 0 bne _08058C68 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08058C38 @@ -2697,7 +2697,7 @@ _08058BB2: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] eors r0, r6 bl sub_8076918 @@ -2705,7 +2705,7 @@ _08058BB2: eors r0, r6 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _08058C38: ldr r5, =gHealthBoxesIds ldr r4, =gActiveBank @@ -2721,13 +2721,13 @@ _08058C38: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _08058C68: ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] @@ -2817,11 +2817,11 @@ _08058D14: movs r0, 0x1 mov r9, r0 _08058D32: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08058D52 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08058DAC @@ -2915,7 +2915,7 @@ _08058E0A: mov r0, r8 cmp r0, 0 beq _08058EAA - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08058E48 @@ -3207,13 +3207,13 @@ _0805905E: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_8076918 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 @@ -3267,7 +3267,7 @@ bx_t1_healthbar_update: @ 8059130 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -3338,7 +3338,7 @@ sub_80591B8: @ 80591B8 str r7, [sp, 0x8] ldrh r2, [r1, 0xA] str r2, [sp, 0xC] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3415,7 +3415,7 @@ _080591FE: movs r1, 0xB bl dp01_build_cmdbuf_x21_a_bb strb r5, [r4] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3616,7 +3616,7 @@ _08059430: lsls r4, 16 lsrs r4, 16 ldrb r0, [r5] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r4, 16 movs r0, 0x1 @@ -3729,7 +3729,7 @@ sub_8059544: @ 8059544 adds r0, r1 ldrb r4, [r0, 0xC] ldrb r6, [r0, 0x8] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3795,7 +3795,7 @@ sub_80595A4: @ 80595A4 adds r0, r7, 0 movs r1, 0x38 bl GetMonData - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3814,7 +3814,7 @@ sub_80595A4: @ 80595A4 ldrb r0, [r0] adds r1, r7, 0 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute b _08059638 .pool _08059624: @@ -3826,7 +3826,7 @@ _08059624: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute _08059638: ldr r0, =gTasks lsls r1, r6, 2 @@ -3930,7 +3930,7 @@ sub_80596A8: @ 80596A8 ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl PlayerBufferExecCompleted _08059724: pop {r4-r6} @@ -3977,7 +3977,7 @@ sub_8059744: @ 8059744 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl PlayerBufferExecCompleted _08059798: pop {r4-r6} @@ -4561,8 +4561,8 @@ battle_menu_cursor_related: @ 8059C70 .pool thumb_func_end battle_menu_cursor_related - thumb_func_start sub_8059CB4 -sub_8059CB4: @ 8059CB4 + thumb_func_start ActionSelectionCreateCursorAt +ActionSelectionCreateCursorAt: @ 8059CB4 push {r4,lr} sub sp, 0x10 adds r3, r0, 0 @@ -4595,10 +4595,10 @@ sub_8059CB4: @ 8059CB4 pop {r4} pop {r0} bx r0 - thumb_func_end sub_8059CB4 + thumb_func_end ActionSelectionCreateCursorAt - thumb_func_start sub_8059CF8 -sub_8059CF8: @ 8059CF8 + thumb_func_start ActionSelectionDestroyCursorAt +ActionSelectionDestroyCursorAt: @ 8059CF8 push {lr} sub sp, 0x10 adds r3, r0, 0 @@ -4632,7 +4632,7 @@ sub_8059CF8: @ 8059CF8 pop {r0} bx r0 .pool - thumb_func_end sub_8059CF8 + thumb_func_end ActionSelectionDestroyCursorAt thumb_func_start sub_8059D40 sub_8059D40: @ 8059D40 @@ -6866,7 +6866,7 @@ sub_805B164: @ 805B164 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldr r2, =gSprites ldr r0, =gBankSpriteIds ldrb r3, [r4] @@ -6923,7 +6923,7 @@ sub_805B1CC: @ 805B1CC muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldr r1, =gActionSelectionCursor ldrb r0, [r5] adds r0, r1 @@ -7162,7 +7162,7 @@ _0805B41C: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl PlayerBufferExecCompleted _0805B452: pop {r4-r6} @@ -7375,7 +7375,7 @@ _0805B5E0: b _0805B642 .pool _0805B618: - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords lsls r0, r4, 2 adds r0, r1 ldrb r1, [r0] @@ -7392,7 +7392,7 @@ _0805B618: _0805B63C: movs r0, 0x50 mov r9, r0 - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords _0805B642: lsls r0, r4, 2 adds r0, r1 @@ -7542,7 +7542,7 @@ _0805B794: ldr r5, =gActiveBank ldrb r1, [r5] adds r0, r4, 0 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r5] bl GetBankIdentity adds r1, r0, 0 @@ -7724,7 +7724,7 @@ _0805B926: ldr r5, =gActiveBank ldrb r1, [r5] adds r0, r4, 0 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r5] bl GetBankIdentity adds r1, r0, 0 @@ -7733,7 +7733,7 @@ _0805B926: adds r0, r4, 0 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords lsls r4, 2 adds r4, r1 ldrb r1, [r4] @@ -8539,7 +8539,7 @@ dp01t_12_6_battle_menu: @ 805C044 _0805C062: lsls r0, r4, 24 lsrs r0, 24 - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt adds r4, 0x1 cmp r4, 0x3 ble _0805C062 @@ -8549,7 +8549,7 @@ _0805C062: adds r0, r1 ldrb r0, [r0] movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt ldr r0, =gText_WhatWillPkmnDo bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle @@ -9130,7 +9130,7 @@ sub_805C5C4: @ 805C5C4 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -9860,7 +9860,7 @@ sub_805CC00: @ 805CC00 ldr r1, =gPlayerParty adds r0, r1 adds r1, r4, 0 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldr r0, =gBankSpriteIds adds r4, r0 ldrb r1, [r4] @@ -9906,7 +9906,7 @@ _0805CC94: mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0805CCB4 @@ -9965,7 +9965,7 @@ _0805CCE4: muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_805B258 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index c0ea9b87f0..58463d4bd3 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -169,11 +169,11 @@ _081BAF38: sub_81BAF48: @ 81BAF48 push {r4-r6,lr} movs r6, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081BAF6C - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081BAFA0 @@ -349,7 +349,7 @@ _081BB07A: lsls r0, 2 adds r0, r2 strb r6, [r0, 0x9] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081BB134 @@ -384,7 +384,7 @@ _081BB07A: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] mov r1, r8 eors r0, r1 @@ -394,7 +394,7 @@ _081BB07A: eors r0, r1 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _081BB134: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank @@ -420,13 +420,13 @@ _081BB134: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] @@ -499,7 +499,7 @@ bx_t3_healthbar_update: @ 81BB214 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -570,7 +570,7 @@ sub_81BB29C: @ 81BB29C str r7, [sp, 0x8] ldrh r2, [r1, 0xA] str r2, [sp, 0xC] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -647,7 +647,7 @@ _081BB2E2: movs r1, 0xB bl dp01_build_cmdbuf_x21_a_bb strb r5, [r4] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -848,7 +848,7 @@ _081BB514: lsls r4, 16 lsrs r4, 16 ldrb r0, [r5] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r4, 16 movs r0, 0x1 @@ -961,7 +961,7 @@ sub_81BB628: @ 81BB628 adds r0, r1 ldrb r4, [r0, 0xC] ldrb r6, [r0, 0x8] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1027,7 +1027,7 @@ sub_81BB688: @ 81BB688 adds r0, r7, 0 movs r1, 0x38 bl GetMonData - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1046,7 +1046,7 @@ sub_81BB688: @ 81BB688 ldrb r0, [r0] adds r1, r7, 0 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute b _081BB71C .pool _081BB708: @@ -1058,7 +1058,7 @@ _081BB708: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute _081BB71C: ldr r0, =gTasks lsls r1, r6, 2 @@ -1162,7 +1162,7 @@ sub_81BB78C: @ 81BB78C ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl PlayerPartnerBufferExecCompleted _081BB808: pop {r4-r6} @@ -1209,7 +1209,7 @@ sub_81BB828: @ 81BB828 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl PlayerPartnerBufferExecCompleted _081BB87C: pop {r4-r6} @@ -1453,13 +1453,13 @@ sub_81BB9F4: @ 81BB9F4 muls r1, r6 adds r1, r5 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] bl sub_8076918 ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r1, =gBattleBankFunc ldrb r0, [r7] lsls r0, 2 @@ -3729,7 +3729,7 @@ sub_81BCF58: @ 81BCF58 muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r6] lsls r0, 1 add r0, r8 @@ -3858,7 +3858,7 @@ sub_81BD074: @ 81BD074 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r5] lsls r1, r0, 9 adds r1, r6 @@ -4089,7 +4089,7 @@ _081BD2A8: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl PlayerPartnerBufferExecCompleted _081BD2DE: pop {r4-r6} @@ -4182,7 +4182,7 @@ sub_81BD37C: @ 81BD37C movs r4, 0x7 movs r0, 0x5A mov r9, r0 - ldr r0, =gUnknown_08305D2C + ldr r0, =gTrainerBackPicCoords ldrb r1, [r0, 0x1C] b _081BD3BE .pool @@ -4213,7 +4213,7 @@ _081BD3BE: ldr r5, =gActiveBank ldrb r1, [r5] adds r0, r4, 0 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r5] bl GetBankIdentity adds r1, r0, 0 @@ -5338,7 +5338,7 @@ sub_81BDD9C: @ 81BDD9C ldr r2, =gPlayerParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -5950,7 +5950,7 @@ _081BE2F4: mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081BE314 @@ -6009,7 +6009,7 @@ _081BE344: muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_81BD0E4 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 0d9bb2331f..361da7670e 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -198,11 +198,11 @@ sub_8186678: @ 8186678 push {r6,r7} movs r0, 0 mov r9, r0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081866A4 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _081866F8 @@ -504,7 +504,7 @@ _081868DE: ands r0, r1 cmp r0, 0 bne _08186994 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08186964 @@ -529,7 +529,7 @@ _081868DE: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] eors r0, r6 bl sub_8076918 @@ -537,7 +537,7 @@ _081868DE: eors r0, r6 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _08186964: ldr r5, =gHealthBoxesIds ldr r4, =gActiveBank @@ -553,13 +553,13 @@ _08186964: ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _08186994: ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] @@ -655,7 +655,7 @@ _08186A4C: movs r0, 0x1 mov r9, r0 _08186A6A: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08186AC8 @@ -742,7 +742,7 @@ _08186B26: mov r0, r8 cmp r0, 0 beq _08186C10 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08186B8A @@ -781,7 +781,7 @@ _08186B26: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback _08186B8A: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank @@ -809,7 +809,7 @@ _08186B8A: lsls r1, 16 lsrs r1, 16 adds r0, r5, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] @@ -955,7 +955,7 @@ sub_8186D04: @ 8186D04 ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -998,7 +998,7 @@ sub_8186D58: @ 8186D58 ldr r0, =gHealthBoxesIds adds r0, r3, r0 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl RecordedOpponentBufferExecCompleted _08186D86: pop {r0} @@ -1046,7 +1046,7 @@ sub_8186D9C: @ 8186D9C ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl RecordedOpponentBufferExecCompleted _08186DF6: pop {r4-r6} @@ -1302,13 +1302,13 @@ sub_8186F94: @ 8186F94 ldr r2, =gEnemyParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_8076918 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldrb r0, [r5] bl sub_805E408 ldr r1, =gBattleBankFunc @@ -1394,7 +1394,7 @@ _081870B6: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 @@ -3564,7 +3564,7 @@ sub_818843C: @ 818843C muls r2, r0 adds r0, r2, 0 add r0, r9 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx ldrb r0, [r6] bl GetBankIdentity adds r1, r0, 0 @@ -3654,7 +3654,7 @@ sub_818843C: @ 818843C lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl sub_805EE54 + bl SetBankEnemyShadowSpriteCallback ldr r1, =gBattleBankFunc ldrb r0, [r6] lsls r0, 2 @@ -3753,7 +3753,7 @@ sub_81885D8: @ 81885D8 adds r0, r1, 0 adds r0, r5 adds r1, r6, 0 - bl sub_805DC0C + bl BattleLoadOpponentMonSpriteGfx adds r0, r6, 0 bl GetBankIdentity adds r1, r0, 0 @@ -3928,7 +3928,7 @@ _081887B0: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl RecordedOpponentBufferExecCompleted _081887EC: pop {r4-r6} @@ -4981,7 +4981,7 @@ sub_81890CC: @ 81890CC ldr r2, =gEnemyParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -5518,7 +5518,7 @@ c3_0803D564: @ 8189548 adds r0, r1 ldrh r0, [r0, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189582 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 1b0cd52e32..7a232b7d89 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -180,11 +180,11 @@ sub_8189AA0: @ 8189AA0 beq _08189ABA b _08189C60 _08189ABA: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189ADA - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189B0C @@ -337,7 +337,7 @@ _08189B86: ldr r4, =gPlayerParty adds r0, r4 bl sub_805E990 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189C22 @@ -366,11 +366,11 @@ _08189C22: b _08189D10 .pool _08189C60: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189C80 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189CB0 @@ -561,7 +561,7 @@ _08189DBE: ands r0, r1 cmp r0, 0 bne _08189E84 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189E54 @@ -587,7 +587,7 @@ _08189DBE: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute mov r1, r9 ldrb r0, [r1] eors r0, r7 @@ -597,7 +597,7 @@ _08189DBE: eors r0, r7 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _08189E54: ldr r5, =gHealthBoxesIds ldr r4, =gActiveBank @@ -613,13 +613,13 @@ _08189E54: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _08189E84: ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] @@ -747,7 +747,7 @@ _08189F62: ldr r0, [r0] cmp r0, r2 bne _0818A02A - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189FC8 @@ -874,7 +874,7 @@ sub_818A0A4: @ 818A0A4 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -963,7 +963,7 @@ sub_818A114: @ 818A114 ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl RecordedPlayerBufferExecCompleted _0818A190: pop {r4-r6} @@ -1010,7 +1010,7 @@ sub_818A1B0: @ 818A1B0 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl RecordedPlayerBufferExecCompleted _0818A204: pop {r4-r6} @@ -1254,13 +1254,13 @@ sub_818A37C: @ 818A37C muls r1, r6 adds r1, r5 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r7] bl sub_8076918 ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r1, =gBattleBankFunc ldrb r0, [r7] lsls r0, 2 @@ -3530,7 +3530,7 @@ sub_818B8E0: @ 818B8E0 muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r6] lsls r0, 1 add r0, r8 @@ -3659,7 +3659,7 @@ sub_818B9FC: @ 818B9FC muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r5] lsls r1, r0, 9 adds r1, r6 @@ -3890,7 +3890,7 @@ _0818BC30: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl RecordedPlayerBufferExecCompleted _0818BC66: pop {r4-r6} @@ -4040,7 +4040,7 @@ _0818BD98: movs r0, 0x50 mov r9, r0 _0818BD9C: - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords _0818BD9E: lsls r0, r4, 2 adds r0, r1 @@ -4182,7 +4182,7 @@ _0818BEDC: ldr r5, =gActiveBank ldrb r1, [r5] adds r0, r4, 0 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r5] bl GetBankIdentity adds r1, r0, 0 @@ -5132,7 +5132,7 @@ sub_818C6F4: @ 818C6F4 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0x9 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] @@ -5746,7 +5746,7 @@ _0818CC50: mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0818CC70 @@ -5805,7 +5805,7 @@ _0818CCA0: muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 - bl sub_805DD7C + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_818BA6C diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index 26f7ad8f79..0783d2c6d1 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -132,7 +132,7 @@ _08159446: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -158,7 +158,7 @@ _08159484: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -184,7 +184,7 @@ _081594C0: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -196,7 +196,7 @@ _081594F2: adds r0, r5 ldrb r0, [r0] movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt b _0815954E .pool _0815950C: @@ -218,7 +218,7 @@ _0815950C: ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt ldrb r1, [r4] adds r1, r5 ldrb r0, [r1] @@ -229,7 +229,7 @@ _0815950C: adds r0, r5 ldrb r0, [r0] movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt _0815954E: pop {r4,r5} pop {r0} @@ -569,7 +569,7 @@ sub_8159800: @ 8159800 ldrb r0, [r0, 0x8] ldr r5, =gActiveBank ldrb r1, [r5] - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldr r0, [r4] ldrb r6, [r0, 0x8] ldrb r0, [r5] @@ -580,7 +580,7 @@ sub_8159800: @ 8159800 adds r0, r6, 0 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r2, =gUnknown_08305D2C + ldr r2, =gTrainerBackPicCoords ldr r1, [r4] ldrb r1, [r1, 0x8] lsls r1, 2 @@ -867,7 +867,7 @@ sub_8159A94: @ 8159A94 _08159AAE: lsls r0, r4, 24 lsrs r0, 24 - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt adds r4, 0x1 cmp r4, 0x3 ble _08159AAE @@ -877,7 +877,7 @@ _08159AAE: adds r0, r1 ldrb r0, [r0] movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt ldr r0, =gText_WhatWillPkmnDo2 bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle @@ -981,7 +981,7 @@ sub_8159B84: @ 8159B84 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0xB - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute bl SafariBufferExecCompleted pop {r0} bx r0 @@ -1256,13 +1256,13 @@ sub_8159D90: @ 8159D90 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0xA - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 629fa308d9..548414222b 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -180,10 +180,10 @@ _08168508: movs r0, 0x5 bl PlaySE movs r0, 0 - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt movs r0, 0x1 movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt ldr r0, [r4] adds r0, 0x96 movs r1, 0x40 @@ -425,7 +425,7 @@ _081686D2: ldr r0, [r0] cmp r0, r3 bne _081687DC - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0816877A @@ -459,7 +459,7 @@ _081686D2: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r5] eors r0, r6 bl sub_8076918 @@ -467,7 +467,7 @@ _081686D2: eors r0, r6 adds r0, r4 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible _0816877A: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank @@ -493,13 +493,13 @@ _0816877A: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] @@ -665,7 +665,7 @@ sub_8168934: @ 8168934 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] - bl sub_80729D0 + bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 @@ -796,7 +796,7 @@ sub_8168A20: @ 8168A20 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl WallyBufferExecCompleted _08168A74: pop {r4-r6} @@ -3015,7 +3015,7 @@ _08169E80: ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] - bl sub_8072984 + bl SetHealthboxSpriteInvisible bl WallyBufferExecCompleted _08169EB6: pop {r4-r6} @@ -3030,7 +3030,7 @@ sub_8169EC8: @ 8169EC8 ldr r4, =gActiveBank ldrb r1, [r4] movs r0, 0x6 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r4] bl GetBankIdentity adds r1, r0, 0 @@ -3039,7 +3039,7 @@ sub_8169EC8: @ 8169EC8 movs r0, 0x6 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords ldrb r1, [r1, 0x18] movs r2, 0x8 subs r2, r1 @@ -3115,7 +3115,7 @@ dp01t_07_6_: @ 8169F94 ldr r4, =gActiveBank ldrb r1, [r4] movs r0, 0x6 - bl sub_805DF84 + bl LoadBackTrainerBankSpriteGfx ldrb r0, [r4] bl GetBankIdentity adds r1, r0, 0 @@ -3124,7 +3124,7 @@ dp01t_07_6_: @ 8169F94 movs r0, 0x6 bl sub_806A12C ldr r0, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C + ldr r1, =gTrainerBackPicCoords ldrb r1, [r1, 0x18] movs r2, 0x8 subs r2, r1 @@ -3681,7 +3681,7 @@ dp01t_12_1_battle_menu: @ 816A470 _0816A48A: lsls r0, r4, 24 lsrs r0, 24 - bl sub_8059CF8 + bl ActionSelectionDestroyCursorAt adds r4, 0x1 cmp r4, 0x3 ble _0816A48A @@ -3691,7 +3691,7 @@ _0816A48A: adds r0, r1 ldrb r0, [r0] movs r1, 0 - bl sub_8059CB4 + bl ActionSelectionCreateCursorAt ldr r0, =gText_WhatWillWallyDo bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, =gDisplayedStringBattle diff --git a/asm/battle_interface.s b/asm/battle_interface.s index d9bb3d8cc4..1f1185032e 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -261,8 +261,8 @@ sub_80724A8: @ 80724A8 bx r0 thumb_func_end sub_80724A8 - thumb_func_start battle_make_oam_normal_battle -battle_make_oam_normal_battle: @ 80724DC + thumb_func_start CreateBankHealthboxSprites +CreateBankHealthboxSprites: @ 80724DC push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -274,7 +274,7 @@ battle_make_oam_normal_battle: @ 80724DC mov r10, r0 movs r0, 0 str r0, [sp] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _080725F0 @@ -608,10 +608,10 @@ _08072718: pop {r1} bx r1 .pool - thumb_func_end battle_make_oam_normal_battle + thumb_func_end CreateBankHealthboxSprites - thumb_func_start battle_make_oam_safari_battle -battle_make_oam_safari_battle: @ 8072804 + thumb_func_start CreateSafariPlayerHealthboxSprites +CreateSafariPlayerHealthboxSprites: @ 8072804 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -680,7 +680,7 @@ battle_make_oam_safari_battle: @ 8072804 pop {r1} bx r1 .pool - thumb_func_end battle_make_oam_safari_battle + thumb_func_end CreateSafariPlayerHealthboxSprites thumb_func_start sub_80728A4 sub_80728A4: @ 80728A4 @@ -802,8 +802,8 @@ sub_807294C: @ 807294C .pool thumb_func_end sub_807294C - thumb_func_start sub_8072984 -sub_8072984: @ 8072984 + thumb_func_start SetHealthboxSpriteInvisible +SetHealthboxSpriteInvisible: @ 8072984 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -841,10 +841,10 @@ sub_8072984: @ 8072984 pop {r0} bx r0 .pool - thumb_func_end sub_8072984 + thumb_func_end SetHealthboxSpriteInvisible - thumb_func_start sub_80729D0 -sub_80729D0: @ 80729D0 + thumb_func_start SetHealthboxSpriteVisible +SetHealthboxSpriteVisible: @ 80729D0 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -885,7 +885,7 @@ sub_80729D0: @ 80729D0 pop {r0} bx r0 .pool - thumb_func_end sub_80729D0 + thumb_func_end SetHealthboxSpriteVisible thumb_func_start sub_8072A24 sub_8072A24: @ 8072A24 @@ -1014,14 +1014,14 @@ _08072B00: .pool thumb_func_end sub_8072A88 - thumb_func_start sub_8072B18 -sub_8072B18: @ 8072B18 + thumb_func_start SetBankHealthboxSpritePos +SetBankHealthboxSpritePos: @ 8072B18 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 movs r4, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08072B44 @@ -1081,7 +1081,7 @@ _08072B7C: pop {r0} bx r0 .pool - thumb_func_end sub_8072B18 + thumb_func_end SetBankHealthboxSpritePos thumb_func_start healthbar_draw_level healthbar_draw_level: @ 8072B94 @@ -1132,7 +1132,7 @@ healthbar_draw_level: @ 8072B94 lsls r0, 24 cmp r0, 0 bne _08072C18 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 ldr r2, =0x06010420 adds r1, r4, r2 @@ -1187,7 +1187,7 @@ heathbar_draw_hp: @ 8072C38 lsls r0, 24 cmp r0, 0 bne _08072D10 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08072D10 @@ -1267,7 +1267,7 @@ _08072D10: ldrh r0, [r6, 0x3A] lsls r0, 24 lsrs r5, r0, 24 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 mov r10, r4 @@ -1993,7 +1993,7 @@ _08073354: bne _0807336A b _080735A8 _0807336A: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08073382 @@ -2036,7 +2036,7 @@ _08073382: lsls r0, 24 cmp r0, 0 bne _080734B0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _080733D0 @@ -2107,7 +2107,7 @@ _08073468: ldr r2, =gPlayerParty adds r1, r2 movs r2, 0x5 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute movs r0, 0x75 bl sub_80728A4 ldrb r2, [r6] @@ -2209,7 +2209,7 @@ _0807355C: ldr r4, =gEnemyParty adds r1, r4 movs r2, 0x5 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 @@ -2222,7 +2222,7 @@ _0807355C: muls r1, r5 adds r1, r4 movs r2, 0x4 - bl healthbar_draw_field_maybe + bl UpdateHealthboxAttribute _08073592: ldr r0, =gHealthBoxesIds add r0, r9 @@ -2303,7 +2303,7 @@ _08073630: mov r9, r3 cmp r4, 0 beq _08073642 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08073648 @@ -3842,7 +3842,7 @@ _08074272: adds r1, r6, 0 movs r2, 0x6 bl sub_8075198 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 ldr r1, =0x06010400 adds r5, r4, r1 @@ -4013,7 +4013,7 @@ draw_status_ailment_maybe: @ 80743F8 movs r1, 0x37 bl GetMonData adds r4, r0, 0 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 movs r3, 0x12 mov r8, r3 @@ -4210,7 +4210,7 @@ _080745B8: ldr r2, =0x04000018 adds r0, r6, 0 bl CpuSet - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4468,8 +4468,8 @@ sub_80747D8: @ 80747D8 .pool thumb_func_end sub_80747D8 - thumb_func_start healthbar_draw_field_maybe -healthbar_draw_field_maybe: @ 8074860 + thumb_func_start UpdateHealthboxAttribute +UpdateHealthboxAttribute: @ 8074860 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4492,7 +4492,7 @@ healthbar_draw_field_maybe: @ 8074860 mov r9, r0 cmp r7, 0 bne _0807489C - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0807489C @@ -4581,7 +4581,7 @@ _08074914: movs r3, 0 bl sub_8074AA0 _08074948: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 mov r10, r0 @@ -4742,7 +4742,7 @@ _08074A8E: pop {r4-r7} pop {r0} bx r0 - thumb_func_end healthbar_draw_field_maybe + thumb_func_end UpdateHealthboxAttribute thumb_func_start sub_8074AA0 sub_8074AA0: @ 8074AA0 diff --git a/asm/party_menu.s b/asm/party_menu.s index a881d45890..334c969854 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -15872,7 +15872,7 @@ sub_81B8958: @ 81B8958 thumb_func_start sub_81B8984 sub_81B8984: @ 81B8984 push {lr} - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _081B8994 @@ -16222,7 +16222,7 @@ _081B8CB0: strb r0, [r6, 0x2] b _081B8D58 _081B8CBE: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _081B8CFC @@ -16382,7 +16382,7 @@ _081B8DE2: strb r0, [r5, 0x2] b _081B8E72 _081B8DF0: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _081B8E28 diff --git a/asm/pokeball.s b/asm/pokeball.s index 4e637fb9d3..fed227c80f 100755 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -1211,7 +1211,7 @@ _08075DD4: cmp r5, r0 bne _08075E56 _08075E00: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08075E56 @@ -1243,7 +1243,7 @@ _08075E4C: movs r2, 0x80 bl m4aMPlayVolumeControl _08075E56: - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08075E70 @@ -1815,7 +1815,7 @@ _080762F8: ldrb r0, [r5, 0x6] strh r0, [r5, 0x3A] strh r1, [r5, 0x2E] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08076358 @@ -1888,7 +1888,7 @@ sub_8076398: @ 8076398 ble _080763EC movs r0, 0 strh r0, [r5, 0x2E] - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080763E8 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s deleted file mode 100644 index d9b679750f..0000000000 --- a/asm/reshow_battle_screen.s +++ /dev/null @@ -1,1040 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_35 -nullsub_35: @ 80A92F4 - bx lr - thumb_func_end nullsub_35 - - thumb_func_start ReshowBattleScreenAfterMenu -ReshowBattleScreenAfterMenu: @ 80A92F8 - push {lr} - ldr r2, =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - ldr r0, =gBattleScripting - adds r2, r0, 0 - adds r2, 0x21 - movs r1, 0 - strb r1, [r2] - adds r0, 0x22 - strb r1, [r0] - ldr r0, =c2_80777E8 - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end ReshowBattleScreenAfterMenu - - thumb_func_start c2_80777E8 -c2_80777E8: @ 80A933C - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, =gBattleScripting - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x13 - bls _080A934C - b _080A95A4 -_080A934C: - lsls r0, 2 - ldr r1, =_080A9360 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080A9360: - .4byte _080A93B0 - .4byte _080A942C - .4byte _080A9444 - .4byte _080A944A - .4byte _080A9450 - .4byte _080A9460 - .4byte _080A9466 - .4byte _080A948E - .4byte _080A9492 - .4byte _080A9496 - .4byte _080A949A - .4byte _080A94B8 - .4byte _080A94C0 - .4byte _080A94C8 - .4byte _080A94D0 - .4byte _080A94D8 - .4byte _080A94E0 - .4byte _080A94E8 - .4byte _080A94F0 - .4byte _080A94F8 -_080A93B0: - bl dp12_8087EA4 - bl trs_config - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl ResetPaletteFade - ldr r0, =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG0_Y - strh r1, [r0] - ldr r0, =gBattle_BG1_X - strh r1, [r0] - ldr r0, =gBattle_BG1_Y - strh r1, [r0] - ldr r0, =gBattle_BG2_X - strh r1, [r0] - ldr r0, =gBattle_BG2_Y - strh r1, [r0] - ldr r0, =gBattle_BG3_X - strh r1, [r0] - ldr r0, =gBattle_BG3_Y - strh r1, [r0] - b _080A95D2 - .pool -_080A942C: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x01006000 - add r0, sp, 0x4 - bl CpuFastSet - b _080A95D2 - .pool -_080A9444: - bl LoadBattleTextboxAndBackground - b _080A95D2 -_080A944A: - bl ResetSpriteData - b _080A95D2 -_080A9450: - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - b _080A95D2 - .pool -_080A9460: - bl sub_805E350 - b _080A95D2 -_080A9466: - ldr r5, =gBattleScripting - adds r4, r5, 0 - adds r4, 0x22 - ldrb r0, [r4] - bl sub_805E08C - lsls r0, 24 - cmp r0, 0 - beq _080A9484 - movs r0, 0 - strb r0, [r4] - b _080A95D2 - .pool -_080A9484: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r1, r5, 0 - b _080A94AA -_080A948E: - movs r0, 0 - b _080A949C -_080A9492: - movs r0, 0x1 - b _080A949C -_080A9496: - movs r0, 0x2 - b _080A949C -_080A949A: - movs r0, 0x3 -_080A949C: - bl sub_80A9614 - lsls r0, 24 - cmp r0, 0 - beq _080A94A8 - b _080A95D2 -_080A94A8: - ldr r1, =gBattleScripting -_080A94AA: - adds r1, 0x21 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - b _080A95D2 - .pool -_080A94B8: - movs r0, 0 - bl sub_80A9708 - b _080A95D2 -_080A94C0: - movs r0, 0x1 - bl sub_80A9708 - b _080A95D2 -_080A94C8: - movs r0, 0x2 - bl sub_80A9708 - b _080A95D2 -_080A94D0: - movs r0, 0x3 - bl sub_80A9708 - b _080A95D2 -_080A94D8: - movs r0, 0 - bl sub_80A9ADC - b _080A95D2 -_080A94E0: - movs r0, 0x1 - bl sub_80A9ADC - b _080A95D2 -_080A94E8: - movs r0, 0x2 - bl sub_80A9ADC - b _080A95D2 -_080A94F0: - movs r0, 0x3 - bl sub_80A9ADC - b _080A95D2 -_080A94F8: - bl sub_805EC84 - movs r0, 0x1 - bl GetBankByIdentity - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, =gBattlePartyID - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_805EE54 - bl battle_type_is_double - lsls r0, 24 - cmp r0, 0 - beq _080A955C - movs r0, 0x3 - bl GetBankByIdentity - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_805EE54 -_080A955C: - ldr r1, =gActionSelectionCursor - ldr r0, =gBankInMenu - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_8059CB4 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _080A95D2 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080A95D2 - bl sub_800E0E8 - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _080A95D2 - .pool -_080A95A4: - ldr r0, =VBlankCB_Battle - bl SetVBlankCallback - bl sub_80A95F4 - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, =BattleMainCB2 - bl SetMainCallback2 - bl sub_805EF14 -_080A95D2: - ldr r1, =gBattleScripting - adds r1, 0x21 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end c2_80777E8 - - thumb_func_start sub_80A95F4 -sub_80A95F4: @ 80A95F4 - ldr r3, =0x0400000a - ldrb r2, [r3] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, =0x0400000c - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - bx lr - .pool - thumb_func_end sub_80A95F4 - - thumb_func_start sub_80A9614 -sub_80A9614: @ 80A9614 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcs _080A96FC - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080A9676 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080A966C - ldr r1, =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl sub_805DC0C - b _080A96F4 - .pool -_080A966C: - adds r0, r4, 0 - movs r1, 0 - bl sub_805E7DC - b _080A96F4 -_080A9676: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - ands r1, r2 - cmp r1, 0 - beq _080A9698 - cmp r4, 0 - bne _080A9698 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - b _080A96AA - .pool -_080A9698: - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080A96B2 - cmp r4, 0 - bne _080A96B2 - movs r0, 0x6 -_080A96AA: - movs r1, 0 - bl sub_805DF84 - b _080A96F4 -_080A96B2: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080A96EC - ldr r1, =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl sub_805DD7C - b _080A96F4 - .pool -_080A96EC: - adds r0, r4, 0 - movs r1, 0 - bl sub_805E7DC -_080A96F4: - ldr r0, =gBattleScripting - adds r0, 0x22 - movs r1, 0 - strb r1, [r0] -_080A96FC: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A9614 - - thumb_func_start sub_80A9708 -sub_80A9708: @ 80A9708 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _080A9722 - b _080A9AA0 -_080A9722: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - lsls r2, r7, 2 - adds r0, r2, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - str r2, [sp] - cmp r0, 0 - beq _080A9748 - adds r0, r7, 0 - bl sub_80A614C - b _080A974E - .pool -_080A9748: - adds r0, r7, 0 - bl sub_80A6138 -_080A974E: - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A9762 - b _080A986C -_080A9762: - ldr r1, =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - ldr r1, =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080A9786 - b _080A9AA0 -_080A9786: - ldrh r0, [r6] - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806A068 - ldr r5, =gUnknown_0202499C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_80A5C6C - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_80A82E4 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r1, =gBankSpriteIds - adds r4, r7, r1 - strb r0, [r4] - ldr r5, =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - ldr r2, [sp] - adds r0, r2, r0 - b _080A9A50 - .pool -_080A986C: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - ands r1, r2 - cmp r1, 0 - beq _080A98D0 - cmp r7, 0 - bne _080A98D0 - ldr r5, =gSaveBlock2Ptr - ldr r0, [r5] - ldrb r4, [r0, 0x8] - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806A12C - ldr r6, =gUnknown_0202499C - ldr r1, =gUnknown_08305D2C - ldr r0, [r5] - ldrb r0, [r0, 0x8] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - movs r0, 0 - bl sub_80A82E4 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - b _080A9914 - .pool -_080A98D0: - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080A9968 - cmp r7, 0 - bne _080A9968 - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x6 - bl sub_806A12C - ldr r5, =gUnknown_0202499C - ldr r0, =gUnknown_08305D2C - ldrb r0, [r0, 0x18] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r4, r1 - asrs r4, 16 - movs r0, 0 - bl sub_80A82E4 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 -_080A9914: - movs r1, 0x50 - adds r2, r4, 0 - bl CreateSprite - ldr r3, =gBankSpriteIds - strb r0, [r3] - ldr r4, =gSprites - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x2E] - b _080A9A70 - .pool -_080A9968: - ldr r1, =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r2, 0x64 - mov r10, r2 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r2, =gPlayerParty - mov r9, r2 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080A998C - b _080A9AA0 -_080A998C: - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806A068 - ldr r5, =gUnknown_0202499C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_80A5C6C - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_80A82E4 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r1, =gBankSpriteIds - adds r4, r7, r1 - strb r0, [r4] - ldr r5, =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - ldr r1, [sp] - adds r0, r1, r0 -_080A9A50: - ldrh r1, [r0, 0x2] - ldr r0, =0x00000181 - cmp r1, r0 - bne _080A9A70 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r0, r5, 0 - adds r0, 0x8 - adds r1, r0 - ldr r0, =gUnknown_08309AAC - ldr r2, =0x00000604 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] -_080A9A70: - ldr r1, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r7, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - ldr r1, [sp] - adds r0, r1, r0 - ldr r1, [r0] - lsls r1, 31 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_080A9AA0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A9708 - - thumb_func_start sub_80A9ADC -sub_80A9ADC: @ 80A9ADC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bcc _080A9AEC - b _080A9C5E -_080A9AEC: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - ands r1, r2 - cmp r1, 0 - beq _080A9B0C - cmp r5, 0 - bne _080A9B0C - bl battle_make_oam_safari_battle - b _080A9B24 - .pool -_080A9B0C: - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080A9B1E - cmp r5, 0 - bne _080A9B1E - b _080A9C5E -_080A9B1E: - adds r0, r5, 0 - bl battle_make_oam_normal_battle -_080A9B24: - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gHealthBoxesIds - adds r4, r5, r0 - strb r6, [r4] - adds r0, r5, 0 - bl sub_8072B18 - adds r0, r6, 0 - bl sub_80729D0 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080A9B6C - ldrb r0, [r4] - ldr r1, =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, =gEnemyParty - adds r1, r2 - movs r2, 0 - bl healthbar_draw_field_maybe - b _080A9BB8 - .pool -_080A9B6C: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080A9BA0 - ldrb r0, [r4] - ldr r1, =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl healthbar_draw_field_maybe - b _080A9BB8 - .pool -_080A9BA0: - ldrb r0, [r4] - ldr r1, =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, =gPlayerParty - adds r1, r2 - movs r2, 0 - bl healthbar_draw_field_maybe -_080A9BB8: - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080A9BD4 - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080A9BF0 -_080A9BD4: - ldr r0, =gHealthBoxesIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_30 - b _080A9BFC - .pool -_080A9BF0: - ldr r0, =gHealthBoxesIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_30 -_080A9BFC: - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080A9C34 - ldr r0, =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080A9C5E - adds r0, r6, 0 - bl sub_8072984 - b _080A9C5E - .pool -_080A9C34: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A9C5E - ldr r0, =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080A9C5E - adds r0, r6, 0 - bl sub_8072984 -_080A9C5E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A9ADC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index bb74b3713e..a5791c7069 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -1928,15 +1928,15 @@ _080A6B1A: bx r1 thumb_func_end sub_80A6A90 - thumb_func_start battle_type_is_double -battle_type_is_double: @ 80A6B20 + thumb_func_start IsDoubleBattle +IsDoubleBattle: @ 80A6B20 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 bx lr .pool - thumb_func_end battle_type_is_double + thumb_func_end IsDoubleBattle thumb_func_start sub_80A6B30 sub_80A6B30: @ 80A6B30 @@ -5807,7 +5807,7 @@ _080A8946: bl sub_80A5C6C lsls r0, 24 lsrs r7, r0, 24 - bl battle_type_is_double + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A8998 diff --git a/data/data2b.s b/data/data2b.s index 802399fca6..87c5e6905d 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -134,7 +134,7 @@ gUnknown_083054E0:: @ 83054E0 gUnknown_08305D0C:: @ 8305D0C .incbin "baserom.gba", 0x305d0c, 0x20 -gUnknown_08305D2C:: @ 8305D2C +gTrainerBackPicCoords:: @ 8305D2C .incbin "baserom.gba", 0x305d2c, 0x20 @ 8305D4C @@ -146,7 +146,7 @@ gUnknown_08305D2C:: @ 8305D2C gUnknown_08305DCC:: @ 8305DCC .incbin "baserom.gba", 0x305dcc, 0x3ce0 -gUnknown_08309AAC:: @ 8309AAC +gMonAnimationsSpriteAnimsPtrTable:: @ 8309AAC .incbin "baserom.gba", 0x309aac, 0x6e0 @ 830A18C diff --git a/include/battle.h b/include/battle.h index d41702396a..eff1c27f10 100644 --- a/include/battle.h +++ b/include/battle.h @@ -808,8 +808,8 @@ struct BattleScripting u8 atk6C_state; u8 learnMoveState; u8 field_20; - u8 field_21; - u8 field_22; + u8 reshowMainState; + u8 reshowHelperState; u8 field_23; u8 field_24; u8 multiplayerId; @@ -839,9 +839,29 @@ void FreeBattleSpritesData(void); void AllocateMonSpritesGfx(void); void FreeMonSpritesGfx(void); void BattleMusicStop(void); -void sub_805E990(struct Pokemon* mon, u8 bank); +void sub_805E990(struct Pokemon *mon, u8 bank); void sub_805EF14(void); bool8 BattleInitAllSprites(u8 *state1, u8 *state2); +void sub_805E350(void); +bool8 BattleLoadAllHealthBoxesGfx(u8 state); +void LoadAndCreateEnemyShadowSprites(void); +void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species); +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank); +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank); +void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1); + +enum +{ + BACK_PIC_BRENDAN, + BACK_PIC_MAY, + BACK_PIC_RED, + BACK_PIC_LEAF, + BACK_PIC_RS_BRENDAN, + BACK_PIC_RS_MAY, + BACK_PIC_WALLY, + BACK_PIC_STEVEN +}; +void LoadBackTrainerBankSpriteGfx(u8 backPicId, u8 bank); // rom_80A5C6C u8 GetBankSide(u8 bank); diff --git a/include/battle_controller_player.h b/include/battle_controller_player.h new file mode 100644 index 0000000000..6d095efe7f --- /dev/null +++ b/include/battle_controller_player.h @@ -0,0 +1,7 @@ +#ifndef GUARD_BATTLE_CONTROLLER_PLAYER_H +#define GUARD_BATTLE_CONTROLLER_PLAYER_H + +void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); +void ActionSelectionDestroyCursorAt(u8 cursorPos); + +#endif // GUARD_BATTLE_CONTROLLER_PLAYER_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 2281fdaffb..ea614a6b23 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_CONTROLLERS_H #define GUARD_BATTLE_CONTROLLERS_H +#include "battle_controller_player.h" + #define REQUEST_ALL_BATTLE 0x0 #define REQUEST_SPECIES_BATTLE 0x1 #define REQUEST_HELDITEM_BATTLE 0x2 diff --git a/include/battle_interface.h b/include/battle_interface.h new file mode 100644 index 0000000000..cecc7bd1fe --- /dev/null +++ b/include/battle_interface.h @@ -0,0 +1,28 @@ +#ifndef GUARD_BATTLE_INTERFACE_H +#define GUARD_BATTLE_INTERFACE_H + +enum +{ + HEALTHBOX_ALL, + HEALTHBOX_CURRENT_HP, + HEALTHBOX_MAX_HP, + HEALTHBOX_LEVEL, + HEALTHBOX_NICK, + HEALTHBOX_HEALTH_BAR, + HEALTHBOX_EXP_BAR, + HEALTHBOX_7, + HEALTHBOX_8, + HEALTHBOX_STATUS_ICON, + HEALTHBOX_SAFARI_ALL_TEXT, + HEALTHBOX_SAFARI_BALLS_TEXT +}; + +u8 CreateBankHealthboxSprites(u8 bank); +u8 CreateSafariPlayerHealthboxSprites(void); +void SetBankHealthboxSpritePos(u8 bank); +void SetHealthboxSpriteVisible(u8 healthboxSpriteId); +void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); +void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); +void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); + +#endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h index 62773b48b0..c221352803 100644 --- a/include/reshow_battle_screen.h +++ b/include/reshow_battle_screen.h @@ -1,6 +1,7 @@ #ifndef GUARD_RESHOW_BATTLE_SCREEN_H #define GUARD_RESHOW_BATTLE_SCREEN_H +void nullsub_35(void); void ReshowBattleScreenAfterMenu(void); #endif // GUARD_RESHOW_BATTLE_SCREEN_H diff --git a/ld_script.txt b/ld_script.txt index 82588be3a9..f8d38e96f8 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -116,7 +116,7 @@ SECTIONS { asm/battle_anim.o(.text); asm/rom_80A5C6C.o(.text); src/task.o(.text); - asm/reshow_battle_screen.o(.text); + src/reshow_battle_screen.o(.text); asm/battle_anim_80A9C70.o(.text); asm/title_screen.o(.text); asm/field_screen.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index fd7cf68630..13b483ba07 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -219,7 +219,7 @@ extern void sub_81B9150(void); extern void sub_800AC34(void); extern void sub_80B3AF8(u8 taskId); // cable club extern void sub_8076918(u8 bank); -extern void sub_80729D0(u8 healthoxSpriteId); +extern void SetHealthboxSpriteVisible(u8 healthoxSpriteId); extern void sub_81A56B4(void); // battle frontier 2 extern u8 sub_81A9E28(void); // battle frontier 2 extern void sub_81A56E8(u8 bank); // battle frontier 2 @@ -2441,7 +2441,7 @@ static void sub_8039838(struct Sprite *sprite) if (sprite->animEnded) { sub_8076918(sprite->tBank); - sub_80729D0(gHealthBoxesIds[sprite->tBank]); + SetHealthboxSpriteVisible(gHealthBoxesIds[sprite->tBank]); sprite->callback = sub_8039894; StartSpriteAnimIfDifferent(sprite, 0); BeginNormalPaletteFade(0x20000, 0, 10, 0, 0x2108); diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index c0557ac702..5251ee06a0 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -17,7 +17,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const union AffineAnimCmd *const gUnknown_082FF618[]; extern const union AffineAnimCmd *const gUnknown_082FF694[]; extern const union AnimCmd *const gUnknown_082FF70C[]; -extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES]; +extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES]; extern const union AnimCmd *const *const gUnknown_0830536C[]; extern const u8 gUnknown_0831F578[]; @@ -282,7 +282,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, images[j].size = 0x800; } gUnknown_0203CCEC.tileTag = 0xFFFF; - gUnknown_0203CCEC.anims = gUnknown_08309AAC[species]; + gUnknown_0203CCEC.anims = gMonAnimationsSpriteAnimsPtrTable[species]; gUnknown_0203CCEC.images = images; if (flags2 == 0x01) { diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 8a16954a7c..ee54f0e4da 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -28,7 +28,7 @@ extern const u32 gBitTable[]; extern const struct SpriteTemplate gUnknown_08329D98[]; extern const struct SpriteTemplate gUnknown_08329DF8[]; extern const union AnimCmd* gUnknown_082FF70C[]; -extern const union AnimCmd* const * const gUnknown_08309AAC[]; +extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[]; extern const union AnimCmd* const * const gUnknown_08305D0C[]; extern const union AnimCmd* const * const gUnknown_0830536C[]; extern const u8 gText_BadEgg[]; @@ -165,9 +165,9 @@ void sub_806A068(u16 species, u8 bankIdentity) if (bankIdentity == 0 || bankIdentity == 2) gUnknown_0202499C.anims = gUnknown_082FF70C; else if (species > 500) - gUnknown_0202499C.anims = gUnknown_08309AAC[species - 500]; + gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500]; else - gUnknown_0202499C.anims = gUnknown_08309AAC[species]; + gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species]; } void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity) diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c new file mode 100644 index 0000000000..1c13448d49 --- /dev/null +++ b/src/reshow_battle_screen.c @@ -0,0 +1,365 @@ +#include "global.h" +#include "reshow_battle_screen.h" +#include "battle.h" +#include "palette.h" +#include "main.h" +#include "unknown_task.h" +#include "text.h" +#include "gpu_regs.h" +#include "bg.h" +#include "battle_controllers.h" +#include "link.h" +#include "sprite.h" +#include "species.h" +#include "battle_interface.h" + +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u8 gReservedSpritePaletteCount; +extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gNoOfAllBanks; +extern u32 gBattleTypeFlags; +extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT]; +extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; +extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; +extern struct SpriteTemplate gUnknown_0202499C; + +extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[]; + +extern void dp12_8087EA4(void); +extern void trs_config(void); +extern bool8 IsDoubleBattle(void); +extern u8 sub_80A614C(u8 bank); +extern u8 sub_80A6138(u8 bank); +extern u8 sub_80A82E4(u8 bank); +extern void sub_806A068(u16 species, u8 bankIdentity); +extern void sub_806A12C(u16 backPicId, u8 bankIdentity); +extern u8 sub_80A5C6C(u8 bank, u8 caseId); + +// this file's functions +static void CB2_ReshowBattleScreenAfterMenu(void); +static bool8 LoadBankSpriteGfx(u8 bank); +static void CreateBankSprite(u8 bank); +static void CreateHealthboxSprite(u8 bank); +static void sub_80A95F4(void); + +void nullsub_35(void) +{ + +} + +void ReshowBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + gBattleScripting.reshowMainState = 0; + gBattleScripting.reshowHelperState = 0; + SetMainCallback2(CB2_ReshowBattleScreenAfterMenu); +} + +static void CB2_ReshowBattleScreenAfterMenu(void) +{ + switch (gBattleScripting.reshowMainState) + { + case 0: + dp12_8087EA4(); + trs_config(); + SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); + SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + break; + case 1: + CpuFastFill(0, (void*)(VRAM), VRAM_SIZE); + break; + case 2: + LoadBattleTextboxAndBackground(); + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + break; + case 5: + sub_805E350(); + break; + case 6: + if (BattleLoadAllHealthBoxesGfx(gBattleScripting.reshowHelperState)) + { + gBattleScripting.reshowHelperState = 0; + } + else + { + gBattleScripting.reshowHelperState++; + gBattleScripting.reshowMainState--; + } + break; + case 7: + if (!LoadBankSpriteGfx(0)) + gBattleScripting.reshowMainState--; + break; + case 8: + if (!LoadBankSpriteGfx(1)) + gBattleScripting.reshowMainState--; + break; + case 9: + if (!LoadBankSpriteGfx(2)) + gBattleScripting.reshowMainState--; + break; + case 10: + if (!LoadBankSpriteGfx(3)) + gBattleScripting.reshowMainState--; + break; + case 11: + CreateBankSprite(0); + break; + case 12: + CreateBankSprite(1); + break; + case 13: + CreateBankSprite(2); + break; + case 14: + CreateBankSprite(3); + break; + case 15: + CreateHealthboxSprite(0); + break; + case 16: + CreateHealthboxSprite(1); + break; + case 17: + CreateHealthboxSprite(2); + break; + case 18: + CreateHealthboxSprite(3); + break; + case 19: + { + u8 opponentBank; + u16 species; + + LoadAndCreateEnemyShadowSprites(); + + opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + SetBankEnemyShadowSpriteCallback(opponentBank, species); + + if (IsDoubleBattle()) + { + opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + SetBankEnemyShadowSpriteCallback(opponentBank, species); + } + + ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0); + + if (gLinkVSyncDisabled != 0 && gReceivedRemoteLinkPlayers != 0) + { + sub_800E0E8(); + sub_800DFB4(0, 0); + } + } + break; + default: + SetVBlankCallback(VBlankCB_Battle); + sub_80A95F4(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(BattleMainCB2); + sub_805EF14(); + break; + } + + gBattleScripting.reshowMainState++; +} + +// todo: find a better place for the struct declaration +struct BGCntrlBitfield +{ + volatile u16 priority:2; + volatile u16 charBaseBlock:2; + volatile u16 field_0_2:4; + volatile u16 field_1_0:5; + volatile u16 areaOverflowMode:1; + volatile u16 screenSize:2; +}; + +static void sub_80A95F4(void) +{ + struct BGCntrlBitfield *regBgcnt1, *regBgcnt2; + + regBgcnt1 = (struct BGCntrlBitfield *)(®_BG1CNT); + regBgcnt1->charBaseBlock = 0; + + regBgcnt2 = (struct BGCntrlBitfield *)(®_BG2CNT); + regBgcnt2->charBaseBlock = 0; +} + +static bool8 LoadBankSpriteGfx(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + if (GetBankSide(bank) != SIDE_PLAYER) + { + if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute) + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSpriteGfx(bank, FALSE); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + LoadBackTrainerBankSpriteGfx(gSaveBlock2Ptr->playerGender, bank); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + LoadBackTrainerBankSpriteGfx(BACK_PIC_WALLY, bank); + else if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute) + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSpriteGfx(bank, FALSE); + + gBattleScripting.reshowHelperState = 0; + } + return TRUE; +} + +// todo: get rid of it once the struct is declared in a header +struct MonCoords +{ + // This would use a bitfield, but sub_8079F44 + // uses it as a u8 and casting won't match. + u8 coords; // u8 x:4, y:4; + u8 y_offset; +}; +extern const struct MonCoords gTrainerBackPicCoords[]; + +static void CreateBankSprite(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 posY; + + if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute) + posY = sub_80A614C(bank); + else + posY = sub_80A6138(bank); + + if (GetBankSide(bank) != SIDE_PLAYER) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + + sub_806A068(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank)); + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data0 = bank; + gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + + StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM) + gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM]; + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + { + sub_806A12C(gSaveBlock2Ptr->playerGender, GetBankIdentity(IDENTITY_PLAYER_MON1)); + gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80, + sub_80A82E4(0)); + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data0 = bank; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + { + sub_806A12C(BACK_PIC_WALLY, GetBankIdentity(0)); + gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50, + (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords) * 4 + 80, + sub_80A82E4(0)); + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data0 = bank; + } + else + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + + sub_806A068(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank)); + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data0 = bank; + gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + + StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM) + gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM]; + } + + gSprites[gBankSpriteIds[bank]].invisible = gBattleSpritesDataPtr->bankData[bank].invisible; + } +} + +static void CreateHealthboxSprite(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 healthboxSpriteId; + + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + healthboxSpriteId = CreateSafariPlayerHealthboxSprites(); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + return; + else + healthboxSpriteId = CreateBankHealthboxSprites(bank); + + gHealthBoxesIds[bank] = healthboxSpriteId; + SetBankHealthboxSpritePos(bank); + SetHealthboxSpriteVisible(healthboxSpriteId); + + if (GetBankSide(bank) != SIDE_PLAYER) + UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gEnemyParty[gBattlePartyID[bank]], HEALTHBOX_ALL); + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_SAFARI_ALL_TEXT); + else + UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_ALL); + + if (GetBankIdentity(bank) == IDENTITY_OPPONENT_MON2 || GetBankIdentity(bank) == IDENTITY_PLAYER_MON2) + nullsub_30(gHealthBoxesIds[bank], TRUE); + else + nullsub_30(gHealthBoxesIds[bank], FALSE); + + if (GetBankSide(bank) != SIDE_PLAYER) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + SetHealthboxSpriteInvisible(healthboxSpriteId); + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + SetHealthboxSpriteInvisible(healthboxSpriteId); + } + } +} From d361f7030abb3441bfe61e95c3803297454acbb8 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Mon, 9 Oct 2017 13:17:13 -0400 Subject: [PATCH 116/182] decompiled up to sub_81C20F0 --- asm/pokemon_summary_screen.s | 1518 ---------------------------------- src/pokemon_summary_screen.c | 1016 ++++++++++++++++++++++- 2 files changed, 976 insertions(+), 1558 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index b243ab3b26..e576297716 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,1524 +5,6 @@ .text - thumb_func_start sub_81C14BC -sub_81C14BC: @ 81C14BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - adds r7, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - lsls r0, r4, 1 - mov r10, r0 - adds r1, r2, 0 - adds r1, 0x84 - adds r0, r1, r0 - str r0, [sp, 0x8] - ldrh r0, [r0] - mov r3, sp - adds r3, 0x2 - str r3, [sp, 0x1C] - strh r0, [r3] - lsls r0, r6, 1 - mov r9, r0 - add r1, r9 - str r1, [sp, 0xC] - ldrh r1, [r1] - mov r0, sp - strh r1, [r0] - adds r1, r2, 0 - adds r1, 0x8C - adds r3, r1, r4 - str r3, [sp, 0x10] - ldrb r0, [r3] - mov r3, sp - adds r3, 0x5 - str r3, [sp, 0x24] - strb r0, [r3] - adds r1, r6 - str r1, [sp, 0x14] - ldrb r0, [r1] - mov r1, sp - adds r1, 0x4 - str r1, [sp, 0x20] - strb r0, [r1] - adds r2, 0xA4 - str r2, [sp, 0x18] - ldrb r0, [r2] - mov r5, sp - adds r5, 0x6 - strb r0, [r5] - ldr r1, =gUnknown_08329D22 - adds r0, r4, r1 - ldrb r0, [r0] - mov r8, r0 - ldrb r0, [r5] - adds r2, r0, 0 - mov r3, r8 - ands r2, r3 - mov r3, r10 - asrs r2, r3 - lsls r2, 24 - lsrs r2, 24 - adds r1, r6, r1 - ldrb r1, [r1] - mov r12, r1 - adds r1, r0, 0 - mov r3, r12 - ands r1, r3 - mov r3, r9 - asrs r1, r3 - lsls r1, 24 - lsrs r1, 24 - mov r3, r8 - bics r0, r3 - strb r0, [r5] - ldrb r0, [r5] - mov r3, r12 - bics r0, r3 - strb r0, [r5] - mov r0, r9 - lsls r2, r0 - mov r3, r10 - lsls r1, r3 - adds r2, r1 - ldrb r0, [r5] - orrs r0, r2 - strb r0, [r5] - adds r1, r4, 0 - adds r1, 0xD - adds r0, r7, 0 - mov r2, sp - bl SetMonData - adds r1, r6, 0 - adds r1, 0xD - adds r0, r7, 0 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r4, 0x11 - adds r0, r7, 0 - adds r1, r4, 0 - ldr r2, [sp, 0x20] - bl SetMonData - adds r6, 0x11 - adds r0, r7, 0 - adds r1, r6, 0 - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r7, 0 - movs r1, 0x15 - adds r2, r5, 0 - bl SetMonData - mov r0, sp - ldrh r0, [r0] - ldr r1, [sp, 0x8] - strh r0, [r1] - ldr r3, [sp, 0x1C] - ldrh r0, [r3] - ldr r1, [sp, 0xC] - strh r0, [r1] - ldr r3, [sp, 0x20] - ldrb r0, [r3] - ldr r1, [sp, 0x10] - strb r0, [r1] - ldr r3, [sp, 0x24] - ldrb r0, [r3] - ldr r1, [sp, 0x14] - strb r0, [r1] - ldrb r0, [r5] - ldr r3, [sp, 0x18] - strb r0, [r3] - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C14BC - - thumb_func_start sub_81C15EC -sub_81C15EC: @ 81C15EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - adds r7, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - lsls r0, r4, 1 - mov r10, r0 - adds r1, r2, 0 - adds r1, 0x84 - adds r0, r1, r0 - str r0, [sp, 0x8] - ldrh r0, [r0] - mov r3, sp - adds r3, 0x2 - str r3, [sp, 0x1C] - strh r0, [r3] - lsls r0, r6, 1 - mov r9, r0 - add r1, r9 - str r1, [sp, 0xC] - ldrh r1, [r1] - mov r0, sp - strh r1, [r0] - adds r1, r2, 0 - adds r1, 0x8C - adds r3, r1, r4 - str r3, [sp, 0x10] - ldrb r0, [r3] - mov r3, sp - adds r3, 0x5 - str r3, [sp, 0x24] - strb r0, [r3] - adds r1, r6 - str r1, [sp, 0x14] - ldrb r0, [r1] - mov r1, sp - adds r1, 0x4 - str r1, [sp, 0x20] - strb r0, [r1] - adds r2, 0xA4 - str r2, [sp, 0x18] - ldrb r0, [r2] - mov r5, sp - adds r5, 0x6 - strb r0, [r5] - ldr r1, =gUnknown_08329D22 - adds r0, r4, r1 - ldrb r0, [r0] - mov r8, r0 - ldrb r0, [r5] - adds r2, r0, 0 - mov r3, r8 - ands r2, r3 - mov r3, r10 - asrs r2, r3 - lsls r2, 24 - lsrs r2, 24 - adds r1, r6, r1 - ldrb r1, [r1] - mov r12, r1 - adds r1, r0, 0 - mov r3, r12 - ands r1, r3 - mov r3, r9 - asrs r1, r3 - lsls r1, 24 - lsrs r1, 24 - mov r3, r8 - bics r0, r3 - strb r0, [r5] - ldrb r0, [r5] - mov r3, r12 - bics r0, r3 - strb r0, [r5] - mov r0, r9 - lsls r2, r0 - mov r3, r10 - lsls r1, r3 - adds r2, r1 - ldrb r0, [r5] - orrs r0, r2 - strb r0, [r5] - adds r1, r4, 0 - adds r1, 0xD - adds r0, r7, 0 - mov r2, sp - bl SetBoxMonData - adds r1, r6, 0 - adds r1, 0xD - adds r0, r7, 0 - ldr r2, [sp, 0x1C] - bl SetBoxMonData - adds r4, 0x11 - adds r0, r7, 0 - adds r1, r4, 0 - ldr r2, [sp, 0x20] - bl SetBoxMonData - adds r6, 0x11 - adds r0, r7, 0 - adds r1, r6, 0 - ldr r2, [sp, 0x24] - bl SetBoxMonData - adds r0, r7, 0 - movs r1, 0x15 - adds r2, r5, 0 - bl SetBoxMonData - mov r0, sp - ldrh r0, [r0] - ldr r1, [sp, 0x8] - strh r0, [r1] - ldr r3, [sp, 0x1C] - ldrh r0, [r3] - ldr r1, [sp, 0xC] - strh r0, [r1] - ldr r3, [sp, 0x20] - ldrb r0, [r3] - ldr r1, [sp, 0x10] - strb r0, [r1] - ldr r3, [sp, 0x24] - ldrb r0, [r3] - ldr r1, [sp, 0x14] - strb r0, [r1] - ldrb r0, [r5] - ldr r3, [sp, 0x18] - strb r0, [r3] - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C15EC - - thumb_func_start sub_81C171C -sub_81C171C: @ 81C171C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_81C44F0 - movs r0, 0x8 - bl sub_81C4AF8 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81C174C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C171C - - thumb_func_start sub_81C174C -sub_81C174C: @ 81C174C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - bl sub_81221EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C176A - b _081C189A -_081C176A: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _081C177A - b _081C189A -_081C177A: - ldr r6, =gMain - ldrh r1, [r6, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081C17B4 - movs r0, 0x4 - strh r0, [r4] - movs r1, 0x1 - negs r1, r1 - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c6 - adds r2, r0 - adds r0, r4, 0 - bl sub_81C1070 - b _081C189A - .pool -_081C17B4: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _081C17DC - movs r0, 0x4 - strh r0, [r4] - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r1, =0x000040c6 - adds r2, r1 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C1070 - b _081C189A - .pool -_081C17DC: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _081C17F0 - bl GetLRKeysState - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C17FC -_081C17F0: - movs r1, 0x1 - negs r1, r1 - adds r0, r5, 0 - bl sub_81C0A8C - b _081C189A -_081C17FC: - ldrh r1, [r6, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _081C1812 - bl GetLRKeysState - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _081C181C -_081C1812: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_81C0A8C - b _081C189A -_081C181C: - ldrh r1, [r6, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081C1876 - bl sub_81C18A8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C1868 - bl sub_81C48F0 - movs r0, 0x5 - bl PlaySE - ldr r2, =gUnknown_0203CF21 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040c6 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r1, =gSpecialVar_0x8005 - ldrb r0, [r2] - strh r0, [r1] - adds r0, r5, 0 - bl sub_81C044C - b _081C189A - .pool -_081C1868: - movs r0, 0x20 - bl PlaySE - adds r0, r5, 0 - bl sub_81C18F4 - b _081C189A -_081C1876: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C189A - bl sub_81C48F0 - movs r0, 0x5 - bl PlaySE - ldr r1, =gUnknown_0203CF21 - movs r0, 0x4 - strb r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x4 - strh r0, [r1] - adds r0, r5, 0 - bl sub_81C044C -_081C189A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C174C - - thumb_func_start sub_81C18A8 -sub_81C18A8: @ 81C18A8 - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c6 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0x4 - beq _081C18DA - ldr r3, =0x000040c4 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _081C18DA - ldrb r1, [r1] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x84 - adds r0, r1 - ldrh r0, [r0] - bl sub_81B6D14 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C18EC -_081C18DA: - movs r0, 0x1 - b _081C18EE - .pool -_081C18EC: - movs r0, 0 -_081C18EE: - pop {r1} - bx r1 - thumb_func_end sub_81C18A8 - - thumb_func_start sub_81C18F4 -sub_81C18F4: @ 81C18F4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xE - bl ClearWindowTilemap - movs r0, 0xF - bl ClearWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0 - movs r1, 0x3 - bl sub_81C1DA4 - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - bl sub_81C1EFC - bl sub_81C4154 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81C1940 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C18F4 - - thumb_func_start sub_81C1940 -sub_81C1940: @ 81C1940 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - mov r8, r0 - ldr r0, =gTasks + 0x8 - mov r9, r0 - mov r4, r8 - add r4, r9 - ldr r0, =sub_81C1E20 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C196C - b _081C1B74 -_081C196C: - ldr r6, =gMain - ldrh r1, [r6, 0x2E] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _081C19B0 - movs r0, 0x1 - strh r0, [r4, 0x2] - movs r0, 0x4 - strh r0, [r4] - movs r1, 0x1 - negs r1, r1 - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r0, =0x000040c6 - adds r2, r0 - adds r0, r4, 0 - bl sub_81C1070 - movs r0, 0 - strh r0, [r4, 0x2] - b _081C1B6A - .pool -_081C19B0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081C19DC - movs r0, 0x1 - strh r0, [r4, 0x2] - movs r0, 0x4 - strh r0, [r4] - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r1, =0x000040c6 - adds r2, r1 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C1070 - strh r5, [r4, 0x2] - b _081C1B6A - .pool -_081C19DC: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _081C19F0 - bl GetLRKeysState - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C1A64 -_081C19F0: - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r2, =0x000040c0 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x2 - bne _081C1A00 - b _081C1B74 -_081C1A00: - movs r0, 0x13 - bl ClearWindowTilemap - ldr r2, =gSprites - ldr r0, [r4] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C1A28 - movs r0, 0xD - bl ClearWindowTilemap -_081C1A28: - ldr r1, [r4] - ldr r2, =0x000040c6 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r5, [r1] - mov r0, r9 - subs r0, 0x8 - add r0, r8 - ldr r1, =sub_81C174C - str r1, [r0] - movs r1, 0x1 - negs r1, r1 - adds r0, r7, 0 - b _081C1ACE - .pool -_081C1A64: - ldrh r1, [r6, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _081C1A7A - bl GetLRKeysState - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _081C1B04 -_081C1A7A: - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _081C1B74 - movs r0, 0x13 - bl ClearWindowTilemap - ldr r2, =gSprites - ldr r0, [r4] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C1AB0 - movs r0, 0xD - bl ClearWindowTilemap -_081C1AB0: - ldr r1, [r4] - ldr r2, =0x000040c6 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r5, [r1] - mov r0, r9 - subs r0, 0x8 - add r0, r8 - ldr r1, =sub_81C174C - str r1, [r0] - adds r0, r7, 0 - movs r1, 0x1 -_081C1ACE: - bl sub_81C0A8C - movs r4, 0x2 - negs r4, r4 - movs r0, 0x9 - adds r1, r4, 0 - bl sub_81C1DA4 - movs r0, 0x9 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_81C1EFC - b _081C1B74 - .pool -_081C1B04: - ldrh r1, [r6, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _081C1B74 - movs r0, 0x13 - bl ClearWindowTilemap - ldr r2, =gSprites - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C1B38 - movs r0, 0xD - bl ClearWindowTilemap -_081C1B38: - ldr r1, [r4] - ldr r2, =0x000040c6 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r5, [r1] - adds r0, r5, 0 - bl sub_81C3E9C - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r4, 0x3 - negs r4, r4 - movs r0, 0x9 - adds r1, r4, 0 - bl sub_81C1DA4 - movs r0, 0x9 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_81C1EFC -_081C1B6A: - mov r0, r9 - subs r0, 0x8 - add r0, r8 - ldr r1, =sub_81C174C - str r1, [r0] -_081C1B74: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C1940 - - thumb_func_start sub_81C1B94 -sub_81C1B94: @ 81C1B94 - ldr r0, =gUnknown_0203CF21 - ldrb r0, [r0] - bx lr - .pool - thumb_func_end sub_81C1B94 - - thumb_func_start sub_81C1BA0 -sub_81C1BA0: @ 81C1BA0 - push {r4-r7,lr} - sub sp, 0xC - movs r0, 0x20 - bl Alloc - adds r4, r0, 0 - movs r5, 0 -_081C1BAE: - lsls r0, r5, 25 - lsrs r1, r0, 24 - adds r6, r1, 0 - ldr r0, =gUnknown_0203CF1C - ldr r3, [r0] - ldr r2, =0x000040c1 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r5, r0 - bcs _081C1BD8 - lsls r0, r1, 1 - adds r0, r4 - movs r1, 0x40 - strh r1, [r0] - strh r1, [r0, 0x2] - movs r1, 0x50 - b _081C1BEE - .pool -_081C1BD8: - ldr r7, =0x000040c2 - adds r0, r3, r7 - ldrb r2, [r0] - cmp r5, r2 - bls _081C1BF8 - lsls r0, r1, 1 - adds r0, r4 - movs r1, 0x4A - strh r1, [r0] - strh r1, [r0, 0x2] - movs r1, 0x5A -_081C1BEE: - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - b _081C1C78 - .pool -_081C1BF8: - ldr r7, =0x000040c0 - adds r0, r3, r7 - ldrb r0, [r0] - cmp r5, r0 - bcs _081C1C1C - lsls r1, 1 - adds r1, r4 - movs r0, 0x46 - strh r0, [r1] - movs r0, 0x47 - strh r0, [r1, 0x2] - movs r0, 0x56 - strh r0, [r1, 0x10] - movs r0, 0x57 - b _081C1C76 - .pool -_081C1C1C: - cmp r5, r0 - bne _081C1C4C - cmp r5, r2 - beq _081C1C38 - lsls r1, 1 - adds r1, r4 - movs r0, 0x41 - strh r0, [r1] - movs r0, 0x42 - strh r0, [r1, 0x2] - movs r0, 0x51 - strh r0, [r1, 0x10] - movs r0, 0x52 - b _081C1C76 -_081C1C38: - lsls r1, 1 - adds r1, r4 - movs r0, 0x4B - strh r0, [r1] - movs r0, 0x4C - strh r0, [r1, 0x2] - movs r0, 0x5B - strh r0, [r1, 0x10] - movs r0, 0x5C - b _081C1C76 -_081C1C4C: - cmp r5, r2 - beq _081C1C64 - lsls r1, 1 - adds r1, r4 - movs r0, 0x43 - strh r0, [r1] - movs r0, 0x44 - strh r0, [r1, 0x2] - movs r0, 0x53 - strh r0, [r1, 0x10] - movs r0, 0x54 - b _081C1C76 -_081C1C64: - lsls r1, r6, 1 - adds r1, r4 - movs r0, 0x48 - strh r0, [r1] - movs r0, 0x49 - strh r0, [r1, 0x2] - movs r0, 0x58 - strh r0, [r1, 0x10] - movs r0, 0x59 -_081C1C76: - strh r0, [r1, 0x12] -_081C1C78: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _081C1BAE - movs r0, 0x8 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x10 - str r0, [sp, 0x8] - movs r0, 0x3 - adds r1, r4, 0 - movs r2, 0xB - movs r3, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0x3 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r4, 0 - bl Free - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81C1BA0 - - thumb_func_start sub_81C1CB0 -sub_81C1CB0: @ 81C1CB0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - mov r8, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r5, r3, 24 - ldrb r1, [r4, 0x6] - ldrb r0, [r4, 0x7] - lsls r0, 1 - muls r0, r1 - bl Alloc - adds r7, r0, 0 - mov r1, sp - ldrh r0, [r4, 0x4] - strh r0, [r1] - ldrb r1, [r4, 0x7] - ldrb r0, [r4, 0x6] - adds r2, r1, 0 - muls r2, r0 - movs r0, 0x80 - lsls r0, 17 - orrs r2, r0 - mov r0, sp - adds r1, r7, 0 - bl CpuSet - ldrb r0, [r4, 0x6] - cmp r0, r6 - beq _081C1D60 - cmp r5, 0 - bne _081C1D30 - movs r5, 0 - ldrb r0, [r4, 0x7] - cmp r5, r0 - bcs _081C1D60 -_081C1D00: - ldrb r2, [r4, 0x6] - adds r1, r2, 0 - muls r1, r5 - adds r3, r6, r1 - lsls r3, 1 - ldr r0, [r4] - adds r0, r3 - lsls r1, 1 - adds r1, r7, r1 - subs r2, r6 - ldr r3, =0x001fffff - ands r2, r3 - bl CpuSet - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r3, [r4, 0x7] - cmp r5, r3 - bcc _081C1D00 - b _081C1D60 - .pool -_081C1D30: - movs r5, 0 - ldrb r0, [r4, 0x7] - cmp r5, r0 - bcs _081C1D60 -_081C1D38: - ldrb r2, [r4, 0x6] - adds r1, r2, 0 - muls r1, r5 - lsls r3, r1, 1 - ldr r0, [r4] - adds r0, r3 - adds r1, r6, r1 - lsls r1, 1 - adds r1, r7, r1 - subs r2, r6 - ldr r3, =0x001fffff - ands r2, r3 - bl CpuSet - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r3, [r4, 0x7] - cmp r5, r3 - bcc _081C1D38 -_081C1D60: - movs r5, 0 - b _081C1D8A - .pool -_081C1D68: - ldrb r2, [r4, 0x6] - adds r0, r2, 0 - muls r0, r5 - lsls r0, 1 - adds r0, r7, r0 - ldrb r1, [r4, 0x9] - adds r1, r5 - lsls r1, 5 - ldrb r3, [r4, 0x8] - adds r1, r3 - lsls r1, 1 - add r1, r8 - bl CpuSet - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_081C1D8A: - ldrb r0, [r4, 0x7] - cmp r5, r0 - bcc _081C1D68 - adds r0, r7, 0 - bl Free - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81C1CB0 - - thumb_func_start sub_81C1DA4 -sub_81C1DA4: @ 81C1DA4 - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - asrs r1, 16 - ldr r3, =gUnknown_0861CC04 - ldrb r2, [r3, 0x6] - cmp r1, r2 - ble _081C1DBA - adds r4, r2, 0 -_081C1DBA: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0 - beq _081C1DC6 - cmp r0, r2 - bne _081C1DE8 -_081C1DC6: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r0, =0x000020bc - adds r1, r0 - lsls r2, r4, 24 - lsrs r2, 24 - adds r0, r3, 0 - movs r3, 0x1 - bl sub_81C1CB0 - b _081C1E12 - .pool -_081C1DE8: - ldr r5, =sub_81C1E20 - adds r0, r5, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _081C1E04 - adds r0, r5, 0 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 -_081C1E04: - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - strh r6, [r0, 0xA] -_081C1E12: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C1DA4 - - thumb_func_start sub_81C1E20 -sub_81C1E20: @ 81C1E20 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldrh r0, [r4] - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r4, 0x2] - lsls r0, 16 - cmp r0, 0 - bge _081C1E50 - movs r0, 0 - strh r0, [r4, 0x2] - ldr r7, =gUnknown_0861CC04 - b _081C1E60 - .pool -_081C1E50: - movs r0, 0x2 - ldrsh r1, [r4, r0] - ldr r0, =gUnknown_0861CC04 - ldrb r2, [r0, 0x6] - adds r7, r0, 0 - cmp r1, r2 - ble _081C1E60 - strh r2, [r4, 0x2] -_081C1E60: - ldr r5, =gUnknown_0203CF1C - ldr r1, [r5] - ldr r0, =0x000020bc - adds r1, r0 - ldrb r2, [r4, 0x2] - adds r0, r7, 0 - movs r3, 0x1 - bl sub_81C1CB0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _081C1E80 - ldrb r7, [r7, 0x6] - cmp r0, r7 - blt _081C1EE0 -_081C1E80: - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _081C1EAC - ldr r0, [r5] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x2 - bne _081C1ED4 - movs r0, 0xE - bl PutWindowTilemap - b _081C1ED4 - .pool -_081C1EAC: - ldr r2, =gSprites - ldr r0, [r5] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C1ECE - movs r0, 0xD - bl PutWindowTilemap -_081C1ECE: - movs r0, 0x13 - bl PutWindowTilemap -_081C1ED4: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r6, 0 - bl DestroyTask -_081C1EE0: - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C1E20 - - thumb_func_start sub_81C1EFC -sub_81C1EFC: @ 81C1EFC - push {r4-r7,lr} - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsls r2, 16 - lsrs r6, r2, 16 - lsrs r4, r1, 16 - asrs r1, 16 - ldr r3, =gUnknown_0861CC10 - ldrb r2, [r3, 0x6] - cmp r1, r2 - ble _081C1F16 - adds r4, r2, 0 -_081C1F16: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0 - beq _081C1F22 - cmp r0, r2 - bne _081C1F44 -_081C1F22: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r0, =0x000030bc - adds r1, r0 - lsls r2, r4, 24 - lsrs r2, 24 - adds r0, r3, 0 - movs r3, 0x1 - bl sub_81C1CB0 - b _081C1F70 - .pool -_081C1F44: - ldr r5, =sub_81C1F80 - adds r0, r5, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _081C1F60 - adds r0, r5, 0 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 -_081C1F60: - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - strh r7, [r0, 0xA] - strh r6, [r0, 0xC] -_081C1F70: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C1EFC - - thumb_func_start sub_81C1F80 -sub_81C1F80: @ 81C1F80 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldrh r0, [r4] - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r4, 0x2] - lsls r0, 16 - cmp r0, 0 - bge _081C1FB0 - movs r0, 0 - strh r0, [r4, 0x2] - ldr r7, =gUnknown_0861CC10 - b _081C1FC0 - .pool -_081C1FB0: - movs r0, 0x2 - ldrsh r1, [r4, r0] - ldr r0, =gUnknown_0861CC10 - ldrb r2, [r0, 0x6] - adds r7, r0, 0 - cmp r1, r2 - ble _081C1FC0 - strh r2, [r4, 0x2] -_081C1FC0: - ldr r5, =gUnknown_0203CF1C - ldr r1, [r5] - ldr r0, =0x000030bc - adds r1, r0 - ldrb r2, [r4, 0x2] - adds r0, r7, 0 - movs r3, 0x1 - bl sub_81C1CB0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _081C1FE0 - ldrb r7, [r7, 0x6] - cmp r0, r7 - blt _081C2058 -_081C1FE0: - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _081C2024 - ldr r0, [r5] - ldr r1, =0x000040c0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C2006 - ldr r0, =sub_81C0B8C - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _081C2006 - movs r0, 0xF - bl PutWindowTilemap -_081C2006: - ldrh r0, [r4, 0x4] - bl sub_81C240C - b _081C204C - .pool -_081C2024: - ldr r2, =gSprites - ldr r0, [r5] - ldr r1, =0x000040d5 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _081C2046 - movs r0, 0xD - bl PutWindowTilemap -_081C2046: - movs r0, 0x13 - bl PutWindowTilemap -_081C204C: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r6, 0 - bl DestroyTask -_081C2058: - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C1F80 - - thumb_func_start sub_81C2074 -sub_81C2074: @ 81C2074 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - asrs r1, 16 - ldr r3, =gUnknown_0861CBEC - ldrb r2, [r3, 0x6] - cmp r1, r2 - ble _081C208A - adds r4, r2, 0 -_081C208A: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0 - beq _081C2096 - cmp r0, r2 - bne _081C20C8 -_081C2096: - ldr r5, =gUnknown_0203CF1C - ldr r1, [r5] - adds r1, 0xBC - lsls r4, 24 - lsrs r4, 24 - adds r0, r3, 0 - adds r2, r4, 0 - movs r3, 0 - bl sub_81C1CB0 - ldr r0, =gUnknown_0861CBF8 - ldr r1, [r5] - adds r1, 0xBC - adds r2, r4, 0 - movs r3, 0 - bl sub_81C1CB0 - b _081C20E2 - .pool -_081C20C8: - ldr r0, =sub_81C20F0 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r5, [r1, 0xA] -_081C20E2: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2074 - - thumb_func_start sub_81C20F0 -sub_81C20F0: @ 81C20F0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r5, r0, r1 - ldrh r0, [r5] - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r5, 0x2] - lsls r0, 16 - cmp r0, 0 - bge _081C2120 - movs r0, 0 - strh r0, [r5, 0x2] - ldr r7, =gUnknown_0861CBEC - b _081C2130 - .pool -_081C2120: - movs r0, 0x2 - ldrsh r1, [r5, r0] - ldr r0, =gUnknown_0861CBEC - ldrb r2, [r0, 0x6] - adds r7, r0, 0 - cmp r1, r2 - ble _081C2130 - strh r2, [r5, 0x2] -_081C2130: - ldr r4, =gUnknown_0203CF1C - ldr r1, [r4] - adds r1, 0xBC - ldrb r2, [r5, 0x2] - adds r0, r7, 0 - movs r3, 0 - bl sub_81C1CB0 - ldr r0, =gUnknown_0861CBF8 - ldr r1, [r4] - adds r1, 0xBC - ldrb r2, [r5, 0x2] - movs r3, 0 - bl sub_81C1CB0 - movs r0, 0x3 - bl schedule_bg_copy_tilemap_to_vram - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - ble _081C2162 - ldrb r7, [r7, 0x6] - cmp r0, r7 - blt _081C2180 -_081C2162: - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _081C217A - bl sub_81C4A88 - movs r0, 0xD - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram -_081C217A: - adds r0, r6, 0 - bl DestroyTask -_081C2180: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C20F0 - thumb_func_start sub_81C2194 sub_81C2194: @ 81C2194 push {r4-r7,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 9a478dabba..2c7c5e11c6 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1,4 +1,5 @@ #include "battle.h" +#include "bg.h" #include "decompress.h" #include "global.h" #include "m4a.h" @@ -19,6 +20,13 @@ extern u8 gUnknown_0203CF20; extern struct MusicPlayerInfo gMPlay_BGM; extern s8 gUnknown_0861CC1C[]; extern u8 gUnknown_08329D22[]; +extern u8 gUnknown_0203CF21; +extern u16 gSpecialVar_0x8005; +extern struct unkStruct_61CC04 gUnknown_0861CC04; +extern struct unkStruct_61CC04 gUnknown_0861CC10; +extern struct unkStruct_61CC04 gUnknown_0861CBEC; +extern struct unkStruct_61CC04 gUnknown_0861CBF8; +extern u16 gUnknown_08DC3CD4[]; extern void sub_806F2AC(u8 a, u8 b); void sub_81C488C(u8 a); @@ -33,7 +41,6 @@ extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable); extern void ShowBg(u8 a); extern void SetGpuReg(u8 regOffset, u16 value); extern void schedule_bg_copy_tilemap_to_vram(u8 a); -extern void InitBgsFromTemplates(u8 bgMode, struct BgTemplate *templates, u8 numTemplates); extern void SetBgTilemapBuffer(u8 bg, void *tilemap); extern u8 gUnknown_08D9862C; extern u8 gUnknown_08D98CC8; @@ -53,6 +60,7 @@ extern void reset_temp_tile_data_buffers(); extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d); extern u8 free_temp_tile_data_buffers_if_possible(); extern void sub_8069004(struct BoxPokemon* a, void* b); +extern void sub_81C1E20(u8 taskId); extern u32 ChangeBgX(u8 bg, u32 value, u8 op); @@ -79,10 +87,10 @@ void sub_81C0510(u8 taskId); void sub_81C171C(u8 taskId); void sub_8121E10(); u8 sub_81B205C(struct Pokemon* a); -void sub_81C1DA4(u8 a, s16 b); -void sub_81C1EFC(u8 a, s16 b, u16 c); +void sub_81C1DA4(u16 a, s16 b); +void sub_81C1EFC(u16 a, s16 b, u16 c); void sub_81C240C(u16 a); -void sub_81C2194(void* a, u8 b, u8 c); +void sub_81C2194(u16 *a, u16 b, u8 c); void sub_81C2074(u16 a, s16 b); void sub_81C2524(); void sub_81C2228(struct Pokemon* poke); @@ -128,6 +136,13 @@ void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b); void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); void sub_81C40A0(u8 a, u8 b); void sub_81C4568(u8 a, u8 b); +void sub_81C174C(u8 taskId); +u8 sub_81C18A8(); +void sub_81C18F4(u8 a); +u8 sub_81B6D14(u16 a); +void sub_81C1940(u8 taskId); +void sub_81C4154(); +void sub_81C1F80(u8 taskId); void SetBgAttribute(u8 bg, u8 attributeId, u8 value); @@ -184,14 +199,14 @@ struct unkSummaryStruct /*0x08*/ void *unk8; /*0x0C*/ struct Pokemon currentPoke; /*0x70*/ struct pokeSummary summary; - u8 unkTilemap0[0x800]; - u8 unkTilemap0_1[0x800]; - u8 unkTilemap1[0x800]; - u8 unkTilemap1_1[0x800]; - u8 unkTilemap2[0x800]; - u8 unkTilemap2_1[0x800]; - u8 unkTilemap3[0x800]; - u8 unkTilemap3_1[0x800]; + u16 unkTilemap0[0x400]; + u16 unkTilemap0_1[0x400]; + u16 unkTilemap1[0x400]; + u16 unkTilemap1_1[0x400]; + u16 unkTilemap2[0x400]; + u16 unkTilemap2_1[0x400]; + u16 unkTilemap3[0x400]; + u16 unkTilemap3_1[0x400]; u8 unk40BC; u8 unk40BD; u8 unk40BE; @@ -597,8 +612,8 @@ void sub_81C0348(void) else { sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0); SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3); SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap2); ChangeBgX(2, 0x10000, 1); @@ -1013,8 +1028,8 @@ void sub_81C0E48(u8 taskId) ClearWindowTilemap(5); PutWindowTilemap(6); } - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0); sub_81C3E9C(move); sub_81C3F44(); sub_81C44F0(); @@ -1139,8 +1154,8 @@ void sub_81C11F4(u8 taskId) ClearWindowTilemap(6); PutWindowTilemap(5); sub_81C3E9C(0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 1); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 1); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 1); + sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 1); sub_81C4064(); if (gUnknown_0203CF1C->unk40C6 != 4) { @@ -1225,24 +1240,20 @@ void sub_81C13B0(u8 taskId, u8 b) } -/* void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) +#ifdef NONMATCHING +void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) { - u16* moveToPtr; - u8 r8; - u8 r2; - u8 r12; - u8 r1; u16 localMoveTo; u16 localMoveFrom; u8 localPpTo; u8 localPpFrom; u8 localPpBonuses; - u16* moveFromPtr; + u16* moveToPtr; u8* ppFromPtr; u8* ppToPtr; u8* ppBonusesPtr; - + moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; localMoveFrom = *moveFromPtr; @@ -1251,28 +1262,31 @@ void sub_81C13B0(u8 taskId, u8 b) ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; localPpFrom = *ppFromPtr; + ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; localPpTo = *ppToPtr; ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; localPpBonuses = *ppBonusesPtr; - r8 = gUnknown_08329D22[swappingFromId]; - r2 = (int)(localPpBonuses & r8) >> (swappingFromId << 1); - r12 = gUnknown_08329D22[swappingToId]; - r1 = (int)(localPpBonuses & r12) >> (swappingToId << 1); - localPpBonuses &= ~r8; - localPpBonuses &= ~r12; - r2 = r2 << (swappingToId << 1); - r1 = r1 << (swappingFromId << 1); - r2 += r1; - localPpBonuses |= r2; +{ + u8 bitsFrom, bitsTo; - SetMonData(mon, swappingFromId + MON_DATA_MOVE1, moveToPtr); - SetMonData(mon, swappingToId + MON_DATA_MOVE1, moveFromPtr); + bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1); + bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1); - SetMonData(mon, swappingFromId + MON_DATA_PP1, ppToPtr); - SetMonData(mon, swappingToId + MON_DATA_PP1, ppFromPtr); + + localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]); + localPpBonuses &= ~(gUnknown_08329D22[swappingToId]); + + localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1))); +} + + SetMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo); + SetMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom); + + SetMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo); + SetMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom); SetMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); @@ -1283,4 +1297,926 @@ void sub_81C13B0(u8 taskId, u8 b) *ppToPtr = localPpFrom; *ppBonusesPtr = localPpBonuses; +} +#else +__attribute__((naked)) +void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x28\n\ + adds r7, r0, 0\n\ + adds r4, r1, 0\n\ + adds r6, r2, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + lsls r6, 24\n\ + lsrs r6, 24\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r2, [r0]\n\ + lsls r0, r4, 1\n\ + mov r10, r0\n\ + adds r1, r2, 0\n\ + adds r1, 0x84\n\ + adds r0, r1, r0\n\ + str r0, [sp, 0x8]\n\ + ldrh r0, [r0]\n\ + mov r3, sp\n\ + adds r3, 0x2\n\ + str r3, [sp, 0x1C]\n\ + strh r0, [r3]\n\ + lsls r0, r6, 1\n\ + mov r9, r0\n\ + add r1, r9\n\ + str r1, [sp, 0xC]\n\ + ldrh r1, [r1]\n\ + mov r0, sp\n\ + strh r1, [r0]\n\ + adds r1, r2, 0\n\ + adds r1, 0x8C\n\ + adds r3, r1, r4\n\ + str r3, [sp, 0x10]\n\ + ldrb r0, [r3]\n\ + mov r3, sp\n\ + adds r3, 0x5\n\ + str r3, [sp, 0x24]\n\ + strb r0, [r3]\n\ + adds r1, r6\n\ + str r1, [sp, 0x14]\n\ + ldrb r0, [r1]\n\ + mov r1, sp\n\ + adds r1, 0x4\n\ + str r1, [sp, 0x20]\n\ + strb r0, [r1]\n\ + adds r2, 0xA4\n\ + str r2, [sp, 0x18]\n\ + ldrb r0, [r2]\n\ + mov r5, sp\n\ + adds r5, 0x6\n\ + strb r0, [r5]\n\ + ldr r1, =gUnknown_08329D22\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + mov r8, r0\n\ + ldrb r0, [r5]\n\ + adds r2, r0, 0\n\ + mov r3, r8\n\ + ands r2, r3\n\ + mov r3, r10\n\ + asrs r2, r3\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + adds r1, r6, r1\n\ + ldrb r1, [r1]\n\ + mov r12, r1\n\ + adds r1, r0, 0\n\ + mov r3, r12\n\ + ands r1, r3\n\ + mov r3, r9\n\ + asrs r1, r3\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r3, r8\n\ + bics r0, r3\n\ + strb r0, [r5]\n\ + ldrb r0, [r5]\n\ + mov r3, r12\n\ + bics r0, r3\n\ + strb r0, [r5]\n\ + mov r0, r9\n\ + lsls r2, r0\n\ + mov r3, r10\n\ + lsls r1, r3\n\ + adds r2, r1\n\ + ldrb r0, [r5]\n\ + orrs r0, r2\n\ + strb r0, [r5]\n\ + adds r1, r4, 0\n\ + adds r1, 0xD\n\ + adds r0, r7, 0\n\ + mov r2, sp\n\ + bl SetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xD\n\ + adds r0, r7, 0\n\ + ldr r2, [sp, 0x1C]\n\ + bl SetMonData\n\ + adds r4, 0x11\n\ + adds r0, r7, 0\n\ + adds r1, r4, 0\n\ + ldr r2, [sp, 0x20]\n\ + bl SetMonData\n\ + adds r6, 0x11\n\ + adds r0, r7, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x24]\n\ + bl SetMonData\n\ + adds r0, r7, 0\n\ + movs r1, 0x15\n\ + adds r2, r5, 0\n\ + bl SetMonData\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + ldr r1, [sp, 0x8]\n\ + strh r0, [r1]\n\ + ldr r3, [sp, 0x1C]\n\ + ldrh r0, [r3]\n\ + ldr r1, [sp, 0xC]\n\ + strh r0, [r1]\n\ + ldr r3, [sp, 0x20]\n\ + ldrb r0, [r3]\n\ + ldr r1, [sp, 0x10]\n\ + strb r0, [r1]\n\ + ldr r3, [sp, 0x24]\n\ + ldrb r0, [r3]\n\ + ldr r1, [sp, 0x14]\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + ldr r3, [sp, 0x18]\n\ + strb r0, [r3]\n\ + add sp, 0x28\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\ + .pool\n\ + .syntax divided\n"); +} +#endif + +#ifdef NONMATCHING +void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId) +{ + u16 localMoveTo; + u16 localMoveFrom; + u8 localPpTo; + u8 localPpFrom; + u8 localPpBonuses; + u16* moveFromPtr; + u16* moveToPtr; + u8* ppFromPtr; + u8* ppToPtr; + u8* ppBonusesPtr; + + moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; + localMoveFrom = *moveFromPtr; + + moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId]; + localMoveTo = *moveToPtr; + + ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; + localPpFrom = *ppFromPtr; + + ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; + localPpTo = *ppToPtr; + + ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; + localPpBonuses = *ppBonusesPtr; + +{ + u8 bitsFrom, bitsTo; + + bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1); + bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1); + + + localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]); + localPpBonuses &= ~(gUnknown_08329D22[swappingToId]); + + localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1))); +} + + SetBoxMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo); + SetBoxMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom); + + SetBoxMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo); + SetBoxMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom); + + SetBoxMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); + + *moveFromPtr = localMoveTo; + *moveToPtr = localMoveFrom; + + *ppFromPtr = localPpTo; + *ppToPtr = localPpFrom; + + *ppBonusesPtr = localPpBonuses; +} +#else +__attribute__((naked)) +void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x28\n\ + adds r7, r0, 0\n\ + adds r4, r1, 0\n\ + adds r6, r2, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + lsls r6, 24\n\ + lsrs r6, 24\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r2, [r0]\n\ + lsls r0, r4, 1\n\ + mov r10, r0\n\ + adds r1, r2, 0\n\ + adds r1, 0x84\n\ + adds r0, r1, r0\n\ + str r0, [sp, 0x8]\n\ + ldrh r0, [r0]\n\ + mov r3, sp\n\ + adds r3, 0x2\n\ + str r3, [sp, 0x1C]\n\ + strh r0, [r3]\n\ + lsls r0, r6, 1\n\ + mov r9, r0\n\ + add r1, r9\n\ + str r1, [sp, 0xC]\n\ + ldrh r1, [r1]\n\ + mov r0, sp\n\ + strh r1, [r0]\n\ + adds r1, r2, 0\n\ + adds r1, 0x8C\n\ + adds r3, r1, r4\n\ + str r3, [sp, 0x10]\n\ + ldrb r0, [r3]\n\ + mov r3, sp\n\ + adds r3, 0x5\n\ + str r3, [sp, 0x24]\n\ + strb r0, [r3]\n\ + adds r1, r6\n\ + str r1, [sp, 0x14]\n\ + ldrb r0, [r1]\n\ + mov r1, sp\n\ + adds r1, 0x4\n\ + str r1, [sp, 0x20]\n\ + strb r0, [r1]\n\ + adds r2, 0xA4\n\ + str r2, [sp, 0x18]\n\ + ldrb r0, [r2]\n\ + mov r5, sp\n\ + adds r5, 0x6\n\ + strb r0, [r5]\n\ + ldr r1, =gUnknown_08329D22\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + mov r8, r0\n\ + ldrb r0, [r5]\n\ + adds r2, r0, 0\n\ + mov r3, r8\n\ + ands r2, r3\n\ + mov r3, r10\n\ + asrs r2, r3\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + adds r1, r6, r1\n\ + ldrb r1, [r1]\n\ + mov r12, r1\n\ + adds r1, r0, 0\n\ + mov r3, r12\n\ + ands r1, r3\n\ + mov r3, r9\n\ + asrs r1, r3\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r3, r8\n\ + bics r0, r3\n\ + strb r0, [r5]\n\ + ldrb r0, [r5]\n\ + mov r3, r12\n\ + bics r0, r3\n\ + strb r0, [r5]\n\ + mov r0, r9\n\ + lsls r2, r0\n\ + mov r3, r10\n\ + lsls r1, r3\n\ + adds r2, r1\n\ + ldrb r0, [r5]\n\ + orrs r0, r2\n\ + strb r0, [r5]\n\ + adds r1, r4, 0\n\ + adds r1, 0xD\n\ + adds r0, r7, 0\n\ + mov r2, sp\n\ + bl SetBoxMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xD\n\ + adds r0, r7, 0\n\ + ldr r2, [sp, 0x1C]\n\ + bl SetBoxMonData\n\ + adds r4, 0x11\n\ + adds r0, r7, 0\n\ + adds r1, r4, 0\n\ + ldr r2, [sp, 0x20]\n\ + bl SetBoxMonData\n\ + adds r6, 0x11\n\ + adds r0, r7, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x24]\n\ + bl SetBoxMonData\n\ + adds r0, r7, 0\n\ + movs r1, 0x15\n\ + adds r2, r5, 0\n\ + bl SetBoxMonData\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + ldr r1, [sp, 0x8]\n\ + strh r0, [r1]\n\ + ldr r3, [sp, 0x1C]\n\ + ldrh r0, [r3]\n\ + ldr r1, [sp, 0xC]\n\ + strh r0, [r1]\n\ + ldr r3, [sp, 0x20]\n\ + ldrb r0, [r3]\n\ + ldr r1, [sp, 0x10]\n\ + strb r0, [r1]\n\ + ldr r3, [sp, 0x24]\n\ + ldrb r0, [r3]\n\ + ldr r1, [sp, 0x14]\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + ldr r3, [sp, 0x18]\n\ + strb r0, [r3]\n\ + add sp, 0x28\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\ + .pool\n\ + .syntax divided\n"); +} +#endif + +void sub_81C171C(u8 taskId) +{ + sub_81C44F0(); + sub_81C4AF8(8); + gTasks[taskId].func = sub_81C174C; +} + +void sub_81C174C(u8 taskId) +{ + s16* data = gTasks[taskId].data; + + if (sub_81221EC() != 1) + { + if (gPaletteFade.active != 1) + { + if (gMain.newKeys & DPAD_UP) + { + data[0] = 4; + sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6); + } + else if (gMain.newKeys & DPAD_DOWN) + { + data[0] = 4; + sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6); + } + else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) + { + sub_81C0A8C(taskId, -1); + } + else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) + { + sub_81C0A8C(taskId, 1); + } + else if (gMain.newKeys & A_BUTTON) + { + if (sub_81C18A8() == 1) + { + sub_81C48F0(); + PlaySE(SE_SELECT); + gUnknown_0203CF21 = gUnknown_0203CF1C->unk40C6; + gSpecialVar_0x8005 = gUnknown_0203CF21; + sub_81C044C(taskId); + } + else + { + PlaySE(0x20); + sub_81C18F4(taskId); + } + } + else if (gMain.newKeys & B_BUTTON) + { + u32 var1; + sub_81C48F0(); + PlaySE(SE_SELECT); + gUnknown_0203CF21 = 4; + gSpecialVar_0x8005 = 4; + sub_81C044C(taskId); + } + } + } +} + +u8 sub_81C18A8() +{ + if (gUnknown_0203CF1C->unk40C6 == 4 || gUnknown_0203CF1C->unk40C4 == 0 || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]) != 1) + return 1; + else + return 0; +} + +void sub_81C18F4(u8 taskId) +{ + ClearWindowTilemap(14); + ClearWindowTilemap(15); + schedule_bg_copy_tilemap_to_vram(0); + sub_81C1DA4(0, 3); + sub_81C1EFC(0, 3, 0); + sub_81C4154(); + gTasks[taskId].func = sub_81C1940; +} + +void sub_81C1940(u8 taskId) +{ + s16* data = gTasks[taskId].data; + u16 move; + if (FuncIsActiveTask(sub_81C1E20) != 1) + { + if (gMain.newKeys & DPAD_UP) + { + data[1] = 1; + data[0] = 4; + sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C6); + data[1] = 0; + gTasks[taskId].func = sub_81C174C; + } + else if (gMain.newKeys & DPAD_DOWN) + { + data[1] = 1; + data[0] = 4; + sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C6); + data[1] = 0; + gTasks[taskId].func = sub_81C174C; + } + else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) + { + if (gUnknown_0203CF1C->unk40C0 != 2) + { + + ClearWindowTilemap(19); + if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible) + ClearWindowTilemap(13); + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + gTasks[taskId].func = sub_81C174C; + sub_81C0A8C(taskId, -1); + sub_81C1DA4(9, -2); + sub_81C1EFC(9, -2, move); + } + } + else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) + { + if (gUnknown_0203CF1C->unk40C0 != 3) + { + ClearWindowTilemap(19); + if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible) + ClearWindowTilemap(13); + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + gTasks[taskId].func = sub_81C174C; + sub_81C0A8C(taskId, 1); + sub_81C1DA4(9, -2); + sub_81C1EFC(9, -2, move); + } + } + else if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + ClearWindowTilemap(19); + if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible) + ClearWindowTilemap(13); + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + sub_81C3E9C(move); + schedule_bg_copy_tilemap_to_vram(0); + sub_81C1DA4(9, -3); + sub_81C1EFC(9, -3, move); + gTasks[taskId].func = sub_81C174C; + } + } +} + +u8 sub_81C1B94() +{ + return gUnknown_0203CF21; +} + +void sub_81C1BA0() +{ + u16 *alloced = Alloc(32); + u8 i; + for (i = 0; i < 4; i++) + { + u8 j = i << 1; + if (i < gUnknown_0203CF1C->unk40C1) + { + alloced[j+0] = 0x40; + alloced[j+1] = 0x40; + alloced[j+8] = 0x50; + alloced[j+9] = 0x50; + } + else if (i > gUnknown_0203CF1C->unk40C2) + { + alloced[j+0] = 0x4A; + alloced[j+1] = 0x4A; + alloced[j+8] = 0x5A; + alloced[j+9] = 0x5A; + } + else if (i < gUnknown_0203CF1C->unk40C0) + { + alloced[j+0] = 0x46; + alloced[j+1] = 0x47; + alloced[j+8] = 0x56; + alloced[j+9] = 0x57; + } + else if (i == gUnknown_0203CF1C->unk40C0) + { + if (i != gUnknown_0203CF1C->unk40C2) + { + alloced[j+0] = 0x41; + alloced[j+1] = 0x42; + alloced[j+8] = 0x51; + alloced[j+9] = 0x52; + } + else + { + alloced[j+0] = 0x4B; + alloced[j+1] = 0x4C; + alloced[j+8] = 0x5B; + alloced[j+9] = 0x5C; + } + } + else if (i != gUnknown_0203CF1C->unk40C2) + { + alloced[j+0] = 0x43; + alloced[j+1] = 0x44; + alloced[j+8] = 0x53; + alloced[j+9] = 0x54; + } + else + { + alloced[j+0] = 0x48; + alloced[j+1] = 0x49; + alloced[j+8] = 0x58; + alloced[j+9] = 0x59; + } + } + CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16); + schedule_bg_copy_tilemap_to_vram(3); + Free(alloced); +} + +struct unkStruct_61CC04 +{ + u8 *ptr; + u8 field_4; + u8 field_5; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9; +}; + +#ifdef NONMATCHING +void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d) +{ + u8 *alloced = Alloc(a->field_6 * (a->field_7 << 1)); + CpuFill16(a->field_4, alloced, a->field_7*a->field_6); + if (a->field_6 != c) + { + if (!d) + { + for (d;d < a->field_7; d++) + { + CpuCopy16(&a->ptr + ((c + a->field_6*d)), alloced + ((a->field_6*d) << 1), (a->field_6 - c) * 2); + } + } + else + { + for (d = 0;d < a->field_7; d++) + { + CpuCopy16(&a->ptr + (a->field_6*d), alloced + ((c + a->field_6*d) << 1), (a->field_6 - c) * 2); + } + } + } + d = 0; + while (d < a->field_7) + { + CpuCopy16(alloced + ((a->field_6*d) << 1), b + ((((a->field_9 + d) << 5) + a->field_8) << 1), a->field_6 * 2); + d++; + } + Free(alloced); +} +#else +__attribute__((naked)) +void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x4\n\ + adds r4, r0, 0\n\ + mov r8, r1\n\ + lsls r2, 24\n\ + lsrs r6, r2, 24\n\ + lsls r3, 24\n\ + lsrs r5, r3, 24\n\ + ldrb r1, [r4, 0x6]\n\ + ldrb r0, [r4, 0x7]\n\ + lsls r0, 1\n\ + muls r0, r1\n\ + bl Alloc\n\ + adds r7, r0, 0\n\ + mov r1, sp\n\ + ldrh r0, [r4, 0x4]\n\ + strh r0, [r1]\n\ + ldrb r1, [r4, 0x7]\n\ + ldrb r0, [r4, 0x6]\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + movs r0, 0x80\n\ + lsls r0, 17\n\ + orrs r2, r0\n\ + mov r0, sp\n\ + adds r1, r7, 0\n\ + bl CpuSet\n\ + ldrb r0, [r4, 0x6]\n\ + cmp r0, r6\n\ + beq _081C1D60\n\ + cmp r5, 0\n\ + bne _081C1D30\n\ + movs r5, 0\n\ + ldrb r0, [r4, 0x7]\n\ + cmp r5, r0\n\ + bcs _081C1D60\n\ +_081C1D00:\n\ + ldrb r2, [r4, 0x6]\n\ + adds r1, r2, 0\n\ + muls r1, r5\n\ + adds r3, r6, r1\n\ + lsls r3, 1\n\ + ldr r0, [r4]\n\ + adds r0, r3\n\ + lsls r1, 1\n\ + adds r1, r7, r1\n\ + subs r2, r6\n\ + ldr r3, =0x001fffff\n\ + ands r2, r3\n\ + bl CpuSet\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + ldrb r3, [r4, 0x7]\n\ + cmp r5, r3\n\ + bcc _081C1D00\n\ + b _081C1D60\n\ + .pool\n\ +_081C1D30:\n\ + movs r5, 0\n\ + ldrb r0, [r4, 0x7]\n\ + cmp r5, r0\n\ + bcs _081C1D60\n\ +_081C1D38:\n\ + ldrb r2, [r4, 0x6]\n\ + adds r1, r2, 0\n\ + muls r1, r5\n\ + lsls r3, r1, 1\n\ + ldr r0, [r4]\n\ + adds r0, r3\n\ + adds r1, r6, r1\n\ + lsls r1, 1\n\ + adds r1, r7, r1\n\ + subs r2, r6\n\ + ldr r3, =0x001fffff\n\ + ands r2, r3\n\ + bl CpuSet\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + ldrb r3, [r4, 0x7]\n\ + cmp r5, r3\n\ + bcc _081C1D38\n\ +_081C1D60:\n\ + movs r5, 0\n\ + b _081C1D8A\n\ + .pool\n\ +_081C1D68:\n\ + ldrb r2, [r4, 0x6]\n\ + adds r0, r2, 0\n\ + muls r0, r5\n\ + lsls r0, 1\n\ + adds r0, r7, r0\n\ + ldrb r1, [r4, 0x9]\n\ + adds r1, r5\n\ + lsls r1, 5\n\ + ldrb r3, [r4, 0x8]\n\ + adds r1, r3\n\ + lsls r1, 1\n\ + add r1, r8\n\ + bl CpuSet\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ +_081C1D8A:\n\ + ldrb r0, [r4, 0x7]\n\ + cmp r5, r0\n\ + bcc _081C1D68\n\ + adds r0, r7, 0\n\ + bl Free\n\ + add sp, 0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +void sub_81C1DA4(u16 a, s16 b) +{ + if (b > gUnknown_0861CC04.field_6) + b = gUnknown_0861CC04.field_6; + if (b == 0 || b == gUnknown_0861CC04.field_6) + { + sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], b, 1); + } + else + { + u8 taskId = FindTaskIdByFunc(sub_81C1E20); + if (taskId == 0xFF) + { + taskId = CreateTask(sub_81C1E20, 8); + } + gTasks[taskId].data[0] = b; + gTasks[taskId].data[1] = a; + } +} + +void sub_81C1E20(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + data[1] += data[0]; + if (data[1] < 0) + { + data[1] = 0; + } + else if (data[1] > gUnknown_0861CC04.field_6) + { + data[1] = gUnknown_0861CC04.field_6; + } + sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], data[1], 1); + if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6) + { + if (data[0] < 0) + { + if (gUnknown_0203CF1C->unk40C0 == 2) + PutWindowTilemap(14); + + } + else + { + if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible) + PutWindowTilemap(13); + PutWindowTilemap(19); + } + schedule_bg_copy_tilemap_to_vram(0); + DestroyTask(taskId); + } + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); +} + +void sub_81C1EFC(u16 a, s16 b, u16 move) +{ + if (b > gUnknown_0861CC10.field_6) + b = gUnknown_0861CC10.field_6; + if (b == 0 || b == gUnknown_0861CC10.field_6) + sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], b, 1); + else + { + u8 taskId = FindTaskIdByFunc(sub_81C1F80); + if (taskId == 0xFF) + taskId = CreateTask(sub_81C1F80, 8); + gTasks[taskId].data[0] = b; + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = move; + } +} + +void sub_81C1F80(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + data[1] += data[0]; + if (data[1] < 0) + { + data[1] = 0; + } + else if (data[1] > gUnknown_0861CC10.field_6) + { + data[1] = gUnknown_0861CC10.field_6; + } + sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], data[1], 1); + if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6) + { + if (data[0] < 0) + { + if (gUnknown_0203CF1C->unk40C0 == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) + PutWindowTilemap(15); + sub_81C240C(data[2]); + } + else + { + if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible) + { + PutWindowTilemap(13); + } + PutWindowTilemap(19); + } + schedule_bg_copy_tilemap_to_vram(0); + DestroyTask(taskId); + } + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); +} + +void sub_81C2074(u16 a, s16 b) +{ + if (b > gUnknown_0861CBEC.field_6) + b = gUnknown_0861CBEC.field_6; + if (b == 0 || b == gUnknown_0861CBEC.field_6) + { + sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], b, 0); + sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], b, 0); + } + else + { + u8 taskId = CreateTask(sub_81C20F0, 8); + gTasks[taskId].data[0] = b; + gTasks[taskId].data[1] = a; + } +} + +void sub_81C20F0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + data[1] += data[0]; + if (data[1] < 0) + data[1] = 0; + else if (data[1] > gUnknown_0861CBEC.field_6) + data[1] = gUnknown_0861CBEC.field_6; + sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0); + schedule_bg_copy_tilemap_to_vram(3); + if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6) + { + if (data[0] < 0) + { + sub_81C4A88(); + PutWindowTilemap(13); + schedule_bg_copy_tilemap_to_vram(0); + } + DestroyTask(taskId); + } +} + +/* void sub_81C2194(u16 *a, u16 b, u8 c) +{ + u16 i; + int var; + b *= 0x1000; + var = 0x56A; + + if (c == 0) + { + for (i = 0; i < 20; i++) + { + a[(i + var) << 1] = gUnknown_08DC3CD4[i] + b; + a[((i + var) << 1) + 0x40] = gUnknown_08DC3CD4[i] + b; + a[((i + var) << 1) + 0x80] = gUnknown_08DC3CD4[i + 20] + b; + } + } + else + { + for (i = 0; i < 20; i++) + { + a[(i + var)] = gUnknown_08DC3CD4[i + 20] + b; + a[((i + var)) + 0x40] = gUnknown_08DC3CD4[i + 40] + b; + a[((i + var)) + 0x80] = gUnknown_08DC3CD4[i + 40] + b; + } + } } */ \ No newline at end of file From ae06c13e99162cebd3617f5aafb135bdd8b3f237 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Mon, 9 Oct 2017 13:10:02 -0500 Subject: [PATCH 117/182] Add front pic anims with help from marijnvdwerf --- asm/battle_7.s | 2 +- asm/reshow_battle_screen.s | 2 +- data/data2b.s | 1047 ++-- data/graphics/pokemon/front_anims.inc | 6915 +++++++++++++++++++++++++ src/battle_dome_cards.c | 4 +- src/pokemon_2.c | 6 +- 6 files changed, 7444 insertions(+), 532 deletions(-) create mode 100644 data/graphics/pokemon/front_anims.inc diff --git a/asm/battle_7.s b/asm/battle_7.s index 0b5ca514f3..bfb5f82dcb 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -2541,7 +2541,7 @@ _0805E662: ldr r1, =gSprites adds r1, 0x8 adds r0, r1 - ldr r1, =gUnknown_08309AAC + ldr r1, =gMonAnimationsSpriteAnimsPtrTable mov r3, r8 lsls r2, r3, 2 adds r1, r2 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 2066c37ed0..96d9c3658d 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -825,7 +825,7 @@ _080A9A50: adds r0, r5, 0 adds r0, 0x8 adds r1, r0 - ldr r0, =gUnknown_08309AAC + ldr r0, =gMonAnimationsSpriteAnimsPtrTable ldr r2, =0x00000604 adds r0, r2 ldr r0, [r0] diff --git a/data/data2b.s b/data/data2b.s index 0d964fcf55..4719930277 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -104,11 +104,12 @@ gUnknown_082FF518:: @ 82FF518 obj_frame_tiles gTrainerBackPic_Steven + 0x1800, 0x0800 .align 2 -gUnknown_082FF538:: @ 82FF538 - .2byte 0x0000, 0x0000, 0xffff, 0x0000 +gAnimCmd_General_Frame0:: @ 82FF538 + obj_image_anim_frame 0, 0 + obj_image_anim_end .align 2 -gUnknown_082FF540:: @ 82FF540 +AnimCmd_82FF540:: @ 82FF540 .2byte 0x0003, 0x0000, 0xffff, 0x0000 .align 2 @@ -806,1039 +807,1039 @@ gUnknown_082FFDC4:: @ 82FFDC4 .align 2 gUnknown_082FFDCC:: @ 82FFDCC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDD0:: @ 82FFDD0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDD4:: @ 82FFDD4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDD8:: @ 82FFDD8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDDC:: @ 82FFDDC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDE0:: @ 82FFDE0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDE4:: @ 82FFDE4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDE8:: @ 82FFDE8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDEC:: @ 82FFDEC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDF0:: @ 82FFDF0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDF4:: @ 82FFDF4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDF8:: @ 82FFDF8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFDFC:: @ 82FFDFC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE00:: @ 82FFE00 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE04:: @ 82FFE04 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE08:: @ 82FFE08 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE0C:: @ 82FFE0C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE10:: @ 82FFE10 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE14:: @ 82FFE14 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE18:: @ 82FFE18 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE1C:: @ 82FFE1C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE20:: @ 82FFE20 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE24:: @ 82FFE24 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE28:: @ 82FFE28 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE2C:: @ 82FFE2C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE30:: @ 82FFE30 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE34:: @ 82FFE34 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE38:: @ 82FFE38 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE3C:: @ 82FFE3C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE40:: @ 82FFE40 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE44:: @ 82FFE44 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE48:: @ 82FFE48 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE4C:: @ 82FFE4C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE50:: @ 82FFE50 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE54:: @ 82FFE54 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE58:: @ 82FFE58 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE5C:: @ 82FFE5C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE60:: @ 82FFE60 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE64:: @ 82FFE64 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE68:: @ 82FFE68 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE6C:: @ 82FFE6C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE70:: @ 82FFE70 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE74:: @ 82FFE74 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE78:: @ 82FFE78 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE7C:: @ 82FFE7C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE80:: @ 82FFE80 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE84:: @ 82FFE84 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE88:: @ 82FFE88 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE8C:: @ 82FFE8C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE90:: @ 82FFE90 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE94:: @ 82FFE94 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE98:: @ 82FFE98 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFE9C:: @ 82FFE9C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEA0:: @ 82FFEA0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEA4:: @ 82FFEA4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEA8:: @ 82FFEA8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEAC:: @ 82FFEAC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEB0:: @ 82FFEB0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEB4:: @ 82FFEB4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEB8:: @ 82FFEB8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEBC:: @ 82FFEBC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEC0:: @ 82FFEC0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEC4:: @ 82FFEC4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEC8:: @ 82FFEC8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFECC:: @ 82FFECC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFED0:: @ 82FFED0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFED4:: @ 82FFED4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFED8:: @ 82FFED8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEDC:: @ 82FFEDC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEE0:: @ 82FFEE0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEE4:: @ 82FFEE4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEE8:: @ 82FFEE8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEEC:: @ 82FFEEC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEF0:: @ 82FFEF0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEF4:: @ 82FFEF4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEF8:: @ 82FFEF8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFEFC:: @ 82FFEFC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF00:: @ 82FFF00 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF04:: @ 82FFF04 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF08:: @ 82FFF08 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF0C:: @ 82FFF0C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF10:: @ 82FFF10 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF14:: @ 82FFF14 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF18:: @ 82FFF18 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF1C:: @ 82FFF1C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF20:: @ 82FFF20 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF24:: @ 82FFF24 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF28:: @ 82FFF28 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF2C:: @ 82FFF2C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF30:: @ 82FFF30 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF34:: @ 82FFF34 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF38:: @ 82FFF38 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF3C:: @ 82FFF3C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF40:: @ 82FFF40 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF44:: @ 82FFF44 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF48:: @ 82FFF48 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF4C:: @ 82FFF4C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF50:: @ 82FFF50 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF54:: @ 82FFF54 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF58:: @ 82FFF58 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF5C:: @ 82FFF5C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF60:: @ 82FFF60 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF64:: @ 82FFF64 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF68:: @ 82FFF68 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF6C:: @ 82FFF6C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF70:: @ 82FFF70 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF74:: @ 82FFF74 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF78:: @ 82FFF78 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF7C:: @ 82FFF7C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF80:: @ 82FFF80 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF84:: @ 82FFF84 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF88:: @ 82FFF88 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF8C:: @ 82FFF8C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF90:: @ 82FFF90 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF94:: @ 82FFF94 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF98:: @ 82FFF98 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFF9C:: @ 82FFF9C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFA0:: @ 82FFFA0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFA4:: @ 82FFFA4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFA8:: @ 82FFFA8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFAC:: @ 82FFFAC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFB0:: @ 82FFFB0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFB4:: @ 82FFFB4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFB8:: @ 82FFFB8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFBC:: @ 82FFFBC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFC0:: @ 82FFFC0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFC4:: @ 82FFFC4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFC8:: @ 82FFFC8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFCC:: @ 82FFFCC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFD0:: @ 82FFFD0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFD4:: @ 82FFFD4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFD8:: @ 82FFFD8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFDC:: @ 82FFFDC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFE0:: @ 82FFFE0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFE4:: @ 82FFFE4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFE8:: @ 82FFFE8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFEC:: @ 82FFFEC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFF0:: @ 82FFFF0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFF4:: @ 82FFFF4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFF8:: @ 82FFFF8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_082FFFFC:: @ 82FFFFC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300000:: @ 8300000 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300004:: @ 8300004 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300008:: @ 8300008 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830000C:: @ 830000C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300010:: @ 8300010 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300014:: @ 8300014 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300018:: @ 8300018 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830001C:: @ 830001C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300020:: @ 8300020 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300024:: @ 8300024 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300028:: @ 8300028 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830002C:: @ 830002C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300030:: @ 8300030 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300034:: @ 8300034 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300038:: @ 8300038 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830003C:: @ 830003C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300040:: @ 8300040 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300044:: @ 8300044 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300048:: @ 8300048 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830004C:: @ 830004C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300050:: @ 8300050 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300054:: @ 8300054 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300058:: @ 8300058 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830005C:: @ 830005C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300060:: @ 8300060 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300064:: @ 8300064 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300068:: @ 8300068 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830006C:: @ 830006C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300070:: @ 8300070 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300074:: @ 8300074 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300078:: @ 8300078 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830007C:: @ 830007C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300080:: @ 8300080 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300084:: @ 8300084 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300088:: @ 8300088 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830008C:: @ 830008C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300090:: @ 8300090 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300094:: @ 8300094 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300098:: @ 8300098 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830009C:: @ 830009C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000A0:: @ 83000A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000A4:: @ 83000A4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000A8:: @ 83000A8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000AC:: @ 83000AC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000B0:: @ 83000B0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000B4:: @ 83000B4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000B8:: @ 83000B8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000BC:: @ 83000BC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000C0:: @ 83000C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000C4:: @ 83000C4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000C8:: @ 83000C8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000CC:: @ 83000CC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000D0:: @ 83000D0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000D4:: @ 83000D4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000D8:: @ 83000D8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000DC:: @ 83000DC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000E0:: @ 83000E0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000E4:: @ 83000E4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000E8:: @ 83000E8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000EC:: @ 83000EC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000F0:: @ 83000F0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000F4:: @ 83000F4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000F8:: @ 83000F8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083000FC:: @ 83000FC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300100:: @ 8300100 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300104:: @ 8300104 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300108:: @ 8300108 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830010C:: @ 830010C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300110:: @ 8300110 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300114:: @ 8300114 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300118:: @ 8300118 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830011C:: @ 830011C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300120:: @ 8300120 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300124:: @ 8300124 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300128:: @ 8300128 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830012C:: @ 830012C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300130:: @ 8300130 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300134:: @ 8300134 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300138:: @ 8300138 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830013C:: @ 830013C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300140:: @ 8300140 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300144:: @ 8300144 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300148:: @ 8300148 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830014C:: @ 830014C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300150:: @ 8300150 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300154:: @ 8300154 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300158:: @ 8300158 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830015C:: @ 830015C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300160:: @ 8300160 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300164:: @ 8300164 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300168:: @ 8300168 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830016C:: @ 830016C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300170:: @ 8300170 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300174:: @ 8300174 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300178:: @ 8300178 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830017C:: @ 830017C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300180:: @ 8300180 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300184:: @ 8300184 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300188:: @ 8300188 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830018C:: @ 830018C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300190:: @ 8300190 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300194:: @ 8300194 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300198:: @ 8300198 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830019C:: @ 830019C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001A0:: @ 83001A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001A4:: @ 83001A4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001A8:: @ 83001A8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001AC:: @ 83001AC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001B0:: @ 83001B0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001B4:: @ 83001B4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001B8:: @ 83001B8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001BC:: @ 83001BC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001C0:: @ 83001C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001C4:: @ 83001C4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001C8:: @ 83001C8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001CC:: @ 83001CC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001D0: @ 83001D0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001D4:: @ 83001D4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF71C .4byte gUnknown_082FF734 .4byte gUnknown_082FF744 @@ -1846,163 +1847,163 @@ gUnknown_083001D4:: @ 83001D4 .align 2 gUnknown_083001E8:: @ 83001E8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083001EC:: @ 83001EC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF758 .4byte gUnknown_082FF774 .4byte gUnknown_082FF790 .align 2 gUnknown_083001FC:: @ 83001FC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300200:: @ 8300200 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF79C .4byte gUnknown_082FF7B0 .align 2 gUnknown_0830020C:: @ 830020C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF7C4 .align 2 gUnknown_08300214:: @ 8300214 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF7CC .align 2 gUnknown_0830021C:: @ 830021C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF7D4 .align 2 gUnknown_08300224:: @ 8300224 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF7DC .4byte gUnknown_082FF7E4 .align 2 gUnknown_08300230:: @ 8300230 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF7EC .4byte gUnknown_082FF7F4 .align 2 gUnknown_0830023C:: @ 830023C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF7FC .4byte gUnknown_082FF804 .align 2 gUnknown_08300248:: @ 8300248 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF80C .4byte gUnknown_082FF814 .align 2 gUnknown_08300254:: @ 8300254 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF81C .4byte gUnknown_082FF824 .align 2 gUnknown_08300260:: @ 8300260 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300264:: @ 8300264 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF82C .align 2 gUnknown_0830026C:: @ 830026C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF834 .4byte gUnknown_082FF83C .align 2 gUnknown_08300278:: @ 8300278 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF844 .align 2 gUnknown_08300280:: @ 8300280 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF84C .align 2 gUnknown_08300288:: @ 8300288 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF854 .4byte gUnknown_082FF85C .align 2 gUnknown_08300294:: @ 8300294 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300298:: @ 8300298 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830029C:: @ 830029C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083002A0:: @ 83002A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF864 .align 2 gUnknown_083002A8:: @ 83002A8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF86C .align 2 gUnknown_083002B0:: @ 83002B0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF874 .align 2 gUnknown_083002B8:: @ 83002B8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF87C .align 2 gUnknown_083002C0:: @ 83002C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083002C4:: @ 83002C4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF884 .align 2 gUnknown_083002CC:: @ 83002CC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF88C .4byte gUnknown_082FF894 .align 2 gUnknown_083002D8:: @ 83002D8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF89C .4byte gUnknown_082FF8A4 .align 2 gUnknown_083002E4:: @ 83002E4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF8AC .4byte gUnknown_082FF8B4 .align 2 gUnknown_083002F0:: @ 83002F0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF8BC .4byte gUnknown_082FF8FC .4byte gUnknown_082FF91C @@ -2010,21 +2011,21 @@ gUnknown_083002F0:: @ 83002F0 .align 2 gUnknown_08300304:: @ 8300304 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300308:: @ 8300308 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF93C .align 2 gUnknown_08300310:: @ 8300310 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF944 .align 2 gUnknown_08300318:: @ 8300318 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FF94C .4byte gUnknown_082FF9A8 .4byte gUnknown_082FFA00 @@ -2032,165 +2033,165 @@ gUnknown_08300318:: @ 8300318 .align 2 gUnknown_0830032C:: @ 830032C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFA64 .align 2 gUnknown_08300334:: @ 8300334 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFA6C .align 2 gUnknown_0830033C:: @ 830033C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFA74 .align 2 gUnknown_08300344:: @ 8300344 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300348:: @ 8300348 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFA7C .4byte gUnknown_082FFA84 .align 2 gUnknown_08300354:: @ 8300354 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300358:: @ 8300358 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830035C:: @ 830035C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFA8C .4byte gUnknown_082FFA94 .align 2 gUnknown_08300368:: @ 8300368 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830036C:: @ 830036C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300370:: @ 8300370 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFA9C .4byte gUnknown_082FFAA4 .align 2 gUnknown_0830037C:: @ 830037C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFAAC .4byte gUnknown_082FFAB4 .align 2 gUnknown_08300388:: @ 8300388 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFABC .4byte gUnknown_082FFAC4 .align 2 gUnknown_08300394:: @ 8300394 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFACC .4byte gUnknown_082FFAD4 .align 2 gUnknown_083003A0:: @ 83003A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFADC .align 2 gUnknown_083003A8:: @ 83003A8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFAE4 .align 2 gUnknown_083003B0:: @ 83003B0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFAEC .align 2 gUnknown_083003B8:: @ 83003B8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFAF4 .align 2 gUnknown_083003C0:: @ 83003C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFAFC .align 2 gUnknown_083003C8:: @ 83003C8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB04 .4byte gUnknown_082FFB0C .align 2 gUnknown_083003D4:: @ 83003D4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB14 .align 2 gUnknown_083003DC:: @ 83003DC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB1C .4byte gUnknown_082FFB24 .align 2 gUnknown_083003E8:: @ 83003E8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB2C .align 2 gUnknown_083003F0:: @ 83003F0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB34 .align 2 gUnknown_083003F8:: @ 83003F8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB3C .align 2 gUnknown_08300400:: @ 8300400 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB44 .4byte gUnknown_082FFB60 .align 2 gUnknown_0830040C:: @ 830040C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300410:: @ 8300410 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300414:: @ 8300414 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300418:: @ 8300418 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830041C:: @ 830041C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300420:: @ 8300420 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300424:: @ 8300424 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFB7C .4byte gUnknown_082FFBBC .4byte gUnknown_082FFBE0 @@ -2198,174 +2199,174 @@ gUnknown_08300424:: @ 8300424 .align 2 gUnknown_08300438:: @ 8300438 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFBFC .4byte gUnknown_082FFC04 .align 2 gUnknown_08300444:: @ 8300444 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC0C .align 2 gUnknown_0830044C:: @ 830044C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC14 .align 2 gUnknown_08300454:: @ 8300454 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC1C .align 2 gUnknown_0830045C:: @ 830045C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC24 .align 2 gUnknown_08300464:: @ 8300464 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC2C .align 2 gUnknown_0830046C:: @ 830046C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC34 .align 2 gUnknown_08300474:: @ 8300474 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC3C .4byte gUnknown_082FFC58 .align 2 gUnknown_08300480:: @ 8300480 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC74 .align 2 gUnknown_08300488:: @ 8300488 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC7C .4byte gUnknown_082FFC84 .align 2 gUnknown_08300494:: @ 8300494 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC8C .4byte gUnknown_082FFC94 .align 2 gUnknown_083004A0:: @ 83004A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFC9C .4byte gUnknown_082FFCA4 .align 2 gUnknown_083004AC:: @ 83004AC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083004B0:: @ 83004B0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCAC .align 2 gUnknown_083004B8:: @ 83004B8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCB4 .align 2 gUnknown_083004C0:: @ 83004C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCBC .align 2 gUnknown_083004C8:: @ 83004C8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCC4 .align 2 gUnknown_083004D0:: @ 83004D0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCCC .align 2 gUnknown_083004D8:: @ 83004D8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCD4 .align 2 gUnknown_083004E0:: @ 83004E0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083004E4:: @ 83004E4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083004E8:: @ 83004E8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083004EC:: @ 83004EC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCDC .align 2 gUnknown_083004F4:: @ 83004F4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083004F8:: @ 83004F8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083004FC:: @ 83004FC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCE4 .align 2 gUnknown_08300504:: @ 8300504 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCEC .4byte gUnknown_082FFCF4 .align 2 gUnknown_08300510:: @ 8300510 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFCFC .align 2 gUnknown_08300518:: @ 8300518 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830051C:: @ 830051C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300520:: @ 8300520 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300524:: @ 8300524 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD04 .align 2 gUnknown_0830052C:: @ 830052C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD0C .align 2 gUnknown_08300534:: @ 8300534 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD14 .align 2 gUnknown_0830053C:: @ 830053C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD1C .4byte gUnknown_082FFD24 .4byte gUnknown_082FFD2C @@ -2373,228 +2374,228 @@ gUnknown_0830053C:: @ 830053C .align 2 gUnknown_08300550:: @ 8300550 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD3C .align 2 gUnknown_08300558:: @ 8300558 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD44 .align 2 gUnknown_08300560:: @ 8300560 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300564:: @ 8300564 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300568:: @ 8300568 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830056C:: @ 830056C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300570:: @ 8300570 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300574:: @ 8300574 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300578:: @ 8300578 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830057C:: @ 830057C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD4C .4byte gUnknown_082FFD54 .align 2 gUnknown_08300588:: @ 8300588 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830058C:: @ 830058C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD5C .4byte gUnknown_082FFD64 .align 2 gUnknown_08300598:: @ 8300598 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830059C:: @ 830059C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005A0:: @ 83005A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005A4:: @ 83005A4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD6C .align 2 gUnknown_083005AC:: @ 83005AC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD74 .align 2 gUnknown_083005B4:: @ 83005B4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD7C .4byte gUnknown_082FFD84 .align 2 gUnknown_083005C0:: @ 83005C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005C4:: @ 83005C4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005C8:: @ 83005C8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFD8C .4byte gUnknown_082FFDA0 .align 2 gUnknown_083005D4:: @ 83005D4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005D8:: @ 83005D8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005DC:: @ 83005DC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFDC4 .align 2 gUnknown_083005E4:: @ 83005E4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005E8:: @ 83005E8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005EC:: @ 83005EC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005F0:: @ 83005F0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005F4:: @ 83005F4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005F8:: @ 83005F8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083005FC:: @ 83005FC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300600:: @ 8300600 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300604:: @ 8300604 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300608:: @ 8300608 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830060C:: @ 830060C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300610:: @ 8300610 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300614:: @ 8300614 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300618:: @ 8300618 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830061C:: @ 830061C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300620:: @ 8300620 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300624:: @ 8300624 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300628:: @ 8300628 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830062C:: @ 830062C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300630:: @ 8300630 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300634:: @ 8300634 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300638:: @ 8300638 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830063C:: @ 830063C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300640:: @ 8300640 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300644:: @ 8300644 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300648:: @ 8300648 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830064C:: @ 830064C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300650:: @ 8300650 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08300654:: @ 8300654 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_082FFDCC .4byte gUnknown_082FFDD0 @@ -3936,375 +3937,375 @@ gUnknown_083021D8:: @ 83021D8 .include "data/graphics/pokemon/shiny_palette_table.inc" gUnknown_083051F8:: @ 83051F8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083051FC:: @ 83051FC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305200:: @ 8305200 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305204:: @ 8305204 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305208:: @ 8305208 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830520C:: @ 830520C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305210:: @ 8305210 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305214:: @ 8305214 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305218:: @ 8305218 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830521C:: @ 830521C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305220:: @ 8305220 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305224:: @ 8305224 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305228:: @ 8305228 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830522C:: @ 830522C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305230:: @ 8305230 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305234:: @ 8305234 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305238:: @ 8305238 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830523C:: @ 830523C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305240:: @ 8305240 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305244:: @ 8305244 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305248:: @ 8305248 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830524C:: @ 830524C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305250:: @ 8305250 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305254:: @ 8305254 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305258:: @ 8305258 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830525C:: @ 830525C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305260:: @ 8305260 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305264:: @ 8305264 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305268:: @ 8305268 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830526C:: @ 830526C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305270:: @ 8305270 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305274:: @ 8305274 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305278:: @ 8305278 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830527C:: @ 830527C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305280:: @ 8305280 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305284:: @ 8305284 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305288:: @ 8305288 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830528C:: @ 830528C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305290:: @ 8305290 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305294:: @ 8305294 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305298:: @ 8305298 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830529C:: @ 830529C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052A0:: @ 83052A0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052A4:: @ 83052A4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052A8:: @ 83052A8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052AC:: @ 83052AC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052B0:: @ 83052B0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052B4:: @ 83052B4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052B8:: @ 83052B8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052BC:: @ 83052BC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052C0:: @ 83052C0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052C4:: @ 83052C4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052C8:: @ 83052C8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052CC:: @ 83052CC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052D0:: @ 83052D0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052D4:: @ 83052D4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052D8:: @ 83052D8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052DC:: @ 83052DC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052E0:: @ 83052E0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052E4:: @ 83052E4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052E8:: @ 83052E8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052EC:: @ 83052EC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052F0:: @ 83052F0 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052F4:: @ 83052F4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052F8:: @ 83052F8 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_083052FC:: @ 83052FC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305300:: @ 8305300 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305304:: @ 8305304 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305308:: @ 8305308 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830530C:: @ 830530C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305310:: @ 8305310 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305314:: @ 8305314 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305318:: @ 8305318 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830531C:: @ 830531C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305320:: @ 8305320 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305324:: @ 8305324 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305328:: @ 8305328 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830532C:: @ 830532C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305330:: @ 8305330 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305334:: @ 8305334 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305338:: @ 8305338 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830533C:: @ 830533C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305340:: @ 8305340 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305344:: @ 8305344 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305348:: @ 8305348 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830534C:: @ 830534C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305350:: @ 8305350 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305354:: @ 8305354 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305358:: @ 8305358 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830535C:: @ 830535C - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305360:: @ 8305360 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305364:: @ 8305364 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_08305368:: @ 8305368 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .align 2 gUnknown_0830536C:: @ 830536C @@ -4447,42 +4448,42 @@ gUnknown_08305CB4:: @ 8305CB4 .align 2 gUnknown_08305CCC:: @ 8305CCC - .4byte gUnknown_082FF540 + .4byte AnimCmd_82FF540 .4byte gUnknown_08305C24 .align 2 gUnknown_08305CD4:: @ 8305CD4 - .4byte gUnknown_082FF540 + .4byte AnimCmd_82FF540 .4byte gUnknown_08305C3C .align 2 gUnknown_08305CDC:: @ 8305CDC - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_08305C6C .align 2 gUnknown_08305CE4:: @ 8305CE4 - .4byte gUnknown_082FF538 + .4byte gAnimCmd_General_Frame0 .4byte gUnknown_08305C84 .align 2 gUnknown_08305CEC:: @ 8305CEC - .4byte gUnknown_082FF540 + .4byte AnimCmd_82FF540 .4byte gUnknown_08305C9C .align 2 gUnknown_08305CF4:: @ 8305CF4 - .4byte gUnknown_082FF540 + .4byte AnimCmd_82FF540 .4byte gUnknown_08305CB4 .align 2 gUnknown_08305CFC:: @ 8305CFC - .4byte gUnknown_082FF540 + .4byte AnimCmd_82FF540 .4byte gUnknown_08305C54 .align 2 gUnknown_08305D04:: @ 8305D04 - .4byte gUnknown_082FF540 + .4byte AnimCmd_82FF540 .4byte gUnknown_08305C3C .align 2 @@ -4508,12 +4509,8 @@ gUnknown_08305D0C:: @ 8305D0C @ 8305DCC .include "data/enemy_mon_elevation.inc" - .incbin "baserom.gba", 0x305f68, 0x2d54 - - .incbin "baserom.gba", 0x308cbc, 0xdf0 - -gUnknown_08309AAC:: @ 8309AAC - .incbin "baserom.gba", 0x309aac, 0x6e0 +@ 8305F68 + .include "data/graphics/pokemon/front_anims.inc" @ 830A18C .include "data/graphics/pokemon/front_pic_table.inc" diff --git a/data/graphics/pokemon/front_anims.inc b/data/graphics/pokemon/front_anims.inc new file mode 100644 index 0000000000..69341c88d7 --- /dev/null +++ b/data/graphics/pokemon/front_anims.inc @@ -0,0 +1,6915 @@ + + .align 2 +gAnimCmd_NONE_1:: @ 8305F68 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_BULBASAUR_1:: @ 8305F78 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_IVYSAUR_1:: @ 8305F88 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 36 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_VENUSAUR_1:: @ 8305F98 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CHARMANDER_1:: @ 8305FA8 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 46 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CHARMELEON_1:: @ 8305FB8 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_CHARIZARD_1:: @ 8305FC8 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_SQUIRTLE_1:: @ 8305FD4 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_WARTORTLE_1:: @ 8305FE4 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_BLASTOISE_1:: @ 8305FF4 + obj_image_anim_frame 0, 50 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_CATERPIE_1:: @ 830600C + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_METAPOD_1:: @ 8306030 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_BUTTERFREE_1:: @ 830603C + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_WEEDLE_1:: @ 8306074 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_KAKUNA_1:: @ 8306094 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_BEEDRILL_1:: @ 83060C4 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 28 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PIDGEY_1:: @ 83060DC + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PIDGEOTTO_1:: @ 8306110 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_PIDGEOT_1:: @ 8306128 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_RATTATA_1:: @ 830613C + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 28 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_RATICATE_1:: @ 8306150 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_SPEAROW_1:: @ 8306184 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_FEAROW_1:: @ 83061C8 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_EKANS_1:: @ 83061EC + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_ARBOK_1:: @ 8306208 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PIKACHU_1:: @ 8306218 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_PIKACHU_2:: @ 8306230 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_RAICHU_1:: @ 8306244 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_RAICHU_2:: @ 830625C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SANDSHREW_1:: @ 8306270 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SANDSHREW_2:: @ 8306288 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SANDSLASH_1:: @ 830629C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SANDSLASH_2:: @ 83062B4 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_NIDORAN_F_1:: @ 83062C8 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 50 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_NIDORINA_1:: @ 83062F0 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_NIDOQUEEN_1:: @ 83062FC + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_NIDORAN_M_1:: @ 8306308 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_NIDORINO_1:: @ 8306318 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_NIDOKING_1:: @ 8306328 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CLEFAIRY_1:: @ 830633C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CLEFABLE_1:: @ 830634C + obj_image_anim_frame 1, 27 + obj_image_anim_frame 0, 27 + obj_image_anim_frame 1, 24 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 27 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_VULPIX_1:: @ 8306368 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_VULPIX_2:: @ 8306380 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_NINETALES_1:: @ 8306394 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_NINETALES_2:: @ 83063AC + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_JIGGLYPUFF_1:: @ 83063C0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_JIGGLYPUFF_2:: @ 83063D8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_WIGGLYTUFF_1:: @ 83063EC + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_WIGGLYTUFF_2:: @ 8306404 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_ZUBAT_1:: @ 8306418 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_GOLBAT_1:: @ 8306450 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_ODDISH_1:: @ 83064A0 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_GLOOM_1:: @ 83064C0 + obj_image_anim_frame 0, 21 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_VILEPLUME_1:: @ 83064D4 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 21 + obj_image_anim_frame 0, 13 + obj_image_anim_frame 1, 21 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PARAS_1:: @ 83064EC + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_PARASECT_1:: @ 8306530 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_VENONAT_1:: @ 830654C + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 35 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_VENOMOTH_1:: @ 8306568 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_end + + .align 2 +gAnimCmd_DIGLETT_1:: @ 83065C4 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_DUGTRIO_1:: @ 83065D4 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MEOWTH_1:: @ 8306600 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 17 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PERSIAN_1:: @ 830661C + obj_image_anim_frame 1, 50 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_PSYDUCK_1:: @ 8306628 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_PSYDUCK_2:: @ 8306640 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_GOLDUCK_1:: @ 8306654 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_GOLDUCK_2:: @ 830666C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MANKEY_1:: @ 8306680 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 28 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_PRIMEAPE_1:: @ 830669C + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_GROWLITHE_1:: @ 83066B8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ARCANINE_1:: @ 83066D4 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_POLIWAG_1:: @ 83066F0 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_POLIWHIRL_1:: @ 8306700 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_POLIWRATH_1:: @ 8306718 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ABRA_1:: @ 8306724 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 21 + obj_image_anim_frame 0, 13 + obj_image_anim_frame 1, 21 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_KADABRA_1:: @ 830673C + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ALAKAZAM_1:: @ 830674C + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 54 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_MACHOP_1:: @ 830675C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MACHOKE_1:: @ 830677C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MACHAMP_1:: @ 830678C + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_BELLSPROUT_1:: @ 83067AC + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_WEEPINBELL_1:: @ 83067BC + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_VICTREEBEL_1:: @ 83067DC + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_TENTACOOL_1:: @ 83067FC + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_TENTACRUEL_1:: @ 8306814 + obj_image_anim_frame 0, 19 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 19 + obj_image_anim_frame 1, 19 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_GEODUDE_1:: @ 830682C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 36 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GRAVELER_1:: @ 830683C + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_end + + .align 2 +gAnimCmd_GOLEM_1:: @ 8306854 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 31 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_PONYTA_1:: @ 830686C + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_RAPIDASH_1:: @ 8306878 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SLOWPOKE_1:: @ 8306888 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SLOWBRO_1:: @ 8306898 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGNEMITE_1:: @ 83068A8 + obj_image_anim_frame 0, 28 + obj_image_anim_frame 1, 28 + obj_image_anim_frame 0, 28 + obj_image_anim_frame 1, 28 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGNETON_1:: @ 83068C0 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_end + + .align 2 +gAnimCmd_FARFETCHD_1:: @ 83068E0 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_DODUO_1:: @ 8306914 + obj_image_anim_frame 0, 18 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 18 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_DODRIO_1:: @ 830692C + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_SEEL_1:: @ 8306954 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_DEWGONG_1:: @ 8306978 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_GRIMER_1:: @ 8306988 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GRIMER_2:: @ 83069A0 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MUK_1:: @ 83069B4 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MUK_2:: @ 83069CC + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SHELLDER_1:: @ 83069E0 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_CLOYSTER_1:: @ 83069F4 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_GASTLY_1:: @ 8306A38 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HAUNTER_1:: @ 8306A48 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GENGAR_1:: @ 8306A60 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ONIX_1:: @ 8306A70 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_DROWZEE_1:: @ 8306A80 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HYPNO_1:: @ 8306A9C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_KRABBY_1:: @ 8306ABC + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_KINGLER_1:: @ 8306AD8 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_VOLTORB_1:: @ 8306B00 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 4 + obj_image_anim_end + + .align 2 +gAnimCmd_ELECTRODE_1:: @ 8306B18 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_EXEGGCUTE_1:: @ 8306B30 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_EXEGGUTOR_1:: @ 8306B58 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CUBONE_1:: @ 8306B64 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_end + + .align 2 +gAnimCmd_MAROWAK_1:: @ 8306B80 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_end + + .align 2 +gAnimCmd_HITMONLEE_1:: @ 8306B9C + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_HITMONCHAN_1:: @ 8306BA8 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LICKITUNG_1:: @ 8306BCC + obj_image_anim_frame 0, 28 + obj_image_anim_frame 1, 32 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_KOFFING_1:: @ 8306BDC + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_KOFFING_2:: @ 8306BF4 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_WEEZING_1:: @ 8306C08 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_WEEZING_2:: @ 8306C20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_RHYHORN_1:: @ 8306C34 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_RHYHORN_2:: @ 8306C4C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_RHYDON_1:: @ 8306C60 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 48 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_RHYDON_2:: @ 8306C78 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_CHANSEY_1:: @ 8306C8C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_TANGELA_1:: @ 8306C9C + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_end + + .align 2 +gAnimCmd_KANGASKHAN_1:: @ 8306CC8 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HORSEA_1:: @ 8306CDC + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HORSEA_2:: @ 8306CF4 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SEADRA_1:: @ 8306D08 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SEADRA_2:: @ 8306D20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_GOLDEEN_1:: @ 8306D34 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SEAKING_1:: @ 8306D5C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_STARYU_1:: @ 8306D74 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_STARYU_2:: @ 8306D8C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_STARMIE_1:: @ 8306DA0 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_STARMIE_2:: @ 8306DB8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MR_MIME_1:: @ 8306DCC + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SCYTHER_1:: @ 8306DE8 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_JYNX_1:: @ 8306E0C + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ELECTABUZZ_1:: @ 8306E24 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGMAR_1:: @ 8306E38 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PINSIR_1:: @ 8306E44 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PINSIR_2:: @ 8306E5C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_TAUROS_1:: @ 8306E70 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGIKARP_1:: @ 8306E84 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_GYARADOS_1:: @ 8306EAC + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 32 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LAPRAS_1:: @ 8306EBC + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_DITTO_1:: @ 8306EC8 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_EEVEE_1:: @ 8306EDC + obj_image_anim_frame 1, 33 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_VAPOREON_1:: @ 8306EE8 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_JOLTEON_1:: @ 8306EF4 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_FLAREON_1:: @ 8306F00 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_PORYGON_1:: @ 8306F0C + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_OMANYTE_1:: @ 8306F20 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_OMASTAR_1:: @ 8306F44 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_KABUTO_1:: @ 8306F58 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_KABUTOPS_1:: @ 8306F7C + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_AERODACTYL_1:: @ 8306F90 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 25 + obj_image_anim_end + + .align 2 +gAnimCmd_SNORLAX_1:: @ 8306FA4 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ARTICUNO_1:: @ 8306FB4 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ZAPDOS_1:: @ 8306FC8 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MOLTRES_1:: @ 8306FDC + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_DRATINI_1:: @ 8307060 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_DRAGONAIR_1:: @ 8307070 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_DRAGONITE_1:: @ 8307084 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MEWTWO_1:: @ 8307094 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MEW_1:: @ 83070A0 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CHIKORITA_1:: @ 83070B0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_BAYLEEF_1:: @ 83070C0 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_MEGANIUM_1:: @ 83070CC + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_CYNDAQUIL_1:: @ 83070D8 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_QUILAVA_1:: @ 83070EC + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_TYPHLOSION_1:: @ 83070F8 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_TOTODILE_1:: @ 8307104 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_CROCONAW_1:: @ 8307120 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_FERALIGATR_1:: @ 830712C + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 40 + obj_image_anim_end + + .align 2 +gAnimCmd_SENTRET_1:: @ 8307140 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_FURRET_1:: @ 8307154 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_HOOTHOOT_1:: @ 8307160 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_NOCTOWL_1:: @ 8307194 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_LEDYBA_1:: @ 83071A0 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LEDIAN_1:: @ 83071B4 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_SPINARAK_1:: @ 8307220 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_ARIADOS_1:: @ 8307244 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CROBAT_1:: @ 8307258 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_end + + .align 2 +gAnimCmd_CHINCHOU_1:: @ 83072A0 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CHINCHOU_2:: @ 83072B8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_LANTURN_1:: @ 83072CC + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LANTURN_2:: @ 83072E4 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_PICHU_1:: @ 83072F8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_PICHU_2:: @ 8307310 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_CLEFFA_1:: @ 8307324 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_IGGLYBUFF_1:: @ 8307338 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_IGGLYBUFF_2:: @ 8307350 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_TOGEPI_1:: @ 8307364 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_TOGETIC_1:: @ 8307374 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_NATU_1:: @ 8307384 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_NATU_2:: @ 830739C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_XATU_1:: @ 83073B0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 45 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_XATU_2:: @ 83073D0 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MAREEP_1:: @ 83073E4 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_FLAAFFY_1:: @ 8307400 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_AMPHAROS_1:: @ 8307414 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_BELLOSSOM_1:: @ 8307424 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_MARILL_1:: @ 8307444 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_AZUMARILL_1:: @ 830745C + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_SUDOWOODO_1:: @ 8307474 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_POLITOED_1:: @ 8307490 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_HOPPIP_1:: @ 83074AC + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 25 + obj_image_anim_end + + .align 2 +gAnimCmd_SKIPLOOM_1:: @ 83074C0 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_JUMPLUFF_1:: @ 83074E4 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 25 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_AIPOM_1:: @ 8307500 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_SUNKERN_1:: @ 830750C + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SUNFLORA_1:: @ 8307520 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_YANMA_1:: @ 8307530 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_end + + .align 2 +gAnimCmd_WOOPER_1:: @ 830758C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_QUAGSIRE_1:: @ 830759C + obj_image_anim_frame 1, 32 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_ESPEON_1:: @ 83075A8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_UMBREON_1:: @ 83075B8 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MURKROW_1:: @ 83075C4 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SLOWKING_1:: @ 83075D0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_MISDREAVUS_1:: @ 83075E0 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_1:: @ 830760C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_WOBBUFFET_1:: @ 830761C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_WOBBUFFET_2:: @ 8307634 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_GIRAFARIG_1:: @ 8307648 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_GIRAFARIG_2:: @ 8307668 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_PINECO_1:: @ 830767C + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_FORRETRESS_1:: @ 83076A0 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_DUNSPARCE_1:: @ 83076B4 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GLIGAR_1:: @ 83076C8 + obj_image_anim_frame 1, 17 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_STEELIX_1:: @ 83076D4 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_SNUBBULL_1:: @ 83076F0 + obj_image_anim_frame 1, 32 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_GRANBULL_1:: @ 83076FC + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_QWILFISH_1:: @ 8307708 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_SCIZOR_1:: @ 8307728 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SHUCKLE_1:: @ 8307734 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_HERACROSS_1:: @ 8307744 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HERACROSS_2:: @ 830775C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SNEASEL_1:: @ 8307770 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_TEDDIURSA_1:: @ 830777C + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_URSARING_1:: @ 8307788 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SLUGMA_1:: @ 8307794 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SLUGMA_2:: @ 83077AC + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGCARGO_1:: @ 83077C0 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGCARGO_2:: @ 83077D8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SWINUB_1:: @ 83077EC + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PILOSWINE_1:: @ 8307800 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CORSOLA_1:: @ 8307814 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_CORSOLA_2:: @ 830782C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_REMORAID_1:: @ 8307840 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_OCTILLERY_1:: @ 8307854 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_DELIBIRD_1:: @ 8307868 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MANTINE_1:: @ 830787C + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 40 + obj_image_anim_end + + .align 2 +gAnimCmd_SKARMORY_1:: @ 8307890 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SKARMORY_2:: @ 83078A8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_HOUNDOUR_1:: @ 83078BC + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HOUNDOOM_1:: @ 83078D0 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_KINGDRA_1:: @ 83078DC + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_KINGDRA_2:: @ 83078F4 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_PHANPY_1:: @ 8307908 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_PHANPY_2:: @ 8307928 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_DONPHAN_1:: @ 830793C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_DONPHAN_2:: @ 830795C + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_PORYGON2_1:: @ 8307970 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_STANTLER_1:: @ 8307988 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SMEARGLE_1:: @ 8307994 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_TYROGUE_1:: @ 83079A8 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_HITMONTOP_1:: @ 83079B4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_end + + .align 2 +gAnimCmd_SMOOCHUM_1:: @ 83079E4 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ELEKID_1:: @ 8307A00 + obj_image_anim_frame 1, 50 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_MAGBY_1:: @ 8307A10 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MILTANK_1:: @ 8307A30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_BLISSEY_1:: @ 8307A3C + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_RAIKOU_1:: @ 8307A48 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_ENTEI_1:: @ 8307A5C + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SUICUNE_1:: @ 8307A68 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_LARVITAR_1:: @ 8307A74 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_PUPITAR_1:: @ 8307A88 + obj_image_anim_frame 1, 40 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_TYRANITAR_1:: @ 8307A94 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LUGIA_1:: @ 8307AA8 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_HO_OH_1:: @ 8307AB4 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_CELEBI_1:: @ 8307AC0 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_OLD_UNOWN_B_1:: @ 8307AD4 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_TREECKO_1:: @ 8307AE4 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_GROVYLE_1:: @ 8307AFC + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_SCEPTILE_1:: @ 8307B14 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 26 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_TORCHIC_1:: @ 8307B24 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_COMBUSKEN_1:: @ 8307B44 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 12 + obj_image_anim_end + + .align 2 +gAnimCmd_BLAZIKEN_1:: @ 8307B54 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_BLAZIKEN_2:: @ 8307B6C + obj_image_anim_frame 0, 1 + obj_image_anim_frame 2, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_BLAZIKEN_3:: @ 8307B7C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 2, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_BLAZIKEN_4:: @ 8307B88 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MUDKIP_1:: @ 8307B90 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 13 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_MARSHTOMP_1:: @ 8307BA8 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_SWAMPERT_1:: @ 8307BD0 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 18 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_POOCHYENA_1:: @ 8307BE8 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MIGHTYENA_1:: @ 8307BF8 + obj_image_anim_frame 0, 27 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_ZIGZAGOON_1:: @ 8307C10 + obj_image_anim_frame 0, 27 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_LINOONE_1:: @ 8307C28 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_end + + .align 2 +gAnimCmd_WURMPLE_1:: @ 8307C40 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SILCOON_1:: @ 8307C50 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SILCOON_2:: @ 8307C60 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_BEAUTIFLY_1:: @ 8307C68 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_end + + .align 2 +gAnimCmd_BEAUTIFLY_2:: @ 8307C90 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_CASCOON_1:: @ 8307C98 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_CASCOON_2:: @ 8307CB0 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_DUSTOX_1:: @ 8307CB8 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_DUSTOX_2:: @ 8307CF8 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_LOTAD_1:: @ 8307D00 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 55 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_LOMBRE_1:: @ 8307D10 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_LUDICOLO_1:: @ 8307D28 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_SEEDOT_1:: @ 8307D48 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_NUZLEAF_1:: @ 8307D70 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_SHIFTRY_1:: @ 8307D98 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_NINCADA_1:: @ 8307DA8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 33 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_NINJASK_1:: @ 8307DC0 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 33 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_SHEDINJA_1:: @ 8307E0C + obj_image_anim_frame 0, 33 + obj_image_anim_frame 1, 33 + obj_image_anim_frame 0, 33 + obj_image_anim_frame 1, 33 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_TAILLOW_1:: @ 8307E24 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_SWELLOW_1:: @ 8307E4C + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_SHROOMISH_1:: @ 8307E5C + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_BRELOOM_1:: @ 8307E8C + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gAnimCmd_WINGULL_1:: @ 8307EA4 + obj_image_anim_frame 0, 17 + obj_image_anim_frame 1, 23 + obj_image_anim_frame 0, 13 + obj_image_anim_end + + .align 2 +gAnimCmd_PELIPPER_1:: @ 8307EB4 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_SURSKIT_1:: @ 8307EDC + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_SURSKIT_2:: @ 8307EF4 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_MASQUERAIN_1:: @ 8307EFC + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_MASQUERAIN_2:: @ 8307F24 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_WAILMER_1:: @ 8307F2C + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_WAILORD_1:: @ 8307F4C + obj_image_anim_frame 0, 26 + obj_image_anim_frame 1, 48 + obj_image_anim_frame 0, 33 + obj_image_anim_end + + .align 2 +gAnimCmd_SKITTY_1:: @ 8307F5C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 35 + obj_image_anim_frame 0, 9 + obj_image_anim_end + + .align 2 +gAnimCmd_DELCATTY_1:: @ 8307F6C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 46 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_KECLEON_1:: @ 8307F7C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_BALTOY_1:: @ 8307F94 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_CLAYDOL_1:: @ 8307FB4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_NOSEPASS_1:: @ 8307FD4 + obj_image_anim_frame 0, 27 + obj_image_anim_frame 1, 27 + obj_image_anim_frame 0, 27 + obj_image_anim_frame 1, 27 + obj_image_anim_frame 0, 27 + obj_image_anim_frame 1, 27 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_TORKOAL_1:: @ 8307FF4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SABLEYE_1:: @ 830800C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_BARBOACH_1:: @ 8308024 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_WHISCASH_1:: @ 830805C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_LUVDISC_1:: @ 8308094 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_CORPHISH_1:: @ 83080AC + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_CRAWDAUNT_1:: @ 83080CC + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_FEEBAS_1:: @ 83080E4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_MILOTIC_1:: @ 8308104 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_CARVANHA_1:: @ 8308124 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_SHARPEDO_1:: @ 830814C + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_TRAPINCH_1:: @ 8308174 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_VIBRAVA_1:: @ 830818C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_FLYGON_1:: @ 83081AC + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_MAKUHITA_1:: @ 83081CC + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_HARIYAMA_1:: @ 83081F4 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_ELECTRIKE_1:: @ 8308208 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 17 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_MANECTRIC_1:: @ 8308220 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 33 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 3 + obj_image_anim_end + + .align 2 +gAnimCmd_NUMEL_1:: @ 8308238 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 40 + obj_image_anim_end + + .align 2 +gAnimCmd_CAMERUPT_1:: @ 8308250 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SPHEAL_1:: @ 8308270 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 43 + obj_image_anim_frame 1, 60 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SEALEO_1:: @ 8308294 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_WALREIN_1:: @ 83082AC + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_CACNEA_1:: @ 83082C4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_CACTURNE_1:: @ 83082F4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SNORUNT_1:: @ 830830C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_GLALIE_1:: @ 8308324 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_LUNATONE_1:: @ 830833C + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_LUNATONE_2:: @ 8308354 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_SOLROCK_1:: @ 8308368 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SOLROCK_2:: @ 8308380 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_AZURILL_1:: @ 8308394 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_end + + .align 2 +gAnimCmd_SPOINK_1:: @ 83083B4 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GRUMPIG_1:: @ 83083E4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_PLUSLE_1:: @ 83083FC + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MINUN_1:: @ 8308414 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MAWILE_1:: @ 830842C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_MEDITITE_1:: @ 830844C + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 2 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_MEDICHAM_1:: @ 830845C + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_SWABLU_1:: @ 830847C + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_SWABLU_2:: @ 830849C + obj_image_anim_frame 0, 1 + obj_image_anim_frame 2, 8 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 2, 8 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 2, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_ALTARIA_1:: @ 83084B8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ALTARIA_2:: @ 83084D0 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_WYNAUT_1:: @ 83084E4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_DUSKULL_1:: @ 83084FC + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_DUSCLOPS_1:: @ 8308514 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ROSELIA_1:: @ 830852C + obj_image_anim_frame 0, 18 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_SLAKOTH_1:: @ 830853C + obj_image_anim_frame 0, 13 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_VIGOROTH_1:: @ 8308558 + obj_image_anim_frame 0, 13 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 13 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 13 + obj_image_anim_frame 1, 7 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_SLAKING_1:: @ 8308578 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_end + + .align 2 +gAnimCmd_GULPIN_1:: @ 8308598 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 14 + obj_image_anim_frame 1, 14 + obj_image_anim_frame 0, 4 + obj_image_anim_end + + .align 2 +gAnimCmd_SWALOT_1:: @ 83085B0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 30 + obj_image_anim_end + + .align 2 +gAnimCmd_TROPIUS_1:: @ 83085C4 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_WHISMUR_1:: @ 83085DC + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 33 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_end + + .align 2 +gAnimCmd_LOUDRED_1:: @ 8308608 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 0, 33 + obj_image_anim_end + + .align 2 +gAnimCmd_EXPLOUD_1:: @ 8308620 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 9 + obj_image_anim_end + + .align 2 +gAnimCmd_CLAMPERL_1:: @ 8308630 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_HUNTAIL_1:: @ 8308648 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_GOREBYSS_1:: @ 8308660 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ABSOL_1:: @ 8308678 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SHUPPET_1:: @ 8308690 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_BANETTE_1:: @ 83086B0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SEVIPER_1:: @ 83086D0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_ZANGOOSE_1:: @ 83086F0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 50 + obj_image_anim_end + + .align 2 +gAnimCmd_RELICANTH_1:: @ 8308710 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ARON_1:: @ 8308728 + obj_image_anim_frame 0, 33 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 33 + obj_image_anim_frame 1, 33 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_LAIRON_1:: @ 8308740 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 1, 29 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 29 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_AGGRON_1:: @ 8308758 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 44 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_CASTFORM_0:: @ 8308768 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_CASTFORM_1:: @ 8308770 + obj_image_anim_frame 1, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_CASTFORM_2:: @ 8308778 + obj_image_anim_frame 2, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_CASTFORM_3:: @ 8308780 + obj_image_anim_frame 3, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_VOLBEAT_1:: @ 8308788 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 11 + obj_image_anim_frame 0, 5 + obj_image_anim_end + + .align 2 +gAnimCmd_ILLUMISE_1:: @ 83087A8 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 22 + obj_image_anim_frame 0, 11 + obj_image_anim_end + + .align 2 +gAnimCmd_LILEEP_1:: @ 83087C0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_CRADILY_1:: @ 83087D8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ANORITH_1:: @ 83087F8 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_ARMALDO_1:: @ 8308818 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_RALTS_1:: @ 8308830 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 25 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_KIRLIA_1:: @ 8308840 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 39 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GARDEVOIR_1:: @ 8308850 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 1, 3 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_BAGON_1:: @ 8308888 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SHELGON_1:: @ 83088A0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_SALAMENCE_1:: @ 83088B8 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_BELDUM_1:: @ 83088D0 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_METANG_1:: @ 83088E8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_end + + .align 2 +gAnimCmd_METAGROSS_1:: @ 8308900 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_end + + .align 2 +gAnimCmd_REGIROCK_1:: @ 8308918 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_REGIROCK_2:: @ 8308930 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_REGICE_1:: @ 8308944 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 18 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_REGISTEEL_1:: @ 830895C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_REGISTEEL_2:: @ 8308974 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_KYOGRE_1:: @ 8308988 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_KYOGRE_2:: @ 83089A0 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_GROUDON_1:: @ 83089B4 + obj_image_anim_frame 0, 11 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 20 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_GROUDON_2:: @ 83089CC + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_RAYQUAZA_1:: @ 83089E0 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 1, 8 + obj_image_anim_frame 0, 22 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_RAYQUAZA_2:: @ 83089F8 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_LATIAS_1:: @ 8308A0C + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LATIAS_2:: @ 8308A24 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_LATIOS_1:: @ 8308A38 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_LATIOS_2:: @ 8308A50 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_JIRACHI_1:: @ 8308A64 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 1, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_end + + .align 2 +gAnimCmd_JIRACHI_2:: @ 8308A90 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_DEOXYS_1:: @ 8308AA4 + obj_image_anim_frame 0, 16 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 26 + obj_image_anim_frame 1, 16 + obj_image_anim_frame 0, 16 + obj_image_anim_end + + .align 2 +gAnimCmd_DEOXYS_2:: @ 8308ABC + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_frame 0, 20 + obj_image_anim_frame 2, 20 + obj_image_anim_end + + .align 2 +gAnimCmd_CHIMECHO_1:: @ 8308AD0 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_frame 1, 15 + obj_image_anim_frame 0, 15 + obj_image_anim_end + + .align 2 +gAnimCmd_EGG_1:: @ 8308AF8 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 1, 6 + obj_image_anim_frame 2, 6 + obj_image_anim_frame 3, 6 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_B_1:: @ 8308B0C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_C_1:: @ 8308B1C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_D_1:: @ 8308B2C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_E_1:: @ 8308B3C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_F_1:: @ 8308B4C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_G_1:: @ 8308B5C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_H_1:: @ 8308B6C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_I_1:: @ 8308B7C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_J_1:: @ 8308B8C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_K_1:: @ 8308B9C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_L_1:: @ 8308BAC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_M_1:: @ 8308BBC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_N_1:: @ 8308BCC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_O_1:: @ 8308BDC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_P_1:: @ 8308BEC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_Q_1:: @ 8308BFC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_R_1:: @ 8308C0C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_S_1:: @ 8308C1C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_T_1:: @ 8308C2C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_U_1:: @ 8308C3C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_V_1:: @ 8308C4C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_W_1:: @ 8308C5C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_X_1:: @ 8308C6C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_Y_1:: @ 8308C7C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_Z_1:: @ 8308C8C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_EMARK_1:: @ 8308C9C + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnimCmd_UNOWN_QMARK_1:: @ 8308CAC + obj_image_anim_frame 0, 30 + obj_image_anim_frame 1, 30 + obj_image_anim_frame 0, 1 + obj_image_anim_end + + .align 2 +gAnims_NONE:: @ 8308CBC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NONE_1 + + .align 2 +gAnims_BULBASAUR:: @ 8308CC4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BULBASAUR_1 + + .align 2 +gAnims_IVYSAUR:: @ 8308CCC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_IVYSAUR_1 + + .align 2 +gAnims_VENUSAUR:: @ 8308CD4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VENUSAUR_1 + + .align 2 +gAnims_CHARMANDER:: @ 8308CDC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHARMANDER_1 + + .align 2 +gAnims_CHARMELEON:: @ 8308CE4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHARMELEON_1 + + .align 2 +gAnims_CHARIZARD:: @ 8308CEC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHARIZARD_1 + + .align 2 +gAnims_SQUIRTLE:: @ 8308CF4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SQUIRTLE_1 + + .align 2 +gAnims_WARTORTLE:: @ 8308CFC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WARTORTLE_1 + + .align 2 +gAnims_BLASTOISE:: @ 8308D04 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BLASTOISE_1 + + .align 2 +gAnims_CATERPIE:: @ 8308D0C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CATERPIE_1 + + .align 2 +gAnims_METAPOD:: @ 8308D14 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_METAPOD_1 + + .align 2 +gAnims_BUTTERFREE:: @ 8308D1C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BUTTERFREE_1 + + .align 2 +gAnims_WEEDLE:: @ 8308D24 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WEEDLE_1 + + .align 2 +gAnims_KAKUNA:: @ 8308D2C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KAKUNA_1 + + .align 2 +gAnims_BEEDRILL:: @ 8308D34 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BEEDRILL_1 + + .align 2 +gAnims_PIDGEY:: @ 8308D3C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PIDGEY_1 + + .align 2 +gAnims_PIDGEOTTO:: @ 8308D44 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PIDGEOTTO_1 + + .align 2 +gAnims_PIDGEOT:: @ 8308D4C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PIDGEOT_1 + + .align 2 +gAnims_RATTATA:: @ 8308D54 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RATTATA_1 + + .align 2 +gAnims_RATICATE:: @ 8308D5C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RATICATE_1 + + .align 2 +gAnims_SPEAROW:: @ 8308D64 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SPEAROW_1 + + .align 2 +gAnims_FEAROW:: @ 8308D6C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FEAROW_1 + + .align 2 +gAnims_EKANS:: @ 8308D74 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_EKANS_1 + + .align 2 +gAnims_ARBOK:: @ 8308D7C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ARBOK_1 + + .align 2 +gAnims_PIKACHU:: @ 8308D84 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PIKACHU_1 + .4byte gAnimCmd_PIKACHU_2 + + .align 2 +gAnims_RAICHU:: @ 8308D90 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RAICHU_1 + .4byte gAnimCmd_RAICHU_2 + + .align 2 +gAnims_SANDSHREW:: @ 8308D9C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SANDSHREW_1 + .4byte gAnimCmd_SANDSHREW_2 + + .align 2 +gAnims_SANDSLASH:: @ 8308DA8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SANDSLASH_1 + .4byte gAnimCmd_SANDSLASH_2 + + .align 2 +gAnims_NIDORAN_F:: @ 8308DB4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NIDORAN_F_1 + + .align 2 +gAnims_NIDORINA:: @ 8308DBC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NIDORINA_1 + + .align 2 +gAnims_NIDOQUEEN:: @ 8308DC4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NIDOQUEEN_1 + + .align 2 +gAnims_NIDORAN_M:: @ 8308DCC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NIDORAN_M_1 + + .align 2 +gAnims_NIDORINO:: @ 8308DD4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NIDORINO_1 + + .align 2 +gAnims_NIDOKING:: @ 8308DDC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NIDOKING_1 + + .align 2 +gAnims_CLEFAIRY:: @ 8308DE4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CLEFAIRY_1 + + .align 2 +gAnims_CLEFABLE:: @ 8308DEC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CLEFABLE_1 + + .align 2 +gAnims_VULPIX:: @ 8308DF4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VULPIX_1 + .4byte gAnimCmd_VULPIX_2 + + .align 2 +gAnims_NINETALES:: @ 8308E00 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NINETALES_1 + .4byte gAnimCmd_NINETALES_2 + + .align 2 +gAnims_JIGGLYPUFF:: @ 8308E0C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_JIGGLYPUFF_1 + .4byte gAnimCmd_JIGGLYPUFF_2 + + .align 2 +gAnims_WIGGLYTUFF:: @ 8308E18 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WIGGLYTUFF_1 + .4byte gAnimCmd_WIGGLYTUFF_2 + + .align 2 +gAnims_ZUBAT:: @ 8308E24 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ZUBAT_1 + + .align 2 +gAnims_GOLBAT:: @ 8308E2C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GOLBAT_1 + + .align 2 +gAnims_ODDISH:: @ 8308E34 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ODDISH_1 + + .align 2 +gAnims_GLOOM:: @ 8308E3C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GLOOM_1 + + .align 2 +gAnims_VILEPLUME:: @ 8308E44 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VILEPLUME_1 + + .align 2 +gAnims_PARAS:: @ 8308E4C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PARAS_1 + + .align 2 +gAnims_PARASECT:: @ 8308E54 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PARASECT_1 + + .align 2 +gAnims_VENONAT:: @ 8308E5C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VENONAT_1 + + .align 2 +gAnims_VENOMOTH:: @ 8308E64 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VENOMOTH_1 + + .align 2 +gAnims_DIGLETT:: @ 8308E6C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DIGLETT_1 + + .align 2 +gAnims_DUGTRIO:: @ 8308E74 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DUGTRIO_1 + + .align 2 +gAnims_MEOWTH:: @ 8308E7C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MEOWTH_1 + + .align 2 +gAnims_PERSIAN:: @ 8308E84 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PERSIAN_1 + + .align 2 +gAnims_PSYDUCK:: @ 8308E8C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PSYDUCK_1 + .4byte gAnimCmd_PSYDUCK_2 + + .align 2 +gAnims_GOLDUCK:: @ 8308E98 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GOLDUCK_1 + .4byte gAnimCmd_GOLDUCK_2 + + .align 2 +gAnims_MANKEY:: @ 8308EA4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MANKEY_1 + + .align 2 +gAnims_PRIMEAPE:: @ 8308EAC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PRIMEAPE_1 + + .align 2 +gAnims_GROWLITHE:: @ 8308EB4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GROWLITHE_1 + + .align 2 +gAnims_ARCANINE:: @ 8308EBC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ARCANINE_1 + + .align 2 +gAnims_POLIWAG:: @ 8308EC4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_POLIWAG_1 + + .align 2 +gAnims_POLIWHIRL:: @ 8308ECC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_POLIWHIRL_1 + + .align 2 +gAnims_POLIWRATH:: @ 8308ED4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_POLIWRATH_1 + + .align 2 +gAnims_ABRA:: @ 8308EDC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ABRA_1 + + .align 2 +gAnims_KADABRA:: @ 8308EE4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KADABRA_1 + + .align 2 +gAnims_ALAKAZAM:: @ 8308EEC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ALAKAZAM_1 + + .align 2 +gAnims_MACHOP:: @ 8308EF4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MACHOP_1 + + .align 2 +gAnims_MACHOKE:: @ 8308EFC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MACHOKE_1 + + .align 2 +gAnims_MACHAMP:: @ 8308F04 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MACHAMP_1 + + .align 2 +gAnims_BELLSPROUT:: @ 8308F0C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BELLSPROUT_1 + + .align 2 +gAnims_WEEPINBELL:: @ 8308F14 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WEEPINBELL_1 + + .align 2 +gAnims_VICTREEBEL:: @ 8308F1C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VICTREEBEL_1 + + .align 2 +gAnims_TENTACOOL:: @ 8308F24 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TENTACOOL_1 + + .align 2 +gAnims_TENTACRUEL:: @ 8308F2C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TENTACRUEL_1 + + .align 2 +gAnims_GEODUDE:: @ 8308F34 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GEODUDE_1 + + .align 2 +gAnims_GRAVELER:: @ 8308F3C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GRAVELER_1 + + .align 2 +gAnims_GOLEM:: @ 8308F44 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GOLEM_1 + + .align 2 +gAnims_PONYTA:: @ 8308F4C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PONYTA_1 + + .align 2 +gAnims_RAPIDASH:: @ 8308F54 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RAPIDASH_1 + + .align 2 +gAnims_SLOWPOKE:: @ 8308F5C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SLOWPOKE_1 + + .align 2 +gAnims_SLOWBRO:: @ 8308F64 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SLOWBRO_1 + + .align 2 +gAnims_MAGNEMITE:: @ 8308F6C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAGNEMITE_1 + + .align 2 +gAnims_MAGNETON:: @ 8308F74 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAGNETON_1 + + .align 2 +gAnims_FARFETCHD:: @ 8308F7C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FARFETCHD_1 + + .align 2 +gAnims_DODUO:: @ 8308F84 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DODUO_1 + + .align 2 +gAnims_DODRIO:: @ 8308F8C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DODRIO_1 + + .align 2 +gAnims_SEEL:: @ 8308F94 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SEEL_1 + + .align 2 +gAnims_DEWGONG:: @ 8308F9C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DEWGONG_1 + + .align 2 +gAnims_GRIMER:: @ 8308FA4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GRIMER_1 + .4byte gAnimCmd_GRIMER_2 + + .align 2 +gAnims_MUK:: @ 8308FB0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MUK_1 + .4byte gAnimCmd_MUK_2 + + .align 2 +gAnims_SHELLDER:: @ 8308FBC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHELLDER_1 + + .align 2 +gAnims_CLOYSTER:: @ 8308FC4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CLOYSTER_1 + + .align 2 +gAnims_GASTLY:: @ 8308FCC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GASTLY_1 + + .align 2 +gAnims_HAUNTER:: @ 8308FD4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HAUNTER_1 + + .align 2 +gAnims_GENGAR:: @ 8308FDC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GENGAR_1 + + .align 2 +gAnims_ONIX:: @ 8308FE4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ONIX_1 + + .align 2 +gAnims_DROWZEE:: @ 8308FEC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DROWZEE_1 + + .align 2 +gAnims_HYPNO:: @ 8308FF4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HYPNO_1 + + .align 2 +gAnims_KRABBY:: @ 8308FFC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KRABBY_1 + + .align 2 +gAnims_KINGLER:: @ 8309004 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KINGLER_1 + + .align 2 +gAnims_VOLTORB:: @ 830900C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VOLTORB_1 + + .align 2 +gAnims_ELECTRODE:: @ 8309014 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ELECTRODE_1 + + .align 2 +gAnims_EXEGGCUTE:: @ 830901C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_EXEGGCUTE_1 + + .align 2 +gAnims_EXEGGUTOR:: @ 8309024 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_EXEGGUTOR_1 + + .align 2 +gAnims_CUBONE:: @ 830902C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CUBONE_1 + + .align 2 +gAnims_MAROWAK:: @ 8309034 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAROWAK_1 + + .align 2 +gAnims_HITMONLEE:: @ 830903C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HITMONLEE_1 + + .align 2 +gAnims_HITMONCHAN:: @ 8309044 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HITMONCHAN_1 + + .align 2 +gAnims_LICKITUNG:: @ 830904C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LICKITUNG_1 + + .align 2 +gAnims_KOFFING:: @ 8309054 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KOFFING_1 + .4byte gAnimCmd_KOFFING_2 + + .align 2 +gAnims_WEEZING:: @ 8309060 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WEEZING_1 + .4byte gAnimCmd_WEEZING_2 + + .align 2 +gAnims_RHYHORN:: @ 830906C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RHYHORN_1 + .4byte gAnimCmd_RHYHORN_2 + + .align 2 +gAnims_RHYDON:: @ 8309078 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RHYDON_1 + .4byte gAnimCmd_RHYDON_2 + + .align 2 +gAnims_CHANSEY:: @ 8309084 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHANSEY_1 + + .align 2 +gAnims_TANGELA:: @ 830908C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TANGELA_1 + + .align 2 +gAnims_KANGASKHAN:: @ 8309094 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KANGASKHAN_1 + + .align 2 +gAnims_HORSEA:: @ 830909C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HORSEA_1 + .4byte gAnimCmd_HORSEA_2 + + .align 2 +gAnims_SEADRA:: @ 83090A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SEADRA_1 + .4byte gAnimCmd_SEADRA_2 + + .align 2 +gAnims_GOLDEEN:: @ 83090B4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GOLDEEN_1 + + .align 2 +gAnims_SEAKING:: @ 83090BC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SEAKING_1 + + .align 2 +gAnims_STARYU:: @ 83090C4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_STARYU_1 + .4byte gAnimCmd_STARYU_2 + + .align 2 +gAnims_STARMIE:: @ 83090D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_STARMIE_1 + .4byte gAnimCmd_STARMIE_2 + + .align 2 +gAnims_MR_MIME:: @ 83090DC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MR_MIME_1 + + .align 2 +gAnims_SCYTHER:: @ 83090E4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SCYTHER_1 + + .align 2 +gAnims_JYNX:: @ 83090EC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_JYNX_1 + + .align 2 +gAnims_ELECTABUZZ:: @ 83090F4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ELECTABUZZ_1 + + .align 2 +gAnims_MAGMAR:: @ 83090FC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAGMAR_1 + + .align 2 +gAnims_PINSIR:: @ 8309104 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PINSIR_1 + .4byte gAnimCmd_PINSIR_2 + + .align 2 +gAnims_TAUROS:: @ 8309110 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TAUROS_1 + + .align 2 +gAnims_MAGIKARP:: @ 8309118 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAGIKARP_1 + + .align 2 +gAnims_GYARADOS:: @ 8309120 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GYARADOS_1 + + .align 2 +gAnims_LAPRAS:: @ 8309128 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LAPRAS_1 + + .align 2 +gAnims_DITTO:: @ 8309130 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DITTO_1 + + .align 2 +gAnims_EEVEE:: @ 8309138 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_EEVEE_1 + + .align 2 +gAnims_VAPOREON:: @ 8309140 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VAPOREON_1 + + .align 2 +gAnims_JOLTEON:: @ 8309148 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_JOLTEON_1 + + .align 2 +gAnims_FLAREON:: @ 8309150 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FLAREON_1 + + .align 2 +gAnims_PORYGON:: @ 8309158 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PORYGON_1 + + .align 2 +gAnims_OMANYTE:: @ 8309160 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_OMANYTE_1 + + .align 2 +gAnims_OMASTAR:: @ 8309168 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_OMASTAR_1 + + .align 2 +gAnims_KABUTO:: @ 8309170 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KABUTO_1 + + .align 2 +gAnims_KABUTOPS:: @ 8309178 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KABUTOPS_1 + + .align 2 +gAnims_AERODACTYL:: @ 8309180 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_AERODACTYL_1 + + .align 2 +gAnims_SNORLAX:: @ 8309188 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SNORLAX_1 + + .align 2 +gAnims_ARTICUNO:: @ 8309190 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ARTICUNO_1 + + .align 2 +gAnims_ZAPDOS:: @ 8309198 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ZAPDOS_1 + + .align 2 +gAnims_MOLTRES:: @ 83091A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MOLTRES_1 + + .align 2 +gAnims_DRATINI:: @ 83091A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DRATINI_1 + + .align 2 +gAnims_DRAGONAIR:: @ 83091B0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DRAGONAIR_1 + + .align 2 +gAnims_DRAGONITE:: @ 83091B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DRAGONITE_1 + + .align 2 +gAnims_MEWTWO:: @ 83091C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MEWTWO_1 + + .align 2 +gAnims_MEW:: @ 83091C8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MEW_1 + + .align 2 +gAnims_CHIKORITA:: @ 83091D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHIKORITA_1 + + .align 2 +gAnims_BAYLEEF:: @ 83091D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BAYLEEF_1 + + .align 2 +gAnims_MEGANIUM:: @ 83091E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MEGANIUM_1 + + .align 2 +gAnims_CYNDAQUIL:: @ 83091E8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CYNDAQUIL_1 + + .align 2 +gAnims_QUILAVA:: @ 83091F0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_QUILAVA_1 + + .align 2 +gAnims_TYPHLOSION:: @ 83091F8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TYPHLOSION_1 + + .align 2 +gAnims_TOTODILE:: @ 8309200 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TOTODILE_1 + + .align 2 +gAnims_CROCONAW:: @ 8309208 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CROCONAW_1 + + .align 2 +gAnims_FERALIGATR:: @ 8309210 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FERALIGATR_1 + + .align 2 +gAnims_SENTRET:: @ 8309218 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SENTRET_1 + + .align 2 +gAnims_FURRET:: @ 8309220 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FURRET_1 + + .align 2 +gAnims_HOOTHOOT:: @ 8309228 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HOOTHOOT_1 + + .align 2 +gAnims_NOCTOWL:: @ 8309230 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NOCTOWL_1 + + .align 2 +gAnims_LEDYBA:: @ 8309238 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LEDYBA_1 + + .align 2 +gAnims_LEDIAN:: @ 8309240 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LEDIAN_1 + + .align 2 +gAnims_SPINARAK:: @ 8309248 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SPINARAK_1 + + .align 2 +gAnims_ARIADOS:: @ 8309250 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ARIADOS_1 + + .align 2 +gAnims_CROBAT:: @ 8309258 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CROBAT_1 + + .align 2 +gAnims_CHINCHOU:: @ 8309260 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHINCHOU_1 + .4byte gAnimCmd_CHINCHOU_2 + + .align 2 +gAnims_LANTURN:: @ 830926C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LANTURN_1 + .4byte gAnimCmd_LANTURN_2 + + .align 2 +gAnims_PICHU:: @ 8309278 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PICHU_1 + .4byte gAnimCmd_PICHU_2 + + .align 2 +gAnims_CLEFFA:: @ 8309284 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CLEFFA_1 + + .align 2 +gAnims_IGGLYBUFF:: @ 830928C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_IGGLYBUFF_1 + .4byte gAnimCmd_IGGLYBUFF_2 + + .align 2 +gAnims_TOGEPI:: @ 8309298 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TOGEPI_1 + + .align 2 +gAnims_TOGETIC:: @ 83092A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TOGETIC_1 + + .align 2 +gAnims_NATU:: @ 83092A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NATU_1 + .4byte gAnimCmd_NATU_2 + + .align 2 +gAnims_XATU:: @ 83092B4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_XATU_1 + .4byte gAnimCmd_XATU_2 + + .align 2 +gAnims_MAREEP:: @ 83092C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAREEP_1 + + .align 2 +gAnims_FLAAFFY:: @ 83092C8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FLAAFFY_1 + + .align 2 +gAnims_AMPHAROS:: @ 83092D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_AMPHAROS_1 + + .align 2 +gAnims_BELLOSSOM:: @ 83092D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BELLOSSOM_1 + + .align 2 +gAnims_MARILL:: @ 83092E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MARILL_1 + + .align 2 +gAnims_AZUMARILL:: @ 83092E8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_AZUMARILL_1 + + .align 2 +gAnims_SUDOWOODO:: @ 83092F0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SUDOWOODO_1 + + .align 2 +gAnims_POLITOED:: @ 83092F8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_POLITOED_1 + + .align 2 +gAnims_HOPPIP:: @ 8309300 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HOPPIP_1 + + .align 2 +gAnims_SKIPLOOM:: @ 8309308 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SKIPLOOM_1 + + .align 2 +gAnims_JUMPLUFF:: @ 8309310 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_JUMPLUFF_1 + + .align 2 +gAnims_AIPOM:: @ 8309318 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_AIPOM_1 + + .align 2 +gAnims_SUNKERN:: @ 8309320 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SUNKERN_1 + + .align 2 +gAnims_SUNFLORA:: @ 8309328 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SUNFLORA_1 + + .align 2 +gAnims_YANMA:: @ 8309330 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_YANMA_1 + + .align 2 +gAnims_WOOPER:: @ 8309338 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WOOPER_1 + + .align 2 +gAnims_QUAGSIRE:: @ 8309340 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_QUAGSIRE_1 + + .align 2 +gAnims_ESPEON:: @ 8309348 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ESPEON_1 + + .align 2 +gAnims_UMBREON:: @ 8309350 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UMBREON_1 + + .align 2 +gAnims_MURKROW:: @ 8309358 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MURKROW_1 + + .align 2 +gAnims_SLOWKING:: @ 8309360 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SLOWKING_1 + + .align 2 +gAnims_MISDREAVUS:: @ 8309368 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MISDREAVUS_1 + + .align 2 +gAnims_UNOWN:: @ 8309370 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_1 + + .align 2 +gAnims_WOBBUFFET:: @ 8309378 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WOBBUFFET_1 + .4byte gAnimCmd_WOBBUFFET_2 + + .align 2 +gAnims_GIRAFARIG:: @ 8309384 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GIRAFARIG_1 + .4byte gAnimCmd_GIRAFARIG_2 + + .align 2 +gAnims_PINECO:: @ 8309390 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PINECO_1 + + .align 2 +gAnims_FORRETRESS:: @ 8309398 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FORRETRESS_1 + + .align 2 +gAnims_DUNSPARCE:: @ 83093A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DUNSPARCE_1 + + .align 2 +gAnims_GLIGAR:: @ 83093A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GLIGAR_1 + + .align 2 +gAnims_STEELIX:: @ 83093B0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_STEELIX_1 + + .align 2 +gAnims_SNUBBULL:: @ 83093B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SNUBBULL_1 + + .align 2 +gAnims_GRANBULL:: @ 83093C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GRANBULL_1 + + .align 2 +gAnims_QWILFISH:: @ 83093C8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_QWILFISH_1 + + .align 2 +gAnims_SCIZOR:: @ 83093D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SCIZOR_1 + + .align 2 +gAnims_SHUCKLE:: @ 83093D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHUCKLE_1 + + .align 2 +gAnims_HERACROSS:: @ 83093E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HERACROSS_1 + .4byte gAnimCmd_HERACROSS_2 + + .align 2 +gAnims_SNEASEL:: @ 83093EC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SNEASEL_1 + + .align 2 +gAnims_TEDDIURSA:: @ 83093F4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TEDDIURSA_1 + + .align 2 +gAnims_URSARING:: @ 83093FC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_URSARING_1 + + .align 2 +gAnims_SLUGMA:: @ 8309404 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SLUGMA_1 + .4byte gAnimCmd_SLUGMA_2 + + .align 2 +gAnims_MAGCARGO:: @ 8309410 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAGCARGO_1 + .4byte gAnimCmd_MAGCARGO_2 + + .align 2 +gAnims_SWINUB:: @ 830941C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SWINUB_1 + + .align 2 +gAnims_PILOSWINE:: @ 8309424 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PILOSWINE_1 + + .align 2 +gAnims_CORSOLA:: @ 830942C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CORSOLA_1 + .4byte gAnimCmd_CORSOLA_2 + + .align 2 +gAnims_REMORAID:: @ 8309438 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_REMORAID_1 + + .align 2 +gAnims_OCTILLERY:: @ 8309440 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_OCTILLERY_1 + + .align 2 +gAnims_DELIBIRD:: @ 8309448 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DELIBIRD_1 + + .align 2 +gAnims_MANTINE:: @ 8309450 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MANTINE_1 + + .align 2 +gAnims_SKARMORY:: @ 8309458 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SKARMORY_1 + .4byte gAnimCmd_SKARMORY_2 + + .align 2 +gAnims_HOUNDOUR:: @ 8309464 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HOUNDOUR_1 + + .align 2 +gAnims_HOUNDOOM:: @ 830946C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HOUNDOOM_1 + + .align 2 +gAnims_KINGDRA:: @ 8309474 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KINGDRA_1 + .4byte gAnimCmd_KINGDRA_2 + + .align 2 +gAnims_PHANPY:: @ 8309480 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PHANPY_1 + .4byte gAnimCmd_PHANPY_2 + + .align 2 +gAnims_DONPHAN:: @ 830948C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DONPHAN_1 + .4byte gAnimCmd_DONPHAN_2 + + .align 2 +gAnims_PORYGON2:: @ 8309498 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PORYGON2_1 + + .align 2 +gAnims_STANTLER:: @ 83094A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_STANTLER_1 + + .align 2 +gAnims_SMEARGLE:: @ 83094A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SMEARGLE_1 + + .align 2 +gAnims_TYROGUE:: @ 83094B0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TYROGUE_1 + + .align 2 +gAnims_HITMONTOP:: @ 83094B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HITMONTOP_1 + + .align 2 +gAnims_SMOOCHUM:: @ 83094C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SMOOCHUM_1 + + .align 2 +gAnims_ELEKID:: @ 83094C8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ELEKID_1 + + .align 2 +gAnims_MAGBY:: @ 83094D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAGBY_1 + + .align 2 +gAnims_MILTANK:: @ 83094D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MILTANK_1 + + .align 2 +gAnims_BLISSEY:: @ 83094E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BLISSEY_1 + + .align 2 +gAnims_RAIKOU:: @ 83094E8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RAIKOU_1 + + .align 2 +gAnims_ENTEI:: @ 83094F0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ENTEI_1 + + .align 2 +gAnims_SUICUNE:: @ 83094F8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SUICUNE_1 + + .align 2 +gAnims_LARVITAR:: @ 8309500 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LARVITAR_1 + + .align 2 +gAnims_PUPITAR:: @ 8309508 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PUPITAR_1 + + .align 2 +gAnims_TYRANITAR:: @ 8309510 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TYRANITAR_1 + + .align 2 +gAnims_LUGIA:: @ 8309518 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LUGIA_1 + + .align 2 +gAnims_HO_OH:: @ 8309520 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HO_OH_1 + + .align 2 +gAnims_CELEBI:: @ 8309528 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CELEBI_1 + + .align 2 +gAnims_OLD_UNOWN_B:: @ 8309530 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_OLD_UNOWN_B_1 + + .align 2 +gAnims_TREECKO:: @ 8309538 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TREECKO_1 + + .align 2 +gAnims_GROVYLE:: @ 8309540 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GROVYLE_1 + + .align 2 +gAnims_SCEPTILE:: @ 8309548 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SCEPTILE_1 + + .align 2 +gAnims_TORCHIC:: @ 8309550 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TORCHIC_1 + + .align 2 +gAnims_COMBUSKEN:: @ 8309558 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_COMBUSKEN_1 + + .align 2 +gAnims_BLAZIKEN:: @ 8309560 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BLAZIKEN_1 + .4byte gAnimCmd_BLAZIKEN_2 + .4byte gAnimCmd_BLAZIKEN_3 + .4byte gAnimCmd_BLAZIKEN_4 + + .align 2 +gAnims_MUDKIP:: @ 8309574 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MUDKIP_1 + + .align 2 +gAnims_MARSHTOMP:: @ 830957C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MARSHTOMP_1 + + .align 2 +gAnims_SWAMPERT:: @ 8309584 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SWAMPERT_1 + + .align 2 +gAnims_POOCHYENA:: @ 830958C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_POOCHYENA_1 + + .align 2 +gAnims_MIGHTYENA:: @ 8309594 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MIGHTYENA_1 + + .align 2 +gAnims_ZIGZAGOON:: @ 830959C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ZIGZAGOON_1 + + .align 2 +gAnims_LINOONE:: @ 83095A4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LINOONE_1 + + .align 2 +gAnims_WURMPLE:: @ 83095AC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WURMPLE_1 + + .align 2 +gAnims_SILCOON:: @ 83095B4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SILCOON_1 + .4byte gAnimCmd_SILCOON_2 + + .align 2 +gAnims_BEAUTIFLY:: @ 83095C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BEAUTIFLY_1 + .4byte gAnimCmd_BEAUTIFLY_2 + + .align 2 +gAnims_CASCOON:: @ 83095CC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CASCOON_1 + .4byte gAnimCmd_CASCOON_2 + + .align 2 +gAnims_DUSTOX:: @ 83095D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DUSTOX_1 + .4byte gAnimCmd_DUSTOX_2 + + .align 2 +gAnims_LOTAD:: @ 83095E4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LOTAD_1 + + .align 2 +gAnims_LOMBRE:: @ 83095EC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LOMBRE_1 + + .align 2 +gAnims_LUDICOLO:: @ 83095F4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LUDICOLO_1 + + .align 2 +gAnims_SEEDOT:: @ 83095FC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SEEDOT_1 + + .align 2 +gAnims_NUZLEAF:: @ 8309604 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NUZLEAF_1 + + .align 2 +gAnims_SHIFTRY:: @ 830960C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHIFTRY_1 + + .align 2 +gAnims_NINCADA:: @ 8309614 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NINCADA_1 + + .align 2 +gAnims_NINJASK:: @ 830961C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NINJASK_1 + + .align 2 +gAnims_SHEDINJA:: @ 8309624 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHEDINJA_1 + + .align 2 +gAnims_TAILLOW:: @ 830962C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TAILLOW_1 + + .align 2 +gAnims_SWELLOW:: @ 8309634 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SWELLOW_1 + + .align 2 +gAnims_SHROOMISH:: @ 830963C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHROOMISH_1 + + .align 2 +gAnims_BRELOOM:: @ 8309644 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BRELOOM_1 + + .align 2 +gAnims_SPINDA:: @ 830964C + .4byte gAnimCmd_General_Frame0 + + .align 2 +gAnims_WINGULL:: @ 8309650 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WINGULL_1 + + .align 2 +gAnims_PELIPPER:: @ 8309658 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PELIPPER_1 + + .align 2 +gAnims_SURSKIT:: @ 8309660 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SURSKIT_1 + .4byte gAnimCmd_SURSKIT_2 + + .align 2 +gAnims_MASQUERAIN:: @ 830966C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MASQUERAIN_1 + .4byte gAnimCmd_MASQUERAIN_2 + + .align 2 +gAnims_WAILMER:: @ 8309678 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WAILMER_1 + + .align 2 +gAnims_WAILORD:: @ 8309680 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WAILORD_1 + + .align 2 +gAnims_SKITTY:: @ 8309688 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SKITTY_1 + + .align 2 +gAnims_DELCATTY:: @ 8309690 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DELCATTY_1 + + .align 2 +gAnims_KECLEON:: @ 8309698 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KECLEON_1 + + .align 2 +gAnims_BALTOY:: @ 83096A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BALTOY_1 + + .align 2 +gAnims_CLAYDOL:: @ 83096A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CLAYDOL_1 + + .align 2 +gAnims_NOSEPASS:: @ 83096B0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NOSEPASS_1 + + .align 2 +gAnims_TORKOAL:: @ 83096B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TORKOAL_1 + + .align 2 +gAnims_SABLEYE:: @ 83096C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SABLEYE_1 + + .align 2 +gAnims_BARBOACH:: @ 83096C8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BARBOACH_1 + + .align 2 +gAnims_WHISCASH:: @ 83096D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WHISCASH_1 + + .align 2 +gAnims_LUVDISC:: @ 83096D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LUVDISC_1 + + .align 2 +gAnims_CORPHISH:: @ 83096E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CORPHISH_1 + + .align 2 +gAnims_CRAWDAUNT:: @ 83096E8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CRAWDAUNT_1 + + .align 2 +gAnims_FEEBAS:: @ 83096F0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FEEBAS_1 + + .align 2 +gAnims_MILOTIC:: @ 83096F8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MILOTIC_1 + + .align 2 +gAnims_CARVANHA:: @ 8309700 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CARVANHA_1 + + .align 2 +gAnims_SHARPEDO:: @ 8309708 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHARPEDO_1 + + .align 2 +gAnims_TRAPINCH:: @ 8309710 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TRAPINCH_1 + + .align 2 +gAnims_VIBRAVA:: @ 8309718 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VIBRAVA_1 + + .align 2 +gAnims_FLYGON:: @ 8309720 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_FLYGON_1 + + .align 2 +gAnims_MAKUHITA:: @ 8309728 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAKUHITA_1 + + .align 2 +gAnims_HARIYAMA:: @ 8309730 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HARIYAMA_1 + + .align 2 +gAnims_ELECTRIKE:: @ 8309738 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ELECTRIKE_1 + + .align 2 +gAnims_MANECTRIC:: @ 8309740 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MANECTRIC_1 + + .align 2 +gAnims_NUMEL:: @ 8309748 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_NUMEL_1 + + .align 2 +gAnims_CAMERUPT:: @ 8309750 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CAMERUPT_1 + + .align 2 +gAnims_SPHEAL:: @ 8309758 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SPHEAL_1 + + .align 2 +gAnims_SEALEO:: @ 8309760 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SEALEO_1 + + .align 2 +gAnims_WALREIN:: @ 8309768 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WALREIN_1 + + .align 2 +gAnims_CACNEA:: @ 8309770 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CACNEA_1 + + .align 2 +gAnims_CACTURNE:: @ 8309778 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CACTURNE_1 + + .align 2 +gAnims_SNORUNT:: @ 8309780 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SNORUNT_1 + + .align 2 +gAnims_GLALIE:: @ 8309788 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GLALIE_1 + + .align 2 +gAnims_LUNATONE:: @ 8309790 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LUNATONE_1 + .4byte gAnimCmd_LUNATONE_2 + + .align 2 +gAnims_SOLROCK:: @ 830979C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SOLROCK_1 + .4byte gAnimCmd_SOLROCK_2 + + .align 2 +gAnims_AZURILL:: @ 83097A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_AZURILL_1 + + .align 2 +gAnims_SPOINK:: @ 83097B0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SPOINK_1 + + .align 2 +gAnims_GRUMPIG:: @ 83097B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GRUMPIG_1 + + .align 2 +gAnims_PLUSLE:: @ 83097C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_PLUSLE_1 + + .align 2 +gAnims_MINUN:: @ 83097C8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MINUN_1 + + .align 2 +gAnims_MAWILE:: @ 83097D0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MAWILE_1 + + .align 2 +gAnims_MEDITITE:: @ 83097D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MEDITITE_1 + + .align 2 +gAnims_MEDICHAM:: @ 83097E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_MEDICHAM_1 + + .align 2 +gAnims_SWABLU:: @ 83097E8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SWABLU_1 + .4byte gAnimCmd_SWABLU_2 + + .align 2 +gAnims_ALTARIA:: @ 83097F4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ALTARIA_1 + .4byte gAnimCmd_ALTARIA_2 + + .align 2 +gAnims_WYNAUT:: @ 8309800 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WYNAUT_1 + + .align 2 +gAnims_DUSKULL:: @ 8309808 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DUSKULL_1 + + .align 2 +gAnims_DUSCLOPS:: @ 8309810 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DUSCLOPS_1 + + .align 2 +gAnims_ROSELIA:: @ 8309818 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ROSELIA_1 + + .align 2 +gAnims_SLAKOTH:: @ 8309820 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SLAKOTH_1 + + .align 2 +gAnims_VIGOROTH:: @ 8309828 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VIGOROTH_1 + + .align 2 +gAnims_SLAKING:: @ 8309830 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SLAKING_1 + + .align 2 +gAnims_GULPIN:: @ 8309838 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GULPIN_1 + + .align 2 +gAnims_SWALOT:: @ 8309840 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SWALOT_1 + + .align 2 +gAnims_TROPIUS:: @ 8309848 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_TROPIUS_1 + + .align 2 +gAnims_WHISMUR:: @ 8309850 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_WHISMUR_1 + + .align 2 +gAnims_LOUDRED:: @ 8309858 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LOUDRED_1 + + .align 2 +gAnims_EXPLOUD:: @ 8309860 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_EXPLOUD_1 + + .align 2 +gAnims_CLAMPERL:: @ 8309868 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CLAMPERL_1 + + .align 2 +gAnims_HUNTAIL:: @ 8309870 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_HUNTAIL_1 + + .align 2 +gAnims_GOREBYSS:: @ 8309878 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GOREBYSS_1 + + .align 2 +gAnims_ABSOL:: @ 8309880 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ABSOL_1 + + .align 2 +gAnims_SHUPPET:: @ 8309888 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHUPPET_1 + + .align 2 +gAnims_BANETTE:: @ 8309890 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BANETTE_1 + + .align 2 +gAnims_SEVIPER:: @ 8309898 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SEVIPER_1 + + .align 2 +gAnims_ZANGOOSE:: @ 83098A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ZANGOOSE_1 + + .align 2 +gAnims_RELICANTH:: @ 83098A8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RELICANTH_1 + + .align 2 +gAnims_ARON:: @ 83098B0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ARON_1 + + .align 2 +gAnims_LAIRON:: @ 83098B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LAIRON_1 + + .align 2 +gAnims_AGGRON:: @ 83098C0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_AGGRON_1 + + .align 2 +gAnims_CASTFORM:: @ 83098C8 + .4byte gAnimCmd_CASTFORM_0 + .4byte gAnimCmd_CASTFORM_1 + .4byte gAnimCmd_CASTFORM_2 + .4byte gAnimCmd_CASTFORM_3 + + .align 2 +gAnims_VOLBEAT:: @ 83098D8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_VOLBEAT_1 + + .align 2 +gAnims_ILLUMISE:: @ 83098E0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ILLUMISE_1 + + .align 2 +gAnims_LILEEP:: @ 83098E8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LILEEP_1 + + .align 2 +gAnims_CRADILY:: @ 83098F0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CRADILY_1 + + .align 2 +gAnims_ANORITH:: @ 83098F8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ANORITH_1 + + .align 2 +gAnims_ARMALDO:: @ 8309900 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_ARMALDO_1 + + .align 2 +gAnims_RALTS:: @ 8309908 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RALTS_1 + + .align 2 +gAnims_KIRLIA:: @ 8309910 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KIRLIA_1 + + .align 2 +gAnims_GARDEVOIR:: @ 8309918 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GARDEVOIR_1 + + .align 2 +gAnims_BAGON:: @ 8309920 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BAGON_1 + + .align 2 +gAnims_SHELGON:: @ 8309928 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SHELGON_1 + + .align 2 +gAnims_SALAMENCE:: @ 8309930 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_SALAMENCE_1 + + .align 2 +gAnims_BELDUM:: @ 8309938 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_BELDUM_1 + + .align 2 +gAnims_METANG:: @ 8309940 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_METANG_1 + + .align 2 +gAnims_METAGROSS:: @ 8309948 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_METAGROSS_1 + + .align 2 +gAnims_REGIROCK:: @ 8309950 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_REGIROCK_1 + .4byte gAnimCmd_REGIROCK_2 + + .align 2 +gAnims_REGICE:: @ 830995C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_REGICE_1 + + .align 2 +gAnims_REGISTEEL:: @ 8309964 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_REGISTEEL_1 + .4byte gAnimCmd_REGISTEEL_2 + + .align 2 +gAnims_KYOGRE:: @ 8309970 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_KYOGRE_1 + .4byte gAnimCmd_KYOGRE_2 + + .align 2 +gAnims_GROUDON:: @ 830997C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_GROUDON_1 + .4byte gAnimCmd_GROUDON_2 + + .align 2 +gAnims_RAYQUAZA:: @ 8309988 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_RAYQUAZA_1 + .4byte gAnimCmd_RAYQUAZA_2 + + .align 2 +gAnims_LATIAS:: @ 8309994 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LATIAS_1 + .4byte gAnimCmd_LATIAS_2 + + .align 2 +gAnims_LATIOS:: @ 83099A0 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_LATIOS_1 + .4byte gAnimCmd_LATIOS_2 + + .align 2 +gAnims_JIRACHI:: @ 83099AC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_JIRACHI_1 + .4byte gAnimCmd_JIRACHI_2 + + .align 2 +gAnims_DEOXYS:: @ 83099B8 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_DEOXYS_1 + .4byte gAnimCmd_DEOXYS_2 + + .align 2 +gAnims_CHIMECHO:: @ 83099C4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_CHIMECHO_1 + + .align 2 +gAnims_EGG:: @ 83099CC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_EGG_1 + + .align 2 +gAnims_UNOWN_B:: @ 83099D4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_B_1 + + .align 2 +gAnims_UNOWN_C:: @ 83099DC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_C_1 + + .align 2 +gAnims_UNOWN_D:: @ 83099E4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_D_1 + + .align 2 +gAnims_UNOWN_E:: @ 83099EC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_E_1 + + .align 2 +gAnims_UNOWN_F:: @ 83099F4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_F_1 + + .align 2 +gAnims_UNOWN_G:: @ 83099FC + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_G_1 + + .align 2 +gAnims_UNOWN_H:: @ 8309A04 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_H_1 + + .align 2 +gAnims_UNOWN_I:: @ 8309A0C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_I_1 + + .align 2 +gAnims_UNOWN_J:: @ 8309A14 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_J_1 + + .align 2 +gAnims_UNOWN_K:: @ 8309A1C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_K_1 + + .align 2 +gAnims_UNOWN_L:: @ 8309A24 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_L_1 + + .align 2 +gAnims_UNOWN_M:: @ 8309A2C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_M_1 + + .align 2 +gAnims_UNOWN_N:: @ 8309A34 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_N_1 + + .align 2 +gAnims_UNOWN_O:: @ 8309A3C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_O_1 + + .align 2 +gAnims_UNOWN_P:: @ 8309A44 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_P_1 + + .align 2 +gAnims_UNOWN_Q:: @ 8309A4C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_Q_1 + + .align 2 +gAnims_UNOWN_R:: @ 8309A54 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_R_1 + + .align 2 +gAnims_UNOWN_S:: @ 8309A5C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_S_1 + + .align 2 +gAnims_UNOWN_T:: @ 8309A64 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_T_1 + + .align 2 +gAnims_UNOWN_U:: @ 8309A6C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_U_1 + + .align 2 +gAnims_UNOWN_V:: @ 8309A74 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_V_1 + + .align 2 +gAnims_UNOWN_W:: @ 8309A7C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_W_1 + + .align 2 +gAnims_UNOWN_X:: @ 8309A84 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_X_1 + + .align 2 +gAnims_UNOWN_Y:: @ 8309A8C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_Y_1 + + .align 2 +gAnims_UNOWN_Z:: @ 8309A94 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_Z_1 + + .align 2 +gAnims_UNOWN_EMARK:: @ 8309A9C + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_EMARK_1 + + .align 2 +gAnims_UNOWN_QMARK:: @ 8309AA4 + .4byte gAnimCmd_General_Frame0 + .4byte gAnimCmd_UNOWN_QMARK_1 + + .align 2 +gMonAnimationsSpriteAnimsPtrTable:: @ 8309AAC + .4byte gAnims_NONE + .4byte gAnims_BULBASAUR + .4byte gAnims_IVYSAUR + .4byte gAnims_VENUSAUR + .4byte gAnims_CHARMANDER + .4byte gAnims_CHARMELEON + .4byte gAnims_CHARIZARD + .4byte gAnims_SQUIRTLE + .4byte gAnims_WARTORTLE + .4byte gAnims_BLASTOISE + .4byte gAnims_CATERPIE + .4byte gAnims_METAPOD + .4byte gAnims_BUTTERFREE + .4byte gAnims_WEEDLE + .4byte gAnims_KAKUNA + .4byte gAnims_BEEDRILL + .4byte gAnims_PIDGEY + .4byte gAnims_PIDGEOTTO + .4byte gAnims_PIDGEOT + .4byte gAnims_RATTATA + .4byte gAnims_RATICATE + .4byte gAnims_SPEAROW + .4byte gAnims_FEAROW + .4byte gAnims_EKANS + .4byte gAnims_ARBOK + .4byte gAnims_PIKACHU + .4byte gAnims_RAICHU + .4byte gAnims_SANDSHREW + .4byte gAnims_SANDSLASH + .4byte gAnims_NIDORAN_F + .4byte gAnims_NIDORINA + .4byte gAnims_NIDOQUEEN + .4byte gAnims_NIDORAN_M + .4byte gAnims_NIDORINO + .4byte gAnims_NIDOKING + .4byte gAnims_CLEFAIRY + .4byte gAnims_CLEFABLE + .4byte gAnims_VULPIX + .4byte gAnims_NINETALES + .4byte gAnims_JIGGLYPUFF + .4byte gAnims_WIGGLYTUFF + .4byte gAnims_ZUBAT + .4byte gAnims_GOLBAT + .4byte gAnims_ODDISH + .4byte gAnims_GLOOM + .4byte gAnims_VILEPLUME + .4byte gAnims_PARAS + .4byte gAnims_PARASECT + .4byte gAnims_VENONAT + .4byte gAnims_VENOMOTH + .4byte gAnims_DIGLETT + .4byte gAnims_DUGTRIO + .4byte gAnims_MEOWTH + .4byte gAnims_PERSIAN + .4byte gAnims_PSYDUCK + .4byte gAnims_GOLDUCK + .4byte gAnims_MANKEY + .4byte gAnims_PRIMEAPE + .4byte gAnims_GROWLITHE + .4byte gAnims_ARCANINE + .4byte gAnims_POLIWAG + .4byte gAnims_POLIWHIRL + .4byte gAnims_POLIWRATH + .4byte gAnims_ABRA + .4byte gAnims_KADABRA + .4byte gAnims_ALAKAZAM + .4byte gAnims_MACHOP + .4byte gAnims_MACHOKE + .4byte gAnims_MACHAMP + .4byte gAnims_BELLSPROUT + .4byte gAnims_WEEPINBELL + .4byte gAnims_VICTREEBEL + .4byte gAnims_TENTACOOL + .4byte gAnims_TENTACRUEL + .4byte gAnims_GEODUDE + .4byte gAnims_GRAVELER + .4byte gAnims_GOLEM + .4byte gAnims_PONYTA + .4byte gAnims_RAPIDASH + .4byte gAnims_SLOWPOKE + .4byte gAnims_SLOWBRO + .4byte gAnims_MAGNEMITE + .4byte gAnims_MAGNETON + .4byte gAnims_FARFETCHD + .4byte gAnims_DODUO + .4byte gAnims_DODRIO + .4byte gAnims_SEEL + .4byte gAnims_DEWGONG + .4byte gAnims_GRIMER + .4byte gAnims_MUK + .4byte gAnims_SHELLDER + .4byte gAnims_CLOYSTER + .4byte gAnims_GASTLY + .4byte gAnims_HAUNTER + .4byte gAnims_GENGAR + .4byte gAnims_ONIX + .4byte gAnims_DROWZEE + .4byte gAnims_HYPNO + .4byte gAnims_KRABBY + .4byte gAnims_KINGLER + .4byte gAnims_VOLTORB + .4byte gAnims_ELECTRODE + .4byte gAnims_EXEGGCUTE + .4byte gAnims_EXEGGUTOR + .4byte gAnims_CUBONE + .4byte gAnims_MAROWAK + .4byte gAnims_HITMONLEE + .4byte gAnims_HITMONCHAN + .4byte gAnims_LICKITUNG + .4byte gAnims_KOFFING + .4byte gAnims_WEEZING + .4byte gAnims_RHYHORN + .4byte gAnims_RHYDON + .4byte gAnims_CHANSEY + .4byte gAnims_TANGELA + .4byte gAnims_KANGASKHAN + .4byte gAnims_HORSEA + .4byte gAnims_SEADRA + .4byte gAnims_GOLDEEN + .4byte gAnims_SEAKING + .4byte gAnims_STARYU + .4byte gAnims_STARMIE + .4byte gAnims_MR_MIME + .4byte gAnims_SCYTHER + .4byte gAnims_JYNX + .4byte gAnims_ELECTABUZZ + .4byte gAnims_MAGMAR + .4byte gAnims_PINSIR + .4byte gAnims_TAUROS + .4byte gAnims_MAGIKARP + .4byte gAnims_GYARADOS + .4byte gAnims_LAPRAS + .4byte gAnims_DITTO + .4byte gAnims_EEVEE + .4byte gAnims_VAPOREON + .4byte gAnims_JOLTEON + .4byte gAnims_FLAREON + .4byte gAnims_PORYGON + .4byte gAnims_OMANYTE + .4byte gAnims_OMASTAR + .4byte gAnims_KABUTO + .4byte gAnims_KABUTOPS + .4byte gAnims_AERODACTYL + .4byte gAnims_SNORLAX + .4byte gAnims_ARTICUNO + .4byte gAnims_ZAPDOS + .4byte gAnims_MOLTRES + .4byte gAnims_DRATINI + .4byte gAnims_DRAGONAIR + .4byte gAnims_DRAGONITE + .4byte gAnims_MEWTWO + .4byte gAnims_MEW + .4byte gAnims_CHIKORITA + .4byte gAnims_BAYLEEF + .4byte gAnims_MEGANIUM + .4byte gAnims_CYNDAQUIL + .4byte gAnims_QUILAVA + .4byte gAnims_TYPHLOSION + .4byte gAnims_TOTODILE + .4byte gAnims_CROCONAW + .4byte gAnims_FERALIGATR + .4byte gAnims_SENTRET + .4byte gAnims_FURRET + .4byte gAnims_HOOTHOOT + .4byte gAnims_NOCTOWL + .4byte gAnims_LEDYBA + .4byte gAnims_LEDIAN + .4byte gAnims_SPINARAK + .4byte gAnims_ARIADOS + .4byte gAnims_CROBAT + .4byte gAnims_CHINCHOU + .4byte gAnims_LANTURN + .4byte gAnims_PICHU + .4byte gAnims_CLEFFA + .4byte gAnims_IGGLYBUFF + .4byte gAnims_TOGEPI + .4byte gAnims_TOGETIC + .4byte gAnims_NATU + .4byte gAnims_XATU + .4byte gAnims_MAREEP + .4byte gAnims_FLAAFFY + .4byte gAnims_AMPHAROS + .4byte gAnims_BELLOSSOM + .4byte gAnims_MARILL + .4byte gAnims_AZUMARILL + .4byte gAnims_SUDOWOODO + .4byte gAnims_POLITOED + .4byte gAnims_HOPPIP + .4byte gAnims_SKIPLOOM + .4byte gAnims_JUMPLUFF + .4byte gAnims_AIPOM + .4byte gAnims_SUNKERN + .4byte gAnims_SUNFLORA + .4byte gAnims_YANMA + .4byte gAnims_WOOPER + .4byte gAnims_QUAGSIRE + .4byte gAnims_ESPEON + .4byte gAnims_UMBREON + .4byte gAnims_MURKROW + .4byte gAnims_SLOWKING + .4byte gAnims_MISDREAVUS + .4byte gAnims_UNOWN + .4byte gAnims_WOBBUFFET + .4byte gAnims_GIRAFARIG + .4byte gAnims_PINECO + .4byte gAnims_FORRETRESS + .4byte gAnims_DUNSPARCE + .4byte gAnims_GLIGAR + .4byte gAnims_STEELIX + .4byte gAnims_SNUBBULL + .4byte gAnims_GRANBULL + .4byte gAnims_QWILFISH + .4byte gAnims_SCIZOR + .4byte gAnims_SHUCKLE + .4byte gAnims_HERACROSS + .4byte gAnims_SNEASEL + .4byte gAnims_TEDDIURSA + .4byte gAnims_URSARING + .4byte gAnims_SLUGMA + .4byte gAnims_MAGCARGO + .4byte gAnims_SWINUB + .4byte gAnims_PILOSWINE + .4byte gAnims_CORSOLA + .4byte gAnims_REMORAID + .4byte gAnims_OCTILLERY + .4byte gAnims_DELIBIRD + .4byte gAnims_MANTINE + .4byte gAnims_SKARMORY + .4byte gAnims_HOUNDOUR + .4byte gAnims_HOUNDOOM + .4byte gAnims_KINGDRA + .4byte gAnims_PHANPY + .4byte gAnims_DONPHAN + .4byte gAnims_PORYGON2 + .4byte gAnims_STANTLER + .4byte gAnims_SMEARGLE + .4byte gAnims_TYROGUE + .4byte gAnims_HITMONTOP + .4byte gAnims_SMOOCHUM + .4byte gAnims_ELEKID + .4byte gAnims_MAGBY + .4byte gAnims_MILTANK + .4byte gAnims_BLISSEY + .4byte gAnims_RAIKOU + .4byte gAnims_ENTEI + .4byte gAnims_SUICUNE + .4byte gAnims_LARVITAR + .4byte gAnims_PUPITAR + .4byte gAnims_TYRANITAR + .4byte gAnims_LUGIA + .4byte gAnims_HO_OH + .4byte gAnims_CELEBI + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_OLD_UNOWN_B + .4byte gAnims_TREECKO + .4byte gAnims_GROVYLE + .4byte gAnims_SCEPTILE + .4byte gAnims_TORCHIC + .4byte gAnims_COMBUSKEN + .4byte gAnims_BLAZIKEN + .4byte gAnims_MUDKIP + .4byte gAnims_MARSHTOMP + .4byte gAnims_SWAMPERT + .4byte gAnims_POOCHYENA + .4byte gAnims_MIGHTYENA + .4byte gAnims_ZIGZAGOON + .4byte gAnims_LINOONE + .4byte gAnims_WURMPLE + .4byte gAnims_SILCOON + .4byte gAnims_BEAUTIFLY + .4byte gAnims_CASCOON + .4byte gAnims_DUSTOX + .4byte gAnims_LOTAD + .4byte gAnims_LOMBRE + .4byte gAnims_LUDICOLO + .4byte gAnims_SEEDOT + .4byte gAnims_NUZLEAF + .4byte gAnims_SHIFTRY + .4byte gAnims_NINCADA + .4byte gAnims_NINJASK + .4byte gAnims_SHEDINJA + .4byte gAnims_TAILLOW + .4byte gAnims_SWELLOW + .4byte gAnims_SHROOMISH + .4byte gAnims_BRELOOM + .4byte gAnims_SPINDA + .4byte gAnims_WINGULL + .4byte gAnims_PELIPPER + .4byte gAnims_SURSKIT + .4byte gAnims_MASQUERAIN + .4byte gAnims_WAILMER + .4byte gAnims_WAILORD + .4byte gAnims_SKITTY + .4byte gAnims_DELCATTY + .4byte gAnims_KECLEON + .4byte gAnims_BALTOY + .4byte gAnims_CLAYDOL + .4byte gAnims_NOSEPASS + .4byte gAnims_TORKOAL + .4byte gAnims_SABLEYE + .4byte gAnims_BARBOACH + .4byte gAnims_WHISCASH + .4byte gAnims_LUVDISC + .4byte gAnims_CORPHISH + .4byte gAnims_CRAWDAUNT + .4byte gAnims_FEEBAS + .4byte gAnims_MILOTIC + .4byte gAnims_CARVANHA + .4byte gAnims_SHARPEDO + .4byte gAnims_TRAPINCH + .4byte gAnims_VIBRAVA + .4byte gAnims_FLYGON + .4byte gAnims_MAKUHITA + .4byte gAnims_HARIYAMA + .4byte gAnims_ELECTRIKE + .4byte gAnims_MANECTRIC + .4byte gAnims_NUMEL + .4byte gAnims_CAMERUPT + .4byte gAnims_SPHEAL + .4byte gAnims_SEALEO + .4byte gAnims_WALREIN + .4byte gAnims_CACNEA + .4byte gAnims_CACTURNE + .4byte gAnims_SNORUNT + .4byte gAnims_GLALIE + .4byte gAnims_LUNATONE + .4byte gAnims_SOLROCK + .4byte gAnims_AZURILL + .4byte gAnims_SPOINK + .4byte gAnims_GRUMPIG + .4byte gAnims_PLUSLE + .4byte gAnims_MINUN + .4byte gAnims_MAWILE + .4byte gAnims_MEDITITE + .4byte gAnims_MEDICHAM + .4byte gAnims_SWABLU + .4byte gAnims_ALTARIA + .4byte gAnims_WYNAUT + .4byte gAnims_DUSKULL + .4byte gAnims_DUSCLOPS + .4byte gAnims_ROSELIA + .4byte gAnims_SLAKOTH + .4byte gAnims_VIGOROTH + .4byte gAnims_SLAKING + .4byte gAnims_GULPIN + .4byte gAnims_SWALOT + .4byte gAnims_TROPIUS + .4byte gAnims_WHISMUR + .4byte gAnims_LOUDRED + .4byte gAnims_EXPLOUD + .4byte gAnims_CLAMPERL + .4byte gAnims_HUNTAIL + .4byte gAnims_GOREBYSS + .4byte gAnims_ABSOL + .4byte gAnims_SHUPPET + .4byte gAnims_BANETTE + .4byte gAnims_SEVIPER + .4byte gAnims_ZANGOOSE + .4byte gAnims_RELICANTH + .4byte gAnims_ARON + .4byte gAnims_LAIRON + .4byte gAnims_AGGRON + .4byte gAnims_CASTFORM + .4byte gAnims_VOLBEAT + .4byte gAnims_ILLUMISE + .4byte gAnims_LILEEP + .4byte gAnims_CRADILY + .4byte gAnims_ANORITH + .4byte gAnims_ARMALDO + .4byte gAnims_RALTS + .4byte gAnims_KIRLIA + .4byte gAnims_GARDEVOIR + .4byte gAnims_BAGON + .4byte gAnims_SHELGON + .4byte gAnims_SALAMENCE + .4byte gAnims_BELDUM + .4byte gAnims_METANG + .4byte gAnims_METAGROSS + .4byte gAnims_REGIROCK + .4byte gAnims_REGICE + .4byte gAnims_REGISTEEL + .4byte gAnims_KYOGRE + .4byte gAnims_GROUDON + .4byte gAnims_RAYQUAZA + .4byte gAnims_LATIAS + .4byte gAnims_LATIOS + .4byte gAnims_JIRACHI + .4byte gAnims_DEOXYS + .4byte gAnims_CHIMECHO + .4byte gAnims_EGG + .4byte gAnims_UNOWN_B + .4byte gAnims_UNOWN_C + .4byte gAnims_UNOWN_D + .4byte gAnims_UNOWN_E + .4byte gAnims_UNOWN_F + .4byte gAnims_UNOWN_G + .4byte gAnims_UNOWN_H + .4byte gAnims_UNOWN_I + .4byte gAnims_UNOWN_J + .4byte gAnims_UNOWN_K + .4byte gAnims_UNOWN_L + .4byte gAnims_UNOWN_M + .4byte gAnims_UNOWN_N + .4byte gAnims_UNOWN_O + .4byte gAnims_UNOWN_P + .4byte gAnims_UNOWN_Q + .4byte gAnims_UNOWN_R + .4byte gAnims_UNOWN_S + .4byte gAnims_UNOWN_T + .4byte gAnims_UNOWN_U + .4byte gAnims_UNOWN_V + .4byte gAnims_UNOWN_W + .4byte gAnims_UNOWN_X + .4byte gAnims_UNOWN_Y + .4byte gAnims_UNOWN_Z + .4byte gAnims_UNOWN_EMARK + .4byte gAnims_UNOWN_QMARK diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index c0557ac702..5251ee06a0 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -17,7 +17,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const union AffineAnimCmd *const gUnknown_082FF618[]; extern const union AffineAnimCmd *const gUnknown_082FF694[]; extern const union AnimCmd *const gUnknown_082FF70C[]; -extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES]; +extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES]; extern const union AnimCmd *const *const gUnknown_0830536C[]; extern const u8 gUnknown_0831F578[]; @@ -282,7 +282,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, images[j].size = 0x800; } gUnknown_0203CCEC.tileTag = 0xFFFF; - gUnknown_0203CCEC.anims = gUnknown_08309AAC[species]; + gUnknown_0203CCEC.anims = gMonAnimationsSpriteAnimsPtrTable[species]; gUnknown_0203CCEC.images = images; if (flags2 == 0x01) { diff --git a/src/pokemon_2.c b/src/pokemon_2.c index c5c36c793d..c3d3bf8cfe 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -28,7 +28,7 @@ extern const u32 gBitTable[]; extern const struct SpriteTemplate gUnknown_08329D98[]; extern const struct SpriteTemplate gUnknown_08329DF8[]; extern const union AnimCmd* gUnknown_082FF70C[]; -extern const union AnimCmd* const * const gUnknown_08309AAC[]; +extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[]; extern const union AnimCmd* const * const gUnknown_08305D0C[]; extern const union AnimCmd* const * const gUnknown_0830536C[]; extern const u8 gText_BadEgg[]; @@ -165,9 +165,9 @@ void sub_806A068(u16 species, u8 bankIdentity) if (bankIdentity == 0 || bankIdentity == 2) gUnknown_0202499C.anims = gUnknown_082FF70C; else if (species > 500) - gUnknown_0202499C.anims = gUnknown_08309AAC[species - 500]; + gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500]; else - gUnknown_0202499C.anims = gUnknown_08309AAC[species]; + gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species]; } void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity) From 42f633cbf4c774924c8ace0a09587c18d13fd48f Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Mon, 9 Oct 2017 16:00:18 -0400 Subject: [PATCH 118/182] (un)fix battle.h --- include/battle.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/battle.h b/include/battle.h index 2a864d6aa2..10cdfaa735 100644 --- a/include/battle.h +++ b/include/battle.h @@ -271,8 +271,6 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 -#include "global.h" - struct TrainerMonNoItemDefaultMoves { u16 iv; From f6f81f34b19730039e54eccb38511cdffd1b5217 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Mon, 9 Oct 2017 16:49:14 -0400 Subject: [PATCH 119/182] decompiled up to sub_81C228C --- asm/pokemon_summary_screen.s | 152 ----------------------------------- src/pokemon_summary_screen.c | 111 ++++++++++++++++++++++++- 2 files changed, 109 insertions(+), 154 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 345d762673..7ca5f879a7 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,158 +5,6 @@ .text - thumb_func_start sub_81C2194 -sub_81C2194: @ 81C2194 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r2, 24 - lsls r1, 28 - lsrs r4, r1, 16 - ldr r7, =0x0000056a - cmp r2, 0 - bne _081C21E4 - movs r3, 0 - ldr r5, =gUnknown_08DC3CD4 -_081C21A8: - adds r2, r7, r3 - lsls r2, 1 - adds r2, r6 - lsls r0, r3, 1 - adds r0, r5 - ldrh r1, [r0] - adds r1, r4, r1 - strh r1, [r2] - adds r0, r2, 0 - adds r0, 0x40 - strh r1, [r0] - adds r2, 0x80 - adds r0, r3, 0 - adds r0, 0x14 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - adds r0, r4, r0 - strh r0, [r2] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x13 - bls _081C21A8 - b _081C221C - .pool -_081C21E4: - movs r3, 0 - ldr r5, =gUnknown_08DC3CD4 -_081C21E8: - adds r1, r7, r3 - lsls r1, 1 - adds r1, r6 - adds r0, r3, 0 - adds r0, 0x14 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - adds r0, r4, r0 - strh r0, [r1] - adds r2, r1, 0 - adds r2, 0x40 - adds r0, r3, 0 - adds r0, 0x28 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - adds r0, r4, r0 - strh r0, [r2] - adds r1, 0x80 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x13 - bls _081C21E8 -_081C221C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2194 - - thumb_func_start sub_81C2228 -sub_81C2228: @ 81C2228 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl CheckPartyPokerus - lsls r0, 24 - cmp r0, 0 - bne _081C225C - adds r0, r4, 0 - movs r1, 0 - bl CheckPartyHasHadPokerus - lsls r0, 24 - cmp r0, 0 - beq _081C225C - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r2, =0x00000502 - adds r1, r0, r2 - movs r2, 0x2C - b _081C2266 - .pool -_081C225C: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r2, =0x00000502 - adds r1, r0, r2 - ldr r2, =0x0000081a -_081C2266: - strh r2, [r1] - ldr r1, =0x00000d02 - adds r0, r1 - strh r2, [r0] - movs r0, 0x3 - bl schedule_bg_copy_tilemap_to_vram - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2228 - - thumb_func_start sub_81C228C -sub_81C228C: @ 81C228C - push {lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _081C22AC - movs r0, 0x8 - str r0, [sp] - str r1, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x4 - movs r3, 0x8 - bl sub_8199C30 - b _081C22C0 -_081C22AC: - movs r0, 0x8 - str r0, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x4 - movs r3, 0x8 - bl sub_8199C30 -_081C22C0: - movs r0, 0x3 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_81C228C - thumb_func_start sub_81C22CC sub_81C22CC: @ 81C22CC push {r4-r7,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 5733e1d903..4c748073e9 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -63,6 +63,7 @@ extern void sub_8069004(struct BoxPokemon* a, void* b); extern void sub_81C1E20(u8 taskId); extern u32 ChangeBgX(u8 bg, u32 value, u8 op); +extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f); void sub_81BFAE4(void); void sub_81BFE24(); @@ -2194,7 +2195,9 @@ void sub_81C20F0(u8 taskId) } } -/* void sub_81C2194(u16 *a, u16 b, u8 c) +// somebody send help this is a complete fucking mess +#ifdef NONMATCHING +void sub_81C2194(u16 *a, u16 b, u8 c) { u16 i; int var; @@ -2219,4 +2222,108 @@ void sub_81C20F0(u8 taskId) a[((i + var)) + 0x80] = gUnknown_08DC3CD4[i + 40] + b; } } -} */ \ No newline at end of file +} +#else +__attribute__((naked)) +void sub_81C2194(u16 *a, u16 b, u8 c) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r6, r0, 0\n\ + lsls r2, 24\n\ + lsls r1, 28\n\ + lsrs r4, r1, 16\n\ + ldr r7, =0x0000056a\n\ + cmp r2, 0\n\ + bne _081C21E4\n\ + movs r3, 0\n\ + ldr r5, =gUnknown_08DC3CD4\n\ +_081C21A8:\n\ + adds r2, r7, r3\n\ + lsls r2, 1\n\ + adds r2, r6\n\ + lsls r0, r3, 1\n\ + adds r0, r5\n\ + ldrh r1, [r0]\n\ + adds r1, r4, r1\n\ + strh r1, [r2]\n\ + adds r0, r2, 0\n\ + adds r0, 0x40\n\ + strh r1, [r0]\n\ + adds r2, 0x80\n\ + adds r0, r3, 0\n\ + adds r0, 0x14\n\ + lsls r0, 1\n\ + adds r0, r5\n\ + ldrh r0, [r0]\n\ + adds r0, r4, r0\n\ + strh r0, [r2]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x13\n\ + bls _081C21A8\n\ + b _081C221C\n\ + .pool\n\ +_081C21E4:\n\ + movs r3, 0\n\ + ldr r5, =gUnknown_08DC3CD4\n\ +_081C21E8:\n\ + adds r1, r7, r3\n\ + lsls r1, 1\n\ + adds r1, r6\n\ + adds r0, r3, 0\n\ + adds r0, 0x14\n\ + lsls r0, 1\n\ + adds r0, r5\n\ + ldrh r0, [r0]\n\ + adds r0, r4, r0\n\ + strh r0, [r1]\n\ + adds r2, r1, 0\n\ + adds r2, 0x40\n\ + adds r0, r3, 0\n\ + adds r0, 0x28\n\ + lsls r0, 1\n\ + adds r0, r5\n\ + ldrh r0, [r0]\n\ + adds r0, r4, r0\n\ + strh r0, [r2]\n\ + adds r1, 0x80\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x13\n\ + bls _081C21E8\n\ +_081C221C:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided\n"); +} +#endif + +void sub_81C2228(struct Pokemon *mon) +{ + if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) + { + gUnknown_0203CF1C->unkTilemap0[0x223] = 0x2C; + gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x2C; + } + else + { + gUnknown_0203CF1C->unkTilemap0[0x223] = 0x81A; + gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x81A; + } + schedule_bg_copy_tilemap_to_vram(3); +} + +void sub_81C228C(u8 a) +{ + if (a == 0) + sub_8199C30(3, 1, 4, 8, 8, 0); + else + sub_8199C30(3, 1, 4, 8, 8, 5); + schedule_bg_copy_tilemap_to_vram(3); +} \ No newline at end of file From beab7a10d2dbb5f1385b8cac2e630f82cebb3387 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 23:33:41 +0200 Subject: [PATCH 120/182] table to hex --- src/battle_message.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/battle_message.c b/src/battle_message.c index 77a461544c..2c622f06d1 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1189,27 +1189,27 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS, static const u8 gUnknown_085CD42C[] = { - 0xFF, 1, 0, 1, 0, 0, 1, 1, 0xF, 6, 0, 0, 0xFF, 1, - 1, 1, 0, 0, 0, 1, 0xF, 6, 0, 0, 0xEE, 1, 0, 1, 0, - 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, - 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, - 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, - 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, - 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, - 0xEE, 1, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, - 1, 2, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, 0xEE, 7, 0, - 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, - 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, - 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, 0xD, - 0xE, 0xF, 0, 0, 0, 1, 0x20, 1, 0, 0, 0, 1, 0, 2, - 0, 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, - 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, - 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, - 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, - 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0xFF, - 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0, 1, 0xFF, 1, 0, - 0, 0, 1, 0, 6, 0, 0, 0, 1, 0xFF, 1, 0, 0, 0, 1, 0, - 6, 0, 0, 0, 1, 0xFF, 1, 0, 0, 0, 1, 0, 6, 0, 0 + 0xFF, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0xF, 0x6, 0x0, 0x0, 0xFF, 0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0xF, 0x6, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, + 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, + 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, + 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, + 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, + 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, + 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, + 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, 0xEE, 0x7, 0x0, + 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, + 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, + 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, + 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0x20, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, + 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, + 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, + 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, + 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, + 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF, + 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, + 0x0, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, + 0x6, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0 }; static const u8 gUnknown_085CD54C[] = From b6ec90db6192c8405c9fe952aae7f356bcd1b0c3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 9 Oct 2017 23:38:40 +0200 Subject: [PATCH 121/182] secod table to hex --- src/battle_message.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/battle_message.c b/src/battle_message.c index 2c622f06d1..aeff721d65 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1214,27 +1214,27 @@ static const u8 gUnknown_085CD42C[] = static const u8 gUnknown_085CD54C[] = { - 0xFF, 1, 0, 1, 0, 0, 1, 1, 0xF, 6, 0, 0, 0xFF, 1, - 1, 1, 0, 0, 0, 1, 0xF, 6, 0, 0, 0xEE, 1, 0, 1, 0, - 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, - 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, - 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, - 0xF, 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, - 0, 0, 0xEE, 7, 0, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, - 0xEE, 1, 0, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, - 1, 2, 1, 0, 0, 0, 0xC, 0xE, 0xB, 0, 0, 0xEE, 7, 0, - 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 7, 0, 1, 0, - 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, - 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0, 1, 0, 0, 0, 0xD, - 0xE, 0xF, 0, 0, 0, 1, 0x20, 1, 0, 0, 0, 1, 0, 2, - 0, 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 1, 0xE, 0xF, 0, - 0, 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, - 0xEE, 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, - 1, 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, - 0xFF, 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0xFF, - 1, 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0xEE, 1, 0xFF, 1, - 0, 0, 0, 0xD, 0xE, 0xF, 0, 0, 0x11, 1, 0, 1, 0, 0, - 1, 2, 1, 3, 0, 0 + 0xFF, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0xF, 0x6, 0x0, 0x0, 0xFF, 0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0xF, 0x6, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, + 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, + 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, + 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, + 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, + 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, + 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, + 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, 0xEE, 0x7, 0x0, + 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, + 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, + 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, + 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0x20, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, + 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0xE, 0xF, 0x0, + 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, + 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, + 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, + 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF, + 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, + 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0x11, 0x1, 0x0, 0x1, 0x0, 0x0, + 0x1, 0x2, 0x1, 0x3, 0x0, 0x0 }; static const u8 * const gUnknown_085CD660[] = From 6d66081be0b1b26ce55a6f1a2a20644e2ae5c7f7 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 9 Oct 2017 20:25:34 -0400 Subject: [PATCH 122/182] minor tweak to make tidy. --- Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index dd1a96ebbc..d10505145e 100644 --- a/Makefile +++ b/Makefile @@ -64,9 +64,7 @@ clean: tidy find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + tidy: - rm -f pokeemerald.gba - rm -f pokeemerald.map - rm -f pokeemerald.elf + rm -f pokeemerald.{gba,map,elf} rm -r build/* include graphics_file_rules.mk From 57e5624e0619b8d96fb43ff68d9eeefe734b1a4f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 10 Oct 2017 18:01:45 +0200 Subject: [PATCH 123/182] battle9 is being worked on --- asm/battle_9.s | 1487 +-------------------- asm/battle_controller_opponent.s | 10 +- asm/battle_controller_player.s | 20 +- asm/battle_controller_player_partner.s | 6 +- asm/battle_controller_recorded_opponent.s | 6 +- asm/battle_controller_recorded_player.s | 8 +- asm/battle_controller_safari.s | 4 +- asm/battle_controller_wally.s | 6 +- asm/rom3.s | 6 +- include/battle_controllers.h | 1 + include/battle_script_commands.h | 2 +- ld_script.txt | 1 + src/battle_9.c | 525 ++++++++ src/battle_script_commands.c | 8 +- 14 files changed, 568 insertions(+), 1522 deletions(-) create mode 100644 src/battle_9.c diff --git a/asm/battle_9.s b/asm/battle_9.s index 0dfc105ec3..6d77d15939 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -5,1487 +5,6 @@ .text - thumb_func_start ai_switch_perish_song -ai_switch_perish_song: @ 8062BF8 - push {lr} - ldr r1, =gStatuses3 - ldr r0, =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08062C50 - ldr r0, =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xF] - lsls r0, 28 - cmp r0, 0 - bne _08062C50 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, r2, r0 - movs r1, 0xA5 - lsls r1, 2 - adds r0, r1 - movs r1, 0x6 - strb r1, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - movs r0, 0x1 - b _08062C52 - .pool -_08062C50: - movs r0, 0 -_08062C52: - pop {r1} - bx r1 - thumb_func_end ai_switch_perish_song - - thumb_func_start sub_8062C58 -sub_8062C58: @ 8062C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08062C72 - b _08062E2C -_08062C72: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r4, =gBattleMons - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x58 - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x19 - beq _08062C9E - b _08062E2C -_08062C9E: - mov r0, r10 - bl GetBankByIdentity - lsls r0, 24 - lsrs r2, r0, 24 - movs r6, 0 - mov r8, r4 - movs r7, 0x58 - adds r0, r2, 0 - muls r0, r7 - adds r4, r0, r4 - movs r0, 0x20 - adds r0, r4 - mov r9, r0 -_08062CBA: - lsls r1, r6, 1 - ldr r5, =gActiveBank - ldrb r0, [r5] - muls r0, r7 - adds r1, r0 - mov r0, r8 - adds r0, 0xC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08062CE8 - ldrh r1, [r4] - mov r3, r9 - ldrb r2, [r3] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _08062CE8 - b _08062E2C -_08062CE8: - adds r6, 0x1 - cmp r6, 0x3 - ble _08062CBA - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00808000 - ands r0, r1 - cmp r0, 0 - beq _08062D50 - ldrb r1, [r5] - movs r0, 0x2 - ands r0, r1 - adds r1, r5, 0 - cmp r0, 0 - bne _08062D20 - movs r4, 0 - movs r0, 0x3 - str r0, [sp] - b _08062D58 - .pool -_08062D20: - movs r4, 0x3 - movs r3, 0x6 - str r3, [sp] - b _08062D58 -_08062D28: - ldr r0, =gActiveBank - ldrb r0, [r0] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - movs r1, 0xA5 - lsls r1, 2 - adds r0, r1 - strb r6, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - movs r0, 0x1 - b _08062E2E - .pool -_08062D50: - movs r4, 0 - movs r3, 0x6 - str r3, [sp] - adds r1, r5, 0 -_08062D58: - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - mov r9, r1 - cmp r0, 0 - bne _08062D6C - ldr r3, =gPlayerParty - mov r9, r3 -_08062D6C: - adds r6, r4, 0 - ldr r0, [sp] - cmp r6, r0 - bge _08062E2C -_08062D74: - movs r0, 0x64 - adds r5, r6, 0 - muls r5, r0 - mov r1, r9 - adds r4, r1, r5 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08062E24 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08062E24 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08062E24 - ldr r1, =gBattlePartyID - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - beq _08062E24 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r0, r10 - bl GetBankByIdentity - lsls r0, 24 - lsrs r2, r0, 24 - movs r4, 0 - mov r8, r5 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r5, r0, r1 - adds r7, r5, 0 - adds r7, 0x20 -_08062DE0: - adds r1, r4, 0 - adds r1, 0xD - mov r0, r9 - add r0, r8 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08062E1E - ldrh r1, [r5] - ldrb r2, [r7] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _08062E1E - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _08062D28 -_08062E1E: - adds r4, 0x1 - cmp r4, 0x3 - ble _08062DE0 -_08062E24: - adds r6, 0x1 - ldr r3, [sp] - cmp r6, r3 - blt _08062D74 -_08062E2C: - movs r0, 0 -_08062E2E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8062C58 - - thumb_func_start sub_8062E54 -sub_8062E54: @ 8062E54 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0x1 - bl ai_has_super_effective_move_on_field - lsls r0, 24 - cmp r0, 0 - beq _08062E82 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _08062E82 - b _080630AC -_08062E82: - ldr r1, =gUnknown_02024250 - ldr r5, =gActiveBank - ldrb r3, [r5] - lsls r0, r3, 1 - adds r4, r0, r1 - ldrh r1, [r4] - cmp r1, 0 - bne _08062E94 - b _080630AC -_08062E94: - ldr r0, =0x0000ffff - cmp r1, r0 - bne _08062E9C - b _080630AC -_08062E9C: - ldr r2, =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08062EB0 - b _080630AC -_08062EB0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08062F1A - mov r8, r3 - mov r0, r8 - bl GetBankIdentity - movs r4, 0x2 - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r1, =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08062F04 - ldrb r7, [r5] - b _08062F1E - .pool -_08062F04: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r7, r0, 24 - b _08062F1E -_08062F1A: - adds r7, r3, 0 - mov r8, r7 -_08062F1E: - ldr r3, =gBattleMoves - ldr r1, =gUnknown_02024250 - ldr r2, =gActiveBank - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - cmp r0, 0xA - bne _08062F4C - movs r0, 0x12 - b _08062F5E - .pool -_08062F4C: - cmp r0, 0xB - bne _08062F56 - movs r1, 0xB - str r1, [sp] - b _08062F60 -_08062F56: - cmp r0, 0xD - beq _08062F5C - b _080630AC -_08062F5C: - movs r0, 0xA -_08062F5E: - str r0, [sp] -_08062F60: - ldr r1, =gBattleMons - ldrb r3, [r2] - movs r0, 0x58 - muls r0, r3 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - ldr r1, [sp] - cmp r0, r1 - bne _08062F76 - b _080630AC -_08062F76: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00808000 - ands r0, r1 - cmp r0, 0 - beq _08062FCC - movs r0, 0x2 - ands r3, r0 - cmp r3, 0 - bne _08062F9C - movs r4, 0 - movs r0, 0x3 - b _08062FD0 - .pool -_08062F9C: - movs r4, 0x3 - movs r1, 0x6 - mov r10, r1 - b _08062FD2 -_08062FA4: - ldr r0, =gActiveBank - ldrb r0, [r0] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - movs r2, 0xA5 - lsls r2, 2 - adds r0, r2 - strb r5, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - movs r0, 0x1 - b _080630AE - .pool -_08062FCC: - movs r4, 0 - movs r0, 0x6 -_08062FD0: - mov r10, r0 -_08062FD2: - ldrb r0, [r2] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - str r1, [sp, 0x4] - cmp r0, 0 - bne _08062FE6 - ldr r2, =gPlayerParty - str r2, [sp, 0x4] -_08062FE6: - adds r5, r4, 0 - cmp r5, r10 - bge _080630AC - ldr r0, =gBaseStats - mov r9, r0 -_08062FF0: - movs r0, 0x64 - muls r0, r5 - ldr r1, [sp, 0x4] - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080630A6 - adds r0, r6, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _080630A6 - adds r0, r6, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _080630A6 - ldr r1, =gBattlePartyID - mov r2, r8 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _080630A6 - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _080630A6 - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _080630A6 - adds r0, r7, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _080630A6 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r6, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _08063088 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x17] - b _08063092 - .pool -_08063088: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x16] -_08063092: - ldr r1, [sp] - cmp r1, r0 - bne _080630A6 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080630A6 - b _08062FA4 -_080630A6: - adds r5, 0x1 - cmp r5, r10 - blt _08062FF0 -_080630AC: - movs r0, 0 -_080630AE: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8062E54 - - thumb_func_start ai_switchout_natural_cure -ai_switchout_natural_cure: @ 80630C0 - push {r4,r5,lr} - ldr r3, =gBattleMons - ldr r5, =gActiveBank - ldrb r4, [r5] - movs r0, 0x58 - adds r2, r4, 0 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08063188 - adds r1, r2, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1E - bne _08063188 - ldrh r0, [r1, 0x2C] - ldrh r1, [r1, 0x28] - lsrs r0, 1 - cmp r1, r0 - bcc _08063188 - ldr r1, =gUnknown_02024250 - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - cmp r1, 0 - beq _08063106 - ldr r0, =0x0000ffff - cmp r1, r0 - bne _08063128 -_08063106: - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08063128 - ldrb r0, [r5] - b _08063190 - .pool -_08063128: - ldr r2, =gBattleMoves - ldr r1, =gUnknown_02024250 - ldr r4, =gActiveBank - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08063160 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08063160 - ldrb r0, [r4] - b _08063190 - .pool -_08063160: - movs r0, 0x8 - movs r1, 0x1 - bl ai_switchout_something - lsls r0, 24 - cmp r0, 0 - bne _080631AA - movs r0, 0x4 - movs r1, 0x1 - bl ai_switchout_something - lsls r0, 24 - cmp r0, 0 - bne _080631AA - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _0806318C -_08063188: - movs r0, 0 - b _080631AC -_0806318C: - ldr r0, =gActiveBank - ldrb r0, [r0] -_08063190: - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - movs r1, 0xA5 - lsls r1, 2 - adds r0, r1 - movs r1, 0x6 - strb r1, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb -_080631AA: - movs r0, 0x1 -_080631AC: - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end ai_switchout_natural_cure - - thumb_func_start ai_has_super_effective_move_on_field -ai_has_super_effective_move_on_field: @ 80631BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - bl GetBankByIdentity - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08063256 - movs r4, 0 - ldr r6, =gBattleMons - movs r7, 0x58 - adds r0, r3, 0 - muls r0, r7 - adds r5, r0, r6 - movs r0, 0x20 - adds r0, r5 - mov r8, r0 -_0806320A: - lsls r1, r4, 1 - ldr r0, =gActiveBank - ldrb r0, [r0] - muls r0, r7 - adds r1, r0 - adds r0, r6, 0 - adds r0, 0xC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08063250 - ldrh r1, [r5] - mov r3, r8 - ldrb r2, [r3] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _08063250 - mov r0, r9 - cmp r0, 0 - bne _08063278 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08063278 -_08063250: - adds r4, 0x1 - cmp r4, 0x3 - ble _0806320A -_08063256: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0806327C - b _080632FA - .pool -_08063278: - movs r0, 0x1 - b _080632FC -_0806327C: - movs r1, 0x2 - mov r0, r10 - eors r0, r1 - bl GetBankByIdentity - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080632FA - movs r4, 0 - ldr r6, =gBattleMons - movs r7, 0x58 - adds r0, r3, 0 - muls r0, r7 - adds r5, r0, r6 - movs r3, 0x20 - adds r3, r5 - mov r8, r3 -_080632AE: - lsls r1, r4, 1 - ldr r0, =gActiveBank - ldrb r0, [r0] - muls r0, r7 - adds r1, r0 - adds r0, r6, 0 - adds r0, 0xC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _080632F4 - ldrh r1, [r5] - mov r3, r8 - ldrb r2, [r3] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _080632F4 - mov r0, r9 - cmp r0, 0 - bne _08063278 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08063278 -_080632F4: - adds r4, 0x1 - cmp r4, 0x3 - ble _080632AE -_080632FA: - movs r0, 0 -_080632FC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end ai_has_super_effective_move_on_field - - thumb_func_start ai_is_too_invested_in_stat_buffs -ai_is_too_invested_in_stat_buffs: @ 806331C - push {r4,lr} - movs r4, 0 - ldr r1, =gBattleMons - ldr r0, =gActiveBank - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x18 - adds r2, r0, r1 - movs r3, 0x7 -_08063330: - ldrb r1, [r2] - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x6 - ble _08063346 - subs r1, 0x6 - lsls r0, r4, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 -_08063346: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bge _08063330 - movs r0, 0 - cmp r4, 0x3 - bls _08063356 - movs r0, 0x1 -_08063356: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ai_is_too_invested_in_stat_buffs - - thumb_func_start ai_switchout_something -ai_switchout_something: @ 8063364 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x4] - ldr r2, =gUnknown_02024250 - ldr r1, =gActiveBank - ldrb r3, [r1] - lsls r0, r3, 1 - adds r4, r0, r2 - ldrh r2, [r4] - adds r5, r1, 0 - cmp r2, 0 - bne _08063390 - b _080635EE -_08063390: - ldr r0, =0x0000ffff - cmp r2, r0 - bne _08063398 - b _080635EE -_08063398: - ldr r0, =gUnknown_02024270 - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080633A4 - b _080635EE -_080633A4: - ldr r2, =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080633B8 - b _080635EE -_080633B8: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806342C - mov r9, r3 - mov r0, r9 - bl GetBankIdentity - movs r4, 0x2 - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r1, =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08063414 - ldrb r5, [r5] - mov r10, r5 - b _08063430 - .pool -_08063414: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - b _08063430 -_0806342C: - mov r9, r3 - mov r10, r9 -_08063430: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00808000 - ands r0, r1 - cmp r0, 0 - beq _08063490 - ldr r2, =gActiveBank - ldrb r1, [r2] - movs r0, 0x2 - ands r0, r1 - adds r5, r2, 0 - cmp r0, 0 - bne _08063460 - movs r4, 0 - movs r0, 0x3 - str r0, [sp, 0x8] - b _08063498 - .pool -_08063460: - movs r4, 0x3 - movs r1, 0x6 - str r1, [sp, 0x8] - b _08063498 -_08063468: - ldr r0, =gActiveBank - ldrb r0, [r0] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - movs r2, 0xA5 - lsls r2, 2 - adds r0, r2 - strb r6, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - movs r0, 0x1 - b _080635F0 - .pool -_08063490: - movs r4, 0 - movs r0, 0x6 - str r0, [sp, 0x8] - ldr r5, =gActiveBank -_08063498: - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - str r1, [sp, 0xC] - cmp r0, 0 - bne _080634AC - ldr r2, =gPlayerParty - str r2, [sp, 0xC] -_080634AC: - adds r6, r4, 0 - b _080635E6 - .pool -_080634BC: - movs r0, 0x64 - muls r0, r6 - ldr r1, [sp, 0xC] - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080634D2 - b _080635E4 -_080634D2: - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - bne _080634E0 - b _080635E4 -_080634E0: - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _080635E4 - ldr r1, =gBattlePartyID - mov r2, r9 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - beq _080635E4 - mov r2, r10 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - beq _080635E4 - ldr r0, =gBattleStruct - ldr r1, [r0] - mov r2, r9 - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r6, r0 - beq _080635E4 - mov r2, r10 - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r6, r0 - beq _080635E4 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r5, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _08063558 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r1, =gBaseStats - adds r0, r1 - ldrb r2, [r0, 0x17] - b _08063564 - .pool -_08063558: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r2, =gBaseStats - adds r0, r2 - ldrb r2, [r0, 0x16] -_08063564: - ldr r1, =gUnknown_02024250 - ldr r5, =gActiveBank - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - adds r1, r4, 0 - bl AI_TypeCalc - ldr r1, [sp] - ands r1, r0 - cmp r1, 0 - beq _080635E4 - ldr r1, =gUnknown_02024270 - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - mov r9, r0 - movs r4, 0 - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - mov r8, r1 - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r5, r0, r1 - adds r7, r5, 0 - adds r7, 0x20 -_080635A2: - adds r1, r4, 0 - adds r1, 0xD - ldr r0, [sp, 0xC] - add r0, r8 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080635DE - ldrh r1, [r5] - ldrb r2, [r7] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _080635DE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp, 0x4] - bl __modsi3 - cmp r0, 0 - bne _080635DE - b _08063468 -_080635DE: - adds r4, 0x1 - cmp r4, 0x3 - ble _080635A2 -_080635E4: - adds r6, 0x1 -_080635E6: - ldr r0, [sp, 0x8] - cmp r6, r0 - bge _080635EE - b _080634BC -_080635EE: - movs r0, 0 -_080635F0: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end ai_switchout_something - - thumb_func_start sub_8063614 -sub_8063614: @ 8063614 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r6, =gBattleMons - ldr r4, =gActiveBank - ldrb r2, [r4] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r6, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x0400e000 - ands r0, r1 - cmp r0, 0 - beq _0806363E - b _0806386C -_0806363E: - ldr r0, =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - lsls r0, 3 - ands r1, r0 - cmp r1, 0 - beq _08063652 - b _0806386C -_08063652: - str r1, [sp] - movs r0, 0xC - adds r1, r2, 0 - movs r2, 0x17 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0806366A - b _0806386C -_0806366A: - ldrb r1, [r4] - str r0, [sp] - movs r0, 0xC - movs r2, 0x47 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08063682 - b _0806386C -_08063682: - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080636B4 - ldrb r0, [r4] - muls r0, r5 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - bne _080636A8 - b _0806386C -_080636A8: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _080636B4 - b _0806386C -_080636B4: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - beq _080636C4 - b _0806386C -_080636C4: - movs r0, 0 - mov r10, r0 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0806372E - ldrb r7, [r4] - adds r0, r7, 0 - bl GetBankIdentity - movs r5, 0x2 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r1, =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08063718 - ldrb r6, [r4] - b _08063732 - .pool -_08063718: - ldrb r0, [r4] - bl GetBankIdentity - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r6, r0, 24 - b _08063732 -_0806372E: - ldrb r6, [r4] - adds r7, r6, 0 -_08063732: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00808000 - ands r0, r1 - cmp r0, 0 - beq _08063768 - ldr r2, =gActiveBank - ldrb r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08063760 - movs r4, 0 - movs r1, 0x3 - mov r8, r1 - b _08063770 - .pool -_08063760: - movs r4, 0x3 - movs r0, 0x6 - mov r8, r0 - b _08063770 -_08063768: - movs r4, 0 - movs r1, 0x6 - mov r8, r1 - ldr r2, =gActiveBank -_08063770: - ldrb r0, [r2] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - mov r9, r1 - cmp r0, 0 - bne _08063784 - ldr r0, =gPlayerParty - mov r9, r0 -_08063784: - adds r5, r4, 0 - cmp r5, r8 - bge _080637F2 -_0806378A: - movs r0, 0x64 - muls r0, r5 - mov r1, r9 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080637EC - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _080637EC - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _080637EC - ldr r1, =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _080637EC - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _080637EC - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r0, r7, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _080637EC - adds r0, r6, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _080637EC - movs r0, 0x1 - add r10, r0 -_080637EC: - adds r5, 0x1 - cmp r5, r8 - blt _0806378A -_080637F2: - mov r1, r10 - cmp r1, 0 - beq _0806386C - bl ai_switch_perish_song - lsls r0, 24 - cmp r0, 0 - bne _08063852 - bl sub_8062C58 - lsls r0, 24 - cmp r0, 0 - bne _08063852 - bl sub_8062E54 - lsls r0, 24 - cmp r0, 0 - bne _08063852 - bl ai_switchout_natural_cure - lsls r0, 24 - cmp r0, 0 - bne _08063852 - movs r0, 0 - bl ai_has_super_effective_move_on_field - lsls r0, 24 - cmp r0, 0 - bne _0806386C - bl ai_is_too_invested_in_stat_buffs - lsls r0, 24 - cmp r0, 0 - bne _0806386C - movs r0, 0x8 - movs r1, 0x2 - bl ai_switchout_something - lsls r0, 24 - cmp r0, 0 - bne _08063852 - movs r0, 0x4 - movs r1, 0x3 - bl ai_switchout_something - lsls r0, 24 - cmp r0, 0 - beq _0806386C -_08063852: - movs r0, 0x1 - b _0806386E - .pool -_0806386C: - movs r0, 0 -_0806386E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8063614 - thumb_func_start sub_8063880 sub_8063880: @ 8063880 push {r4-r7,lr} @@ -1515,7 +34,7 @@ _080638A8: bne _080638B6 b _080639E6 _080638B6: - bl sub_8063614 + bl ShouldSwitch lsls r0, 24 cmp r0, 0 bne _080638C2 @@ -1659,7 +178,7 @@ _080639E6: lsls r2, 8 movs r0, 0x1 movs r1, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _080639F8: pop {r3} mov r8, r3 @@ -2802,7 +1321,7 @@ _08064328: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 ldr r0, =gActiveBank ldrb r0, [r0] lsrs r0, 1 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 48b7c7bf46..3fbeac5c1c 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5243,7 +5243,7 @@ sub_8061FB8: @ 8061FB8 movs r0, 0x1 movs r1, 0xA _08061FD6: - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _08061FDA: bl OpponentBufferExecCompleted b _08062156 @@ -5347,7 +5347,7 @@ _0806209C: movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _08061FDA .pool _080620C4: @@ -5378,7 +5378,7 @@ _080620C6: movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _08062152 .pool _08062108: @@ -5401,7 +5401,7 @@ _08062108: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _08062152 .pool _0806213C: @@ -5413,7 +5413,7 @@ _0806213C: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _08062152: bl OpponentBufferExecCompleted _08062156: diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 94d4cdef0b..e5381b4d81 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -226,7 +226,7 @@ _0805764C: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _080577C2 _08057658: movs r0, 0x20 @@ -393,7 +393,7 @@ _080577B2: movs r1, 0xC _080577BC: movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _080577C2: bl PlayerBufferExecCompleted b _080577E8 @@ -518,7 +518,7 @@ _080578A0: orrs r2, r0 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free @@ -1086,7 +1086,7 @@ _08057E14: _08057E1C: movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl PlayerBufferExecCompleted b _08057F9E .pool @@ -3413,7 +3413,7 @@ _080591FE: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 strb r5, [r4] bl battle_type_is_double lsls r0, 24 @@ -3686,7 +3686,7 @@ _08059430: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 strb r5, [r4] ldr r0, =sub_8059544 str r0, [r6] @@ -4291,14 +4291,14 @@ _08059A2C: movs r0, 0x1 movs r1, 0xE movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _08059A76 .pool _08059A6C: movs r0, 0x1 movs r1, 0xD movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _08059A76: bl PlayerBufferExecCompleted _08059A7A: @@ -8658,7 +8658,7 @@ sub_805C158: @ 805C158 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl PlayerBufferExecCompleted _0805C194: pop {r0} @@ -9378,7 +9378,7 @@ sub_805C80C: @ 805C80C movs r0, 0x1 movs r1, 0 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl PlayerBufferExecCompleted pop {r0} bx r0 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 0ddd2a924d..269e5347b2 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -645,7 +645,7 @@ _081BB2E2: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 strb r5, [r4] bl battle_type_is_double lsls r0, 24 @@ -918,7 +918,7 @@ _081BB514: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 strb r5, [r4] ldr r0, =sub_81BB628 str r0, [r6] @@ -5068,7 +5068,7 @@ _081BDB3C: orrs r2, r5 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl PlayerPartnerBufferExecCompleted pop {r4-r6} pop {r0} diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 152dfca9c4..c55bf641f2 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4754,7 +4754,7 @@ sub_8188EF0: @ 8188EF0 lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl RecordedOpponentBufferExecCompleted pop {r0} bx r0 @@ -4785,7 +4785,7 @@ sub_8188F20: @ 8188F20 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _08188F6C .pool _08188F48: @@ -4803,7 +4803,7 @@ _08188F48: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _08188F6C: bl RecordedOpponentBufferExecCompleted pop {r4,r5} diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index a2ea742b7b..836ff5b95b 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4861,7 +4861,7 @@ sub_818C49C: @ 818C49C lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl RecordedPlayerBufferExecCompleted _0818C4C6: pop {r0} @@ -4897,7 +4897,7 @@ _0818C508: lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl RecordedPlayerBufferExecCompleted _0818C522: pop {r0} @@ -4929,7 +4929,7 @@ sub_818C538: @ 818C538 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _0818C584 .pool _0818C560: @@ -4947,7 +4947,7 @@ _0818C560: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _0818C584: bl RecordedPlayerBufferExecCompleted pop {r4,r5} diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index a5acca8c1e..c3fbd0aad0 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -103,13 +103,13 @@ _0815942A: movs r1, 0x7 _0815942E: movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 b _08159440 _08159436: movs r0, 0x1 movs r1, 0x8 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 _08159440: bl SafariBufferExecCompleted b _0815954E diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 64c8b44425..f80292bcc6 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -153,7 +153,7 @@ _081684CE: movs r1, 0x9 _081684E4: movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl WallyBufferExecCompleted ldr r1, [r4] adds r1, 0x94 @@ -208,7 +208,7 @@ _08168540: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl WallyBufferExecCompleted _08168564: pop {r4,r5} @@ -3777,7 +3777,7 @@ _0816A550: lsls r2, 1 movs r0, 0x1 movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb + bl EmitCmd_x21 bl WallyBufferExecCompleted _0816A574: pop {r4} diff --git a/asm/rom3.s b/asm/rom3.s index bde4935684..649097eb6a 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -3259,8 +3259,8 @@ _0803413E: .pool thumb_func_end sub_8034110 - thumb_func_start dp01_build_cmdbuf_x21_a_bb -dp01_build_cmdbuf_x21_a_bb: @ 8034158 + thumb_func_start EmitCmd_x21 +EmitCmd_x21: @ 8034158 push {r4,lr} adds r4, r1, 0 lsls r0, 24 @@ -3280,7 +3280,7 @@ dp01_build_cmdbuf_x21_a_bb: @ 8034158 pop {r0} bx r0 .pool - thumb_func_end dp01_build_cmdbuf_x21_a_bb + thumb_func_end EmitCmd_x21 thumb_func_start dp01_build_cmdbuf_x22_a_three_bytes dp01_build_cmdbuf_x22_a_three_bytes: @ 8034184 diff --git a/include/battle_controllers.h b/include/battle_controllers.h index eea544b556..e36c95fbe9 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -84,5 +84,6 @@ void Emit_x32(u8 bufferId); void EmitPrintString(u8 bufferId, u16 stringId); void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); void EmitBallThrow(u8 bufferId, u8 caseId); +void EmitCmd_x21(u8 bufferId, u8 arg1, u16 arg2); #endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index ae0d20f285..590944f02a 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -43,7 +43,7 @@ void AI_CalcDmg(u8 bankAtk, u8 bankDef); u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); -u8 AI_TypeCalc(u16 move, u16 species, u8 ability); +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); u8 BankGetTurnOrder(u8 bank); void SetMoveEffect(bool8 primary, u8 certain); void BattleDestroyCursorAt(u8 cursorPosition); diff --git a/ld_script.txt b/ld_script.txt index 3e47864f16..1da43ff9d2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -64,6 +64,7 @@ SECTIONS { asm/battle_controller_player.o(.text); asm/battle_7.o(.text); asm/battle_controller_opponent.o(.text); + src/battle_9.o(.text); asm/battle_9.o(.text); asm/battle_controller_linkopponent.o(.text); src/pokemon_1.o(.text); diff --git a/src/battle_9.c b/src/battle_9.c new file mode 100644 index 0000000000..1b1a4ab7cf --- /dev/null +++ b/src/battle_9.c @@ -0,0 +1,525 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "abilities.h" +#include "moves.h" +#include "pokemon.h" +#include "species.h" +#include "rng.h" +#include "util.h" + +extern u8 gActiveBank; +extern u8 gAbsentBankFlags; +extern u32 gBattleTypeFlags; +extern u32 gStatuses3[BATTLE_BANKS_COUNT]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; + +extern const struct BattleMove gBattleMoves[]; +extern const struct BaseStats gBaseStats[]; + +// this file's functions +bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng); +bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent); + +bool8 ShouldSwitchIfPerishSong(void) +{ + if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG + && gDisableStructs[gActiveBank].perishSong1 == 0) + { + *(gBattleStruct->field_294 + gActiveBank) = 6; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + + return FALSE; +} + +bool8 ShouldSwitchIfWonderGuard(void) +{ + u8 opposingIdentity; + u8 opposingBank; + u8 moveFlags; + s32 i, j; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party = NULL; + u16 move; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + return FALSE; + + opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE; + + if (gBattleMons[GetBankByIdentity(opposingIdentity)].ability != ABILITY_WONDER_GUARD) + return FALSE; + + // check if pokemon has a super effective move + for (opposingBank = GetBankByIdentity(opposingIdentity), i = 0; i < 4; i++) + { + move = gBattleMons[gActiveBank].moves[i]; + if (move == MOVE_NONE) + continue; + + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability); + if (moveFlags & MOVESTATUS_SUPEREFFECTIVE) + return FALSE; + } + + // get party information + if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) + { + if ((gActiveBank & BIT_MON) == 0) + firstId = 0, lastId = 3; + else + firstId = 3, lastId = 6; + } + else + { + firstId = 0, lastId = 6; + } + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + // find a pokemon in the party that has a super effective move + for (i = firstId; i < lastId; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlePartyID[gActiveBank]) + continue; + + GetMonData(&party[i], MON_DATA_SPECIES); // unused return value + GetMonData(&party[i], MON_DATA_ALT_ABILITY); // unused return value + + for (opposingBank = GetBankByIdentity(opposingIdentity), j = 0; j < 4; j++) + { + move = GetMonData(&party[i], MON_DATA_MOVE1 + j); + if (move == MOVE_NONE) + continue; + + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability); + if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % 3 < 2) + { + // we found a mon + *(gBattleStruct->field_294 + gActiveBank) = i; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + } + } + + return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard +} + +bool8 sub_8062E54(void) +{ + u8 bankIn1, bankIn2; + u8 absorbingTypeAbility; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party; + s32 i; + + if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0) + return FALSE; + if (gUnknown_02024250[gActiveBank] == 0) + return FALSE; + if (gUnknown_02024250[gActiveBank] == 0xFFFF) + return FALSE; + if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0) + return FALSE; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + bankIn1 = gActiveBank; + if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)]) + bankIn2 = gActiveBank; + else + bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON); + } + else + { + bankIn1 = gActiveBank; + bankIn2 = gActiveBank; + } + + if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE) + absorbingTypeAbility = ABILITY_FLASH_FIRE; + else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER) + absorbingTypeAbility = ABILITY_WATER_ABSORB; + else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC) + absorbingTypeAbility = ABILITY_VOLT_ABSORB; + else + return FALSE; + + if (gBattleMons[gActiveBank].ability == absorbingTypeAbility) + return FALSE; + + if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) + { + if ((gActiveBank & BIT_MON) == 0) + firstId = 0, lastId = 3; + else + firstId = 3, lastId = 6; + } + else + { + firstId = 0, lastId = 6; + } + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = firstId; i < lastId; i++) + { + u16 species; + u8 monAbility; + + if (GetMonData(&party[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlePartyID[bankIn1]) + continue; + if (i == gBattlePartyID[bankIn2]) + continue; + if (i == *(gBattleStruct->field_5C + bankIn1)) + continue; + if (i == *(gBattleStruct->field_5C + bankIn2)) + continue; + + species = GetMonData(&party[i], MON_DATA_SPECIES); + if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0) + monAbility = gBaseStats[species].ability2; + else + monAbility = gBaseStats[species].ability1; + + if (absorbingTypeAbility == monAbility && Random() & 1) + { + // we found a mon + *(gBattleStruct->field_294 + gActiveBank) = i; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + } + + return FALSE; +} + +bool8 ShouldSwitchIfNaturalCure(void) +{ + if (!(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)) + return FALSE; + if (gBattleMons[gActiveBank].ability != ABILITY_NATURAL_CURE) + return FALSE; + if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2) + return FALSE; + + if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1) + { + *(gBattleStruct->field_294 + gActiveBank) = 6; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1) + { + *(gBattleStruct->field_294 + gActiveBank) = 6; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + + if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 1)) + return TRUE; + if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 1)) + return TRUE; + if (Random() & 1) + { + *(gBattleStruct->field_294 + gActiveBank) = 6; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + + return FALSE; +} + +bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) +{ + u8 opposingIdentity; + u8 opposingBank; + s32 i; + u8 moveFlags; + u16 move; + + opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE; + opposingBank = GetBankByIdentity(opposingIdentity); + + if (!(gAbsentBankFlags & gBitTable[opposingBank])) + { + for (i = 0; i < 4; i++) + { + move = gBattleMons[gActiveBank].moves[i]; + if (move == MOVE_NONE) + continue; + + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability); + if (moveFlags & MOVESTATUS_SUPEREFFECTIVE) + { + if (noRng) + return TRUE; + if (Random() % 10 != 0) + return TRUE; + } + } + } + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return FALSE; + + opposingBank = GetBankByIdentity(opposingIdentity ^ BIT_MON); + + if (!(gAbsentBankFlags & gBitTable[opposingBank])) + { + for (i = 0; i < 4; i++) + { + move = gBattleMons[gActiveBank].moves[i]; + if (move == MOVE_NONE) + continue; + + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability); + if (moveFlags & MOVESTATUS_SUPEREFFECTIVE) + { + if (noRng) + return TRUE; + if (Random() % 10 != 0) + return TRUE; + } + } + } + + return FALSE; +} + +bool8 AreStatsRaised(void) +{ + u8 buffedStatsValue = 0; + s32 i; + + for (i = 0; i < BATTLE_STATS_NO; i++) + { + if (gBattleMons[gActiveBank].statStages[i] > 6) + buffedStatsValue += gBattleMons[gActiveBank].statStages[i] - 6; + } + + return (buffedStatsValue > 3); +} + +bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) +{ + u8 bankIn1, bankIn2; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party; + s32 i, j; + u16 move; + u8 moveFlags; + + if (gUnknown_02024250[gActiveBank] == 0) + return FALSE; + if (gUnknown_02024250[gActiveBank] == 0xFFFF) + return FALSE; + if (gUnknown_02024270[gActiveBank] == 0xFF) + return FALSE; + if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0) + return FALSE; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + bankIn1 = gActiveBank; + if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)]) + bankIn2 = gActiveBank; + else + bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON); + } + else + { + bankIn1 = gActiveBank; + bankIn2 = gActiveBank; + } + + if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) + { + if ((gActiveBank & BIT_MON) == 0) + firstId = 0, lastId = 3; + else + firstId = 3, lastId = 6; + } + else + { + firstId = 0, lastId = 6; + } + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = firstId; i < lastId; i++) + { + u16 species; + u8 monAbility; + + if (GetMonData(&party[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlePartyID[bankIn1]) + continue; + if (i == gBattlePartyID[bankIn2]) + continue; + if (i == *(gBattleStruct->field_5C + bankIn1)) + continue; + if (i == *(gBattleStruct->field_5C + bankIn2)) + continue; + + species = GetMonData(&party[i], MON_DATA_SPECIES); + if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0) + monAbility = gBaseStats[species].ability2; + else + monAbility = gBaseStats[species].ability1; + + moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility); + if (moveFlags & flags) + { + bankIn1 = gUnknown_02024270[gActiveBank]; + + for (j = 0; j < 4; j++) + { + move = GetMonData(&party[i], MON_DATA_MOVE1 + j); + if (move == 0) + continue; + + moveFlags = AI_TypeCalc(move, gBattleMons[bankIn1].species, gBattleMons[bankIn1].ability); + if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0) + { + *(gBattleStruct->field_294 + gActiveBank) = i; + EmitCmd_x21(1, 2, 0); + return TRUE; + } + } + } + } + + return FALSE; +} + +bool8 ShouldSwitch(void) +{ + u8 bankIn1, bankIn2; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party; + s32 i; + s32 availableToSwitch; + + if (gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + return FALSE; + if (gStatuses3[gActiveBank] & STATUS3_ROOTED) + return FALSE; + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0)) + return FALSE; + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0)) + return FALSE; // misses the flying or levitate check + if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, gActiveBank, ABILITY_MAGNET_PULL, 0, 0) + && (gBattleMons[gActiveBank].type1 == TYPE_STEEL || gBattleMons[gActiveBank].type2 == TYPE_STEEL)) + return FALSE; + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + return FALSE; + + availableToSwitch = 0; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + bankIn1 = gActiveBank; + if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)]) + bankIn2 = gActiveBank; + else + bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON); + } + else + { + bankIn1 = gActiveBank; + bankIn2 = gActiveBank; + } + + if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) + { + if ((gActiveBank & BIT_MON) == 0) + firstId = 0, lastId = 3; + else + firstId = 3, lastId = 6; + } + else + { + firstId = 0, lastId = 6; + } + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = firstId; i < lastId; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlePartyID[bankIn1]) + continue; + if (i == gBattlePartyID[bankIn2]) + continue; + if (i == *(gBattleStruct->field_5C + bankIn1)) + continue; + if (i == *(gBattleStruct->field_5C + bankIn2)) + continue; + + availableToSwitch++; + } + + if (availableToSwitch == 0) + return FALSE; + if (ShouldSwitchIfPerishSong()) + return TRUE; + if (ShouldSwitchIfWonderGuard()) + return TRUE; + if (sub_8062E54()) + return TRUE; + if (ShouldSwitchIfNaturalCure()) + return TRUE; + if (HasSuperEffectiveMoveAgainstOpponents(FALSE)) + return FALSE; + if (AreStatsRaised()) + return FALSE; + if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 2)) + return TRUE; + if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 3)) + return TRUE; + + return FALSE; +} diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 17b0e2ff97..50ae5bafe5 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1772,11 +1772,11 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef) return flags; } -u8 AI_TypeCalc(u16 move, u16 species, u8 ability) +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility) { s32 i = 0; u8 flags = 0; - u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2; + u8 type1 = gBaseStats[targetSpecies].type1, type2 = gBaseStats[targetSpecies].type2; u8 moveType; if (move == MOVE_STRUGGLE) @@ -1784,7 +1784,7 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability) moveType = gBattleMoves[move].type; - if (ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) { flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED; } @@ -1809,7 +1809,7 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability) i += 3; } } - if (ability == ABILITY_WONDER_GUARD + if (targetAbility == ABILITY_WONDER_GUARD && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) && gBattleMoves[move].power) flags |= MOVESTATUS_NOTAFFECTED; From 6dfe8ced2cb516202f2934bf02762503f55fd8da Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 10 Oct 2017 21:45:07 +0200 Subject: [PATCH 124/182] ai switching basically done --- asm/battle_9.s | 726 +------------------------ asm/battle_controller_opponent.s | 4 +- asm/battle_controller_player_partner.s | 4 +- include/battle.h | 1 + include/battle_ai_switch_items.h | 7 + src/battle_9.c | 299 +++++++++- 6 files changed, 299 insertions(+), 742 deletions(-) create mode 100644 include/battle_ai_switch_items.h diff --git a/asm/battle_9.s b/asm/battle_9.s index 6d77d15939..0cf529bcc3 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -5,726 +5,6 @@ .text - thumb_func_start sub_8063880 -sub_8063880: @ 8063880 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r6, r0, 24 - adds r5, r6, 0 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - ldr r1, =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _080638A8 - ldr r2, =gPlayerParty - mov r8, r2 -_080638A8: - ldr r7, =gBattleTypeFlags - ldr r0, [r7] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080638B6 - b _080639E6 -_080638B6: - bl ShouldSwitch - lsls r0, 24 - cmp r0, 0 - bne _080638C2 - b _080639DC -_080638C2: - ldrb r0, [r4] - ldr r2, =gBattleStruct - ldr r1, [r2] - adds r0, r1 - movs r1, 0xA5 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x6 - bne _080639B8 - bl sub_8063A90 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bne _080639A6 - ldr r0, [r7] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08063910 - adds r0, r6, 0 - bl GetBankByIdentity - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - b _08063928 - .pool -_08063910: - adds r0, r5, 0 - bl GetBankByIdentity - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x2 - eors r5, r0 - adds r0, r5, 0 - bl GetBankByIdentity - lsls r0, 24 - lsrs r5, r0, 24 -_08063928: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00808000 - ands r0, r1 - cmp r0, 0 - beq _08063958 - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08063954 - movs r0, 0 - movs r7, 0x3 - b _0806395C - .pool -_08063954: - movs r0, 0x3 - b _0806395A -_08063958: - movs r0, 0 -_0806395A: - movs r7, 0x6 -_0806395C: - adds r4, r0, 0 - cmp r4, r7 - bge _080639A6 -_08063962: - movs r0, 0x64 - muls r0, r4 - add r0, r8 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080639A0 - ldr r1, =gBattlePartyID - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _080639A0 - lsls r0, r5, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _080639A0 - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r0, r6, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r4, r0 - beq _080639A0 - adds r0, r5, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r4, r0 - bne _080639A6 -_080639A0: - adds r4, 0x1 - cmp r4, r7 - blt _08063962 -_080639A6: - ldr r0, =gActiveBank - ldrb r0, [r0] - ldr r2, =gBattleStruct - ldr r1, [r2] - adds r0, r1 - movs r1, 0xA5 - lsls r1, 2 - adds r0, r1 - strb r4, [r0] -_080639B8: - ldr r0, =gActiveBank - ldrb r1, [r0] - ldr r0, [r2] - adds r0, r1, r0 - adds r1, r0, 0 - adds r1, 0x5C - movs r2, 0xA5 - lsls r2, 2 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - b _080639F8 - .pool -_080639DC: - bl sub_8063EE0 - lsls r0, 24 - cmp r0, 0 - bne _080639F8 -_080639E6: - ldr r0, =gActiveBank - ldrb r0, [r0] - movs r2, 0x1 - eors r2, r0 - lsls r2, 8 - movs r0, 0x1 - movs r1, 0 - bl EmitCmd_x21 -_080639F8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8063880 - - thumb_func_start sub_8063A08 -sub_8063A08: @ 8063A08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r3, 0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - movs r7, 0 - ldr r0, =gTypeEffectiveness - mov r10, r0 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08063A7A - mov r5, r10 -_08063A36: - ldrb r0, [r5] - cmp r0, 0xFE - beq _08063A6C - ldr r1, [sp] - cmp r0, r1 - bne _08063A6C - ldrb r4, [r5, 0x1] - cmp r4, r9 - bne _08063A56 - ldrb r1, [r6] - ldrb r0, [r5, 0x2] - muls r0, r1 - movs r1, 0xA - bl __divsi3 - strb r0, [r6] -_08063A56: - cmp r4, r8 - bne _08063A6C - cmp r9, r8 - beq _08063A6C - ldrb r1, [r6] - ldrb r0, [r5, 0x2] - muls r0, r1 - movs r1, 0xA - bl __divsi3 - strb r0, [r6] -_08063A6C: - adds r5, 0x3 - adds r7, 0x3 - mov r1, r10 - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08063A36 -_08063A7A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8063A08 - - thumb_func_start sub_8063A90 -sub_8063A90: @ 8063A90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r4, =gActiveBank - ldrb r2, [r4] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, r2, r0 - adds r1, r0, 0 - adds r1, 0x5C - ldrb r0, [r1] - cmp r0, 0x6 - beq _08063AB2 - b _08063E50 -_08063AB2: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 11 - ands r0, r1 - cmp r0, 0 - beq _08063AE0 - ldr r1, =gBattlePartyID - lsls r0, r2, 1 - adds r0, r1 - ldrb r0, [r0] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - b _08063E50 - .pool -_08063AE0: - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08063B6C - str r2, [sp, 0x10] - adds r0, r2, 0 - bl GetBankIdentity - movs r5, 0x2 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - ldr r1, =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08063B20 - ldrb r4, [r4] - str r4, [sp, 0x14] - b _08063B36 - .pool -_08063B20: - ldrb r0, [r4] - bl GetBankIdentity - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] -_08063B36: - bl Random - movs r3, 0x2 - ands r0, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldr r4, [sp, 0x4] - lsls r0, r4, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08063B8A - eors r4, r3 - lsls r0, r4, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - b _08063B8A - .pool -_08063B6C: - adds r0, r2, 0 - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldrb r4, [r4] - str r4, [sp, 0x14] - str r4, [sp, 0x10] -_08063B8A: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00808000 - ands r0, r1 - cmp r0, 0 - beq _08063BC2 - ldr r2, =gActiveBank - ldrb r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08063BB8 - movs r0, 0 - str r0, [sp, 0x18] - movs r1, 0x3 - str r1, [sp, 0x1C] - b _08063BCC - .pool -_08063BB8: - movs r4, 0x3 - str r4, [sp, 0x18] - movs r0, 0x6 - str r0, [sp, 0x1C] - b _08063BCC -_08063BC2: - movs r1, 0 - str r1, [sp, 0x18] - movs r2, 0x6 - str r2, [sp, 0x1C] - ldr r2, =gActiveBank -_08063BCC: - ldrb r0, [r2] - bl GetBankSide - lsls r0, 24 - ldr r4, =gEnemyParty - str r4, [sp, 0x20] - cmp r0, 0 - bne _08063BE0 - ldr r0, =gPlayerParty - str r0, [sp, 0x20] -_08063BE0: - movs r1, 0 - mov r9, r1 -_08063BE4: - movs r2, 0 - str r2, [sp, 0x8] - movs r4, 0x6 - str r4, [sp, 0xC] - ldr r7, [sp, 0x18] - ldr r0, [sp, 0x1C] - cmp r7, r0 - blt _08063BF6 - b _08063CF2 -_08063BF6: - lsls r0, r7, 2 - ldr r1, =gBitTable - adds r0, r1 - mov r8, r0 - mov r10, sp -_08063C00: - movs r0, 0x64 - muls r0, r7 - ldr r2, [sp, 0x20] - adds r4, r2, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _08063CD8 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08063CD8 - mov r4, r8 - ldr r0, [r4] - mov r1, r9 - ands r0, r1 - cmp r0, 0 - bne _08063CD8 - ldr r1, =gBattlePartyID - ldr r2, [sp, 0x10] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _08063CD8 - ldr r4, [sp, 0x14] - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _08063CD8 - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08063CD8 - adds r0, r4, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08063CD8 - ldr r1, =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x6] - ldrb r6, [r0, 0x7] - movs r0, 0xA - mov r1, r10 - strb r0, [r1] - movs r0, 0x58 - ldr r2, [sp, 0x4] - adds r4, r2, 0 - muls r4, r0 - ldr r0, =gBattleMons - adds r4, r0 - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - adds r1, r5, 0 - adds r2, r6, 0 - mov r3, sp - bl sub_8063A08 - adds r4, 0x22 - ldrb r0, [r4] - adds r1, r5, 0 - adds r2, r6, 0 - mov r3, sp - bl sub_8063A08 - ldr r2, [sp, 0x8] - mov r1, r10 - ldrb r1, [r1] - cmp r2, r1 - bcs _08063CE6 - mov r2, r10 - ldrb r2, [r2] - str r2, [sp, 0x8] - lsls r0, r7, 24 - lsrs r0, 24 - str r0, [sp, 0xC] - b _08063CE6 - .pool -_08063CD8: - mov r4, r8 - ldr r0, [r4] - mov r1, r9 - orrs r1, r0 - lsls r0, r1, 24 - lsrs r0, 24 - mov r9, r0 -_08063CE6: - movs r2, 0x4 - add r8, r2 - adds r7, 0x1 - ldr r4, [sp, 0x1C] - cmp r7, r4 - blt _08063C00 -_08063CF2: - ldr r0, [sp, 0xC] - cmp r0, 0x6 - beq _08063D54 - movs r7, 0 - movs r0, 0x64 - ldr r1, [sp, 0xC] - adds r5, r1, 0 - muls r5, r0 -_08063D02: - adds r1, r7, 0 - adds r1, 0xD - ldr r2, [sp, 0x20] - adds r0, r2, r5 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08063D2A - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r0, r4, 0 - ldr r2, [sp, 0x4] - bl TypeCalc - movs r1, 0x2 - ands r1, r0 - cmp r1, 0 - bne _08063D30 -_08063D2A: - adds r7, 0x1 - cmp r7, 0x3 - ble _08063D02 -_08063D30: - cmp r7, 0x4 - beq _08063D36 - b _08063E4E -_08063D36: - ldr r4, [sp, 0xC] - lsls r0, r4, 2 - ldr r1, =gBitTable - adds r0, r1 - ldr r0, [r0] - mov r2, r9 - orrs r2, r0 - lsls r0, r2, 24 - lsrs r0, 24 - mov r9, r0 - b _08063D58 - .pool -_08063D54: - movs r4, 0x3F - mov r9, r4 -_08063D58: - mov r0, r9 - cmp r0, 0x3F - beq _08063D60 - b _08063BE4 -_08063D60: - ldr r0, =gDynamicBasePower - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - strb r1, [r0, 0x13] - ldr r0, =gBattleScripting - movs r2, 0x1 - strb r2, [r0, 0xE] - ldr r0, =gBattleMoveFlags - strb r1, [r0] - ldr r0, =gCritMultiplier - strb r2, [r0] - movs r1, 0 - str r1, [sp, 0x8] - movs r2, 0x6 - str r2, [sp, 0xC] - ldr r7, [sp, 0x18] - ldr r4, [sp, 0x1C] - cmp r7, r4 - bge _08063E4E -_08063D8A: - movs r0, 0x64 - adds r6, r7, 0 - muls r6, r0 - ldr r0, [sp, 0x20] - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - adds r1, r7, 0x1 - mov r10, r1 - cmp r0, 0 - beq _08063E46 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08063E46 - ldr r1, =gBattlePartyID - ldr r2, [sp, 0x10] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _08063E46 - ldr r4, [sp, 0x14] - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _08063E46 - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08063E46 - adds r0, r4, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08063E46 - movs r5, 0 - mov r9, r6 - ldr r0, =gBattleMoveDamage - mov r8, r0 - ldr r6, =gActiveBank -_08063DEE: - adds r1, r5, 0 - adds r1, 0xD - ldr r0, [sp, 0x20] - add r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0 - mov r1, r8 - str r0, [r1] - cmp r4, 0 - beq _08063E2A - ldr r0, =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - beq _08063E2A - ldrb r0, [r6] - ldr r1, [sp, 0x4] - bl AI_CalcDmg - ldrb r1, [r6] - adds r0, r4, 0 - ldr r2, [sp, 0x4] - bl TypeCalc -_08063E2A: - mov r2, r8 - ldr r0, [r2] - ldr r4, [sp, 0x8] - cmp r4, r0 - bge _08063E40 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r0, r7, 24 - lsrs r0, 24 - str r0, [sp, 0xC] -_08063E40: - adds r5, 0x1 - cmp r5, 0x3 - ble _08063DEE -_08063E46: - mov r7, r10 - ldr r0, [sp, 0x1C] - cmp r7, r0 - blt _08063D8A -_08063E4E: - ldr r0, [sp, 0xC] -_08063E50: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8063A90 thumb_func_start ai_identify_item_effect ai_identify_item_effect: @ 8063E84 @@ -783,8 +63,8 @@ _08063EDA: bx r1 thumb_func_end ai_identify_item_effect - thumb_func_start sub_8063EE0 -sub_8063EE0: @ 8063EE0 + thumb_func_start ShouldUseItem +ShouldUseItem: @ 8063EE0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1361,6 +641,6 @@ _0806437E: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8063EE0 + thumb_func_end ShouldUseItem .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 3fbeac5c1c..896d86d3a8 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5212,7 +5212,7 @@ sub_8061F90: @ 8061F90 thumb_func_start sub_8061F9C sub_8061F9C: @ 8061F9C push {lr} - bl sub_8063880 + bl AI_TrySwitchOrUseItem bl OpponentBufferExecCompleted pop {r0} bx r0 @@ -5456,7 +5456,7 @@ sub_8062188: @ 8062188 ldrb r0, [r1] cmp r0, 0x6 bne _08062254 - bl sub_8063A90 + bl GetMostSuitableMonToSwitchInto lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 269e5347b2..8c080500e3 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4990,7 +4990,7 @@ sub_81BDAA0: @ 81BDAA0 thumb_func_start sub_81BDAAC sub_81BDAAC: @ 81BDAAC push {lr} - bl sub_8063880 + bl AI_TrySwitchOrUseItem bl PlayerPartnerBufferExecCompleted pop {r0} bx r0 @@ -5087,7 +5087,7 @@ sub_81BDB70: @ 81BDB70 thumb_func_start sub_81BDB7C sub_81BDB7C: @ 81BDB7C push {r4-r6,lr} - bl sub_8063A90 + bl GetMostSuitableMonToSwitchInto lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 diff --git a/include/battle.h b/include/battle.h index bb61c70433..0aa778fe26 100644 --- a/include/battle.h +++ b/include/battle.h @@ -5,6 +5,7 @@ #include "battle_util.h" #include "battle_script_commands.h" #include "battle_2.h" +#include "battle_ai_switch_items.h" /* Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h new file mode 100644 index 0000000000..5c78a5386f --- /dev/null +++ b/include/battle_ai_switch_items.h @@ -0,0 +1,7 @@ +#ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H +#define GUARD_BATTLE_AI_SWITCH_ITEMS_H + +void AI_TrySwitchOrUseItem(void); +u8 GetMostSuitableMonToSwitchInto(void); + +#endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H diff --git a/src/battle_9.c b/src/battle_9.c index 1b1a4ab7cf..291bfc9e37 100644 --- a/src/battle_9.c +++ b/src/battle_9.c @@ -16,13 +16,19 @@ extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; +extern u16 gDynamicBasePower; +extern u8 gBattleMoveFlags; +extern u8 gCritMultiplier; +extern s32 gBattleMoveDamage; extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; +extern const u8 gTypeEffectiveness[]; // this file's functions bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng); bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent); +bool8 ShouldUseItem(void); bool8 ShouldSwitchIfPerishSong(void) { @@ -121,7 +127,7 @@ bool8 ShouldSwitchIfWonderGuard(void) return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard } -bool8 sub_8062E54(void) +bool8 FindMonThatAbsorbsOpponentsMove(void) { u8 bankIn1, bankIn2; u8 absorbingTypeAbility; @@ -430,13 +436,14 @@ bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) bool8 ShouldSwitch(void) { u8 bankIn1, bankIn2; + u8 *activeBankPtr; // needed to match s32 firstId; s32 lastId; // + 1 struct Pokemon *party; s32 i; s32 availableToSwitch; - if (gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + if (gBattleMons[*(activeBankPtr = &gActiveBank)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) return FALSE; if (gStatuses3[gActiveBank] & STATUS3_ROOTED) return FALSE; @@ -444,25 +451,29 @@ bool8 ShouldSwitch(void) return FALSE; if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0)) return FALSE; // misses the flying or levitate check - if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, gActiveBank, ABILITY_MAGNET_PULL, 0, 0) - && (gBattleMons[gActiveBank].type1 == TYPE_STEEL || gBattleMons[gActiveBank].type2 == TYPE_STEEL)) - return FALSE; + if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0)) + { + if (gBattleMons[gActiveBank].type1 == TYPE_STEEL) + return FALSE; + if (gBattleMons[gActiveBank].type2 == TYPE_STEEL) + return FALSE; + } if (gBattleTypeFlags & BATTLE_TYPE_ARENA) return FALSE; availableToSwitch = 0; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - bankIn1 = gActiveBank; - if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)]) - bankIn2 = gActiveBank; + bankIn1 = *activeBankPtr; + if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON)]) + bankIn2 = *activeBankPtr; else - bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON); + bankIn2 = GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON); } else { - bankIn1 = gActiveBank; - bankIn2 = gActiveBank; + bankIn1 = *activeBankPtr; + bankIn2 = *activeBankPtr; } if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) @@ -508,7 +519,7 @@ bool8 ShouldSwitch(void) return TRUE; if (ShouldSwitchIfWonderGuard()) return TRUE; - if (sub_8062E54()) + if (FindMonThatAbsorbsOpponentsMove()) return TRUE; if (ShouldSwitchIfNaturalCure()) return TRUE; @@ -516,10 +527,268 @@ bool8 ShouldSwitch(void) return FALSE; if (AreStatsRaised()) return FALSE; - if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 2)) - return TRUE; - if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 3)) + if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 2) + || FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 3)) return TRUE; return FALSE; } + +void AI_TrySwitchOrUseItem(void) +{ + struct Pokemon *party; + u8 bankIn1, bankIn2; + s32 firstId; + s32 lastId; // + 1 + u8 bankIdentity = GetBankIdentity(gActiveBank); + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (ShouldSwitch()) + { + if (*(gBattleStruct->field_294 + gActiveBank) == 6) + { + s32 monToSwitchId = GetMostSuitableMonToSwitchInto(); + if (monToSwitchId == 6) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + bankIn1 = GetBankByIdentity(bankIdentity); + bankIn2 = bankIn1; + } + else + { + bankIn1 = GetBankByIdentity(bankIdentity); + bankIn2 = GetBankByIdentity(bankIdentity ^ BIT_MON); + } + + if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) + { + if ((gActiveBank & BIT_MON) == 0) + firstId = 0, lastId = 3; + else + firstId = 3, lastId = 6; + } + else + { + firstId = 0, lastId = 6; + } + + for (monToSwitchId = firstId; monToSwitchId < lastId; monToSwitchId++) + { + if (GetMonData(&party[monToSwitchId], MON_DATA_HP) == 0) + continue; + if (monToSwitchId == gBattlePartyID[bankIn1]) + continue; + if (monToSwitchId == gBattlePartyID[bankIn2]) + continue; + if (monToSwitchId == *(gBattleStruct->field_5C + bankIn1)) + continue; + if (monToSwitchId == *(gBattleStruct->field_5C + bankIn2)) + continue; + + break; + } + } + + *(gBattleStruct->field_294 + gActiveBank) = monToSwitchId; + } + + *(gBattleStruct->field_5C + gActiveBank) = *(gBattleStruct->field_294 + gActiveBank); + return; + } + else if (ShouldUseItem()) + { + return; + } + } + + EmitCmd_x21(1, 0, (gActiveBank ^ BIT_SIDE) << 8); +} + +#define TYPE_FORESIGHT 0xFE +#define TYPE_ENDTABLE 0xFF + +static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var) +{ + s32 i = 0; + + while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + i += 3; + continue; + } + else if (gTypeEffectiveness[i] == atkType) + { + // check type1 + if (gTypeEffectiveness[i + 1] == defType1) + *var = (*var * gTypeEffectiveness[i + 2]) / 10; + // check type2 + if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2) + *var = (*var * gTypeEffectiveness[i + 2]) / 10; + } + i += 3; + } +} + +u8 GetMostSuitableMonToSwitchInto(void) +{ + u8 opposingBank; + u8 bestDmg; // note : should be changed to u32 for obvious reasons + u8 bestMonId; + u8 bankIn1, bankIn2; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party; + s32 i, j; + u8 invalidMons; + u16 move; + + if (*(gBattleStruct->field_5C + gActiveBank) != 6) + return *(gBattleStruct->field_5C + gActiveBank); + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + return gBattlePartyID[gActiveBank] + 1; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + bankIn1 = gActiveBank; + if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)]) + bankIn2 = gActiveBank; + else + bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON); + + // UB: It considers the opponent only player's side even though it can battle alongside player; + opposingBank = Random() & BIT_MON; + if (gAbsentBankFlags & gBitTable[opposingBank]) + opposingBank ^= BIT_MON; + } + else + { + opposingBank = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_SIDE); + bankIn1 = gActiveBank; + bankIn2 = gActiveBank; + } + + if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) + { + if ((gActiveBank & BIT_MON) == 0) + firstId = 0, lastId = 3; + else + firstId = 3, lastId = 6; + } + else + { + firstId = 0, lastId = 6; + } + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + invalidMons = 0; + + while (invalidMons != 0x3F) // all mons are invalid + { + bestDmg = 0; + bestMonId = 6; + // find the mon which type is the most suitable offensively + for (i = firstId; i < lastId; i++) + { + u16 species = GetMonData(&party[i], MON_DATA_SPECIES); + if (species != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_HP) != 0 + && !(gBitTable[i] & invalidMons) + && gBattlePartyID[bankIn1] != i + && gBattlePartyID[bankIn2] != i + && i != *(gBattleStruct->field_5C + bankIn1) + && i != *(gBattleStruct->field_5C + bankIn2)) + { + u8 type1 = gBaseStats[species].type1; + u8 type2 = gBaseStats[species].type2; + u8 typeDmg = 10; + ModulateByTypeEffectiveness(gBattleMons[opposingBank].type1, type1, type2, &typeDmg); + ModulateByTypeEffectiveness(gBattleMons[opposingBank].type2, type1, type2, &typeDmg); + if (bestDmg < typeDmg) + { + bestDmg = typeDmg; + bestMonId = i; + } + } + else + { + invalidMons |= gBitTable[i]; + } + } + + // ok, we know the mon has the right typing but does it have at least one super effective move? + if (bestMonId != 6) + { + for (i = 0; i < 4; i++) + { + move = GetMonData(&party[bestMonId], MON_DATA_MOVE1 + i); + if (move != MOVE_NONE && TypeCalc(move, gActiveBank, opposingBank) & MOVESTATUS_SUPEREFFECTIVE) + break; + } + + if (i != 4) + return bestMonId; // has both the typing and at least one super effective move + + invalidMons |= gBitTable[bestMonId]; // sorry buddy, we want something better + } + else + { + invalidMons = 0x3F; // no viable mon to switch + } + } + + gDynamicBasePower = 0; + gBattleStruct->dynamicMoveType = 0; + gBattleScripting.dmgMultiplier = 1; + gBattleMoveFlags = 0; + gCritMultiplier = 1; + bestDmg = 0; + bestMonId = 6; + + // if we couldn't find the best mon in terms of typing, find the one that deals most damage + for (i = firstId; i < lastId; i++) + { + if ((u16)(GetMonData(&party[i], MON_DATA_SPECIES)) == SPECIES_NONE) + continue; + if (GetMonData(&party[i], MON_DATA_HP) == 0) + continue; + if (gBattlePartyID[bankIn1] == i) + continue; + if (gBattlePartyID[bankIn2] == i) + continue; + if (i == *(gBattleStruct->field_5C + bankIn1)) + continue; + if (i == *(gBattleStruct->field_5C + bankIn2)) + continue; + + for (j = 0; j < 4; j++) + { + move = GetMonData(&party[i], MON_DATA_MOVE1 + j); + gBattleMoveDamage = 0; + if (move != MOVE_NONE && gBattleMoves[move].power != 1) + { + AI_CalcDmg(gActiveBank, opposingBank); + TypeCalc(move, gActiveBank, opposingBank); + } + if (bestDmg < gBattleMoveDamage) + { + bestDmg = gBattleMoveDamage; + bestMonId = i; + } + } + } + + return bestMonId; +} From a3b62f43ee4ce02d8b7dd28acf53692567754bd3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 11 Oct 2017 12:49:42 +0200 Subject: [PATCH 125/182] battle 9 is decompiled --- asm/battle_9.s | 646 ------------------- include/battle.h | 6 +- include/battle_ai_switch_items.h | 10 + include/pokemon.h | 1 + include/pokemon_item_effects.h | 54 ++ ld_script.txt | 3 +- src/battle_2.c | 28 +- src/battle_ai_script_commands.c | 2 +- src/{battle_9.c => battle_ai_switch_items.c} | 179 ++++- 9 files changed, 252 insertions(+), 677 deletions(-) delete mode 100644 asm/battle_9.s rename src/{battle_9.c => battle_ai_switch_items.c} (78%) diff --git a/asm/battle_9.s b/asm/battle_9.s deleted file mode 100644 index 0cf529bcc3..0000000000 --- a/asm/battle_9.s +++ /dev/null @@ -1,646 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ai_identify_item_effect -ai_identify_item_effect: @ 8063E84 - push {r4,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bne _08063E94 - movs r0, 0x1 - b _08063EDA -_08063E94: - ldrb r1, [r2, 0x4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08063EA2 - movs r0, 0x2 - b _08063EDA -_08063EA2: - ldrb r4, [r2, 0x3] - movs r3, 0x3F - adds r0, r3, 0 - ands r0, r4 - cmp r0, 0 - beq _08063EB2 - movs r0, 0x3 - b _08063EDA -_08063EB2: - ldrb r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08063EC8 - ldrb r0, [r2, 0x1] - cmp r0, 0 - bne _08063EC8 - ldrb r0, [r2, 0x2] - cmp r0, 0 - beq _08063ECC -_08063EC8: - movs r0, 0x4 - b _08063EDA -_08063ECC: - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - bne _08063ED8 - movs r0, 0x6 - b _08063EDA -_08063ED8: - movs r0, 0x5 -_08063EDA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end ai_identify_item_effect - - thumb_func_start ShouldUseItem -ShouldUseItem: @ 8063EE0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r10, r0 - movs r7, 0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _08063F12 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08063F12 - b _0806437C -_08063F12: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r5, =gEnemyParty - cmp r0, 0 - bne _08063F24 - ldr r5, =gPlayerParty -_08063F24: - movs r1, 0 - mov r8, r1 -_08063F28: - movs r0, 0x64 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r4, r5, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08063F64 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08063F64 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08063F64 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_08063F64: - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x5 - ble _08063F28 - movs r2, 0 - mov r8, r2 -_08063F72: - ldr r1, =gBattleResources - mov r0, r8 - cmp r0, 0 - beq _08063F8E - ldr r0, [r1] - ldr r0, [r0, 0x18] - adds r0, 0x50 - ldrb r0, [r0] - mov r2, r8 - subs r0, r2 - adds r0, 0x1 - cmp r10, r0 - ble _08063F8E - b _08064370 -_08063F8E: - ldr r0, [r1] - ldr r0, [r0, 0x18] - mov r2, r8 - lsls r1, r2, 1 - adds r0, 0x48 - adds r0, r1 - ldrh r0, [r0] - mov r9, r0 - str r1, [sp] - cmp r0, 0 - bne _08063FA6 - b _08064370 -_08063FA6: - ldr r1, =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - cmp r1, 0 - bne _08063FB6 - b _08064370 -_08063FB6: - mov r0, r9 - cmp r0, 0xAF - bne _08063FE8 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003214 - adds r5, r0, r1 - b _08063FEA - .pool -_08063FE8: - adds r5, r1, 0 -_08063FEA: - mov r2, r9 - lsls r0, r2, 24 - lsrs r0, 24 - adds r1, r5, 0 - bl ai_identify_item_effect - ldr r4, =gActiveBank - ldrb r1, [r4] - lsrs r1, 1 - ldr r3, =gBattleStruct - ldr r2, [r3] - adds r1, r2 - adds r1, 0xC4 - strb r0, [r1] - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x5 - bls _0806401A - b _08064324 -_0806401A: - lsls r0, 2 - ldr r1, =_08064030 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08064030: - .4byte _08064048 - .4byte _08064074 - .4byte _080640BC - .4byte _08064214 - .4byte _080642F4 - .4byte _0806437C -_08064048: - ldr r2, =gBattleMons - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x2C] - ldrh r0, [r0, 0x28] - lsrs r1, 2 - cmp r0, r1 - bcc _08064060 - b _08064324 -_08064060: - cmp r0, 0 - bne _08064066 - b _08064324 -_08064066: - movs r7, 0x1 - b _08064328 - .pool -_08064074: - mov r0, r9 - movs r1, 0x4 - movs r2, 0x4 - bl GetItemEffectParamOffset - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08064088 - b _08064324 -_08064088: - ldr r2, =gBattleMons - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - ldrh r2, [r1, 0x28] - cmp r2, 0 - bne _0806409C - b _08064324 -_0806409C: - ldrh r3, [r1, 0x2C] - lsrs r0, r3, 2 - cmp r2, r0 - bcc _08064066 - adds r0, r2, 0 - subs r0, r3, r0 - adds r1, r5, r4 - ldrb r1, [r1] - cmp r0, r1 - bgt _080640B2 - b _08064324 -_080640B2: - b _08064066 - .pool -_080640BC: - ldr r3, =gActiveBank - ldrb r0, [r3] - lsrs r0, 1 - ldr r2, =gBattleStruct - ldr r1, [r2] - adds r0, r1 - adds r0, 0xC6 - movs r1, 0 - strb r1, [r0] - ldrb r1, [r5, 0x3] - movs r6, 0x20 - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08064100 - ldr r1, =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08064100 - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_08064100: - ldrb r1, [r5, 0x3] - movs r6, 0x10 - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0806413A - ldr r1, =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0806412A - movs r0, 0x80 - ands r1, r0 - cmp r1, 0 - beq _0806413A -_0806412A: - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0806413A: - ldrb r1, [r5, 0x3] - movs r6, 0x8 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0806416C - ldr r1, =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0806416C - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0806416C: - ldrb r1, [r5, 0x3] - movs r6, 0x4 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0806419E - ldr r1, =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0806419E - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0806419E: - ldrb r1, [r5, 0x3] - movs r6, 0x2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080641D0 - ldr r1, =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080641D0 - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_080641D0: - ldrb r1, [r5, 0x3] - movs r4, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080641DE - b _08064324 -_080641DE: - ldr r1, =gBattleMons - ldrb r3, [r3] - movs r0, 0x58 - muls r0, r3 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _080641F6 - b _08064324 -_080641F6: - lsrs r1, r3, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - b _08064066 - .pool -_08064214: - ldr r4, =gActiveBank - ldrb r0, [r4] - lsrs r0, 1 - ldr r3, =gBattleStruct - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - movs r1, 0 - strb r1, [r0] - ldr r1, =gDisableStructs - ldrb r2, [r4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _08064324 - ldrb r1, [r5] - movs r6, 0xF - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _08064254 - lsrs r2, 1 - ldr r0, [r3] - adds r2, r0 - adds r2, 0xC6 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_08064254: - ldrb r1, [r5, 0x1] - movs r7, 0xF0 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08064272 - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_08064272: - ldrb r1, [r5, 0x1] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0806428E - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0806428E: - ldrb r1, [r5, 0x2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080642AA - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_080642AA: - ldrb r1, [r5, 0x2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080642C6 - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] -_080642C6: - ldrb r1, [r5] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0 - bne _080642D2 - b _08064066 -_080642D2: - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _08064066 - .pool -_080642F4: - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, =gDisableStructs - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _08064324 - ldr r0, =gSideTimers - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _08064324 - b _08064066 -_08064324: - cmp r7, 0 - beq _08064370 -_08064328: - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl EmitCmd_x21 - ldr r0, =gActiveBank - ldrb r0, [r0] - lsrs r0, 1 - ldr r1, =gBattleStruct - ldr r1, [r1] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC0 - mov r1, r9 - strb r1, [r0] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x18] - adds r0, 0x48 - ldr r2, [sp] - adds r0, r2 - movs r1, 0 - strh r1, [r0] - adds r0, r7, 0 - b _0806437E - .pool -_08064370: - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x3 - bgt _0806437C - b _08063F72 -_0806437C: - movs r0, 0 -_0806437E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ShouldUseItem - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle.h b/include/battle.h index 0aa778fe26..a60f450ce1 100644 --- a/include/battle.h +++ b/include/battle.h @@ -477,7 +477,7 @@ struct BattleHistory struct UsedMoves usedMoves[BATTLE_BANKS_COUNT]; u8 abilities[BATTLE_BANKS_COUNT]; u8 itemEffects[BATTLE_BANKS_COUNT]; - u16 TrainerItems[BATTLE_BANKS_COUNT]; + u16 trainerItems[BATTLE_BANKS_COUNT]; u8 itemsNo; }; @@ -633,8 +633,8 @@ struct BattleStruct void (*savedCallback)(void); u16 usedHeldItems[BATTLE_BANKS_COUNT]; u8 field_C0[4]; - u8 field_C4[2]; - u8 field_C6[2]; + u8 AI_itemType[2]; + u8 AI_itemFlags[2]; u16 choicedMove[BATTLE_BANKS_COUNT]; u16 changedItems[BATTLE_BANKS_COUNT]; u8 intimidateBank; diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index 5c78a5386f..0a230e7f6e 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -1,6 +1,16 @@ #ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H #define GUARD_BATTLE_AI_SWITCH_ITEMS_H +enum +{ + AI_ITEM_FULL_RESTORE = 1, + AI_ITEM_HEAL_HP, + AI_ITEM_CURE_CONDITION, + AI_ITEM_X_STAT, + AI_ITEM_GUARD_SPECS, + AI_ITEM_NOT_RECOGNIZABLE +}; + void AI_TrySwitchOrUseItem(void); u8 GetMostSuitableMonToSwitchInto(void); diff --git a/include/pokemon.h b/include/pokemon.h index 263a37426f..c26c28afa4 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -642,6 +642,7 @@ void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2); s8 GetFlavourRelationByPersonality(u32 personality, u8 a2); +u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); #include "sprite.h" diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h index 88f3413177..505cc0f258 100644 --- a/include/pokemon_item_effects.h +++ b/include/pokemon_item_effects.h @@ -3,6 +3,60 @@ #include "pokemon.h" +// TODO once pokemon item effects is decompiled +/* +struct PokemonItemEffect +{ + //field 0 + u8 xAtk : 4; // x1, x2, x4, x8 = xF + u8 field_0_x10 : 1; // x10 + u8 critRatioUp : 1; // x20 + u8 field_0_x40 : 1; // x40 + u8 cureInfatuation : 1; // x80 + + /*field 1 + u8 xSpeed : 4; // x1, x2, x4, x8 = xF + u8 xDefense : 4; // x10, x20, x40, xF0 + + /*field 2 + u8 xSpAtk : 4; // x1, x2, x4, x8 = xF + u8 xAccuracy : 4; // x10, x20, x40, xF0 + + /*field 3 + u8 cureConfusion : 1; // x1 + u8 cureParalysis : 1; // x2 + u8 cureFreeze : 1; // x4 + u8 cureBurn : 1; // x8 + u8 curePoison : 1; // x10 + u8 cureSleep : 1; // x20 + u8 field_3_x40 : 1; // x40 + u8 cantLowerStats : 1; // x80 + + /*field 4 + u8 hpEv : 1; // x1 + u8 attackEv : 1; // x2 + u8 healHp : 1; // x4 + u8 field_4_x8 : 1; // x8 + u8 field_4_x10 : 1; // x10 + u8 ppUp : 1; // x20 + u8 levelUp : 1; // x40 + u8 evolutionStone : 1; // x80 + + /*field 5 + u8 defEv: 1; // x1 + u8 speedEv : 1; // x2 + u8 spDefEv : 1; // x4 + u8 spAtkEv : 1; // x8 + u8 ppMax : 1; // x10 + u8 field_5_x20 : 1; // x20 + u8 field_5_x40 : 1; // x40 + u8 field_5_x80 : 1; // x80 + + /*field 6 + u8 value; +}; +*/ + bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5); #endif // GUARD_POKEMON_ITEM_EFFECTS diff --git a/ld_script.txt b/ld_script.txt index 1da43ff9d2..887f248118 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -64,8 +64,7 @@ SECTIONS { asm/battle_controller_player.o(.text); asm/battle_7.o(.text); asm/battle_controller_opponent.o(.text); - src/battle_9.o(.text); - asm/battle_9.o(.text); + src/battle_ai_switch_items.o(.text); asm/battle_controller_linkopponent.o(.text); src/pokemon_1.o(.text); asm/pokemon_1.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index 92c48c4273..c4da02e366 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -5324,30 +5324,30 @@ static void HandleAction_UseItem(void) { gBattleScripting.bank = gBankAttacker; - switch (*(gBattleStruct->field_C4 + (gBankAttacker >> 1))) + switch (*(gBattleStruct->AI_itemType + (gBankAttacker >> 1))) { - case 1: - case 2: + case AI_ITEM_FULL_RESTORE: + case AI_ITEM_HEAL_HP: break; - case 3: + case AI_ITEM_CURE_CONDITION: gBattleCommunication[MULTISTRING_CHOOSER] = 0; - if (*(gBattleStruct->field_C6 + gBankAttacker / 2) & 1) + if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1) { - if (*(gBattleStruct->field_C6 + gBankAttacker / 2) & 0x3E) + if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 0x3E) gBattleCommunication[MULTISTRING_CHOOSER] = 5; } else { - while (!(*(gBattleStruct->field_C6 + gBankAttacker / 2) & 1)) + while (!(*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1)) { - *(gBattleStruct->field_C6 + gBankAttacker / 2) >>= 1; + *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1; gBattleCommunication[MULTISTRING_CHOOSER]++; } } break; - case 4: + case AI_ITEM_X_STAT: gBattleCommunication[MULTISTRING_CHOOSER] = 4; - if (*(gBattleStruct->field_C6 + (gBankAttacker >> 1)) & 0x80) + if (*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1)) & 0x80) { gBattleCommunication[MULTISTRING_CHOOSER] = 5; } @@ -5356,9 +5356,9 @@ static void HandleAction_UseItem(void) PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK) PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2) - while (!((*(gBattleStruct->field_C6 + (gBankAttacker >> 1))) & 1)) + while (!((*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1))) & 1)) { - *(gBattleStruct->field_C6 + gBankAttacker / 2) >>= 1; + *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1; gBattleTextBuff1[2]++; } @@ -5366,7 +5366,7 @@ static void HandleAction_UseItem(void) gBattleScripting.animArg2 = 0; } break; - case 5: + case AI_ITEM_GUARD_SPECS: if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) gBattleCommunication[MULTISTRING_CHOOSER] = 2; else @@ -5374,7 +5374,7 @@ static void HandleAction_UseItem(void) break; } - gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->field_C4 + gBankAttacker / 2)]; + gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->AI_itemType + gBankAttacker / 2)]; } gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index bba66983b1..24377eacc6 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -331,7 +331,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves) { if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0) { - gBattleResources->battleHistory->TrainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i]; + gBattleResources->battleHistory->trainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i]; gBattleResources->battleHistory->itemsNo++; } } diff --git a/src/battle_9.c b/src/battle_ai_switch_items.c similarity index 78% rename from src/battle_9.c rename to src/battle_ai_switch_items.c index 291bfc9e37..661759a98f 100644 --- a/src/battle_9.c +++ b/src/battle_ai_switch_items.c @@ -7,6 +7,8 @@ #include "species.h" #include "rng.h" #include "util.h" +#include "items.h" +#include "pokemon_item_effects.h" extern u8 gActiveBank; extern u8 gAbsentBankFlags; @@ -24,13 +26,14 @@ extern s32 gBattleMoveDamage; extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; extern const u8 gTypeEffectiveness[]; +extern const u8 * const gItemEffectTable[]; // todo: fix once struct is declared // this file's functions -bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng); -bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent); -bool8 ShouldUseItem(void); +static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng); +static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent); +static bool8 ShouldUseItem(void); -bool8 ShouldSwitchIfPerishSong(void) +static bool8 ShouldSwitchIfPerishSong(void) { if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG && gDisableStructs[gActiveBank].perishSong1 == 0) @@ -43,7 +46,7 @@ bool8 ShouldSwitchIfPerishSong(void) return FALSE; } -bool8 ShouldSwitchIfWonderGuard(void) +static bool8 ShouldSwitchIfWonderGuard(void) { u8 opposingIdentity; u8 opposingBank; @@ -127,7 +130,7 @@ bool8 ShouldSwitchIfWonderGuard(void) return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard } -bool8 FindMonThatAbsorbsOpponentsMove(void) +static bool8 FindMonThatAbsorbsOpponentsMove(void) { u8 bankIn1, bankIn2; u8 absorbingTypeAbility; @@ -226,7 +229,7 @@ bool8 FindMonThatAbsorbsOpponentsMove(void) return FALSE; } -bool8 ShouldSwitchIfNaturalCure(void) +static bool8 ShouldSwitchIfNaturalCure(void) { if (!(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)) return FALSE; @@ -262,7 +265,7 @@ bool8 ShouldSwitchIfNaturalCure(void) return FALSE; } -bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) +static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) { u8 opposingIdentity; u8 opposingBank; @@ -318,7 +321,7 @@ bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) return FALSE; } -bool8 AreStatsRaised(void) +static bool8 AreStatsRaised(void) { u8 buffedStatsValue = 0; s32 i; @@ -332,7 +335,7 @@ bool8 AreStatsRaised(void) return (buffedStatsValue > 3); } -bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) +static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) { u8 bankIn1, bankIn2; s32 firstId; @@ -433,7 +436,7 @@ bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) return FALSE; } -bool8 ShouldSwitch(void) +static bool8 ShouldSwitch(void) { u8 bankIn1, bankIn2; u8 *activeBankPtr; // needed to match @@ -792,3 +795,157 @@ u8 GetMostSuitableMonToSwitchInto(void) return bestMonId; } + +// TODO: use PokemonItemEffect struct instead of u8 once it's documented +static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument +{ + if (itemId == ITEM_FULL_RESTORE) + return AI_ITEM_FULL_RESTORE; + if (itemEffect[4] & 4) + return AI_ITEM_HEAL_HP; + if (itemEffect[3] & 0x3F) + return AI_ITEM_CURE_CONDITION; + if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0) + return AI_ITEM_X_STAT; + if (itemEffect[3] & 0x80) + return AI_ITEM_GUARD_SPECS; + + return AI_ITEM_NOT_RECOGNIZABLE; +} + +static bool8 ShouldUseItem(void) +{ + struct Pokemon *party; + s32 i; + u8 validMons = 0; + bool8 shouldUse = FALSE; + + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2) + return FALSE; + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + { + validMons++; + } + } + + for (i = 0; i < 4; i++) + { + u16 item; + const u8 *itemEffects; + u8 paramOffset; + u8 bankSide; + + if (i != 0 && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1) + continue; + item = gBattleResources->battleHistory->trainerItems[i]; + if (item == ITEM_NONE) + continue; + if (gItemEffectTable[item - 13] == NULL) + continue; + + if (item == ITEM_ENIGMA_BERRY) + itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect; + else + itemEffects = gItemEffectTable[item - 13]; + + *(gBattleStruct->AI_itemType + gActiveBank / 2) = GetAI_ItemType(item, itemEffects); + + switch (*(gBattleStruct->AI_itemType + gActiveBank / 2)) + { + case AI_ITEM_FULL_RESTORE: + if (gBattleMons[gActiveBank].hp >= gBattleMons[gActiveBank].maxHP / 4) + break; + if (gBattleMons[gActiveBank].hp == 0) + break; + shouldUse = TRUE; + break; + case AI_ITEM_HEAL_HP: + paramOffset = GetItemEffectParamOffset(item, 4, 4); + if (paramOffset == 0) + break; + if (gBattleMons[gActiveBank].hp == 0) + break; + if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 4 || gBattleMons[gActiveBank].maxHP - gBattleMons[gActiveBank].hp > itemEffects[paramOffset]) + shouldUse = TRUE; + break; + case AI_ITEM_CURE_CONDITION: + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0; + if (itemEffects[3] & 0x20 && gBattleMons[gActiveBank].status1 & STATUS_SLEEP) + { + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20; + shouldUse = TRUE; + } + if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBank].status1 & STATUS_POISON || gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON)) + { + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x10; + shouldUse = TRUE; + } + if (itemEffects[3] & 0x8 && gBattleMons[gActiveBank].status1 & STATUS_BURN) + { + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8; + shouldUse = TRUE; + } + if (itemEffects[3] & 0x4 && gBattleMons[gActiveBank].status1 & STATUS_FREEZE) + { + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4; + shouldUse = TRUE; + } + if (itemEffects[3] & 0x2 && gBattleMons[gActiveBank].status1 & STATUS_PARALYSIS) + { + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2; + shouldUse = TRUE; + } + if (itemEffects[3] & 0x1 && gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) + { + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1; + shouldUse = TRUE; + } + break; + case AI_ITEM_X_STAT: + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0; + if (gDisableStructs[gActiveBank].isFirstTurn == 0) + break; + if (itemEffects[0] & 0xF) + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1; + if (itemEffects[1] & 0xF0) + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2; + if (itemEffects[1] & 0xF) + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4; + if (itemEffects[2] & 0xF) + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8; + if (itemEffects[2] & 0xF0) + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20; + if (itemEffects[0] & 0x30) + *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x80; + shouldUse = TRUE; + break; + case AI_ITEM_GUARD_SPECS: + bankSide = GetBankSide(gActiveBank); + if (gDisableStructs[gActiveBank].isFirstTurn != 0 && gSideTimers[bankSide].mistTimer == 0) + shouldUse = TRUE; + break; + case AI_ITEM_NOT_RECOGNIZABLE: + return FALSE; + } + + if (shouldUse) + { + EmitCmd_x21(1, 1, 0); + *(gBattleStruct->field_C0 + (gActiveBank / 2) * 2) = item; + gBattleResources->battleHistory->trainerItems[i] = 0; + return shouldUse; + } + } + + return FALSE; +} From 31eeff93197619c653d5e9da8ed131c0aa368a82 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 10 Oct 2017 21:28:32 -0500 Subject: [PATCH 126/182] Use less cd and more vars --- Makefile | 109 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 48 deletions(-) diff --git a/Makefile b/Makefile index d10505145e..ca8348f68b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,19 @@ SHELL := /bin/bash -o pipefail +ROM := pokeemerald.gba +OBJ_DIR := build/emerald + +ELF = $(ROM:.gba=.elf) +MAP = $(ROM:.gba=.map) + +C_SUBDIR = src +ASM_SUBDIR = asm +DATA_ASM_SUBDIR = data + +C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) +ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) +DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) + AS := $(DEVKITARM)/bin/arm-none-eabi-as ASFLAGS := -mcpu=arm7tdmi @@ -10,7 +24,7 @@ CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef LD := $(DEVKITARM)/bin/arm-none-eabi-ld -LDFLAGS := -T ld_script.ld -Map ../../pokeemerald.map +LDFLAGS = -Map $(MAP) OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy @@ -20,7 +34,7 @@ SHA1 := sha1sum -c GFX := tools/gbagfx/gbagfx AIF := tools/aif2pcm/aif2pcm -MID := tools/mid2agb/mid2agb +MID := $(abspath tools/mid2agb/mid2agb) SCANINC := tools/scaninc/scaninc PREPROC := tools/preproc/preproc RAMSCRGEN := tools/ramscrgen/ramscrgen @@ -35,24 +49,19 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen .PHONY: rom clean compare tidy +$(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR)) -$(shell mkdir -p build/ build/emerald/{,asm,data,src}) +C_SRCS := $(wildcard $(C_SUBDIR)/*.c) +C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) -C_SRCS := $(wildcard src/*.c) -C_OBJS := $(C_SRCS:%.c=build/emerald/%.o) +ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) +ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) -ASM_SRCS := $(wildcard asm/*.s) -ASM_OBJS := $(ASM_SRCS:%.s=build/emerald/%.o) - -DATA_ASM_SRCS := $(wildcard data/*.s) -DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=build/emerald/%.o) +DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) +DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) - -$OBJS_REL := $(OBJS:build/emerald/%=%) - -ROM := pokeemerald.gba -ELF := $(ROM:.gba=.elf) +OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) rom: $(ROM) @@ -64,7 +73,7 @@ clean: tidy find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + tidy: - rm -f pokeemerald.{gba,map,elf} + rm -f $(ROM) $(ELF) $(MAP) rm -r build/* include graphics_file_rules.mk @@ -80,58 +89,62 @@ include graphics_file_rules.mk %.lz: % ; $(GFX) $< $@ %.rl: % ; $(GFX) $< $@ -%src/libc.o: CC1 := tools/agbcc/bin/old_agbcc -%src/libc.o: CFLAGS := -O2 +$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc +$(C_BUILDDIR)/libc.o: CFLAGS := -O2 -%src/siirtc.o: CFLAGS := -mthumb-interwork +$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork -%src/agb_flash.o: CFLAGS := -O -mthumb-interwork -%src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork -%src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork +$(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork +$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork +$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork -%src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc -%src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc +$(C_BUILDDIR)/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc +$(C_BUILDDIR)/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc ifeq ($(NODEP),) -build/emerald/src/%.o: c_dep = $(shell $(SCANINC) src/$(*F).c) +$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) $(C_SUBDIR)/$*.c) else -build/emerald/src/%.o: c_dep := +$(C_BUILDDIR)/%.o: c_dep := endif -build/emerald/%.o : %.c $$(c_dep) - @$(CPP) $(CPPFLAGS) $< -o build/emerald/$*.i - @$(PREPROC) build/emerald/$*.i charmap.txt | $(CC1) $(CFLAGS) -o build/emerald/$*.s - @echo -e ".text\n\t.align\t2, 0\n" >> build/emerald/$*.s - $(AS) $(ASFLAGS) -o $@ build/emerald/$*.s +$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) + @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i + @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s + @echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s + $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s ifeq ($(NODEP),) -build/emerald/asm/%.o: asm_dep = $(shell $(SCANINC) asm/$(*F).s) -build/emerald/data/%.o: asm_dep = $(shell $(SCANINC) data/$(*F).s) +$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s) else -build/emerald/asm/%.o: asm_dep := -build/emerald/data/%.o: asm_dep := +$(ASM_BUILDDIR)/%.o: asm_dep := endif -build/emerald/asm/%.o: asm/%.s $$(asm_dep) +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) $(AS) $(ASFLAGS) -o $@ $< -build/emerald/data/%.o: data/%.s $$(asm_dep) +ifeq ($(NODEP),) +$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) +else +$(DATA_ASM_BUILDDIR)/%.o: data_dep := +endif + +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) $(PREPROC) $< charmap.txt | $(AS) $(ASFLAGS) -o $@ -build/emerald/sym_bss.ld: sym_bss.txt - cd build/emerald && ../../$(RAMSCRGEN) .bss ../../sym_bss.txt ENGLISH >sym_bss.ld +$(OBJ_DIR)/sym_bss.ld: sym_bss.txt + $(RAMSCRGEN) .bss $< ENGLISH > $@ -build/emerald/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) - cd build/emerald && ../../$(RAMSCRGEN) COMMON ../../sym_common.txt ENGLISH -c src,../../common_syms >sym_common.ld +$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) + $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@ -build/emerald/sym_ewram.ld: sym_ewram.txt - cd build/emerald && ../../$(RAMSCRGEN) ewram_data ../../sym_ewram.txt ENGLISH >sym_ewram.ld +$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt + $(RAMSCRGEN) ewram_data $< ENGLISH > $@ -build/emerald/ld_script.ld: ld_script.txt build/emerald/sym_bss.ld build/emerald/sym_common.ld build/emerald/sym_ewram.ld - cd build/emerald && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" >ld_script.ld +$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld + cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" > ld_script.ld -pokeemerald.elf: build/emerald/ld_script.ld $(OBJS) - cd build/emerald && $(LD) $(LDFLAGS) -o ../../$@ $(OBJS_REL) ../../$(LIBGCC) +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) + cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) ../../$(LIBGCC) -pokeemerald.gba: %.gba: %.elf +$(ROM): $(ELF) $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ From f1b6358047dff266db01545d4a5927047e6756df Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Thu, 12 Oct 2017 02:06:19 -0500 Subject: [PATCH 127/182] Port/decomp scrcmd --- asm/battle_frontier_1.s | 6 +- asm/battle_frontier_2.s | 8 +- asm/battle_setup.s | 64 +- asm/battle_tower.s | 14 +- asm/battle_transition.s | 4 +- asm/bike.s | 4 +- asm/cable_club.s | 22 +- asm/clock.s | 6 +- asm/coins.s | 16 +- asm/contest.s | 12 +- asm/contest_ai.s | 2 +- asm/contest_effect.s | 2 +- asm/contest_link_80F57C4.s | 10 +- asm/contest_link_81D9DE4.s | 2 +- asm/decoration.s | 4 +- asm/decoration_inventory.s | 6 +- asm/easy_chat.s | 2 +- asm/field_door.s | 36 +- asm/field_effect.s | 54 +- asm/field_effect_helpers.s | 56 +- asm/field_ground_effect.s | 24 +- asm/field_message_box.s | 24 +- asm/field_player_avatar.s | 8 +- asm/field_poison.s | 4 +- asm/field_screen.s | 34 +- asm/field_tasks.s | 8 +- asm/fldeff_80F9BCC.s | 32 +- asm/fldeff_cut.s | 4 +- asm/fldeff_groundshake.s | 4 +- asm/fldeff_strength.s | 4 +- asm/fldeff_sweetscent.s | 2 +- asm/fldeff_teleport.s | 2 +- asm/item.s | 12 +- asm/item_menu.s | 2 +- asm/item_use.s | 4 +- asm/link.s | 8 +- asm/map_obj_8097404.s | 10 +- asm/map_obj_lock.s | 16 +- asm/mauville_old_man.s | 2 +- asm/mystery_event_script.s | 8 +- asm/party_menu.s | 12 +- asm/player_pc.s | 2 +- asm/pokemon_storage_system.s | 2 +- asm/record_mixing.s | 2 +- asm/rom4.s | 114 +- asm/rom6.s | 84 +- asm/scrcmd.s | 5744 ------------------ asm/script_menu.s | 38 +- asm/script_movement.s | 12 +- asm/script_pokemon_util_80F87D8.s | 34 +- asm/secret_base.s | 4 +- asm/shop.s | 2 +- asm/slot_machine.s | 6 +- asm/trainer_rematch.s | 2 +- asm/trainer_see.s | 12 +- asm/tv.s | 100 +- data/event_script_command_function_table.inc | 454 +- data/event_scripts.s | 6 +- data/scrcmd.s | 14 - include/battle_frontier_2.h | 9 + include/battle_setup.h | 9 + include/clock.h | 8 + include/coins.h | 4 +- include/contest_link_80F57C4.h | 8 + include/contest_painting.h | 6 + include/data2.h | 9 + include/decoration.h | 18 + include/decoration_inventory.h | 10 + include/event_data.h | 2 +- include/field_door.h | 11 + include/field_effect.h | 9 +- include/field_fadetransition.h | 12 + include/field_map_obj.h | 3 + include/field_map_obj_helpers.h | 7 + include/field_message_box.h | 10 + include/field_player_avatar.h | 6 +- include/field_screen_effect.h | 8 + include/field_specials.h | 6 + include/field_tasks.h | 6 + include/field_weather.h | 12 + include/fieldmap.h | 10 +- include/item.h | 1 + include/map_obj_lock.h | 11 + include/money.h | 2 +- include/mystery_event_script.h | 8 + include/new_menu_helpers.h | 8 + include/overworld.h | 58 + include/palette.h | 3 + include/party_menu.h | 6 + include/pokemon_3.h | 7 + include/rom4.h | 33 - include/script_menu.h | 13 + include/script_movement.h | 8 + include/script_pokemon_80F8.h | 10 + include/script_pokemon_81B9.h | 6 + include/shop.h | 8 + include/slot_machine.h | 6 + include/text.h | 1 + include/trainer_see.h | 1 + include/tv.h | 7 + ld_script.txt | 4 +- src/braille_puzzles.c | 8 +- src/coins.c | 2 +- src/event_data.c | 52 +- src/field_map_obj.c | 28 +- src/field_special_scene.c | 18 +- src/lilycove_lady.c | 2 +- src/money.c | 4 +- src/new_game.c | 4 +- src/palette.c | 6 +- src/pokemon_2.c | 2 +- src/reset_save_heap.c | 2 +- src/safari_zone.c | 2 +- src/scrcmd.c | 2438 +++++++- sym_ewram.txt | 23 +- 115 files changed, 3540 insertions(+), 6621 deletions(-) delete mode 100644 asm/scrcmd.s delete mode 100644 data/scrcmd.s create mode 100644 include/battle_frontier_2.h create mode 100644 include/clock.h create mode 100644 include/contest_link_80F57C4.h create mode 100644 include/contest_painting.h create mode 100644 include/data2.h create mode 100644 include/decoration.h create mode 100644 include/decoration_inventory.h create mode 100644 include/field_door.h create mode 100644 include/field_fadetransition.h create mode 100644 include/field_map_obj_helpers.h create mode 100644 include/field_message_box.h create mode 100644 include/field_screen_effect.h create mode 100644 include/field_specials.h create mode 100644 include/field_tasks.h create mode 100644 include/field_weather.h create mode 100644 include/map_obj_lock.h create mode 100644 include/mystery_event_script.h create mode 100644 include/new_menu_helpers.h create mode 100644 include/overworld.h create mode 100644 include/party_menu.h create mode 100644 include/pokemon_3.h delete mode 100644 include/rom4.h create mode 100644 include/script_menu.h create mode 100644 include/script_movement.h create mode 100644 include/script_pokemon_80F8.h create mode 100644 include/script_pokemon_81B9.h create mode 100644 include/shop.h create mode 100644 include/slot_machine.h create mode 100644 include/tv.h diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 4c44855f99..7ac60f1be2 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -14296,7 +14296,7 @@ sub_81963F0: @ 81963F0 adds r0, r1 bl FieldObjectClearAnimIfSpecialAnimFinished bl sub_80D338C - bl sub_809757C + bl UnfreezeMapObjects bl ScriptContext2_Disable _08196446: movs r0, 0x1 @@ -14680,7 +14680,7 @@ sub_8196748: @ 8196748 ldr r4, =gUnknown_085500A4 _08196750: ldrh r0, [r4] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _0819675E @@ -14706,7 +14706,7 @@ sub_8196774: @ 8196774 ldr r5, =gUnknown_085500A4 _0819677E: ldrh r0, [r5] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _0819679A diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 9e01d22d1c..785cfc0a5c 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -27306,7 +27306,7 @@ _081A8A74: ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] adds r3, r7, 0 - bl exec_movement + bl ScriptMovement_StartObjectMovementScript b _081A8AD4 .pool _081A8ACC: @@ -27540,7 +27540,7 @@ _081A8C72: ldr r2, [r1] ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] - bl exec_movement + bl ScriptMovement_StartObjectMovementScript b _081A8D32 .pool _081A8C9C: @@ -27618,7 +27618,7 @@ _081A8D12: ldr r2, [r1] ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] - bl exec_movement + bl ScriptMovement_StartObjectMovementScript _081A8D32: mov r0, r9 adds r0, 0x1 @@ -28660,7 +28660,7 @@ _081A95EE: lsls r0, r7, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage add sp, 0x8 pop {r3,r4} mov r8, r3 diff --git a/asm/battle_setup.s b/asm/battle_setup.s index fbedfff2fe..5c71965799 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -299,8 +299,8 @@ sub_80B086C: @ 80B086C .pool thumb_func_end sub_80B086C - thumb_func_start sub_80B08A8 -sub_80B08A8: @ 80B08A8 + thumb_func_start BattleSetup_StartScriptedWildBattle +BattleSetup_StartScriptedWildBattle: @ 80B08A8 push {lr} bl ScriptContext2_Enable ldr r1, =gMain @@ -323,7 +323,7 @@ sub_80B08A8: @ 80B08A8 pop {r0} bx r0 .pool - thumb_func_end sub_80B08A8 + thumb_func_end BattleSetup_StartScriptedWildBattle thumb_func_start sub_80B08EC sub_80B08EC: @ 80B08EC @@ -1357,7 +1357,7 @@ sub_80B1158: @ 80B1158 movs r1, 0x5 movs r2, 0 movs r3, 0 - bl sub_80F9244 + bl ScriptGiveMon bl ResetTasks bl PlayBattleBGM ldr r0, =sub_80B11A8 @@ -1686,9 +1686,9 @@ _080B141A: .pool thumb_func_end battle_80801F0 - thumb_func_start TrainerBattleConfigure -@ u8 *TrainerBattleConfigure(u8 *args) -TrainerBattleConfigure: @ 80B1430 + thumb_func_start BattleSetup_ConfigureTrainerBattle +@ u8 *BattleSetup_ConfigureTrainerBattle(u8 *args) +BattleSetup_ConfigureTrainerBattle: @ 80B1430 push {r4,r5,lr} adds r5, r0, 0 bl InitTrainerBattleVariables @@ -1872,7 +1872,7 @@ _080B161E: pop {r1} bx r1 .pool - thumb_func_end TrainerBattleConfigure + thumb_func_end BattleSetup_ConfigureTrainerBattle thumb_func_start SingleTrainerWantsBattle @ void SingleTrainerWantsBattle(u8 trainerFieldObjectId, u8 *trainerScript) @@ -1892,7 +1892,7 @@ SingleTrainerWantsBattle: @ 80B162C strh r0, [r4] adds r1, 0x1 adds r0, r1, 0 - bl TrainerBattleConfigure + bl BattleSetup_ConfigureTrainerBattle ldr r0, =gUnknown_08271354 bl ScriptContext1_SetupScript bl ScriptContext2_Enable @@ -1920,7 +1920,7 @@ TwoTrainersWantBattle: @ 80B1670 strh r0, [r4] adds r1, 0x1 adds r0, r1, 0 - bl TrainerBattleConfigure + bl BattleSetup_ConfigureTrainerBattle pop {r4} pop {r0} bx r0 @@ -2056,8 +2056,8 @@ sub_80B178C: @ 80B178C bx r0 thumb_func_end sub_80B178C - thumb_func_start trainer_flag_check -trainer_flag_check: @ 80B17A0 + thumb_func_start HasTrainerAlreadyBeenFought +HasTrainerAlreadyBeenFought: @ 80B17A0 push {lr} lsls r0, 16 movs r1, 0xA0 @@ -2069,7 +2069,7 @@ trainer_flag_check: @ 80B17A0 lsrs r0, 24 pop {r1} bx r1 - thumb_func_end trainer_flag_check + thumb_func_end HasTrainerAlreadyBeenFought thumb_func_start trainer_flag_set trainer_flag_set: @ 80B17B8 @@ -2092,13 +2092,13 @@ trainer_flag_clear: @ 80B17CC lsls r1, 19 adds r0, r1 lsrs r0, 16 - bl FlagReset + bl FlagClear pop {r0} bx r0 thumb_func_end trainer_flag_clear - thumb_func_start sub_80B17E0 -sub_80B17E0: @ 80B17E0 + thumb_func_start BattleSetup_StartTrainerBattle +BattleSetup_StartTrainerBattle: @ 80B17E0 push {r4,lr} ldr r0, =gUnknown_030060A8 ldrb r0, [r0] @@ -2217,7 +2217,7 @@ _080B190C: pop {r4} pop {r0} bx r0 - thumb_func_end sub_80B17E0 + thumb_func_end BattleSetup_StartTrainerBattle thumb_func_start sub_80B1918 sub_80B1918: @ 80B1918 @@ -2407,14 +2407,14 @@ _080B1AD8: .pool _080B1AEC: bl sub_80B1C7C - bl box_related_two__2 + bl ShowFieldMessage _080B1AF4: pop {r0} bx r0 thumb_func_end sub_80B1A14 - thumb_func_start sub_80B1AF8 -sub_80B1AF8: @ 80B1AF8 + thumb_func_start BattleSetup_GetScriptAddrAfterBattle +BattleSetup_GetScriptAddrAfterBattle: @ 80B1AF8 push {lr} ldr r0, =gUnknown_02038BEC ldr r0, [r0] @@ -2425,10 +2425,10 @@ _080B1B04: pop {r1} bx r1 .pool - thumb_func_end sub_80B1AF8 + thumb_func_end BattleSetup_GetScriptAddrAfterBattle - thumb_func_start sub_80B1B10 -sub_80B1B10: @ 80B1B10 + thumb_func_start BattleSetup_GetTrainerPostBattleScript +BattleSetup_GetTrainerPostBattleScript: @ 80B1B10 push {lr} ldr r1, =gUnknown_02038BF8 ldrb r2, [r1] @@ -2462,13 +2462,13 @@ _080B1B56: pop {r1} bx r1 .pool - thumb_func_end sub_80B1B10 + thumb_func_end BattleSetup_GetTrainerPostBattleScript thumb_func_start special_trainer_unable_to_battle special_trainer_unable_to_battle: @ 80B1B60 push {lr} bl sub_80B1D18 - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 thumb_func_end special_trainer_unable_to_battle @@ -2796,7 +2796,7 @@ _080B1DCE: ldrh r0, [r4] cmp r0, 0 beq _080B1DE2 - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 bne _080B1DCA @@ -2895,7 +2895,7 @@ sub_80B1E94: @ 80B1E94 lsls r0, r4, 4 adds r0, r5 ldrh r0, [r0] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3076,7 +3076,7 @@ _080B1FE2: ldrh r0, [r4] cmp r0, 0 beq _080B1FCA - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080B1FD4 @@ -3127,7 +3127,7 @@ _080B203A: ldrh r0, [r4] cmp r0, 0 beq _080B201E - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080B2028 @@ -3233,7 +3233,7 @@ sub_80B20F4: @ 80B20F4 lsls r0, r1, 4 adds r0, r4 ldrh r0, [r0, 0x2] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080B211E @@ -3509,7 +3509,7 @@ sub_80B2318: @ 80B2318 lsrs r4, r0, 12 adds r6, r4, r7 ldrh r0, [r6] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3527,7 +3527,7 @@ _080B2338: adds r4, r6, 0x2 _080B2346: ldrh r0, [r4] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080B2360 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 59971c5d23..92fca34014 100755 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -3548,11 +3548,11 @@ _08163E2C: movs r0, 0 strb r0, [r4] ldr r0, =gUnknown_08224158 - bl TrainerBattleConfigure + bl BattleSetup_ConfigureTrainerBattle movs r0, 0x1 strb r0, [r4] ldr r0, =gUnknown_08224167 - bl TrainerBattleConfigure + bl BattleSetup_ConfigureTrainerBattle ldr r0, =gPartnerTrainerId strh r5, [r0] ldr r0, =sub_8163A8C @@ -4364,7 +4364,7 @@ _081644E0: strb r0, [r1, 0x1] movs r0, 0xD8 lsls r0, 2 - bl FlagReset + bl FlagClear ldr r0, [r6] adds r0, r5 ldrh r0, [r0] @@ -4525,7 +4525,7 @@ _08164660: adds r1, 0xC0 strb r0, [r1, 0x1] ldr r0, =0x00000361 - bl FlagReset + bl FlagClear ldr r0, [r6] adds r0, r5 ldrh r0, [r0] @@ -5016,7 +5016,7 @@ _08164B04: lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage b _08164B54 .pool _08164B28: @@ -5040,7 +5040,7 @@ _08164B28: lsls r1, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage _08164B54: add sp, 0x8 pop {r3-r5} @@ -6056,7 +6056,7 @@ _081653E0: bne _081653F8 bl sub_80F01B8 movs r0, 0x77 - bl FlagReset + bl FlagClear _081653F8: pop {r0} bx r0 diff --git a/asm/battle_transition.s b/asm/battle_transition.s index a6e44f0872..2f96375949 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -2151,7 +2151,7 @@ sub_8147018: @ 8147018 ands r5, r0 movs r1, 0 mov r8, r4 - ldr r6, =gFieldEffectSpawnParams + ldr r6, =gFieldEffectArguments _08147046: lsls r5, 16 asrs r5, 16 @@ -2221,7 +2221,7 @@ _081470C4: sub_81470D0: @ 81470D0 push {r4,r5,lr} ldr r0, =gUnknown_085C8E68 - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments movs r2, 0 ldrsh r1, [r5, r2] movs r3, 0x4 diff --git a/asm/bike.s b/asm/bike.s index 7ea4a4598e..b5d40a312c 100644 --- a/asm/bike.s +++ b/asm/bike.s @@ -2013,9 +2013,9 @@ _0811A0B0: bl SetPlayerAvatarTransitionFlags ldr r4, =0x00000193 adds r0, r4, 0 - bl sav1_set_battle_music_maybe + bl Overworld_SetSavedMusic adds r0, r4, 0 - bl sub_80858C4 + bl Overworld_ChangeMusicTo _0811A0C4: pop {r4} pop {r0} diff --git a/asm/cable_club.s b/asm/cable_club.s index d5d3af1514..08455e0aa7 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -434,7 +434,7 @@ sub_80B2688: @ 80B2688 movs r0, 0x15 bl PlaySE ldr r0, =gUnknown_082780B3 - bl box_related_two__3 + bl ShowFieldAutoScrollMessage ldr r0, =sub_80B270C b _080B26FA .pool @@ -442,7 +442,7 @@ _080B26EC: movs r0, 0x16 bl PlaySE ldr r0, =gUnknown_08278131 - bl box_related_two__3 + bl ShowFieldAutoScrollMessage ldr r0, =sub_80B2918 _080B26FA: str r0, [r4] @@ -545,7 +545,7 @@ sub_80B275C: @ 80B275C movs r3, 0x1 bl ConvertIntToDecimalStringN ldr r0, =gUnknown_082780F2 - bl box_related_two__3 + bl ShowFieldAutoScrollMessage mov r0, r9 subs r0, 0x8 add r0, r8 @@ -598,7 +598,7 @@ sub_80B2804: @ 80B2804 beq _080B2878 _080B2852: ldr r0, =gUnknown_082780B3 - bl box_related_two__3 + bl ShowFieldAutoScrollMessage ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 @@ -719,7 +719,7 @@ sub_80B2918: @ 80B2918 cmp r0, 0x1 bhi _080B297C bl sub_800AC34 - bl textbox_close + bl HideFieldMessageBox ldr r0, =sub_80B2CB0 b _080B29E4 .pool @@ -730,7 +730,7 @@ _080B297C: bne _080B2994 _080B2984: bl sub_80097E8 - bl textbox_close + bl HideFieldMessageBox ldr r0, =sub_80B2CB0 b _080B29E4 .pool @@ -814,7 +814,7 @@ _080B2A42: _080B2A4A: bl sub_80097E8 _080B2A4E: - bl textbox_close + bl HideFieldMessageBox ldr r0, =gTasks lsls r1, r7, 2 adds r1, r7 @@ -1151,7 +1151,7 @@ sub_80B2D2C: @ 80B2D2C bl sub_80B241C ldrb r0, [r4, 0x12] bl RemoveWindow - bl textbox_close + bl HideFieldMessageBox bl EnableBothScriptContexts adds r0, r5, 0 bl DestroyTask @@ -2297,13 +2297,13 @@ _080B3750: b _080B37CC _080B375A: ldr r0, =gUnknown_08278091 - bl box_related_two__2 + bl ShowFieldMessage movs r0, 0x1 strh r0, [r5, 0x8] b _080B37CC .pool _080B376C: - bl sub_809833C + bl IsFieldMessageBoxHidden lsls r0, 24 cmp r0, 0 beq _080B37CC @@ -2325,7 +2325,7 @@ _080B378C: beq _080B37B2 b _080B37CC _080B379E: - bl textbox_close + bl HideFieldMessageBox movs r0, 0 strh r0, [r5, 0x8] bl sub_80872C4 diff --git a/asm/clock.s b/asm/clock.s index 01c7e964e5..5d771a8b69 100644 --- a/asm/clock.s +++ b/asm/clock.s @@ -27,8 +27,8 @@ sub_809E778: @ 809E778 .pool thumb_func_end sub_809E778 - thumb_func_start sub_809E7B0 -sub_809E7B0: @ 809E7B0 + thumb_func_start DoTimeBasedEvents +DoTimeBasedEvents: @ 809E7B0 push {r4,lr} ldr r0, =0x00000895 bl FlagGet @@ -50,7 +50,7 @@ _0809E7DA: pop {r0} bx r0 .pool - thumb_func_end sub_809E7B0 + thumb_func_end DoTimeBasedEvents thumb_func_start sub_809E7E8 sub_809E7E8: @ 809E7E8 diff --git a/asm/coins.s b/asm/coins.s index ea55dd85c9..d2b6cbb47e 100644 --- a/asm/coins.s +++ b/asm/coins.s @@ -5,9 +5,9 @@ .text - thumb_func_start AddCoins -@ bool8 AddCoins(u16 toAdd) -AddCoins: @ 8145C80 + thumb_func_start GiveCoins +@ bool8 GiveCoins(u16 toAdd) +GiveCoins: @ 8145C80 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -44,11 +44,11 @@ _08145CC0: pop {r1} bx r1 .pool - thumb_func_end AddCoins + thumb_func_end GiveCoins - thumb_func_start SubtractCoins -@ bool8 SubtractCoins(u16 toSub) -SubtractCoins: @ 8145CCC + thumb_func_start TakeCoins +@ bool8 TakeCoins(u16 toSub) +TakeCoins: @ 8145CCC push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -69,6 +69,6 @@ _08145CEE: pop {r4} pop {r1} bx r1 - thumb_func_end SubtractCoins + thumb_func_end TakeCoins .align 2, 0 @ Don't pad with nop. diff --git a/asm/contest.s b/asm/contest.s index 561c798575..972199c7cc 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -6313,7 +6313,7 @@ _080DAE1E: movs r0, 0x4 b _080DAE9A _080DAE2E: - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0x4 bhi _080DAE82 @@ -8456,7 +8456,7 @@ sub_80DBED4: @ 80DBED4 adds r0, r1 ldrb r1, [r0] lsls r1, 1 - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] lsls r0, 3 adds r1, r0 @@ -11805,7 +11805,7 @@ sub_80DD9F0: @ 80DD9F0 ldrb r1, [r0, 0x1] lsls r1, 29 lsrs r1, 29 - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r2, [r0] lsls r0, r2, 2 adds r0, r2 @@ -14260,7 +14260,7 @@ _080DEDE6: b _080DEF90 .pool _080DEE00: - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0x4 bhi _080DEE4C @@ -14383,7 +14383,7 @@ _080DEF02: mov r2, r9 lsls r1, r2, 5 adds r0, r1 - ldr r1, =gUnknown_02039F2C + ldr r1, =gScriptContestCategory ldrh r1, [r1] ldr r3, =0x00002e9a adds r0, r3 @@ -14485,7 +14485,7 @@ _080DEFE6: b _080DF03A .pool _080DEFF8: - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0x4 bhi _080DF038 diff --git a/asm/contest_ai.s b/asm/contest_ai.s index f284928860..c3c0152721 100644 --- a/asm/contest_ai.s +++ b/asm/contest_ai.s @@ -1352,7 +1352,7 @@ sub_8156CF4: @ 8156CF4 ldr r0, =gUnknown_02039F34 ldr r0, [r0] ldr r1, [r0, 0xC] - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] strh r0, [r1, 0x18] ldr r1, =gAIScriptPtr diff --git a/asm/contest_effect.s b/asm/contest_effect.s index 09c06b079b..3b88e16e0f 100644 --- a/asm/contest_effect.s +++ b/asm/contest_effect.s @@ -2590,7 +2590,7 @@ ContestEffectFunc_080E6778: @ 80E6778 adds r0, r3 ldrb r0, [r0, 0x1] lsls r0, 29 - ldr r1, =gUnknown_02039F2C + ldr r1, =gScriptContestCategory lsrs r0, 29 ldrh r1, [r1] cmp r0, r1 diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 03e1aaf2b6..a97a395618 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -3008,7 +3008,7 @@ _080F7236: bl CopyToBgTilemapBufferRect movs r5, 0xF _080F7240: - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0 bne _080F725C @@ -4640,7 +4640,7 @@ sub_80F7F30: @ 80F7F30 adds r5, r0, 0 cmp r5, 0 beq _080F7F5E - ldr r4, =gUnknown_02039F2C + ldr r4, =gScriptContestCategory ldrb r0, [r4] ldr r1, =gUnknown_02039F2E ldrb r1, [r1] @@ -4666,7 +4666,7 @@ sub_80F7F7C: @ 80F7F7C muls r1, r0 ldr r0, =gPlayerParty adds r2, r1, r0 - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0x4 bhi _080F7FEE @@ -4730,7 +4730,7 @@ sub_80F7FFC: @ 80F7FFC beq _080F8010 b _080F8250 _080F8010: - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0x4 bls _080F801A @@ -5488,7 +5488,7 @@ _080F8678: bl sub_80F86E0 ldr r1, =gUnknown_02039F2B strb r0, [r1] - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrb r0, [r0] bl sub_80DB09C ldr r1, =sub_80FCF40 diff --git a/asm/contest_link_81D9DE4.s b/asm/contest_link_81D9DE4.s index 3fd8f56f1d..5f9c25d7c4 100755 --- a/asm/contest_link_81D9DE4.s +++ b/asm/contest_link_81D9DE4.s @@ -370,7 +370,7 @@ sub_81DA10C: @ 81DA10C adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrb r0, [r0] bl sub_80DB09C ldr r1, =sub_80FCF40 diff --git a/asm/decoration.s b/asm/decoration.s index 89bfbe3bf9..0798e3165c 100644 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -2094,7 +2094,7 @@ sub_8127B04: @ 8127B04 lsls r4, 24 asrs r4, 24 str r4, [sp] - bl warp1_set + bl Overworld_SetWarpDestination bl warp_in add sp, 0x4 pop {r4,r5} @@ -2490,7 +2490,7 @@ _08127E34: cmp r0, 0x1 bne _08127F1C adds r0, r4, 0 - bl FlagReset + bl FlagClear movs r2, 0 ldr r0, [r7, 0x4] ldrb r4, [r0] diff --git a/asm/decoration_inventory.s b/asm/decoration_inventory.s index 52d490c208..7a909f5853 100644 --- a/asm/decoration_inventory.s +++ b/asm/decoration_inventory.s @@ -156,8 +156,8 @@ _08161910: bx r1 thumb_func_end sub_81618D0 - thumb_func_start sub_8161918 -sub_8161918: @ 8161918 + thumb_func_start CheckHasDecoration +CheckHasDecoration: @ 8161918 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -193,7 +193,7 @@ _08161958: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8161918 + thumb_func_end CheckHasDecoration thumb_func_start DecorationAdd DecorationAdd: @ 8161960 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 20bf327ac2..c05da82ace 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -9914,7 +9914,7 @@ _0811EF48: adds r1, r5, 0 bl ConvertEasyChatWordsToString adds r0, r4, 0 - bl box_related_two__3 + bl ShowFieldAutoScrollMessage _0811EF58: pop {r4,r5} pop {r0} diff --git a/asm/field_door.s b/asm/field_door.s index 4602158df2..037c765660 100644 --- a/asm/field_door.s +++ b/asm/field_door.s @@ -581,8 +581,8 @@ sub_808A83C: @ 808A83C .pool thumb_func_end sub_808A83C - thumb_func_start sub_808A854 -sub_808A854: @ 808A854 + thumb_func_start FieldSetDoorOpened +FieldSetDoorOpened: @ 808A854 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -602,10 +602,10 @@ _0808A876: pop {r0} bx r0 .pool - thumb_func_end sub_808A854 + thumb_func_end FieldSetDoorOpened - thumb_func_start sub_808A880 -sub_808A880: @ 808A880 + thumb_func_start FieldSetDoorClosed +FieldSetDoorClosed: @ 808A880 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -625,10 +625,10 @@ _0808A8A2: pop {r0} bx r0 .pool - thumb_func_end sub_808A880 + thumb_func_end FieldSetDoorClosed - thumb_func_start sub_808A8AC -sub_808A8AC: @ 808A8AC + thumb_func_start FieldAnimateDoorClose +FieldAnimateDoorClose: @ 808A8AC push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -654,10 +654,10 @@ _0808A8DC: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_808A8AC + thumb_func_end FieldAnimateDoorClose - thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at -task_overworld_door_add_if_role_69_for_opening_door_at: @ 808A8E4 + thumb_func_start FieldAnimateDoorOpen +FieldAnimateDoorOpen: @ 808A8E4 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -683,10 +683,10 @@ _0808A914: pop {r4,r5} pop {r1} bx r1 - thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at + thumb_func_end FieldAnimateDoorOpen - thumb_func_start sub_808A91C -sub_808A91C: @ 808A91C + thumb_func_start FieldIsDoorAnimationRunning +FieldIsDoorAnimationRunning: @ 808A91C push {lr} ldr r0, =task50_overworld_door bl FuncIsActiveTask @@ -695,10 +695,10 @@ sub_808A91C: @ 808A91C pop {r1} bx r1 .pool - thumb_func_end sub_808A91C + thumb_func_end FieldIsDoorAnimationRunning - thumb_func_start cur_mapdata_get_door_sound_at -cur_mapdata_get_door_sound_at: @ 808A930 + thumb_func_start GetDoorSoundEffect +GetDoorSoundEffect: @ 808A930 push {lr} adds r3, r0, 0 adds r2, r1, 0 @@ -725,7 +725,7 @@ _0808A95C: _0808A95E: pop {r1} bx r1 - thumb_func_end cur_mapdata_get_door_sound_at + thumb_func_end GetDoorSoundEffect thumb_func_start sub_808A964 sub_808A964: @ 808A964 diff --git a/asm/field_effect.s b/asm/field_effect.s index c8ccc49b4a..323e56bfee 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -1989,7 +1989,7 @@ task00_8084310: @ 80B6A24 cmp r0, 0 beq _080B6A8A bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -2100,7 +2100,7 @@ _080B6B3E: cmp r0, 0 bne _080B6B58 bl ScriptContext2_Disable - bl sub_809757C + bl UnfreezeMapObjects adds r0, r5, 0 bl DestroyTask _080B6B58: @@ -2459,7 +2459,7 @@ sub_80B6E18: @ 80B6E18 strb r0, [r1, 0x6] bl ScriptContext2_Disable bl CameraObjectReset1 - bl sub_809757C + bl UnfreezeMapObjects bl InstallCameraPanAheadCallback ldr r0, =sub_80B6B94 bl FindTaskIdByFunc @@ -3111,7 +3111,7 @@ oei_waterfall: @ 80B734C adds r1, r0 lsls r1, 3 adds r1, r2 - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments ldr r2, [r2] strh r2, [r1, 0xA] bl _call_via_r4 @@ -3188,7 +3188,7 @@ waterfall_1_do_anim_probably: @ 80B73F0 bne _080B7420 adds r0, r5, 0 bl FieldObjectClearAnimIfSpecialAnimFinished - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0xA ldrsh r0, [r4, r2] str r0, [r1] @@ -3304,7 +3304,7 @@ sub_80B74D0: @ 80B74D0 adds r1, r0 lsls r1, 3 adds r1, r2 - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments ldr r2, [r3] strh r2, [r1, 0x26] ldr r2, [r3, 0x4] @@ -3363,7 +3363,7 @@ dive_2_unknown: @ 80B7558 push {r4,lr} adds r4, r0, 0 bl ScriptContext2_Enable - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0x26 ldrsh r0, [r4, r2] str r0, [r1] @@ -3536,7 +3536,7 @@ sub_80B76B8: @ 80B76B8 strh r0, [r2, 0x26] movs r0, 0x1 strh r0, [r4, 0xE] - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r5, 0x10 ldrsh r0, [r1, r5] str r0, [r3] @@ -3835,7 +3835,7 @@ sub_80B791C: @ 80B791C lsls r0, 24 cmp r0, 0 beq _080B795C - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0x10 ldrsh r0, [r5, r2] str r0, [r1] @@ -3919,7 +3919,7 @@ sub_80B79BC: @ 80B79BC movs r0, 0 strb r0, [r1, 0x6] bl ScriptContext2_Disable - bl sub_809757C + bl UnfreezeMapObjects ldr r0, =sub_80B7890 bl FindTaskIdByFunc lsls r0, 24 @@ -3935,7 +3935,7 @@ _080B79E6: thumb_func_start sub_80B79F4 sub_80B79F4: @ 80B79F4 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -4090,7 +4090,7 @@ sub_80B7B18: @ 80B7B18 ldrsh r0, [r5, r2] cmp r0, 0x3 ble _080B7B6C - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0x10 ldrsh r0, [r4, r2] str r0, [r1] @@ -4222,7 +4222,7 @@ _080B7C2C: thumb_func_start sub_80B7C48 sub_80B7C48: @ 80B7C48 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -4583,7 +4583,7 @@ _080B7F32: ands r0, r1 strb r0, [r6, 0x1] bl ScriptContext2_Disable - bl sub_809757C + bl UnfreezeMapObjects ldr r0, =sub_80B7E94 bl FindTaskIdByFunc lsls r0, 24 @@ -5194,7 +5194,7 @@ sub_80B8410: @ 80B8410 bne _080B8484 bl ScriptContext2_Disable bl CameraObjectReset1 - bl sub_809757C + bl UnfreezeMapObjects ldr r0, =sub_80B8250 bl FindTaskIdByFunc lsls r0, 24 @@ -5229,7 +5229,7 @@ _080B84BE: bl CreateTask lsls r0, 24 lsrs r4, r0, 24 - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] @@ -5252,7 +5252,7 @@ _080B84BE: thumb_func_start sub_80B84F8 sub_80B84F8: @ 80B84F8 push {r4-r6,lr} - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments ldr r0, [r5] movs r6, 0x80 lsls r6, 24 @@ -6292,12 +6292,12 @@ sub_80B8D44: @ 80B8D44 adds r1, r0 lsls r1, 3 adds r1, r2 - ldr r0, =gFieldEffectSpawnParams + ldr r0, =gFieldEffectArguments ldr r0, [r0] strh r0, [r1, 0x26] bl sav1_reset_battle_music_maybe ldr r0, =0x0000016d - bl sub_80858C4 + bl Overworld_ChangeMusicTo movs r0, 0 pop {r1} bx r1 @@ -6421,7 +6421,7 @@ sub_80B8E60: @ 80B8E60 lsls r0, 24 cmp r0, 0 beq _080B8E96 - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r1, 0x26 ldrsh r0, [r4, r1] movs r1, 0x80 @@ -6473,7 +6473,7 @@ sub_80B8EA8: @ 80B8EA8 lsrs r1, 24 adds r0, r4, 0 bl FieldObjectSetSpecialAnim - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0xA ldrsh r0, [r6, r2] str r0, [r1] @@ -6527,7 +6527,7 @@ sub_80B8F24: @ 80B8F24 ldrb r0, [r4, 0x1A] movs r1, 0x1 bl sub_81555AC - bl sub_809757C + bl UnfreezeMapObjects bl ScriptContext2_Disable movs r0, 0x9 bl FieldEffectActiveListRemove @@ -6704,7 +6704,7 @@ sub_80B90CC: @ 80B90CC strb r0, [r2, 0x5] ldr r0, =sub_80B9128 str r0, [r2, 0x1C] - ldr r0, =gFieldEffectSpawnParams + ldr r0, =gFieldEffectArguments ldr r0, [r0] strh r0, [r2, 0x30] movs r0, 0x9E @@ -6793,7 +6793,7 @@ sub_80B91A4: @ 80B91A4 adds r1, r0 lsls r1, 3 adds r1, r2 - ldr r0, =gFieldEffectSpawnParams + ldr r0, =gFieldEffectArguments ldr r0, [r0] strh r0, [r1, 0xA] movs r0, 0 @@ -6884,7 +6884,7 @@ sub_80B925C: @ 80B925C ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0xA ldrsh r0, [r4, r2] str r0, [r1] @@ -7922,7 +7922,7 @@ _080B9ACA: sub_80B9ADC: @ 80B9ADC push {r4,lr} sub sp, 0x4 - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldrb r0, [r4] ldrb r1, [r4, 0x4] ldrb r2, [r4, 0x8] @@ -8343,7 +8343,7 @@ _080B9E24: sub_80B9E28: @ 80B9E28 push {r4-r7,lr} sub sp, 0x4 - ldr r7, =gFieldEffectSpawnParams + ldr r7, =gFieldEffectArguments ldrb r0, [r7] ldrb r1, [r7, 0x4] ldrb r2, [r7, 0x8] diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 223a27937e..754a8f7ff1 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -574,7 +574,7 @@ _0815432E: thumb_func_start oei_shadow oei_shadow: @ 8154340 push {r4,r5,lr} - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments ldrb r0, [r5] ldrb r1, [r5, 0x4] ldrb r2, [r5, 0x8] @@ -742,7 +742,7 @@ _08154498: oei_grass_normal: @ 81544AC push {r4,r5,lr} sub sp, 0x4 - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments ldrh r1, [r5] mov r0, sp strh r1, [r0] @@ -951,7 +951,7 @@ _08154648: thumb_func_start sub_8154658 sub_8154658: @ 8154658 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1080,7 +1080,7 @@ _0815474C: sub_8154758: @ 8154758 push {r4,r5,lr} sub sp, 0x4 - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments ldrh r1, [r5] mov r0, sp strh r1, [r0] @@ -1282,7 +1282,7 @@ _081548EA: thumb_func_start sub_81548FC sub_81548FC: @ 81548FC push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1336,7 +1336,7 @@ _08154958: thumb_func_start sub_815496C sub_815496C: @ 815496C push {r4-r6,lr} - ldr r6, =gFieldEffectSpawnParams + ldr r6, =gFieldEffectArguments ldrb r0, [r6] ldrb r1, [r6, 0x4] ldrb r2, [r6, 0x8] @@ -1537,7 +1537,7 @@ _08154AF2: thumb_func_start sub_8154B04 sub_8154B04: @ 8154B04 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1591,7 +1591,7 @@ _08154B62: thumb_func_start sub_8154B78 sub_8154B78: @ 8154B78 push {r4,r5,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1646,7 +1646,7 @@ _08154BD8: thumb_func_start sub_8154BEC sub_8154BEC: @ 8154BEC push {r4,r5,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1777,7 +1777,7 @@ _08154CE4: thumb_func_start sub_8154CEC sub_8154CEC: @ 8154CEC push {r4-r6,lr} - ldr r6, =gFieldEffectSpawnParams + ldr r6, =gFieldEffectArguments ldrb r0, [r6] ldrb r1, [r6, 0x4] ldrb r2, [r6, 0x8] @@ -1922,7 +1922,7 @@ _08154E0A: thumb_func_start sub_8154E1C sub_8154E1C: @ 8154E1C push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1976,7 +1976,7 @@ _08154E78: thumb_func_start oei_water_drop_tall oei_water_drop_tall: @ 8154E8C push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2030,7 +2030,7 @@ _08154EE8: thumb_func_start sub_8154EFC sub_8154EFC: @ 8154EFC push {r4-r7,lr} - ldr r7, =gFieldEffectSpawnParams + ldr r7, =gFieldEffectArguments ldrb r0, [r7] ldrb r1, [r7, 0x4] ldrb r2, [r7, 0x8] @@ -2193,7 +2193,7 @@ oei_ripples: @ 8155054 push {r4,lr} ldr r0, =gFieldEffectObjectTemplatePointers ldr r0, [r0, 0x14] - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments movs r2, 0 ldrsh r1, [r4, r2] movs r3, 0x4 @@ -2238,7 +2238,7 @@ _081550A0: thumb_func_start sub_81550B4 sub_81550B4: @ 81550B4 push {r4-r6,lr} - ldr r6, =gFieldEffectSpawnParams + ldr r6, =gFieldEffectArguments ldrb r0, [r6] ldrb r1, [r6, 0x4] ldrb r2, [r6, 0x8] @@ -2393,7 +2393,7 @@ _081551E4: thumb_func_start sub_81551F0 sub_81551F0: @ 81551F0 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2445,7 +2445,7 @@ _08155248: thumb_func_start sub_815525C sub_815525C: @ 815525C push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2497,7 +2497,7 @@ _081552B4: thumb_func_start sub_81552C8 sub_81552C8: @ 81552C8 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2549,7 +2549,7 @@ _08155320: thumb_func_start sub_8155334 sub_8155334: @ 8155334 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2603,7 +2603,7 @@ ash: @ 81553A0 push {r4,lr} lsls r2, 16 lsrs r2, 16 - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments lsls r0, 16 asrs r0, 16 str r0, [r4] @@ -2630,7 +2630,7 @@ ash: @ 81553A0 oei_ash: @ 81553D4 push {r4,r5,lr} sub sp, 0x4 - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments ldrh r1, [r5] mov r0, sp strh r1, [r0] @@ -2809,7 +2809,7 @@ _0815552C: thumb_func_start sub_8155534 sub_8155534: @ 8155534 push {r4,r5,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -3261,7 +3261,7 @@ _08155888: thumb_func_start sub_8155890 sub_8155890: @ 8155890 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -3315,7 +3315,7 @@ _081558EC: thumb_func_start sub_8155900 sub_8155900: @ 8155900 push {r4-r7,lr} - ldr r7, =gFieldEffectSpawnParams + ldr r7, =gFieldEffectArguments ldrb r0, [r7] ldrb r1, [r7, 0x4] ldrb r2, [r7, 0x8] @@ -3505,7 +3505,7 @@ _08155A76: thumb_func_start sub_8155A88 sub_8155A88: @ 8155A88 push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -3586,7 +3586,7 @@ _08155B20: thumb_func_start sub_8155B2C sub_8155B2C: @ 8155B2C push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -3689,7 +3689,7 @@ ShowDisguiseFieldEffect: @ 8155BD0 lsrs r6, r1, 24 lsls r2, 24 lsrs r7, r2, 24 - ldr r5, =gFieldEffectSpawnParams + ldr r5, =gFieldEffectArguments ldrb r0, [r5] ldrb r1, [r5, 0x4] ldrb r2, [r5, 0x8] @@ -3950,7 +3950,7 @@ _08155DD8: thumb_func_start sub_8155DDC sub_8155DDC: @ 8155DDC push {r4,lr} - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r0, [r4] adds r0, 0x7 str r0, [r4] diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s index 7d05dbd983..2152a5c5b4 100644 --- a/asm/field_ground_effect.s +++ b/asm/field_ground_effect.s @@ -1166,7 +1166,7 @@ _08096E8C: @ void GroundEffect_SpawnOnTallGrass(struct npc_state *fieldObject, struct obj *object) GroundEffect_SpawnOnTallGrass: @ 8096E90 push {lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r2, 0x10 ldrsh r1, [r0, r2] str r1, [r3] @@ -1205,7 +1205,7 @@ GroundEffect_SpawnOnTallGrass: @ 8096E90 @ void GroundEffect_StepOnTallGrass(struct npc_state *fieldObject, struct obj *object) GroundEffect_StepOnTallGrass: @ 8096EDC push {lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r2, 0x10 ldrsh r1, [r0, r2] str r1, [r3] @@ -1244,7 +1244,7 @@ GroundEffect_StepOnTallGrass: @ 8096EDC @ void GroundEffect_SpawnOnLongGrass(struct npc_state *fieldObject, struct obj *object) GroundEffect_SpawnOnLongGrass: @ 8096F28 push {lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r2, 0x10 ldrsh r1, [r0, r2] str r1, [r3] @@ -1283,7 +1283,7 @@ GroundEffect_SpawnOnLongGrass: @ 8096F28 @ void GroundEffect_StepOnLongGrass(struct npc_state *fieldObject, struct obj *object) GroundEffect_StepOnLongGrass: @ 8096F74 push {lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r2, 0x10 ldrsh r1, [r0, r2] str r1, [r3] @@ -1413,7 +1413,7 @@ DoTracksGroundEffect_Footprints: @ 8097044 mov r0, sp movs r2, 0x4 bl memcpy - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0x14 ldrsh r0, [r5, r2] str r0, [r1] @@ -1449,7 +1449,7 @@ DoTracksGroundEffect_BikeTireTracks: @ 8097094 ldr r0, [r4, 0x14] cmp r1, r0 beq _080970D6 - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r1, 0x14 ldrsh r0, [r4, r1] str r0, [r2] @@ -1520,7 +1520,7 @@ GroundEffect_JumpOnTallGrass: @ 8097110 sub sp, 0x4 adds r5, r0, 0 adds r6, r1, 0 - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0x10 ldrsh r0, [r5, r2] str r0, [r1] @@ -1562,7 +1562,7 @@ _0809715A: @ void GroundEffect_JumpOnLongGrass(struct npc_state *fieldObject, struct obj *object) GroundEffect_JumpOnLongGrass: @ 8097168 push {lr} - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r3, 0x10 ldrsh r1, [r0, r3] str r1, [r2] @@ -1585,7 +1585,7 @@ GroundEffect_JumpOnLongGrass: @ 8097168 @ void GroundEffect_JumpOnShallowWater(struct npc_state *fieldObject, struct obj *object) GroundEffect_JumpOnShallowWater: @ 8097190 push {r4,lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r4, 0x10 ldrsh r2, [r0, r4] str r2, [r3] @@ -1611,7 +1611,7 @@ GroundEffect_JumpOnShallowWater: @ 8097190 @ void GroundEffect_JumpOnWater(struct npc_state *fieldObject, struct obj *object) GroundEffect_JumpOnWater: @ 80971C0 push {r4,lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r4, 0x10 ldrsh r2, [r0, r4] str r2, [r3] @@ -1637,7 +1637,7 @@ GroundEffect_JumpOnWater: @ 80971C0 @ void GroundEffect_JumpLandingDust(struct npc_state *fieldObject, struct obj *object) GroundEffect_JumpLandingDust: @ 80971F0 push {r4,lr} - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r4, 0x10 ldrsh r2, [r0, r4] str r2, [r3] @@ -1685,7 +1685,7 @@ GroundEffect_HotSprings: @ 8097230 @ void GroundEffect_Seaweed(struct npc_state *fieldObject, struct obj *object) GroundEffect_Seaweed: @ 8097240 push {lr} - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r3, 0x10 ldrsh r1, [r0, r3] str r1, [r2] diff --git a/asm/field_message_box.s b/asm/field_message_box.s index 35267e8d46..0c1fae6dee 100644 --- a/asm/field_message_box.s +++ b/asm/field_message_box.s @@ -108,8 +108,8 @@ _080981E4: .pool thumb_func_end task_del_textbox - thumb_func_start box_related_two__2 -box_related_two__2: @ 80981EC + thumb_func_start ShowFieldMessage +ShowFieldMessage: @ 80981EC push {r4,lr} adds r1, r0, 0 ldr r4, =gUnknown_020375BC @@ -130,7 +130,7 @@ _0809820E: pop {r4} pop {r1} bx r1 - thumb_func_end box_related_two__2 + thumb_func_end ShowFieldMessage thumb_func_start sub_8098214 sub_8098214: @ 8098214 @@ -181,8 +181,8 @@ _08098272: bx r1 thumb_func_end sub_8098238 - thumb_func_start box_related_two__3 -box_related_two__3: @ 8098278 + thumb_func_start ShowFieldAutoScrollMessage +ShowFieldAutoScrollMessage: @ 8098278 push {lr} adds r1, r0, 0 ldr r2, =gUnknown_020375BC @@ -202,7 +202,7 @@ _08098298: _0809829A: pop {r1} bx r1 - thumb_func_end box_related_two__3 + thumb_func_end ShowFieldAutoScrollMessage thumb_func_start sub_80982A0 sub_80982A0: @ 80982A0 @@ -267,8 +267,8 @@ textbox_auto_and_task_add: @ 8098304 bx r0 thumb_func_end textbox_auto_and_task_add - thumb_func_start textbox_close -textbox_close: @ 8098314 + thumb_func_start HideFieldMessageBox +HideFieldMessageBox: @ 8098314 push {lr} bl task_del_textbox movs r0, 0 @@ -280,7 +280,7 @@ textbox_close: @ 8098314 pop {r0} bx r0 .pool - thumb_func_end textbox_close + thumb_func_end HideFieldMessageBox thumb_func_start textbox_any_visible textbox_any_visible: @ 8098330 @@ -290,8 +290,8 @@ textbox_any_visible: @ 8098330 .pool thumb_func_end textbox_any_visible - thumb_func_start sub_809833C -sub_809833C: @ 809833C + thumb_func_start IsFieldMessageBoxHidden +IsFieldMessageBoxHidden: @ 809833C push {lr} ldr r0, =gUnknown_020375BC ldrb r0, [r0] @@ -305,7 +305,7 @@ _08098350: _08098352: pop {r1} bx r1 - thumb_func_end sub_809833C + thumb_func_end IsFieldMessageBoxHidden thumb_func_start sub_8098358 sub_8098358: @ 8098358 diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index 9f47c0a557..34ff54f61d 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -1522,7 +1522,7 @@ PlayerAvatarTransition_Surfing: @ 808B4D8 bl FieldObjectTurn movs r0, 0x8 bl SetPlayerAvatarStateMask - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r2, 0x10 ldrsh r0, [r4, r2] str r0, [r1] @@ -3517,7 +3517,7 @@ _0808C3F0: lsrs r1, 24 adds r0, r4, 0 bl FieldObjectSetSpecialAnim - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r1, 0x10 ldrsh r0, [r4, r1] str r0, [r2] @@ -3897,7 +3897,7 @@ sub_808C750: @ 808C750 lsrs r4, 24 bl ScriptContext2_Enable bl sav1_reset_battle_music_maybe - bl sub_8085898 + bl Overworld_ChangeMusicToDefault ldr r2, =gPlayerAvatar ldrb r1, [r2] movs r0, 0xF7 @@ -4858,7 +4858,7 @@ fishF: @ 808CF2C ldr r0, =gPlayerAvatar strb r1, [r0, 0x6] bl ScriptContext2_Disable - bl sub_809757C + bl UnfreezeMapObjects movs r0, 0 movs r1, 0x1 bl sub_8197434 diff --git a/asm/field_poison.s b/asm/field_poison.s index 5b1e24719c..652026523c 100644 --- a/asm/field_poison.s +++ b/asm/field_poison.s @@ -178,7 +178,7 @@ _080F96A8: strh r0, [r4] b _080F9722 _080F96AE: - bl sub_809833C + bl IsFieldMessageBoxHidden lsls r0, 24 cmp r0, 0 beq _080F9722 @@ -217,7 +217,7 @@ _080F96FC: ldrb r0, [r4, 0x2] bl sub_80F95C0 ldr r0, =gText_PkmnFainted3 - bl box_related_two__2 + bl ShowFieldMessage ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] diff --git a/asm/field_screen.s b/asm/field_screen.s index 83fea2f44b..4ab8a5a539 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -7503,8 +7503,8 @@ _080AED78: bx r0 thumb_func_end bag_add_task0_by_acit - thumb_func_start sub_80AED7C -sub_80AED7C: @ 80AED7C + thumb_func_start SetSav1Weather +SetSav1Weather: @ 80AED7C push {r4,r5,lr} ldr r4, =gSaveBlock1Ptr ldr r1, [r4] @@ -7525,7 +7525,7 @@ sub_80AED7C: @ 80AED7C pop {r0} bx r0 .pool - thumb_func_end sub_80AED7C + thumb_func_end SetSav1Weather thumb_func_start sav1_get_weather_probably sav1_get_weather_probably: @ 80AEDAC @@ -7564,7 +7564,7 @@ sub_80AEDBC: @ 80AEDBC thumb_func_start sub_80AEDF0 sub_80AEDF0: @ 80AEDF0 push {lr} - bl sub_80AED7C + bl SetSav1Weather bl sav1_get_weather_probably lsls r0, 24 lsrs r0, 24 @@ -7576,7 +7576,7 @@ sub_80AEDF0: @ 80AEDF0 thumb_func_start sub_80AEE08 sub_80AEE08: @ 80AEE08 push {lr} - bl sub_80AED7C + bl SetSav1Weather bl sav1_get_weather_probably lsls r0, 24 lsrs r0, 24 @@ -7585,8 +7585,8 @@ sub_80AEE08: @ 80AEE08 bx r0 thumb_func_end sub_80AEE08 - thumb_func_start sub_80AEE20 -sub_80AEE20: @ 80AEE20 + thumb_func_start DoCurrentWeather +DoCurrentWeather: @ 80AEE20 push {r4,r5,lr} bl sav1_get_weather_probably lsls r0, 24 @@ -7627,7 +7627,7 @@ _080AEE6E: pop {r0} bx r0 .pool - thumb_func_end sub_80AEE20 + thumb_func_end DoCurrentWeather thumb_func_start sub_80AEE84 sub_80AEE84: @ 80AEE84 @@ -8390,7 +8390,7 @@ _080AF480: ldrsh r0, [r6, r1] movs r2, 0 ldrsh r1, [r7, r2] - bl sub_808A854 + bl FieldSetDoorOpened movs r0, 0x1 strh r0, [r5, 0x8] b _080AF54A @@ -8427,7 +8427,7 @@ _080AF4DC: ldrsh r0, [r6, r1] movs r2, 0 ldrsh r1, [r7, r2] - bl sub_808A8AC + bl FieldAnimateDoorClose lsls r0, 24 asrs r0, 24 strh r0, [r5, 0xA] @@ -8461,7 +8461,7 @@ _080AF520: cmp r0, 0x1 beq _080AF54A _080AF536: - bl sub_809757C + bl UnfreezeMapObjects movs r0, 0x4 strh r0, [r5, 0x8] b _080AF54A @@ -8550,7 +8550,7 @@ _080AF5EC: lsls r0, 24 cmp r0, 0 beq _080AF60A - bl sub_809757C + bl UnfreezeMapObjects movs r0, 0x3 strh r0, [r5, 0x8] b _080AF60A @@ -8593,7 +8593,7 @@ _080AF644: bl sub_80AF71C cmp r0, 0 beq _080AF65A - bl sub_809757C + bl UnfreezeMapObjects bl ScriptContext2_Disable adds r0, r5, 0 bl DestroyTask @@ -9142,7 +9142,7 @@ _080AFAD4: movs r2, 0 ldrsh r1, [r6, r2] subs r1, 0x1 - bl cur_mapdata_get_door_sound_at + bl GetDoorSoundEffect lsls r0, 16 lsrs r0, 16 bl PlaySE @@ -9151,7 +9151,7 @@ _080AFAD4: movs r2, 0 ldrsh r1, [r6, r2] subs r1, 0x1 - bl task_overworld_door_add_if_role_69_for_opening_door_at + bl FieldAnimateDoorOpen lsls r0, 24 asrs r0, 24 strh r0, [r5, 0xA] @@ -9211,7 +9211,7 @@ _080AFB6C: movs r2, 0 ldrsh r1, [r6, r2] subs r1, 0x1 - bl sub_808A8AC + bl FieldAnimateDoorClose lsls r0, 24 asrs r0, 24 strh r0, [r5, 0xA] @@ -9996,7 +9996,7 @@ _080B0198: bl sub_808D1B4 cmp r0, 0x1 beq _080B01B6 - bl sub_809757C + bl UnfreezeMapObjects bl ScriptContext2_Disable adds r0, r5, 0 bl DestroyTask diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 6f8174fd81..39bd3b5452 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -46,7 +46,7 @@ _0809D8CA: ands r0, r1 cmp r0, 0 beq _0809D8FC - bl sub_809E7B0 + bl DoTimeBasedEvents ldrh r0, [r4] adds r0, 0x1 b _0809D8FA @@ -144,8 +144,8 @@ _0809D992: .pool thumb_func_end overworld_ensure_per_step_coros_running - thumb_func_start activate_per_step_callback -activate_per_step_callback: @ 809D9A8 + thumb_func_start ActivatePerStepCallback +ActivatePerStepCallback: @ 809D9A8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -180,7 +180,7 @@ _0809D9EA: pop {r4} pop {r0} bx r0 - thumb_func_end activate_per_step_callback + thumb_func_end ActivatePerStepCallback thumb_func_start wild_encounter_reset_coro_args wild_encounter_reset_coro_args: @ 809D9F0 diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s index 3ad2a398bd..63acc99829 100644 --- a/asm/fldeff_80F9BCC.s +++ b/asm/fldeff_80F9BCC.s @@ -486,7 +486,7 @@ sub_80F9F78: @ 80F9F78 ands r0, r1 cmp r0, 0 beq _080F9FC0 - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments ldr r0, [r1, 0x4] cmp r0, 0x2 beq _080F9FAE @@ -517,7 +517,7 @@ _080F9FB6: movs r0, 0x18 b _080F9FFC _080F9FC0: - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments ldr r0, [r1, 0x4] cmp r0, 0x2 beq _080F9FEA @@ -643,7 +643,7 @@ _080FA0C4: sub_80FA0DC: @ 80FA0DC push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -701,7 +701,7 @@ sub_80FA13C: @ 80FA13C ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -778,7 +778,7 @@ sub_80FA1D8: @ 80FA1D8 sub_80FA1E8: @ 80FA1E8 push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -836,13 +836,13 @@ sub_80FA248: @ 80FA248 ands r2, r0 cmp r2, 0x96 bne _080FA26A - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r0, 0 str r0, [r1, 0x1C] _080FA26A: cmp r2, 0x9C bne _080FA274 - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments movs r0, 0x2 str r0, [r1, 0x1C] _080FA274: @@ -858,7 +858,7 @@ _080FA274: ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -891,7 +891,7 @@ sub_80FA2D8: @ 80FA2D8 adds r4, r0, 0 movs r0, 0x9B bl PlaySE - ldr r0, =gFieldEffectSpawnParams + ldr r0, =gFieldEffectArguments ldr r1, [r0, 0x1C] adds r2, r4, 0 adds r2, 0x2A @@ -917,7 +917,7 @@ sub_80FA304: @ 80FA304 asrs r0, 16 cmp r0, 0x27 ble _080FA32E - ldr r0, =gFieldEffectSpawnParams + ldr r0, =gFieldEffectArguments ldr r0, [r0, 0x1C] cmp r0, 0 beq _080FA322 @@ -951,7 +951,7 @@ sub_80FA33C: @ 80FA33C sub_80FA34C: @ 80FA34C push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -1009,7 +1009,7 @@ sub_80FA3AC: @ 80FA3AC ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1807,7 +1807,7 @@ sub_80FAA7C: @ 80FAA7C mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] @@ -1930,7 +1930,7 @@ door_restore_tilemap: @ 80FABA4 adds r5, r0, 0 movs r0, 0x83 bl PlaySE - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] subs r1, 0x1 @@ -1953,7 +1953,7 @@ _080FABDC: lsls r2, 2 bl MapGridSetMetatileIdAt _080FABEA: - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, =0x0000020a @@ -1988,7 +1988,7 @@ sub_80FAC24: @ 80FAC24 strh r0, [r5, 0x2E] b _080FAC54 _080FAC38: - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, =0x00000e8c diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index 7f67185a98..e31bf22e2e 100755 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -385,7 +385,7 @@ hm2_ruin_valley: @ 80D3A50 movs r0, 0x1 bl FieldEffectStart bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -421,7 +421,7 @@ sub_80D3A6C: @ 80D3A6C sub_80D3A9C: @ 80D3A9C push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] diff --git a/asm/fldeff_groundshake.s b/asm/fldeff_groundshake.s index cb0d2e2d89..81d92430e0 100755 --- a/asm/fldeff_groundshake.s +++ b/asm/fldeff_groundshake.s @@ -161,7 +161,7 @@ sub_81BE79C: @ 81BE79C beq _081BE7B8 movs r0, 0xA7 lsls r0, 1 - bl FlagReset + bl FlagClear b _081BE7EE .pool _081BE7B8: @@ -188,7 +188,7 @@ _081BE7D4: _081BE7E6: movs r0, 0xA7 lsls r0, 1 - bl FlagReset + bl FlagClear _081BE7EE: pop {r4} pop {r0} diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s index 98764625eb..947517ed5a 100644 --- a/asm/fldeff_strength.s +++ b/asm/fldeff_strength.s @@ -40,7 +40,7 @@ _08145DF2: sub_8145E0C: @ 8145E0C push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -66,7 +66,7 @@ sub_8145E2C: @ 8145E2C lsrs r0, r2, 16 strh r0, [r1, 0x18] strh r2, [r1, 0x1A] - ldr r0, =gFieldEffectSpawnParams + ldr r0, =gFieldEffectArguments ldr r1, [r0] movs r0, 0x64 muls r0, r1 diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s index 5c83b455d9..ea7b2653a5 100644 --- a/asm/fldeff_sweetscent.s +++ b/asm/fldeff_sweetscent.s @@ -24,7 +24,7 @@ hm2_sweet_scent: @ 8159F10 movs r0, 0x33 bl FieldEffectStart bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s index e4f4bce42f..d77e29dd28 100644 --- a/asm/fldeff_teleport.s +++ b/asm/fldeff_teleport.s @@ -39,7 +39,7 @@ hm_teleport_run_dp02scr: @ 817C8FC movs r0, 0x3F bl FieldEffectStart bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] diff --git a/asm/item.s b/asm/item.s index 97582e190e..89177c5d4e 100644 --- a/asm/item.s +++ b/asm/item.s @@ -676,8 +676,8 @@ _080D6D04: .pool thumb_func_end sub_80D6CE4 - thumb_func_start sub_80D6D1C -sub_80D6D1C: @ 80D6D1C + thumb_func_start CheckPCHasItem +CheckPCHasItem: @ 80D6D1C push {r4-r6,lr} lsls r0, 16 lsrs r6, r0, 16 @@ -717,10 +717,10 @@ _080D6D68: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_80D6D1C + thumb_func_end CheckPCHasItem - thumb_func_start sub_80D6D70 -sub_80D6D70: @ 80D6D70 + thumb_func_start AddPCItem +AddPCItem: @ 80D6D70 push {r4-r7,lr} mov r7, r8 push {r7} @@ -819,7 +819,7 @@ _080D6E3A: pop {r1} bx r1 .pool - thumb_func_end sub_80D6D70 + thumb_func_end AddPCItem thumb_func_start sub_80D6E48 sub_80D6E48: @ 80D6E48 diff --git a/asm/item_menu.s b/asm/item_menu.s index c1f94b4e91..1e4dfca491 100755 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -5388,7 +5388,7 @@ _081ADB6C: ldrh r0, [r4] mov r3, r8 ldrh r1, [r3, 0x10] - bl sub_80D6D70 + bl AddPCItem lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x1 diff --git a/asm/item_use.s b/asm/item_use.s index 42b2d8bc0d..d3c7241662 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -2215,7 +2215,7 @@ ItemUseOutOfBattle_BlackWhiteFlute: @ 80FE234 ldr r0, =0x000008ad bl FlagSet ldr r0, =0x000008ae - bl FlagReset + bl FlagClear ldr r0, =gStringVar4 ldr r1, =gText_UsedVar2WildLured bl StringExpandPlaceholders @@ -2225,7 +2225,7 @@ _080FE278: ldr r0, =0x000008ae bl FlagSet ldr r0, =0x000008ad - bl FlagReset + bl FlagClear ldr r0, =gStringVar4 ldr r1, =gText_UsedVar2WildRepelled bl StringExpandPlaceholders diff --git a/asm/link.s b/asm/link.s index fb20b1fb2f..19d88b570a 100644 --- a/asm/link.s +++ b/asm/link.s @@ -21117,7 +21117,7 @@ sub_8014290: @ 8014290 asrs r5, 24 str r5, [sp] adds r3, r4, 0 - bl warp1_set + bl Overworld_SetWarpDestination ldr r0, [r6] movs r1, 0x4 ldrsb r1, [r0, r1] @@ -21182,7 +21182,7 @@ sub_8014304: @ 8014304 adds r0, r4, 0 adds r1, r5, 0 mov r3, r8 - bl warp1_set + bl Overworld_SetWarpDestination bl warp_in add sp, 0x4 pop {r3} @@ -28312,7 +28312,7 @@ _080181BC: sub_80181CC: @ 80181CC push {lr} bl ScriptContext2_Enable - bl sub_80983E8 + bl ScriptFreezeMapObjects pop {r0} bx r0 thumb_func_end sub_80181CC @@ -31292,7 +31292,7 @@ flag_clear_x63: @ 8019A64 adds r0, r1 lsls r0, 16 lsrs r0, 16 - bl FlagReset + bl FlagClear pop {r0} bx r0 .pool diff --git a/asm/map_obj_8097404.s b/asm/map_obj_8097404.s index 4ed8e3bcdb..96ffc22545 100644 --- a/asm/map_obj_8097404.s +++ b/asm/map_obj_8097404.s @@ -205,8 +205,8 @@ _0809756C: .pool thumb_func_end npc_sync_anim_pause_bits - thumb_func_start sub_809757C -sub_809757C: @ 809757C + thumb_func_start UnfreezeMapObjects +UnfreezeMapObjects: @ 809757C push {r4,r5,lr} movs r4, 0 ldr r5, =gMapObjects @@ -231,7 +231,7 @@ _08097598: pop {r0} bx r0 .pool - thumb_func_end sub_809757C + thumb_func_end UnfreezeMapObjects thumb_func_start little_step @ void little_step(struct obj *object, u8 direction) @@ -1396,7 +1396,7 @@ oe_exec_and_other_stuff: @ 8097DD0 adds r0, r1, 0 lsls r4, 24 lsrs r4, 24 - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments adds r2, r1, 0x4 adds r3, r1, 0 adds r3, 0x8 @@ -1434,7 +1434,7 @@ DoRippleFieldEffect: @ 8097E14 adds r4, r1, 0 ldrb r0, [r0, 0x5] bl GetFieldObjectGraphicsInfo - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r3, 0x20 ldrsh r1, [r4, r3] str r1, [r2] diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s index 60757cdd05..ee60814f5b 100644 --- a/asm/map_obj_lock.s +++ b/asm/map_obj_lock.s @@ -59,8 +59,8 @@ _080983E2: bx r1 thumb_func_end sub_80983C4 - thumb_func_start sub_80983E8 -sub_80983E8: @ 80983E8 + thumb_func_start ScriptFreezeMapObjects +ScriptFreezeMapObjects: @ 80983E8 push {lr} bl player_bitmagic ldr r0, =sub_80983A4 @@ -69,7 +69,7 @@ sub_80983E8: @ 80983E8 pop {r0} bx r0 .pool - thumb_func_end sub_80983E8 + thumb_func_end ScriptFreezeMapObjects thumb_func_start sub_8098400 sub_8098400: @ 8098400 @@ -149,8 +149,8 @@ _0809849A: bx r1 thumb_func_end sub_809847C - thumb_func_start sub_80984A0 -sub_80984A0: @ 80984A0 + thumb_func_start LockSelectedMapObject +LockSelectedMapObject: @ 80984A0 push {r4,r5,lr} ldr r4, =gSelectedMapObject ldrb r0, [r4] @@ -184,7 +184,7 @@ _080984DE: pop {r0} bx r0 .pool - thumb_func_end sub_80984A0 + thumb_func_end LockSelectedMapObject thumb_func_start sub_80984F4 sub_80984F4: @ 80984F4 @@ -203,7 +203,7 @@ sub_80984F4: @ 80984F4 adds r0, r1 bl FieldObjectClearAnimIfSpecialAnimFinished bl sub_80D338C - bl sub_809757C + bl UnfreezeMapObjects pop {r0} bx r0 .pool @@ -239,7 +239,7 @@ _08098542: adds r0, r4 bl FieldObjectClearAnimIfSpecialAnimFinished bl sub_80D338C - bl sub_809757C + bl UnfreezeMapObjects pop {r4} pop {r0} bx r0 diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s index 7b21e19e7f..eb1fb781ca 100644 --- a/asm/mauville_old_man.s +++ b/asm/mauville_old_man.s @@ -2205,7 +2205,7 @@ sub_8121178: @ 8121178 bl ConvertInternationalString mov r0, r8 bl sub_8120EC0 - bl box_related_two__2 + bl ShowFieldMessage pop {r3} mov r8, r3 pop {r4-r6} diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s index d544f689f3..ce8591981c 100644 --- a/asm/mystery_event_script.s +++ b/asm/mystery_event_script.s @@ -46,7 +46,7 @@ sub_8153804: @ 8153804 ldr r1, =gUnknown_08674C86 bl StringExpandPlaceholders movs r0, 0x3 - bl sub_81538C4 + bl SetMysteryEventScriptStatus pop {r0} bx r0 .pool @@ -140,13 +140,13 @@ _081538AC: .pool thumb_func_end sub_81538A0 - thumb_func_start sub_81538C4 -sub_81538C4: @ 81538C4 + thumb_func_start SetMysteryEventScriptStatus +SetMysteryEventScriptStatus: @ 81538C4 ldr r1, =gUnknown_0203BBC0 str r0, [r1, 0x6C] bx lr .pool - thumb_func_end sub_81538C4 + thumb_func_end SetMysteryEventScriptStatus thumb_func_start sub_81538D0 sub_81538D0: @ 81538D0 diff --git a/asm/party_menu.s b/asm/party_menu.s index a881d45890..f4742a55ee 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -10051,7 +10051,7 @@ task_launch_hm_phase_2: @ 81B5750 cmp r0, 0x1 bne _081B577C bl brm_get_selected_species - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 16 lsrs r0, 16 str r0, [r1] @@ -10135,7 +10135,7 @@ _081B57FE: hm_surf_run_dp02scr: @ 81B5804 push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -10239,7 +10239,7 @@ sub_81B58A8: @ 81B58A8 hm2_waterfall: @ 81B58D4 push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -10299,7 +10299,7 @@ _081B594E: sub_81B5958: @ 81B5958 push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -10314,7 +10314,7 @@ sub_81B5958: @ 81B5958 sub_81B5974: @ 81B5974 push {lr} bl sub_809D1E8 - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1, 0x4] @@ -15205,7 +15205,7 @@ sub_81B841C: @ 81B841C beq _081B8438 adds r0, r1, 0 movs r1, 0x1 - bl sub_80D6D70 + bl AddPCItem b _081B8440 .pool _081B8438: diff --git a/asm/player_pc.s b/asm/player_pc.s index 14062347cc..cd91ed3e1c 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -31,7 +31,7 @@ _0816AE1A: ldrh r0, [r0] adds r1, r6 ldrh r1, [r1] - bl sub_80D6D70 + bl AddPCItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 6c4c7ff13c..298409e9c0 100755 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -6902,7 +6902,7 @@ sub_80CABE0: @ 80CABE0 cmp r1, r0 beq _080CAC0A ldr r0, =0x000008d7 - bl FlagReset + bl FlagClear ldr r4, =0x00004036 bl StorageGetCurrentBox adds r1, r0, 0 diff --git a/asm/record_mixing.s b/asm/record_mixing.s index aacc5baa08..37257eb752 100644 --- a/asm/record_mixing.s +++ b/asm/record_mixing.s @@ -2266,7 +2266,7 @@ sub_80E7F68: @ 80E7F68 bne _080E7FE4 ldrh r0, [r4] movs r1, 0x1 - bl sub_80D6D1C + bl CheckPCHasItem lsls r0, 24 cmp r0, 0 bne _080E7FE4 diff --git a/asm/rom4.s b/asm/rom4.s index 0a624620dd..bf682fc517 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -36,15 +36,15 @@ flag_var_implications_of_teleport_: @ 8084660 push {lr} bl player_avatar_init_params_reset ldr r0, =0x0000088b - bl FlagReset + bl FlagClear ldr r0, =0x0000088d - bl FlagReset + bl FlagClear ldr r0, =0x0000088c - bl FlagReset + bl FlagClear ldr r0, =0x00000889 - bl FlagReset + bl FlagClear ldr r0, =0x00000888 - bl FlagReset + bl FlagClear pop {r0} bx r0 .pool @@ -55,15 +55,15 @@ sub_808469C: @ 808469C push {lr} bl player_avatar_init_params_reset ldr r0, =0x0000088b - bl FlagReset + bl FlagClear ldr r0, =0x0000088d - bl FlagReset + bl FlagClear ldr r0, =0x0000088c - bl FlagReset + bl FlagClear ldr r0, =0x00000889 - bl FlagReset + bl FlagClear ldr r0, =0x00000888 - bl FlagReset + bl FlagClear ldr r0, =gUnknown_08271862 bl ScriptContext2_RunNewScript pop {r0} @@ -76,15 +76,15 @@ flagmods_08054D70: @ 80846E4 push {lr} bl player_avatar_init_params_reset ldr r0, =0x0000088b - bl FlagReset + bl FlagClear ldr r0, =0x0000088d - bl FlagReset + bl FlagClear ldr r0, =0x0000088c - bl FlagReset + bl FlagClear ldr r0, =0x00000889 - bl FlagReset + bl FlagClear ldr r0, =0x00000888 - bl FlagReset + bl FlagClear pop {r0} bx r0 .pool @@ -95,15 +95,15 @@ sub_8084720: @ 8084720 push {r4,lr} bl player_avatar_init_params_reset ldr r0, =0x0000088b - bl FlagReset + bl FlagClear ldr r0, =0x0000088d - bl FlagReset + bl FlagClear ldr r0, =0x0000088c - bl FlagReset + bl FlagClear ldr r0, =0x00000889 - bl FlagReset + bl FlagClear ldr r0, =0x00000888 - bl FlagReset + bl FlagClear ldr r4, =0x00004039 adds r0, r4, 0 bl VarGet @@ -128,7 +128,7 @@ _08084764: sub_8084788: @ 8084788 push {lr} ldr r0, =0x0000088c - bl FlagReset + bl FlagClear bl sub_8085B2C bl wild_pokemon_reroll bl UpdateLocationHistoryForRoamer @@ -324,8 +324,8 @@ _080848F4: .pool thumb_func_end CopyFieldObjectTemplateCoordsToSav1 - thumb_func_start update_saveblock1_field_object_coords -update_saveblock1_field_object_coords: @ 8084910 + thumb_func_start Overworld_SetMapObjTemplateCoords +Overworld_SetMapObjTemplateCoords: @ 8084910 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -356,10 +356,10 @@ _08084944: pop {r4-r6} pop {r0} bx r0 - thumb_func_end update_saveblock1_field_object_coords + thumb_func_end Overworld_SetMapObjTemplateCoords - thumb_func_start update_saveblock1_field_object_movement_behavior -update_saveblock1_field_object_movement_behavior: @ 808494C + thumb_func_start Overworld_SetMapObjTemplateMovementType +Overworld_SetMapObjTemplateMovementType: @ 808494C push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -387,7 +387,7 @@ _08084978: pop {r4,r5} pop {r0} bx r0 - thumb_func_end update_saveblock1_field_object_movement_behavior + thumb_func_end Overworld_SetMapObjTemplateMovementType thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw mapdata_load_assets_to_gpu_and_full_redraw: @ 8084980 @@ -710,9 +710,9 @@ warp_in: @ 8084BD8 bx r0 thumb_func_end warp_in - thumb_func_start warp1_set -@ void warp1_set(char bank, char map, char warpid, char enter_x, char enter_y) -warp1_set: @ 8084BEC + thumb_func_start Overworld_SetWarpDestination +@ void Overworld_SetWarpDestination(char bank, char map, char warpid, char enter_x, char enter_y) +Overworld_SetWarpDestination: @ 8084BEC push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 @@ -741,7 +741,7 @@ warp1_set: @ 8084BEC pop {r0} bx r0 .pool - thumb_func_end warp1_set + thumb_func_end Overworld_SetWarpDestination thumb_func_start warp1_set_2 @ void warp1_set_2(char bank, char map, char warpid) @@ -757,7 +757,7 @@ warp1_set_2: @ 8084C28 movs r3, 0x1 negs r3, r3 str r3, [sp] - bl warp1_set + bl Overworld_SetWarpDestination add sp, 0x4 pop {r0} bx r0 @@ -857,7 +857,7 @@ sub_8084CCC: @ 8084CCC lsls r4, 24 asrs r4, 24 str r4, [sp] - bl warp1_set + bl Overworld_SetWarpDestination _08084CFA: add sp, 0x4 pop {r4} @@ -879,8 +879,8 @@ copy_saved_warp3_bank_and_enter_x_to_warp1: @ 8084D04 .pool thumb_func_end copy_saved_warp3_bank_and_enter_x_to_warp1 - thumb_func_start sub_8084D1C -sub_8084D1C: @ 8084D1C + thumb_func_start Overworld_SetHealLocationWarp +Overworld_SetHealLocationWarp: @ 8084D1C push {r4,r5,lr} sub sp, 0x8 lsls r0, 24 @@ -911,7 +911,7 @@ _08084D50: pop {r0} bx r0 .pool - thumb_func_end sub_8084D1C + thumb_func_end Overworld_SetHealLocationWarp thumb_func_start sub_8084D5C sub_8084D5C: @ 8084D5C @@ -1126,7 +1126,7 @@ _08084EF0: lsls r4, r6, 24 asrs r4, 24 str r4, [sp] - bl warp1_set + bl Overworld_SetWarpDestination _08084F0A: add sp, 0x4 pop {r4-r6} @@ -1289,7 +1289,7 @@ sub_8084FF8: @ 8084FF8 lsls r4, r5, 24 asrs r4, 24 str r4, [sp] - bl warp1_set + bl Overworld_SetWarpDestination b _0808504C _08085030: bl mapheader_run_script_with_tag_x6 @@ -1365,7 +1365,7 @@ mliX_load_map: @ 8085098 negs r3, r3 str r3, [sp] adds r2, r3, 0 - bl warp1_set + bl Overworld_SetWarpDestination ldr r4, =gMapHeader ldrb r0, [r4, 0x14] cmp r0, 0x3A @@ -1382,7 +1382,7 @@ _080850C8: adds r0, r6, 0 adds r1, r5, 0 bl sub_80B21B4 - bl sub_809E7B0 + bl DoTimeBasedEvents bl sub_80AEDBC bl sub_8085B2C bl update_sav1_flash_used_on_map @@ -1404,7 +1404,7 @@ _08085116: bl sub_80A0A2C bl UpdateLocationHistoryForRoamer bl RoamerMove - bl sub_80AEE20 + bl DoCurrentWeather bl wild_encounter_reset_coro_args bl mapheader_run_script_with_tag_x5 ldr r2, =gMapHeader @@ -1481,14 +1481,14 @@ _080851A2: bl sub_80B21B4 cmp r7, 0x1 beq _080851EE - bl sub_809E7B0 + bl DoTimeBasedEvents _080851EE: bl sub_80AEDBC bl sub_8085B2C cmp r5, 0 beq _08085200 ldr r0, =0x00000888 - bl FlagReset + bl FlagClear _08085200: bl update_sav1_flash_used_on_map bl sav1_reset_battle_music_maybe @@ -1858,8 +1858,8 @@ _080854DE: .pool thumb_func_end update_sav1_flash_used_on_map - thumb_func_start sub_80854EC -sub_80854EC: @ 80854EC + thumb_func_start Overworld_SetFlashLevel +Overworld_SetFlashLevel: @ 80854EC push {lr} adds r1, r0, 0 cmp r1, 0 @@ -1878,7 +1878,7 @@ _080854FE: pop {r0} bx r0 .pool - thumb_func_end sub_80854EC + thumb_func_end Overworld_SetFlashLevel thumb_func_start sav1_get_flash_used_on_map sav1_get_flash_used_on_map: @ 8085514 @@ -2263,14 +2263,14 @@ _080857E8: .pool thumb_func_end sub_8085784 - thumb_func_start sav1_set_battle_music_maybe -sav1_set_battle_music_maybe: @ 80857F4 + thumb_func_start Overworld_SetSavedMusic +Overworld_SetSavedMusic: @ 80857F4 ldr r1, =gSaveBlock1Ptr ldr r1, [r1] strh r0, [r1, 0x2C] bx lr .pool - thumb_func_end sav1_set_battle_music_maybe + thumb_func_end Overworld_SetSavedMusic thumb_func_start sav1_reset_battle_music_maybe sav1_reset_battle_music_maybe: @ 8085800 @@ -2339,8 +2339,8 @@ _08085890: bx r0 thumb_func_end sub_8085810 - thumb_func_start sub_8085898 -sub_8085898: @ 8085898 + thumb_func_start Overworld_ChangeMusicToDefault +Overworld_ChangeMusicToDefault: @ 8085898 push {r4,lr} bl GetCurrentMapMusic adds r4, r0, 0 @@ -2360,10 +2360,10 @@ _080858BE: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8085898 + thumb_func_end Overworld_ChangeMusicToDefault - thumb_func_start sub_80858C4 -sub_80858C4: @ 80858C4 + thumb_func_start Overworld_ChangeMusicTo +Overworld_ChangeMusicTo: @ 80858C4 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -2383,7 +2383,7 @@ _080858E4: pop {r0} bx r0 .pool - thumb_func_end sub_80858C4 + thumb_func_end Overworld_ChangeMusicTo thumb_func_start is_warp1_light_level_8_or_9 is_warp1_light_level_8_or_9: @ 80858F0 @@ -3525,8 +3525,8 @@ _08086278: _08086286: bl CopyFieldObjectTemplateCoordsToSav1 _0808628A: - bl sub_809757C - bl sub_809E7B0 + bl UnfreezeMapObjects + bl DoTimeBasedEvents bl sub_8084788 ldr r0, =gMapHeader ldrh r1, [r0, 0x12] diff --git a/asm/rom6.s b/asm/rom6.s index 2ed9d888ec..ee2c3059dd 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -167,7 +167,7 @@ sub_8135578: @ 8135578 cmp r4, 0 bne _081355FC bl player_get_direction_lower_nybble - ldr r6, =gFieldEffectSpawnParams + ldr r6, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r6, 0x4] @@ -303,7 +303,7 @@ _081356AC: sub_81356C4: @ 81356C4 push {lr} bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -380,7 +380,7 @@ hm2_dig: @ 8135760 movs r0, 0x26 bl FieldEffectStart bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -3381,7 +3381,7 @@ hm2_flash: @ 8137178 lsls r4, 24 lsrs r4, 24 bl brm_get_pokemon_selection - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] @@ -4337,7 +4337,7 @@ sub_8137988: @ 8137988 .pool _081379C8: ldr r0, =0x0000089a - bl FlagReset + bl FlagClear _081379CE: pop {r0} bx r0 @@ -4629,7 +4629,7 @@ sub_8137C10: @ 8137C10 ldr r0, =gSpecialVar_0x8004 ldrh r0, [r0] bl sub_8137A98 - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 .pool @@ -5030,7 +5030,7 @@ _08137F6E: movs r1, 0 bl VarSet movs r0, 0 - bl sav1_set_battle_music_maybe + bl Overworld_SetSavedMusic _08137F7C: pop {r4} pop {r0} @@ -5056,7 +5056,7 @@ sub_8137F90: @ 8137F90 sub_8137FB0: @ 8137FB0 push {lr} ldr r0, =0x0000088d - bl FlagReset + bl FlagClear pop {r0} bx r0 .pool @@ -6378,7 +6378,7 @@ sub_8138AA4: @ 8138AA4 sub_8138AC0: @ 8138AC0 push {lr} ldr r0, =gStringVar4 - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 .pool @@ -6485,7 +6485,7 @@ sub_8138B8C: @ 8138B8C movs r0, 0x13 movs r1, 0 movs r3, 0x6 - bl warp1_set + bl Overworld_SetWarpDestination b _08138BC2 .pool _08138BB0: @@ -6496,7 +6496,7 @@ _08138BB0: movs r0, 0x13 movs r1, 0x1 movs r3, 0x6 - bl warp1_set + bl Overworld_SetWarpDestination _08138BC2: add sp, 0x4 pop {r0} @@ -6537,7 +6537,7 @@ _08138BF6: thumb_func_start sub_8138C04 sub_8138C04: @ 8138C04 push {r4,lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7051,7 +7051,7 @@ sub_8138FEC: @ 8138FEC ldr r1, =gSpecialVar_0x8004 ldr r0, =0x000001f5 strh r0, [r1] - bl FlagReset + bl FlagClear pop {r0} bx r0 .pool @@ -7060,7 +7060,7 @@ sub_8138FEC: @ 8138FEC thumb_func_start sub_8139004 sub_8139004: @ 8139004 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7084,7 +7084,7 @@ _0813902A: thumb_func_start sub_8139030 sub_8139030: @ 8139030 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7108,7 +7108,7 @@ _08139056: thumb_func_start sub_813905C sub_813905C: @ 813905C push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7132,7 +7132,7 @@ _08139082: thumb_func_start sub_8139088 sub_8139088: @ 8139088 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7156,7 +7156,7 @@ _081390AE: thumb_func_start sub_81390B4 sub_81390B4: @ 81390B4 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7295,7 +7295,7 @@ RemoveScriptFieldObject: @ 81391AC thumb_func_start sub_81391D0 sub_81391D0: @ 81391D0 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7479,7 +7479,7 @@ _08139342: thumb_func_start sub_8139348 sub_8139348: @ 8139348 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7507,7 +7507,7 @@ sub_8139370: @ 8139370 movs r1, 0x1 mov r0, sp strb r1, [r0] - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7538,7 +7538,7 @@ _081393B6: thumb_func_start sub_81393C8 sub_81393C8: @ 81393C8 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7858,7 +7858,7 @@ sub_8139648: @ 8139648 cmp r0, 0x1 beq _08139664 movs r0, 0x14 - bl sub_80AED7C + bl SetSav1Weather _08139664: pop {r0} bx r0 @@ -7876,14 +7876,14 @@ sub_8139668: @ 8139668 cmp r0, 0x1 beq _08139684 movs r0, 0x15 - bl sub_80AED7C + bl SetSav1Weather _08139684: pop {r0} bx r0 thumb_func_end sub_8139668 - thumb_func_start sub_8139688 -sub_8139688: @ 8139688 + thumb_func_start GetLeadMonIndex +GetLeadMonIndex: @ 8139688 push {r4-r6,lr} bl CalculatePlayerPartyCount lsls r0, 24 @@ -7926,7 +7926,7 @@ _081396D8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_8139688 + thumb_func_end GetLeadMonIndex thumb_func_start sub_81396E0 sub_81396E0: @ 81396E0 @@ -9094,7 +9094,7 @@ _0813A062: lsls r0, 2 adds r0, r7 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -9996,7 +9996,7 @@ _0813A7C6: lsrs r0, 22 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 .pool @@ -10036,7 +10036,7 @@ sub_813A820: @ 813A820 lsls r0, r4, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage ldr r0, =0x00004031 adds r1, r4, 0 bl VarSet @@ -10056,7 +10056,7 @@ sub_813A854: @ 813A854 lsrs r0, 14 adds r0, r4 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r4} pop {r0} bx r0 @@ -11039,7 +11039,7 @@ _0813B0F8: ldr r0, =sub_813B160 movs r1, 0x8 bl CreateTask - ldr r3, =gFieldEffectSpawnParams + ldr r3, =gFieldEffectArguments movs r0, 0x1 str r0, [r3] movs r0, 0x3A @@ -11074,7 +11074,7 @@ _0813B13A: adds r0, r5, r0 ldrb r2, [r0] movs r0, 0x1 - bl update_saveblock1_field_object_coords + bl Overworld_SetMapObjTemplateCoords add sp, 0x4 pop {r4,r5} pop {r0} @@ -11238,7 +11238,7 @@ _0813B27E: cmp r0, r4 beq _0813B2A6 ldr r0, =0x000008d7 - bl FlagReset + bl FlagClear _0813B2A6: ldr r0, =0x00004036 lsrs r1, r7, 16 @@ -11778,7 +11778,7 @@ _0813B728: cmp r0, 0x2 bne _0813B790 ldr r0, =gUnknown_0824979B - bl box_related_two__3 + bl ShowFieldAutoScrollMessage b _0813B790 .pool _0813B74C: @@ -11787,7 +11787,7 @@ _0813B74C: cmp r0, 0x3 bne _0813B790 ldr r0, =gUnknown_0824979B - bl box_related_two__3 + bl ShowFieldAutoScrollMessage b _0813B790 .pool _0813B764: @@ -12075,7 +12075,7 @@ sub_813B9A0: @ 813B9A0 cmp r1, r0 bne _0813B9B6 movs r0, 0x3 - bl sub_8084D1C + bl Overworld_SetHealLocationWarp _0813B9B6: pop {r0} bx r0 @@ -12187,16 +12187,16 @@ sub_813BA60: @ 813BA60 adds r1, r2 strh r0, [r1] ldr r0, =0x00000315 - bl FlagReset + bl FlagClear ldr r0, =0x00000316 - bl FlagReset + bl FlagClear ldr r0, =0x00000317 - bl FlagReset + bl FlagClear movs r0, 0xC6 lsls r0, 2 - bl FlagReset + bl FlagClear ldr r0, =0x000002da - bl FlagReset + bl FlagClear ldr r0, =0x00004095 movs r1, 0x1 bl VarSet diff --git a/asm/scrcmd.s b/asm/scrcmd.s deleted file mode 100644 index f2e61a9463..0000000000 --- a/asm/scrcmd.s +++ /dev/null @@ -1,5744 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start s00_nop -s00_nop: @ 80992CC - movs r0, 0 - bx lr - thumb_func_end s00_nop - - thumb_func_start s01_nop -s01_nop: @ 80992D0 - movs r0, 0 - bx lr - thumb_func_end s01_nop - - thumb_func_start s02_end -s02_end: @ 80992D4 - push {lr} - bl StopScript - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s02_end - - thumb_func_start s24_execute_ASM_2 -s24_execute_ASM_2: @ 80992E0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s24_execute_ASM_2 - - thumb_func_start s25_extended_cmd -s25_extended_cmd: @ 80992F8 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - ldr r1, =gUnknown_081DBA64 - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s25_extended_cmd - - thumb_func_start s26_extended_cmd_setvar -s26_extended_cmd_setvar: @ 8099318 - push {r4-r6,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r6, r0, 0 - ldr r4, =gUnknown_081DBA64 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 14 - adds r0, r4 - ldr r0, [r0] - bl _call_via_r0 - strh r0, [r6] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end s26_extended_cmd_setvar - - thumb_func_start s23_execute_ASM -s23_execute_ASM: @ 809934C - push {lr} - bl ScriptReadWord - bl _call_via_r0 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s23_execute_ASM - - thumb_func_start s27_set_to_waitstate -s27_set_to_waitstate: @ 809935C - push {lr} - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end s27_set_to_waitstate - - thumb_func_start s05_goto -s05_goto: @ 8099368 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - adds r0, r4, 0 - bl ScriptJump - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s05_goto - - thumb_func_start s03_return -s03_return: @ 8099380 - push {lr} - bl ScriptReturn - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s03_return - - thumb_func_start s04_call -s04_call: @ 809938C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - adds r0, r4, 0 - bl ScriptCall - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s04_call - - thumb_func_start s06_if_jump -@ int s06_if_jump(script_env *env) -s06_if_jump: @ 80993A4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r1, =gUnknown_085102C0 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080993D2 - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptJump -_080993D2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s06_if_jump - - thumb_func_start s07_if_call -s07_if_call: @ 80993E0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r1, =gUnknown_085102C0 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0809940E - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptCall -_0809940E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s07_if_call - - thumb_func_start sB8_set_virtual_address -@ int sB8_set_virtual_address(script_env *env) -sB8_set_virtual_address: @ 809941C - push {r4,lr} - ldr r4, [r0, 0x8] - subs r4, 0x1 - bl ScriptReadWord - ldr r1, =gUnknown_020375C4 - subs r0, r4 - str r0, [r1] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sB8_set_virtual_address - - thumb_func_start sB9_virtual_jump -@ int sB9_virtual_jump(script_env *env) -sB9_virtual_jump: @ 8099438 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, =gUnknown_020375C4 - ldr r0, [r0] - subs r1, r0 - adds r0, r4, 0 - bl ScriptJump - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sB9_virtual_jump - - thumb_func_start sBA_virtual_call -sBA_virtual_call: @ 809945C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, =gUnknown_020375C4 - ldr r0, [r0] - subs r1, r0 - adds r0, r4, 0 - bl ScriptCall - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sBA_virtual_call - - thumb_func_start sBB_virtual_if_jump -sBB_virtual_if_jump: @ 8099480 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - ldr r1, =gUnknown_020375C4 - ldr r1, [r1] - subs r2, r0, r1 - ldr r1, =gUnknown_085102C0 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080994B2 - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptJump -_080994B2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sBB_virtual_if_jump - - thumb_func_start sBC_virtual_if_call -sBC_virtual_if_call: @ 80994C4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - ldr r1, =gUnknown_020375C4 - ldr r1, [r1] - subs r2, r0, r1 - ldr r1, =gUnknown_085102C0 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080994F6 - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptCall -_080994F6: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sBC_virtual_if_call - - thumb_func_start s08_jumpstd -s08_jumpstd: @ 8099508 - push {lr} - adds r2, r0, 0 - ldr r0, [r2, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r2, 0x8] - lsls r1, 2 - ldr r0, =gUnknown_081DC2A0 - adds r1, r0 - ldr r0, =gUnknown_081DC2CC - cmp r1, r0 - bcs _08099528 - ldr r1, [r1] - adds r0, r2, 0 - bl ScriptJump -_08099528: - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s08_jumpstd - - thumb_func_start s09_callstd -s09_callstd: @ 8099538 - push {lr} - adds r2, r0, 0 - ldr r0, [r2, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r2, 0x8] - lsls r1, 2 - ldr r0, =gUnknown_081DC2A0 - adds r1, r0 - ldr r0, =gUnknown_081DC2CC - cmp r1, r0 - bcs _08099558 - ldr r1, [r1] - adds r0, r2, 0 - bl ScriptCall -_08099558: - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s09_callstd - - thumb_func_start s0A_jumpstd_if -s0A_jumpstd_if: @ 8099568 - push {r4,lr} - adds r3, r0, 0 - ldr r0, [r3, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldr r1, =gUnknown_085102C0 - lsls r0, r2, 1 - adds r0, r2 - ldrb r2, [r3, 0x2] - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080995A0 - lsls r0, r4, 2 - ldr r1, =gUnknown_081DC2A0 - adds r1, r0, r1 - ldr r0, =gUnknown_081DC2CC - cmp r1, r0 - bcs _080995A0 - ldr r1, [r1] - adds r0, r3, 0 - bl ScriptJump -_080995A0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s0A_jumpstd_if - - thumb_func_start s0B_callstd_if -s0B_callstd_if: @ 80995B4 - push {r4,lr} - adds r3, r0, 0 - ldr r0, [r3, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldr r1, =gUnknown_085102C0 - lsls r0, r2, 1 - adds r0, r2 - ldrb r2, [r3, 0x2] - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080995EC - lsls r0, r4, 2 - ldr r1, =gUnknown_081DC2A0 - adds r1, r0, r1 - ldr r0, =gUnknown_081DC2CC - cmp r1, r0 - bcs _080995EC - ldr r1, [r1] - adds r0, r3, 0 - bl ScriptCall -_080995EC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s0B_callstd_if - - thumb_func_start s0C_restore_execution_after_sCF -s0C_restore_execution_after_sCF: @ 8099600 - push {lr} - ldr r1, =gUnknown_020375C0 - ldr r1, [r1] - bl ScriptJump - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s0C_restore_execution_after_sCF - - thumb_func_start s0D_endscript_killram -s0D_endscript_killram: @ 8099614 - push {r4,lr} - adds r4, r0, 0 - bl ClearRamScript - adds r0, r4, 0 - bl StopScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s0D_endscript_killram - - thumb_func_start s0E_set_byte -s0E_set_byte: @ 809962C - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl sub_81538C4 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s0E_set_byte - - thumb_func_start s0F_u32_var_to_const -@ int s0F_u32_var_to_const(script_env *env) -s0F_u32_var_to_const: @ 8099644 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - lsls r5, 2 - adds r4, 0x64 - adds r4, r5 - str r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s0F_u32_var_to_const - - thumb_func_start s12_u32_var_to_ptr -@ int s12_u32_var_to_ptr(script_env *env) -s12_u32_var_to_ptr: @ 8099668 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - lsls r5, 2 - adds r4, 0x64 - adds r4, r5 - ldrb r0, [r0] - str r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s12_u32_var_to_ptr - - thumb_func_start s11_u8_ptr_to_const -@ int s11_u8_ptr_to_const(script_env *env) -s11_u8_ptr_to_const: @ 809968C - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - strb r4, [r0] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s11_u8_ptr_to_const - - thumb_func_start s10_u8_var_to_const -@ int s10_u8_var_to_const(script_env *env) -s10_u8_var_to_const: @ 80996A4 - ldr r1, [r0, 0x8] - ldrb r3, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - lsls r3, 2 - adds r2, r0, 0 - adds r2, 0x64 - adds r2, r3 - ldrb r3, [r1] - str r3, [r2] - adds r1, 0x1 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end s10_u8_var_to_const - - thumb_func_start s13_u8_var_to_ptr -@ int s13_u8_var_to_ptr(script_env *env) -s13_u8_var_to_ptr: @ 80996C0 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - lsls r5, 2 - adds r4, 0x64 - adds r4, r5 - ldr r1, [r4] - strb r1, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s13_u8_var_to_ptr - - thumb_func_start s14_u32_var_to_var -s14_u32_var_to_var: @ 80996E4 - ldr r1, [r0, 0x8] - ldrb r3, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - lsls r3, 2 - adds r0, 0x64 - adds r3, r0, r3 - lsls r2, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - movs r0, 0 - bx lr - thumb_func_end s14_u32_var_to_var - - thumb_func_start s15_u8_ptr_to_ptr -s15_u8_ptr_to_ptr: @ 8099704 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadWord - ldrb r0, [r0] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s15_u8_ptr_to_ptr - - thumb_func_start s16_u16_gvar_to_const -s16_u16_gvar_to_const: @ 8099720 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r4, r0, 0 - adds r0, r5, 0 - bl ScriptReadHalfword - strh r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s16_u16_gvar_to_const - - thumb_func_start s19_u16_gvar_gvar -s19_u16_gvar_gvar: @ 8099744 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldrh r0, [r0] - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s19_u16_gvar_gvar - - thumb_func_start s1A_u16_gvar_gvar -s1A_u16_gvar_gvar: @ 8099770 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s1A_u16_gvar_gvar - - thumb_func_start compare_012 -compare_012: @ 809979C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r0, r1 - bcs _080997AE - movs r0, 0 - b _080997B8 -_080997AE: - cmp r0, r1 - beq _080997B6 - movs r0, 0x2 - b _080997B8 -_080997B6: - movs r0, 0x1 -_080997B8: - pop {r1} - bx r1 - thumb_func_end compare_012 - - thumb_func_start s1B_cmp_u8_var_var -s1B_cmp_u8_var_var: @ 80997BC - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - lsls r0, 2 - adds r3, r4, 0 - adds r3, 0x64 - adds r0, r3, r0 - ldrb r0, [r0] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - lsls r1, 2 - adds r3, r1 - ldrb r1, [r3] - adds r2, 0x1 - str r2, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s1B_cmp_u8_var_var - - thumb_func_start s1C_cmp_u8_var_const -s1C_cmp_u8_var_const: @ 80997EC - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r1, [r2] - lsls r1, 2 - adds r0, 0x64 - adds r0, r1 - ldrb r0, [r0] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s1C_cmp_u8_var_const - - thumb_func_start s1D_cmp_u8_var_ptr -s1D_cmp_u8_var_ptr: @ 8099814 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r1, [r2] - lsls r1, 2 - adds r0, 0x64 - adds r0, r1 - ldrb r5, [r0] - adds r2, 0x1 - str r2, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - ldrb r1, [r0] - adds r0, r5, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s1D_cmp_u8_var_ptr - - thumb_func_start s1E_cmp_u8_ptr_var -s1E_cmp_u8_ptr_var: @ 8099840 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldrb r0, [r0] - ldr r3, [r4, 0x8] - ldrb r2, [r3] - lsls r2, 2 - adds r1, r4, 0 - adds r1, 0x64 - adds r1, r2 - ldrb r1, [r1] - adds r3, 0x1 - str r3, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s1E_cmp_u8_ptr_var - - thumb_func_start s1F_cmp_u8_ptr_const -s1F_cmp_u8_ptr_const: @ 809986C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldrb r0, [r0] - ldr r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s1F_cmp_u8_ptr_const - - thumb_func_start s20_cmp_u8_ptr_ptr -s20_cmp_u8_ptr_ptr: @ 809988C - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldrb r5, [r0] - adds r0, r4, 0 - bl ScriptReadWord - ldrb r1, [r0] - adds r0, r5, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s20_cmp_u8_ptr_ptr - - thumb_func_start s21_cmp_u16_gvar_const -s21_cmp_u16_gvar_const: @ 80998B0 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldrh r5, [r0] - adds r0, r4, 0 - bl ScriptReadHalfword - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s21_cmp_u16_gvar_const - - thumb_func_start s22_cmp_u16_gvar_gvar -s22_cmp_u16_gvar_gvar: @ 80998E0 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldrh r2, [r5] - ldrh r1, [r0] - adds r0, r2, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s22_cmp_u16_gvar_gvar - - thumb_func_start s17_u16_gvar_add_const -s17_u16_gvar_add_const: @ 8099914 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r4, r0, 0 - adds r0, r5, 0 - bl ScriptReadHalfword - ldrh r1, [r4] - adds r0, r1 - strh r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s17_u16_gvar_add_const - - thumb_func_start sub_809993C -sub_809993C: @ 809993C - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldrh r1, [r5] - subs r1, r0 - strh r1, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809993C - - thumb_func_start s8F_get_random_val -s8F_get_random_val: @ 809996C - push {r4,r5,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r5, =gScriptResult - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __umodsi3 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s8F_get_random_val - - thumb_func_start sub_80999A0 -sub_80999A0: @ 80999A0 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, =gScriptResult - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80999A0 - - thumb_func_start sub_80999E4 -sub_80999E4: @ 80999E4 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, =gScriptResult - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl RemoveBagItem - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80999E4 - - thumb_func_start sub_8099A28 -sub_8099A28: @ 8099A28 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, =gScriptResult - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CheckBagHasSpace - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099A28 - - thumb_func_start sub_8099A6C -sub_8099A6C: @ 8099A6C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, =gScriptResult - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CheckBagHasItem - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099A6C - - thumb_func_start s48_get_item_type -s48_get_item_type: @ 8099AB0 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gScriptResult - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s48_get_item_type - - thumb_func_start sub_8099ADC -sub_8099ADC: @ 8099ADC - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r5, =gScriptResult - adds r0, r4, 0 - bl sub_80D6D70 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099ADC - - thumb_func_start sub_8099B20 -sub_8099B20: @ 8099B20 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r5, =gScriptResult - adds r0, r4, 0 - bl sub_80D6D1C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099B20 - - thumb_func_start sub_8099B64 -sub_8099B64: @ 8099B64 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r4, =gScriptResult - lsls r0, 24 - lsrs r0, 24 - bl DecorationAdd - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099B64 - - thumb_func_start sub_8099B90 -sub_8099B90: @ 8099B90 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r4, =gScriptResult - lsls r0, 24 - lsrs r0, 24 - bl DecorationRemove - lsls r0, 24 - asrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099B90 - - thumb_func_start sub_8099BBC -sub_8099BBC: @ 8099BBC - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r4, =gScriptResult - lsls r0, 24 - lsrs r0, 24 - bl DecorationCheckSpace - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099BBC - - thumb_func_start sub_8099BE8 -sub_8099BE8: @ 8099BE8 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r4, =gScriptResult - lsls r0, 24 - lsrs r0, 24 - bl sub_8161918 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099BE8 - - thumb_func_start s29_flag_set -@ int s29_flag_set(script_env *env) -s29_flag_set: @ 8099C14 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s29_flag_set - - thumb_func_start s2A_flag_clear -@ int s2A_flag_clear(script_env *env) -s2A_flag_clear: @ 8099C28 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl FlagReset - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s2A_flag_clear - - thumb_func_start s2B_flag_check -@ int s2B_flag_check(script_env *env) -s2B_flag_check: @ 8099C3C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s2B_flag_check - - thumb_func_start sC3_unknown -@ int sC3_unknown(script_env *env) -sC3_unknown: @ 8099C58 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl IncrementGameStat - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sC3_unknown - - thumb_func_start s9A_unknown -@ int s9A_unknown(script_env *env) -s9A_unknown: @ 8099C70 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl sub_80B009C - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end s9A_unknown - - thumb_func_start s99_unknown -@ int s99_unknown(script_env *env) -s99_unknown: @ 8099C8C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl sub_80854EC - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s99_unknown - - thumb_func_start sub_8099CA8 -sub_8099CA8: @ 8099CA8 - push {lr} - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08099CC0 - movs r0, 0 - b _08099CC2 - .pool -_08099CC0: - movs r0, 0x1 -_08099CC2: - pop {r1} - bx r1 - thumb_func_end sub_8099CA8 - - thumb_func_start s97_screen_special_effect -@ int s97_screen_special_effect(script_env *env) -s97_screen_special_effect: @ 8099CC8 - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x8] - ldrb r0, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - movs r1, 0 - bl fade_screen - ldr r1, =sub_8099CA8 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s97_screen_special_effect - - thumb_func_start s98_refade_with_timer -@ int s98_refade_with_timer(script_env *env) -s98_refade_with_timer: @ 8099CF0 - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - lsls r1, 24 - asrs r1, 24 - bl fade_screen - ldr r1, =sub_8099CA8 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s98_refade_with_timer - - thumb_func_start sub_8099D20 -@ int sub_8099D20(script_env *env) -sub_8099D20: @ 8099D20 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - cmp r4, 0x1 - beq _08099D3E - cmp r4, 0x1 - bgt _08099D3A - cmp r4, 0 - beq _08099D60 - b _08099D3E -_08099D3A: - cmp r4, 0x2 - beq _08099D60 -_08099D3E: - ldr r0, =gPlttBufferUnfaded - ldr r1, =gPaletteDecompressionBuffer - ldr r2, =0x04000100 - bl CpuSet - adds r0, r4, 0 - movs r1, 0 - bl fade_screen - b _08099D72 - .pool -_08099D60: - ldr r0, =gPaletteDecompressionBuffer - ldr r1, =gPlttBufferUnfaded - ldr r2, =0x04000100 - bl CpuSet - adds r0, r4, 0 - movs r1, 0 - bl fade_screen -_08099D72: - ldr r1, =sub_8099CA8 - adds r0, r5, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8099D20 - - thumb_func_start s28_pause_asm -s28_pause_asm: @ 8099D94 - push {lr} - ldr r1, =gUnknown_020375C8 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _08099DAC - movs r0, 0 - b _08099DAE - .pool -_08099DAC: - movs r0, 0x1 -_08099DAE: - pop {r1} - bx r1 - thumb_func_end s28_pause_asm - - thumb_func_start s28_pause -@ int s28_pause(script_env *env) -s28_pause: @ 8099DB4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - ldr r1, =gUnknown_020375C8 - strh r0, [r1] - ldr r1, =s28_pause_asm - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s28_pause - - thumb_func_start s2C_unknown -@ int s2C_unknown(script_env *env) -s2C_unknown: @ 8099DD8 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl RtcInitLocalTimeOffset - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s2C_unknown - - thumb_func_start s2D_unknown -@ int s2D_unknown(script_env *env) -s2D_unknown: @ 8099E10 - push {lr} - bl sub_809E7B0 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s2D_unknown - - thumb_func_start s2E_unknown -@ int s2E_unknown(script_env *env) -s2E_unknown: @ 8099E1C - push {lr} - bl RtcCalcLocalTime - ldr r2, =gSpecialVar_0x8000 - ldr r1, =gLocalTime - movs r0, 0x2 - ldrsb r0, [r1, r0] - strh r0, [r2] - ldr r2, =gSpecialVar_0x8001 - movs r0, 0x3 - ldrsb r0, [r1, r0] - strh r0, [r2] - ldr r2, =gSpecialVar_0x8002 - movs r0, 0x4 - ldrsb r0, [r1, r0] - strh r0, [r2] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s2E_unknown - - thumb_func_start sA4_set_weather_data -@ int sA4_set_weather_data(script_env *env) -sA4_set_weather_data: @ 8099E54 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl sub_80AED7C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sA4_set_weather_data - - thumb_func_start sA3_set_standard_weather_data -@ int sA3_set_standard_weather_data(script_env *env) -sA3_set_standard_weather_data: @ 8099E70 - push {lr} - bl sub_80AEDBC - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sA3_set_standard_weather_data - - thumb_func_start sub_8099E7C -@ int sub_8099E7C(script_env *env) -sub_8099E7C: @ 8099E7C - push {lr} - bl sub_80AEE20 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8099E7C - - thumb_func_start sA6_activate_per_step_callback_eg_ash -@ int sA6_activate_per_step_callback_eg_ash(script_env *env) -sA6_activate_per_step_callback_eg_ash: @ 8099E88 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl activate_per_step_callback - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sA6_activate_per_step_callback_eg_ash - - thumb_func_start sA7_set_new_map_footer -@ int sA7_set_new_map_footer(script_env *env) -sA7_set_new_map_footer: @ 8099EA0 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl sub_8085524 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sA7_set_new_map_footer - - thumb_func_start s39_warp_sfx -@ int s39_warp_sfx(script_env *env) -s39_warp_sfx: @ 8099EBC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl sub_80AF734 - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s39_warp_sfx - - thumb_func_start s3A_warp_new_music -@ int s3A_warp_new_music(script_env *env) -s3A_warp_new_music: @ 8099F44 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl sp13E_warp_to_last_warp - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s3A_warp_new_music - - thumb_func_start s3B_warp_keep_music -@ int s3B_warp_keep_music(script_env *env) -s3B_warp_keep_music: @ 8099FCC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl sub_80AF7D0 - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s3B_warp_keep_music - - thumb_func_start sub_809A054 -sub_809A054: @ 809A054 - push {r4-r6,lr} - sub sp, 0x8 - ldr r1, [r0, 0x8] - ldrb r6, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - mov r4, sp - adds r4, 0x6 - add r0, sp, 0x4 - adds r1, r4, 0 - bl PlayerGetDestCoords - cmp r6, 0xFF - bne _0809A092 - cmp r5, 0xFF - bne _0809A092 - add r0, sp, 0x4 - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4] - subs r1, 0x7 - lsls r1, 16 - asrs r1, 16 - bl sub_8084EBC - b _0809A0B6 -_0809A092: - lsls r0, r6, 24 - asrs r0, 24 - lsls r1, r5, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x4 - ldrb r3, [r3] - subs r3, 0x7 - lsls r3, 24 - asrs r3, 24 - ldrb r4, [r4] - subs r4, 0x7 - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - bl warp1_set -_0809A0B6: - bl sp13F_fall_to_last_warp - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809A054 - - thumb_func_start s3D_warp_v4 -s3D_warp_v4: @ 809A0C8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl sub_80AF848 - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s3D_warp_v4 - - thumb_func_start sub_809A150 -sub_809A150: @ 809A150 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl sub_80AF87C - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809A150 - - thumb_func_start s3E_set_new_map -s3E_set_new_map: @ 809A1D8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s3E_set_new_map - - thumb_func_start s3F_set_new_map_DMA -s3F_set_new_map_DMA: @ 809A258 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - lsls r0, 24 - asrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - mov r1, r9 - mov r2, r8 - adds r3, r6, 0 - bl saved_warp2_set_2 - movs r0, 0 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s3F_set_new_map_DMA - - thumb_func_start sub_809A2DC -sub_809A2DC: @ 809A2DC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_8084E2C - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809A2DC - - thumb_func_start sub_809A35C -sub_809A35C: @ 809A35C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_8084E80 - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809A35C - - thumb_func_start sC4_unknown -sC4_unknown: @ 809A3DC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_8084DD4 - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sC4_unknown - - thumb_func_start s42_get_map_camera_pos -@ int s42_get_map_camera_pos(script_env *env) -s42_get_map_camera_pos: @ 809A45C - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldr r2, =gSaveBlock1Ptr - ldr r1, [r2] - ldrh r1, [r1] - strh r1, [r5] - ldr r1, [r2] - ldrh r1, [r1, 0x2] - strh r1, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s42_get_map_camera_pos - - thumb_func_start s43_get_player_party_count -s43_get_player_party_count: @ 809A498 - push {r4,lr} - ldr r4, =gScriptResult - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s43_get_player_party_count - - thumb_func_start s2F_music_play -s2F_music_play: @ 809A4B4 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s2F_music_play - - thumb_func_start s30_music_check_asm -s30_music_check_asm: @ 809A4C8 - push {lr} - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _0809A4D8 - movs r0, 0 - b _0809A4DA -_0809A4D8: - movs r0, 0x1 -_0809A4DA: - pop {r1} - bx r1 - thumb_func_end s30_music_check_asm - - thumb_func_start s30_music_check -s30_music_check: @ 809A4E0 - push {lr} - ldr r1, =s30_music_check_asm - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end s30_music_check - - thumb_func_start s31_PlayFanfare -s31_PlayFanfare: @ 809A4F4 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl PlayFanfare - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s31_PlayFanfare - - thumb_func_start s32_fanfare_wait_asm -s32_fanfare_wait_asm: @ 809A508 - push {lr} - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end s32_fanfare_wait_asm - - thumb_func_start s32_fanfare_wait -s32_fanfare_wait: @ 809A518 - push {lr} - ldr r1, =s32_fanfare_wait_asm - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end s32_fanfare_wait - - thumb_func_start s33_play_music -@ int s33_play_music(script_env *env) -s33_play_music: @ 809A52C - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r2, r0, 16 - adds r5, r2, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0x1 - bne _0809A54C - adds r0, r2, 0 - bl sav1_set_battle_music_maybe -_0809A54C: - adds r0, r5, 0 - bl PlayNewMapMusic - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s33_play_music - - thumb_func_start s34_unknown -s34_unknown: @ 809A55C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl sav1_set_battle_music_maybe - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s34_unknown - - thumb_func_start s35_fade_to_default -s35_fade_to_default: @ 809A570 - push {lr} - bl sub_8085898 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s35_fade_to_default - - thumb_func_start s36_fade_to_music -s36_fade_to_music: @ 809A57C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl sub_80858C4 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s36_fade_to_music - - thumb_func_start s37_fadeout -s37_fadeout: @ 809A590 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - beq _0809A5AA - lsls r0, r1, 26 - lsrs r0, 24 - bl FadeOutBGMTemporarily - b _0809A5B0 -_0809A5AA: - movs r0, 0x4 - bl FadeOutBGMTemporarily -_0809A5B0: - ldr r1, =IsBGMPausedOrStopped - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s37_fadeout - - thumb_func_start s38_fadein -s38_fadein: @ 809A5C4 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - cmp r2, 0 - beq _0809A5DC - lsls r0, r2, 26 - lsrs r0, 24 - bl FadeInBGM - b _0809A5E2 -_0809A5DC: - movs r0, 0x4 - bl FadeInBGM -_0809A5E2: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s38_fadein - - thumb_func_start s4F_execute_movement -s4F_execute_movement: @ 809A5E8 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadWord - adds r3, r0, 0 - lsls r0, r4, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl exec_movement - ldr r0, =gUnknown_020375CA - strh r4, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s4F_execute_movement - - thumb_func_start s50_execute_movement_remote -s50_execute_movement_remote: @ 809A62C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadWord - adds r3, r0, 0 - ldr r0, [r5, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - lsls r0, r4, 24 - lsrs r0, 24 - bl exec_movement - ldr r0, =gUnknown_020375CA - strh r4, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s50_execute_movement_remote - - thumb_func_start s51a_0806B288 -s51a_0806B288: @ 809A670 - push {lr} - ldr r0, =gUnknown_020375CA - ldrb r0, [r0] - ldr r1, =gUnknown_020375CE - ldrb r1, [r1] - ldr r2, =gUnknown_020375CC - ldrb r2, [r2] - bl sub_80D3340 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .pool - thumb_func_end s51a_0806B288 - - thumb_func_start s51_waitmove -s51_waitmove: @ 809A698 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0809A6B4 - ldr r0, =gUnknown_020375CA - strh r1, [r0] -_0809A6B4: - ldr r1, =gUnknown_020375CC - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - movs r0, 0x4 - ldrsb r0, [r2, r0] - strh r0, [r1] - ldr r1, =gUnknown_020375CE - movs r0, 0x5 - ldrsb r0, [r2, r0] - strh r0, [r1] - ldr r1, =s51a_0806B288 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s51_waitmove - - thumb_func_start s52_waitmove_remote -s52_waitmove_remote: @ 809A6EC - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0809A708 - ldr r0, =gUnknown_020375CA - strh r1, [r0] -_0809A708: - ldr r0, [r4, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - ldr r0, =gUnknown_020375CC - strh r2, [r0] - ldr r0, =gUnknown_020375CE - strh r1, [r0] - ldr r1, =s51a_0806B288 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s52_waitmove_remote - - thumb_func_start s53_hide_sprite -s53_hide_sprite: @ 809A740 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl RemoveFieldObjectByLocalIdAndMap - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s53_hide_sprite - - thumb_func_start s54_hide_sprite_set_coords -s54_hide_sprite_set_coords: @ 809A768 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl RemoveFieldObjectByLocalIdAndMap - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s54_hide_sprite_set_coords - - thumb_func_start s55_show_sprite -s55_show_sprite: @ 809A798 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl show_sprite - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s55_show_sprite - - thumb_func_start s56_show_sprite_set_coords -s56_show_sprite_set_coords: @ 809A7C0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl show_sprite - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s56_show_sprite_set_coords - - thumb_func_start s57_move_sprites -s57_move_sprites: @ 809A7F0 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r5, 24 - lsrs r5, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - lsls r4, 16 - asrs r4, 16 - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - adds r0, r5, 0 - adds r3, r4, 0 - bl sub_808EBA8 - movs r0, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end s57_move_sprites - - thumb_func_start s63_new_sprite_location_permanent -s63_new_sprite_location_permanent: @ 809A858 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r2, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 16 - asrs r4, 16 - lsls r2, 16 - asrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl update_saveblock1_field_object_coords - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end s63_new_sprite_location_permanent - - thumb_func_start s64_set_sprite_top_left_corner -s64_set_sprite_top_left_corner: @ 809A8B0 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl sub_808F254 - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s64_set_sprite_top_left_corner - - thumb_func_start s58_npc_f1_clear_x20 -s58_npc_f1_clear_x20: @ 809A8D8 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - bl npc_by_local_id_and_map_set_field_1_bit_x20 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s58_npc_f1_clear_x20 - - thumb_func_start s59_npc_f1_set_x20 -s59_npc_f1_set_x20: @ 809A908 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1 - bl npc_by_local_id_and_map_set_field_1_bit_x20 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s59_npc_f1_set_x20 - - thumb_func_start sA8_unknown -sA8_unknown: @ 809A938 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r5, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r5, 0x8] - ldrb r1, [r3] - adds r4, r3, 0x1 - str r4, [r5, 0x8] - ldrb r3, [r3, 0x1] - adds r4, 0x1 - str r4, [r5, 0x8] - lsls r0, 24 - lsrs r0, 24 - adds r3, 0x53 - lsls r3, 24 - lsrs r3, 24 - bl sub_808E78C - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sA8_unknown - - thumb_func_start sA9_unknown -sA9_unknown: @ 809A974 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl sub_808E7E4 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sA9_unknown - - thumb_func_start s5A_face_player -s5A_face_player: @ 809A9A4 - push {r4,lr} - ldr r2, =gMapObjects - ldr r0, =gSelectedMapObject - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - ldrb r0, [r4] - lsls r0, 31 - cmp r0, 0 - beq _0809A9CC - bl player_get_direction_lower_nybble - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectFaceOppositeDirection -_0809A9CC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s5A_face_player - - thumb_func_start s5B_npc_set_direction -s5B_npc_set_direction: @ 809A9DC - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, [r4, 0x8] - ldrb r3, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl FieldObjectTurnByLocalIdAndMap - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s5B_npc_set_direction - - thumb_func_start s65_set_sprite_behaviour -s65_set_sprite_behaviour: @ 809AA10 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl update_saveblock1_field_object_movement_behavior - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s65_set_sprite_behaviour - - thumb_func_start sAA_create_new_sprite -sAA_create_new_sprite: @ 809AA38 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r6, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r3, r0, 0 - ldr r0, [r5, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - lsls r4, 16 - asrs r4, 16 - lsls r3, 16 - asrs r3, 16 - str r2, [sp] - str r1, [sp, 0x4] - mov r0, r8 - adds r1, r6, 0 - adds r2, r4, 0 - bl sprite_new - movs r0, 0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sAA_create_new_sprite - - thumb_func_start sAB_unknown -sAB_unknown: @ 809AAA8 - push {lr} - ldr r2, [r0, 0x8] - ldrb r3, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - adds r0, r3, 0 - bl sub_8097B78 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sAB_unknown - - thumb_func_start sub_809AAC4 -sub_809AAC4: @ 809AAC4 - push {r4,lr} - adds r4, r0, 0 - bl is_c1_link_related_active - cmp r0, 0 - bne _0809AAE4 - bl sub_80983E8 - ldr r1, =sub_80983C4 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - b _0809AAE6 - .pool -_0809AAE4: - movs r0, 0 -_0809AAE6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809AAC4 - - thumb_func_start sub_809AAEC -sub_809AAEC: @ 809AAEC - push {r4,lr} - adds r4, r0, 0 - bl is_c1_link_related_active - cmp r0, 0 - beq _0809AAFC - movs r0, 0 - b _0809AB3A -_0809AAFC: - ldr r2, =gMapObjects - ldr r0, =gSelectedMapObject - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0809AB2C - bl sub_80984A0 - ldr r1, =sub_809847C - adds r0, r4, 0 - bl SetupNativeScript - b _0809AB38 - .pool -_0809AB2C: - bl sub_80983E8 - ldr r1, =sub_80983C4 - adds r0, r4, 0 - bl SetupNativeScript -_0809AB38: - movs r0, 0x1 -_0809AB3A: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809AAEC - - thumb_func_start s6B_release -s6B_release: @ 809AB44 - push {lr} - bl textbox_close - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - bl FieldObjectClearAnimIfSpecialAnimFinished - bl sub_80D338C - bl sub_809757C - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s6B_release - - thumb_func_start s6C_release_2 -s6C_release_2: @ 809AB7C - push {r4,lr} - bl textbox_close - ldr r4, =gMapObjects - ldr r0, =gSelectedMapObject - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _0809AB9E - adds r0, r1, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished -_0809AB9E: - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FieldObjectClearAnimIfSpecialAnimFinished - bl sub_80D338C - bl sub_809757C - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s6C_release_2 - - thumb_func_start s67_execute_box -s67_execute_box: @ 809ABD4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - cmp r0, 0 - bne _0809ABE2 - ldr r0, [r4, 0x64] -_0809ABE2: - bl box_related_two__2 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s67_execute_box - - thumb_func_start sub_809ABF0 -sub_809ABF0: @ 809ABF0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - cmp r0, 0 - bne _0809ABFE - ldr r0, [r4, 0x64] -_0809ABFE: - bl sub_8098238 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809ABF0 - - thumb_func_start s9B_unknown -s9B_unknown: @ 809AC0C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r3, r0, 0 - cmp r3, 0 - bne _0809AC1C - ldr r3, [r4, 0x64] -_0809AC1C: - ldr r2, =gTextFlags - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - adds r0, r3, 0 - bl box_related_two__3 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s9B_unknown - - thumb_func_start sub_809AC3C -sub_809AC3C: @ 809AC3C - push {r4,r5,lr} - sub sp, 0xC - adds r5, r0, 0 - bl ScriptReadWord - adds r4, r0, 0 - cmp r4, 0 - bne _0809AC4E - ldr r4, [r5, 0x64] -_0809AC4E: - bl sub_81973A4 - movs r0, 0 - movs r1, 0x1 - bl sub_81973C4 - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - movs r3, 0 - bl PrintTextOnWindow - movs r0, 0 - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809AC3C - - thumb_func_start sub_809AC78 -sub_809AC78: @ 809AC78 - push {lr} - ldr r1, =sub_809833C - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809AC78 - - thumb_func_start s68_close_box -s68_close_box: @ 809AC8C - push {lr} - bl textbox_close - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s68_close_box - - thumb_func_start sub_809AC98 -sub_809AC98: @ 809AC98 - push {lr} - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0809ACB8 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0809ACB8 - movs r0, 0 - b _0809ACBA - .pool -_0809ACB8: - movs r0, 0x1 -_0809ACBA: - pop {r1} - bx r1 - thumb_func_end sub_809AC98 - - thumb_func_start sub_809ACC0 -sub_809ACC0: @ 809ACC0 - push {lr} - ldr r1, =sub_809AC98 - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809ACC0 - - thumb_func_start s6E_yes_no -s6E_yes_no: @ 809ACD4 - push {lr} - ldr r2, [r0, 0x8] - ldrb r3, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - adds r0, r3, 0 - bl yes_no_box - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809ACF6 - movs r0, 0 - b _0809ACFC -_0809ACF6: - bl ScriptContext1_Stop - movs r0, 0x1 -_0809ACFC: - pop {r1} - bx r1 - thumb_func_end s6E_yes_no - - thumb_func_start s6F_multichoice -s6F_multichoice: @ 809AD00 - push {r4,r5,lr} - ldr r2, [r0, 0x8] - ldrb r5, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r3, r2, 0x1 - str r3, [r0, 0x8] - ldrb r2, [r2, 0x1] - adds r4, r3, 0x1 - str r4, [r0, 0x8] - ldrb r3, [r3, 0x1] - adds r4, 0x1 - str r4, [r0, 0x8] - adds r0, r5, 0 - bl Multichoice - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809AD2E - movs r0, 0 - b _0809AD34 -_0809AD2E: - bl ScriptContext1_Stop - movs r0, 0x1 -_0809AD34: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s6F_multichoice - - thumb_func_start sub_809AD3C -sub_809AD3C: @ 809AD3C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r2, [r0, 0x8] - ldrb r1, [r2] - mov r8, r1 - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r3, r2, 0x1 - str r3, [r0, 0x8] - ldrb r2, [r2, 0x1] - adds r5, r3, 0x1 - str r5, [r0, 0x8] - ldrb r6, [r3, 0x1] - adds r4, r5, 0x1 - str r4, [r0, 0x8] - ldrb r3, [r5, 0x1] - adds r4, 0x1 - str r4, [r0, 0x8] - str r6, [sp] - mov r0, r8 - bl sub_80E1E58 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809AD7A - movs r0, 0 - b _0809AD80 -_0809AD7A: - bl ScriptContext1_Stop - movs r0, 0x1 -_0809AD80: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809AD3C - - thumb_func_start sub_809AD8C -sub_809AD8C: @ 809AD8C - movs r0, 0 - bx lr - thumb_func_end sub_809AD8C - - thumb_func_start sub_809AD90 -sub_809AD90: @ 809AD90 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r2, [r0, 0x8] - ldrb r1, [r2] - mov r8, r1 - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r3, r2, 0x1 - str r3, [r0, 0x8] - ldrb r2, [r2, 0x1] - adds r5, r3, 0x1 - str r5, [r0, 0x8] - ldrb r6, [r3, 0x1] - adds r4, r5, 0x1 - str r4, [r0, 0x8] - ldrb r3, [r5, 0x1] - adds r4, 0x1 - str r4, [r0, 0x8] - str r6, [sp] - mov r0, r8 - bl sub_80E21D0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809ADCE - movs r0, 0 - b _0809ADD4 -_0809ADCE: - bl ScriptContext1_Stop - movs r0, 0x1 -_0809ADD4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809AD90 - - thumb_func_start s73_nop_skip_word -s73_nop_skip_word: @ 809ADE0 - ldr r1, [r0, 0x8] - adds r1, 0x4 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end s73_nop_skip_word - - thumb_func_start sub_809ADEC -sub_809ADEC: @ 809ADEC - ldr r1, [r0, 0x8] - adds r1, 0x4 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end sub_809ADEC - - thumb_func_start sub_809ADF8 -sub_809ADF8: @ 809ADF8 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - bl sub_80E2900 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809ADF8 - - thumb_func_start s76_close_picture_box -s76_close_picture_box: @ 809AE28 - push {r4,lr} - adds r4, r0, 0 - bl picbox_close - adds r1, r0, 0 - cmp r1, 0 - beq _0809AE40 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - b _0809AE42 -_0809AE40: - movs r0, 0 -_0809AE42: - pop {r4} - pop {r1} - bx r1 - thumb_func_end s76_close_picture_box - - thumb_func_start sub_809AE48 -sub_809AE48: @ 809AE48 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - cmp r2, 0 - beq _0809AE5C - adds r0, r2, 0 - bl sub_812FDA8 -_0809AE5C: - bl sub_80F8ADC - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_809AE48 - - thumb_func_start sub_809AE6C -sub_809AE6C: @ 809AE6C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - bl ScriptReadWord - adds r1, r0, 0 - ldr r4, =gStringVar4 - adds r1, 0x6 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r2, 0x1 - negs r2, r2 - movs r0, 0x6 - adds r1, r4, 0 - bl GetStringWidth - lsrs r0, 3 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x1C - bls _0809AE9C - movs r7, 0x1C -_0809AE9C: - movs r5, 0x4 - ldrb r0, [r4] - adds r2, r7, 0x2 - add r1, sp, 0x18 - mov r8, r1 - cmp r0, 0xFF - beq _0809AEC0 - adds r1, r4, 0 -_0809AEAC: - ldrb r0, [r1] - adds r1, 0x1 - cmp r0, 0xFE - bne _0809AEBA - adds r0, r5, 0x3 - lsls r0, 24 - lsrs r5, r0, 24 -_0809AEBA: - ldrb r0, [r1] - cmp r0, 0xFF - bne _0809AEAC -_0809AEC0: - cmp r5, 0x12 - bls _0809AEC6 - movs r5, 0x12 -_0809AEC6: - lsls r0, r2, 24 - lsrs r0, 24 - movs r2, 0x1E - subs r2, r0 - lsrs r0, r2, 31 - adds r2, r0 - asrs r2, 1 - lsls r2, 24 - adds r0, r5, 0x2 - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x14 - subs r4, r0 - lsrs r0, r4, 31 - adds r4, r0 - asrs r4, 1 - lsls r4, 24 - lsrs r6, r2, 24 - movs r0, 0x80 - lsls r0, 17 - adds r2, r0 - lsrs r2, 24 - lsrs r3, r4, 24 - movs r1, 0x80 - lsls r1, 18 - adds r4, r1 - lsrs r4, 24 - subs r6, r2, r6 - subs r6, 0x1 - lsls r6, 3 - adds r6, 0x3 - lsls r6, 24 - lsrs r6, 24 - subs r4, r3 - subs r4, 0x1 - lsls r4, 27 - lsrs r4, 24 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r7, [sp] - str r5, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0x1 - str r0, [sp, 0xC] - add r0, sp, 0x10 - movs r1, 0 - bl sub_8198A50 - ldr r0, [sp, 0x10] - ldr r1, [sp, 0x14] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - ldr r5, =gUnknown_03000F30 - mov r0, r8 - bl AddWindow - strb r0, [r5] - ldrb r0, [r5] - movs r1, 0x85 - lsls r1, 2 - movs r2, 0xE0 - bl sub_809882C - ldrb r0, [r5] - movs r1, 0 - bl sub_81973FC - ldrb r0, [r5] - bl PutWindowTilemap - ldrb r0, [r5] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r5] - ldr r2, =gStringVar4 - str r4, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x6 - adds r3, r6, 0 - bl PrintTextOnWindow - ldrb r0, [r5] - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0 - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809AE6C - - thumb_func_start sub_809AF94 -sub_809AF94: @ 809AF94 - push {lr} - bl sub_809BDB4 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_809AF94 - - thumb_func_start sBD_virtual_message -sBD_virtual_message: @ 809AFA0 - push {lr} - bl ScriptReadWord - ldr r1, =gUnknown_020375C4 - ldr r1, [r1] - subs r0, r1 - bl box_related_two__2 - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sBD_virtual_message - - thumb_func_start s7D_load_pokename -s7D_load_pokename: @ 809AFBC - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r2, [r4] - movs r1, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s7D_load_pokename - - thumb_func_start s7E_load_first_pokenames -s7E_load_first_pokenames: @ 809AFFC - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldr r0, =gUnknown_085102D4 - lsls r2, 2 - adds r2, r0 - ldr r4, [r2] - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s7E_load_first_pokenames - - thumb_func_start s7F_load_pokename_team -s7F_load_pokename_team: @ 809B048 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s7F_load_pokename_team - - thumb_func_start s80_load_item_name -s80_load_item_name: @ 809B090 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r1, [r4] - bl CopyItemName - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s80_load_item_name - - thumb_func_start sub_809B0C4 -sub_809B0C4: @ 809B0C4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r6, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r0, =gUnknown_085102D4 - lsls r6, 2 - adds r6, r0 - ldr r1, [r6] - adds r0, r4, 0 - bl CopyItemNameHandlePlural - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B0C4 - - thumb_func_start sub_809B114 -sub_809B114: @ 809B114 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - ldr r0, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - lsrs r1, 11 - ldr r2, =gDecorations + 1 - adds r1, r2 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B114 - - thumb_func_start s82_load_item_name -s82_load_item_name: @ 809B150 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r2, [r4] - movs r1, 0xD - muls r1, r0 - ldr r0, =gMoveNames - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s82_load_item_name - - thumb_func_start s83_load_textvar_var -s83_load_textvar_var: @ 809B190 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_80EF370 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - ldr r0, =gUnknown_085102D4 - lsls r5, 2 - adds r5, r0 - ldr r0, [r5] - adds r1, r4, 0 - movs r2, 0 - bl ConvertIntToDecimalStringN - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s83_load_textvar_var - - thumb_func_start s84_load_textvar_std_expression -s84_load_textvar_std_expression: @ 809B1D4 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r2, [r4] - ldr r1, =gUnknown_0858BAF0 - lsrs r0, 14 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s84_load_textvar_std_expression - - thumb_func_start sub_809B214 -sub_809B214: @ 809B214 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r0, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - lsls r1, 24 - lsrs r1, 24 - bl sub_818E868 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B214 - - thumb_func_start s85_load_textvar_pointer -s85_load_textvar_pointer: @ 809B248 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s85_load_textvar_pointer - - thumb_func_start sBE_virtual_load_text -sBE_virtual_load_text: @ 809B270 - push {lr} - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, =gUnknown_020375C4 - ldr r0, [r0] - subs r1, r0 - ldr r0, =gStringVar4 - bl StringExpandPlaceholders - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sBE_virtual_load_text - - thumb_func_start sBF_virtual_load_textbuffer -sBF_virtual_load_textbuffer: @ 809B294 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, =gUnknown_020375C4 - ldr r0, [r0] - subs r1, r0 - ldr r0, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sBF_virtual_load_textbuffer - - thumb_func_start sC6_load_textvar_box_label -sC6_load_textvar_box_label: @ 809B2C8 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sC6_load_textvar_box_label - - thumb_func_start s79_give_pokemon -s79_give_pokemon: @ 809B304 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl ScriptReadWord - mov r8, r0 - adds r0, r4, 0 - bl ScriptReadWord - ldr r1, [r4, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - ldr r4, =gScriptResult - str r0, [sp] - str r2, [sp, 0x4] - adds r0, r6, 0 - mov r1, r9 - adds r2, r5, 0 - mov r3, r8 - bl sub_80F9244 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end s79_give_pokemon - - thumb_func_start s7A_create_egg -s7A_create_egg: @ 809B384 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gScriptResult - bl sub_80F92C8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s7A_create_egg - - thumb_func_start s7B_change_pokedata_AP -s7B_change_pokedata_AP: @ 809B3B0 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_80F9400 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end s7B_change_pokedata_AP - - thumb_func_start sub_809B3DC -sub_809B3DC: @ 809B3DC - push {r4-r7,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r7, r0, 16 - ldr r1, =gScriptResult - movs r0, 0x6 - strh r0, [r1] - movs r6, 0 - b _0809B42A - .pool -_0809B3F4: - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0809B424 - adds r0, r4, 0 - adds r1, r7, 0 - bl pokemon_has_move - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809B424 - ldr r0, =gScriptResult - strh r6, [r0] - ldr r0, =gSpecialVar_0x8004 - strh r5, [r0] - b _0809B44A - .pool -_0809B424: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0809B42A: - cmp r6, 0x5 - bhi _0809B44A - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0809B3F4 -_0809B44A: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B3DC - - thumb_func_start s90_AddMoney -@ int s90_AddMoney(script_env *env) -s90_AddMoney: @ 809B458 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0809B47E - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - adds r1, r2, 0 - bl AddMoney -_0809B47E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s90_AddMoney - - thumb_func_start s91_SubtractMoney -@ int s91_SubtractMoney(script_env *env) -s91_SubtractMoney: @ 809B48C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0809B4B2 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - adds r1, r2, 0 - bl SubtractMoney -_0809B4B2: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s91_SubtractMoney - - thumb_func_start s92_check_money -@ int s92_check_money(script_env *env) -s92_check_money: @ 809B4C0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0809B4EE - ldr r4, =gScriptResult - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - adds r1, r2, 0 - bl IsEnoughMoney - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] -_0809B4EE: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s92_check_money - - thumb_func_start s93_display_money -@ int s93_display_money(script_env *env) -s93_display_money: @ 809B500 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r1, 0 - bne _0809B530 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - bl GetMoney - adds r1, r5, 0 - adds r2, r4, 0 - bl DrawMoneyBox -_0809B530: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end s93_display_money - - thumb_func_start s94_hide_money -s94_hide_money: @ 809B53C - push {lr} - bl HideMoneyBox - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s94_hide_money - - thumb_func_start s95_update_money -@ int s95_update_money(script_env *env) -s95_update_money: @ 809B548 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x1 - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r1, 0 - bne _0809B56E - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - bl GetMoney - bl ChangeAmountInMoneyBox -_0809B56E: - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s95_update_money - - thumb_func_start sub_809B578 -sub_809B578: @ 809B578 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - adds r2, r4, 0 - bl ShowCoinsWindow - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809B578 - - thumb_func_start sC1_hide_coins -sC1_hide_coins: @ 809B5A0 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x2 - str r1, [r0, 0x8] - bl HideCoinsWindow - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sC1_hide_coins - - thumb_func_start sC2_update_coins -sC2_update_coins: @ 809B5B4 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x2 - str r1, [r0, 0x8] - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - bl PrintCoinsString - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sC2_update_coins - - thumb_func_start s5C_trainer_battle_configure_and_start -s5C_trainer_battle_configure_and_start: @ 809B5D0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - bl TrainerBattleConfigure - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s5C_trainer_battle_configure_and_start - - thumb_func_start sub_809B5E4 -sub_809B5E4: @ 809B5E4 - push {lr} - bl sub_80B17E0 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_809B5E4 - - thumb_func_start sub_809B5F0 -sub_809B5F0: @ 809B5F0 - push {r4,lr} - adds r4, r0, 0 - bl sub_80B1AF8 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809B5F0 - - thumb_func_start sub_809B604 -@ bool8 sub_809B604(struct script_env *env) -sub_809B604: @ 809B604 - push {r4,lr} - adds r4, r0, 0 - bl sub_80B1B10 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809B604 - - thumb_func_start s60_check_trainer_flag -s60_check_trainer_flag: @ 809B618 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_check - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end s60_check_trainer_flag - - thumb_func_start s61_set_trainer_flag -s61_set_trainer_flag: @ 809B63C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_set - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s61_set_trainer_flag - - thumb_func_start s62_unset_trainer_flag -s62_unset_trainer_flag: @ 809B658 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_clear - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s62_unset_trainer_flag - - thumb_func_start sB6_load_battle -sB6_load_battle: @ 809B674 - push {r4-r6,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r0, [r4, 0x8] - ldrb r6, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80F93A0 - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sB6_load_battle - - thumb_func_start sub_809B6A8 -sub_809B6A8: @ 809B6A8 - push {lr} - bl sub_80B08A8 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_809B6A8 - - thumb_func_start s86_pokemart -s86_pokemart: @ 809B6B8 - push {lr} - bl ScriptReadWord - bl CreatePokemartMenu - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end s86_pokemart - - thumb_func_start s87_pokemartdecor -s87_pokemartdecor: @ 809B6CC - push {lr} - bl ScriptReadWord - bl CreateDecorationShop1Menu - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end s87_pokemartdecor - - thumb_func_start s88_pokemartbp -s88_pokemartbp: @ 809B6E0 - push {lr} - bl ScriptReadWord - bl CreateDecorationShop2Menu - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end s88_pokemartbp - - thumb_func_start s89_open_casino_game1 -s89_open_casino_game1: @ 809B6F4 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl sub_812A540 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end s89_open_casino_game1 - - thumb_func_start berry_script_cmd -@ bool8 berry_script_cmd(struct script_env *env) -berry_script_cmd: @ 809B71C - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r3, [r1] - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r4, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r3, 0 - bne _0809B744 - adds r0, r5, 0 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0 - bl PlantBerryTree - b _0809B750 -_0809B744: - adds r0, r5, 0 - adds r1, r3, 0 - adds r2, r4, 0 - movs r3, 0 - bl PlantBerryTree -_0809B750: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end berry_script_cmd - - thumb_func_start sub_809B758 -sub_809B758: @ 809B758 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r4, =gScriptResult - lsls r0, 24 - lsrs r0, 24 - bl GetPriceReduction - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B758 - - thumb_func_start sub_809B784 -sub_809B784: @ 809B784 - push {lr} - bl sub_81B9404 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_809B784 - - thumb_func_start sub_809B794 -sub_809B794: @ 809B794 - push {lr} - bl sub_80F840C - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_809B794 - - thumb_func_start sub_809B7A4 -sub_809B7A4: @ 809B7A4 - push {lr} - bl sub_80F8484 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_809B7A4 - - thumb_func_start sub_809B7B4 -sub_809B7B4: @ 809B7B4 - push {lr} - ldr r0, =gUnknown_02039F2C - ldrb r0, [r0] - bl sub_80F84C4 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B7B4 - - thumb_func_start s9C_execute_HM -s9C_execute_HM: @ 809B7CC - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_020375D0 - strh r0, [r1] - lsls r0, 24 - lsrs r0, 24 - bl FieldEffectStart - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end s9C_execute_HM - - thumb_func_start s9D_set_HM_animation_data -s9D_set_HM_animation_data: @ 809B7F4 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, =gFieldEffectSpawnParams - lsls r4, 2 - adds r4, r1 - lsls r0, 16 - asrs r0, 16 - str r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s9D_set_HM_animation_data - - thumb_func_start sub_809B824 -sub_809B824: @ 809B824 - push {lr} - ldr r0, =gUnknown_020375D0 - ldrb r0, [r0] - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - beq _0809B83C - movs r0, 0 - b _0809B83E - .pool -_0809B83C: - movs r0, 0x1 -_0809B83E: - pop {r1} - bx r1 - thumb_func_end sub_809B824 - - thumb_func_start s9E_checkarray_HM_animation -s9E_checkarray_HM_animation: @ 809B844 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, =gUnknown_020375D0 - strh r0, [r1] - ldr r1, =sub_809B824 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end s9E_checkarray_HM_animation - - thumb_func_start s9F_changeposition_fly -s9F_changeposition_fly: @ 809B870 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sub_8084D1C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end s9F_changeposition_fly - - thumb_func_start sA0_check_gender -sA0_check_gender: @ 809B88C - ldr r1, =gScriptResult - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - strh r0, [r1] - movs r0, 0 - bx lr - .pool - thumb_func_end sA0_check_gender - - thumb_func_start sA1_play_cry -sA1_play_cry: @ 809B8A4 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl PlayCry5 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sA1_play_cry - - thumb_func_start sub_809B8DC -sub_809B8DC: @ 809B8DC - push {lr} - ldr r1, =IsCryFinished - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809B8DC - - thumb_func_start sA2_setmaptile -sA2_setmaptile: @ 809B8F0 - push {r4-r7,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - adds r1, r6, 0x7 - lsls r1, 16 - lsrs r6, r1, 16 - adds r1, r5, 0x7 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r0, 0 - bne _0809B954 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r7, 0 - bl MapGridSetMetatileIdAt - b _0809B966 -_0809B954: - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1, 0 - adds r2, r7, 0 - orrs r2, r0 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt -_0809B966: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sA2_setmaptile - - thumb_func_start sAC_open_door -sAC_open_door: @ 809B970 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - adds r5, 0x7 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r4, r0 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl cur_mapdata_get_door_sound_at - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - adds r0, r5, 0 - adds r1, r4, 0 - bl task_overworld_door_add_if_role_69_for_opening_door_at - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sAC_open_door - - thumb_func_start sub_809B9C8 -sub_809B9C8: @ 809B9C8 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - adds r4, 0x7 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_808A8AC - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809B9C8 - - thumb_func_start sub_809BA0C -sub_809BA0C: @ 809BA0C - push {lr} - bl sub_808A91C - lsls r0, 24 - cmp r0, 0 - beq _0809BA1C - movs r0, 0 - b _0809BA1E -_0809BA1C: - movs r0, 0x1 -_0809BA1E: - pop {r1} - bx r1 - thumb_func_end sub_809BA0C - - thumb_func_start sub_809BA24 -sub_809BA24: @ 809BA24 - push {lr} - ldr r1, =sub_809BA0C - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BA24 - - thumb_func_start sub_809BA38 -sub_809BA38: @ 809BA38 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - adds r4, 0x7 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_808A854 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809BA38 - - thumb_func_start sub_809BA7C -sub_809BA7C: @ 809BA7C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - adds r4, 0x7 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_808A880 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809BA7C - - thumb_func_start sub_809BAC0 -sub_809BAC0: @ 809BAC0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809BAC0 - - thumb_func_start sub_809BAFC -sub_809BAFC: @ 809BAFC - movs r0, 0 - bx lr - thumb_func_end sub_809BAFC - - thumb_func_start sB3_get_coin_amount -sB3_get_coin_amount: @ 809BB00 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r4, r0, 0 - bl GetCoins - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sB3_get_coin_amount - - thumb_func_start sub_809BB20 -sub_809BB20: @ 809BB20 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl AddCoins - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809BB48 - ldr r1, =gScriptResult - movs r0, 0 - b _0809BB4C - .pool -_0809BB48: - ldr r1, =gScriptResult - movs r0, 0x1 -_0809BB4C: - strh r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BB20 - - thumb_func_start sub_809BB58 -sub_809BB58: @ 809BB58 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl SubtractCoins - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809BB80 - ldr r1, =gScriptResult - movs r0, 0 - b _0809BB84 - .pool -_0809BB80: - ldr r1, =gScriptResult - movs r0, 0x1 -_0809BB84: - strh r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BB58 - - thumb_func_start sub_809BB90 -sub_809BB90: @ 809BB90 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sub_81A89A0 - ldr r1, =gUnknown_020375CA - strh r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BB90 - - thumb_func_start sub_809BBB4 -sub_809BBB4: @ 809BBB4 - push {lr} - bl sub_81A8AF8 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_809BBB4 - - thumb_func_start ScrCmd_MossdeepGymSwitch -ScrCmd_MossdeepGymSwitch: @ 809BBC0 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sub_81A8934 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_MossdeepGymSwitch - - thumb_func_start sub_809BBDC -sub_809BBDC: @ 809BBDC - push {lr} - bl sub_81A895C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_809BBDC - - thumb_func_start sub_809BBE8 -sub_809BBE8: @ 809BBE8 - push {lr} - bl sub_80B47BC - ldr r1, =gSelectedMapObject - strb r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BBE8 - - thumb_func_start sub_809BBFC -sub_809BBFC: @ 809BBFC - push {r4,lr} - adds r4, r0, 0 - bl is_c1_link_related_active - cmp r0, 0 - beq _0809BC0C - movs r0, 0 - b _0809BC30 -_0809BC0C: - ldr r2, =gMapObjects - ldr r0, =gSelectedMapObject - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0809BC2E - bl sub_8098630 - ldr r1, =sub_8098734 - adds r0, r4, 0 - bl SetupNativeScript -_0809BC2E: - movs r0, 0x1 -_0809BC30: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BBFC - - thumb_func_start sCD_set_obedient_bit -sCD_set_obedient_bit: @ 809BC44 - push {lr} - sub sp, 0x4 - movs r2, 0x1 - mov r1, sp - strb r2, [r1] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x50 - mov r2, sp - bl SetMonData - movs r0, 0 - add sp, 0x4 - pop {r1} - bx r1 - .pool - thumb_func_end sCD_set_obedient_bit - - thumb_func_start sCE_check_obedient_bit -sCE_check_obedient_bit: @ 809BC7C - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gScriptResult - movs r1, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x50 - movs r2, 0 - bl GetMonData - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sCE_check_obedient_bit - - thumb_func_start sCF_execute_RAM_script_DMA -sCF_execute_RAM_script_DMA: @ 809BCB4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8099244 - adds r2, r0, 0 - cmp r2, 0 - beq _0809BCD0 - ldr r1, =gUnknown_020375C0 - ldr r0, [r4, 0x8] - str r0, [r1] - adds r0, r4, 0 - adds r1, r2, 0 - bl ScriptJump -_0809BCD0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sCF_execute_RAM_script_DMA - - thumb_func_start sD1_warp_v5 -sD1_warp_v5: @ 809BCDC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl sub_808D074 - bl sub_80B0244 - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sD1_warp_v5 - - thumb_func_start sub_809BD70 -sub_809BD70: @ 809BD70 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, [r4, 0x8] - ldrb r2, [r0] - mov r1, sp - strb r2, [r1] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r3, 0x5 - bhi _0809BDA6 - movs r0, 0x64 - muls r0, r3 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x23 - mov r2, sp - bl SetMonData -_0809BDA6: - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BD70 - - thumb_func_start sub_809BDB4 -sub_809BDB4: @ 809BDB4 - push {r4,lr} - ldr r4, =gUnknown_03000F30 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_819746C - ldrb r0, [r4] - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_809BDB4 - - thumb_func_start sub_809BDD0 -sub_809BDD0: @ 809BDD0 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - bl GetTrainerClassNameFromId - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BDD0 - - thumb_func_start sub_809BE0C -sub_809BE0C: @ 809BE0C - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_085102D4 - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - bl GetTrainerNameFromId - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_809BE0C - - thumb_func_start sub_809BE48 -sub_809BE48: @ 809BE48 - ldr r1, =gUnknown_020375CA - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_809BE48 - - thumb_func_start sub_809BE54 -sub_809BE54: @ 809BE54 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl warp1_set - bl sub_80AF79C - bl player_avatar_init_params_reset - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809BE54 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_menu.s b/asm/script_menu.s index 8aecbf6964..55ce5736a4 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -5,9 +5,9 @@ .text - thumb_func_start Multichoice -@ bool8 Multichoice(u8 x, u8 y, u8 menuId, bool8 noCancelling) -Multichoice: @ 80E1E08 + thumb_func_start ScriptMenu_Multichoice +@ bool8 ScriptMenu_Multichoice(u8 x, u8 y, u8 menuId, bool8 noCancelling) +ScriptMenu_Multichoice: @ 80E1E08 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 @@ -44,10 +44,10 @@ _080E1E4E: pop {r4-r7} pop {r1} bx r1 - thumb_func_end Multichoice + thumb_func_end ScriptMenu_Multichoice - thumb_func_start sub_80E1E58 -sub_80E1E58: @ 80E1E58 + thumb_func_start ScriptMenu_MultichoiceWithDefault +ScriptMenu_MultichoiceWithDefault: @ 80E1E58 push {r4-r7,lr} mov r7, r8 push {r7} @@ -91,7 +91,7 @@ _080E1EAA: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_80E1E58 + thumb_func_end ScriptMenu_MultichoiceWithDefault thumb_func_start sub_80E1EB8 sub_80E1EB8: @ 80E1EB8 @@ -379,8 +379,8 @@ _080E20FC: .pool thumb_func_end sub_80E2058 - thumb_func_start yes_no_box -yes_no_box: @ 80E2108 + thumb_func_start ScriptMenu_YesNo +ScriptMenu_YesNo: @ 80E2108 push {r4,lr} ldr r4, =task_yes_no_maybe adds r0, r4, 0 @@ -405,7 +405,7 @@ _080E213A: pop {r4} pop {r1} bx r1 - thumb_func_end yes_no_box + thumb_func_end ScriptMenu_YesNo thumb_func_start sub_80E2140 sub_80E2140: @ 80E2140 @@ -485,8 +485,8 @@ _080E21C4: .pool thumb_func_end task_yes_no_maybe - thumb_func_start sub_80E21D0 -sub_80E21D0: @ 80E21D0 + thumb_func_start ScriptMenu_MultichoiceGrid +ScriptMenu_MultichoiceGrid: @ 80E21D0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -627,7 +627,7 @@ _080E22E8: pop {r1} bx r1 .pool - thumb_func_end sub_80E21D0 + thumb_func_end ScriptMenu_MultichoiceGrid thumb_func_start sub_80E2308 sub_80E2308: @ 80E2308 @@ -1334,8 +1334,8 @@ _080E28F8: bx r0 thumb_func_end task_picbox - thumb_func_start sub_80E2900 -sub_80E2900: @ 80E2900 + thumb_func_start ScriptMenu_ShowPokemonPic +ScriptMenu_ShowPokemonPic: @ 80E2900 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1422,10 +1422,10 @@ _080E29BA: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_80E2900 + thumb_func_end ScriptMenu_ShowPokemonPic - thumb_func_start picbox_close -picbox_close: @ 80E29C4 + thumb_func_start ScriptMenu_GetPicboxWaitFunc +ScriptMenu_GetPicboxWaitFunc: @ 80E29C4 push {lr} ldr r0, =task_picbox bl FindTaskIdByFunc @@ -1449,7 +1449,7 @@ _080E29F4: _080E29F6: pop {r1} bx r1 - thumb_func_end picbox_close + thumb_func_end ScriptMenu_GetPicboxWaitFunc thumb_func_start sub_80E29FC sub_80E29FC: @ 80E29FC diff --git a/asm/script_movement.s b/asm/script_movement.s index f28fc9d440..5f06fd1792 100755 --- a/asm/script_movement.s +++ b/asm/script_movement.s @@ -5,8 +5,8 @@ .text - thumb_func_start exec_movement -exec_movement: @ 80D32E8 + thumb_func_start ScriptMovement_StartObjectMovementScript +ScriptMovement_StartObjectMovementScript: @ 80D32E8 push {r4,lr} sub sp, 0x4 adds r4, r3, 0 @@ -47,10 +47,10 @@ _080D3332: pop {r1} bx r1 .pool - thumb_func_end exec_movement + thumb_func_end ScriptMovement_StartObjectMovementScript - thumb_func_start sub_80D3340 -sub_80D3340: @ 80D3340 + thumb_func_start ScriptMovement_IsObjectMovementFinished +ScriptMovement_IsObjectMovementFinished: @ 80D3340 push {r4,lr} sub sp, 0x4 lsls r0, 24 @@ -87,7 +87,7 @@ _080D3384: pop {r4} pop {r1} bx r1 - thumb_func_end sub_80D3340 + thumb_func_end ScriptMovement_IsObjectMovementFinished thumb_func_start sub_80D338C sub_80D338C: @ 80D338C diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s index 231879f02b..2bdf99aca1 100644 --- a/asm/script_pokemon_util_80F87D8.s +++ b/asm/script_pokemon_util_80F87D8.s @@ -83,7 +83,7 @@ sub_80F8850: @ 80F8850 thumb_func_start sub_80F8864 sub_80F8864: @ 80F8864 push {lr} - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] cmp r0, 0x4 bhi _080F88A4 @@ -397,8 +397,8 @@ sub_80F8ACC: @ 80F8ACC .pool thumb_func_end sub_80F8ACC - thumb_func_start sub_80F8ADC -sub_80F8ADC: @ 80F8ADC + thumb_func_start ShowContestWinner +ShowContestWinner: @ 80F8ADC push {lr} ldr r0, =sub_812FDEC bl SetMainCallback2 @@ -408,7 +408,7 @@ sub_80F8ADC: @ 80F8ADC pop {r0} bx r0 .pool - thumb_func_end sub_80F8ADC + thumb_func_end ShowContestWinner thumb_func_start sub_80F8AFC sub_80F8AFC: @ 80F8AFC @@ -1269,9 +1269,9 @@ _080F922C: .pool thumb_func_end sp000_heal_pokemon - thumb_func_start sub_80F9244 -@ void sub_80F9244(s16 species_num, u8 level, int held_item) -sub_80F9244: @ 80F9244 + thumb_func_start ScriptGiveMon +@ void ScriptGiveMon(s16 species_num, u8 level, int held_item) +ScriptGiveMon: @ 80F9244 push {r4-r6,lr} mov r6, r8 push {r6} @@ -1332,10 +1332,10 @@ _080F92B8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_80F9244 + thumb_func_end ScriptGiveMon - thumb_func_start sub_80F92C8 -sub_80F92C8: @ 80F92C8 + thumb_func_start ScriptGiveEgg +ScriptGiveEgg: @ 80F92C8 push {lr} sub sp, 0x68 adds r1, r0, 0 @@ -1357,7 +1357,7 @@ sub_80F92C8: @ 80F92C8 add sp, 0x68 pop {r1} bx r1 - thumb_func_end sub_80F92C8 + thumb_func_end ScriptGiveEgg thumb_func_start sub_80F92F8 sub_80F92F8: @ 80F92F8 @@ -1450,8 +1450,8 @@ _080F9392: .pool thumb_func_end sub_80F9370 - thumb_func_start sub_80F93A0 -sub_80F93A0: @ 80F93A0 + thumb_func_start CreateScriptedWildMon +CreateScriptedWildMon: @ 80F93A0 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1496,10 +1496,10 @@ _080F93EE: pop {r0} bx r0 .pool - thumb_func_end sub_80F93A0 + thumb_func_end CreateScriptedWildMon - thumb_func_start sub_80F9400 -sub_80F9400: @ 80F9400 + thumb_func_start ScriptSetMonMoveSlot +ScriptSetMonMoveSlot: @ 80F9400 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -1525,7 +1525,7 @@ _080F941C: pop {r0} bx r0 .pool - thumb_func_end sub_80F9400 + thumb_func_end ScriptSetMonMoveSlot thumb_func_start sub_80F9438 sub_80F9438: @ 80F9438 diff --git a/asm/secret_base.s b/asm/secret_base.s index 0290e9f7fc..be156982c3 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -861,7 +861,7 @@ sub_80E916C: @ 80E916C asrs r0, 24 str r0, [sp] adds r0, r5, 0 - bl warp1_set + bl Overworld_SetWarpDestination bl warp_in ldr r1, =gFieldCallback ldr r0, =sub_80E9108 @@ -1208,7 +1208,7 @@ _080E9462: adds r0, 0xAE lsls r0, 16 lsrs r0, 16 - bl FlagReset + bl FlagClear ldrb r0, [r6] ldr r5, =gSaveBlock1Ptr ldr r2, [r5] diff --git a/asm/shop.s b/asm/shop.s index 08e935bb1a..94756624c2 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -2465,7 +2465,7 @@ BuyMenuSubtractMoney: @ 80E0F88 lsls r2, 6 adds r1, r2 ldr r1, [r1] - bl SubtractMoney + bl RemoveMoney movs r0, 0x5F bl PlaySE ldr r0, [r5] diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 6bd62ed9fb..6390ae9923 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -55,8 +55,8 @@ _0812A530: .pool thumb_func_end sub_812A4DC - thumb_func_start sub_812A540 -sub_812A540: @ 812A540 + thumb_func_start PlaySlotMachine +PlaySlotMachine: @ 812A540 push {r4-r6,lr} adds r4, r0, 0 adds r6, r1, 0 @@ -85,7 +85,7 @@ sub_812A540: @ 812A540 pop {r0} bx r0 .pool - thumb_func_end sub_812A540 + thumb_func_end PlaySlotMachine thumb_func_start sub_812A588 sub_812A588: @ 812A588 diff --git a/asm/trainer_rematch.s b/asm/trainer_rematch.s index 0c30cfea91..b814934a3c 100755 --- a/asm/trainer_rematch.s +++ b/asm/trainer_rematch.s @@ -185,7 +185,7 @@ _081DA6D4: adds r0, r1 adds r0, r6 ldrh r0, [r0] - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 bne _081DA6F0 diff --git a/asm/trainer_see.s b/asm/trainer_see.s index d638498ee9..59dd9f74b0 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -734,7 +734,7 @@ sub_80B417C: @ 80B417C push {r4,r5,lr} adds r5, r1, 0 adds r4, r2, 0 - ldr r1, =gFieldEffectSpawnParams + ldr r1, =gFieldEffectArguments adds r2, r1, 0x4 adds r3, r1, 0 adds r3, 0x8 @@ -1050,7 +1050,7 @@ sub_80B43E0: @ 80B43E0 lsls r0, 24 cmp r0, 0 beq _080B4426 - ldr r2, =gFieldEffectSpawnParams + ldr r2, =gFieldEffectArguments movs r1, 0x10 ldrsh r0, [r4, r1] str r0, [r2] @@ -1303,7 +1303,7 @@ sub_80B45D0: @ 80B45D0 ldr r1, =gScriptResult movs r0, 0x1 strh r0, [r1] - bl sub_809757C + bl UnfreezeMapObjects ldr r0, =gUnknown_03006090 ldrb r0, [r0, 0xC] bl sub_80974D0 @@ -1432,7 +1432,7 @@ sub_80B46D8: @ 80B46D8 orrs r3, r4 mov r4, r12 strb r3, [r4] - ldr r4, =gFieldEffectSpawnParams + ldr r4, =gFieldEffectArguments ldr r3, [r4] strh r3, [r0, 0x2E] ldr r3, [r4, 0x4] @@ -1609,7 +1609,7 @@ sub_80B4808: @ 80B4808 ldrb r1, [r0, 0x5] ldrb r2, [r0, 0x4] movs r0, 0xFF - bl exec_movement + bl ScriptMovement_StartObjectMovementScript b _080B489E .pool _080B4870: @@ -1633,7 +1633,7 @@ _080B4870: ldrb r1, [r0, 0x5] ldrb r2, [r0, 0x4] movs r0, 0xFF - bl exec_movement + bl ScriptMovement_StartObjectMovementScript _080B489E: movs r0, 0xFF bl sub_809BE48 diff --git a/asm/tv.s b/asm/tv.s index d61392fa19..313b1f6c00 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -233,7 +233,7 @@ _080EC080: beq _080EC0BE _080EC0AE: ldr r0, =0x00000891 - bl FlagReset + bl FlagClear adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x3 @@ -1407,7 +1407,7 @@ sub_80ECA38: @ 80ECA38 ldr r1, =gSaveBlock2Ptr ldr r1, [r1] bl StringCopy - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrh r0, [r0] strb r0, [r4, 0x1C] ldr r0, =gUnknown_02039F24 @@ -2114,7 +2114,7 @@ sub_80ED090: @ 80ED090 ands r2, r1 orrs r2, r0 strb r2, [r7, 0x13] - ldr r0, =gUnknown_02039F2C + ldr r0, =gScriptContestCategory ldrb r0, [r0] movs r1, 0x7 ands r1, r0 @@ -2609,7 +2609,7 @@ sub_80ED548: @ 80ED548 ldr r1, =gSaveBlock2Ptr ldr r1, [r1] bl StringCopy - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -2689,7 +2689,7 @@ sub_80ED610: @ 80ED610 mov r8, r0 mov r1, r8 strb r1, [r5, 0x1] - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r7, 0x64 @@ -2719,7 +2719,7 @@ sub_80ED610: @ 80ED610 ldr r1, =gSaveBlock2Ptr ldr r1, [r1] bl StringCopy - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 muls r0, r7 @@ -2731,7 +2731,7 @@ sub_80ED610: @ 80ED610 bl GetMonData adds r0, r4, 0 bl StripExtCtrlCodes - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 muls r0, r7 @@ -2747,7 +2747,7 @@ sub_80ED610: @ 80ED610 strb r0, [r5, 0xD] cmp r0, 0x1 beq _080ED6D4 - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 muls r0, r7 @@ -2761,7 +2761,7 @@ _080ED6D4: b _080ED706 .pool _080ED6F4: - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 muls r0, r7 @@ -5699,7 +5699,7 @@ _080EEFD0: lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage b _080EF016 .pool _080EEFE8: @@ -5723,7 +5723,7 @@ _080EEFE8: lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage _080EF016: ldr r1, =gScriptResult movs r0, 0x1 @@ -6495,7 +6495,7 @@ sub_80EF64C: @ 80EF64C cmp r0, 0 bne _080EF6A0 ldr r4, =gStringVar1 - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -6569,7 +6569,7 @@ sub_80EF704: @ 80EF704 cmp r0, 0 bne _080EF774 ldr r6, =gStringVar1 - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 movs r5, 0x64 @@ -6585,7 +6585,7 @@ sub_80EF704: @ 80EF704 adds r1, r0 adds r0, r6, 0 bl StringCopy - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 muls r0, r5 @@ -6788,7 +6788,7 @@ _080EF8EE: thumb_func_start sub_80EF8F8 sub_80EF8F8: @ 80EF8F8 push {lr} - bl sub_8139688 + bl GetLeadMonIndex lsls r0, 24 lsrs r0, 24 bl sub_80EF88C @@ -10706,7 +10706,7 @@ _080F1952: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -10958,7 +10958,7 @@ _080F1BEA: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -11190,7 +11190,7 @@ _080F1E2C: lsls r1, r6, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 @@ -11485,7 +11485,7 @@ _080F20FE: lsls r1, r6, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage add sp, 0x8 pop {r4-r6} pop {r0} @@ -11707,7 +11707,7 @@ _080F2358: lsls r1, r6, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 @@ -11846,7 +11846,7 @@ _080F24C0: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -12019,7 +12019,7 @@ _080F26A6: movs r3, 0x2 bl ConvertEasyChatWordsToString adds r0, r4, 0 - bl box_related_two__2 + bl ShowFieldMessage ldr r1, =gUnknown_0203A030 movs r0, 0x1 strb r0, [r1] @@ -12033,7 +12033,7 @@ _080F26CC: movs r3, 0x2 bl ConvertEasyChatWordsToString adds r0, r4, 0 - bl box_related_two__2 + bl ShowFieldMessage ldr r1, =gUnknown_0203A030 movs r0, 0x3 strb r0, [r1] @@ -12044,7 +12044,7 @@ _080F26F0: lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage _080F26FC: pop {r4-r7} pop {r0} @@ -12173,7 +12173,7 @@ _080F2868: movs r3, 0x2 bl ConvertEasyChatWordsToString adds r0, r4, 0 - bl box_related_two__2 + bl ShowFieldMessage ldr r1, =gUnknown_0203A030 movs r0, 0x1 strb r0, [r1] @@ -12184,7 +12184,7 @@ _080F288C: lsls r1, r6, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage _080F2898: pop {r4-r7} pop {r0} @@ -12278,7 +12278,7 @@ _080F297E: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 @@ -12322,7 +12322,7 @@ DoTVShowPokemonNewsMassOutbreak: @ 80F29A0 lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r4} pop {r0} bx r0 @@ -13075,7 +13075,7 @@ _080F311C: lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -13285,7 +13285,7 @@ _080F3362: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -13535,7 +13535,7 @@ _080F3624: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -13721,7 +13721,7 @@ _080F37EA: lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -13806,7 +13806,7 @@ _080F38E0: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -13894,7 +13894,7 @@ _080F39BE: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 @@ -14124,7 +14124,7 @@ _080F3BE8: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -14257,7 +14257,7 @@ _080F3D54: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -14362,7 +14362,7 @@ _080F3E5C: lsls r1, r6, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -14532,7 +14532,7 @@ _080F4008: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -14835,7 +14835,7 @@ _080F4344: lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -15063,7 +15063,7 @@ _080F4588: lsls r1, r6, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 @@ -15133,7 +15133,7 @@ _080F4634: lsls r0, r6, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 @@ -15330,7 +15330,7 @@ _080F4858: lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -15453,7 +15453,7 @@ _080F499A: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -15623,7 +15623,7 @@ _080F4B3A: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -15846,7 +15846,7 @@ _080F4D84: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -16107,7 +16107,7 @@ _080F5014: lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -16245,7 +16245,7 @@ _080F5164: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -16650,7 +16650,7 @@ _080F552A: lsls r1, r2, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r3,r4} mov r8, r3 mov r9, r4 @@ -16821,7 +16821,7 @@ _080F56BC: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4,r5} pop {r0} bx r0 @@ -16895,7 +16895,7 @@ _080F575E: lsls r1, r5, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r6} pop {r0} bx r0 diff --git a/data/event_script_command_function_table.inc b/data/event_script_command_function_table.inc index f44cdb7db9..675da0ea7a 100644 --- a/data/event_script_command_function_table.inc +++ b/data/event_script_command_function_table.inc @@ -1,229 +1,229 @@ .align 2 gScriptCmdTable:: @ 81DB67C - .4byte s00_nop - .4byte s01_nop - .4byte s02_end - .4byte s03_return - .4byte s04_call - .4byte s05_goto - .4byte s06_if_jump - .4byte s07_if_call - .4byte s08_jumpstd - .4byte s09_callstd - .4byte s0A_jumpstd_if - .4byte s0B_callstd_if - .4byte s0C_restore_execution_after_sCF - .4byte s0D_endscript_killram - .4byte s0E_set_byte - .4byte s0F_u32_var_to_const - .4byte s10_u8_var_to_const - .4byte s11_u8_ptr_to_const - .4byte s12_u32_var_to_ptr - .4byte s13_u8_var_to_ptr - .4byte s14_u32_var_to_var - .4byte s15_u8_ptr_to_ptr - .4byte s16_u16_gvar_to_const - .4byte s17_u16_gvar_add_const - .4byte sub_809993C - .4byte s19_u16_gvar_gvar - .4byte s1A_u16_gvar_gvar - .4byte s1B_cmp_u8_var_var - .4byte s1C_cmp_u8_var_const - .4byte s1D_cmp_u8_var_ptr - .4byte s1E_cmp_u8_ptr_var - .4byte s1F_cmp_u8_ptr_const - .4byte s20_cmp_u8_ptr_ptr - .4byte s21_cmp_u16_gvar_const - .4byte s22_cmp_u16_gvar_gvar - .4byte s23_execute_ASM - .4byte s24_execute_ASM_2 - .4byte s25_extended_cmd - .4byte s26_extended_cmd_setvar - .4byte s27_set_to_waitstate - .4byte s28_pause - .4byte s29_flag_set - .4byte s2A_flag_clear - .4byte s2B_flag_check - .4byte s2C_unknown - .4byte s2D_unknown - .4byte s2E_unknown - .4byte s2F_music_play - .4byte s30_music_check - .4byte s31_PlayFanfare - .4byte s32_fanfare_wait - .4byte s33_play_music - .4byte s34_unknown - .4byte s35_fade_to_default - .4byte s36_fade_to_music - .4byte s37_fadeout - .4byte s38_fadein - .4byte s39_warp_sfx - .4byte s3A_warp_new_music - .4byte s3B_warp_keep_music - .4byte sub_809A054 - .4byte s3D_warp_v4 - .4byte s3E_set_new_map - .4byte s3F_set_new_map_DMA - .4byte sub_809A2DC - .4byte sub_809A35C - .4byte s42_get_map_camera_pos - .4byte s43_get_player_party_count - .4byte sub_80999A0 - .4byte sub_80999E4 - .4byte sub_8099A28 - .4byte sub_8099A6C - .4byte s48_get_item_type - .4byte sub_8099ADC - .4byte sub_8099B20 - .4byte sub_8099B64 - .4byte sub_8099B90 - .4byte sub_8099BE8 - .4byte sub_8099BBC - .4byte s4F_execute_movement - .4byte s50_execute_movement_remote - .4byte s51_waitmove - .4byte s52_waitmove_remote - .4byte s53_hide_sprite - .4byte s54_hide_sprite_set_coords - .4byte s55_show_sprite - .4byte s56_show_sprite_set_coords - .4byte s57_move_sprites - .4byte s58_npc_f1_clear_x20 - .4byte s59_npc_f1_set_x20 - .4byte s5A_face_player - .4byte s5B_npc_set_direction - .4byte s5C_trainer_battle_configure_and_start - .4byte sub_809B5E4 - .4byte sub_809B5F0 - .4byte sub_809B604 - .4byte s60_check_trainer_flag - .4byte s61_set_trainer_flag - .4byte s62_unset_trainer_flag - .4byte s63_new_sprite_location_permanent - .4byte s64_set_sprite_top_left_corner - .4byte s65_set_sprite_behaviour - .4byte sub_809AC78 - .4byte s67_execute_box - .4byte s68_close_box - .4byte sub_809AAC4 - .4byte sub_809AAEC - .4byte s6B_release - .4byte s6C_release_2 - .4byte sub_809ACC0 - .4byte s6E_yes_no - .4byte s6F_multichoice - .4byte sub_809AD3C - .4byte sub_809AD90 - .4byte sub_809AD8C - .4byte s73_nop_skip_word - .4byte sub_809ADEC - .4byte sub_809ADF8 - .4byte s76_close_picture_box - .4byte sub_809AE48 - .4byte sub_809AE6C - .4byte s79_give_pokemon - .4byte s7A_create_egg - .4byte s7B_change_pokedata_AP - .4byte sub_809B3DC - .4byte s7D_load_pokename - .4byte s7E_load_first_pokenames - .4byte s7F_load_pokename_team - .4byte s80_load_item_name - .4byte sub_809B114 - .4byte s82_load_item_name - .4byte s83_load_textvar_var - .4byte s84_load_textvar_std_expression - .4byte s85_load_textvar_pointer - .4byte s86_pokemart - .4byte s87_pokemartdecor - .4byte s88_pokemartbp - .4byte s89_open_casino_game1 - .4byte berry_script_cmd - .4byte sub_809B784 - .4byte sub_809B794 - .4byte sub_809B7A4 - .4byte sub_809B7B4 - .4byte s8F_get_random_val - .4byte s90_AddMoney - .4byte s91_SubtractMoney - .4byte s92_check_money - .4byte s93_display_money - .4byte s94_hide_money - .4byte s95_update_money - .4byte sub_809B758 - .4byte s97_screen_special_effect - .4byte s98_refade_with_timer - .4byte s99_unknown - .4byte s9A_unknown - .4byte s9B_unknown - .4byte s9C_execute_HM - .4byte s9D_set_HM_animation_data - .4byte s9E_checkarray_HM_animation - .4byte s9F_changeposition_fly - .4byte sA0_check_gender - .4byte sA1_play_cry - .4byte sA2_setmaptile - .4byte sA3_set_standard_weather_data - .4byte sA4_set_weather_data - .4byte sub_8099E7C - .4byte sA6_activate_per_step_callback_eg_ash - .4byte sA7_set_new_map_footer - .4byte sA8_unknown - .4byte sA9_unknown - .4byte sAA_create_new_sprite - .4byte sAB_unknown - .4byte sAC_open_door - .4byte sub_809B9C8 - .4byte sub_809BA24 - .4byte sub_809BA38 - .4byte sub_809BA7C - .4byte sub_809BAC0 - .4byte sub_809BAFC - .4byte sB3_get_coin_amount - .4byte sub_809BB20 - .4byte sub_809BB58 - .4byte sB6_load_battle - .4byte sub_809B6A8 - .4byte sB8_set_virtual_address - .4byte sB9_virtual_jump - .4byte sBA_virtual_call - .4byte sBB_virtual_if_jump - .4byte sBC_virtual_if_call - .4byte sBD_virtual_message - .4byte sBE_virtual_load_text - .4byte sBF_virtual_load_textbuffer - .4byte sub_809B578 - .4byte sC1_hide_coins - .4byte sC2_update_coins - .4byte sC3_unknown - .4byte sC4_unknown - .4byte sub_809B8DC - .4byte sC6_load_textvar_box_label - .4byte s01_nop - .4byte s01_nop - .4byte s01_nop - .4byte s01_nop - .4byte s01_nop - .4byte s01_nop - .4byte sCD_set_obedient_bit - .4byte sCE_check_obedient_bit - .4byte sCF_execute_RAM_script_DMA - .4byte s01_nop - .4byte sD1_warp_v5 - .4byte sub_809BD70 - .4byte sub_809BB90 - .4byte sub_809BBB4 - .4byte ScrCmd_MossdeepGymSwitch - .4byte sub_809BBDC - .4byte sub_809A150 - .4byte sub_809BBE8 - .4byte sub_809BBFC - .4byte sub_809AF94 - .4byte sub_809AC3C - .4byte sub_8099D20 - .4byte sub_809BDD0 - .4byte sub_809BE0C - .4byte sub_809ABF0 - .4byte sub_809BE54 - .4byte sub_809B214 - .4byte sub_809B0C4 + .4byte ScrCmd_nop + .4byte ScrCmd_nop1 + .4byte ScrCmd_end + .4byte ScrCmd_return + .4byte ScrCmd_call + .4byte ScrCmd_goto + .4byte ScrCmd_goto_if + .4byte ScrCmd_call_if + .4byte ScrCmd_gotostd + .4byte ScrCmd_callstd + .4byte ScrCmd_gotostd_if + .4byte ScrCmd_callstd_if + .4byte ScrCmd_gotoram + .4byte ScrCmd_killscript + .4byte ScrCmd_setmysteryeventstatus + .4byte ScrCmd_loadword + .4byte ScrCmd_loadbyte + .4byte ScrCmd_writebytetoaddr + .4byte ScrCmd_loadbytefromaddr + .4byte ScrCmd_setptrbyte + .4byte ScrCmd_copylocal + .4byte ScrCmd_copybyte + .4byte ScrCmd_setvar + .4byte ScrCmd_addvar + .4byte ScrCmd_subvar + .4byte ScrCmd_copyvar + .4byte ScrCmd_setorcopyvar + .4byte ScrCmd_compare_local_to_local + .4byte ScrCmd_compare_local_to_value + .4byte ScrCmd_compare_local_to_addr + .4byte ScrCmd_compare_addr_to_local + .4byte ScrCmd_compare_addr_to_value + .4byte ScrCmd_compare_addr_to_addr + .4byte ScrCmd_compare_var_to_value + .4byte ScrCmd_compare_var_to_var + .4byte ScrCmd_callnative + .4byte ScrCmd_gotonative + .4byte ScrCmd_special + .4byte ScrCmd_specialvar + .4byte ScrCmd_waitstate + .4byte ScrCmd_delay + .4byte ScrCmd_setflag + .4byte ScrCmd_clearflag + .4byte ScrCmd_checkflag + .4byte ScrCmd_initclock + .4byte ScrCmd_dodailyevents + .4byte ScrCmd_gettime + .4byte ScrCmd_playse + .4byte ScrCmd_waitse + .4byte ScrCmd_playfanfare + .4byte ScrCmd_waitfanfare + .4byte ScrCmd_playbgm + .4byte ScrCmd_savebgm + .4byte ScrCmd_fadedefaultbgm + .4byte ScrCmd_fadenewbgm + .4byte ScrCmd_fadeoutbgm + .4byte ScrCmd_fadeinbgm + .4byte ScrCmd_warp + .4byte ScrCmd_warpsilent + .4byte ScrCmd_warpdoor + .4byte ScrCmd_warphole + .4byte ScrCmd_warpteleport + .4byte ScrCmd_setwarp + .4byte ScrCmd_setdynamicwarp + .4byte ScrCmd_setdivewarp + .4byte ScrCmd_setholewarp + .4byte ScrCmd_getplayerxy + .4byte ScrCmd_countpokemon + .4byte ScrCmd_additem + .4byte ScrCmd_removeitem + .4byte ScrCmd_checkitemspace + .4byte ScrCmd_checkitem + .4byte ScrCmd_checkitemtype + .4byte ScrCmd_addpcitem + .4byte ScrCmd_checkpcitem + .4byte ScrCmd_adddecor + .4byte ScrCmd_removedecor + .4byte ScrCmd_hasdecor + .4byte ScrCmd_checkdecor + .4byte ScrCmd_applymovement + .4byte ScrCmd_applymovement_at + .4byte ScrCmd_waitmovement + .4byte ScrCmd_waitmovement_at + .4byte ScrCmd_removeobject + .4byte ScrCmd_removeobject_at + .4byte ScrCmd_addobject + .4byte ScrCmd_addobject_at + .4byte ScrCmd_setobjectxy + .4byte ScrCmd_showobject + .4byte ScrCmd_hideobject + .4byte ScrCmd_faceplayer + .4byte ScrCmd_turnobject + .4byte ScrCmd_trainerbattle + .4byte ScrCmd_battlebegin + .4byte ScrCmd_ontrainerbattleend + .4byte ScrCmd_ontrainerbattleendgoto + .4byte ScrCmd_checktrainerflag + .4byte ScrCmd_settrainerflag + .4byte ScrCmd_cleartrainerflag + .4byte ScrCmd_setobjectxyperm + .4byte ScrCmd_moveobjectoffscreen + .4byte ScrCmd_setobjectmovementtype + .4byte ScrCmd_waitmessage + .4byte ScrCmd_message + .4byte ScrCmd_closemessage + .4byte ScrCmd_lockall + .4byte ScrCmd_lock + .4byte ScrCmd_releaseall + .4byte ScrCmd_release + .4byte ScrCmd_waitbutton + .4byte ScrCmd_yesnobox + .4byte ScrCmd_multichoice + .4byte ScrCmd_multichoicedefault + .4byte ScrCmd_multichoicegrid + .4byte ScrCmd_cmd72 + .4byte ScrCmd_cmd73 + .4byte ScrCmd_cmd74 + .4byte ScrCmd_drawpokepic + .4byte ScrCmd_erasepokepic + .4byte ScrCmd_drawcontestwinner + .4byte ScrCmd_braillemessage + .4byte ScrCmd_givepoke + .4byte ScrCmd_giveegg + .4byte ScrCmd_setpokemove + .4byte ScrCmd_checkpokemove + .4byte ScrCmd_getspeciesname + .4byte ScrCmd_getfirstpartypokename + .4byte ScrCmd_getpartypokename + .4byte ScrCmd_getitemname + .4byte ScrCmd_getdecorname + .4byte ScrCmd_getmovename + .4byte ScrCmd_getnumberstring + .4byte ScrCmd_getstdstring + .4byte ScrCmd_getstring + .4byte ScrCmd_pokemart + .4byte ScrCmd_pokemartdecor + .4byte ScrCmd_pokemartbp + .4byte ScrCmd_playslotmachine + .4byte ScrCmd_plantberrytree + .4byte ScrCmd_choosecontestpkmn + .4byte ScrCmd_startcontest + .4byte ScrCmd_showcontestresults + .4byte ScrCmd_contestlinktransfer + .4byte ScrCmd_random + .4byte ScrCmd_givemoney + .4byte ScrCmd_takemoney + .4byte ScrCmd_checkmoney + .4byte ScrCmd_showmoneybox + .4byte ScrCmd_hidemoneybox + .4byte ScrCmd_updatemoneybox + .4byte ScrCmd_getpricereduction + .4byte ScrCmd_fadescreen + .4byte ScrCmd_fadescreendelay + .4byte ScrCmd_setdarklevel + .4byte ScrCmd_animdarklevel + .4byte ScrCmd_messageautoscroll + .4byte ScrCmd_dofieldeffect + .4byte ScrCmd_setfieldeffect + .4byte ScrCmd_waitfieldeffect + .4byte ScrCmd_sethealplace + .4byte ScrCmd_checkplayergender + .4byte ScrCmd_playpokecry + .4byte ScrCmd_setmaptile + .4byte ScrCmd_resetweather + .4byte ScrCmd_setweather + .4byte ScrCmd_doweather + .4byte ScrCmd_tileeffect + .4byte ScrCmd_setmaplayoutindex + .4byte ScrCmd_setobjectpriority + .4byte ScrCmd_resetobjectpriority + .4byte ScrCmd_createvobject + .4byte ScrCmd_turnvobject + .4byte ScrCmd_opendoor + .4byte ScrCmd_closedoor + .4byte ScrCmd_waitdooranim + .4byte ScrCmd_setdooropen + .4byte ScrCmd_setdoorclosed + .4byte ScrCmd_cmdB1 + .4byte ScrCmd_cmdB2 + .4byte ScrCmd_checkcoins + .4byte ScrCmd_givecoins + .4byte ScrCmd_takecoins + .4byte ScrCmd_setwildbattle + .4byte ScrCmd_dowildbattle + .4byte ScrCmd_setvaddress + .4byte ScrCmd_vgoto + .4byte ScrCmd_vcall + .4byte ScrCmd_vgoto_if + .4byte ScrCmd_vcall_if + .4byte ScrCmd_vmessage + .4byte ScrCmd_vloadword + .4byte ScrCmd_vgetstring + .4byte ScrCmd_showcoinsbox + .4byte ScrCmd_hidecoinsbox + .4byte ScrCmd_updatecoinsbox + .4byte ScrCmd_incrementgamestat + .4byte ScrCmd_setescapewarp + .4byte ScrCmd_waitpokecry + .4byte ScrCmd_cmdC6 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_cmdCD + .4byte ScrCmd_cmdCE + .4byte ScrCmd_cmdCF + .4byte ScrCmd_nop1 + .4byte ScrCmd_cmdD1 + .4byte ScrCmd_cmdD2 + .4byte ScrCmd_cmdD3 + .4byte ScrCmd_cmdD4 + .4byte ScrCmd_cmdD5 + .4byte ScrCmd_cmdD6 + .4byte ScrCmd_cmdD7 + .4byte ScrCmd_cmdD8 + .4byte ScrCmd_cmdD9 + .4byte ScrCmd_cmdDA + .4byte ScrCmd_cmdDB + .4byte ScrCmd_cmdDC + .4byte ScrCmd_cmdDD + .4byte ScrCmd_cmdDE + .4byte ScrCmd_cmdDF + .4byte ScrCmd_cmdE0 + .4byte ScrCmd_cmdE1 + .4byte ScrCmd_cmdE2 diff --git a/data/event_scripts.s b/data/event_scripts.s index 4dd5761e57..aaa5873c31 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -12,13 +12,13 @@ gScriptCmdTableEnd:: @ 81DBA08 gSpecialVars:: @ 81DBA0C .incbin "baserom.gba", 0x1dba0c, 0x58 -gUnknown_081DBA64:: @ 81DBA64 +gSpecials:: @ 81DBA64 .incbin "baserom.gba", 0x1dba64, 0x83c -gUnknown_081DC2A0:: @ 81DC2A0 +gStdScripts:: @ 81DC2A0 .incbin "baserom.gba", 0x1dc2a0, 0x2c -gUnknown_081DC2CC:: @ 81DC2CC +gStdScripts_End:: @ 81DC2CC .incbin "baserom.gba", 0x1dc2cc, 0x34ee gUnknown_081DF7BA:: @ 81DF7BA diff --git a/data/scrcmd.s b/data/scrcmd.s deleted file mode 100644 index dfa8026841..0000000000 --- a/data/scrcmd.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gNullScriptPtr:: @ 85102BC - .incbin "baserom.gba", 0x5102bc, 0x4 - -gUnknown_085102C0:: @ 85102C0 - .incbin "baserom.gba", 0x5102c0, 0x14 - -gUnknown_085102D4:: @ 85102D4 - .incbin "baserom.gba", 0x5102d4, 0xc diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h new file mode 100644 index 0000000000..4f37248cc1 --- /dev/null +++ b/include/battle_frontier_2.h @@ -0,0 +1,9 @@ +#ifndef GUARD_BATTLE_FRONTIER_2_H +#define GUARD_BATTLE_FRONTIER_2_H + +void sub_81A8934(u8); +void sub_81A895C(void); +u16 sub_81A89A0(u8); +void sub_81A8AF8(void); + +#endif // GUARD_BATTLE_FRONTIER_2_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 80fb55da22..e4acd86016 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -1,6 +1,15 @@ #ifndef GUARD_BATTLE_SETUP_H #define GUARD_BATTLE_SETUP_H +void BattleSetup_StartScriptedWildBattle(void); u8 BattleSetup_GetTerrainId(void); +u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); + +u8 HasTrainerAlreadyBeenFought(u16); +void trainer_flag_set(u16); +void trainer_flag_clear(u16); +void BattleSetup_StartTrainerBattle(void); +u8 *BattleSetup_GetScriptAddrAfterBattle(void); +u8 *BattleSetup_GetTrainerPostBattleScript(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/clock.h b/include/clock.h new file mode 100644 index 0000000000..4e6560c910 --- /dev/null +++ b/include/clock.h @@ -0,0 +1,8 @@ +#ifndef GUARD_CLOCK_H +#define GUARD_CLOCK_H + +// TODO: time of day and seconds in a day defines + +void DoTimeBasedEvents(void); + +#endif diff --git a/include/coins.h b/include/coins.h index 43434b227c..996519605d 100644 --- a/include/coins.h +++ b/include/coins.h @@ -6,7 +6,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y); void HideCoinsWindow(void); u16 GetCoins(void); void SetCoins(u16 coinAmount); -bool8 AddCoins(u16 toAdd); -bool8 SubtractCoins(u16 toSub); +bool8 GiveCoins(u16 toAdd); +bool8 TakeCoins(u16 toSub); #endif // GUARD_COINS_H diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h new file mode 100644 index 0000000000..98523c1750 --- /dev/null +++ b/include/contest_link_80F57C4.h @@ -0,0 +1,8 @@ +#ifndef GUARD_CONTEST_LINK_80F57C4_H +#define GUARD_CONTEST_LINK_80F57C4_H + +void sub_80F840C(void); +void sub_80F8484(void); +void sub_80F84C4(u8); + +#endif // GUARD_CONTEST_LINK_80F57C4_H diff --git a/include/contest_painting.h b/include/contest_painting.h new file mode 100644 index 0000000000..f8366a997b --- /dev/null +++ b/include/contest_painting.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CONTESTPAINTING_H +#define GUARD_CONTESTPAINTING_H + +void sub_812FDA8(u32); + +#endif diff --git a/include/data2.h b/include/data2.h new file mode 100644 index 0000000000..ccb9b4b7e2 --- /dev/null +++ b/include/data2.h @@ -0,0 +1,9 @@ +#ifndef GUARD_DATA2_H +#define GUARD_DATA2_H + +extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; +extern const u8 gMoveNames[][13]; +extern const u8 gAbilityNames[][13]; +extern const u8 gTypeNames[][7]; + +#endif // GUARD_DATA2_H diff --git a/include/decoration.h b/include/decoration.h new file mode 100644 index 0000000000..f54f952e48 --- /dev/null +++ b/include/decoration.h @@ -0,0 +1,18 @@ +#ifndef GUARD_DECORATION_H +#define GUARD_DECORATION_H + +struct Decoration +{ + /*0x00*/ u8 id; + /*0x01*/ u8 name[16]; + /*0x11*/ u8 permission; + /*0x12*/ u8 shape; + /*0x13*/ u8 category; + /*0x14*/ u16 price; + /*0x18*/ const u8 *description; + /*0x1c*/ const u16 *tiles; +}; + +extern const struct Decoration gDecorations[]; + +#endif // GUARD_DECORATION_H diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h new file mode 100644 index 0000000000..5ca3459332 --- /dev/null +++ b/include/decoration_inventory.h @@ -0,0 +1,10 @@ +#ifndef GUARD_DECORATION_INVENTORY_H +#define GUARD_DECORATION_INVENTORY_H + +void ClearDecorationInventories(void); +u8 CheckHasDecoration(u8); +u8 DecorationAdd(u8); +u8 DecorationCheckSpace(u8); +s8 DecorationRemove(u8); + +#endif // GUARD_DECORATION_INVENTORY_H diff --git a/include/event_data.h b/include/event_data.h index a2a501283d..0bd11fdcd3 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -27,7 +27,7 @@ bool8 VarSet(u16 id, u16 value); u8 VarGetFieldObjectGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); -u8 FlagReset(u16 id); +u8 FlagClear(u16 id); bool8 FlagGet(u16 id); extern u16 gSpecialVar_0x8000; diff --git a/include/field_door.h b/include/field_door.h new file mode 100644 index 0000000000..f1dfc551dd --- /dev/null +++ b/include/field_door.h @@ -0,0 +1,11 @@ +#ifndef GUARD_FIELDDOOR_H +#define GUARD_FIELDDOOR_H + +void FieldSetDoorOpened(u32, u32); +void FieldSetDoorClosed(u32, u32); +s8 FieldAnimateDoorClose(u32, u32); +s8 FieldAnimateDoorOpen(u32, u32); +bool8 FieldIsDoorAnimationRunning(void); +u32 GetDoorSoundEffect(u32 x, u32 y); + +#endif diff --git a/include/field_effect.h b/include/field_effect.h index 7ec26b3d7e..aa3f7eba04 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -1,7 +1,3 @@ -// -// Created by Scott Norton on 9/15/17. -// - #ifndef GUARD_FIELD_EFFECTS_H #define GUARD_FIELD_EFFECTS_H @@ -73,8 +69,9 @@ enum FieldEffectScriptIdx FLDEFF_USE_TELEPORT }; -extern u32 gFieldEffectSpawnParams[8]; - u8 FieldEffectStart(u8); +bool8 FieldEffectActiveListContains(u8 id); + +extern u32 gFieldEffectArguments[8]; #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h new file mode 100644 index 0000000000..7c2d16a24a --- /dev/null +++ b/include/field_fadetransition.h @@ -0,0 +1,12 @@ +#ifndef GUARD_FIELD_FADETRANSITION_H +#define GUARD_FIELD_FADETRANSITION_H + +void sub_80AF734(void); +void sp13E_warp_to_last_warp(void); +void sub_80AF7D0(void); +void sp13F_fall_to_last_warp(void); + +void sub_80AF848(void); +void sub_80AF87C(void); + +#endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 40cc640548..b18b6cfd33 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -33,6 +33,7 @@ u8 sub_808D4F4(void); void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8); void npc_load_two_palettes__no_record(u16, u8); void npc_load_two_palettes__and_record(u16, u8); +void sub_808EBA8(u8, u8, u8, s16, s16); void pal_patch_for_npc(u16, u8); void sub_808E16C(s16, s16); void sub_8092FF0(s16, s16, s16 *, s16 *); @@ -63,6 +64,7 @@ void npc_coords_shift(struct MapObject *, s16, s16); void sub_808EB08(struct MapObject *, s16, s16); void sub_808F254(u8, u8, u8); void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *)); +u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 GetOppositeDirection(u8); u8 GetStepInPlaceDelay4AnimId(u32); u8 GetStepInPlaceDelay8AnimId(u32); @@ -71,6 +73,7 @@ u8 GetStepInPlaceDelay32AnimId(u32); u8 npc_block_way(struct MapObject *, s16, s16, u32); void MoveCoords(u8, s16 *, s16 *); bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); +u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); // Exported data declarations diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h new file mode 100644 index 0000000000..ba797ec984 --- /dev/null +++ b/include/field_map_obj_helpers.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FIELDMAPOBJHELP_H +#define GUARD_FIELDMAPOBJHELP_H + +void UnfreezeMapObjects(void); +void sub_8097B78(u8, u8); + +#endif diff --git a/include/field_message_box.h b/include/field_message_box.h new file mode 100644 index 0000000000..432c9078b5 --- /dev/null +++ b/include/field_message_box.h @@ -0,0 +1,10 @@ +#ifndef GUARD_FIELD_MESSAGE_BOX_H +#define GUARD_FIELD_MESSAGE_BOX_H + +bool8 ShowFieldMessage(const u8 *message); +bool8 sub_8098238(const u8 *message); +bool8 ShowFieldAutoScrollMessage(const u8 *message); +void HideFieldMessageBox(void); +bool8 IsFieldMessageBoxHidden(void); + +#endif // GUARD_FIELD_MESSAGE_BOX_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index a787cf8056..5c16e94148 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -1,7 +1,3 @@ -// -// Created by Scott Norton on 9/6/17. -// - #ifndef GUARD_FIELD_PLAYER_AVATAR_H #define GUARD_FIELD_PLAYER_AVATAR_H @@ -14,4 +10,6 @@ u8 player_get_direction_lower_nybble(void); u8 player_get_direction_upper_nybble(void); u8 player_get_x22(void); +void sub_808D074(u8); + #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h new file mode 100644 index 0000000000..ef81c2f9ed --- /dev/null +++ b/include/field_screen_effect.h @@ -0,0 +1,8 @@ +#ifndef GUARD_FIELD_SCREEN_EFFECT_H +#define GUARD_FIELD_SCREEN_EFFECT_H + +void sub_80AF79C(void); +void sub_80B009C(u8); +void sub_80B0244(void); + +#endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_specials.h b/include/field_specials.h new file mode 100644 index 0000000000..1f8fbf1470 --- /dev/null +++ b/include/field_specials.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FIELD_SPECIALS_H +#define GUARD_FIELD_SPECIALS_H + +u8 GetLeadMonIndex(void); + +#endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_tasks.h b/include/field_tasks.h new file mode 100644 index 0000000000..2a2a772d86 --- /dev/null +++ b/include/field_tasks.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FIELD_TASKS_H +#define GUARD_FIELD_TASKS_H + +void ActivatePerStepCallback(u8); + +#endif // GUARD_FIELD_TASKS_H diff --git a/include/field_weather.h b/include/field_weather.h new file mode 100644 index 0000000000..e12107e702 --- /dev/null +++ b/include/field_weather.h @@ -0,0 +1,12 @@ +#ifndef GUARD_WEATHER_H +#define GUARD_WEATHER_H + +void fade_screen(u8, s8); + +void SetSav1Weather(u32); +u8 GetSav1Weather(void); +void sub_80AEDBC(void); + +void DoCurrentWeather(void); + +#endif // GUARD_WEATHER_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 7174d98ccc..5d60d9f2ca 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,16 +1,8 @@ -// -// Created by scott on 9/16/2017. -// - #ifndef GUARD_FIELDMAP_H #define GUARD_FIELDMAP_H -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations u8 MapGridGetMetatileBehaviorAt(s16, s16); +void MapGridSetMetatileIdAt(int, int, u16); void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(s16, s16); s32 GetMapBorderIdAt(s16, s16); diff --git a/include/item.h b/include/item.h index eaefa02989..431bd93d04 100644 --- a/include/item.h +++ b/include/item.h @@ -31,6 +31,7 @@ extern struct BagPocket gBagPockets[]; void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity); void CopyItemName(u16 itemId, u8 *string); +void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); bool8 CheckBagHasSpace(u16 itemId, u16 count); diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h new file mode 100644 index 0000000000..a10648f2f1 --- /dev/null +++ b/include/map_obj_lock.h @@ -0,0 +1,11 @@ +#ifndef GUARD_MAP_OBJ_LOCK_H +#define GUARD_MAP_OBJ_LOCK_H + +bool8 sub_80983C4(void); +void ScriptFreezeMapObjects(void); +bool8 sub_809847C(void); +void LockSelectedMapObject(void); +void sub_8098630(void); +bool8 sub_8098734(void); + +#endif // GUARD_MAP_OBJ_LOCK_H diff --git a/include/money.h b/include/money.h index 22a3657f6a..5c7c1c9842 100644 --- a/include/money.h +++ b/include/money.h @@ -5,7 +5,7 @@ u32 GetMoney(u32* moneyPtr); void SetMoney(u32* moneyPtr, u32 newValue); bool8 IsEnoughMoney(u32* moneyPtr, u32 cost); void AddMoney(u32* moneyPtr, u32 toAdd); -void SubtractMoney(u32* moneyPtr, u32 toSub); +void RemoveMoney(u32* moneyPtr, u32 toSub); bool8 IsEnoughForCostInVar0x8005(void); void SubtractMoneyFromVar0x8005(void); void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed); diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h new file mode 100644 index 0000000000..ab23a8d000 --- /dev/null +++ b/include/mystery_event_script.h @@ -0,0 +1,8 @@ +#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H +#define GUARD_MYSTERY_EVENT_SCRIPT_H + +u32 RunMysteryEventScript(u8 *); +void SetMysteryEventScriptStatus(u32 val); +u16 GetRecordMixingGift(void); + +#endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h new file mode 100644 index 0000000000..a597fc9a27 --- /dev/null +++ b/include/new_menu_helpers.h @@ -0,0 +1,8 @@ +#ifndef GUARD_NEW_MENU_HELPERS_H +#define GUARD_NEW_MENU_HELPERS_H + +void sub_81973A4(void); +void sub_81973C4(u8, u8); +void sub_819746C(u8 windowId, bool8 copyToVram); + +#endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h new file mode 100644 index 0000000000..0475e8e8c3 --- /dev/null +++ b/include/overworld.h @@ -0,0 +1,58 @@ +#ifndef GUARD_ROM4_H +#define GUARD_ROM4_H + +struct UnkPlayerStruct +{ + u8 player_field_0; + u8 player_field_1; +}; + +struct LinkPlayerMapObject +{ + u8 active; + u8 linkPlayerId; + u8 mapObjId; + u8 mode; +}; + +struct UCoords32 +{ + u32 x, y; +}; + +extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; + +void IncrementGameStat(u8 index); + +void Overworld_SetMapObjTemplateCoords(u8, s16, s16); +void Overworld_SetMapObjTemplateMovementType(u8, u8); + +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); + +void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void Overworld_SetHealLocationWarp(u8); +void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void sub_8084E2C(s8, s8, s8, s8, s8); +void sub_8084E80(s8, s8, s8, s8, s8); +void sub_8084EBC(s16, s16); + +void player_avatar_init_params_reset(void); + +void Overworld_SetFlashLevel(s32 a1); +//u8 Overworld_GetFlashLevel(void); +void sub_8085524(u16); + +void Overworld_SetSavedMusic(u16); +void Overworld_ChangeMusicToDefault(void); +void Overworld_ChangeMusicTo(u16); + +bool32 is_c1_link_related_active(void); + +void strange_npc_table_clear(void); +const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8); +void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); +void sub_8086230(void); +void c2_exit_to_overworld_2_switch(void); +void c2_exit_to_overworld_1_continue_scripts_restart_music(void); + +#endif //GUARD_ROM4_H diff --git a/include/palette.h b/include/palette.h index de2cf00837..d3bcd22710 100644 --- a/include/palette.h +++ b/include/palette.h @@ -8,6 +8,9 @@ #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade #define gPaletteFade_submode (gPaletteFade.multipurpose2) // fast fade +#define PLTT_BUFFER_SIZE 0x200 +#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2) + enum { FAST_FADE_IN_FROM_WHITE, diff --git a/include/party_menu.h b/include/party_menu.h new file mode 100644 index 0000000000..175aba6392 --- /dev/null +++ b/include/party_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_PARTY_MENU_H +#define GUARD_PARTY_MENU_H + +bool8 pokemon_has_move(struct Pokemon *, u16); + +#endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h new file mode 100644 index 0000000000..5c9862d573 --- /dev/null +++ b/include/pokemon_3.h @@ -0,0 +1,7 @@ +#ifndef GUARD_POKEMON_3_H +#define GUARD_POKEMON_3_H + +const u8* GetTrainerClassNameFromId(u16 trainerId); +const u8* GetTrainerNameFromId(u16 trainerId); + +#endif // GUARD_POKEMON_3_H diff --git a/include/rom4.h b/include/rom4.h deleted file mode 100644 index e19d277a63..0000000000 --- a/include/rom4.h +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef GUARD_ROM4_H -#define GUARD_ROM4_H - -struct UnkPlayerStruct -{ - u8 player_field_0; - u8 player_field_1; -}; - -struct LinkPlayerMapObject -{ - u8 active; - u8 linkPlayerId; - u8 mapObjId; - u8 mode; -}; - -struct UCoords32 -{ - u32 x, y; -}; - - -extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; - -void strange_npc_table_clear(void); -const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8); -void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); -void sub_8086230(void); -void c2_exit_to_overworld_2_switch(void); - -#endif //GUARD_ROM4_H diff --git a/include/script_menu.h b/include/script_menu.h new file mode 100644 index 0000000000..f921a43487 --- /dev/null +++ b/include/script_menu.h @@ -0,0 +1,13 @@ +#ifndef GUARD_SCRIPTMENU_H +#define GUARD_SCRIPTMENU_H + +extern const u8 *const gUnknown_0858BAF0[]; + +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); +bool8 ScriptMenu_YesNo(u8 var1, u8 var2); +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); +bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); + +#endif diff --git a/include/script_movement.h b/include/script_movement.h new file mode 100644 index 0000000000..8f505cc675 --- /dev/null +++ b/include/script_movement.h @@ -0,0 +1,8 @@ +#ifndef GUARD_SCRIPT_MOVEMENT_H +#define GUARD_SCRIPT_MOVEMENT_H + +bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *); +bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); +void sub_80D338C(void); + +#endif // GUARD_SCRIPT_MOVEMENT_H diff --git a/include/script_pokemon_80F8.h b/include/script_pokemon_80F8.h new file mode 100644 index 0000000000..8dd7ed0c0f --- /dev/null +++ b/include/script_pokemon_80F8.h @@ -0,0 +1,10 @@ +#ifndef GUARD_SCRIPTPOKE80F8_H +#define GUARD_SCRIPTPOKE80F8_H + +void ShowContestWinner(void); +u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); +u8 ScriptGiveEgg(u16); +void CreateScriptedWildMon(u16, u8, u16); +void ScriptSetMonMoveSlot(u8, u16, u8); + +#endif diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h new file mode 100644 index 0000000000..1b8563ee66 --- /dev/null +++ b/include/script_pokemon_81B9.h @@ -0,0 +1,6 @@ +#ifndef GUARD_SCRIPTPOKE81B9_H +#define GUARD_SCRIPTPOKE81B9_H + +void sub_81B9404(void); + +#endif diff --git a/include/shop.h b/include/shop.h new file mode 100644 index 0000000000..d14c839eee --- /dev/null +++ b/include/shop.h @@ -0,0 +1,8 @@ +#ifndef GUARD_SHOP_H +#define GUARD_SHOP_H + +void CreatePokemartMenu(u16 *); +void CreateDecorationShop1Menu(u16 *); +void CreateDecorationShop2Menu(u16 *); + +#endif // GUARD_SHOP_H diff --git a/include/slot_machine.h b/include/slot_machine.h new file mode 100644 index 0000000000..8334e56fcf --- /dev/null +++ b/include/slot_machine.h @@ -0,0 +1,6 @@ +#ifndef GUARD_SLOT_MACHINE_H +#define GUARD_SLOT_MACHINE_H + +void PlaySlotMachine(u8, void *); + +#endif // GUARD_SLOT_MACHINE_H diff --git a/include/text.h b/include/text.h index c09b41ad3f..c3b27f7f1b 100644 --- a/include/text.h +++ b/include/text.h @@ -170,6 +170,7 @@ typedef struct { u8 flag_0:1; u8 flag_1:1; u8 flag_2:1; + u8 flag_3:1; } TextFlags; extern TextFlags gTextFlags; diff --git a/include/trainer_see.h b/include/trainer_see.h index 3f39783b87..ab035d9f82 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -2,6 +2,7 @@ #define GUARD_TRAINER_SEE_H void sub_80B4578(struct MapObject *); +u8 sub_80B47BC(void); void sub_8155D78(struct MapObject *); #endif //GUARD_TRAINER_SEE_H diff --git a/include/tv.h b/include/tv.h new file mode 100644 index 0000000000..ccd8e00506 --- /dev/null +++ b/include/tv.h @@ -0,0 +1,7 @@ +#ifndef GUARD_TV_H +#define GUARD_TV_H + +bool8 GetPriceReduction(u8); +size_t sub_80EF370(int); + +#endif // GUARD_TV_H diff --git a/ld_script.txt b/ld_script.txt index 3e47864f16..d1b3bfd48c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -101,7 +101,7 @@ SECTIONS { asm/map_obj_lock.o(.text); src/text_window.o(.text); src/script.o(.text); - asm/scrcmd.o(.text); + src/scrcmd.o(.text); asm/field_control_avatar.o(.text); src/event_data.o(.text); asm/coord_event_weather.o(.text); @@ -354,7 +354,7 @@ SECTIONS { data/field_ground_effect.o(.rodata); data/map_obj_8097404.o(.rodata); data/text_window.o(.rodata); - data/scrcmd.o(.rodata); + src/scrcmd.o(.rodata); data/coord_event_weather.o(.rodata); data/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 83d32b56c3..9a6f0371cd 100755 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -220,7 +220,7 @@ bool8 ShouldDoBrailleStrengthEffect(void) void sub_8179834(void) { - gFieldEffectSpawnParams[0] = brm_get_pokemon_selection(); + gFieldEffectArguments[0] = brm_get_pokemon_selection(); FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); } @@ -256,7 +256,7 @@ bool8 ShouldDoBrailleFlyEffect(void) void sub_8179918(void) { - gFieldEffectSpawnParams[0] = brm_get_pokemon_selection(); + gFieldEffectArguments[0] = brm_get_pokemon_selection(); FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); } @@ -417,7 +417,7 @@ bool8 ShouldDoBrailleRegicePuzzle(void) } // TODO: Find what flags 2 and 3 are. FlagSet(3); - FlagReset(2); + FlagClear(2); return FALSE; } #else @@ -568,7 +568,7 @@ _08179B44:\n\ movs r0, 0x3\n\ bl FlagSet\n\ movs r0, 0x2\n\ - bl FlagReset\n\ + bl FlagClear\n\ _08179B5A:\n\ movs r0, 0\n\ _08179B5C:\n\ diff --git a/src/coins.c b/src/coins.c index 4ee601b22f..e651bc6ca6 100644 --- a/src/coins.c +++ b/src/coins.c @@ -54,7 +54,7 @@ void SetCoins(u16 coinAmount) } /* Can't match it lol -bool8 AddCoins(u16 toAdd) +bool8 GiveCoins(u16 toAdd) { u16 newAmount; u16 ownedCoins = GetCoins(); diff --git a/src/event_data.c b/src/event_data.c index fb2edb063b..19a310db51 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -40,11 +40,11 @@ void ClearTempFieldEventData(void) { memset(gSaveBlock1Ptr->flags, 0, TEMP_FLAGS_SIZE); memset(gSaveBlock1Ptr->vars, 0, TEMP_VARS_SIZE); - FlagReset(SYS_ENC_UP_ITEM); - FlagReset(SYS_ENC_DOWN_ITEM); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_CTRL_OBJ_DELETE); - FlagReset(SYS_UNKNOWN_880); + FlagClear(SYS_ENC_UP_ITEM); + FlagClear(SYS_ENC_DOWN_ITEM); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_CTRL_OBJ_DELETE); + FlagClear(SYS_UNKNOWN_880); } // probably had different flag splits at one point. @@ -58,7 +58,7 @@ void DisableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2Ptr->pokedex.nationalMagic = 0; *nationalDexVar = 0; - FlagReset(SYS_NATIONAL_DEX); + FlagClear(SYS_NATIONAL_DEX); } void EnableNationalPokedex(void) @@ -82,7 +82,7 @@ bool32 IsNationalPokedexEnabled(void) void DisableMysteryEvent(void) { - FlagReset(SYS_MYSTERY_EVENT_ENABLE); + FlagClear(SYS_MYSTERY_EVENT_ENABLE); } void EnableMysteryEvent(void) @@ -97,7 +97,7 @@ bool32 IsMysteryEventEnabled(void) void DisableMysteryGift(void) { - FlagReset(SYS_MYSTERY_GIFT_ENABLE); + FlagClear(SYS_MYSTERY_GIFT_ENABLE); } void EnableMysteryGift(void) @@ -112,22 +112,22 @@ bool32 IsMysteryGiftEnabled(void) void sub_809D4D8(void) { - FlagReset(0x1E4); - FlagReset(0x1E5); - FlagReset(0x1E6); - FlagReset(0x1E7); - FlagReset(0x1E8); - FlagReset(0x1E9); - FlagReset(0x1EA); - FlagReset(0x1EB); - FlagReset(0x1EC); - FlagReset(0x1ED); - FlagReset(0x1EE); - FlagReset(0x1EF); - FlagReset(0x1F0); - FlagReset(0x1F1); - FlagReset(0x1F2); - FlagReset(0x1F3); + FlagClear(0x1E4); + FlagClear(0x1E5); + FlagClear(0x1E6); + FlagClear(0x1E7); + FlagClear(0x1E8); + FlagClear(0x1E9); + FlagClear(0x1EA); + FlagClear(0x1EB); + FlagClear(0x1EC); + FlagClear(0x1ED); + FlagClear(0x1EE); + FlagClear(0x1EF); + FlagClear(0x1F0); + FlagClear(0x1F1); + FlagClear(0x1F2); + FlagClear(0x1F3); } void sub_809D570(void) @@ -145,7 +145,7 @@ void sub_809D570(void) void DisableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0); - FlagReset(SYS_RESET_RTC_ENABLE); + FlagClear(SYS_RESET_RTC_ENABLE); } void EnableResetRTC(void) @@ -214,7 +214,7 @@ u8 FlagSet(u16 id) return 0; } -u8 FlagReset(u16 id) +u8 FlagClear(u16 id) { u8 *ptr = GetFlagPointer(id); if (ptr) diff --git a/src/field_map_obj.c b/src/field_map_obj.c index e80e402c87..e822fc1ca4 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3,7 +3,7 @@ #include "global.h" #include "malloc.h" #include "sprite.h" -#include "rom4.h" +#include "overworld.h" #include "rng.h" #include "event_scripts.h" #include "berry.h" @@ -2386,10 +2386,10 @@ bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite { if (!(sprite->data7 & 0x0004) && sprite->animNum == 4) { - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE); sprite->animNum = berryStage; } @@ -2425,10 +2425,10 @@ bool8 do_berry_tree_growth_sparkle_2 (struct MapObject *mapObject, struct Sprite sprite->data1 = 3; sprite->data2 = 0; sprite->data7 |= 0x0002; - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE); return TRUE; } @@ -3425,7 +3425,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -3446,7 +3446,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -4693,7 +4693,7 @@ bool8 sub_80954CC(struct MapObject *mapObject, struct Sprite *sprite) bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); sprite->data2 = 1; return TRUE; @@ -4701,7 +4701,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2); sprite->data2 = 1; return TRUE; @@ -4709,7 +4709,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_HEART_ICON); sprite->data2 = 1; return TRUE; diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 9c35a33daa..54c1d81449 100755 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -13,10 +13,10 @@ #define SECONDS(value) ((signed) (60.0 * value + 0.5)) extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h -extern void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -extern bool8 sub_80D3340(u8, u8, u8); +extern void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +extern bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); extern bool32 CountSSTidalStep(u16); -extern bool8 exec_movement(u8, u8, u8, u8 *); +extern bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *); extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); extern void sp13E_warp_to_last_warp(void); extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); @@ -264,7 +264,7 @@ bool8 sub_80FB59C(void) } else { - warp1_set(mapGroup, mapNum, -1, x, y); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y); return TRUE; } } @@ -287,7 +287,7 @@ void Task_HandlePorthole(u8 taskId) case IDLE_CHECK: // idle and move. if (gMain.newKeys & A_BUTTON) data[1] = 1; - if (!sub_80D3340(0xFF, location->mapNum, location->mapGroup)) + if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup)) return; if (CountSSTidalStep(1) == TRUE) { @@ -308,18 +308,18 @@ void Task_HandlePorthole(u8 taskId) // run this once. if (*var == 2) // which direction? { - exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB); + ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB); data[0] = IDLE_CHECK; // run case 1. } else { - exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD); + ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD); data[0] = IDLE_CHECK; // run case 1. } break; case EXIT_PORTHOLE: // exit porthole. - FlagReset(0x4001); - FlagReset(0x4000); + FlagClear(0x4001); + FlagClear(0x4000); copy_saved_warp2_bank_and_enter_x_to_warp1(0); sp13E_warp_to_last_warp(); DestroyTask(taskId); diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index 9f38824f91..3b7ae49f2e 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -4,7 +4,7 @@ #include "global.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "rom6.h" #include "event_data.h" #include "script.h" diff --git a/src/money.c b/src/money.c index 65a45b158a..98f25a42aa 100644 --- a/src/money.c +++ b/src/money.c @@ -110,7 +110,7 @@ void AddMoney(u32* moneyPtr, u32 toAdd) SetMoney(moneyPtr, toSet); } -void SubtractMoney(u32* moneyPtr, u32 toSub) +void RemoveMoney(u32* moneyPtr, u32 toSub) { u32 toSet = GetMoney(moneyPtr); @@ -130,7 +130,7 @@ bool8 IsEnoughForCostInVar0x8005(void) void SubtractMoneyFromVar0x8005(void) { - SubtractMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005); + RemoveMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005); } void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed) diff --git a/src/new_game.c b/src/new_game.c index 5a482c593f..53219ae971 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -28,7 +28,7 @@ extern u8 gUnknown_030060B0; // TODO: replace those declarations with file headers extern u16 GetGeneratedTrainerIdLower(void); extern void ClearContestWinnerPicsInContestHall(void); -extern void warp1_set(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos); +extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos); extern void warp_in(void); extern void sub_80BB358(void); extern void ResetBagScrollPositions(void); @@ -131,7 +131,7 @@ void sub_8084400(void) void WarpToTruck(void) { - warp1_set(25, 40, -1, -1, -1); // inside of truck + Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck warp_in(); } diff --git a/src/palette.c b/src/palette.c index d60efdbc52..d4bb593da8 100644 --- a/src/palette.c +++ b/src/palette.c @@ -53,13 +53,13 @@ static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); static void sub_80A2D54(u8 taskId); -EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0}; -EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0}; +EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; +EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 gFiller_2037FE0 = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; -EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0}; +EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { .uid = 0xFFFF, diff --git a/src/pokemon_2.c b/src/pokemon_2.c index ee54f0e4da..27441f9521 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1089,7 +1089,7 @@ u8 SendMonToPC(struct Pokemon* mon) gSpecialVar_0x8012 = boxNo; gSpecialVar_0x8013 = boxPos; if (get_unknown_box_id() != boxNo) - FlagReset(SYS_STORAGE_UNKNOWN_FLAG); + FlagClear(SYS_STORAGE_UNKNOWN_FLAG); VarSet(VAR_STORAGE_UNKNOWN, boxNo); return MON_GIVEN_TO_PC; } diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c index b786ff9f85..d4dbc5f42b 100644 --- a/src/reset_save_heap.c +++ b/src/reset_save_heap.c @@ -5,7 +5,7 @@ #include "load_save.h" #include "save.h" #include "new_game.h" -#include "rom4.h" +#include "overworld.h" #include "malloc.h" void sub_81700F8(void) diff --git a/src/safari_zone.c b/src/safari_zone.c index 3e25468bf7..2125b092d0 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -60,7 +60,7 @@ void SetSafariZoneFlag(void) void ResetSafariZoneFlag(void) { - FlagReset(SYS_SAFARI_MODE); + FlagClear(SYS_SAFARI_MODE); } void EnterSafariMode(void) diff --git a/src/scrcmd.c b/src/scrcmd.c index b56a53cafb..f2c11e4b0a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1,15 +1,2439 @@ - -// Includes #include "global.h" +#include "battle_frontier_2.h" +#include "battle_setup.h" +#include "berry.h" +#include "clock.h" +#include "coins.h" +#include "contest_link_80F57C4.h" +#include "contest_painting.h" +#include "data2.h" +#include "decoration.h" +#include "decoration_inventory.h" +#include "event_data.h" +#include "field_door.h" +#include "field_effect.h" +#include "field_fadetransition.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "field_message_box.h" +#include "field_player_avatar.h" +#include "field_screen_effect.h" +#include "field_specials.h" +#include "field_tasks.h" +#include "field_weather.h" +#include "fieldmap.h" +#include "item.h" +#include "lilycove_lady.h" +#include "main.h" +#include "map_obj_lock.h" +#include "money.h" +#include "mystery_event_script.h" +#include "new_menu_helpers.h" +#include "palette.h" +#include "party_menu.h" +#include "pokemon_3.h" +#include "pokemon_storage_system.h" +#include "rng.h" +#include "overworld.h" +#include "rtc.h" +#include "script.h" +#include "script_menu.h" +#include "script_movement.h" +#include "script_pokemon_80F8.h" +#include "script_pokemon_81B9.h" +#include "shop.h" +#include "slot_machine.h" +#include "sound.h" +#include "string_util.h" +#include "text.h" +#include "trainer_see.h" +#include "tv.h" +#include "window.h" -// Static type declarations +typedef u16 (*SpecialFunc)(void); +typedef void (*NativeFunc)(void); -// Static RAM declarations +extern u32 gUnknown_020375C0; + +static EWRAM_DATA u32 gUnknown_020375C4 = 0; +static EWRAM_DATA u16 sPauseCounter = 0; +static EWRAM_DATA u16 sMovingNpcId = 0; +static EWRAM_DATA u16 sMovingNpcMapBank = 0; +static EWRAM_DATA u16 sMovingNpcMapId = 0; +static EWRAM_DATA u16 sFieldEffectScriptId = 0; + +extern u16 gSpecialVar_0x8000; +extern u16 gSpecialVar_0x8001; +extern u16 gSpecialVar_0x8002; +extern u16 gSpecialVar_0x8004; + +extern u16 gScriptResult; + +extern u16 gScriptContestCategory; IWRAM_DATA u8 gUnknown_03000F30; -// Static ROM declarations +extern SpecialFunc gSpecials[]; +extern u8 *gStdScripts[]; +extern u8 *gStdScripts_End[]; -// .rodata +void sub_809BDB4(void); -// .text +// This is defined in here so the optimizer can't see its value when compiling +// script.c. +void * const gNullScriptPtr = NULL; + +static const u8 sScriptConditionTable[6][3] = +{ +// < = > + 1, 0, 0, // < + 0, 1, 0, // = + 0, 0, 1, // > + 1, 1, 0, // <= + 0, 1, 1, // >= + 1, 0, 1, // != +}; + +static u8 * const sScriptStringVars[] = +{ + gStringVar1, + gStringVar2, + gStringVar3, +}; + +bool8 ScrCmd_nop(struct ScriptContext *ctx) +{ + return FALSE; +} + +bool8 ScrCmd_nop1(struct ScriptContext *ctx) +{ + return FALSE; +} + +bool8 ScrCmd_end(struct ScriptContext *ctx) +{ + StopScript(ctx); + return FALSE; +} + +bool8 ScrCmd_gotonative(struct ScriptContext *ctx) +{ + bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx); + + SetupNativeScript(ctx, addr); + return TRUE; +} + +bool8 ScrCmd_special(struct ScriptContext *ctx) +{ + u16 index = ScriptReadHalfword(ctx); + + gSpecials[index](); + return FALSE; +} + +bool8 ScrCmd_specialvar(struct ScriptContext *ctx) +{ + u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + + *var = gSpecials[ScriptReadHalfword(ctx)](); + return FALSE; +} + +bool8 ScrCmd_callnative(struct ScriptContext *ctx) +{ + NativeFunc func = (NativeFunc)ScriptReadWord(ctx); + + func(); + return FALSE; +} + +bool8 ScrCmd_waitstate(struct ScriptContext *ctx) +{ + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_goto(struct ScriptContext *ctx) +{ + u8 *ptr = (u8 *)ScriptReadWord(ctx); + + ScriptJump(ctx, ptr); + return FALSE; +} + +bool8 ScrCmd_return(struct ScriptContext *ctx) +{ + ScriptReturn(ctx); + return FALSE; +} + +bool8 ScrCmd_call(struct ScriptContext *ctx) +{ + u8 *ptr = (u8 *)ScriptReadWord(ctx); + + ScriptCall(ctx, ptr); + return FALSE; +} + +bool8 ScrCmd_goto_if(struct ScriptContext *ctx) +{ + u8 condition = ScriptReadByte(ctx); + u8 *ptr = (u8 *)ScriptReadWord(ctx); + + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptJump(ctx, ptr); + return FALSE; +} + +bool8 ScrCmd_call_if(struct ScriptContext *ctx) +{ + u8 condition = ScriptReadByte(ctx); + u8 *ptr = (u8 *)ScriptReadWord(ctx); + + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptCall(ctx, ptr); + return FALSE; +} + +bool8 ScrCmd_setvaddress(struct ScriptContext *ctx) +{ + u32 addr1 = (u32)ctx->scriptPtr - 1; + u32 addr2 = ScriptReadWord(ctx); + + gUnknown_020375C4 = addr2 - addr1; + return FALSE; +} + +bool8 ScrCmd_vgoto(struct ScriptContext *ctx) +{ + u32 addr = ScriptReadWord(ctx); + + ScriptJump(ctx, (u8 *)(addr - gUnknown_020375C4)); + return FALSE; +} + +bool8 ScrCmd_vcall(struct ScriptContext *ctx) +{ + u32 addr = ScriptReadWord(ctx); + + ScriptCall(ctx, (u8 *)(addr - gUnknown_020375C4)); + return FALSE; +} + +bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) +{ + u8 condition = ScriptReadByte(ctx); + u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); + + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptJump(ctx, ptr); + return FALSE; +} + +bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) +{ + u8 condition = ScriptReadByte(ctx); + u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); + + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptCall(ctx, ptr); + return FALSE; +} + +bool8 ScrCmd_gotostd(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + u8 **ptr = &gStdScripts[index]; + + if (ptr < gStdScripts_End) + ScriptJump(ctx, *ptr); + return FALSE; +} + +bool8 ScrCmd_callstd(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + u8 **ptr = &gStdScripts[index]; + + if (ptr < gStdScripts_End) + ScriptCall(ctx, *ptr); + return FALSE; +} + +bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) +{ + u8 condition = ScriptReadByte(ctx); + u8 index = ScriptReadByte(ctx); + + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + { + u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) + ScriptJump(ctx, *ptr); + } + return FALSE; +} + +bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) +{ + u8 condition = ScriptReadByte(ctx); + u8 index = ScriptReadByte(ctx); + + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + { + u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) + ScriptCall(ctx, *ptr); + } + return FALSE; +} + +bool8 ScrCmd_gotoram(struct ScriptContext *ctx) +{ + ScriptJump(ctx, (u8 *)gUnknown_020375C0); + return FALSE; +} + +bool8 ScrCmd_killscript(struct ScriptContext *ctx) +{ + ClearRamScript(); + StopScript(ctx); + return TRUE; +} + +bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + + SetMysteryEventScriptStatus(value); + return FALSE; +} + +bool8 ScrCmd_loadword(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + + ctx->data[index] = ScriptReadWord(ctx); + return FALSE; +} + +bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + + ctx->data[index] = *(u8 *)ScriptReadWord(ctx); + return FALSE; +} + +bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + + *(u8 *)ScriptReadWord(ctx) = value; + return FALSE; +} + +bool8 ScrCmd_loadbyte(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + + ctx->data[index] = ScriptReadByte(ctx); + return FALSE; +} + +bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + + *(u8 *)ScriptReadWord(ctx) = ctx->data[index]; + return FALSE; +} + +bool8 ScrCmd_copylocal(struct ScriptContext *ctx) +{ + u8 destIndex = ScriptReadByte(ctx); + u8 srcIndex = ScriptReadByte(ctx); + + ctx->data[destIndex] = ctx->data[srcIndex]; + return FALSE; +} + +bool8 ScrCmd_copybyte(struct ScriptContext *ctx) +{ + u8 *ptr = (u8 *)ScriptReadWord(ctx); + *ptr = *(u8 *)ScriptReadWord(ctx); + return FALSE; +} + +bool8 ScrCmd_setvar(struct ScriptContext *ctx) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr = ScriptReadHalfword(ctx); + return FALSE; +} + +bool8 ScrCmd_copyvar(struct ScriptContext *ctx) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr = *GetVarPointer(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_setorcopyvar(struct ScriptContext *ctx) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr = VarGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +u8 compare_012(u16 a1, u16 a2) +{ + if (a1 < a2) + return 0; + if (a1 == a2) + return 1; + return 2; +} + +// comparelocaltolocal +bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) +{ + u8 value1 = ctx->data[ScriptReadByte(ctx)]; + u8 value2 = ctx->data[ScriptReadByte(ctx)]; + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +// comparelocaltoimm +bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) +{ + u8 value1 = ctx->data[ScriptReadByte(ctx)]; + u8 value2 = ScriptReadByte(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) +{ + u8 value1 = ctx->data[ScriptReadByte(ctx)]; + u8 value2 = *(u8 *)ScriptReadWord(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) +{ + u8 value1 = *(u8 *)ScriptReadWord(ctx); + u8 value2 = ctx->data[ScriptReadByte(ctx)]; + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) +{ + u8 value1 = *(u8 *)ScriptReadWord(ctx); + u8 value2 = ScriptReadByte(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) +{ + u8 value1 = *(u8 *)ScriptReadWord(ctx); + u8 value2 = *(u8 *)ScriptReadWord(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) +{ + u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); + u16 value2 = ScriptReadHalfword(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) +{ + u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); + u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); + + ctx->comparisonResult = compare_012(*ptr1, *ptr2); + return FALSE; +} + +bool8 ScrCmd_addvar(struct ScriptContext *ctx) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr += ScriptReadHalfword(ctx); + return FALSE; +} + +bool8 ScrCmd_subvar(struct ScriptContext *ctx) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr -= VarGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_random(struct ScriptContext *ctx) +{ + u16 max = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = Random() % max; + return FALSE; +} + +bool8 ScrCmd_additem(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = AddBagItem(itemId, (u8)quantity); + return FALSE; +} + +bool8 ScrCmd_removeitem(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = RemoveBagItem(itemId, (u8)quantity); + return FALSE; +} + +bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); + return FALSE; +} + +bool8 ScrCmd_checkitem(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = CheckBagHasItem(itemId, (u8)quantity); + return FALSE; +} + +bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = GetPocketByItemId(itemId); + return FALSE; +} + +bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = AddPCItem(itemId, quantity); + return FALSE; +} + +bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = CheckPCHasItem(itemId, quantity); + return FALSE; +} + +bool8 ScrCmd_adddecor(struct ScriptContext *ctx) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = DecorationAdd(decorId); + return FALSE; +} + +bool8 ScrCmd_removedecor(struct ScriptContext *ctx) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = DecorationRemove(decorId); + return FALSE; +} + +bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = DecorationCheckSpace(decorId); + return FALSE; +} + +bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = CheckHasDecoration(decorId); + return FALSE; +} + +bool8 ScrCmd_setflag(struct ScriptContext *ctx) +{ + FlagSet(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_clearflag(struct ScriptContext *ctx) +{ + FlagClear(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_checkflag(struct ScriptContext *ctx) +{ + ctx->comparisonResult = FlagGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) +{ + IncrementGameStat(ScriptReadByte(ctx)); + return FALSE; +} + +bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) +{ + sub_80B009C(ScriptReadByte(ctx)); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) +{ + u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetFlashLevel(flashLevel); + return FALSE; +} + +static bool8 IsPaletteNotActive(void) +{ + if (!gPaletteFade.active) + return TRUE; + else + return FALSE; +} + +bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) +{ + fade_screen(ScriptReadByte(ctx), 0); + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} + +bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) +{ + u8 duration = ScriptReadByte(ctx); + u8 delay = ScriptReadByte(ctx); + + fade_screen(duration, delay); + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} + +int ScrCmd_cmdDC(struct ScriptContext *ctx) +{ + u8 duration = ScriptReadByte(ctx); + + switch (duration) + { + case 1: + default: + CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE); + fade_screen(duration, 0); + break; + case 0: + case 2: + CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_DECOMP_BUFFER_SIZE); + fade_screen(duration, 0); + break; + } + + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} + +static bool8 RunPauseTimer(void) +{ + sPauseCounter--; + + if (sPauseCounter == 0) + return TRUE; + else + return FALSE; +} + +bool8 ScrCmd_delay(struct ScriptContext *ctx) +{ + sPauseCounter = ScriptReadHalfword(ctx); + SetupNativeScript(ctx, RunPauseTimer); + return TRUE; +} + +bool8 ScrCmd_initclock(struct ScriptContext *ctx) +{ + u8 hour = VarGet(ScriptReadHalfword(ctx)); + u8 minute = VarGet(ScriptReadHalfword(ctx)); + + RtcInitLocalTimeOffset(hour, minute); + return FALSE; +} + +bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) +{ + DoTimeBasedEvents(); + return FALSE; +} + +bool8 ScrCmd_gettime(struct ScriptContext *ctx) +{ + RtcCalcLocalTime(); + gSpecialVar_0x8000 = gLocalTime.hours; + gSpecialVar_0x8001 = gLocalTime.minutes; + gSpecialVar_0x8002 = gLocalTime.seconds; + return FALSE; +} + +bool8 ScrCmd_setweather(struct ScriptContext *ctx) +{ + u16 weather = VarGet(ScriptReadHalfword(ctx)); + + SetSav1Weather(weather); + return FALSE; +} + +bool8 ScrCmd_resetweather(struct ScriptContext *ctx) +{ + sub_80AEDBC(); + return FALSE; +} + +bool8 ScrCmd_doweather(struct ScriptContext *ctx) +{ + DoCurrentWeather(); + return FALSE; +} + +bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) +{ + ActivatePerStepCallback(ScriptReadByte(ctx)); + return FALSE; +} + +bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx) +{ + u16 value = VarGet(ScriptReadHalfword(ctx)); + + sub_8085524(value); + return FALSE; +} + +bool8 ScrCmd_warp(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_80AF734(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sp13E_warp_to_last_warp(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_80AF7D0(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_warphole(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u16 x; + u16 y; + + PlayerGetDestCoords(&x, &y); + if (mapGroup == 0xFF && mapNum == 0xFF) + sub_8084EBC(x - 7, y - 7); + else + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); + sp13F_fall_to_last_warp(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_80AF848(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_cmdD7(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_80AF87C(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_setwarp(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_8084E2C(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_8084E80(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_8084DD4(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) +{ + u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); + u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); + + *pX = gSaveBlock1Ptr->pos.x; + *pY = gSaveBlock1Ptr->pos.y; + return FALSE; +} + +bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) +{ + gScriptResult = CalculatePlayerPartyCount(); + return FALSE; +} + +bool8 ScrCmd_playse(struct ScriptContext *ctx) +{ + PlaySE(ScriptReadHalfword(ctx)); + return FALSE; +} + +static bool8 WaitForSoundEffectFinish(void) +{ + if (!IsSEPlaying()) + return TRUE; + else + return FALSE; +} + +bool8 ScrCmd_waitse(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, WaitForSoundEffectFinish); + return TRUE; +} + +bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) +{ + PlayFanfare(ScriptReadHalfword(ctx)); + return FALSE; +} + +static bool8 WaitForFanfareFinish(void) +{ + return IsFanfareTaskInactive(); +} + +bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, WaitForFanfareFinish); + return TRUE; +} + +bool8 ScrCmd_playbgm(struct ScriptContext *ctx) +{ + u16 songId = ScriptReadHalfword(ctx); + bool8 val = ScriptReadByte(ctx); + + if (val == TRUE) + Overworld_SetSavedMusic(songId); + PlayNewMapMusic(songId); + return FALSE; +} + +bool8 ScrCmd_savebgm(struct ScriptContext *ctx) +{ + Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx) +{ + Overworld_ChangeMusicToDefault(); + return FALSE; +} + +bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx) +{ + Overworld_ChangeMusicTo(ScriptReadHalfword(ctx)); + return FALSE; +} + +bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx) +{ + u8 speed = ScriptReadByte(ctx); + + if (speed != 0) + FadeOutBGMTemporarily(4 * speed); + else + FadeOutBGMTemporarily(4); + SetupNativeScript(ctx, IsBGMPausedOrStopped); + return TRUE; +} + +bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) +{ + u8 speed = ScriptReadByte(ctx); + + if (speed != 0) + FadeInBGM(4 * speed); + else + FadeInBGM(4); + return FALSE; +} + +bool8 ScrCmd_applymovement(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + void *movementScript = (void *)ScriptReadWord(ctx); + + ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); + sMovingNpcId = localId; + return FALSE; +} + +bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + void *movementScript = (void *)ScriptReadWord(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript); + sMovingNpcId = localId; + return FALSE; +} + +static bool8 WaitForMovementFinish(void) +{ + return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); +} + +bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + if (localId != 0) + sMovingNpcId = localId; + sMovingNpcMapBank = gSaveBlock1Ptr->location.mapGroup; + sMovingNpcMapId = gSaveBlock1Ptr->location.mapNum; + SetupNativeScript(ctx, WaitForMovementFinish); + return TRUE; +} + +bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapBank; + u8 mapId; + + if (localId != 0) + sMovingNpcId = localId; + mapBank = ScriptReadByte(ctx); + mapId = ScriptReadByte(ctx); + sMovingNpcMapBank = mapBank; + sMovingNpcMapId = mapId; + SetupNativeScript(ctx, WaitForMovementFinish); + return TRUE; +} + +bool8 ScrCmd_removeobject(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + return FALSE; +} + +bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) +{ + u16 objectId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup); + return FALSE; +} + +bool8 ScrCmd_addobject(struct ScriptContext *ctx) +{ + u16 objectId = VarGet(ScriptReadHalfword(ctx)); + + show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + return FALSE; +} + +bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) +{ + u16 objectId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + show_sprite(objectId, mapNum, mapGroup); + return FALSE; +} + +bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_808EBA8(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y); + return FALSE; +} + +bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetMapObjTemplateCoords(localId, x, y); + return FALSE; +} + +bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + sub_808F254(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + return FALSE; +} + +bool8 ScrCmd_showobject(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0); + return FALSE; +} + +bool8 ScrCmd_hideobject(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1); + return FALSE; +} + +bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 priority = ScriptReadByte(ctx); + + sub_808E78C(localId, mapNum, mapGroup, priority + 83); + return FALSE; +} + +bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + sub_808E7E4(localId, mapNum, mapGroup); + return FALSE; +} + +bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) +{ + if (gMapObjects[gSelectedMapObject].active) + { + FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], + player_get_direction_lower_nybble()); + } + return FALSE; +} + +bool8 ScrCmd_turnobject(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 direction = ScriptReadByte(ctx); + + FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction); + return FALSE; +} + +bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 movementType = ScriptReadByte(ctx); + + Overworld_SetMapObjTemplateMovementType(localId, movementType); + return FALSE; +} + +bool8 ScrCmd_createvobject(struct ScriptContext *ctx) +{ + u8 graphicsId = ScriptReadByte(ctx); + u8 v2 = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u32 y = VarGet(ScriptReadHalfword(ctx)); + u8 elevation = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sprite_new(graphicsId, v2, x, y, elevation, direction); + return FALSE; +} + +bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) +{ + u8 v1 = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sub_8097B78(v1, direction); + return FALSE; +} + +bool8 ScrCmd_lockall(struct ScriptContext *ctx) +{ + if (is_c1_link_related_active()) + { + return FALSE; + } + else + { + ScriptFreezeMapObjects(); + SetupNativeScript(ctx, sub_80983C4); + return TRUE; + } +} + +bool8 ScrCmd_lock(struct ScriptContext *ctx) +{ + if (is_c1_link_related_active()) + { + return FALSE; + } + else + { + if (gMapObjects[gSelectedMapObject].active) + { + LockSelectedMapObject(); + SetupNativeScript(ctx, sub_809847C); + } + else + { + ScriptFreezeMapObjects(); + SetupNativeScript(ctx, sub_80983C4); + } + return TRUE; + } +} + +bool8 ScrCmd_releaseall(struct ScriptContext *ctx) +{ + u8 objectId; + + HideFieldMessageBox(); + objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]); + sub_80D338C(); + UnfreezeMapObjects(); + return FALSE; +} + +bool8 ScrCmd_release(struct ScriptContext *ctx) +{ + u8 objectId; + + HideFieldMessageBox(); + if (gMapObjects[gSelectedMapObject].active) + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]); + objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]); + sub_80D338C(); + UnfreezeMapObjects(); + return FALSE; +} + +bool8 ScrCmd_message(struct ScriptContext *ctx) +{ + u8 *msg = (u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (u8 *)ctx->data[0]; + ShowFieldMessage(msg); + return FALSE; +} + +bool8 ScrCmd_cmdDF(struct ScriptContext *ctx) +{ + u8 *msg = (u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (u8 *)ctx->data[0]; + sub_8098238(msg); + return FALSE; +} + +bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) +{ + u8 *msg = (u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (u8 *)ctx->data[0]; + gTextFlags.flag_2 = TRUE; + gTextFlags.flag_3 = TRUE; + ShowFieldAutoScrollMessage(msg); + return FALSE; +} + +bool8 ScrCmd_cmdDB(struct ScriptContext *ctx) +{ + u8 *msg = (u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (u8 *)ctx->data[0]; + sub_81973A4(); + sub_81973C4(0, 1); + PrintTextOnWindow(0, 1, msg, 0, 1, 0, 0); + return FALSE; +} + +bool8 ScrCmd_waitmessage(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, IsFieldMessageBoxHidden); + return TRUE; +} + +bool8 ScrCmd_closemessage(struct ScriptContext *ctx) +{ + HideFieldMessageBox(); + return FALSE; +} + +static bool8 WaitForAorBPress(void) +{ + if (gMain.newKeys & A_BUTTON) + return TRUE; + if (gMain.newKeys & B_BUTTON) + return TRUE; + return FALSE; +} + +bool8 ScrCmd_waitbutton(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, WaitForAorBPress); + return TRUE; +} + +bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + + if (ScriptMenu_YesNo(left, top) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 ScrCmd_multichoice(struct ScriptContext *ctx) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 defaultChoice = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 ScrCmd_cmd72(struct ScriptContext *ctx) +{ + /*u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + MenuDrawTextWindow(left, top, right, bottom);*/ + return FALSE; +} + +bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 numColumns = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 ScrCmd_cmd73(struct ScriptContext *ctx) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + // MenuZeroFillWindowRect(left, top, right, bottom); + return FALSE; +} + +bool8 ScrCmd_cmd74(struct ScriptContext *ctx) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + }*/ + return FALSE; +} + +bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ScriptMenu_ShowPokemonPic(species, x, y); + return FALSE; +} + +bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) +{ + bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); + + if (func == NULL) + return FALSE; + SetupNativeScript(ctx, func); + return TRUE; +} + +bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) +{ + u8 v1 = ScriptReadByte(ctx); + + if (v1) + sub_812FDA8(v1); + ShowContestWinner(); + ScriptContext1_Stop(); + return TRUE; +} + +// Temporary, will come back to this later. +/*bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) +{ + u8 *ptr = (u8 *)ScriptReadWord(ctx); + u8 *localStringVar4; + u8 width; + u8 height; + u8 temp; + + StringExpandPlaceholders(gStringVar4, ptr); + + width = GetStringWidth(6, gStringVar4, -1) / 8; + + if (width > 0x1C) + width = 0x1C; + + height = 4; + localStringVar4 = gStringVar4; + temp = width + 2; + + for (; *localStringVar4 != 0xFF; localStringVar4++) + { + if (*localStringVar4 == 0xFE) + height += 4; + } + + if (height > 0x12) + height = 0x12; + + temp = 0x1E - temp; + + u8 v2 = ptr[0]; + u8 v3 = ptr[1]; + u8 v4 = ptr[2]; + u8 v5 = ptr[3]; + u8 v6 = ptr[4]; + u8 v7 = ptr[5]; + StringBraille(gStringVar4, ptr + 6); + MenuDrawTextWindow(v2, v3, v4, v5); + MenuPrint(gStringVar4, v6, v7); + return FALSE; +}*/ +__attribute__((naked)) +bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) +{ + asm("push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, #0x20\n\ + bl ScriptReadWord\n\ + add r1, r0, #0\n\ + ldr r4, =gStringVar4\n\ + add r1, #0x6\n\ + add r0, r4, #0\n\ + bl StringExpandPlaceholders\n\ + mov r2, #0x1\n\ + neg r2, r2\n\ + mov r0, #0x6\n\ + add r1, r4, #0\n\ + bl GetStringWidth\n\ + lsr r0, #3\n\ + lsl r0, #24\n\ + lsr r7, r0, #24\n\ + cmp r7, #0x1C\n\ + bls _0809AE9C\n\ + mov r7, #0x1C\n\ +_0809AE9C:\n\ + mov r5, #0x4\n\ + ldrb r0, [r4]\n\ + add r2, r7, #0x2\n\ + add r1, sp, #0x18\n\ + mov r8, r1\n\ + cmp r0, #0xFF\n\ + beq _0809AEC0\n\ + add r1, r4, #0\n\ +_0809AEAC:\n\ + ldrb r0, [r1]\n\ + add r1, #0x1\n\ + cmp r0, #0xFE\n\ + bne _0809AEBA\n\ + add r0, r5, #0x3\n\ + lsl r0, #24\n\ + lsr r5, r0, #24\n\ +_0809AEBA:\n\ + ldrb r0, [r1]\n\ + cmp r0, #0xFF\n\ + bne _0809AEAC\n\ +_0809AEC0:\n\ + cmp r5, #0x12\n\ + bls _0809AEC6\n\ + mov r5, #0x12\n\ +_0809AEC6:\n\ + lsl r0, r2, #24\n\ + lsr r0, #24\n\ + mov r2, #0x1E\n\ + sub r2, r0\n\ + lsr r0, r2, #31\n\ + add r2, r0\n\ + asr r2, #1\n\ + lsl r2, #24\n\ + add r0, r5, #0x2\n\ + lsl r0, #24\n\ + lsr r0, #24\n\ + mov r4, #0x14\n\ + sub r4, r0\n\ + lsr r0, r4, #31\n\ + add r4, r0\n\ + asr r4, #1\n\ + lsl r4, #24\n\ + lsr r6, r2, #24\n\ + mov r0, #0x80\n\ + lsl r0, #17\n\ + add r2, r0\n\ + lsr r2, #24\n\ + lsr r3, r4, #24\n\ + mov r1, #0x80\n\ + lsl r1, #18\n\ + add r4, r1\n\ + lsr r4, #24\n\ + sub r6, r2, r6\n\ + sub r6, #0x1\n\ + lsl r6, #3\n\ + add r6, #0x3\n\ + lsl r6, #24\n\ + lsr r6, #24\n\ + sub r4, r3\n\ + sub r4, #0x1\n\ + lsl r4, #27\n\ + lsr r4, #24\n\ + add r3, #0x1\n\ + lsl r3, #24\n\ + lsr r3, #24\n\ + str r7, [sp]\n\ + str r5, [sp, #0x4]\n\ + mov r0, #0xF\n\ + str r0, [sp, #0x8]\n\ + mov r0, #0x1\n\ + str r0, [sp, #0xC]\n\ + add r0, sp, #0x10\n\ + mov r1, #0\n\ + bl sub_8198A50\n\ + ldr r0, [sp, #0x10]\n\ + ldr r1, [sp, #0x14]\n\ + str r0, [sp, #0x18]\n\ + str r1, [sp, #0x1C]\n\ + ldr r5, =gUnknown_03000F30\n\ + mov r0, r8\n\ + bl AddWindow\n\ + strb r0, [r5]\n\ + ldrb r0, [r5]\n\ + mov r1, #0x85\n\ + lsl r1, #2\n\ + mov r2, #0xE0\n\ + bl sub_809882C\n\ + ldrb r0, [r5]\n\ + mov r1, #0\n\ + bl sub_81973FC\n\ + ldrb r0, [r5]\n\ + bl PutWindowTilemap\n\ + ldrb r0, [r5]\n\ + mov r1, #0x11\n\ + bl FillWindowPixelBuffer\n\ + ldrb r0, [r5]\n\ + ldr r2, =gStringVar4\n\ + str r4, [sp]\n\ + mov r1, #0xFF\n\ + str r1, [sp, #0x4]\n\ + mov r1, #0\n\ + str r1, [sp, #0x8]\n\ + mov r1, #0x6\n\ + add r3, r6, #0\n\ + bl PrintTextOnWindow\n\ + ldrb r0, [r5]\n\ + mov r1, #0x3\n\ + bl CopyWindowToVram\n\ + mov r0, #0\n\ + add sp, #0x20\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .pool"); +} + +bool8 ScrCmd_cmdDA(struct ScriptContext *ctx) +{ + sub_809BDB4(); + return FALSE; +} + +bool8 ScrCmd_vmessage(struct ScriptContext *ctx) +{ + u32 v1 = ScriptReadWord(ctx); + + ShowFieldMessage((u8 *)(v1 - gUnknown_020375C4)); + return FALSE; +} + +bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 species = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); + return FALSE; +} + +bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + + u8 *dest = sScriptStringVars[stringVarIndex]; + u8 partyIndex = GetLeadMonIndex(); + u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL); + StringCopy(dest, gSpeciesNames[species]); + return FALSE; +} + +bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); + StringGetEnd10(sScriptStringVars[stringVarIndex]); + return FALSE; +} + +bool8 ScrCmd_getitemname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + + CopyItemName(itemId, sScriptStringVars[stringVarIndex]); + return FALSE; +} + +bool8 ScrCmd_cmdE2(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ScriptReadHalfword(ctx)); + + CopyItemNameHandlePlural(itemId, sScriptStringVars[stringVarIndex], quantity); + return FALSE; +} + +bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 decorId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name); + return FALSE; +} + +bool8 ScrCmd_getmovename(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 moveId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]); + return FALSE; +} + +bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 v1 = VarGet(ScriptReadHalfword(ctx)); + u8 v2 = sub_80EF370(v1); + + ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2); + return FALSE; +} + +bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 index = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gUnknown_0858BAF0[index]); + return FALSE; +} + +bool8 ScrCmd_cmdE1(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 index = VarGet(ScriptReadHalfword(ctx)); + + sub_818E868(sScriptStringVars[stringVarIndex], index); + return FALSE; +} + +bool8 ScrCmd_getstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u8 *text = (u8 *)ScriptReadWord(ctx); + + StringCopy(sScriptStringVars[stringVarIndex], text); + return FALSE; +} + +bool8 ScrCmd_vloadword(struct ScriptContext *ctx) +{ + u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); + + StringExpandPlaceholders(gStringVar4, ptr); + return FALSE; +} + +bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u32 addr = ScriptReadWord(ctx); + + u8 *src = (u8 *)(addr - gUnknown_020375C4); + u8 *dest = sScriptStringVars[stringVarIndex]; + StringCopy(dest, src); + return FALSE; +} + +bool8 ScrCmd_cmdC6(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 boxId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], GetBoxNamePtr(boxId)); + return FALSE; +} + +bool8 ScrCmd_givepoke(struct ScriptContext *ctx) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 level = ScriptReadByte(ctx); + u16 item = VarGet(ScriptReadHalfword(ctx)); + u32 unkParam1 = ScriptReadWord(ctx); + u32 unkParam2 = ScriptReadWord(ctx); + u8 unkParam3 = ScriptReadByte(ctx); + + gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + return FALSE; +} + +bool8 ScrCmd_giveegg(struct ScriptContext *ctx) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = ScriptGiveEgg(species); + return FALSE; +} + +bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) +{ + u8 partyIndex = ScriptReadByte(ctx); + u8 slot = ScriptReadByte(ctx); + u16 move = ScriptReadHalfword(ctx); + + ScriptSetMonMoveSlot(partyIndex, move, slot); + return FALSE; +} + +bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) +{ + u8 i; + u16 moveId = ScriptReadHalfword(ctx); + + gScriptResult = 6; + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); + if (!species) + break; + // UB: GetMonData() arguments don't match function definition + if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE) + { + gScriptResult = i; + gSpecialVar_0x8004 = species; + break; + } + } + return FALSE; +} + +bool8 ScrCmd_givemoney(struct ScriptContext *ctx) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + AddMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +bool8 ScrCmd_takemoney(struct ScriptContext *ctx) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + RemoveMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + gScriptResult = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y); + return FALSE; +} + +bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) +{ + /*u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx);*/ + + HideMoneyBox(); + return FALSE; +} + +bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + ChangeAmountInMoneyBox(GetMoney(&gSaveBlock1Ptr->money)); + return FALSE; +} + +bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ShowCoinsWindow(GetCoins(), x, y); + return FALSE; +} + +bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + HideCoinsWindow(); + return FALSE; +} + +bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + PrintCoinsString(GetCoins()); + return FALSE; +} + +bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) +{ + ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); + return FALSE; +} + +bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) +{ + BattleSetup_StartTrainerBattle(); + return TRUE; +} + +bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) +{ + ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); + return FALSE; +} + +bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) +{ + ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); + return FALSE; +} + +bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); + return FALSE; +} + +bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + trainer_flag_set(index); + return FALSE; +} + +bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + trainer_flag_clear(index); + return FALSE; +} + +bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) +{ + u16 species = ScriptReadHalfword(ctx); + u8 level = ScriptReadByte(ctx); + u16 item = ScriptReadHalfword(ctx); + + CreateScriptedWildMon(species, level, item); + return FALSE; +} + +bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) +{ + BattleSetup_StartScriptedWildBattle(); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_pokemart(struct ScriptContext *ctx) +{ + void *ptr = (void *)ScriptReadWord(ctx); + + CreatePokemartMenu(ptr); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) +{ + void *ptr = (void *)ScriptReadWord(ctx); + + CreateDecorationShop1Menu(ptr); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) +{ + void *ptr = (void *)ScriptReadWord(ctx); + + CreateDecorationShop2Menu(ptr); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) +{ + u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx)); + + PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) +{ + u8 treeId = ScriptReadByte(ctx); + u8 berry = ScriptReadByte(ctx); + u8 growthStage = ScriptReadByte(ctx); + + if (berry == 0) + PlantBerryTree(treeId, 0, growthStage, FALSE); + else + PlantBerryTree(treeId, berry, growthStage, FALSE); + return FALSE; +} + +bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) +{ + u16 value = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = GetPriceReduction(value); + return FALSE; +} + +bool8 ScrCmd_choosecontestpkmn(struct ScriptContext *ctx) +{ + sub_81B9404(); + ScriptContext1_Stop(); + return TRUE; +} + + +bool8 ScrCmd_startcontest(struct ScriptContext *ctx) +{ + sub_80F840C(); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) +{ + sub_80F8484(); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) +{ + sub_80F84C4(gScriptContestCategory); + ScriptContext1_Stop(); + return TRUE; +} + +bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) +{ + u16 effectId = VarGet(ScriptReadHalfword(ctx)); + + sFieldEffectScriptId = effectId; + FieldEffectStart(sFieldEffectScriptId); + return FALSE; +} + +bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) +{ + u8 argNum = ScriptReadByte(ctx); + + gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +static bool8 WaitForFieldEffectFinish(void) +{ + if (!FieldEffectActiveListContains(sFieldEffectScriptId)) + return TRUE; + else + return FALSE; +} + +bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) +{ + sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); + SetupNativeScript(ctx, WaitForFieldEffectFinish); + return TRUE; +} + +bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) +{ + u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetHealLocationWarp(healLocationId); + return FALSE; +} + +bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) +{ + gScriptResult = gSaveBlock2Ptr->playerGender; + return FALSE; +} + +bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u16 mode = VarGet(ScriptReadHalfword(ctx)); + + PlayCry5(species, mode); + return FALSE; +} + +bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, IsCryFinished); + return TRUE; +} + +bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + u16 tileId = VarGet(ScriptReadHalfword(ctx)); + u16 v8 = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + if (!v8) + MapGridSetMetatileIdAt(x, y, tileId); + else + MapGridSetMetatileIdAt(x, y, tileId | 0xC00); + return FALSE; +} + +bool8 ScrCmd_opendoor(struct ScriptContext *ctx) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + PlaySE(GetDoorSoundEffect(x, y)); + FieldAnimateDoorOpen(x, y); + return FALSE; +} + +bool8 ScrCmd_closedoor(struct ScriptContext *ctx) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + FieldAnimateDoorClose(x, y); + return FALSE; +} + +static bool8 IsDoorAnimationStopped(void) +{ + if (!FieldIsDoorAnimationRunning()) + return TRUE; + else + return FALSE; +} + +bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, IsDoorAnimationStopped); + return TRUE; +} + +bool8 ScrCmd_setdooropen(struct ScriptContext *ctx) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + FieldSetDoorOpened(x, y); + return FALSE; +} + +bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + FieldSetDoorClosed(x, y); + return FALSE; +} + +bool8 ScrCmd_cmdB1(struct ScriptContext *ctx) +{ + u8 v3 = ScriptReadByte(ctx); + u16 v5 = VarGet(ScriptReadHalfword(ctx)); + u16 v7 = VarGet(ScriptReadHalfword(ctx)); + u16 v9 = VarGet(ScriptReadHalfword(ctx)); + + //ScriptAddElevatorMenuItem(v3, v5, v7, v9); + return FALSE; +} + +bool8 ScrCmd_cmdB2(struct ScriptContext *ctx) +{ + /*ScriptShowElevatorMenu(); + ScriptContext1_Stop(); + return TRUE;*/ + return FALSE; +} + +bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr = GetCoins(); + return FALSE; +} + +bool8 ScrCmd_givecoins(struct ScriptContext *ctx) +{ + u16 coins = VarGet(ScriptReadHalfword(ctx)); + + if (GiveCoins(coins) == TRUE) + gScriptResult = 0; + else + gScriptResult = 1; + return FALSE; +} + +bool8 ScrCmd_takecoins(struct ScriptContext *ctx) +{ + u16 coins = VarGet(ScriptReadHalfword(ctx)); + + if (TakeCoins(coins) == TRUE) + gScriptResult = 0; + else + gScriptResult = 1; + return FALSE; +} + +bool8 ScrCmd_cmdD3(struct ScriptContext *ctx) +{ + u16 v1 = VarGet(ScriptReadHalfword(ctx)); + + sMovingNpcId = sub_81A89A0(v1); + return FALSE; +} + +bool8 ScrCmd_cmdD4(struct ScriptContext *ctx) +{ + sub_81A8AF8(); + return FALSE; +} + +bool8 ScrCmd_cmdD5(struct ScriptContext *ctx) +{ + u16 v1 = VarGet(ScriptReadHalfword(ctx)); + + sub_81A8934(v1); + return FALSE; +} + +bool8 ScrCmd_cmdD6(struct ScriptContext *ctx) +{ + sub_81A895C(); + return FALSE; +} + +bool8 ScrCmd_cmdD8(struct ScriptContext *ctx) +{ + gSelectedMapObject = sub_80B47BC(); + return FALSE; +} + +bool8 ScrCmd_cmdD9(struct ScriptContext *ctx) +{ + if (is_c1_link_related_active()) + { + return FALSE; + } + else + { + if (gMapObjects[gSelectedMapObject].active) + { + sub_8098630(); + SetupNativeScript(ctx, sub_8098734); + } + return TRUE; + } +} + +bool8 ScrCmd_cmdCD(struct ScriptContext *ctx) +{ + bool8 obedient = TRUE; + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + SetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, &obedient); + return FALSE; +} + +bool8 ScrCmd_cmdCE(struct ScriptContext *ctx) +{ + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL); + return FALSE; +} + +bool8 ScrCmd_cmdCF(struct ScriptContext *ctx) +{ + u8* v1 = sub_8099244(); + + if (v1) + { + ((u8*)gUnknown_020375C0) = ctx->scriptPtr; + ScriptJump(ctx, v1); + } + return FALSE; +} + +bool8 ScrCmd_cmdD1(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_808D074(player_get_direction_lower_nybble()); + sub_80B0244(); + player_avatar_init_params_reset(); + return TRUE; +} + +bool8 ScrCmd_cmdD2(struct ScriptContext *ctx) +{ + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + u8 location = ScriptReadByte(ctx); + + if (partyIndex < PARTY_SIZE) + SetMonData(&gPlayerParty[partyIndex], MON_DATA_MET_LOCATION, &location); + return FALSE; +} + +void sub_809BDB4(void) +{ + sub_819746C(gUnknown_03000F30, 1); + RemoveWindow(gUnknown_03000F30); +} + +bool8 ScrCmd_cmdDD(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 trainerClassId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], GetTrainerClassNameFromId(trainerClassId)); + return FALSE; +} + +bool8 ScrCmd_cmdDE(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 trainerClassId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], GetTrainerNameFromId(trainerClassId)); + return FALSE; +} + +void sub_809BE48(u16 npcId) +{ + sMovingNpcId = npcId; +} + +bool8 ScrCmd_cmdE0(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_80AF79C(); + player_avatar_init_params_reset(); + return TRUE; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 944a51b622..2c021866e5 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -680,24 +680,9 @@ gUnknown_020375BC: @ 20375BC gUnknown_020375C0: @ 20375C0 .space 0x4 -gUnknown_020375C4: @ 20375C4 - .space 0x4 - -gUnknown_020375C8: @ 20375C8 - .space 0x2 - -gUnknown_020375CA: @ 20375CA - .space 0x2 - -gUnknown_020375CC: @ 20375CC - .space 0x2 - -gUnknown_020375CE: @ 20375CE - .space 0x2 - -gUnknown_020375D0: @ 20375D0 - .space 0x4 + .include "src/scrcmd.o" + .align 2 gUnknown_020375D4: @ 20375D4 .space 0x2 @@ -878,7 +863,7 @@ gUnknown_02038C00: @ 2038C00 gUnknown_02038C04: @ 2038C04 .space 0x4 -gFieldEffectSpawnParams: @ 2038C08 +gFieldEffectArguments: @ 2038C08 .space 0x20 gUnknown_02038C28: @ 2038C28 @@ -1070,7 +1055,7 @@ gUnknown_02039F2A: @ 2039F2A gUnknown_02039F2B: @ 2039F2B .space 0x1 -gUnknown_02039F2C: @ 2039F2C +gScriptContestCategory: @ 2039F2C .space 0x2 gUnknown_02039F2E: @ 2039F2E From 4178e32ec9b2887b25d353ca51afc3f8a19b3370 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 12 Oct 2017 17:49:24 +0200 Subject: [PATCH 128/182] ABE is matching --- src/battle_util.c | 3274 ++------------------------------------------- 1 file changed, 107 insertions(+), 3167 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index c6762dd993..a5ecc4b064 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -132,6 +132,8 @@ extern const u8 BattleScript_MoveHPDrain[]; extern const u8 BattleScript_MoveHPDrain_PPLoss[]; extern const u8 BattleScript_FlashFireBoost[]; extern const u8 BattleScript_FlashFireBoost_PPLoss[]; +extern const u8 gUnknown_082DB592[]; +extern const u8 gUnknown_082DB591[]; extern const u8 BattleScript_ColorChangeActivates[]; extern const u8 BattleScript_RoughSkinActivates[]; extern const u8 BattleScript_ApplySecondaryEffect[]; @@ -1859,13 +1861,12 @@ u8 CastformDataTypeChange(u8 bank) return formChange; } -// We meet again, ABE. -#ifdef NONMATCHING +// The largest function in the game, but even it could not save itself from decompiling. u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { u8 effect = 0; - struct Pokemon* pokeAtk; - struct Pokemon* pokeDef; + struct Pokemon *pokeAtk; + struct Pokemon *pokeDef; u16 speciesAtk; u16 speciesDef; u32 pidAtk; @@ -1893,12 +1894,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning? { - int i; // r4 + u8 moveType; + s32 i; u16 move; - // Hmm... - #define moveType moveArg - //u16 moveType; u8 side; + u8 target1; if (special) gLastUsedAbility = special; @@ -1918,44 +1918,45 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) switch (caseID) { case ABILITYEFFECT_ON_SWITCHIN: // 0 - //_08042A18 if (gBankAttacker >= gNoOfAllBanks) gBankAttacker = bank; switch (gLastUsedAbility) { case ABILITYEFFECT_SWITCH_IN_WEATHER: - //_08042A86 - switch (weather_get_current()) + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) { - case 3: - case 5: - case 13: - if (!(gBattleWeather & WEATHER_RAIN_ANY)) + switch (weather_get_current()) { - gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); - gBattleScripting.animArg1 = 0xA; - gBattleScripting.bank = bank; - effect++; + case 3: + case 5: + case 13: + if (!(gBattleWeather & WEATHER_RAIN_ANY)) + { + gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); + gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES; + gBattleScripting.bank = bank; + effect++; + } + break; + case 8: + if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; + gBattleScripting.bank = bank; + effect++; + } + break; + case 12: + if (!(gBattleWeather & WEATHER_SUN_ANY)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES; + gBattleScripting.bank = bank; + effect++; + } + break; } - break; - case 8: - if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) - { - gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); - gBattleScripting.animArg1 = 0xC; - gBattleScripting.bank = bank; - effect++; - } - break; - case 12: - if (!(gBattleWeather & WEATHER_SUN_ANY)) - { - gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); - gBattleScripting.animArg1 = 0xB; - gBattleScripting.bank = bank; - effect++; - } - break; } if (effect) { @@ -1964,7 +1965,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_DRIZZLE: - //_08042B78 if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) { gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); @@ -1974,7 +1974,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_SAND_STREAM: - //_08042BA8 if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) { gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); @@ -1984,7 +1983,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_DROUGHT: - //_08042BD8 if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) { gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); @@ -1994,7 +1992,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_INTIMIDATE: - //_08042C08 if (!(gSpecialStatuses[bank].intimidatedPoke)) { gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES; @@ -2002,13 +1999,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_FORECAST: - //_08042C3C effect = CastformDataTypeChange(bank); if (effect != 0) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); gBattleScripting.bank = bank; - gBattleStruct->formToChangeInto = effect - 1; + *(&gBattleStruct->formToChangeInto) = effect - 1; } break; case ABILITY_TRACE: @@ -2021,18 +2017,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) case ABILITY_CLOUD_NINE: case ABILITY_AIR_LOCK: { - u8 i; - - for (i = 0; i < gNoOfAllBanks; i++) + // that's a weird choice for a variable, why not use i or bank? + for (target1 = 0; target1 < gNoOfAllBanks; target1++) { - // TODO: i should be in r6 here - //asm("":::"r4","r5"); - effect = CastformDataTypeChange(i); + effect = CastformDataTypeChange(target1); if (effect != 0) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); - gBattleScripting.bank = i; - gBattleStruct->formToChangeInto = effect - 1; + gBattleScripting.bank = target1; + *(&gBattleStruct->formToChangeInto) = effect - 1; break; } } @@ -2041,18 +2034,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_ENDTURN: // 1 - //_08042CDC if (gBattleMons[bank].hp != 0) { gBankAttacker = bank; switch (gLastUsedAbility) { case ABILITY_RAIN_DISH: - //_08042D22 if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMons[bank].maxHP > gBattleMons[bank].hp) { - gLastUsedAbility = ABILITY_RAIN_DISH; //why + gLastUsedAbility = ABILITY_RAIN_DISH; // why BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); gBattleMoveDamage = gBattleMons[bank].maxHP / 16; if (gBattleMoveDamage == 0) @@ -2062,7 +2053,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_SHED_SKIN: - //_08042DA0 if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) { if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) @@ -2076,7 +2066,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].status1 & STATUS_FREEZE) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); gBattleMons[bank].status1 = 0; - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nighmare glitch + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch gBattleScripting.bank = gActiveBank = bank; BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates); EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); @@ -2085,7 +2075,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_SPEED_BOOST: - //_08042E84 if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2) { gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; @@ -2103,7 +2092,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_MOVES_BLOCK: // 2 - //_08042EF8 if (gLastUsedAbility == ABILITY_SOUNDPROOF) { for (i = 0; sSoundMovesTable[i] != 0xFFFF; i++) @@ -2132,6 +2120,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; } break; @@ -2142,11 +2131,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; } break; case ABILITY_FLASH_FIRE: - //_0804305C if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) { if (!(gBattleResources->flags->flags[bank] & UNKNOWN_FLAG_FLASH_FIRE)) @@ -2156,6 +2145,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattlescriptCurrInstr = BattleScript_FlashFireBoost; else gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + gBattleResources->flags->flags[bank] |= UNKNOWN_FLAG_FLASH_FIRE; effect = 2; } @@ -2166,6 +2156,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattlescriptCurrInstr = BattleScript_FlashFireBoost; else gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + effect = 2; } } @@ -2176,9 +2167,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) { if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + gBattlescriptCurrInstr = gUnknown_082DB592; else - gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + gBattlescriptCurrInstr = gUnknown_082DB591; } else { @@ -2191,11 +2182,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_CONTACT: // 4 - //_080431AC switch (gLastUsedAbility) { case ABILITY_COLOR_CHANGE: - //_08043288 if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move != MOVE_STRUGGLE && gBattleMoves[move].power != 0 @@ -2206,17 +2195,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleMons[bank].type1 = moveType; gBattleMons[bank].type2 = moveType; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 3; - gBattleTextBuff1[2] = moveType; - gBattleTextBuff1[3] = 0xFF; + PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; effect++; } break; case ABILITY_ROUGH_SKIN: - //_08043350 if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && gBattleMons[gBankAttacker].hp != 0 && !gProtectStructs[gBankAttacker].confusionSelfDmg @@ -2232,7 +2217,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_EFFECT_SPORE: - //_08043410 if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && gBattleMons[gBankAttacker].hp != 0 && !gProtectStructs[gBankAttacker].confusionSelfDmg @@ -2244,9 +2228,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); - if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) - gBattleCommunication[MOVE_EFFECT_BYTE] += 2; - gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; + + if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; // 5 MOVE_EFFECT_PARALYSIS + + gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; @@ -2261,7 +2247,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && (Random() % 3) == 0) { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; @@ -2276,7 +2262,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && (Random() % 3) == 0) { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; @@ -2291,7 +2277,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) && (Random() % 3) == 0) { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; @@ -2299,7 +2285,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_CUTE_CHARM: - //_0804379C if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && gBattleMons[gBankAttacker].hp != 0 && !gProtectStructs[gBankAttacker].confusionSelfDmg @@ -2310,10 +2295,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF - && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != MON_GENDERLESS + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != MON_GENDERLESS) { - gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); + gBattleMons[gBankAttacker].status2 |= STATUS2_INFATUATED_WITH(gBankTarget); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; effect++; @@ -2323,28 +2308,26 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) break; case ABILITYEFFECT_IMMUNITY: // 5 { - #define i bank - for (i = 0; i < gNoOfAllBanks; i++) + for (bank = 0; bank < gNoOfAllBanks; bank++) { - switch (gBattleMons[i].ability) + switch (gBattleMons[bank].ability) { case ABILITY_IMMUNITY: - if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER)) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); effect = 1; } break; case ABILITY_OWN_TEMPO: - //_08043A7C - if (gBattleMons[i].status2 & STATUS2_CONFUSION) + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) { StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); effect = 2; } break; case ABILITY_LIMBER: - if (gBattleMons[i].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); effect = 1; @@ -2352,30 +2335,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) break; case ABILITY_INSOMNIA: case ABILITY_VITAL_SPIRIT: - if (gBattleMons[i].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS_SLEEP) { - gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); effect = 1; } break; case ABILITY_WATER_VEIL: - if (gBattleMons[i].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); effect = 1; } break; case ABILITY_MAGMA_ARMOR: - if (gBattleMons[i].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); effect = 1; } break; case ABILITY_OBLIVIOUS: - //_08043B70 - if (gBattleMons[i].status2 & STATUS2_INFATUATION) + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) { StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); effect = 3; @@ -2387,56 +2369,52 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) switch (effect) { case 1: // status cleared - gBattleMons[i].status1 = 0; + gBattleMons[bank].status1 = 0; break; case 2: // get rid of confusion - gBattleMons[i].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); break; case 3: // get rid of infatuation - gBattleMons[i].status2 &= ~(STATUS2_INFATUATION); + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); break; } + BattleScriptPushCursor(); gBattlescriptCurrInstr = gUnknown_082DB68C; - gBattleScripting.bank = i; - gActiveBank = i; + gBattleScripting.bank = bank; + gActiveBank = bank; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); return effect; } } - #undef i } break; case ABILITYEFFECT_FORECAST: // 6 + for (bank = 0; bank < gNoOfAllBanks; bank++) { - #define i bank - for (i = 0; i < gNoOfAllBanks; i++) + if (gBattleMons[bank].ability == ABILITY_FORECAST) { - if (gBattleMons[i].ability == ABILITY_FORECAST) + effect = CastformDataTypeChange(bank); + if (effect) { - effect = CastformDataTypeChange(i); - if (effect) - { - BattleScriptPushCursorAndCallback(BattleScript_CastformChange); - gBattleScripting.bank = i; - gBattleStruct->formToChangeInto = effect - 1; - return effect; - } + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + gBattleScripting.bank = bank; + *(&gBattleStruct->formToChangeInto) = effect - 1; + return effect; } } - #undef i } break; case ABILITYEFFECT_SYNCHRONIZE: // 7 - //_08043CBC if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); - gBattleStruct->synchronizeMoveEffect &= 0x3F; - if (gBattleStruct->synchronizeMoveEffect == 6) - gBattleStruct->synchronizeMoveEffect = 2; - gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + 0x40; + gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) + gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; + + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER; gBattleScripting.bank = gBankTarget; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; @@ -2448,9 +2426,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); - gBattleStruct->synchronizeMoveEffect &= 0x3F; - if (gBattleStruct->synchronizeMoveEffect == 6) - gBattleStruct->synchronizeMoveEffect = 2; + gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) + gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect; gBattleScripting.bank = gBankAttacker; BattleScriptPushCursor(); @@ -2478,15 +2457,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) { - u8 opposite = (GetBankIdentity(i) ^ 1) & 1; - u8 target1 = GetBankByIdentity(opposite); - u8 target2 = GetBankByIdentity(opposite + 2); + u8 target2; + side = (GetBankIdentity(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon + target1 = GetBankByIdentity(side); + target2 = GetBankByIdentity(side + BIT_MON); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) { - gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | opposite); + gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side); gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; effect++; @@ -2522,16 +2502,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gStatuses3[i] &= ~(STATUS3_TRACE); gBattleScripting.bank = i; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = gActiveBank; - gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; - gBattleTextBuff1[4] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 9; - gBattleTextBuff2[2] = gLastUsedAbility; - gBattleTextBuff2[3] = EOS; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank]) + PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility) break; } } @@ -2656,3045 +2628,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; } - if (effect && caseID < 0xC && gLastUsedAbility != 0xFF) + + if (effect && caseID < ABILITYEFFECT_CHECK_OTHER_SIDE && gLastUsedAbility != 0xFF) RecordAbilityBattle(bank, gLastUsedAbility); } return effect; } -#else -__attribute__((naked)) -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) -{ - asm( - "\n\ - .syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x28\n\ - ldr r4, [sp, 0x48]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r10, r1\n\ - lsls r2, 24\n\ - lsrs r6, r2, 24\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - mov r8, r3\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - movs r0, 0\n\ - mov r9, r0\n\ - ldr r5, =gBankAttacker\n\ - ldr r1, =gNoOfAllBanks\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc _08042864\n\ - mov r1, r10\n\ - strb r1, [r5]\n\ -_08042864:\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08042894\n\ - ldr r1, =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, =gPlayerParty\n\ - b _080428A4\n\ - .pool\n\ -_08042894:\n\ - ldr r1, =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, =gEnemyParty\n\ -_080428A4:\n\ - adds r7, r1, r0\n\ - ldr r5, =gBankTarget\n\ - ldr r1, =gNoOfAllBanks\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc _080428B6\n\ - mov r2, r10\n\ - strb r2, [r5]\n\ -_080428B6:\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080428E8\n\ - ldr r1, =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, =gPlayerParty\n\ - b _080428F8\n\ - .pool\n\ -_080428E8:\n\ - ldr r1, =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, =gEnemyParty\n\ -_080428F8:\n\ - adds r5, r1, r0\n\ - adds r0, r7, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - adds r0, r7, 0\n\ - movs r1, 0\n\ - bl GetMonData\n\ - str r0, [sp, 0x10]\n\ - adds r0, r5, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0xC]\n\ - adds r0, r5, 0\n\ - movs r1, 0\n\ - bl GetMonData\n\ - str r0, [sp, 0x14]\n\ - ldr r0, =gBattleTypeFlags\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0804293A\n\ - bl _0804443A\n\ -_0804293A:\n\ - mov r3, r8\n\ - cmp r3, 0\n\ - beq _08042958\n\ - ldr r0, =gLastUsedAbility\n\ - strb r3, [r0]\n\ - adds r7, r0, 0\n\ - b _0804296E\n\ - .pool\n\ -_08042958:\n\ - ldr r2, =gLastUsedAbility\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r5, r10\n\ - muls r5, r0\n\ - adds r0, r5, 0\n\ - adds r0, r1\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - strb r0, [r2]\n\ - adds r7, r2, 0\n\ -_0804296E:\n\ - cmp r4, 0\n\ - beq _08042980\n\ - adds r5, r4, 0\n\ - b _08042984\n\ - .pool\n\ -_08042980:\n\ - ldr r0, =gCurrentMove\n\ - ldrh r5, [r0]\n\ -_08042984:\n\ - ldr r1, =gBattleStruct\n\ - ldr r0, [r1]\n\ - ldrb r0, [r0, 0x13]\n\ - mov r8, r1\n\ - cmp r0, 0\n\ - beq _080429A0\n\ - movs r3, 0x3F\n\ - ands r3, r0\n\ - b _080429AC\n\ - .pool\n\ -_080429A0:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r3, [r0, 0x2]\n\ -_080429AC:\n\ - ldr r0, [sp, 0x4]\n\ - cmp r0, 0x13\n\ - bls _080429B6\n\ - bl _0804441E\n\ -_080429B6:\n\ - lsls r0, 2\n\ - ldr r1, =_080429C8\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .pool\n\ - .align 2, 0\n\ -_080429C8:\n\ - .4byte _08042A18\n\ - .4byte _08042CDC\n\ - .4byte _08042EF8\n\ - .4byte _08042F8C\n\ - .4byte _080431AC\n\ - .4byte _08043908\n\ - .4byte _08043C6C\n\ - .4byte _08043CBC\n\ - .4byte _08043D40\n\ - .4byte _08043DC4\n\ - .4byte _08043FE4\n\ - .4byte _08043E08\n\ - .4byte _08044028\n\ - .4byte _08044084\n\ - .4byte _080440E0\n\ - .4byte _080441DC\n\ - .4byte _08044220\n\ - .4byte _0804427C\n\ - .4byte _080443EC\n\ - .4byte _08044196\n\ -_08042A18:\n\ - ldr r2, =gBankAttacker\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r1, [r2]\n\ - adds r5, r0, 0\n\ - ldrb r3, [r5]\n\ - cmp r1, r3\n\ - bcc _08042A2A\n\ - mov r0, r10\n\ - strb r0, [r2]\n\ -_08042A2A:\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x2D\n\ - bne _08042A32\n\ - b _08042BA8\n\ -_08042A32:\n\ - cmp r0, 0x2D\n\ - bgt _08042A64\n\ - cmp r0, 0xD\n\ - bne _08042A3C\n\ - b _08042CA4\n\ -_08042A3C:\n\ - cmp r0, 0xD\n\ - bgt _08042A54\n\ - cmp r0, 0x2\n\ - bne _08042A46\n\ - b _08042B78\n\ -_08042A46:\n\ - bl _0804441E\n\ - .pool\n\ -_08042A54:\n\ - cmp r0, 0x16\n\ - bne _08042A5A\n\ - b _08042C08\n\ -_08042A5A:\n\ - cmp r0, 0x24\n\ - bne _08042A60\n\ - b _08042C68\n\ -_08042A60:\n\ - bl _0804441E\n\ -_08042A64:\n\ - cmp r0, 0x46\n\ - bne _08042A6A\n\ - b _08042BD8\n\ -_08042A6A:\n\ - cmp r0, 0x46\n\ - bgt _08042A78\n\ - cmp r0, 0x3B\n\ - bne _08042A74\n\ - b _08042C3C\n\ -_08042A74:\n\ - bl _0804441E\n\ -_08042A78:\n\ - cmp r0, 0x4D\n\ - bne _08042A7E\n\ - b _08042CA4\n\ -_08042A7E:\n\ - cmp r0, 0xFF\n\ - beq _08042A86\n\ - bl _0804441E\n\ -_08042A86:\n\ - ldr r0, =gBattleTypeFlags\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042B4C\n\ - bl weather_get_current\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - subs r0, 0x3\n\ - cmp r0, 0xA\n\ - bhi _08042B4C\n\ - lsls r0, 2\n\ - ldr r1, =_08042AB4\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .pool\n\ - .align 2, 0\n\ -_08042AB4:\n\ - .4byte _08042AE0\n\ - .4byte _08042B4C\n\ - .4byte _08042AE0\n\ - .4byte _08042B4C\n\ - .4byte _08042B4C\n\ - .4byte _08042B04\n\ - .4byte _08042B4C\n\ - .4byte _08042B4C\n\ - .4byte _08042B4C\n\ - .4byte _08042B28\n\ - .4byte _08042AE0\n\ -_08042AE0:\n\ - ldr r2, =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042B4C\n\ - movs r0, 0x5\n\ - strh r0, [r2]\n\ - ldr r1, =gBattleScripting\n\ - movs r0, 0xA\n\ - strb r0, [r1, 0x10]\n\ - mov r2, r10\n\ - strb r2, [r1, 0x17]\n\ - b _08042B42\n\ - .pool\n\ -_08042B04:\n\ - ldr r3, =gBattleWeather\n\ - ldrh r1, [r3]\n\ - movs r2, 0x18\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042B4C\n\ - strh r2, [r3]\n\ - ldr r1, =gBattleScripting\n\ - movs r0, 0xC\n\ - strb r0, [r1, 0x10]\n\ - mov r3, r10\n\ - strb r3, [r1, 0x17]\n\ - b _08042B42\n\ - .pool\n\ -_08042B28:\n\ - ldr r3, =gBattleWeather\n\ - ldrh r1, [r3]\n\ - movs r2, 0x60\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042B4C\n\ - strh r2, [r3]\n\ - ldr r1, =gBattleScripting\n\ - movs r0, 0xB\n\ - strb r0, [r1, 0x10]\n\ - mov r5, r10\n\ - strb r5, [r1, 0x17]\n\ -_08042B42:\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08042B4C:\n\ - mov r0, r9\n\ - cmp r0, 0\n\ - bne _08042B56\n\ - bl _0804443A\n\ -_08042B56:\n\ - bl weather_get_current\n\ - ldr r1, =gBattleCommunication\n\ - strb r0, [r1, 0x5]\n\ - ldr r0, =gUnknown_082DACE7\n\ - bl BattleScriptPushCursorAndCallback\n\ - bl _0804441E\n\ - .pool\n\ -_08042B78:\n\ - ldr r2, =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042B88\n\ - bl _0804441E\n\ -_08042B88:\n\ - movs r0, 0x5\n\ - strh r0, [r2]\n\ - ldr r0, =BattleScript_DrizzleActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, =gBattleScripting\n\ - mov r1, r10\n\ - strb r1, [r0, 0x17]\n\ - bl _080443D0\n\ - .pool\n\ -_08042BA8:\n\ - ldr r2, =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042BB8\n\ - bl _0804441E\n\ -_08042BB8:\n\ - movs r0, 0x18\n\ - strh r0, [r2]\n\ - ldr r0, =BattleScript_SandstreamActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, =gBattleScripting\n\ - mov r2, r10\n\ - strb r2, [r0, 0x17]\n\ - bl _080443D0\n\ - .pool\n\ -_08042BD8:\n\ - ldr r2, =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042BE8\n\ - bl _0804441E\n\ -_08042BE8:\n\ - movs r0, 0x60\n\ - strh r0, [r2]\n\ - ldr r0, =BattleScript_DroughtActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, =gBattleScripting\n\ - mov r3, r10\n\ - strb r3, [r0, 0x17]\n\ - bl _080443D0\n\ - .pool\n\ -_08042C08:\n\ - ldr r0, =gSpecialStatuses\n\ - mov r5, r10\n\ - lsls r2, r5, 2\n\ - adds r1, r2, r5\n\ - lsls r1, 2\n\ - adds r3, r1, r0\n\ - ldrb r0, [r3]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08042C20\n\ - bl _0804441E\n\ -_08042C20:\n\ - ldr r1, =gStatuses3\n\ - adds r1, r2, r1\n\ - ldr r0, [r1]\n\ - movs r2, 0x80\n\ - lsls r2, 12\n\ - orrs r0, r2\n\ - str r0, [r1]\n\ - ldrb r0, [r3]\n\ - movs r1, 0x8\n\ - b _08042C92\n\ - .pool\n\ -_08042C3C:\n\ - mov r0, r10\n\ - bl CastformDataTypeChange\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - cmp r0, 0\n\ - bne _08042C50\n\ - bl _0804443A\n\ -_08042C50:\n\ - ldr r0, =BattleScript_CastformChange\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, =gBattleScripting\n\ - mov r1, r10\n\ - strb r1, [r0, 0x17]\n\ - bl _080442E2\n\ - .pool\n\ -_08042C68:\n\ - ldr r0, =gSpecialStatuses\n\ - mov r3, r10\n\ - lsls r2, r3, 2\n\ - adds r1, r2, r3\n\ - lsls r1, 2\n\ - adds r3, r1, r0\n\ - ldrb r0, [r3]\n\ - lsls r0, 27\n\ - cmp r0, 0\n\ - bge _08042C80\n\ - bl _0804441E\n\ -_08042C80:\n\ - ldr r1, =gStatuses3\n\ - adds r1, r2, r1\n\ - ldr r0, [r1]\n\ - movs r2, 0x80\n\ - lsls r2, 13\n\ - orrs r0, r2\n\ - str r0, [r1]\n\ - ldrb r0, [r3]\n\ - movs r1, 0x10\n\ -_08042C92:\n\ - orrs r0, r1\n\ - strb r0, [r3]\n\ - bl _0804441E\n\ - .pool\n\ -_08042CA4:\n\ - movs r6, 0\n\ - ldrb r5, [r5]\n\ - cmp r6, r5\n\ - bcc _08042CB0\n\ - bl _0804441E\n\ -_08042CB0:\n\ - adds r0, r6, 0\n\ - bl CastformDataTypeChange\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - cmp r0, 0\n\ - beq _08042CC4\n\ - bl _080442D8\n\ -_08042CC4:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bcc _08042CB0\n\ - bl _0804441E\n\ - .pool\n\ -_08042CDC:\n\ - ldr r5, =gBattleMons\n\ - mov r8, r5\n\ - movs r0, 0x58\n\ - mov r6, r10\n\ - muls r6, r0\n\ - adds r4, r6, r5\n\ - ldrh r0, [r4, 0x28]\n\ - cmp r0, 0\n\ - bne _08042CF2\n\ - bl _0804441E\n\ -_08042CF2:\n\ - ldr r0, =gBankAttacker\n\ - mov r1, r10\n\ - strb r1, [r0]\n\ - ldrb r5, [r7]\n\ - cmp r5, 0x2C\n\ - beq _08042D22\n\ - cmp r5, 0x2C\n\ - bgt _08042D14\n\ - cmp r5, 0x3\n\ - bne _08042D08\n\ - b _08042E84\n\ -_08042D08:\n\ - bl _0804441E\n\ - .pool\n\ -_08042D14:\n\ - cmp r5, 0x36\n\ - bne _08042D1A\n\ - b _08042ED0\n\ -_08042D1A:\n\ - cmp r5, 0x3D\n\ - beq _08042DA0\n\ - bl _0804441E\n\ -_08042D22:\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0x13\n\ - movs r1, 0\n\ - movs r2, 0xD\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - beq _08042D3E\n\ - bl _0804441E\n\ -_08042D3E:\n\ - str r0, [sp]\n\ - movs r0, 0x13\n\ - movs r1, 0\n\ - movs r2, 0x4D\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08042D56\n\ - bl _0804441E\n\ -_08042D56:\n\ - ldr r0, =gBattleWeather\n\ - ldrh r1, [r0]\n\ - movs r0, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042D66\n\ - bl _0804441E\n\ -_08042D66:\n\ - ldrh r0, [r4, 0x2C]\n\ - ldrh r2, [r4, 0x28]\n\ - cmp r0, r2\n\ - bhi _08042D72\n\ - bl _0804441E\n\ -_08042D72:\n\ - strb r5, [r7]\n\ - ldr r0, =BattleScript_RainDishActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r1, =gBattleMoveDamage\n\ - ldrh r0, [r4, 0x2C]\n\ - lsrs r0, 4\n\ - str r0, [r1]\n\ - cmp r0, 0\n\ - bne _08042D8A\n\ - movs r0, 0x1\n\ - str r0, [r1]\n\ -_08042D8A:\n\ - ldr r0, [r1]\n\ - negs r0, r0\n\ - str r0, [r1]\n\ - bl _080443D0\n\ - .pool\n\ -_08042DA0:\n\ - mov r0, r8\n\ - adds r0, 0x4C\n\ - adds r5, r6, r0\n\ - ldrb r0, [r5]\n\ - cmp r0, 0\n\ - bne _08042DB0\n\ - bl _0804441E\n\ -_08042DB0:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, 0\n\ - beq _08042DCA\n\ - bl _0804441E\n\ -_08042DCA:\n\ - ldr r0, [r5]\n\ - movs r1, 0x88\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042DDC\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_PoisonJpn\n\ - bl StringCopy\n\ -_08042DDC:\n\ - ldr r0, [r5]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042DEE\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_SleepJpn\n\ - bl StringCopy\n\ -_08042DEE:\n\ - ldr r0, [r5]\n\ - movs r1, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042E00\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_ParalysisJpn\n\ - bl StringCopy\n\ -_08042E00:\n\ - ldr r0, [r5]\n\ - movs r1, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042E12\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_BurnJpn\n\ - bl StringCopy\n\ -_08042E12:\n\ - ldr r0, [r5]\n\ - movs r1, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042E24\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_IceJpn\n\ - bl StringCopy\n\ -_08042E24:\n\ - str r4, [r5]\n\ - mov r1, r8\n\ - adds r1, 0x50\n\ - adds r1, r6, r1\n\ - ldr r0, [r1]\n\ - ldr r2, =0xf7ffffff\n\ - ands r0, r2\n\ - str r0, [r1]\n\ - ldr r0, =gBattleScripting\n\ - ldr r4, =gActiveBank\n\ - mov r3, r10\n\ - strb r3, [r4]\n\ - strb r3, [r0, 0x17]\n\ - ldr r0, =BattleScript_ShedSkinActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - str r5, [sp]\n\ - movs r0, 0\n\ - movs r1, 0x28\n\ - movs r2, 0\n\ - movs r3, 0x4\n\ - bl EmitSetMonData\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ - bl _080443D0\n\ - .pool\n\ -_08042E84:\n\ - ldrb r2, [r4, 0x1B]\n\ - movs r0, 0x1B\n\ - ldrsb r0, [r4, r0]\n\ - cmp r0, 0xB\n\ - ble _08042E92\n\ - bl _0804441E\n\ -_08042E92:\n\ - ldr r0, =gDisableStructs\n\ - mov r5, r10\n\ - lsls r1, r5, 3\n\ - subs r1, r5\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x16]\n\ - cmp r0, 0x2\n\ - bne _08042EA8\n\ - bl _0804441E\n\ -_08042EA8:\n\ - adds r0, r2, 0x1\n\ - movs r1, 0\n\ - strb r0, [r4, 0x1B]\n\ - ldr r4, =gBattleScripting\n\ - movs r0, 0x11\n\ - strb r0, [r4, 0x10]\n\ - strb r1, [r4, 0x11]\n\ - ldr r0, =BattleScript_SpeedBoostActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - strb r5, [r4, 0x17]\n\ - bl _080443D0\n\ - .pool\n\ -_08042ED0:\n\ - ldr r2, =gDisableStructs\n\ - ldrb r0, [r0]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - ldrb r3, [r1, 0x18]\n\ - lsls r0, r3, 31\n\ - lsrs r0, 31\n\ - movs r2, 0x1\n\ - eors r2, r0\n\ - movs r0, 0x2\n\ - negs r0, r0\n\ - ands r0, r3\n\ - orrs r0, r2\n\ - strb r0, [r1, 0x18]\n\ - bl _0804441E\n\ - .pool\n\ -_08042EF8:\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x2B\n\ - beq _08042F02\n\ - bl _0804441E\n\ -_08042F02:\n\ - movs r4, 0\n\ - ldr r0, =sSoundMovesTable\n\ - ldrh r2, [r0]\n\ - ldr r3, =0x0000ffff\n\ - adds r1, r0, 0\n\ - cmp r2, r3\n\ - bne _08042F14\n\ - bl _0804441E\n\ -_08042F14:\n\ - cmp r2, r5\n\ - beq _08042F2C\n\ - adds r2, r1, 0\n\ -_08042F1A:\n\ - adds r2, 0x2\n\ - adds r4, 0x1\n\ - ldrh r0, [r2]\n\ - cmp r0, r3\n\ - bne _08042F28\n\ - bl _0804441E\n\ -_08042F28:\n\ - cmp r0, r5\n\ - bne _08042F1A\n\ -_08042F2C:\n\ - lsls r0, r4, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldr r0, =0x0000ffff\n\ - cmp r1, r0\n\ - bne _08042F3C\n\ - bl _0804441E\n\ -_08042F3C:\n\ - ldr r1, =gBattleMons\n\ - ldr r0, =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 5\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042F62\n\ - ldr r0, =gHitMarker\n\ - ldr r1, [r0]\n\ - movs r2, 0x80\n\ - lsls r2, 4\n\ - orrs r1, r2\n\ - str r1, [r0]\n\ -_08042F62:\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_SoundproofProtected\n\ - str r0, [r1]\n\ - movs r0, 0x1\n\ - mov r9, r0\n\ - bl _08044424\n\ - .pool\n\ -_08042F8C:\n\ - cmp r5, 0\n\ - bne _08042F94\n\ - bl _0804441E\n\ -_08042F94:\n\ - ldrb r0, [r7]\n\ - cmp r0, 0xB\n\ - beq _08043004\n\ - cmp r0, 0xB\n\ - bgt _08042FA4\n\ - cmp r0, 0xA\n\ - beq _08042FAA\n\ - b _08043126\n\ -_08042FA4:\n\ - cmp r0, 0x12\n\ - beq _0804305C\n\ - b _08043126\n\ -_08042FAA:\n\ - cmp r3, 0xD\n\ - beq _08042FB0\n\ - b _08043126\n\ -_08042FB0:\n\ - ldr r0, =gBattleMoves\n\ - lsls r1, r5, 1\n\ - adds r1, r5\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _08042FC2\n\ - b _08043126\n\ -_08042FC2:\n\ - ldr r1, =gProtectStructs\n\ - ldr r0, =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08042FF0\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_MoveHPDrain\n\ - b _08042FF4\n\ - .pool\n\ -_08042FF0:\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_MoveHPDrain_PPLoss\n\ -_08042FF4:\n\ - str r0, [r1]\n\ - movs r1, 0x1\n\ - b _08043124\n\ - .pool\n\ -_08043004:\n\ - cmp r3, 0xB\n\ - beq _0804300A\n\ - b _08043126\n\ -_0804300A:\n\ - ldr r0, =gBattleMoves\n\ - lsls r1, r5, 1\n\ - adds r1, r5\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _0804301C\n\ - b _08043126\n\ -_0804301C:\n\ - ldr r1, =gProtectStructs\n\ - ldr r0, =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08043048\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_MoveHPDrain\n\ - b _0804304C\n\ - .pool\n\ -_08043048:\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_MoveHPDrain_PPLoss\n\ -_0804304C:\n\ - str r0, [r1]\n\ - movs r2, 0x1\n\ - mov r9, r2\n\ - b _08043126\n\ - .pool\n\ -_0804305C:\n\ - cmp r3, 0xA\n\ - bne _08043126\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043126\n\ - ldr r2, =gBattleResources\n\ - ldr r0, [r2]\n\ - ldr r0, [r0, 0x4]\n\ - mov r5, r10\n\ - lsls r1, r5, 2\n\ - adds r0, r1\n\ - ldr r3, [r0]\n\ - movs r4, 0x1\n\ - ands r3, r4\n\ - adds r5, r1, 0\n\ - cmp r3, 0\n\ - bne _080430EC\n\ - ldr r0, =gBattleCommunication\n\ - strb r3, [r0, 0x5]\n\ - ldr r1, =gProtectStructs\n\ - ldr r0, =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _080430C8\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_FlashFireBoost\n\ - b _080430CC\n\ - .pool\n\ -_080430C8:\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_FlashFireBoost_PPLoss\n\ -_080430CC:\n\ - str r0, [r1]\n\ - ldr r0, [r2]\n\ - ldr r1, [r0, 0x4]\n\ - adds r1, r5\n\ - ldr r0, [r1]\n\ - movs r2, 0x1\n\ - orrs r0, r2\n\ - str r0, [r1]\n\ - movs r0, 0x2\n\ - mov r9, r0\n\ - b _08043126\n\ - .pool\n\ -_080430EC:\n\ - ldr r0, =gBattleCommunication\n\ - strb r4, [r0, 0x5]\n\ - ldr r1, =gProtectStructs\n\ - ldr r0, =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _0804311C\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_FlashFireBoost\n\ - b _08043120\n\ - .pool\n\ -_0804311C:\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_FlashFireBoost_PPLoss\n\ -_08043120:\n\ - str r0, [r1]\n\ - movs r1, 0x2\n\ -_08043124:\n\ - mov r9, r1\n\ -_08043126:\n\ - mov r2, r9\n\ - cmp r2, 0x1\n\ - beq _08043130\n\ - bl _0804441E\n\ -_08043130:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r0, r1\n\ - ldrh r0, [r1, 0x2C]\n\ - ldrh r5, [r1, 0x28]\n\ - cmp r0, r5\n\ - bne _0804318C\n\ - ldr r1, =gProtectStructs\n\ - ldr r0, =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08043178\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =gUnknown_082DB592\n\ - str r0, [r1]\n\ - bl _0804441E\n\ - .pool\n\ -_08043178:\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =gUnknown_082DB591\n\ - str r0, [r1]\n\ - bl _0804441E\n\ - .pool\n\ -_0804318C:\n\ - ldr r2, =gBattleMoveDamage\n\ - ldrh r0, [r1, 0x2C]\n\ - lsrs r0, 2\n\ - str r0, [r2]\n\ - cmp r0, 0\n\ - bne _0804319C\n\ - mov r0, r9\n\ - str r0, [r2]\n\ -_0804319C:\n\ - ldr r0, [r2]\n\ - negs r0, r0\n\ - str r0, [r2]\n\ - bl _0804441E\n\ - .pool\n\ -_080431AC:\n\ - ldrb r0, [r7]\n\ - subs r0, 0x9\n\ - cmp r0, 0x2F\n\ - bls _080431B8\n\ - bl _0804441E\n\ -_080431B8:\n\ - lsls r0, 2\n\ - ldr r1, =_080431C8\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .pool\n\ - .align 2, 0\n\ -_080431C8:\n\ - .4byte _080435E4\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _08043288\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _08043350\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _08043410\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _08043508\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _080436C0\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804441E\n\ - .4byte _0804379C\n\ -_08043288:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043298\n\ - bl _0804441E\n\ -_08043298:\n\ - cmp r5, 0xA5\n\ - bne _080432A0\n\ - bl _0804441E\n\ -_080432A0:\n\ - ldr r0, =gBattleMoves\n\ - lsls r1, r5, 1\n\ - adds r1, r5\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _080432B4\n\ - bl _0804441E\n\ -_080432B4:\n\ - ldr r2, =gSpecialStatuses\n\ - ldr r0, =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _080432DC\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _080432DC\n\ - bl _0804441E\n\ -_080432DC:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r1, r0, r1\n\ - adds r4, r1, 0\n\ - adds r4, 0x21\n\ - ldrb r0, [r4]\n\ - cmp r0, r3\n\ - bne _080432F6\n\ - bl _0804441E\n\ -_080432F6:\n\ - adds r2, r1, 0\n\ - adds r2, 0x22\n\ - ldrb r0, [r2]\n\ - cmp r0, r3\n\ - bne _08043304\n\ - bl _0804441E\n\ -_08043304:\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - bne _0804330E\n\ - bl _0804441E\n\ -_0804330E:\n\ - strb r3, [r4]\n\ - strb r3, [r2]\n\ - ldr r1, =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x1]\n\ - strb r3, [r1, 0x2]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_ColorChangeActivates\n\ - str r0, [r1]\n\ - bl _080443D0\n\ - .pool\n\ -_08043350:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043360\n\ - bl _0804441E\n\ -_08043360:\n\ - ldr r1, =gBattleMons\n\ - ldr r0, =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r3, r0, r1\n\ - ldrh r0, [r3, 0x28]\n\ - cmp r0, 0\n\ - bne _08043376\n\ - bl _0804441E\n\ -_08043376:\n\ - ldr r0, =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08043388\n\ - bl _0804441E\n\ -_08043388:\n\ - ldr r2, =gSpecialStatuses\n\ - ldr r0, =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _080433B0\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _080433B0\n\ - bl _0804441E\n\ -_080433B0:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r2, 0x1\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080433CA\n\ - bl _0804441E\n\ -_080433CA:\n\ - ldr r1, =gBattleMoveDamage\n\ - ldrh r0, [r3, 0x2C]\n\ - lsrs r0, 4\n\ - str r0, [r1]\n\ - cmp r0, 0\n\ - bne _080433D8\n\ - str r2, [r1]\n\ -_080433D8:\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_RoughSkinActivates\n\ - str r0, [r1]\n\ - bl _080443D0\n\ - .pool\n\ -_08043410:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043420\n\ - bl _0804441E\n\ -_08043420:\n\ - ldr r1, =gBattleMons\n\ - ldr r0, =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _08043436\n\ - bl _0804441E\n\ -_08043436:\n\ - ldr r0, =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08043448\n\ - bl _0804441E\n\ -_08043448:\n\ - ldr r2, =gSpecialStatuses\n\ - ldr r0, =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043470\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043470\n\ - bl _0804441E\n\ -_08043470:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043488\n\ - bl _0804441E\n\ -_08043488:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _080434A0\n\ - bl _0804441E\n\ -_080434A0:\n\ - ldr r5, =gBattleCommunication\n\ - movs r4, 0x3\n\ -_080434A4:\n\ - bl Random\n\ - ands r0, r4\n\ - strb r0, [r5, 0x3]\n\ - cmp r0, 0\n\ - beq _080434A4\n\ - ldr r1, =gBattleCommunication\n\ - ldrb r0, [r1, 0x3]\n\ - cmp r0, 0x3\n\ - bne _080434BC\n\ - adds r0, 0x2\n\ - strb r0, [r1, 0x3]\n\ -_080434BC:\n\ - ldrb r0, [r1, 0x3]\n\ - adds r0, 0x40\n\ - strb r0, [r1, 0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _080443D0\n\ - .pool\n\ -_08043508:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043518\n\ - bl _0804441E\n\ -_08043518:\n\ - ldr r1, =gBattleMons\n\ - ldr r0, =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _0804352E\n\ - bl _0804441E\n\ -_0804352E:\n\ - ldr r0, =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08043540\n\ - bl _0804441E\n\ -_08043540:\n\ - ldr r2, =gSpecialStatuses\n\ - ldr r0, =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043568\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043568\n\ - bl _0804441E\n\ -_08043568:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043580\n\ - bl _0804441E\n\ -_08043580:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08043598\n\ - bl _0804441E\n\ -_08043598:\n\ - ldr r1, =gBattleCommunication\n\ - movs r0, 0x42\n\ - strb r0, [r1, 0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _080443D0\n\ - .pool\n\ -_080435E4:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080435F4\n\ - bl _0804441E\n\ -_080435F4:\n\ - ldr r1, =gBattleMons\n\ - ldr r0, =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _0804360A\n\ - bl _0804441E\n\ -_0804360A:\n\ - ldr r0, =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _0804361C\n\ - bl _0804441E\n\ -_0804361C:\n\ - ldr r2, =gSpecialStatuses\n\ - ldr r0, =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043644\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043644\n\ - bl _0804441E\n\ -_08043644:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0804365C\n\ - bl _0804441E\n\ -_0804365C:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08043674\n\ - bl _0804441E\n\ -_08043674:\n\ - ldr r1, =gBattleCommunication\n\ - movs r0, 0x45\n\ - strb r0, [r1, 0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _080443D0\n\ - .pool\n\ -_080436C0:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080436D0\n\ - bl _0804441E\n\ -_080436D0:\n\ - ldr r1, =gBattleMons\n\ - ldr r0, =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _080436E6\n\ - bl _0804441E\n\ -_080436E6:\n\ - ldr r0, =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _080436F8\n\ - bl _0804441E\n\ -_080436F8:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043710\n\ - bl _0804441E\n\ -_08043710:\n\ - ldr r2, =gSpecialStatuses\n\ - ldr r0, =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043738\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043738\n\ - bl _0804441E\n\ -_08043738:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08043750\n\ - bl _0804441E\n\ -_08043750:\n\ - ldr r1, =gBattleCommunication\n\ - movs r0, 0x43\n\ - strb r0, [r1, 0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _080443D0\n\ - .pool\n\ -_0804379C:\n\ - ldr r0, =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080437AC\n\ - bl _0804441E\n\ -_080437AC:\n\ - ldr r6, =gBattleMons\n\ - ldr r3, =gBankAttacker\n\ - mov r8, r3\n\ - ldrb r1, [r3]\n\ - movs r7, 0x58\n\ - adds r0, r1, 0\n\ - muls r0, r7\n\ - adds r0, r6\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _080437C6\n\ - bl _0804441E\n\ -_080437C6:\n\ - ldr r0, =gProtectStructs\n\ - lsls r1, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _080437D8\n\ - bl _0804441E\n\ -_080437D8:\n\ - ldr r1, =gBattleMoves\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080437F0\n\ - bl _0804441E\n\ -_080437F0:\n\ - ldr r3, =gSpecialStatuses\n\ - ldr r5, =gBankTarget\n\ - ldrb r1, [r5]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r2, r0, 2\n\ - adds r0, r3, 0\n\ - adds r0, 0x8\n\ - adds r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043818\n\ - adds r0, r3, 0\n\ - adds r0, 0xC\n\ - adds r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08043818\n\ - bl _0804441E\n\ -_08043818:\n\ - adds r0, r1, 0\n\ - muls r0, r7\n\ - adds r0, r6\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _08043828\n\ - bl _0804441E\n\ -_08043828:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08043840\n\ - bl _0804441E\n\ -_08043840:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - muls r0, r7\n\ - adds r0, r6\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xC\n\ - bne _08043854\n\ - bl _0804441E\n\ -_08043854:\n\ - ldr r0, [sp, 0x8]\n\ - ldr r1, [sp, 0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - adds r4, r0, 0\n\ - ldr r0, [sp, 0xC]\n\ - ldr r1, [sp, 0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsls r4, 24\n\ - lsls r0, 24\n\ - cmp r4, r0\n\ - bne _08043872\n\ - bl _0804441E\n\ -_08043872:\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - muls r0, r7\n\ - adds r4, r6, 0\n\ - adds r4, 0x50\n\ - adds r0, r4\n\ - ldr r0, [r0]\n\ - movs r1, 0xF0\n\ - lsls r1, 12\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0804388E\n\ - bl _0804441E\n\ -_0804388E:\n\ - ldr r0, [sp, 0x8]\n\ - ldr r1, [sp, 0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xFF\n\ - bne _080438A2\n\ - bl _0804441E\n\ -_080438A2:\n\ - ldr r0, [sp, 0xC]\n\ - ldr r1, [sp, 0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xFF\n\ - bne _080438B6\n\ - bl _0804441E\n\ -_080438B6:\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - adds r2, r0, 0\n\ - muls r2, r7\n\ - adds r2, r4\n\ - ldr r1, =gBitTable\n\ - ldrb r0, [r5]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - lsls r1, 16\n\ - ldr r0, [r2]\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_CuteCharmActivates\n\ - str r0, [r1]\n\ - bl _080443D0\n\ - .pool\n\ -_08043908:\n\ - movs r5, 0\n\ - mov r10, r5\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcc _08043918\n\ - bl _0804441E\n\ -_08043918:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r1\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - subs r0, 0x7\n\ - adds r2, r1, 0\n\ - cmp r0, 0x41\n\ - bls _08043932\n\ - b _08043B96\n\ -_08043932:\n\ - lsls r0, 2\n\ - ldr r1, =_08043948\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .pool\n\ - .align 2, 0\n\ -_08043948:\n\ - .4byte _08043AAC\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B70\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043AD4\n\ - .4byte _08043B96\n\ - .4byte _08043A50\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043A7C\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B40\n\ - .4byte _08043B10\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043B96\n\ - .4byte _08043AD4\n\ -_08043A50:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - ldr r1, =0x00000f88\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043A6A\n\ - b _08043B96\n\ -_08043A6A:\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_PoisonJpn\n\ - b _08043B5C\n\ - .pool\n\ -_08043A7C:\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043A96\n\ - b _08043B96\n\ -_08043A96:\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_ConfusionJpn\n\ - bl StringCopy\n\ - movs r2, 0x2\n\ - mov r9, r2\n\ - b _08043B9C\n\ - .pool\n\ -_08043AAC:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043B96\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_ParalysisJpn\n\ - b _08043B5C\n\ - .pool\n\ -_08043AD4:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r2, 0\n\ - adds r0, 0x4C\n\ - adds r0, r3, r0\n\ - ldr r0, [r0]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043B96\n\ - adds r2, 0x50\n\ - adds r2, r3, r2\n\ - ldr r0, [r2]\n\ - ldr r1, =0xf7ffffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_SleepJpn\n\ - bl StringCopy\n\ - movs r0, 0x1\n\ - mov r9, r0\n\ - b _08043B9C\n\ - .pool\n\ -_08043B10:\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043B96\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_BurnJpn\n\ - bl StringCopy\n\ - movs r2, 0x1\n\ - mov r9, r2\n\ - b _08043B9C\n\ - .pool\n\ -_08043B40:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043B96\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_IceJpn\n\ -_08043B5C:\n\ - bl StringCopy\n\ - movs r5, 0x1\n\ - mov r9, r5\n\ - b _08043B9C\n\ - .pool\n\ -_08043B70:\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0xF0\n\ - lsls r1, 12\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08043B96\n\ - ldr r0, =gBattleTextBuff1\n\ - ldr r1, =gStatusConditionString_LoveJpn\n\ - bl StringCopy\n\ - movs r2, 0x3\n\ - mov r9, r2\n\ -_08043B96:\n\ - mov r3, r9\n\ - cmp r3, 0\n\ - beq _08043C50\n\ -_08043B9C:\n\ - mov r5, r9\n\ - cmp r5, 0x2\n\ - beq _08043BD0\n\ - cmp r5, 0x2\n\ - bgt _08043BB4\n\ - cmp r5, 0x1\n\ - beq _08043BBC\n\ - b _08043BFC\n\ - .pool\n\ -_08043BB4:\n\ - mov r0, r9\n\ - cmp r0, 0x3\n\ - beq _08043BE8\n\ - b _08043BFC\n\ -_08043BBC:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r1, 0x4C\n\ - adds r2, r1\n\ - movs r0, 0\n\ - b _08043BFA\n\ - .pool\n\ -_08043BD0:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r1, 0x50\n\ - adds r2, r1\n\ - ldr r0, [r2]\n\ - movs r1, 0x8\n\ - negs r1, r1\n\ - b _08043BF8\n\ - .pool\n\ -_08043BE8:\n\ - ldr r1, =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r1, 0x50\n\ - adds r2, r1\n\ - ldr r0, [r2]\n\ - ldr r1, =0xfff0ffff\n\ -_08043BF8:\n\ - ands r0, r1\n\ -_08043BFA:\n\ - str r0, [r2]\n\ -_08043BFC:\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =gUnknown_082DB68C\n\ - str r0, [r1]\n\ - ldr r0, =gBattleScripting\n\ - mov r1, r10\n\ - strb r1, [r0, 0x17]\n\ - ldr r4, =gActiveBank\n\ - strb r1, [r4]\n\ - ldrb r1, [r4]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - ldr r1, =gBattleMons + 0x4C\n\ - adds r0, r1\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - movs r1, 0x28\n\ - movs r2, 0\n\ - movs r3, 0x4\n\ - bl EmitSetMonData\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ - bl _0804443A\n\ - .pool\n\ -_08043C50:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcs _08043C64\n\ - b _08043918\n\ -_08043C64:\n\ - bl _0804441E\n\ - .pool\n\ -_08043C6C:\n\ - movs r2, 0\n\ - mov r10, r2\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcc _08043C7A\n\ - b _0804441E\n\ -_08043C7A:\n\ - ldr r4, =gBattleMons\n\ -_08043C7C:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r0, r4\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x3B\n\ - bne _08043CA0\n\ - mov r0, r10\n\ - bl CastformDataTypeChange\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - cmp r0, 0\n\ - beq _08043CA0\n\ - b _080442FC\n\ -_08043CA0:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcc _08043C7C\n\ - b _0804441E\n\ - .pool\n\ -_08043CBC:\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x1C\n\ - beq _08043CC4\n\ - b _0804441E\n\ -_08043CC4:\n\ - ldr r4, =gHitMarker\n\ - ldr r1, [r4]\n\ - movs r0, 0x80\n\ - lsls r0, 7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043CD4\n\ - b _0804441E\n\ -_08043CD4:\n\ - ldr r0, =0xffffbfff\n\ - ands r1, r0\n\ - str r1, [r4]\n\ - mov r5, r8\n\ - ldr r1, [r5]\n\ - adds r1, 0xB2\n\ - ldrb r2, [r1]\n\ - movs r0, 0x3F\n\ - ands r0, r2\n\ - strb r0, [r1]\n\ - ldr r0, [r5]\n\ - adds r1, r0, 0\n\ - adds r1, 0xB2\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x6\n\ - bne _08043CF8\n\ - movs r0, 0x2\n\ - strb r0, [r1]\n\ -_08043CF8:\n\ - ldr r1, =gBattleCommunication\n\ - mov r2, r8\n\ - ldr r0, [r2]\n\ - adds r0, 0xB2\n\ - ldrb r0, [r0]\n\ - adds r0, 0x40\n\ - strb r0, [r1, 0x3]\n\ - ldr r1, =gBattleScripting\n\ - ldr r0, =gBankTarget\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x17]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_SynchronizeActivates\n\ - str r0, [r1]\n\ - ldr r0, [r4]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r4]\n\ - b _080443D0\n\ - .pool\n\ -_08043D40:\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x1C\n\ - beq _08043D48\n\ - b _0804441E\n\ -_08043D48:\n\ - ldr r4, =gHitMarker\n\ - ldr r1, [r4]\n\ - movs r0, 0x80\n\ - lsls r0, 7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08043D58\n\ - b _0804441E\n\ -_08043D58:\n\ - ldr r0, =0xffffbfff\n\ - ands r1, r0\n\ - str r1, [r4]\n\ - mov r3, r8\n\ - ldr r1, [r3]\n\ - adds r1, 0xB2\n\ - ldrb r2, [r1]\n\ - movs r0, 0x3F\n\ - ands r0, r2\n\ - strb r0, [r1]\n\ - ldr r0, [r3]\n\ - adds r1, r0, 0\n\ - adds r1, 0xB2\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x6\n\ - bne _08043D7C\n\ - movs r0, 0x2\n\ - strb r0, [r1]\n\ -_08043D7C:\n\ - ldr r1, =gBattleCommunication\n\ - mov r3, r8\n\ - ldr r0, [r3]\n\ - adds r0, 0xB2\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x3]\n\ - ldr r1, =gBattleScripting\n\ - ldr r0, =gBankAttacker\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x17]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =BattleScript_SynchronizeActivates\n\ - str r0, [r1]\n\ - ldr r0, [r4]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r4]\n\ - b _080443D0\n\ - .pool\n\ -_08043DC4:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - blt _08043DD0\n\ - b _0804441E\n\ -_08043DD0:\n\ - ldr r0, =gBattleMons\n\ - adds r5, r1, 0\n\ - ldr r2, =gStatuses3\n\ - adds r3, r0, 0\n\ - adds r3, 0x20\n\ - movs r6, 0x80\n\ - lsls r6, 12\n\ -_08043DDE:\n\ - ldrb r1, [r3]\n\ - cmp r1, 0x16\n\ - bne _08043DEE\n\ - ldr r0, [r2]\n\ - ands r0, r6\n\ - cmp r0, 0\n\ - beq _08043DEE\n\ - b _08044324\n\ -_08043DEE:\n\ - adds r2, 0x4\n\ - adds r3, 0x58\n\ - adds r4, 0x1\n\ - cmp r4, r5\n\ - blt _08043DDE\n\ - b _0804441E\n\ - .pool\n\ -_08043E08:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08043E14\n\ - b _0804441E\n\ -_08043E14:\n\ - ldr r5, =gActiveBank\n\ - mov r8, r5\n\ - ldr r0, =gBattleMons\n\ - adds r0, 0x20\n\ - str r0, [sp, 0x1C]\n\ - movs r1, 0\n\ - str r1, [sp, 0x20]\n\ -_08043E22:\n\ - ldr r2, [sp, 0x1C]\n\ - ldrb r0, [r2]\n\ - cmp r0, 0x24\n\ - beq _08043E2C\n\ - b _08043FBE\n\ -_08043E2C:\n\ - ldr r0, =gStatuses3\n\ - ldr r3, [sp, 0x20]\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 13\n\ - ands r1, r0\n\ - str r3, [sp, 0x18]\n\ - cmp r1, 0\n\ - bne _08043E42\n\ - b _08043FBE\n\ -_08043E42:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankIdentity\n\ - movs r1, 0x1\n\ - adds r5, r0, 0\n\ - eors r5, r1\n\ - ands r5, r1\n\ - adds r0, r5, 0\n\ - bl GetBankByIdentity\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r0, r5, 0x2\n\ - bl GetBankByIdentity\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, =gBattleTypeFlags\n\ - ldr r0, [r0]\n\ - movs r2, 0x1\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _08043E74\n\ - b _08043F84\n\ -_08043E74:\n\ - movs r1, 0x58\n\ - adds r0, r6, 0\n\ - muls r0, r1\n\ - ldr r3, =gBattleMons\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08043F40\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08043EFC\n\ - movs r1, 0x58\n\ - adds r0, r7, 0\n\ - muls r0, r1\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08043EFC\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08043EFC\n\ - str r2, [sp, 0x24]\n\ - bl Random\n\ - ldr r2, [sp, 0x24]\n\ - adds r1, r2, 0\n\ - ands r1, r0\n\ - lsls r1, 1\n\ - orrs r5, r1\n\ - adds r0, r5, 0\n\ - bl GetBankByIdentity\n\ - mov r2, r8\n\ - strb r0, [r2]\n\ - ldrb r0, [r2]\n\ - movs r3, 0x58\n\ - muls r0, r3\n\ - ldr r5, =gBattleMons\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - ldr r1, [sp, 0x1C]\n\ - strb r0, [r1]\n\ - ldrb r0, [r2]\n\ - muls r0, r3\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - ldr r2, =gLastUsedAbility\n\ - strb r0, [r2]\n\ - b _08043FAC\n\ - .pool\n\ -_08043EFC:\n\ - ldr r3, =gBattleMons\n\ - movs r2, 0x58\n\ - adds r0, r6, 0\n\ - muls r0, r2\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08043F40\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08043F40\n\ - mov r5, r8\n\ - strb r6, [r5]\n\ - adds r1, r4, 0\n\ - muls r1, r2\n\ - adds r1, r3\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r1, 0x20\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - b _08043FA8\n\ - .pool\n\ -_08043F40:\n\ - ldr r3, =gBattleMons\n\ - movs r2, 0x58\n\ - adds r0, r7, 0\n\ - muls r0, r2\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08043FB6\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08043FB6\n\ - mov r5, r8\n\ - strb r7, [r5]\n\ - adds r1, r4, 0\n\ - muls r1, r2\n\ - adds r1, r3\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r1, 0x20\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - b _08043FA8\n\ - .pool\n\ -_08043F84:\n\ - mov r2, r8\n\ - strb r6, [r2]\n\ - movs r3, 0x58\n\ - adds r0, r6, 0\n\ - muls r0, r3\n\ - ldr r5, =gBattleMons\n\ - adds r0, r5\n\ - adds r2, r0, 0\n\ - adds r2, 0x20\n\ - ldrb r1, [r2]\n\ - cmp r1, 0\n\ - beq _08043FB6\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _08043FB6\n\ - ldr r0, [sp, 0x1C]\n\ - strb r1, [r0]\n\ - ldrb r0, [r2]\n\ -_08043FA8:\n\ - ldr r1, =gLastUsedAbility\n\ - strb r0, [r1]\n\ -_08043FAC:\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08043FB6:\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - beq _08043FBE\n\ - b _08044340\n\ -_08043FBE:\n\ - ldr r3, [sp, 0x1C]\n\ - adds r3, 0x58\n\ - str r3, [sp, 0x1C]\n\ - ldr r5, [sp, 0x20]\n\ - adds r5, 0x4\n\ - str r5, [sp, 0x20]\n\ - adds r4, 0x1\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bge _08043FD6\n\ - b _08043E22\n\ -_08043FD6:\n\ - b _0804441E\n\ - .pool\n\ -_08043FE4:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - blt _08043FF0\n\ - b _0804441E\n\ -_08043FF0:\n\ - ldr r0, =gBattleMons\n\ - adds r5, r1, 0\n\ - ldr r2, =gStatuses3\n\ - adds r3, r0, 0\n\ - adds r3, 0x20\n\ - movs r6, 0x80\n\ - lsls r6, 12\n\ -_08043FFE:\n\ - ldrb r1, [r3]\n\ - cmp r1, 0x16\n\ - bne _0804400E\n\ - ldr r0, [r2]\n\ - ands r0, r6\n\ - cmp r0, 0\n\ - beq _0804400E\n\ - b _080443B4\n\ -_0804400E:\n\ - adds r2, 0x4\n\ - adds r3, 0x58\n\ - adds r4, 0x1\n\ - cmp r4, r5\n\ - blt _08043FFE\n\ - b _0804441E\n\ - .pool\n\ -_08044028:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _0804403E\n\ - b _0804441E\n\ -_0804403E:\n\ - ldr r7, =gBattleMons\n\ -_08044040:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r3, r4, 0x1\n\ - cmp r0, r5\n\ - beq _0804406A\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _0804406A\n\ - ldr r0, =gLastUsedAbility\n\ - strb r6, [r0]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_0804406A:\n\ - adds r4, r3, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044040\n\ - b _0804441E\n\ - .pool\n\ -_08044084:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _0804409A\n\ - b _0804441E\n\ -_0804409A:\n\ - ldr r7, =gBattleMons\n\ -_0804409C:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r3, r4, 0x1\n\ - cmp r0, r5\n\ - bne _080440C6\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _080440C6\n\ - ldr r0, =gLastUsedAbility\n\ - strb r6, [r0]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_080440C6:\n\ - adds r4, r3, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _0804409C\n\ - b _0804441E\n\ - .pool\n\ -_080440E0:\n\ - ldrb r0, [r7]\n\ - cmp r0, 0xFD\n\ - beq _08044104\n\ - cmp r0, 0xFE\n\ - beq _0804413C\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - adds r5, r0, 0\n\ - ldrb r0, [r5]\n\ - cmp r4, r0\n\ - blt _080440F8\n\ - b _0804441E\n\ -_080440F8:\n\ - ldr r2, =gBattleMons\n\ - b _08044174\n\ - .pool\n\ -_08044104:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044110\n\ - b _0804441E\n\ -_08044110:\n\ - ldr r5, =gStatuses3\n\ - movs r2, 0x80\n\ - lsls r2, 9\n\ - adds r1, r0, 0\n\ -_08044118:\n\ - lsls r0, r4, 2\n\ - adds r0, r5\n\ - ldr r0, [r0]\n\ - ands r0, r2\n\ - adds r3, r4, 0x1\n\ - cmp r0, 0\n\ - beq _0804412C\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_0804412C:\n\ - adds r4, r3, 0\n\ - cmp r4, r1\n\ - blt _08044118\n\ - b _0804441E\n\ - .pool\n\ -_0804413C:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044148\n\ - b _0804441E\n\ -_08044148:\n\ - ldr r5, =gStatuses3\n\ - movs r2, 0x80\n\ - lsls r2, 10\n\ - adds r1, r0, 0\n\ -_08044150:\n\ - lsls r0, r4, 2\n\ - adds r0, r5\n\ - ldr r0, [r0]\n\ - ands r0, r2\n\ - adds r3, r4, 0x1\n\ - cmp r0, 0\n\ - beq _08044164\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08044164:\n\ - adds r4, r3, 0\n\ - cmp r4, r1\n\ - blt _08044150\n\ - b _0804441E\n\ - .pool\n\ -_08044174:\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r2\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0x1\n\ - cmp r0, r6\n\ - bne _0804418C\n\ - strb r6, [r7]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_0804418C:\n\ - adds r4, r3, 0\n\ - ldrb r1, [r5]\n\ - cmp r4, r1\n\ - blt _08044174\n\ - b _0804441E\n\ -_08044196:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _080441A2\n\ - b _0804441E\n\ -_080441A2:\n\ - ldr r2, =gBattleMons\n\ - mov r8, r2\n\ - adds r2, r0, 0\n\ - movs r5, 0x58\n\ -_080441AA:\n\ - adds r0, r4, 0\n\ - muls r0, r5\n\ - mov r3, r8\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0x1\n\ - cmp r0, r6\n\ - bne _080441CC\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _080441CC\n\ - strb r6, [r7]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_080441CC:\n\ - adds r4, r3, 0\n\ - cmp r4, r2\n\ - blt _080441AA\n\ - b _0804441E\n\ - .pool\n\ -_080441DC:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _080441E8\n\ - b _0804441E\n\ -_080441E8:\n\ - ldr r7, =gBattleMons\n\ - adds r1, r0, 0\n\ - movs r5, 0x58\n\ - ldr r2, =gLastUsedAbility\n\ -_080441F0:\n\ - adds r0, r4, 0\n\ - muls r0, r5\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0x1\n\ - cmp r0, r6\n\ - bne _0804420C\n\ - cmp r4, r10\n\ - beq _0804420C\n\ - strb r6, [r2]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_0804420C:\n\ - adds r4, r3, 0\n\ - cmp r4, r1\n\ - blt _080441F0\n\ - b _0804441E\n\ - .pool\n\ -_08044220:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044236\n\ - b _0804441E\n\ -_08044236:\n\ - ldr r7, =gBattleMons\n\ -_08044238:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, r5\n\ - beq _08044264\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _08044264\n\ - ldr r0, =gLastUsedAbility\n\ - strb r6, [r0]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08044264:\n\ - adds r4, 0x1\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044238\n\ - b _0804441E\n\ - .pool\n\ -_0804427C:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044292\n\ - b _0804441E\n\ -_08044292:\n\ - ldr r7, =gBattleMons\n\ -_08044294:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, r5\n\ - bne _080442C0\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _080442C0\n\ - ldr r0, =gLastUsedAbility\n\ - strb r6, [r0]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_080442C0:\n\ - adds r4, 0x1\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08044294\n\ - b _0804441E\n\ - .pool\n\ -_080442D8:\n\ - ldr r0, =BattleScript_CastformChange\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, =gBattleScripting\n\ - strb r6, [r0, 0x17]\n\ -_080442E2:\n\ - ldr r0, =gBattleStruct\n\ - ldr r0, [r0]\n\ - adds r0, 0x7F\n\ - mov r1, r9\n\ - subs r1, 0x1\n\ - strb r1, [r0]\n\ - b _0804441E\n\ - .pool\n\ -_080442FC:\n\ - ldr r0, =BattleScript_CastformChange\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, =gBattleScripting\n\ - mov r5, r10\n\ - strb r5, [r0, 0x17]\n\ - ldr r0, =gBattleStruct\n\ - ldr r0, [r0]\n\ - adds r0, 0x7F\n\ - mov r1, r9\n\ - subs r1, 0x1\n\ - strb r1, [r0]\n\ - b _0804443A\n\ - .pool\n\ -_08044324:\n\ - strb r1, [r7]\n\ - ldr r0, [r2]\n\ - ldr r1, =0xfff7ffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r0, =gUnknown_082DB4B8\n\ - bl BattleScriptPushCursorAndCallback\n\ - b _080443C8\n\ - .pool\n\ -_08044340:\n\ - ldr r0, =BattleScript_TraceActivates\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r1, =gStatuses3\n\ - ldr r0, [sp, 0x18]\n\ - adds r1, r0, r1\n\ - ldr r0, [r1]\n\ - ldr r2, =0xffefffff\n\ - ands r0, r2\n\ - str r0, [r1]\n\ - ldr r0, =gBattleScripting\n\ - strb r4, [r0, 0x17]\n\ - ldr r1, =gBattleTextBuff1\n\ - movs r4, 0xFD\n\ - strb r4, [r1]\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x1]\n\ - ldr r2, =gActiveBank\n\ - ldrb r0, [r2]\n\ - strb r0, [r1, 0x2]\n\ - ldr r3, =gBattlePartyID\n\ - ldrb r0, [r2]\n\ - lsls r0, 1\n\ - adds r0, r3\n\ - ldrh r0, [r0]\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x4]\n\ - ldr r1, =gBattleTextBuff2\n\ - strb r4, [r1]\n\ - movs r0, 0x9\n\ - strb r0, [r1, 0x1]\n\ - ldr r0, =gLastUsedAbility\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x2]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - strb r0, [r1, 0x3]\n\ - b _0804441E\n\ - .pool\n\ -_080443B4:\n\ - strb r1, [r7]\n\ - ldr r0, [r2]\n\ - ldr r1, =0xfff7ffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - ldr r0, =gUnknown_082DB4C1\n\ - str r0, [r1]\n\ -_080443C8:\n\ - ldr r0, =gBattleStruct\n\ - ldr r0, [r0]\n\ - adds r0, 0xD8\n\ - strb r4, [r0]\n\ -_080443D0:\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - b _0804441E\n\ - .pool\n\ -_080443EC:\n\ - movs r4, 0\n\ - ldr r0, =gNoOfAllBanks\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - bge _0804441E\n\ - ldr r0, =gBattleMons\n\ - adds r2, r1, 0\n\ - adds r1, r0, 0\n\ - adds r1, 0x20\n\ - ldr r3, =gLastUsedAbility\n\ -_08044400:\n\ - ldrb r0, [r1]\n\ - cmp r0, r6\n\ - bne _08044416\n\ - cmp r4, r10\n\ - beq _08044416\n\ - strb r6, [r3]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08044416:\n\ - adds r1, 0x58\n\ - adds r4, 0x1\n\ - cmp r4, r2\n\ - blt _08044400\n\ -_0804441E:\n\ - mov r1, r9\n\ - cmp r1, 0\n\ - beq _0804443A\n\ -_08044424:\n\ - ldr r2, [sp, 0x4]\n\ - cmp r2, 0xB\n\ - bhi _0804443A\n\ - ldr r1, =gLastUsedAbility\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFF\n\ - beq _0804443A\n\ - adds r1, r0, 0\n\ - mov r0, r10\n\ - bl RecordAbilityBattle\n\ -_0804443A:\n\ - mov r0, r9\n\ - add sp, 0x28\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .pool\n\ - .syntax divided"); -} -#endif // NONMATCHING void BattleScriptExecute(const u8* BS_ptr) { From f300f853c8675817d00bbbc0caf57e5f80d6b573 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Thu, 12 Oct 2017 14:36:26 -0500 Subject: [PATCH 129/182] Add const qualifiers to scrcmd --- include/script.h | 4 +- include/script_movement.h | 2 +- include/shop.h | 6 +-- include/text.h | 2 +- src/scrcmd.c | 98 +++++++++++++++++++-------------------- src/script.c | 4 +- src/text.c | 2 +- 7 files changed, 59 insertions(+), 59 deletions(-) diff --git a/include/script.h b/include/script.h index ec6a212bcd..2b5f8c2ce7 100644 --- a/include/script.h +++ b/include/script.h @@ -28,8 +28,8 @@ void StopScript(struct ScriptContext *ctx); bool8 RunScriptCommand(struct ScriptContext *ctx); u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr); const u8 *ScriptPop(struct ScriptContext *ctx); -void ScriptJump(struct ScriptContext *ctx, u8 *ptr); -void ScriptCall(struct ScriptContext *ctx, u8 *ptr); +void ScriptJump(struct ScriptContext *ctx, const u8 *ptr); +void ScriptCall(struct ScriptContext *ctx, const u8 *ptr); void ScriptReturn(struct ScriptContext *ctx); u16 ScriptReadHalfword(struct ScriptContext *ctx); u32 ScriptReadWord(struct ScriptContext *ctx); diff --git a/include/script_movement.h b/include/script_movement.h index 8f505cc675..4c3fa60024 100644 --- a/include/script_movement.h +++ b/include/script_movement.h @@ -1,7 +1,7 @@ #ifndef GUARD_SCRIPT_MOVEMENT_H #define GUARD_SCRIPT_MOVEMENT_H -bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *); +bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, const u8 *); bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); void sub_80D338C(void); diff --git a/include/shop.h b/include/shop.h index d14c839eee..ee28877794 100644 --- a/include/shop.h +++ b/include/shop.h @@ -1,8 +1,8 @@ #ifndef GUARD_SHOP_H #define GUARD_SHOP_H -void CreatePokemartMenu(u16 *); -void CreateDecorationShop1Menu(u16 *); -void CreateDecorationShop2Menu(u16 *); +void CreatePokemartMenu(const u16 *); +void CreateDecorationShop1Menu(const u16 *); +void CreateDecorationShop2Menu(const u16 *); #endif // GUARD_SHOP_H diff --git a/include/text.h b/include/text.h index c3b27f7f1b..594661717e 100644 --- a/include/text.h +++ b/include/text.h @@ -196,7 +196,7 @@ u8 gGlyphDimensions[0x2]; void SetFontsPointer(const struct FontInfo *fonts); void DeactivateAllTextPrinters(void); -u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); +u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); void RunTextPrinters(void); bool16 IsTextPrinterActive(u8 id); diff --git a/src/scrcmd.c b/src/scrcmd.c index f2c11e4b0a..1bc7d709ab 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -73,9 +73,9 @@ extern u16 gScriptContestCategory; IWRAM_DATA u8 gUnknown_03000F30; -extern SpecialFunc gSpecials[]; -extern u8 *gStdScripts[]; -extern u8 *gStdScripts_End[]; +extern const SpecialFunc gSpecials[]; +extern const u8 *gStdScripts[]; +extern const u8 *gStdScripts_End[]; void sub_809BDB4(void); @@ -157,7 +157,7 @@ bool8 ScrCmd_waitstate(struct ScriptContext *ctx) bool8 ScrCmd_goto(struct ScriptContext *ctx) { - u8 *ptr = (u8 *)ScriptReadWord(ctx); + const u8 *ptr = (const u8 *)ScriptReadWord(ctx); ScriptJump(ctx, ptr); return FALSE; @@ -171,7 +171,7 @@ bool8 ScrCmd_return(struct ScriptContext *ctx) bool8 ScrCmd_call(struct ScriptContext *ctx) { - u8 *ptr = (u8 *)ScriptReadWord(ctx); + const u8 *ptr = (const u8 *)ScriptReadWord(ctx); ScriptCall(ctx, ptr); return FALSE; @@ -180,7 +180,7 @@ bool8 ScrCmd_call(struct ScriptContext *ctx) bool8 ScrCmd_goto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)ScriptReadWord(ctx); + const u8 *ptr = (const u8 *)ScriptReadWord(ctx); if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); @@ -190,7 +190,7 @@ bool8 ScrCmd_goto_if(struct ScriptContext *ctx) bool8 ScrCmd_call_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)ScriptReadWord(ctx); + const u8 *ptr = (const u8 *)ScriptReadWord(ctx); if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); @@ -225,7 +225,7 @@ bool8 ScrCmd_vcall(struct ScriptContext *ctx) bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); + const u8 *ptr = (const u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); @@ -235,7 +235,7 @@ bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); + const u8 *ptr = (const u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); @@ -245,7 +245,7 @@ bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) bool8 ScrCmd_gotostd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); - u8 **ptr = &gStdScripts[index]; + const u8 **ptr = &gStdScripts[index]; if (ptr < gStdScripts_End) ScriptJump(ctx, *ptr); @@ -255,7 +255,7 @@ bool8 ScrCmd_gotostd(struct ScriptContext *ctx) bool8 ScrCmd_callstd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); - u8 **ptr = &gStdScripts[index]; + const u8 **ptr = &gStdScripts[index]; if (ptr < gStdScripts_End) ScriptCall(ctx, *ptr); @@ -269,7 +269,7 @@ bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { - u8 **ptr = &gStdScripts[index]; + const u8 **ptr = &gStdScripts[index]; if (ptr < gStdScripts_End) ScriptJump(ctx, *ptr); } @@ -283,7 +283,7 @@ bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { - u8 **ptr = &gStdScripts[index]; + const u8 **ptr = &gStdScripts[index]; if (ptr < gStdScripts_End) ScriptCall(ctx, *ptr); } @@ -292,7 +292,7 @@ bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) bool8 ScrCmd_gotoram(struct ScriptContext *ctx) { - ScriptJump(ctx, (u8 *)gUnknown_020375C0); + ScriptJump(ctx, (const u8 *)gUnknown_020375C0); return FALSE; } @@ -323,7 +323,7 @@ bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); - ctx->data[index] = *(u8 *)ScriptReadWord(ctx); + ctx->data[index] = *(const u8 *)ScriptReadWord(ctx); return FALSE; } @@ -363,7 +363,7 @@ bool8 ScrCmd_copylocal(struct ScriptContext *ctx) bool8 ScrCmd_copybyte(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); - *ptr = *(u8 *)ScriptReadWord(ctx); + *ptr = *(const u8 *)ScriptReadWord(ctx); return FALSE; } @@ -400,8 +400,8 @@ u8 compare_012(u16 a1, u16 a2) // comparelocaltolocal bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) { - u8 value1 = ctx->data[ScriptReadByte(ctx)]; - u8 value2 = ctx->data[ScriptReadByte(ctx)]; + const u8 value1 = ctx->data[ScriptReadByte(ctx)]; + const u8 value2 = ctx->data[ScriptReadByte(ctx)]; ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -410,8 +410,8 @@ bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) // comparelocaltoimm bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) { - u8 value1 = ctx->data[ScriptReadByte(ctx)]; - u8 value2 = ScriptReadByte(ctx); + const u8 value1 = ctx->data[ScriptReadByte(ctx)]; + const u8 value2 = ScriptReadByte(ctx); ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -419,8 +419,8 @@ bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) { - u8 value1 = ctx->data[ScriptReadByte(ctx)]; - u8 value2 = *(u8 *)ScriptReadWord(ctx); + const u8 value1 = ctx->data[ScriptReadByte(ctx)]; + const u8 value2 = *(const u8 *)ScriptReadWord(ctx); ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -428,8 +428,8 @@ bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) { - u8 value1 = *(u8 *)ScriptReadWord(ctx); - u8 value2 = ctx->data[ScriptReadByte(ctx)]; + const u8 value1 = *(const u8 *)ScriptReadWord(ctx); + const u8 value2 = ctx->data[ScriptReadByte(ctx)]; ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -437,8 +437,8 @@ bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) { - u8 value1 = *(u8 *)ScriptReadWord(ctx); - u8 value2 = ScriptReadByte(ctx); + const u8 value1 = *(const u8 *)ScriptReadWord(ctx); + const u8 value2 = ScriptReadByte(ctx); ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -446,8 +446,8 @@ bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) { - u8 value1 = *(u8 *)ScriptReadWord(ctx); - u8 value2 = *(u8 *)ScriptReadWord(ctx); + const u8 value1 = *(const u8 *)ScriptReadWord(ctx); + const u8 value2 = *(const u8 *)ScriptReadWord(ctx); ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -455,8 +455,8 @@ bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) { - u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); - u16 value2 = ScriptReadHalfword(ctx); + const u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); + const u16 value2 = ScriptReadHalfword(ctx); ctx->comparisonResult = compare_012(value1, value2); return FALSE; @@ -464,8 +464,8 @@ bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) { - u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); - u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); + const u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); + const u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); ctx->comparisonResult = compare_012(*ptr1, *ptr2); return FALSE; @@ -1003,7 +1003,7 @@ bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); - void *movementScript = (void *)ScriptReadWord(ctx); + const void *movementScript = (const void *)ScriptReadWord(ctx); ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; @@ -1013,7 +1013,7 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); - void *movementScript = (void *)ScriptReadWord(ctx); + const void *movementScript = (const void *)ScriptReadWord(ctx); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -1274,30 +1274,30 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) bool8 ScrCmd_message(struct ScriptContext *ctx) { - u8 *msg = (u8 *)ScriptReadWord(ctx); + const u8 *msg = (const u8 *)ScriptReadWord(ctx); if (msg == NULL) - msg = (u8 *)ctx->data[0]; + msg = (const u8 *)ctx->data[0]; ShowFieldMessage(msg); return FALSE; } bool8 ScrCmd_cmdDF(struct ScriptContext *ctx) { - u8 *msg = (u8 *)ScriptReadWord(ctx); + const u8 *msg = (const u8 *)ScriptReadWord(ctx); if (msg == NULL) - msg = (u8 *)ctx->data[0]; + msg = (const u8 *)ctx->data[0]; sub_8098238(msg); return FALSE; } bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) { - u8 *msg = (u8 *)ScriptReadWord(ctx); + const u8 *msg = (const u8 *)ScriptReadWord(ctx); if (msg == NULL) - msg = (u8 *)ctx->data[0]; + msg = (const u8 *)ctx->data[0]; gTextFlags.flag_2 = TRUE; gTextFlags.flag_3 = TRUE; ShowFieldAutoScrollMessage(msg); @@ -1306,10 +1306,10 @@ bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) bool8 ScrCmd_cmdDB(struct ScriptContext *ctx) { - u8 *msg = (u8 *)ScriptReadWord(ctx); + const u8 *msg = (const u8 *)ScriptReadWord(ctx); if (msg == NULL) - msg = (u8 *)ctx->data[0]; + msg = (const u8 *)ctx->data[0]; sub_81973A4(); sub_81973C4(0, 1); PrintTextOnWindow(0, 1, msg, 0, 1, 0, 0); @@ -1780,7 +1780,7 @@ bool8 ScrCmd_cmdE1(struct ScriptContext *ctx) bool8 ScrCmd_getstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); - u8 *text = (u8 *)ScriptReadWord(ctx); + const u8 *text = (u8 *)ScriptReadWord(ctx); StringCopy(sScriptStringVars[stringVarIndex], text); return FALSE; @@ -1788,7 +1788,7 @@ bool8 ScrCmd_getstring(struct ScriptContext *ctx) bool8 ScrCmd_vloadword(struct ScriptContext *ctx) { - u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); + const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4); StringExpandPlaceholders(gStringVar4, ptr); return FALSE; @@ -1799,7 +1799,7 @@ bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); - u8 *src = (u8 *)(addr - gUnknown_020375C4); + const u8 *src = (u8 *)(addr - gUnknown_020375C4); u8 *dest = sScriptStringVars[stringVarIndex]; StringCopy(dest, src); return FALSE; @@ -2022,7 +2022,7 @@ bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { - void *ptr = (void *)ScriptReadWord(ctx); + const void *ptr = (void *)ScriptReadWord(ctx); CreatePokemartMenu(ptr); ScriptContext1_Stop(); @@ -2031,7 +2031,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) { - void *ptr = (void *)ScriptReadWord(ctx); + const void *ptr = (void *)ScriptReadWord(ctx); CreateDecorationShop1Menu(ptr); ScriptContext1_Stop(); @@ -2040,7 +2040,7 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) { - void *ptr = (void *)ScriptReadWord(ctx); + const void *ptr = (void *)ScriptReadWord(ctx); CreateDecorationShop2Menu(ptr); ScriptContext1_Stop(); @@ -2360,7 +2360,7 @@ bool8 ScrCmd_cmdCE(struct ScriptContext *ctx) bool8 ScrCmd_cmdCF(struct ScriptContext *ctx) { - u8* v1 = sub_8099244(); + const u8* v1 = sub_8099244(); if (v1) { diff --git a/src/script.c b/src/script.c index b2809a1379..5a1c5daa99 100644 --- a/src/script.c +++ b/src/script.c @@ -134,12 +134,12 @@ const u8 *ScriptPop(struct ScriptContext *ctx) return ctx->stack[ctx->stackDepth]; } -void ScriptJump(struct ScriptContext *ctx, u8 *ptr) +void ScriptJump(struct ScriptContext *ctx, const u8 *ptr) { ctx->scriptPtr = ptr; } -void ScriptCall(struct ScriptContext *ctx, u8 *ptr) +void ScriptCall(struct ScriptContext *ctx, const u8 *ptr) { ScriptPush(ctx, ctx->scriptPtr); ctx->scriptPtr = ptr; diff --git a/src/text.c b/src/text.c index 7cc46cd929..8108a68675 100644 --- a/src/text.c +++ b/src/text.c @@ -145,7 +145,7 @@ void DeactivateAllTextPrinters (void) gTextPrinters[printer].sub_union.sub.active = 0; } -u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)) +u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)) { struct TextSubPrinter subPrinter; From 8d31a46c6fbc2dedd39ec9e9687f372ac102303d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 12 Oct 2017 15:59:43 -0400 Subject: [PATCH 130/182] sub_8121478 --- asm/mail.s | 158 -------------------------------------------- include/easy_chat.h | 3 +- include/mail_data.h | 12 ++++ include/malloc.h | 2 +- ld_script.txt | 1 + src/mail.c | 127 +++++++++++++++++++++++++++++++++++ 6 files changed, 143 insertions(+), 160 deletions(-) create mode 100644 include/mail_data.h create mode 100644 src/mail.c diff --git a/asm/mail.s b/asm/mail.s index 5f76a5ef0e..7ae0b78d6d 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -5,164 +5,6 @@ .text - thumb_func_start sub_8121478 -sub_8121478: @ 8121478 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r4, =gUnknown_0203A134 - ldr r0, =0x0000222c - bl AllocZeroed - str r0, [r4] - ldr r1, =0x0000021d - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x0000021e - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - ldr r4, [r4] - movs r3, 0x88 - lsls r3, 2 - adds r1, r4, r3 - ldr r0, =CopyEasyChatWord - str r0, [r1] - movs r0, 0x89 - lsls r0, 2 - adds r1, r4, r0 - ldr r0, =ConvertEasyChatWordsToString - str r0, [r1] - ldrh r1, [r5, 0x20] - adds r0, r1, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bhi _081214E8 - subs r1, 0x79 - subs r2, 0x4 - adds r0, r4, r2 - strb r1, [r0] - b _081214F2 - .pool -_081214E8: - ldr r3, =0x0000021a - adds r1, r4, r3 - movs r0, 0 - strb r0, [r1] - movs r6, 0 -_081214F2: - ldr r0, =gUnknown_0203A134 - ldr r1, [r0] - ldr r2, =0x0000021e - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08121504 - cmp r0, 0x1 - beq _0812152C -_08121504: - movs r3, 0x8A - lsls r3, 2 - adds r2, r1, r3 - subs r3, 0xE - adds r0, r1, r3 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, =gUnknown_0859F3B4 - b _08121540 - .pool -_0812152C: - movs r0, 0x8A - lsls r0, 2 - adds r2, r1, r0 - ldr r3, =0x0000021a - adds r0, r1, r3 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, =gUnknown_0859F458 -_08121540: - adds r0, r1 - str r0, [r2] - ldrh r0, [r5, 0x1E] - mov r1, sp - bl sub_80D45E8 - lsls r0, 16 - ldr r1, =0xffff0000 - adds r0, r1 - movs r1, 0xCD - lsls r1, 17 - cmp r0, r1 - bhi _081215AC - ldr r1, =gUnknown_0203A134 - ldr r2, [r1] - ldr r3, =0x0000021a - adds r0, r2, r3 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x6 - beq _0812158C - cmp r0, 0x9 - beq _0812159C - ldr r0, =0x0000021b - adds r1, r2, r0 - movs r0, 0 - strb r0, [r1] - b _081215BA - .pool -_0812158C: - ldr r0, =0x0000021b - adds r1, r2, r0 - movs r0, 0x1 - strb r0, [r1] - b _081215BA - .pool -_0812159C: - ldr r0, =0x0000021b - adds r1, r2, r0 - movs r0, 0x2 - strb r0, [r1] - b _081215BA - .pool -_081215AC: - ldr r0, =gUnknown_0203A134 - ldr r1, [r0] - ldr r2, =0x0000021b - adds r1, r2 - movs r2, 0 - strb r2, [r1] - adds r3, r0, 0 -_081215BA: - ldr r1, [r3] - movs r3, 0x85 - lsls r3, 2 - adds r0, r1, r3 - str r5, [r0] - movs r2, 0x83 - lsls r2, 2 - adds r0, r1, r2 - str r7, [r0] - adds r3, 0x4 - adds r0, r1, r3 - strb r6, [r0] - ldr r0, =sub_81219F0 - bl SetMainCallback2 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121478 - thumb_func_start sub_81215EC sub_81215EC: @ 81215EC push {r4-r6,lr} diff --git a/include/easy_chat.h b/include/easy_chat.h index fc44b6a8aa..c9ba81c6de 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -30,7 +30,8 @@ enum void InitEasyChatPhrases(void); void easy_chat_input_maybe(void); -void CopyEasyChatWord(u8 *, u16); +void CopyEasyChatWord(u8 *dest, u16 word); +void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool32 sub_811F8D8(u16); #endif // GUARD_EASYCHAT_H diff --git a/include/mail_data.h b/include/mail_data.h new file mode 100644 index 0000000000..bf6540badd --- /dev/null +++ b/include/mail_data.h @@ -0,0 +1,12 @@ +#ifndef GUARD_MAIL_DATA_H +#define GUARD_MAIL_DATA_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +u16 sub_80D45E8(u16, u16 *); + +#endif //GUARD_MAIL_DATA_H diff --git a/include/malloc.h b/include/malloc.h index 4568e244ad..f3a7317975 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -2,7 +2,7 @@ #define GUARD_MALLOC_H #define malloc Alloc -#define calloc AllocZeroed +#define calloc(ct, sz) AllocZeroed((ct) * (sz)) #define free Free extern u8 gHeap[]; diff --git a/ld_script.txt b/ld_script.txt index 3e47864f16..dfc7905309 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -164,6 +164,7 @@ SECTIONS { asm/easy_chat.o(.text); asm/mon_markings.o(.text); asm/mauville_old_man.o(.text); + src/mail.o(.text); asm/mail.o(.text); asm/menu_helpers.o(.text); asm/dewford_trend.o(.text); diff --git a/src/mail.c b/src/mail.c new file mode 100644 index 0000000000..a21a297b66 --- /dev/null +++ b/src/mail.c @@ -0,0 +1,127 @@ + +// Includes +#include "global.h" +#include "main.h" +#include "species.h" +#include "malloc.h" +#include "easy_chat.h" +#include "mail_data.h" +#include "mail.h" + +// Static type declarations + +struct UnkMailStruct +{ + u8 unk_0_0:2; + u8 unk_0_2:2; + u8 unk_0_4:4; +}; + +struct MailLayout +{ + u8 var0; + u8 var1; + u8 var2; + u8 var3_0:4; + u8 var3_4:4; + struct UnkMailStruct *var4; + u32 var8; +}; + +struct Unk203A134 +{ + /*0x0000*/ u8 filler_0000[0x20c]; + /*0x020C*/ MainCallback callback; + /*0x0210*/ u8 filler_0210[4]; + /*0x0214*/ struct MailStruct *mail; + /*0x0218*/ bool8 flag; + /*0x0219*/ u8 filler_0219[1]; + /*0x021a*/ u8 mailType; + /*0x021b*/ u8 unk_021b; + /*0x021c*/ u8 unk_021c; + /*0x021d*/ u8 language; + /*0x021e*/ bool8 playerIsSender; + /*0x0220*/ void (*parserSingle)(u8 *dest, u16 word); + /*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2); + /*0x0228*/ const struct MailLayout *layout; + /*0x022c*/ u8 filler_022C[0x2000]; +}; + +struct MailGraphics +{ + u16 (*palette)[]; + u8 (*tiles)[]; + u8 (*tileMap)[]; + u16 var0C; + u16 var0E; + u16 color10; + u16 color12; +}; + +// Static RAM declarations + +EWRAM_DATA struct Unk203A134 *gUnknown_0203A134; + +// Static ROM declarations + +void sub_81219F0(void); + +// .rodata + +extern const struct MailLayout gUnknown_0859F3B4[]; +extern const struct MailLayout gUnknown_0859F458[]; + +// .text + +void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) { + u16 buffer[2]; + u16 species; + + gUnknown_0203A134 = calloc(1, sizeof(struct Unk203A134)); + gUnknown_0203A134->language = LANGUAGE_ENGLISH; + gUnknown_0203A134->playerIsSender = TRUE; + gUnknown_0203A134->parserSingle = CopyEasyChatWord; + gUnknown_0203A134->parserMultiple = ConvertEasyChatWordsToString; + if (mail->itemId >= ITEM_ORANGE_MAIL && mail->itemId <= ITEM_RETRO_MAIL) { + gUnknown_0203A134->mailType = mail->itemId - ITEM_ORANGE_MAIL; + } + else + { + gUnknown_0203A134->mailType = 0; + flag = FALSE; + } + switch (gUnknown_0203A134->playerIsSender) + { + case FALSE: + default: + gUnknown_0203A134->layout = &gUnknown_0859F3B4[gUnknown_0203A134->mailType]; + break; + case TRUE: + gUnknown_0203A134->layout = &gUnknown_0859F458[gUnknown_0203A134->mailType]; + break; + } + species = sub_80D45E8(mail->species, buffer); + if (species >= SPECIES_BULBASAUR && species < NUM_SPECIES) + { + switch (gUnknown_0203A134->mailType) + { + default: + gUnknown_0203A134->unk_021b = 0; + break; + case ITEM_BEAD_MAIL - ITEM_ORANGE_MAIL: + gUnknown_0203A134->unk_021b = 1; + break; + case ITEM_DREAM_MAIL - ITEM_ORANGE_MAIL: + gUnknown_0203A134->unk_021b = 2; + break; + } + } + else + { + gUnknown_0203A134->unk_021b = 0; + } + gUnknown_0203A134->mail = mail; + gUnknown_0203A134->callback = callback; + gUnknown_0203A134->flag = flag; + SetMainCallback2(sub_81219F0); +} From 52af334b89e6549aea04614b7e9eccbc084b6eb8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 12 Oct 2017 22:59:01 -0400 Subject: [PATCH 131/182] sub_81215EC --- asm/mail.s | 428 ----------------------------------------- include/menu.h | 3 + include/pokemon_icon.h | 3 + include/rom4.h | 1 + src/mail.c | 154 ++++++++++++++- 5 files changed, 159 insertions(+), 430 deletions(-) diff --git a/asm/mail.s b/asm/mail.s index 7ae0b78d6d..eed252661f 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -5,434 +5,6 @@ .text - thumb_func_start sub_81215EC -sub_81215EC: @ 81215EC - push {r4-r6,lr} - sub sp, 0xC - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x12 - bls _08121600 - b _081219E2 -_08121600: - lsls r0, 2 - ldr r1, =_08121614 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08121614: - .4byte _08121660 - .4byte _0812166E - .4byte _08121688 - .4byte _0812168E - .4byte _08121694 - .4byte _0812169A - .4byte _081216F4 - .4byte _08121730 - .4byte _08121740 - .4byte _08121774 - .4byte _08121782 - .4byte _081217D8 - .4byte _081217EC - .4byte _081218B0 - .4byte _081218CC - .4byte _081218EC - .4byte _081218F6 - .4byte _08121910 - .4byte _08121980 -_08121660: - movs r0, 0 - bl SetVBlankCallback - bl remove_some_task - movs r0, 0 - b _081216EC -_0812166E: - add r1, sp, 0x8 - movs r0, 0 - strh r0, [r1] - movs r1, 0xE0 - lsls r1, 19 - ldr r2, =0x01000200 - add r0, sp, 0x8 - bl CpuSet - b _081219D4 - .pool -_08121688: - bl ResetPaletteFade - b _081219D4 -_0812168E: - bl ResetTasks - b _081219D4 -_08121694: - bl ResetSpriteData - b _081219D4 -_0812169A: - bl FreeAllSpritePalettes - bl reset_temp_tile_data_buffers - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 -_081216EC: - movs r1, 0 - bl SetGpuReg - b _081219D4 -_081216F4: - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_0859F290 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r4, =gUnknown_0203A134 - ldr r1, [r4] - movs r2, 0x8B - lsls r2, 2 - adds r1, r2 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, =0x0000122c - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - b _081219D4 - .pool -_08121730: - ldr r0, =gUnknown_0859F29C - bl InitWindows - bl DeactivateAllTextPrinters - b _081219D4 - .pool -_08121740: - ldr r2, =gUnknown_0859F2B8 - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - ldr r1, =0x0000021a - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - b _081219D4 - .pool -_08121774: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - cmp r0, 0 - bne _08121780 - b _081219D4 -_08121780: - b _081219E2 -_08121782: - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r2, =gUnknown_0859F2B8 - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - ldr r1, =0x0000021a - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x8 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - b _081219D4 - .pool -_081217D8: - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _081219D4 -_081217EC: - bl sub_8098C64 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r6, =gPlttBufferUnfaded - ldr r4, =gUnknown_0859F2B8 - ldr r0, =gUnknown_0203A134 - ldr r3, [r0] - ldr r2, =0x0000021a - adds r3, r2 - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x10] - subs r2, 0x26 - adds r0, r6, r2 - strh r1, [r0] - ldr r5, =gPlttBufferFaded - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x10] - adds r2, r5, r2 - strh r0, [r2] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x12] - movs r2, 0xFB - lsls r2, 1 - adds r0, r6, r2 - strh r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x12] - adds r2, r5, r2 - strh r0, [r2] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r1, =gUnknown_0859F2B0 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r6, 0x14] - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r1, 0x2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r6, 0x16] - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x16] - b _081219D4 - .pool -_081218B0: - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _081218C2 - b _081219D4 -_081218C2: - bl sub_8121A1C - b _081219D4 - .pool -_081218CC: - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _081218DE - b _081219D4 -_081218DE: - bl sub_8121B1C - bl RunTextPrinters - b _081219D4 - .pool -_081218EC: - bl sub_8087598 - cmp r0, 0x1 - bne _081219D4 - b _081219E2 -_081218F6: - ldr r0, =sub_8121C50 - bl SetVBlankCallback - ldr r2, =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - b _081219D4 - .pool -_08121910: - ldr r5, =gUnknown_0203A134 - ldr r0, [r5] - movs r1, 0x85 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0, 0x1E] - bl sub_80D2E84 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, [r5] - ldr r2, =0x0000021b - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08121940 - cmp r0, 0x2 - beq _08121958 - b _081219D4 - .pool -_08121940: - adds r0, r4, 0 - bl sub_80D2F68 - ldr r1, =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x60 - b _0812196A - .pool -_08121958: - adds r0, r4, 0 - bl sub_80D2F68 - ldr r1, =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x28 -_0812196A: - movs r3, 0x80 - bl sub_80D2D78 - ldr r1, [r5] - movs r2, 0x87 - lsls r2, 2 - adds r1, r2 - strb r0, [r1] - b _081219D4 - .pool -_08121980: - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 2 - adds r0, r1 - ldr r1, =sub_8121C98 - str r1, [r0] - movs r0, 0x1 - b _081219E4 - .pool -_081219D4: - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081219E2: - movs r0, 0 -_081219E4: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81215EC - thumb_func_start sub_81219F0 sub_81219F0: @ 81219F0 push {lr} diff --git a/include/menu.h b/include/menu.h index 766aa9d39c..d143c8a7c8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -19,5 +19,8 @@ void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); +void reset_temp_tile_data_buffers(void); +int decompress_and_copy_tile_data_to_vram(u8 bg_id, void *src, int size, u16 offset, u8 mode); +bool8 free_temp_tile_data_buffers_if_possible(void); #endif // GUARD_MENU_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index b82334355a..1863f9f7a1 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -3,5 +3,8 @@ const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u16 *GetValidMonIconPalettePtr(u16 speciesId); +u16 sub_80D2E84(u16 speciesId); +void sub_80D2F68(u16 iconId); +u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); #endif // GUARD_POKEMON_ICON_H diff --git a/include/rom4.h b/include/rom4.h index e19d277a63..80a050c77c 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -29,5 +29,6 @@ const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8); void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); void sub_8086230(void); void c2_exit_to_overworld_2_switch(void); +bool32 sub_8087598(void); #endif //GUARD_ROM4_H diff --git a/src/mail.c b/src/mail.c index a21a297b66..2e859f6ea3 100644 --- a/src/mail.c +++ b/src/mail.c @@ -2,6 +2,16 @@ // Includes #include "global.h" #include "main.h" +#include "rom4.h" +#include "task.h" +#include "unknown_task.h" +#include "palette.h" +#include "menu.h" +#include "text.h" +#include "text_window.h" +#include "gpu_regs.h" +#include "bg.h" +#include "pokemon_icon.h" #include "species.h" #include "malloc.h" #include "easy_chat.h" @@ -32,7 +42,7 @@ struct Unk203A134 { /*0x0000*/ u8 filler_0000[0x20c]; /*0x020C*/ MainCallback callback; - /*0x0210*/ u8 filler_0210[4]; + /*0x0210*/ MainCallback callback2; /*0x0214*/ struct MailStruct *mail; /*0x0218*/ bool8 flag; /*0x0219*/ u8 filler_0219[1]; @@ -44,7 +54,8 @@ struct Unk203A134 /*0x0220*/ void (*parserSingle)(u8 *dest, u16 word); /*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2); /*0x0228*/ const struct MailLayout *layout; - /*0x022c*/ u8 filler_022C[0x2000]; + /*0x022c*/ u8 bg1TilemapBuffer[0x1000]; + /*0x122c*/ u8 bg2TilemapBuffer[0x1000]; }; struct MailGraphics @@ -65,9 +76,17 @@ EWRAM_DATA struct Unk203A134 *gUnknown_0203A134; // Static ROM declarations void sub_81219F0(void); +void sub_8121A1C(void); +void sub_8121B1C(void); +void sub_8121C50(void); +void sub_8121C98(void); // .rodata +extern const struct BgTemplate gUnknown_0859F290[]; +extern const struct WindowTemplate gUnknown_0859F29C; +extern const u16 gUnknown_0859F2B0[][2]; +extern const struct MailGraphics gUnknown_0859F2B8[]; extern const struct MailLayout gUnknown_0859F3B4[]; extern const struct MailLayout gUnknown_0859F458[]; @@ -125,3 +144,134 @@ void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) { gUnknown_0203A134->flag = flag; SetMainCallback2(sub_81219F0); } + +bool8 sub_81215EC(void) +{ + u16 icon; + + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + remove_some_task(); + SetGpuReg(REG_OFFSET_DISPCNT, 0x0000); + break; + case 1: + CpuFill16(0, (void *)OAM, OAM_SIZE); + break; + case 2: + ResetPaletteFade(); + break; + case 3: + ResetTasks(); + break; + case 4: + ResetSpriteData(); + break; + case 5: + FreeAllSpritePalettes(); + reset_temp_tile_data_buffers(); + SetGpuReg(REG_OFFSET_BG0HOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG0VOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG1HOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG1VOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG2VOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG2HOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG3HOFS, 0x0000); + SetGpuReg(REG_OFFSET_BG3VOFS, 0x0000); + SetGpuReg(REG_OFFSET_BLDCNT, 0x0000); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000); + break; + case 6: + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_0859F290, 3); + SetBgTilemapBuffer(1, gUnknown_0203A134->bg1TilemapBuffer); + SetBgTilemapBuffer(2, gUnknown_0203A134->bg2TilemapBuffer); + break; + case 7: + InitWindows(&gUnknown_0859F29C); + DeactivateAllTextPrinters(); + break; + case 8: + decompress_and_copy_tile_data_to_vram(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tiles, 0, 0, 0); + break; + case 9: + if (free_temp_tile_data_buffers_if_possible()) + { + return FALSE; + } + break; + case 10: + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 1, 0, 0, 30, 20); + CopyToBgTilemapBuffer(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tileMap, 0, 0); + break; + case 11: + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + break; + case 12: + LoadPalette(sub_8098C64(), 240, 32); + gPlttBufferUnfaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10; + gPlttBufferFaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10; + gPlttBufferUnfaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12; + gPlttBufferFaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12; + LoadPalette(gUnknown_0859F2B8[gUnknown_0203A134->mailType].palette, 0, 32); + gPlttBufferUnfaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0]; + gPlttBufferFaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0]; + gPlttBufferUnfaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1]; + gPlttBufferFaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1]; + break; + case 13: + if (gUnknown_0203A134->flag) + { + sub_8121A1C(); + } + break; + case 14: + if (gUnknown_0203A134->flag) + { + sub_8121B1C(); + RunTextPrinters(); + } + break; + case 15: + if (sub_8087598() == TRUE) + { + return FALSE; + } + break; + case 16: + SetVBlankCallback(sub_8121C50); + gPaletteFade.bufferTransferDisabled = TRUE; + break; + case 17: + icon = sub_80D2E84(gUnknown_0203A134->mail->species); + switch (gUnknown_0203A134->unk_021b) + { + case 1: + sub_80D2F68(icon); + gUnknown_0203A134->unk_021c = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0); + break; + case 2: + sub_80D2F68(icon); + gUnknown_0203A134->unk_021c = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0); + break; + } + break; + case 18: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ShowBg(0); + ShowBg(1); + ShowBg(2); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = FALSE; + gUnknown_0203A134->callback2 = sub_8121C98; + return TRUE; + default: + return FALSE; + } + gMain.state ++; + return FALSE; +} From aa3af7a3a7106a14033c574977c082361f24907a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 12 Oct 2017 23:05:36 -0400 Subject: [PATCH 132/182] sub_81219F0 --- asm/mail.s | 24 ------------------------ include/menu_helpers.h | 11 +++++++++++ src/mail.c | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 24 deletions(-) create mode 100644 include/menu_helpers.h diff --git a/asm/mail.s b/asm/mail.s index eed252661f..0180b9418b 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -5,30 +5,6 @@ .text - thumb_func_start sub_81219F0 -sub_81219F0: @ 81219F0 - push {lr} -_081219F2: - bl sub_81215EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08121A0C - ldr r0, =sub_8121C64 - bl SetMainCallback2 - b _08121A18 - .pool -_08121A0C: - bl sub_81221AC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081219F2 -_08121A18: - pop {r0} - bx r0 - thumb_func_end sub_81219F0 - thumb_func_start sub_8121A1C sub_8121A1C: @ 8121A1C push {r4-r7,lr} diff --git a/include/menu_helpers.h b/include/menu_helpers.h new file mode 100644 index 0000000000..45ee95de54 --- /dev/null +++ b/include/menu_helpers.h @@ -0,0 +1,11 @@ +#ifndef GUARD_MENU_HELPERS_H +#define GUARD_MENU_HELPERS_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +bool8 sub_81221AC(void); + +#endif //GUARD_MENU_HELPERS_H diff --git a/src/mail.c b/src/mail.c index 2e859f6ea3..0f0530c046 100644 --- a/src/mail.c +++ b/src/mail.c @@ -7,6 +7,7 @@ #include "unknown_task.h" #include "palette.h" #include "menu.h" +#include "menu_helpers.h" #include "text.h" #include "text_window.h" #include "gpu_regs.h" @@ -79,6 +80,7 @@ void sub_81219F0(void); void sub_8121A1C(void); void sub_8121B1C(void); void sub_8121C50(void); +void sub_8121C64(void); void sub_8121C98(void); // .rodata @@ -275,3 +277,15 @@ bool8 sub_81215EC(void) gMain.state ++; return FALSE; } + +void sub_81219F0(void) +{ + do + { + if (sub_81215EC() == TRUE) + { + SetMainCallback2(sub_8121C64); + break; + } + } while (sub_81221AC() != TRUE); +} From 24bd8c73e17fa8795808a1b53745854026b8c3a0 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Thu, 12 Oct 2017 22:34:58 -0500 Subject: [PATCH 133/182] Name some new script commands --- data/event_script_command_function_table.inc | 44 +++++++-------- include/data2.h | 10 ++++ src/scrcmd.c | 57 ++++++++++---------- 3 files changed, 61 insertions(+), 50 deletions(-) diff --git a/data/event_script_command_function_table.inc b/data/event_script_command_function_table.inc index 675da0ea7a..7cd00c37d7 100644 --- a/data/event_script_command_function_table.inc +++ b/data/event_script_command_function_table.inc @@ -114,9 +114,9 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_multichoice .4byte ScrCmd_multichoicedefault .4byte ScrCmd_multichoicegrid - .4byte ScrCmd_cmd72 - .4byte ScrCmd_cmd73 - .4byte ScrCmd_cmd74 + .4byte ScrCmd_drawbox + .4byte ScrCmd_erasebox + .4byte ScrCmd_drawboxtext .4byte ScrCmd_drawpokepic .4byte ScrCmd_erasepokepic .4byte ScrCmd_drawcontestwinner @@ -177,8 +177,8 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_waitdooranim .4byte ScrCmd_setdooropen .4byte ScrCmd_setdoorclosed - .4byte ScrCmd_cmdB1 - .4byte ScrCmd_cmdB2 + .4byte ScrCmd_addelevmenuitem + .4byte ScrCmd_showelevmenu .4byte ScrCmd_checkcoins .4byte ScrCmd_givecoins .4byte ScrCmd_takecoins @@ -198,32 +198,32 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_incrementgamestat .4byte ScrCmd_setescapewarp .4byte ScrCmd_waitpokecry - .4byte ScrCmd_cmdC6 + .4byte ScrCmd_getboxname .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 - .4byte ScrCmd_cmdCD - .4byte ScrCmd_cmdCE + .4byte ScrCmd_setpokeobedient + .4byte ScrCmd_checkpokeobedience .4byte ScrCmd_cmdCF .4byte ScrCmd_nop1 - .4byte ScrCmd_cmdD1 - .4byte ScrCmd_cmdD2 - .4byte ScrCmd_cmdD3 - .4byte ScrCmd_cmdD4 - .4byte ScrCmd_cmdD5 - .4byte ScrCmd_cmdD6 - .4byte ScrCmd_cmdD7 + .4byte ScrCmd_warpD1 + .4byte ScrCmd_setpokemetlocation + .4byte ScrCmd_mossdeepgym1 + .4byte ScrCmd_mossdeepgym2 + .4byte ScrCmd_mossdeepgym3 + .4byte ScrCmd_mossdeepgym4 + .4byte ScrCmd_warpD7 .4byte ScrCmd_cmdD8 .4byte ScrCmd_cmdD9 .4byte ScrCmd_cmdDA .4byte ScrCmd_cmdDB - .4byte ScrCmd_cmdDC - .4byte ScrCmd_cmdDD - .4byte ScrCmd_cmdDE - .4byte ScrCmd_cmdDF - .4byte ScrCmd_cmdE0 - .4byte ScrCmd_cmdE1 - .4byte ScrCmd_cmdE2 + .4byte ScrCmd_fadescreenswapbuffers + .4byte ScrCmd_gettrainerclass + .4byte ScrCmd_gettrainername + .4byte ScrCmd_pokenavcall + .4byte ScrCmd_warpE0 + .4byte ScrCmd_getcontesttype + .4byte ScrCmd_getitemnameplural diff --git a/include/data2.h b/include/data2.h index ccb9b4b7e2..db9532811a 100644 --- a/include/data2.h +++ b/include/data2.h @@ -1,6 +1,16 @@ #ifndef GUARD_DATA2_H #define GUARD_DATA2_H +struct MonCoords +{ + // This would use a bitfield, but some function + // uses it as a u8 and casting won't match. + u8 coords; // u8 x:4, y:4; + u8 y_offset; +}; + +extern struct MonCoords gTrainerBackPicCoords[]; + extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; extern const u8 gAbilityNames[][13]; diff --git a/src/scrcmd.c b/src/scrcmd.c index 1bc7d709ab..f6039142cf 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -643,29 +643,29 @@ bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) { - u8 duration = ScriptReadByte(ctx); + u8 mode = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); - fade_screen(duration, delay); + fade_screen(mode, delay); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } -int ScrCmd_cmdDC(struct ScriptContext *ctx) +bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) { - u8 duration = ScriptReadByte(ctx); + u8 mode = ScriptReadByte(ctx); - switch (duration) + switch (mode) { case 1: default: CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE); - fade_screen(duration, 0); + fade_screen(mode, 0); break; case 0: case 2: CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_DECOMP_BUFFER_SIZE); - fade_screen(duration, 0); + fade_screen(mode, 0); break; } @@ -821,7 +821,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_cmdD7(struct ScriptContext *ctx) +bool8 ScrCmd_warpD7(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -1282,7 +1282,7 @@ bool8 ScrCmd_message(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdDF(struct ScriptContext *ctx) +bool8 ScrCmd_pokenavcall(struct ScriptContext *ctx) { const u8 *msg = (const u8 *)ScriptReadWord(ctx); @@ -1396,7 +1396,7 @@ bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) } } -bool8 ScrCmd_cmd72(struct ScriptContext *ctx) +bool8 ScrCmd_drawbox(struct ScriptContext *ctx) { /*u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1426,7 +1426,7 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) } } -bool8 ScrCmd_cmd73(struct ScriptContext *ctx) +bool8 ScrCmd_erasebox(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1437,7 +1437,7 @@ bool8 ScrCmd_cmd73(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmd74(struct ScriptContext *ctx) +bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1721,7 +1721,7 @@ bool8 ScrCmd_getitemname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdE2(struct ScriptContext *ctx) +bool8 ScrCmd_getitemnameplural(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1768,7 +1768,7 @@ bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdE1(struct ScriptContext *ctx) +bool8 ScrCmd_getcontesttype(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1805,7 +1805,7 @@ bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdC6(struct ScriptContext *ctx) +bool8 ScrCmd_getboxname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 boxId = VarGet(ScriptReadHalfword(ctx)); @@ -2242,7 +2242,7 @@ bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdB1(struct ScriptContext *ctx) +bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) { u8 v3 = ScriptReadByte(ctx); u16 v5 = VarGet(ScriptReadHalfword(ctx)); @@ -2253,7 +2253,7 @@ bool8 ScrCmd_cmdB1(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdB2(struct ScriptContext *ctx) +bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx) { /*ScriptShowElevatorMenu(); ScriptContext1_Stop(); @@ -2290,7 +2290,7 @@ bool8 ScrCmd_takecoins(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdD3(struct ScriptContext *ctx) +bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx) { u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -2298,13 +2298,13 @@ bool8 ScrCmd_cmdD3(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdD4(struct ScriptContext *ctx) +bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx) { sub_81A8AF8(); return FALSE; } -bool8 ScrCmd_cmdD5(struct ScriptContext *ctx) +bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx) { u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -2312,7 +2312,7 @@ bool8 ScrCmd_cmdD5(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdD6(struct ScriptContext *ctx) +bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx) { sub_81A895C(); return FALSE; @@ -2341,7 +2341,8 @@ bool8 ScrCmd_cmdD9(struct ScriptContext *ctx) } } -bool8 ScrCmd_cmdCD(struct ScriptContext *ctx) +// This command will force the Pokémon to be obedient, you don't get to choose which value to set its obedience to +bool8 ScrCmd_setpokeobedient(struct ScriptContext *ctx) { bool8 obedient = TRUE; u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2350,7 +2351,7 @@ bool8 ScrCmd_cmdCD(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdCE(struct ScriptContext *ctx) +bool8 ScrCmd_checkpokeobedience(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2370,7 +2371,7 @@ bool8 ScrCmd_cmdCF(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdD1(struct ScriptContext *ctx) +bool8 ScrCmd_warpD1(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -2385,7 +2386,7 @@ bool8 ScrCmd_cmdD1(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_cmdD2(struct ScriptContext *ctx) +bool8 ScrCmd_setpokemetlocation(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); u8 location = ScriptReadByte(ctx); @@ -2401,7 +2402,7 @@ void sub_809BDB4(void) RemoveWindow(gUnknown_03000F30); } -bool8 ScrCmd_cmdDD(struct ScriptContext *ctx) +bool8 ScrCmd_gettrainerclass(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 trainerClassId = VarGet(ScriptReadHalfword(ctx)); @@ -2410,7 +2411,7 @@ bool8 ScrCmd_cmdDD(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_cmdDE(struct ScriptContext *ctx) +bool8 ScrCmd_gettrainername(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 trainerClassId = VarGet(ScriptReadHalfword(ctx)); @@ -2424,7 +2425,7 @@ void sub_809BE48(u16 npcId) sMovingNpcId = npcId; } -bool8 ScrCmd_cmdE0(struct ScriptContext *ctx) +bool8 ScrCmd_warpE0(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); From 3c4478b370e5ad472c38b8c31ae17c5b49cb8083 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 00:11:55 -0400 Subject: [PATCH 134/182] Decompile data --- data/graphics.s | 112 +++++++++++++++++++++++++++- data/mail.s | 26 ------- include/menu.h | 2 +- ld_script.txt | 2 +- src/mail.c | 194 +++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 294 insertions(+), 42 deletions(-) delete mode 100644 data/mail.s diff --git a/data/graphics.s b/data/graphics.s index e1b76565ac..1a5856c501 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -910,8 +910,116 @@ gCableCarCord_Gfx:: @ 8DBC2C0 gUnknown_08DBC2E8:: @ 8DBC2E8 .incbin "baserom.gba", 0xdbc2e8, 0x72c -gUnknown_08DBCA14:: @ 8DBCA14 - .incbin "baserom.gba", 0xdbca14, 0x3d00 +gUnknown_08DBCA14:: @ 0x08DBCA14 + .incbin "baserom.gba", 0xdbca14, 0x1e04 + +gUnknown_08DBE818:: @ 0x08DBE818 + .incbin "baserom.gba", 0xdbe818, 0x20 + +gUnknown_08DBE838:: @ 0x08DBE838 + .incbin "baserom.gba", 0xdbe838, 0x20 + +gUnknown_08DBE858:: @ 0x08DBE858 + .incbin "baserom.gba", 0xdbe858, 0x20 + +gUnknown_08DBE878:: @ 0x08DBE878 + .incbin "baserom.gba", 0xdbe878, 0x20 + +gUnknown_08DBE898:: @ 0x08DBE898 + .incbin "baserom.gba", 0xdbe898, 0x20 + +gUnknown_08DBE8B8:: @ 0x08DBE8B8 + .incbin "baserom.gba", 0xdbe8b8, 0x20 + +gUnknown_08DBE8D8:: @ 0x08DBE8D8 + .incbin "baserom.gba", 0xdbe8d8, 0x20 + +gUnknown_08DBE8F8:: @ 0x08DBE8F8 + .incbin "baserom.gba", 0xdbe8f8, 0x20 + +gUnknown_08DBE918:: @ 0x08DBE918 + .incbin "baserom.gba", 0xdbe918, 0x20 + +gUnknown_08DBE938:: @ 0x08DBE938 + .incbin "baserom.gba", 0xdbe938, 0x20 + +gUnknown_08DBE958:: @ 0x08DBE958 + .incbin "baserom.gba", 0xdbe958, 0x20 + +gUnknown_08DBE978:: @ 0x08DBE978 + .incbin "baserom.gba", 0xdbe978, 0x20 + +gUnknown_08DBE998:: @ 0x08DBE998 + .incbin "baserom.gba", 0xdbe998, 0x1a0 + +gUnknown_08DBEB38:: @ 0x08DBEB38 + .incbin "baserom.gba", 0xdbeb38, 0x13c + +gUnknown_08DBEC74:: @ 0x08DBEC74 + .incbin "baserom.gba", 0xdbec74, 0x210 + +gUnknown_08DBEE84:: @ 0x08DBEE84 + .incbin "baserom.gba", 0xdbee84, 0xd8 + +gUnknown_08DBEF5C:: @ 0x08DBEF5C + .incbin "baserom.gba", 0xdbef5c, 0x1f8 + +gUnknown_08DBF154:: @ 0x08DBF154 + .incbin "baserom.gba", 0xdbf154, 0x180 + +gUnknown_08DBF2D4:: @ 0x08DBF2D4 + .incbin "baserom.gba", 0xdbf2d4, 0xa8 + +gUnknown_08DBF37C:: @ 0x08DBF37C + .incbin "baserom.gba", 0xdbf37c, 0x190 + +gUnknown_08DBF50C:: @ 0x08DBF50C + .incbin "baserom.gba", 0xdbf50c, 0x140 + +gUnknown_08DBF64C:: @ 0x08DBF64C + .incbin "baserom.gba", 0xdbf64c, 0x168 + +gUnknown_08DBF7B4:: @ 0x08DBF7B4 + .incbin "baserom.gba", 0xdbf7b4, 0x150 + +gUnknown_08DBF904:: @ 0x08DBF904 + .incbin "baserom.gba", 0xdbf904, 0x2a0 + +gUnknown_08DBFBA4:: @ 0x08DBFBA4 + .incbin "baserom.gba", 0xdbfba4, 0xd8 + +gUnknown_08DBFC7C:: @ 0x08DBFC7C + .incbin "baserom.gba", 0xdbfc7c, 0xe0 + +gUnknown_08DBFD5C:: @ 0x08DBFD5C + .incbin "baserom.gba", 0xdbfd5c, 0x10c + +gUnknown_08DBFE68:: @ 0x08DBFE68 + .incbin "baserom.gba", 0xdbfe68, 0xdc + +gUnknown_08DBFF44:: @ 0x08DBFF44 + .incbin "baserom.gba", 0xdbff44, 0xf0 + +gUnknown_08DC0034:: @ 0x08DC0034 + .incbin "baserom.gba", 0xdc0034, 0xe0 + +gUnknown_08DC0114:: @ 0x08DC0114 + .incbin "baserom.gba", 0xdc0114, 0xe0 + +gUnknown_08DC01F4:: @ 0x08DC01F4 + .incbin "baserom.gba", 0xdc01f4, 0x10c + +gUnknown_08DC0300:: @ 0x08DC0300 + .incbin "baserom.gba", 0xdc0300, 0xf0 + +gUnknown_08DC03F0:: @ 0x08DC03F0 + .incbin "baserom.gba", 0xdc03f0, 0xf8 + +gUnknown_08DC04E8:: @ 0x08DC04E8 + .incbin "baserom.gba", 0xdc04e8, 0x118 + +gUnknown_08DC0600:: @ 0x08DC0600 + .incbin "baserom.gba", 0xdc0600, 0x114 gUnknown_08DC0714:: @ 8DC0714 .incbin "baserom.gba", 0xdc0714, 0x40 diff --git a/data/mail.s b/data/mail.s deleted file mode 100644 index 5dc8270bc1..0000000000 --- a/data/mail.s +++ /dev/null @@ -1,26 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_0859F290:: @ 859F290 - .incbin "baserom.gba", 0x59f290, 0xc - -gUnknown_0859F29C:: @ 859F29C - .incbin "baserom.gba", 0x59f29c, 0x10 - -gUnknown_0859F2AC:: @ 859F2AC - .incbin "baserom.gba", 0x59f2ac, 0x4 - -gUnknown_0859F2B0:: @ 859F2B0 - .incbin "baserom.gba", 0x59f2b0, 0x8 - -gUnknown_0859F2B8:: @ 859F2B8 - .incbin "baserom.gba", 0x59f2b8, 0xfc - -gUnknown_0859F3B4:: @ 859F3B4 - .incbin "baserom.gba", 0x59f3b4, 0xa4 - -gUnknown_0859F458:: @ 859F458 - .incbin "baserom.gba", 0x59f458, 0xbc diff --git a/include/menu.h b/include/menu.h index d143c8a7c8..957bed9b40 100644 --- a/include/menu.h +++ b/include/menu.h @@ -20,7 +20,7 @@ void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); void reset_temp_tile_data_buffers(void); -int decompress_and_copy_tile_data_to_vram(u8 bg_id, void *src, int size, u16 offset, u8 mode); +int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); #endif // GUARD_MENU_H diff --git a/ld_script.txt b/ld_script.txt index dfc7905309..1191c9c8e4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -401,7 +401,7 @@ SECTIONS { data/easy_chat.o(.rodata); data/mon_markings.o(.rodata); data/mauville_old_man.o(.rodata); - data/mail.o(.rodata); + src/mail.o(.rodata); data/menu_helpers.o(.rodata); data/heal_location.o(.rodata); data/region_map.o(.rodata); diff --git a/src/mail.c b/src/mail.c index 0f0530c046..3febf1d080 100644 --- a/src/mail.c +++ b/src/mail.c @@ -26,6 +26,8 @@ struct UnkMailStruct u8 unk_0_0:2; u8 unk_0_2:2; u8 unk_0_4:4; + u8 unk_1_0:4; + u8 unk_1_4:1; }; struct MailLayout @@ -35,8 +37,8 @@ struct MailLayout u8 var2; u8 var3_0:4; u8 var3_4:4; - struct UnkMailStruct *var4; - u32 var8; + u32 var4; + const struct UnkMailStruct *var8; }; struct Unk203A134 @@ -61,9 +63,9 @@ struct Unk203A134 struct MailGraphics { - u16 (*palette)[]; - u8 (*tiles)[]; - u8 (*tileMap)[]; + const u16 *palette; + const u8 *tiles; + const u8 *tileMap; u16 var0C; u16 var0E; u16 color10; @@ -85,12 +87,180 @@ void sub_8121C98(void); // .rodata -extern const struct BgTemplate gUnknown_0859F290[]; -extern const struct WindowTemplate gUnknown_0859F29C; -extern const u16 gUnknown_0859F2B0[][2]; -extern const struct MailGraphics gUnknown_0859F2B8[]; -extern const struct MailLayout gUnknown_0859F3B4[]; -extern const struct MailLayout gUnknown_0859F458[]; +const struct BgTemplate gUnknown_0859F290[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .priority = 0 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .priority = 1 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .priority = 2 + } +}; + +const struct WindowTemplate gUnknown_0859F29C[] = { + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 3, + .width = 26, + .height = 15, + .paletteNum = 15, + .baseBlock = 1 + }, { + .priority = -1 + } +}; + +const u8 gUnknown_0859F2AC[] = { + 0, + 10, + 11 +}; + +const u16 gUnknown_0859F2B0[][2] = { + { 0x6ACD, 0x51A5 }, + { 0x45FC, 0x38D4 } +}; + +extern const u16 gUnknown_08DBE818[]; +extern const u16 gUnknown_08DBE838[]; +extern const u16 gUnknown_08DBE858[]; +extern const u16 gUnknown_08DBE878[]; +extern const u16 gUnknown_08DBE898[]; +extern const u16 gUnknown_08DBE8B8[]; +extern const u16 gUnknown_08DBE8D8[]; +extern const u16 gUnknown_08DBE8F8[]; +extern const u16 gUnknown_08DBE918[]; +extern const u16 gUnknown_08DBE938[]; +extern const u16 gUnknown_08DBE958[]; +extern const u16 gUnknown_08DBE978[]; +extern const u8 gUnknown_08DBE998[]; +extern const u8 gUnknown_08DBFBA4[]; +extern const u8 gUnknown_08DBEB38[]; +extern const u8 gUnknown_08DBFC7C[]; +extern const u8 gUnknown_08DBEC74[]; +extern const u8 gUnknown_08DBFD5C[]; +extern const u8 gUnknown_08DBEE84[]; +extern const u8 gUnknown_08DBFE68[]; +extern const u8 gUnknown_08DBEF5C[]; +extern const u8 gUnknown_08DBFF44[]; +extern const u8 gUnknown_08DBF154[]; +extern const u8 gUnknown_08DC0034[]; +extern const u8 gUnknown_08DBF2D4[]; +extern const u8 gUnknown_08DC0114[]; +extern const u8 gUnknown_08DBF37C[]; +extern const u8 gUnknown_08DC01F4[]; +extern const u8 gUnknown_08DBF50C[]; +extern const u8 gUnknown_08DC0300[]; +extern const u8 gUnknown_08DBF64C[]; +extern const u8 gUnknown_08DC03F0[]; +extern const u8 gUnknown_08DBF7B4[]; +extern const u8 gUnknown_08DC04E8[]; +extern const u8 gUnknown_08DBF904[]; +extern const u8 gUnknown_08DC0600[]; + +const struct MailGraphics gUnknown_0859F2B8[] = { + { + gUnknown_08DBE818, gUnknown_08DBE998, gUnknown_08DBFBA4, 0x02c0, 0x0000, 0x294a, 0x6739 + }, { + gUnknown_08DBE838, gUnknown_08DBEB38, gUnknown_08DBFC7C, 0x02e0, 0x0000, 0x7fff, 0x4631 + }, { + gUnknown_08DBE858, gUnknown_08DBEC74, gUnknown_08DBFD5C, 0x0400, 0x0000, 0x294a, 0x6739 + }, { + gUnknown_08DBE878, gUnknown_08DBEE84, gUnknown_08DBFE68, 0x01e0, 0x0000, 0x7fff, 0x4631 + }, { + gUnknown_08DBE898, gUnknown_08DBEF5C, gUnknown_08DBFF44, 0x02e0, 0x0000, 0x7fff, 0x4631 + }, { + gUnknown_08DBE8B8, gUnknown_08DBF154, gUnknown_08DC0034, 0x0300, 0x0000, 0x294a, 0x6739 + }, { + gUnknown_08DBE8D8, gUnknown_08DBF2D4, gUnknown_08DC0114, 0x0140, 0x0000, 0x7fff, 0x4631 + }, { + gUnknown_08DBE8F8, gUnknown_08DBF37C, gUnknown_08DC01F4, 0x0300, 0x0000, 0x7fff, 0x4631 + }, { + gUnknown_08DBE918, gUnknown_08DBF50C, gUnknown_08DC0300, 0x0220, 0x0000, 0x294a, 0x6739 + }, { + gUnknown_08DBE938, gUnknown_08DBF64C, gUnknown_08DC03F0, 0x0340, 0x0000, 0x294a, 0x6739 + }, { + gUnknown_08DBE958, gUnknown_08DBF7B4, gUnknown_08DC04E8, 0x02a0, 0x0000, 0x294a, 0x6739 + }, { + gUnknown_08DBE978, gUnknown_08DBF904, gUnknown_08DC0600, 0x0520, 0x0000, 0x294a, 0x6739 + } +}; + +const struct UnkMailStruct Unknown_0859F3A8[] = { + { .unk_0_0 = 3, .unk_1_4 = TRUE }, + { .unk_0_0 = 3, .unk_1_4 = TRUE }, + { .unk_0_0 = 3, .unk_1_4 = TRUE } +}; + +const struct MailLayout gUnknown_0859F3B4[] = { + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x08, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x2, 0x0, 0x00, Unknown_0859F3A8 } +}; + +const struct UnkMailStruct Unknown_0859F444[] = { + { .unk_0_0 = 2, .unk_1_4 = TRUE }, + { .unk_0_0 = 2, .unk_1_4 = TRUE }, + { .unk_0_0 = 2, .unk_1_4 = TRUE }, + { .unk_0_0 = 2, .unk_1_4 = TRUE }, + { .unk_0_0 = 1, .unk_1_4 = TRUE } +}; + +const struct MailLayout gUnknown_0859F458[] = { + { 0x05, 0x07, 0x58, 0xb, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0a, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0c, 0x68, 0x5, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x05, 0x60, 0x8, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0a, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x70, 0x5, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0c, 0x68, 0x9, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0d, 0x68, 0xd, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x11, 0x68, 0xf, 0x0, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x60, 0x5, 0x0, 0x1e, Unknown_0859F444 } +}; + +const u16 Unknown_0859F4E8[] = { + 0x00, 0x4000, 0x00, 0x00 +}; + +const u16 Unknown_0859F4F0[] = { + 0x00, 0x00, -1, 0x00 +}; + +const u16 Unknown_0859F4F8[] = { + 0x04, 0x00, -1, 0x00 +}; + +const u16 Unknown_0859F500[] = { + 0x00, 0x40, -1, 0x00 +}; + +const u16 *const gUnknown_0859F508[] = { + Unknown_0859F4F0, + Unknown_0859F4F8, + Unknown_0859F500 +}; // .text @@ -191,7 +361,7 @@ bool8 sub_81215EC(void) SetBgTilemapBuffer(2, gUnknown_0203A134->bg2TilemapBuffer); break; case 7: - InitWindows(&gUnknown_0859F29C); + InitWindows(gUnknown_0859F29C); DeactivateAllTextPrinters(); break; case 8: From 0f44747788b774021519d600cb612c8c3303aa7d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 13 Oct 2017 12:25:32 +0200 Subject: [PATCH 135/182] review changes --- data/data2b.s | 2 +- include/bg.h | 10 ++++++++++ src/reshow_battle_screen.c | 11 ----------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/data/data2b.s b/data/data2b.s index 77dd6a892f..e723b4c975 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -4510,7 +4510,7 @@ gUnknown_08305D0C:: @ 8305D0C @ 8305DCC .include "data/enemy_mon_elevation.inc" -@ 8309AAC +@ 8305F68 .include "data/graphics/pokemon/front_anims.inc" @ 830A18C diff --git a/include/bg.h b/include/bg.h index 0dcb84a341..0c6b4ac26b 100644 --- a/include/bg.h +++ b/include/bg.h @@ -1,6 +1,16 @@ #ifndef GUARD_BG_H #define GUARD_BG_H +struct BGCntrlBitfield // for the I/O registers +{ + volatile u16 priority:2; + volatile u16 charBaseBlock:2; + volatile u16 field_0_2:4; + volatile u16 field_1_0:5; + volatile u16 areaOverflowMode:1; + volatile u16 screenSize:2; +}; + enum { BG_CTRL_ATTR_VISIBLE = 1, diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 1c13448d49..25c2ca6581 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -197,17 +197,6 @@ static void CB2_ReshowBattleScreenAfterMenu(void) gBattleScripting.reshowMainState++; } -// todo: find a better place for the struct declaration -struct BGCntrlBitfield -{ - volatile u16 priority:2; - volatile u16 charBaseBlock:2; - volatile u16 field_0_2:4; - volatile u16 field_1_0:5; - volatile u16 areaOverflowMode:1; - volatile u16 screenSize:2; -}; - static void sub_80A95F4(void) { struct BGCntrlBitfield *regBgcnt1, *regBgcnt2; From 74c59af856216332b6c73cbc382edff3518a0eab Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 08:47:26 -0400 Subject: [PATCH 136/182] sub_8121A1C --- asm/mail.s | 122 ---------------------------- include/international_string_util.h | 11 +++ include/strings.h | 12 +++ src/mail.c | 50 +++++++++--- 4 files changed, 63 insertions(+), 132 deletions(-) create mode 100644 include/international_string_util.h create mode 100644 include/strings.h diff --git a/asm/mail.s b/asm/mail.s index 0180b9418b..c35d3873a1 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -5,128 +5,6 @@ .text - thumb_func_start sub_8121A1C -sub_8121A1C: @ 8121A1C - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - movs r5, 0 - ldr r2, =gUnknown_0203A134 - ldr r0, [r2] - movs r1, 0x8A - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0] - cmp r5, r0 - bcs _08121A8A - mov r8, r2 - adds r7, r1, 0 -_08121A3C: - lsls r0, r5, 6 - mov r1, r8 - ldr r2, [r1] - adds r0, r2, r0 - movs r3, 0x85 - lsls r3, 2 - adds r1, r2, r3 - lsls r3, r6, 1 - ldr r1, [r1] - adds r1, r3 - adds r2, r7 - ldr r2, [r2] - ldr r2, [r2, 0x8] - lsls r4, r5, 2 - adds r2, r4, r2 - ldr r2, [r2] - lsls r2, 30 - lsrs r2, 30 - movs r3, 0x1 - bl ConvertEasyChatWordsToString - mov r1, r8 - ldr r0, [r1] - adds r0, r7 - ldr r1, [r0] - ldr r0, [r1, 0x8] - adds r4, r0 - ldr r0, [r4] - lsls r0, 30 - lsrs r0, 30 - adds r0, r6, r0 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r1, [r1] - cmp r5, r1 - bcc _08121A3C -_08121A8A: - ldr r4, =gUnknown_0203A134 - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 2 - adds r0, r1, r2 - movs r3, 0x85 - lsls r3, 2 - adds r1, r3 - ldr r1, [r1] - adds r1, 0x12 - bl StringCopy - adds r2, r0, 0 - ldr r1, [r4] - ldr r3, =0x0000021e - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08121AF0 - ldr r1, =gText_FromSpace - adds r0, r2, 0 - bl StringCopy - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 2 - adds r0, r1 - bl StringLength - ldr r2, [r4] - movs r3, 0x8A - lsls r3, 2 - adds r1, r2, r3 - ldr r1, [r1] - lsls r0, 16 - lsrs r0, 13 - subs r0, 0x60 - ldrb r1, [r1, 0x2] - subs r1, r0 - ldr r0, =0x00000219 - adds r2, r0 - strb r1, [r2] - b _08121B0C - .pool -_08121AF0: - movs r2, 0x80 - lsls r2, 2 - adds r0, r1, r2 - bl sub_81DB52C - ldr r0, [r4] - movs r3, 0x8A - lsls r3, 2 - adds r1, r0, r3 - ldr r1, [r1] - ldrb r1, [r1, 0x2] - ldr r2, =0x00000219 - adds r0, r2 - strb r1, [r0] -_08121B0C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121A1C - thumb_func_start sub_8121B1C sub_8121B1C: @ 8121B1C push {r4-r7,lr} diff --git a/include/international_string_util.h b/include/international_string_util.h new file mode 100644 index 0000000000..4adc212245 --- /dev/null +++ b/include/international_string_util.h @@ -0,0 +1,11 @@ +#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H +#define GUARD_INTERNATIONAL_STRING_UTIL_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void sub_81DB52C(const u8 *src); + +#endif //GUARD_INTERNATIONAL_STRING_UTIL_H diff --git a/include/strings.h b/include/strings.h new file mode 100644 index 0000000000..68e5c9d35e --- /dev/null +++ b/include/strings.h @@ -0,0 +1,12 @@ +#ifndef GUARD_STRINGS_H +#define GUARD_STRINGS_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +extern const u8 gText_FromSpace[]; + +#endif //GUARD_STRINGS_H diff --git a/src/mail.c b/src/mail.c index 3febf1d080..0c3e85cc35 100644 --- a/src/mail.c +++ b/src/mail.c @@ -10,6 +10,9 @@ #include "menu_helpers.h" #include "text.h" #include "text_window.h" +#include "string_util.h" +#include "international_string_util.h" +#include "strings.h" #include "gpu_regs.h" #include "bg.h" #include "pokemon_icon.h" @@ -23,11 +26,11 @@ struct UnkMailStruct { - u8 unk_0_0:2; - u8 unk_0_2:2; - u8 unk_0_4:4; - u8 unk_1_0:4; - u8 unk_1_4:1; + u32 unk_0_0:2; + u32 unk_0_2:2; + u32 unk_0_4:4; + u32 unk_1_0:4; + u32 unk_1_4:1; }; struct MailLayout @@ -43,12 +46,13 @@ struct MailLayout struct Unk203A134 { - /*0x0000*/ u8 filler_0000[0x20c]; + /*0x0000*/ u8 strbuf[8][64]; + /*0x0200*/ u8 playerName[12]; /*0x020C*/ MainCallback callback; /*0x0210*/ MainCallback callback2; /*0x0214*/ struct MailStruct *mail; /*0x0218*/ bool8 flag; - /*0x0219*/ u8 filler_0219[1]; + /*0x0219*/ u8 unk_0219; /*0x021a*/ u8 mailType; /*0x021b*/ u8 unk_021b; /*0x021c*/ u8 unk_021c; @@ -115,9 +119,8 @@ const struct WindowTemplate gUnknown_0859F29C[] = { .height = 15, .paletteNum = 15, .baseBlock = 1 - }, { - .priority = -1 - } + }, + DUMMY_WIN_TEMPLATE }; const u8 gUnknown_0859F2AC[] = { @@ -240,6 +243,8 @@ const struct MailLayout gUnknown_0859F458[] = { { 0x05, 0x09, 0x60, 0x5, 0x0, 0x1e, Unknown_0859F444 } }; +// What the heck are these meant to be? Call them u16 for now. + const u16 Unknown_0859F4E8[] = { 0x00, 0x4000, 0x00, 0x00 }; @@ -459,3 +464,28 @@ void sub_81219F0(void) } } while (sub_81221AC() != TRUE); } + +void sub_8121A1C(void) +{ + u16 i; + u8 total; + u8 *ptr; + + total = 0; + for (i = 0; i < gUnknown_0203A134->layout->var0; i ++) + { + ConvertEasyChatWordsToString(gUnknown_0203A134->strbuf[i], &gUnknown_0203A134->mail->words[total], gUnknown_0203A134->layout->var8[i].unk_0_0, 1); + total += gUnknown_0203A134->layout->var8[i].unk_0_0; + } + ptr = StringCopy(gUnknown_0203A134->playerName, gUnknown_0203A134->mail->playerName); + if (!gUnknown_0203A134->playerIsSender) + { + StringCopy(ptr, gText_FromSpace); + gUnknown_0203A134->unk_0219 = gUnknown_0203A134->layout->var2 - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60); + } + else + { + sub_81DB52C(gUnknown_0203A134->playerName); + gUnknown_0203A134->unk_0219 = gUnknown_0203A134->layout->var2; + } +} From 52db3ad5aa83ae70e06eae87f502b09fff55aecc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 11:09:36 -0400 Subject: [PATCH 137/182] Decompile TV (#80) * ClearTVShowData * special_0x44 * DoTVShow (nonmatching because align) * DoTVShowBravoTrainerPokemonProfile * Update field names * DoTVShowBravoTrainerBattleTower * Renaming of struct fields * sub_80EBFF4 and UpdateTVScreensOnMap * SetTVMetatilesOnMap * Power buttons for the TV screens on the map * special_0x45 * sub_80EC18C * special_0x4a * ResetGabbyAndTy * GabbyAndTyBeforeInterview * GabbyAndTyAfterInterview * Through IsTVShowInSearchOfTrainersAiring * GabbyAndTyGetLastQuote * GabbyAndTyGetLastBattleTrivia * GabbyAndTySetScriptVarsToFieldObjectLocalIds * InterviewAfter; use TVShow as a precursor for making the individual show structs anonymous * Make TV structs anonymous within the union * Move the TV union to its own subheader * Move TV show enums to the global.tv.h subheader * Funcion renaming * Apply static attributes where able * PutPokemonTodayCaughtOnAir * sub_80EC8A4 * PutPokemonTodayFailedOnTheAir * sub_80EC9E8, sub_80ECA10 * sub_80ECA38 * sub_80ECB00 * Put3CheersForPokeblocksOnTheAir * PutFanClubSpecialOnTheAir * ContestLiveUpdates_BeforeInterview * Other before-interview Contest Live Updates functions * ContestLiveUpdates_BeforeInterview_5 * InterviewAfter_BravoTrainerPokemonProfile * BravoTrainerPokemonProfile_BeforeInterview1 * BravoTrainerPokemonProfile_BeforeInterview2 * Disassemble TV data * Decompile TV data * InterviewAfter_BravoTrainerBattleTowerProfile * SaveRecordedItemPurchasesForTVShow * PutNameRaterShowOnTheAir * StartMassOutbreak * PutLilycoveContestLadyShowOnTheAir * InterviewAfter_FanClubLetter * Rip TV strings * InterviewAfter_RecentHappenings * InterviewAfter_PkmnFanClubOpinions * sub_80ED718 * EndMassOutbreak * sub_80ED888 * sub_80ED8B4 * UpdateMassOutbreakTimeLeft * sub_80ED950 * PutFishingAdviceShowOnTheAir * through sub_80EDA80 * ewram and common syms are now fetched from the object files * BSS symbols are taken from the tv.o file * through sub_80EDC60 * sub_80EDCE8 * sub_80EDD78 * through sub_80EDE84 * nomatching sub_80EDE98 * sub_80EDFB4 * sub_80EE104 * sub_80EE104 * sub_80EE184 * sub_80EE2CC * sub_80EE35C * sub_80EE44C * sub_80EE4DC * sub_80EE5A4 * sub_80EE69C * sub_80EE72C * sub_80EE7C0 * sub_80EE818 * sub_80EE8C8 * sub_80EEA70 * sub_80EEB98 * sub_80EEBF4 * through sub_80EED60 * Functions relating to Pokemon News * sub_80EEF6C * GetPriceReduction * IsPriceDiscounted * sub_80EF120 * through sub_80EF370 * sub_80EF40C * HasMixableShowAlreadyBeenSpawnedWithPlayerID * TV_SortPurchasesByQuantity * FindActiveBroadcastByShowType_SetScriptResult * InterviewBefore * through sub_80EF88C * through sub_80EF93C * through sub_80EFA24 * through TV_BernoulliTrial * sub_80EFB58 * sub_80EFBA4 * sub_80EFBDC * through sub_80EFD98 * ChangePokemonNickname * ChangeBoxPokemonNickname * sub_80EFF9C * through player_id_to_dword * CheckForBigMovieOrEmergencyNewsOnTV * GetMomOrDadStringForTVMessage * sub_80F01E8 * sub_80F0358 * sub_80F049C * TV record mixing functions * sub_80F06D0 * sub_80F0708 nonmatching * through sub_80F0B24 * sub_80F0B64 * through sub_80F0C04 * sub_80F0C7C * sub_80F0D60 * sub_80F0E58 * sub_80F0E84 * through sub_80F0F24 * sub_80F0F64 * sub_80F1208 * sub_80F1254 * sub_80F1290 * sub_80F12A4 * sub_80F14F8 * DoTVShowTodaysSmartShopper * DoTVShowTheNameRaterShow * DoTVShowPokemonTodaySuccessfulCapture * DoTVShowPokemonTodayFailedCapture * DoTVShowPokemonFanClubLetter * DoTVShowRecentHappenings * DoTVShowPokemonFanClubOpinions * DoTVShowPokemonNewsMassOutbreak * DoTVShowPokemonContestLiveUpdates * DoTVShowPokemonBattleUpdate * DoTVShow3CheersForPokeblocks * DoTVShowInSearchOfTrainers * Label GabbyAndTyData fields; remove ddump comments from data/text/tv.inc * DoTVShowPokemonAngler * DoTVShowTheWorldOfMasters; update RAM symbols and field names * Decorate static functions * DoTVShowTodaysRivalTrainer; region map enums * TVDewfordTrendWatcherNetworkTextGroup * DoTVShowHoennTreasureInvestigators * DoTVShowFindThatGamer * DoTVShowBreakingNewsTV * DoTVShowSecretBaseVisit * DoTVShowPokemonLotterWinnerFlashReport * DoTVShowThePokemonBattleSeminar * DoTVShowTrainerFanClubSpecial, DoTVShowTrainerFanClub * DoTVShowSpotTheCuties * DoTVShowPokemonNewsBattleFrontier * DoTVShowWhatsNo1InHoennToday * Helpers for DoTVShowSecretBaseSecrets * DoTVShowSecretBaseSecrets * DoTVShowSafariFanClub * Finish decompilation of tv.s * Some renaming * Rename text group pointers * revoke statis; pokenews enums * Labels are number one * Label all TV struct fields * Make data/text/tv.inc more readable * Split data/text/tv.inc * Rename pokenews text pointers * Frontier Symbol constants; indicate static rodata objects with 's' prefix * Fix leading spaces/tabs F*** CLion sometimes * Fix inconsequential warning --- asm/battle_frontier_2.s | 12 +- asm/battle_link_817C95C.s | 4 +- asm/battle_setup.s | 4 +- asm/battle_tower.s | 10 +- asm/berry_blender.s | 18 +- asm/cable_club.s | 10 +- asm/contest.s | 40 +- asm/contest_ai.s | 4 +- asm/contest_link_80F57C4.s | 24 +- asm/contest_link_80FC4F4.s | 2 +- asm/dewford_trend.s | 2 +- asm/easy_chat.s | 10 +- asm/field_message_box.s | 6 +- asm/field_poison.s | 2 +- asm/international_string_util.s | 6 +- asm/link.s | 70 +- asm/mauville_old_man.s | 10 +- asm/pokemon_summary_screen.s | 2 +- asm/record_mixing.s | 22 +- asm/recorded_battle.s | 4 +- asm/rom3.s | 2 +- asm/rom6.s | 48 +- asm/scrcmd.s | 6 +- asm/script_pokemon_util_80F87D8.s | 4 +- asm/secret_base.s | 2 +- asm/trade.s | 4 +- asm/tv.s | 16938 -------------------------- common_syms/tv.txt | 4 + data/event_scripts.s | 10 +- data/text/pokemon_news.inc | 165 + data/text/tv.inc | 2891 +++++ data/tv.s | 128 - include/battle.h | 17 +- include/battle_tower.h | 6 + include/contest.h | 18 + include/decoration.h | 147 + include/easy_chat.h | 6 +- include/event_scripts.h | 349 + include/field_camera.h | 2 + include/field_message_box.h | 12 + include/fieldmap.h | 7 +- include/flags.h | 16 +- include/game_stat.h | 3 + include/global.h | 324 +- include/global.tv.h | 535 + include/international_string_util.h | 13 + include/item.h | 1 + include/link.h | 2 +- include/malloc.h | 2 +- include/moves.h | 1 + include/pokedex.h | 4 +- include/pokemon_storage_system.h | 2 + include/region_map.h | 227 + include/rom4.h | 1 + include/rom6.h | 1 + include/script_menu.h | 11 + include/secret_base.h | 11 + include/shop.h | 12 + include/species.h | 1 + include/string_util.h | 2 +- include/strings.h | 33 + include/tv.h | 21 + include/vars.h | 10 + ld_script.txt | 4 +- src/battle_2.c | 13 +- src/battle_script_commands.c | 2 +- src/battle_util.c | 2 +- src/egg_hatch.c | 6 +- src/new_game.c | 2 +- src/safari_zone.c | 2 +- src/start_menu.c | 4 +- src/string_util.c | 2 +- src/tv.c | 7927 ++++++++++++ sym_bss.txt | 11 +- sym_common.txt | 22 +- sym_ewram.txt | 32 +- 76 files changed, 12689 insertions(+), 17601 deletions(-) delete mode 100644 asm/tv.s create mode 100644 common_syms/tv.txt create mode 100644 data/text/pokemon_news.inc create mode 100644 data/text/tv.inc delete mode 100644 data/tv.s create mode 100644 include/battle_tower.h create mode 100644 include/contest.h create mode 100644 include/decoration.h create mode 100644 include/field_message_box.h create mode 100644 include/global.tv.h create mode 100644 include/international_string_util.h create mode 100644 include/region_map.h create mode 100644 include/script_menu.h create mode 100644 include/secret_base.h create mode 100644 include/shop.h create mode 100644 include/strings.h create mode 100644 include/tv.h create mode 100644 src/tv.c diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 9e01d22d1c..88ee1c1edf 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -12935,7 +12935,7 @@ _081A1118: adds r1, r0, 0 mov r0, sp movs r2, 0x2 - bl sub_81DB5E8 + bl TVShowConvertInternationalString adds r0, r5, 0 mov r1, sp bl StringCopy @@ -18997,7 +18997,7 @@ sub_81A4594: @ 81A4594 adds r1, r6, 0x6 ldrb r2, [r6, 0xE] add r0, sp, 0xC - bl sub_81DB5E8 + bl TVShowConvertInternationalString ldr r1, =gUnknown_0203AB74 ldrb r0, [r1] mov r3, r8 @@ -19111,7 +19111,7 @@ sub_81A4684: @ 81A4684 adds r1, 0xA ldrb r2, [r5, 0x1A] add r0, sp, 0xC - bl sub_81DB5E8 + bl TVShowConvertInternationalString ldr r1, =gUnknown_0203AB74 ldrb r0, [r1] adds r3, r7, 0x2 @@ -19133,13 +19133,13 @@ sub_81A4684: @ 81A4684 adds r4, r5, 0 adds r4, 0x12 adds r0, r4, 0 - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _081A4734 add r0, sp, 0xC adds r1, r4, 0 movs r2, 0x1 - bl sub_81DB5E8 + bl TVShowConvertInternationalString b _081A473C .pool _081A4734: @@ -28660,7 +28660,7 @@ _081A95EE: lsls r0, r7, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage add sp, 0x8 pop {r3,r4} mov r8, r3 diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s index ec5baadd97..aa887bc255 100644 --- a/asm/battle_link_817C95C.s +++ b/asm/battle_link_817C95C.s @@ -3193,7 +3193,7 @@ _0817E63A: adds r1, r4, 0 ldr r2, [sp] ldr r3, [sp, 0x4] - bl sub_80ECB00 + bl PutBattleUpdateOnTheAir b _0817E670 .pool _0817E65C: @@ -3205,7 +3205,7 @@ _0817E65C: adds r1, r4, 0 ldr r2, [sp] ldr r3, [sp, 0x4] - bl sub_80ECB00 + bl PutBattleUpdateOnTheAir _0817E670: add sp, 0x20 pop {r3-r5} diff --git a/asm/battle_setup.s b/asm/battle_setup.s index fbedfff2fe..b345ca96d7 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -2407,7 +2407,7 @@ _080B1AD8: .pool _080B1AEC: bl sub_80B1C7C - bl box_related_two__2 + bl ShowFieldMessage _080B1AF4: pop {r0} bx r0 @@ -2468,7 +2468,7 @@ _080B1B56: special_trainer_unable_to_battle: @ 80B1B60 push {lr} bl sub_80B1D18 - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 thumb_func_end special_trainer_unable_to_battle diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 59971c5d23..4d86e8d280 100755 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -1795,7 +1795,7 @@ _08162ED8: adds r0, 0xE4 ldrb r2, [r0] adds r0, r6, 0 - bl sub_81DB5E8 + bl TVShowConvertInternationalString b _08162F62 .pool _08162F00: @@ -1835,7 +1835,7 @@ _08162F3E: adds r1, r0, 0 adds r0, r6, 0 adds r2, r4, 0 - bl sub_81DB5E8 + bl TVShowConvertInternationalString b _08162F62 .pool _08162F5C: @@ -5016,7 +5016,7 @@ _08164B04: lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage b _08164B54 .pool _08164B28: @@ -5040,7 +5040,7 @@ _08164B28: lsls r1, 2 adds r1, r0 ldr r0, [r1] - bl box_related_two__2 + bl ShowFieldMessage _08164B54: add sp, 0x8 pop {r3-r5} @@ -5673,7 +5673,7 @@ _0816508C: bl SetMonData ldr r0, [r7] adds r0, r4 - bl sub_80EE5A4 + bl GetRibbonCount strb r0, [r5, 0x1] _081650D4: adds r5, 0x4 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 277a49d2f5..6d18ab7cb4 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -1275,7 +1275,7 @@ _080802AC: strh r0, [r1] adds r5, 0x1 _080802D4: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -1295,7 +1295,7 @@ _080802EC: bl sub_807FD90 b _08080336 _08080302: - bl sub_8009FCC + bl GetLinkPlayerCount ldr r2, =gUnknown_020322A4 ldr r1, [r2] adds r1, 0x7C @@ -6091,7 +6091,7 @@ _08082BEE: lsls r0, 24 lsrs r5, r0, 24 _08082BF4: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6104,7 +6104,7 @@ _08082C0C: lsls r0, 24 lsrs r5, r0, 24 _08082C12: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6118,7 +6118,7 @@ _08082C12: cmp r0, 0 bne _08082C0C _08082C2E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6132,7 +6132,7 @@ _08082C48: lsls r0, 24 lsrs r5, r0, 24 _08082C4E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6149,7 +6149,7 @@ _08082C6A: ldr r4, =gUnknown_03003110 adds r0, r4, 0 bl sub_8081F94 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -8568,7 +8568,7 @@ sub_8083F94: @ 8083F94 ldrb r0, [r5, 0x12] str r0, [sp] adds r0, r7, 0 - bl sub_80ECC04 + bl Put3CheersForPokeblocksOnTheAir lsls r0, 24 cmp r0, 0 bne _080840BA @@ -8617,7 +8617,7 @@ _08084058: ldrb r0, [r5, 0x12] str r0, [sp] adds r0, r7, 0 - bl sub_80ECC04 + bl Put3CheersForPokeblocksOnTheAir lsls r0, 24 cmp r0, 0 beq _080840C4 diff --git a/asm/cable_club.s b/asm/cable_club.s index d5d3af1514..4d2bee19d7 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1059,7 +1059,7 @@ _080B2C5C: lsls r0, 24 lsrs r4, r0, 24 _080B2C7E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -1361,7 +1361,7 @@ _080B2F0C: movs r0, 0 mov r8, r0 mov r9, r0 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 @@ -1984,7 +1984,7 @@ _080B3474: adds r5, 0x1C adds r4, 0x1 _080B349A: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -2080,7 +2080,7 @@ _080B3574: beq _080B35F8 b _080B35FE _080B357A: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r3, r0, 24 movs r4, 0 @@ -2297,7 +2297,7 @@ _080B3750: b _080B37CC _080B375A: ldr r0, =gUnknown_08278091 - bl box_related_two__2 + bl ShowFieldMessage movs r0, 0x1 strh r0, [r5, 0x8] b _080B37CC diff --git a/asm/contest.s b/asm/contest.s index 561c798575..07883f1cda 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1525,7 +1525,7 @@ sub_80D8490: @ 80D8490 movs r6, 0 ldr r0, =gUnknown_02039F25 mov r8, r0 - ldr r2, =gUnknown_02039E1E + ldr r2, =gUnknown_02039E00 + 30 mov r10, r2 ldr r7, =gUnknown_02039F34 _080D84B8: @@ -2624,7 +2624,7 @@ _080D8EF2: bl sub_80DB89C ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy mov r2, r9 @@ -3562,7 +3562,7 @@ _080D96D4: bl sub_80DB89C ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r4, =gStringVar4 @@ -3671,7 +3671,7 @@ _080D97DC: bl sub_80DB89C ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r4, =gStringVar4 @@ -3809,7 +3809,7 @@ _080D9904: bl sub_80DB89C ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r4, =gStringVar4 @@ -4010,7 +4010,7 @@ _080D9AD2: bl sub_80DB89C ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r4, =gUnknown_02039F34 @@ -4381,7 +4381,7 @@ _080D9DD4: lsls r1, 20 lsrs r1, 29 lsls r1, 6 - ldr r4, =gUnknown_02039E02 + ldr r4, =gUnknown_02039E00 + 2 adds r1, r4 bl StringCopy ldr r0, =gStringVar1 @@ -4476,7 +4476,7 @@ _080D9EDC: bl sub_80DC9B4 ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r0, =gStringVar2 @@ -4626,7 +4626,7 @@ _080DA038: bl sub_80DB89C ldr r0, =gStringVar1 lsls r1, r6, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r4, =gStringVar4 @@ -5096,7 +5096,7 @@ sub_80DA3CC: @ 80DA3CC ldr r0, =gStringVar1 ldrb r1, [r5] lsls r1, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r5, =gStringVar4 @@ -5360,7 +5360,7 @@ _080DA600: lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x8] - bl sub_80ED03C + bl BravoTrainerPokemonProfile_BeforeInterview1 b _080DA668 .pool _080DA65C: @@ -5667,7 +5667,7 @@ _080DA8F2: ldr r5, =gUnknown_02039F25 ldrb r0, [r5] lsls r0, 6 - ldr r4, =gUnknown_02039E0D + ldr r4, =gUnknown_02039E00 + 13 adds r0, r4 mov r1, sp movs r2, 0x8 @@ -6451,7 +6451,7 @@ sub_80DAF1C: @ 80DAF1C add r0, sp, 0x4 bl StringCopy lsls r1, r5, 6 - ldr r0, =gUnknown_02039E0D + ldr r0, =gUnknown_02039E00 + 13 adds r1, r0 add r0, sp, 0x4 bl StringAppend @@ -6508,7 +6508,7 @@ sub_80DAFA0: @ 80DAFA0 lsls r1, 24 lsrs r1, 24 lsls r0, r4, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r0, r2 bl sub_80DAED4 ldr r0, =gUnknown_02039F26 @@ -11173,7 +11173,7 @@ sub_80DD45C: @ 80DD45C lsrs r6, r1, 24 ldr r0, =gStringVar1 lsls r1, r4, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy ldr r0, =gStringVar2 @@ -15385,21 +15385,21 @@ _080DF6AE: beq _080DF6AE _080DF6C4: mov r0, r9 - bl sub_80ECDA4 + bl ContestLiveUpdates_BeforeInterview_1 mov r0, r10 - bl sub_80ECDF4 + bl ContestLiveUpdates_BeforeInterview_2 ldr r5, [sp, 0x4] lsrs r0, r5, 24 - bl sub_80ECE34 + bl ContestLiveUpdates_BeforeInterview_3 ldr r0, =gUnknown_02039F34 ldr r0, [r0] ldr r0, [r0, 0x1C] add r0, r8 ldrh r0, [r0, 0xA] - bl sub_80ECE74 + bl ContestLiveUpdates_BeforeInterview_4 adds r0, r4, 0 adds r1, r6, 0 - bl sub_80ECEB4 + bl ContestLiveUpdates_BeforeInterview_5 _080DF6EE: add sp, 0xC pop {r3-r5} diff --git a/asm/contest_ai.s b/asm/contest_ai.s index f284928860..af2ee52869 100644 --- a/asm/contest_ai.s +++ b/asm/contest_ai.s @@ -144,7 +144,7 @@ sub_81563B0: @ 81563B0 beq _081564A0 adds r7, r5, 0 ldr r6, =gAIScriptPtr - ldr r0, =gUnknown_02039E1E + ldr r0, =gUnknown_02039E00 + 30 mov r8, r0 _081563CC: ldr r0, [r7] @@ -5030,7 +5030,7 @@ sub_8158948: @ 8158948 push {r4-r6,lr} movs r5, 0 movs r4, 0 - ldr r6, =gUnknown_02039E1E + ldr r6, =gUnknown_02039E00 + 30 _08158950: lsls r1, r4, 1 ldr r0, =gUnknown_02039F34 diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 03e1aaf2b6..34e2811d92 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -1239,7 +1239,7 @@ _080F6334: ldr r1, =gUnknown_02039F20 ldrb r0, [r1] ldr r7, =gStringVar1 - ldr r2, =gUnknown_02039E0D + ldr r2, =gUnknown_02039E00 + 13 mov r8, r2 cmp r0, 0 beq _080F636E @@ -1750,7 +1750,7 @@ task_repel: @ 80F67C4 ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] - bl sub_80ED090 + bl BravoTrainerPokemonProfile_BeforeInterview2 _080F67E6: movs r0, 0 str r0, [sp] @@ -4785,7 +4785,7 @@ _080F8074: ldrb r0, [r6] muls r0, r5 adds r0, r4 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -4834,7 +4834,7 @@ _080F80E2: ldrb r0, [r7] muls r0, r6 adds r0, r5 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -4883,7 +4883,7 @@ _080F814E: ldrb r0, [r7] muls r0, r6 adds r0, r5 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -4926,7 +4926,7 @@ _080F8190: ldrb r0, [r7] muls r0, r6 adds r0, r5 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -4969,7 +4969,7 @@ _080F81F8: ldrb r0, [r7] muls r0, r6 adds r0, r5 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -4994,7 +4994,7 @@ sub_80F8264: @ 80F8264 ldr r0, =gSpecialVar_0x8006 ldrh r1, [r0] lsls r1, 6 - ldr r0, =gUnknown_02039E0D + ldr r0, =gUnknown_02039E00 + 13 adds r1, r0 adds r0, r4, 0 bl StringCopy @@ -5013,7 +5013,7 @@ sub_80F8290: @ 80F8290 ldr r1, =gSpecialVar_0x8006 ldrh r1, [r1] lsls r1, 6 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy pop {r0} @@ -5104,7 +5104,7 @@ sub_80F834C: @ 80F834C ldr r2, =gUnknown_02039F20 ldrb r0, [r2] ldr r4, =gStringVar3 - ldr r3, =gUnknown_02039E0D + ldr r3, =gUnknown_02039E00 + 13 cmp r0, 0 beq _080F836E _080F835C: @@ -5137,7 +5137,7 @@ sub_80F8390: @ 80F8390 ldr r2, =gUnknown_02039F20 ldrb r0, [r2] ldr r4, =gStringVar1 - ldr r3, =gUnknown_02039E02 + ldr r3, =gUnknown_02039E00 + 2 cmp r0, 0 beq _080F83B2 _080F83A0: @@ -5578,7 +5578,7 @@ sub_80F8714: @ 80F8714 b _080F877E .pool _080F8748: - ldr r5, =gUnknown_02039E02 + ldr r5, =gUnknown_02039E00 + 2 movs r4, 0x3 _080F874C: adds r0, r5, 0 diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s index ad22946c50..4565c75aa1 100644 --- a/asm/contest_link_80FC4F4.s +++ b/asm/contest_link_80FC4F4.s @@ -141,7 +141,7 @@ sub_80FC5DC: @ 80FC5DC bl GetMultiplayerId ldr r1, =gUnknown_02039F25 strb r0, [r1] - bl sub_8009FCC + bl GetLinkPlayerCount ldr r4, =gUnknown_02039F30 strb r0, [r4] ldr r1, =gUnknown_02039F2A diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s index c3a7b192cd..40df2d6a01 100644 --- a/asm/dewford_trend.s +++ b/asm/dewford_trend.s @@ -492,7 +492,7 @@ sub_812287C: @ 812287C bl Free b _08122980 _081228B0: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 mov r9, r0 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 20bf327ac2..fbbc85c250 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -565,7 +565,7 @@ _0811A72C: ldr r4, =gStringVar3 adds r0, r4, 0 movs r1, 0x2 - bl sub_811F88C + bl InitializeEasyChatWordArray b _0811A7C2 .pool _0811A73C: @@ -3704,7 +3704,7 @@ sub_811BDF0: @ 811BDF0 ldrb r2, [r0] mov r0, sp adds r1, r5, 0 - bl sub_81DB5E8 + bl TVShowConvertInternationalString movs r0, 0 mov r1, sp bl sub_81AFC0C @@ -11109,8 +11109,8 @@ _0811F886: bx r1 thumb_func_end sub_811F860 - thumb_func_start sub_811F88C -sub_811F88C: @ 811F88C + thumb_func_start InitializeEasyChatWordArray +InitializeEasyChatWordArray: @ 811F88C push {lr} adds r2, r0, 0 lsls r1, 16 @@ -11133,7 +11133,7 @@ _0811F8AE: pop {r0} bx r0 .pool - thumb_func_end sub_811F88C + thumb_func_end InitializeEasyChatWordArray thumb_func_start sub_811F8BC sub_811F8BC: @ 811F8BC diff --git a/asm/field_message_box.s b/asm/field_message_box.s index 35267e8d46..b86b6b738e 100644 --- a/asm/field_message_box.s +++ b/asm/field_message_box.s @@ -108,8 +108,8 @@ _080981E4: .pool thumb_func_end task_del_textbox - thumb_func_start box_related_two__2 -box_related_two__2: @ 80981EC + thumb_func_start ShowFieldMessage +ShowFieldMessage: @ 80981EC push {r4,lr} adds r1, r0, 0 ldr r4, =gUnknown_020375BC @@ -130,7 +130,7 @@ _0809820E: pop {r4} pop {r1} bx r1 - thumb_func_end box_related_two__2 + thumb_func_end ShowFieldMessage thumb_func_start sub_8098214 sub_8098214: @ 8098214 diff --git a/asm/field_poison.s b/asm/field_poison.s index 5b1e24719c..fde35ecce2 100644 --- a/asm/field_poison.s +++ b/asm/field_poison.s @@ -217,7 +217,7 @@ _080F96FC: ldrb r0, [r4, 0x2] bl sub_80F95C0 ldr r0, =gText_PkmnFainted3 - bl box_related_two__2 + bl ShowFieldMessage ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] diff --git a/asm/international_string_util.s b/asm/international_string_util.s index 7c52fc41a3..c4369887d5 100755 --- a/asm/international_string_util.s +++ b/asm/international_string_util.s @@ -389,8 +389,8 @@ _081DB5E4: bx r0 thumb_func_end sub_81DB5AC - thumb_func_start sub_81DB5E8 -sub_81DB5E8: @ 81DB5E8 + thumb_func_start TVShowConvertInternationalString +TVShowConvertInternationalString: @ 81DB5E8 push {r4,r5,lr} adds r5, r0, 0 adds r4, r2, 0 @@ -403,7 +403,7 @@ sub_81DB5E8: @ 81DB5E8 pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_81DB5E8 + thumb_func_end TVShowConvertInternationalString thumb_func_start sub_81DB604 sub_81DB604: @ 81DB604 diff --git a/asm/link.s b/asm/link.s index fb20b1fb2f..b5f7771392 100644 --- a/asm/link.s +++ b/asm/link.s @@ -1371,8 +1371,8 @@ _08009FC4: .pool thumb_func_end sub_8009FAC - thumb_func_start sub_8009FCC -sub_8009FCC: @ 8009FCC + thumb_func_start GetLinkPlayerCount +GetLinkPlayerCount: @ 8009FCC push {lr} ldr r0, =gLinkVSyncDisabled ldrb r0, [r0] @@ -1392,14 +1392,14 @@ _08009FEC: _08009FF4: pop {r1} bx r1 - thumb_func_end sub_8009FCC + thumb_func_end GetLinkPlayerCount thumb_func_start sub_8009FF8 sub_8009FF8: @ 8009FF8 push {r4-r7,lr} adds r6, r0, 0 adds r5, r1, 0 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r4, r0, 24 movs r2, 0 @@ -1442,7 +1442,7 @@ sub_800A03C: @ 800A03C thumb_func_start sub_800A040 sub_800A040: @ 800A040 push {lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -1546,7 +1546,7 @@ _0800A0EA: b _0800A22E .pool _0800A0FC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 cmp r0, 0 bne _0800A10E @@ -1572,12 +1572,12 @@ _0800A130: adds r5, 0x1C adds r6, 0x1 _0800A134: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r6, r0 blt _0800A120 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r7, r0 @@ -1714,12 +1714,12 @@ _0800A266: lsls r0, 24 lsrs r4, r0, 24 _0800A26C: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _0800A24C - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r6, r0 @@ -1742,8 +1742,8 @@ _0800A298: .pool thumb_func_end sub_800A23C - thumb_func_start sub_800A2A4 -sub_800A2A4: @ 800A2A4 + thumb_func_start GetLinkPlayerTrainerId +GetLinkPlayerTrainerId: @ 800A2A4 lsls r0, 24 lsrs r0, 24 ldr r2, =gLinkPlayers @@ -1755,7 +1755,7 @@ sub_800A2A4: @ 800A2A4 ldr r0, [r1] bx lr .pool - thumb_func_end sub_800A2A4 + thumb_func_end GetLinkPlayerTrainerId thumb_func_start sub_800A2BC sub_800A2BC: @ 800A2BC @@ -2697,7 +2697,7 @@ _0800A9E2: lsrs r4, r0, 24 adds r5, 0x1 _0800A9EE: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -3044,7 +3044,7 @@ _0800AC96: thumb_func_start sub_800ACAC sub_800ACAC: @ 800ACAC push {r4,lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r3, 0 @@ -3142,7 +3142,7 @@ _0800AD72: thumb_func_start sub_800AD88 sub_800AD88: @ 800AD88 push {r4,r5,lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r3, r0, 24 movs r1, 0 @@ -3239,7 +3239,7 @@ _0800AE46: thumb_func_start sub_800AE5C sub_800AE5C: @ 800AE5C push {r4,lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 @@ -9671,7 +9671,7 @@ _0800E1C8: lsls r0, 24 lsrs r5, r0, 24 _0800E1E6: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 subs r0, 0x1 @@ -9965,7 +9965,7 @@ _0800E428: ble _0800E3FC mov r4, r9 _0800E434: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -10019,7 +10019,7 @@ _0800E4A6: adds r5, 0x1C adds r4, 0x1 _0800E4AC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -13627,7 +13627,7 @@ sub_80102B8: @ 80102B8 bl sub_800FD14 strh r4, [r5] _080102E6: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 @@ -13734,7 +13734,7 @@ sub_8010390: @ 8010390 b _0801041C .pool _080103CC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0x1 @@ -15290,7 +15290,7 @@ _08011048: strb r0, [r1, 0x3] adds r4, 0x1 _08011054: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -20950,12 +20950,12 @@ _08014138: adds r5, 0x1C adds r4, 0x1 _08014152: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 blt _08014138 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -21159,7 +21159,7 @@ sub_8014304: @ 8014304 strh r1, [r0] ldr r0, =0x00004087 bl VarSet - bl sub_8009FCC + bl GetLinkPlayerCount ldr r1, =gUnknown_03005DB8 strb r0, [r1] bl GetMultiplayerId @@ -39697,7 +39697,7 @@ sub_801DDD0: @ 801DDD0 strb r5, [r4, 0x16] movs r0, 0xFF strb r0, [r4, 0x1A] - bl sub_8009FCC + bl GetLinkPlayerCount strb r0, [r4, 0xD] bl GetMultiplayerId strb r0, [r4, 0x13] @@ -42285,7 +42285,7 @@ _0801F30A: movs r0, 0x1 strh r0, [r4] _0801F30E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 adds r2, r0, 0 @@ -42446,7 +42446,7 @@ _0801F448: ldrsh r0, [r4, r3] cmp r0, 0 beq _0801F47C - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -45504,7 +45504,7 @@ _08020C8E: b _08020CF8 .pool _08020CAC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 mov r8, r0 @@ -53271,7 +53271,7 @@ _08024B2C: _08024B6A: ldr r0, [sp, 0x10] strb r1, [r0] - bl sub_8009FCC + bl GetLinkPlayerCount mov r1, r8 strb r0, [r1] bl GetMultiplayerId @@ -57700,7 +57700,7 @@ _08026EF6: adds r4, 0xC adds r5, 0x1 _08026EFE: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -59511,7 +59511,7 @@ _08027C76: thumb_func_start sub_8027D20 sub_8027D20: @ 8027D20 push {lr} - bl sub_8009FCC + bl GetLinkPlayerCount ldr r1, =gUnknown_02022C98 ldr r1, [r1] adds r1, 0x24 @@ -64891,7 +64891,7 @@ sub_802AA48: @ 802AA48 sub_802AA60: @ 802AA60 push {r4,lr} adds r4, r0, 0 - bl sub_8009FCC + bl GetLinkPlayerCount movs r2, 0 strb r0, [r4, 0x5] adds r1, r4, 0 @@ -68775,7 +68775,7 @@ _0802C8A4: thumb_func_start sub_802C8AC sub_802C8AC: @ 802C8AC push {lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 pop {r1} diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s index 7b21e19e7f..4972d4096f 100644 --- a/asm/mauville_old_man.s +++ b/asm/mauville_old_man.s @@ -1392,7 +1392,7 @@ _08120BB0: movs r0, 0xFF strb r0, [r7, 0x7] mov r0, sp - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _08120BF8 mov r0, sp @@ -1458,7 +1458,7 @@ _08120C48: muls r0, r5 adds r0, 0x5 adds r0, r6, r0 - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _08120C5E mov r0, r8 @@ -1480,7 +1480,7 @@ _08120C6A: movs r5, 0x3 _08120C74: adds r0, r6, 0 - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _08120C84 mov r1, r8 @@ -1569,7 +1569,7 @@ _08120CF2: mov r1, r8 strb r0, [r1, 0x7] mov r0, sp - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _08120D1A movs r0, 0x1 @@ -2205,7 +2205,7 @@ sub_8121178: @ 8121178 bl ConvertInternationalString mov r0, r8 bl sub_8120EC0 - bl box_related_two__2 + bl ShowFieldMessage pop {r3} mov r8, r3 pop {r4-r6} diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index e1a5e4e4c3..7c314f8db3 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -6514,7 +6514,7 @@ sub_81C3220: @ 81C3220 b _081C3282 .pool _081C326C: - bl sub_80F0020 + bl GetPlayerIDAsU32 adds r4, r0, 0 ldr r0, =0x0000ffff ands r4, r0 diff --git a/asm/record_mixing.s b/asm/record_mixing.s index aacc5baa08..2e946ad2a2 100644 --- a/asm/record_mixing.s +++ b/asm/record_mixing.s @@ -1162,7 +1162,7 @@ _080E7714: lsrs r0, 24 mov r8, r0 _080E771C: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r8, r0 @@ -1179,7 +1179,7 @@ _080E771C: adds r1, 0x1 strh r1, [r0, 0x8] _080E773E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 ldr r4, [sp, 0x8] @@ -1312,7 +1312,7 @@ sub_80E7820: @ 80E7820 sub_80E7830: @ 80E7830 push {r4,lr} adds r4, r0, 0 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 @@ -1341,7 +1341,7 @@ _080E7856: .pool _080E7868: movs r0, 0 - bl sub_800A2A4 + bl GetLinkPlayerTrainerId adds r2, r0, 0 movs r0, 0x1 ands r2, r0 @@ -1362,7 +1362,7 @@ _080E7880: .pool _080E7894: movs r0, 0 - bl sub_800A2A4 + bl GetLinkPlayerTrainerId movs r1, 0x9 bl __umodsi3 adds r2, r0, 0 @@ -1523,7 +1523,7 @@ _080E79CE: adds r4, r1, 0 adds r4, 0x20 adds r0, r4, 0 - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _080E79F2 adds r0, r4, 0 @@ -1738,7 +1738,7 @@ sub_80E7B60: @ 80E7B60 ldr r0, =gLinkPlayers ldrh r0, [r0, 0x4] bl SeedRng2 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r4, r0, 24 movs r0, 0 @@ -1878,7 +1878,7 @@ _080E7C9A: bne _080E7CEE adds r0, r5, 0 adds r0, 0x24 - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _080E7CBA adds r0, r5, 0 @@ -1901,7 +1901,7 @@ _080E7CC6: adds r4, r0, 0 adds r0, r5, 0 adds r0, 0x2C - bl sub_8009228 + bl IsStringJapanese cmp r0, 0 beq _080E7CE2 ldrb r0, [r4] @@ -1931,7 +1931,7 @@ _080E7CFA: lsrs r0, 16 mov r8, r0 _080E7D04: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r8, r0 @@ -3557,7 +3557,7 @@ sub_80E89AC: @ 80E89AC adds r6, r0, 0 mov r8, r1 mov r9, r2 - bl sub_8009FCC + bl GetLinkPlayerCount adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s index e742cbe7dd..2209312c2c 100644 --- a/asm/recorded_battle.s +++ b/asm/recorded_battle.s @@ -125,7 +125,7 @@ _08184EAC: bl GetMultiplayerId ldr r1, =gUnknown_0203C7B4 strb r0, [r1] - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 mov r10, r0 @@ -505,7 +505,7 @@ _081851D0: adds r4, 0x1C adds r5, 0x1 _081851DA: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 diff --git a/asm/rom3.s b/asm/rom3.s index 649097eb6a..0159a453aa 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -1963,7 +1963,7 @@ _08033726: lsls r0, r1, 24 lsrs r4, r0, 24 _0803372C: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 diff --git a/asm/rom6.s b/asm/rom6.s index 2ed9d888ec..6df7ea0f4a 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -4121,7 +4121,7 @@ _081377BC: add r2, sp, 0x18 bl SetMonData adds r0, r4, 0 - bl sub_80EE5A4 + bl GetRibbonCount strb r0, [r5, 0x1] movs r7, 0x1 _0813780A: @@ -4629,7 +4629,7 @@ sub_8137C10: @ 8137C10 ldr r0, =gSpecialVar_0x8004 ldrh r0, [r0] bl sub_8137A98 - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 .pool @@ -5399,13 +5399,13 @@ sub_8138240: @ 8138240 bl GetMultiplayerId lsls r0, 24 lsrs r7, r0, 24 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 cmp r4, r5 bcs _0813828A - ldr r0, =gUnknown_0858D144 + ldr r0, =gTVStringVarPtrs mov r8, r0 _08138262: cmp r7, r4 @@ -6378,7 +6378,7 @@ sub_8138AA4: @ 8138AA4 sub_8138AC0: @ 8138AC0 push {lr} ldr r0, =gStringVar4 - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 .pool @@ -6537,7 +6537,7 @@ _08138BF6: thumb_func_start sub_8138C04 sub_8138C04: @ 8138C04 push {r4,lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7060,7 +7060,7 @@ sub_8138FEC: @ 8138FEC thumb_func_start sub_8139004 sub_8139004: @ 8139004 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7084,7 +7084,7 @@ _0813902A: thumb_func_start sub_8139030 sub_8139030: @ 8139030 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7108,7 +7108,7 @@ _08139056: thumb_func_start sub_813905C sub_813905C: @ 813905C push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7132,7 +7132,7 @@ _08139082: thumb_func_start sub_8139088 sub_8139088: @ 8139088 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7156,7 +7156,7 @@ _081390AE: thumb_func_start sub_81390B4 sub_81390B4: @ 81390B4 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7295,7 +7295,7 @@ RemoveScriptFieldObject: @ 81391AC thumb_func_start sub_81391D0 sub_81391D0: @ 81391D0 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7479,7 +7479,7 @@ _08139342: thumb_func_start sub_8139348 sub_8139348: @ 8139348 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7507,7 +7507,7 @@ sub_8139370: @ 8139370 movs r1, 0x1 mov r0, sp strb r1, [r0] - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7519,7 +7519,7 @@ sub_8139370: @ 8139370 mov r2, sp bl SetMonData adds r0, r4, 0 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -7538,7 +7538,7 @@ _081393B6: thumb_func_start sub_81393C8 sub_81393C8: @ 81393C8 push {lr} - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -7882,8 +7882,8 @@ _08139684: bx r0 thumb_func_end sub_8139668 - thumb_func_start sub_8139688 -sub_8139688: @ 8139688 + thumb_func_start GetIdxOfFirstPartyMemberThatIsNotAnEgg +GetIdxOfFirstPartyMemberThatIsNotAnEgg: @ 8139688 push {r4-r6,lr} bl CalculatePlayerPartyCount lsls r0, 24 @@ -7926,7 +7926,7 @@ _081396D8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_8139688 + thumb_func_end GetIdxOfFirstPartyMemberThatIsNotAnEgg thumb_func_start sub_81396E0 sub_81396E0: @ 81396E0 @@ -8050,7 +8050,7 @@ sub_81397C4: @ 81397C4 cmp r1, r0 bls _081397E0 movs r0, 0 - bl sub_80EF340 + bl TV_PrintIntToStringVar b _08139862 .pool _081397E0: @@ -9094,7 +9094,7 @@ _0813A062: lsls r0, 2 adds r0, r7 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r4-r7} pop {r0} bx r0 @@ -9996,7 +9996,7 @@ _0813A7C6: lsrs r0, 22 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r0} bx r0 .pool @@ -10036,7 +10036,7 @@ sub_813A820: @ 813A820 lsls r0, r4, 2 adds r0, r1 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage ldr r0, =0x00004031 adds r1, r4, 0 bl VarSet @@ -10056,7 +10056,7 @@ sub_813A854: @ 813A854 lsrs r0, 14 adds r0, r4 ldr r0, [r0] - bl box_related_two__2 + bl ShowFieldMessage pop {r4} pop {r0} bx r0 diff --git a/asm/scrcmd.s b/asm/scrcmd.s index f2e61a9463..e8a8380107 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -3267,7 +3267,7 @@ s67_execute_box: @ 809ABD4 bne _0809ABE2 ldr r0, [r4, 0x64] _0809ABE2: - bl box_related_two__2 + bl ShowFieldMessage movs r0, 0 pop {r4} pop {r1} @@ -3793,7 +3793,7 @@ sBD_virtual_message: @ 809AFA0 ldr r1, =gUnknown_020375C4 ldr r1, [r1] subs r0, r1 - bl box_related_two__2 + bl ShowFieldMessage movs r0, 0 pop {r1} bx r1 @@ -3841,7 +3841,7 @@ s7E_load_first_pokenames: @ 809AFFC lsls r2, 2 adds r2, r0 ldr r4, [r2] - bl sub_8139688 + bl GetIdxOfFirstPartyMemberThatIsNotAnEgg lsls r0, 24 lsrs r0, 24 movs r1, 0x64 diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s index 231879f02b..52e3b40dba 100644 --- a/asm/script_pokemon_util_80F87D8.s +++ b/asm/script_pokemon_util_80F87D8.s @@ -222,7 +222,7 @@ sub_80F8970: @ 80F8970 mov r12, r0 ldr r1, =gSpecialVar_0x8006 mov r9, r1 - ldr r2, =gUnknown_02039E02 + ldr r2, =gUnknown_02039E00 + 2 mov r10, r2 mov r2, r12 mov r1, sp @@ -625,7 +625,7 @@ sub_80F8C7C: @ 80F8C7C ldrb r0, [r6] muls r0, r5 adds r0, r4 - bl sub_80EE5A4 + bl GetRibbonCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 diff --git a/asm/secret_base.s b/asm/secret_base.s index 0290e9f7fc..0e47eaf4f6 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -4494,7 +4494,7 @@ sub_80EAF80: @ 80EAF80 bne _080EAF9A b _080EB16A _080EAF9A: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/trade.s b/asm/trade.s index d4c54cef68..31c16195e6 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -6603,7 +6603,7 @@ _0807A97C: adds r4, 0x1C adds r5, 0x1 _0807A980: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6632,7 +6632,7 @@ _0807A9B0: adds r4, 0x1C adds r5, 0x1 _0807A9B4: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 diff --git a/asm/tv.s b/asm/tv.s deleted file mode 100644 index d61392fa19..0000000000 --- a/asm/tv.s +++ /dev/null @@ -1,16938 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ClearTVShowData -ClearTVShowData: @ 80EBEE0 - push {r4-r7,lr} - movs r3, 0 - ldr r6, =gSaveBlock1Ptr - movs r5, 0 - ldr r7, =0x000027ce -_080EBEEA: - ldr r0, [r6] - lsls r1, r3, 3 - adds r1, r3 - lsls r1, 2 - adds r0, r1 - ldr r2, =0x000027cc - adds r0, r2 - strb r5, [r0] - ldr r0, [r6] - adds r0, r1 - adds r2, 0x1 - adds r0, r2 - strb r5, [r0] - movs r2, 0 - adds r4, r3, 0x1 - adds r3, r1, 0 -_080EBF0A: - ldr r0, [r6] - adds r1, r2, r3 - adds r0, r7 - adds r0, r1 - strb r5, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x21 - bls _080EBF0A - lsls r0, r4, 24 - lsrs r3, r0, 24 - cmp r3, 0x18 - bls _080EBEEA - bl sub_80EEE5C - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ClearTVShowData - - thumb_func_start special_0x44 -special_0x44: @ 80EBF3C - push {r4-r7,lr} - movs r4, 0x5 - ldr r1, =gSaveBlock1Ptr - ldr r0, [r1] - movs r2, 0xA2 - lsls r2, 6 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080EBF70 - adds r3, r1, 0 - subs r2, 0xB4 -_080EBF54: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x17 - bhi _080EBF70 - ldr r0, [r3] - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - adds r0, r1 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080EBF54 -_080EBF70: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r5, 0 - ldr r6, =gSaveBlock1Ptr -_080EBF86: - ldr r1, [r6] - lsls r0, r5, 3 - adds r0, r5 - lsls r4, r0, 2 - adds r1, r4 - ldr r0, =0x000027cc - adds r1, r0 - ldrb r0, [r1] - bl sub_80EFFE0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _080EBFBC - ldr r0, [r6] - adds r0, r4 - ldr r1, =0x000027cd - adds r0, r1 - ldrb r0, [r0] - b _080EBFCC - .pool -_080EBFBC: - ldr r2, =0x000027cc - adds r0, r4, r2 - ldr r1, [r6] - adds r1, r0 - ldrh r0, [r1, 0x16] - cmp r0, 0 - bne _080EBFD8 - ldrb r0, [r1, 0x1] -_080EBFCC: - cmp r0, 0x1 - bne _080EBFD8 - adds r0, r5, 0 - b _080EBFEC - .pool -_080EBFD8: - cmp r5, 0 - bne _080EBFE0 - movs r5, 0x17 - b _080EBFE6 -_080EBFE0: - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EBFE6: - cmp r5, r7 - bne _080EBF86 - movs r0, 0xFF -_080EBFEC: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end special_0x44 - - thumb_func_start sub_80EBFF4 -sub_80EBFF4: @ 80EBFF4 - push {lr} - bl special_0x44 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - bne _080EC006 - movs r0, 0xFF - b _080EC03E -_080EC006: - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r3, =0x00002b90 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _080EC03C - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r2, =0x000027cc - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080EC03C - bl sub_80EC18C - lsls r0, 24 - lsrs r0, 24 - b _080EC03E - .pool -_080EC03C: - adds r0, r1, 0 -_080EC03E: - pop {r1} - bx r1 - thumb_func_end sub_80EBFF4 - - thumb_func_start UpdateTVScreensOnMap -@ void UpdateTVScreensOnMap(s32 mapWidth, s32 mapHeight) -UpdateTVScreensOnMap: @ 80EC044 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, =0x00000891 - bl FlagSet - bl CheckForBigMovieOrEmergencyNewsOnTV - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EC06A - cmp r0, 0x2 - beq _080EC0BE - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r0, [r0, 0x4] - cmp r0, 0xD - bne _080EC080 -_080EC06A: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl SetTVMetatilesOnMap - b _080EC0BE - .pool -_080EC080: - ldr r0, =0x00000892 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080EC0BE - bl sub_80EBFF4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080EC0AE - bl sub_80EEF20 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080EC0AE - bl IsTVShowInSearchOfTrainersAiring - lsls r0, 24 - cmp r0, 0 - beq _080EC0BE -_080EC0AE: - ldr r0, =0x00000891 - bl FlagReset - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl SetTVMetatilesOnMap -_080EC0BE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateTVScreensOnMap - - thumb_func_start SetTVMetatilesOnMap -@ void SetTVMetatilesOnMap(s32 mapWidth, s32 mapHeight, u16 metatileId) -SetTVMetatilesOnMap: @ 80EC0CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - movs r5, 0 - cmp r5, r10 - bge _080EC120 - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1, 0 - mov r8, r2 - mov r1, r8 - orrs r1, r0 - mov r8, r1 -_080EC0F2: - movs r4, 0 - adds r7, r5, 0x1 - cmp r4, r9 - bge _080EC11A - mov r0, r8 - lsls r6, r0, 16 -_080EC0FE: - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - cmp r0, 0x86 - bne _080EC114 - adds r0, r4, 0 - adds r1, r5, 0 - lsrs r2, r6, 16 - bl MapGridSetMetatileIdAt -_080EC114: - adds r4, 0x1 - cmp r4, r9 - blt _080EC0FE -_080EC11A: - adds r5, r7, 0 - cmp r5, r10 - blt _080EC0F2 -_080EC120: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SetTVMetatilesOnMap - - thumb_func_start TurnOffTVScreen -TurnOffTVScreen: @ 80EC130 - push {lr} - ldr r1, =gUnknown_03005DC0 - ldr r0, [r1] - ldr r1, [r1, 0x4] - movs r2, 0x2 - bl SetTVMetatilesOnMap - bl DrawWholeMapView - pop {r0} - bx r0 - .pool - thumb_func_end TurnOffTVScreen - - thumb_func_start TurnOnTVScreen -TurnOnTVScreen: @ 80EC14C - push {lr} - ldr r1, =gUnknown_03005DC0 - ldr r0, [r1] - ldr r1, [r1, 0x4] - movs r2, 0x3 - bl SetTVMetatilesOnMap - bl DrawWholeMapView - pop {r0} - bx r0 - .pool - thumb_func_end TurnOnTVScreen - - thumb_func_start special_0x45 -special_0x45: @ 80EC168 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, =gSpecialVar_0x8004 - ldrh r2, [r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, =0x000027cc - adds r1, r0 - ldrb r0, [r1] - bx lr - .pool - thumb_func_end special_0x45 - - thumb_func_start sub_80EC18C -sub_80EC18C: @ 80EC18C - push {r4,lr} - movs r2, 0 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] -_080EC194: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r3, r0 - ldr r4, =0x000027cc - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080EC1C0 - cmp r0, 0x29 - beq _080EC1C0 - adds r4, 0x1 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080EC1C0 - adds r0, r2, 0 - b _080EC1CC - .pool -_080EC1C0: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080EC194 - movs r0, 0xFF -_080EC1CC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EC18C - - thumb_func_start special_0x4a -special_0x4a: @ 80EC1D4 - push {lr} - ldr r3, =gSaveBlock1Ptr - ldr r2, =gSpecialVar_0x8004 - ldrh r1, [r2] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r3, [r3] - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080EC214 - ldr r1, =0x00002b90 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _080EC214 - bl sub_80EC18C - lsls r0, 24 - lsrs r0, 24 - b _080EC216 - .pool -_080EC214: - ldrb r0, [r2] -_080EC216: - pop {r1} - bx r1 - thumb_func_end special_0x4a - - thumb_func_start ResetGabbyAndTy -ResetGabbyAndTy: @ 80EC21C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldr r3, =gSaveBlock1Ptr - ldr r2, [r3] - ldr r1, =0x00002ba4 - adds r0, r2, r1 - movs r4, 0 - mov r10, r4 - movs r1, 0 - strh r1, [r0] - ldr r4, =0x00002ba6 - adds r0, r2, r4 - strh r1, [r0] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, =0x00002baa - adds r1, r2, r0 - ldr r0, =0x0000ffff - strh r0, [r1] - adds r4, 0x6 - adds r2, r4 - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - mov r9, r0 - ands r0, r1 - strb r0, [r2] - ldr r1, [r3] - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - mov r8, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, r4 - ldrb r2, [r1] - movs r6, 0x5 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, r4 - ldrb r2, [r1] - movs r5, 0x9 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x1F - ands r0, r2 - strb r0, [r1] - ldr r0, [r3] - ldr r2, =0x00002baf - adds r0, r2 - ldrb r1, [r0] - mov r4, r9 - ands r4, r1 - strb r4, [r0] - ldr r0, [r3] - adds r0, r2 - ldrb r1, [r0] - mov r4, r8 - ands r4, r1 - strb r4, [r0] - ldr r0, [r3] - adds r0, r2 - ldrb r1, [r0] - ands r6, r1 - strb r6, [r0] - ldr r0, [r3] - adds r0, r2 - ldrb r1, [r0] - ands r5, r1 - strb r5, [r0] - ldr r1, [r3] - adds r1, r2 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldr r0, [r3] - ldr r1, =0x00002bac - adds r0, r1 - mov r4, r10 - strb r4, [r0] - ldr r0, [r3] - adds r1, 0x1 - adds r0, r1 - strb r4, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ResetGabbyAndTy - - thumb_func_start GabbyAndTyBeforeInterview -GabbyAndTyBeforeInterview: @ 80EC31C - push {r4,lr} - ldr r3, =gSaveBlock1Ptr - ldr r2, [r3] - ldr r0, =gBattleResults - mov r12, r0 - ldrh r1, [r0, 0x6] - ldr r4, =0x00002ba4 - adds r0, r2, r4 - strh r1, [r0] - mov r0, r12 - ldrh r1, [r0, 0x26] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - mov r0, r12 - ldrh r1, [r0, 0x22] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, =0x00002bad - adds r2, r0 - ldrb r1, [r2] - adds r0, r1, 0 - adds r4, r3, 0 - cmp r0, 0xFF - beq _080EC354 - adds r0, r1, 0x1 - strb r0, [r2] -_080EC354: - ldr r2, [r4] - mov r0, r12 - ldrb r1, [r0, 0x5] - lsls r1, 31 - ldr r0, =0x00002bae - adds r2, r0 - lsrs r1, 31 - ldrb r3, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - mov r1, r12 - ldrb r0, [r1] - cmp r0, 0 - beq _080EC398 - ldr r0, [r4] - ldr r1, =0x00002bae - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - b _080EC3A6 - .pool -_080EC398: - ldr r0, [r4] - ldr r1, =0x00002bae - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 -_080EC3A6: - strb r1, [r0] - mov r1, r12 - ldrb r0, [r1, 0x3] - cmp r0, 0 - beq _080EC3C4 - ldr r0, [r4] - ldr r1, =0x00002bae - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _080EC3D2 - .pool -_080EC3C4: - ldr r0, [r4] - ldr r1, =0x00002bae - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_080EC3D2: - strb r1, [r0] - mov r0, r12 - ldrb r1, [r0, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080EC410 - movs r1, 0 - mov r0, r12 - adds r0, 0x36 - ldrb r0, [r0] - cmp r0, 0 - bne _080EC410 -_080EC3EC: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bhi _080EC41E - mov r0, r12 - adds r0, 0x36 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _080EC3EC - ldr r0, [r4] - ldr r4, =0x00002bae - adds r0, r4 - b _080EC416 - .pool -_080EC410: - ldr r0, [r4] - ldr r1, =0x00002bae - adds r0, r1 -_080EC416: - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_080EC41E: - bl TakeTVShowInSearchOfTrainersOffTheAir - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r4, =0x00002ba8 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _080EC436 - movs r0, 0x1 - bl FlagSet -_080EC436: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end GabbyAndTyBeforeInterview - - thumb_func_start GabbyAndTyAfterInterview -GabbyAndTyAfterInterview: @ 80EC448 - push {r4-r6,lr} - ldr r5, =gSaveBlock1Ptr - ldr r2, [r5] - ldr r6, =0x00002bae - adds r0, r2, r6 - ldrb r1, [r0] - lsls r1, 31 - ldr r4, =0x00002baf - adds r2, r4 - lsrs r1, 31 - ldrb r3, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r2, [r5] - adds r0, r2, r6 - ldrb r0, [r0] - adds r2, r4 - movs r1, 0x2 - ands r1, r0 - ldrb r3, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r2, [r5] - adds r0, r2, r6 - ldrb r0, [r0] - adds r2, r4 - movs r1, 0x4 - ands r1, r0 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r2, [r5] - adds r0, r2, r6 - ldrb r0, [r0] - adds r2, r4 - movs r1, 0x8 - ands r1, r0 - ldrb r3, [r2] - movs r0, 0x9 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r5] - adds r1, r6 - ldrb r0, [r1] - movs r2, 0x10 - orrs r0, r2 - strb r0, [r1] - ldr r0, [r5] - ldr r1, =gMapHeader - ldrb r1, [r1, 0x14] - ldr r2, =0x00002bac - adds r0, r2 - strb r1, [r0] - movs r0, 0x6 - bl IncrementGameStat - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end GabbyAndTyAfterInterview - - thumb_func_start TakeTVShowInSearchOfTrainersOffTheAir -TakeTVShowInSearchOfTrainersOffTheAir: @ 80EC4E8 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, =0x00002bae - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bx lr - .pool - thumb_func_end TakeTVShowInSearchOfTrainersOffTheAir - - thumb_func_start GabbyAndTyGetBattleNum -GabbyAndTyGetBattleNum: @ 80EC504 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x00002bad - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x5 - bls _080EC522 - ldrb r0, [r1] - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x6 - lsls r0, 24 - lsrs r0, 24 -_080EC522: - pop {r1} - bx r1 - .pool - thumb_func_end GabbyAndTyGetBattleNum - - thumb_func_start IsTVShowInSearchOfTrainersAiring -IsTVShowInSearchOfTrainersAiring: @ 80EC530 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002bae - adds r0, r1 - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 31 - bx lr - .pool - thumb_func_end IsTVShowInSearchOfTrainersAiring - - thumb_func_start GabbyAndTyGetLastQuote -GabbyAndTyGetLastQuote: @ 80EC548 - push {r4,r5,lr} - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r2, =0x00002baa - adds r1, r0, r2 - ldrh r0, [r1] - ldr r4, =0x0000ffff - cmp r0, r4 - beq _080EC584 - ldr r0, =gStringVar1 - ldrh r1, [r1] - bl CopyEasyChatWord - ldr r1, [r5] - ldr r0, =0x00002baa - adds r1, r0 - ldrh r2, [r1] - adds r0, r4, 0 - orrs r0, r2 - strh r0, [r1] - movs r0, 0x1 - b _080EC586 - .pool -_080EC584: - movs r0, 0 -_080EC586: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GabbyAndTyGetLastQuote - - thumb_func_start GabbyAndTyGetLastBattleTrivia -GabbyAndTyGetLastBattleTrivia: @ 80EC58C - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002baf - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080EC5AC - movs r0, 0x1 - b _080EC5D2 - .pool -_080EC5AC: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080EC5B8 - movs r0, 0x2 - b _080EC5D2 -_080EC5B8: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EC5C4 - movs r0, 0x3 - b _080EC5D2 -_080EC5C4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080EC5D0 - movs r0, 0 - b _080EC5D2 -_080EC5D0: - movs r0, 0x4 -_080EC5D2: - pop {r1} - bx r1 - thumb_func_end GabbyAndTyGetLastBattleTrivia - - thumb_func_start GabbyAndTySetScriptVarsToFieldObjectLocalIds -GabbyAndTySetScriptVarsToFieldObjectLocalIds: @ 80EC5D8 - push {lr} - bl GabbyAndTyGetBattleNum - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x7 - bhi _080EC6B0 - lsls r0, 2 - ldr r1, =_080EC5F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080EC5F8: - .4byte _080EC618 - .4byte _080EC62C - .4byte _080EC640 - .4byte _080EC654 - .4byte _080EC668 - .4byte _080EC67C - .4byte _080EC690 - .4byte _080EC6A4 -_080EC618: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0xE - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0xD - b _080EC6AE - .pool -_080EC62C: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x5 - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x6 - b _080EC6AE - .pool -_080EC640: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x12 - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x11 - b _080EC6AE - .pool -_080EC654: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x15 - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x16 - b _080EC6AE - .pool -_080EC668: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x8 - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x9 - b _080EC6AE - .pool -_080EC67C: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x13 - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x14 - b _080EC6AE - .pool -_080EC690: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x17 - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x18 - b _080EC6AE - .pool -_080EC6A4: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0xA - strh r0, [r1] - ldr r1, =gSpecialVar_0x8005 - movs r0, 0xB -_080EC6AE: - strh r0, [r1] -_080EC6B0: - pop {r0} - bx r0 - .pool - thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds - - thumb_func_start InterviewAfter -InterviewAfter: @ 80EC6BC - push {lr} - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x7 - bhi _080EC724 - lsls r0, 2 - ldr r1, =_080EC6DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080EC6DC: - .4byte _080EC6FC - .4byte _080EC702 - .4byte _080EC708 - .4byte _080EC70E - .4byte _080EC724 - .4byte _080EC714 - .4byte _080EC71A - .4byte _080EC720 -_080EC6FC: - bl sub_80ED548 - b _080EC724 -_080EC702: - bl sub_80ED5B8 - b _080EC724 -_080EC708: - bl sub_80ED610 - b _080EC724 -_080EC70E: - bl TaskDummy5 - b _080EC724 -_080EC714: - bl sub_80ECF5C - b _080EC724 -_080EC71A: - bl sub_80ED164 - b _080EC724 -_080EC720: - bl sub_80ECA38 -_080EC724: - pop {r0} - bx r0 - thumb_func_end InterviewAfter - - thumb_func_start sub_80EC728 -sub_80EC728: @ 80EC728 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - bl sub_80EED88 - bl sub_80ED718 - ldr r5, =gBattleResults - ldrh r0, [r5, 0x28] - cmp r0, 0 - bne _080EC74C - bl sub_80EC8FC - b _080EC888 - .pool -_080EC74C: - bl sub_80EC8A4 - ldr r0, =0x0000ffff - bl sub_80EFB38 - lsls r0, 24 - cmp r0, 0 - beq _080EC75E - b _080EC888 -_080EC75E: - ldrh r1, [r5, 0x28] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x2A - bl StringCompare - cmp r0, 0 - bne _080EC776 - b _080EC888 -_080EC776: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EC888 - movs r0, 0x15 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EC888 - movs r2, 0 - adds r1, r5, 0 - adds r1, 0x36 -_080EC7A8: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _080EC7A8 - cmp r4, 0 - bne _080EC7CA - ldrb r1, [r5, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080EC888 -_080EC7CA: - movs r4, 0 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - movs r0, 0x15 - strb r0, [r6] - strb r4, [r6, 0x1] - ldrb r1, [r5, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080EC81C - movs r4, 0x1 - movs r0, 0x1 - adds r3, r6, 0 - adds r3, 0x13 - ldr r1, =gSaveBlock2Ptr - mov r8, r1 - adds r7, r6, 0x4 - b _080EC84E - .pool -_080EC81C: - movs r2, 0 - ldr r0, =gLastUsedItem - mov r12, r0 - adds r3, r6, 0 - adds r3, 0x13 - ldr r1, =gSaveBlock2Ptr - mov r8, r1 - adds r7, r6, 0x4 - adds r1, r5, 0 - adds r1, 0x36 -_080EC830: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _080EC830 - cmp r4, 0xFF - bls _080EC84A - movs r4, 0xFF -_080EC84A: - mov r1, r12 - ldrh r0, [r1] -_080EC84E: - strb r4, [r6, 0x12] - strb r0, [r6, 0xF] - mov r0, r8 - ldr r1, [r0] - adds r0, r3, 0 - bl StringCopy - ldr r4, =gUnknown_03005D3A - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - adds r0, r7, 0 - bl sub_81DB604 - adds r5, r0, 0 - adds r0, r7, 0 - bl StripExtCtrlCodes - subs r4, 0x2A - ldrh r0, [r4, 0x28] - strh r0, [r6, 0x10] - adds r0, r6, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r6, 0x2] - strb r5, [r6, 0x3] -_080EC888: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EC728 - - thumb_func_start sub_80EC8A4 -sub_80EC8A4: @ 80EC8A4 - push {r4,lr} - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, =0x00002b2c - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0x19 - beq _080EC8CA - ldr r2, =0x000027cc - adds r0, r1, r2 - movs r1, 0x18 - bl sub_80EF910 - movs r0, 0x5 - bl GetGameStat - strh r0, [r4, 0x6] - movs r0, 0x19 - strb r0, [r4] -_080EC8CA: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - ldr r1, =gBattleResults - ldrh r0, [r1, 0x28] - strh r0, [r4, 0x4] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x8] - ldr r0, =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0xA] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EC8A4 - - thumb_func_start sub_80EC8FC -sub_80EC8FC: @ 80EC8FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =0x0000ffff - bl sub_80EFB38 - lsls r0, 24 - cmp r0, 0 - bne _080EC9B4 - movs r1, 0 - movs r5, 0 - ldr r2, =gUnknown_03005D46 -_080EC914: - adds r0, r1, r2 - ldrb r0, [r0] - adds r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bls _080EC914 - cmp r5, 0xFF - bls _080EC92E - movs r5, 0xFF -_080EC92E: - cmp r5, 0x2 - bls _080EC9B4 - ldr r0, =gBattleOutcome - mov r8, r0 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080EC940 - cmp r0, 0x1 - bne _080EC9B4 -_080EC940: - ldr r7, =gSaveBlock1Ptr - ldr r0, [r7] - ldr r6, =0x000027cc - adds r0, r6 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EC9B4 - movs r0, 0x17 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EC9B4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldr r4, [r7] - adds r4, r0 - movs r1, 0 - movs r0, 0x17 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, =gBattleResults - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x20] - strh r0, [r4, 0xE] - strb r5, [r4, 0x10] - mov r1, r8 - ldrb r0, [r1] - strb r0, [r4, 0x11] - ldr r0, =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0x12] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x2] -_080EC9B4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EC8FC - - thumb_func_start sub_80EC9E8 -sub_80EC9E8: @ 80EC9E8 - push {r4,lr} - adds r4, r0, 0 - bl sub_80F0020 - strb r0, [r4, 0x1E] - lsrs r2, r0, 8 - strb r2, [r4, 0x1F] - adds r1, r4, 0 - adds r1, 0x20 - strb r0, [r1] - adds r1, 0x1 - strb r2, [r1] - adds r1, 0x1 - strb r0, [r1] - adds r0, r4, 0 - adds r0, 0x23 - strb r2, [r0] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EC9E8 - - thumb_func_start sub_80ECA10 -sub_80ECA10: @ 80ECA10 - push {r4,lr} - adds r4, r0, 0 - bl sub_80F0020 - adds r1, r4, 0 - adds r1, 0x20 - strb r0, [r1] - lsrs r1, r0, 8 - adds r2, r4, 0 - adds r2, 0x21 - strb r1, [r2] - adds r2, 0x1 - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0x23 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ECA10 - - thumb_func_start sub_80ECA38 -sub_80ECA38: @ 80ECA38 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - ldr r7, [r0] - ldr r1, =0x00002b2c - adds r6, r7, r1 - ldrb r1, [r6] - cmp r1, 0x8 - bne _080ECACE - ldr r0, =gUnknown_030060BC - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r5, =0x000027cc - adds r4, r5 - adds r4, r7, r4 - strb r1, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x14 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - ldr r0, =gUnknown_02039F2C - ldrh r0, [r0] - strb r0, [r4, 0x1C] - ldr r0, =gUnknown_02039F24 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x12] - ldrh r0, [r6, 0x2] - strh r0, [r4, 0x2] - ldrb r0, [r6, 0xC] - strb r0, [r4, 0xC] - ldrb r0, [r6, 0xD] - strb r0, [r4, 0xD] - ldrb r0, [r6, 0xE] - strb r0, [r4, 0xE] - ldrh r0, [r6, 0x10] - strh r0, [r4, 0x10] - ldrb r0, [r6, 0xF] - strb r0, [r4, 0xF] - adds r0, r4, 0x4 - ldr r2, =0x00002b30 - adds r1, r7, r2 - bl StringCopy - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x1D] - ldrb r0, [r6, 0x1E] - strb r0, [r4, 0x1E] - mov r1, r8 - ldr r0, [r1] - adds r0, r5 - movs r1, 0x18 - bl sub_80EF910 -_080ECACE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECA38 - - thumb_func_start sub_80ECB00 -sub_80ECB00: @ 80ECB00 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFADC - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECBEC - movs r0, 0xA - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - beq _080ECBEC - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, [r6] - adds r4, r1, r0 - movs r0, 0xA - strb r0, [r4] - movs r5, 0x1 - strb r5, [r4, 0x1] - adds r0, r4, 0x4 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080ECBA0 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080ECBA2 - strb r5, [r4, 0x18] - b _080ECBA4 - .pool -_080ECBA0: - movs r0, 0x2 -_080ECBA2: - strb r0, [r4, 0x18] -_080ECBA4: - mov r0, r10 - strh r0, [r4, 0x14] - mov r0, r9 - strh r0, [r4, 0x16] - mov r0, r8 - strh r0, [r4, 0x2] - lsls r0, r7, 3 - subs r0, r7 - lsls r5, r0, 2 - ldr r6, =gLinkPlayers + 8 - adds r1, r5, r6 - mov r0, sp - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - adds r0, r4, 0 - adds r0, 0xC - mov r1, sp - bl StringCopy - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x19] - cmp r0, 0x1 - beq _080ECBE8 - adds r0, r6, r5 - ldrh r0, [r0, 0x12] - cmp r0, 0x1 - bne _080ECBEA -_080ECBE8: - movs r0, 0x1 -_080ECBEA: - strb r0, [r4, 0x1A] -_080ECBEC: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECB00 - - thumb_func_start sub_80ECC04 -sub_80ECC04: @ 80ECC04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - mov r10, r0 - ldr r0, [sp, 0x44] - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - ldr r0, [r0] - ldr r7, =0x000027cc - adds r0, r7 - bl sub_80EFADC - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECC54 - movs r0, 0x9 - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - bne _080ECC68 -_080ECC54: - movs r0, 0 - b _080ECCEE - .pool -_080ECC68: - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - mov r2, r8 - ldr r1, [r2] - adds r4, r1, r0 - movs r0, 0x9 - strb r0, [r4] - movs r7, 0x1 - strb r7, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0xC - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - mov r0, sp - mov r1, r10 - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - adds r0, r4, 0x4 - mov r1, sp - bl StringCopy - movs r0, 0x7 - ands r5, r0 - ldrb r1, [r4, 0x3] - subs r0, 0xF - ands r0, r1 - orrs r0, r5 - movs r1, 0x3 - ands r6, r1 - lsls r2, r6, 3 - subs r1, 0x1C - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - add r0, sp, 0x20 - ldrb r0, [r0] - strb r0, [r4, 0x2] - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x14] - cmp r0, 0x1 - beq _080ECCDA - mov r1, r9 - cmp r1, 0x1 - bne _080ECCE8 -_080ECCDA: - strb r7, [r4, 0x15] - b _080ECCEC - .pool -_080ECCE8: - mov r2, r9 - strb r2, [r4, 0x15] -_080ECCEC: - movs r0, 0x1 -_080ECCEE: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80ECC04 - - thumb_func_start sub_80ECD00 -sub_80ECD00: @ 80ECD00 - push {r4-r6,lr} - sub sp, 0x20 - ldr r6, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8006 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r6] - adds r4, r1, r0 - ldr r0, =gSpecialVar_0x8005 - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - strb r0, [r4, 0x16] - adds r0, r4, 0x2 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - movs r0, 0xB - strb r0, [r4] - movs r5, 0x1 - strb r5, [r4, 0x1] - bl sub_80F0020 - strb r0, [r4, 0xA] - lsrs r0, 8 - strb r0, [r4, 0xB] - ldr r1, =gStringVar1 - mov r0, sp - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - adds r0, r4, 0 - adds r0, 0xC - mov r1, sp - bl StringCopy - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x17] - cmp r0, 0x1 - beq _080ECD74 - ldr r0, [r6] - ldr r1, =0x000031a0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080ECD98 -_080ECD74: - strb r5, [r4, 0x18] - b _080ECD9A - .pool -_080ECD98: - strb r0, [r4, 0x18] -_080ECD9A: - add sp, 0x20 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80ECD00 - - thumb_func_start sub_80ECDA4 -sub_80ECDA4: @ 80ECDA4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r4, =0x000027cc - adds r0, r4 - movs r1, 0x18 - bl sub_80EF910 - ldr r0, [r5] - adds r0, r4 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECDDC - ldr r0, [r5] - ldr r1, =0x00002b2c - adds r0, r1 - strb r6, [r0, 0xD] - movs r1, 0x8 - strb r1, [r0] -_080ECDDC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECDA4 - - thumb_func_start sub_80ECDF4 -sub_80ECDF4: @ 80ECDF4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002b2c - adds r4, r0, r1 - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECE1C - strb r5, [r4, 0xE] -_080ECE1C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECDF4 - - thumb_func_start sub_80ECE34 -sub_80ECE34: @ 80ECE34 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002b2c - adds r4, r0, r1 - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECE5C - strb r5, [r4, 0xF] -_080ECE5C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECE34 - - thumb_func_start sub_80ECE74 -sub_80ECE74: @ 80ECE74 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002b2c - adds r4, r0, r1 - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECE9C - strh r5, [r4, 0x10] -_080ECE9C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECE74 - - thumb_func_start sub_80ECEB4 -sub_80ECEB4: @ 80ECEB4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r0, =gSaveBlock1Ptr - ldr r4, [r0] - ldr r0, =0x00002b2c - adds r5, r4, r0 - ldr r1, =0x000027cc - adds r0, r4, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ECF4C - ldr r2, =gUnknown_02039E00 - lsls r1, r6, 6 - adds r0, r1, r2 - ldrh r0, [r0] - strh r0, [r5, 0x2] - ldr r0, =0x00002b30 - adds r4, r0 - adds r2, 0xD - adds r1, r2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - bl StripExtCtrlCodes - strb r7, [r5, 0xC] - adds r1, r6, 0x1 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r1, r0 - ble _080ECF30 - ldr r0, =gLinkPlayers - ldrh r0, [r0, 0x1A] - b _080ECF4A - .pool -_080ECF30: - ldr r0, =gGameLanguage - ldrb r0, [r0] - cmp r0, 0x1 - beq _080ECF48 - ldr r1, =gLinkPlayers - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x1A] - cmp r0, 0x1 - bne _080ECF4A -_080ECF48: - movs r0, 0x1 -_080ECF4A: - strb r0, [r5, 0x1E] -_080ECF4C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECEB4 - - thumb_func_start sub_80ECF5C -sub_80ECF5C: @ 80ECF5C - push {r4-r7,lr} - ldr r0, =gSaveBlock1Ptr - ldr r6, [r0] - ldr r0, =0x00002b2c - adds r5, r6, r0 - ldrb r2, [r5] - cmp r2, 0x6 - bne _080ED02C - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - adds r4, r6, r0 - strb r2, [r4] - movs r7, 0x1 - strb r7, [r4, 0x1] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - adds r0, r4, 0 - adds r0, 0x16 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x8 - ldr r2, =0x00002b34 - adds r1, r6, r2 - bl StringCopy - ldrb r0, [r5, 0x13] - lsls r0, 29 - lsrs r0, 29 - ldrb r2, [r4, 0x13] - movs r3, 0x8 - negs r3, r3 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x13] - ldrb r2, [r5, 0x13] - movs r0, 0x18 - ands r0, r2 - movs r2, 0x19 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0x13] - ldrh r0, [r5, 0x14] - strh r0, [r4, 0x14] - ldrb r0, [r5, 0x13] - movs r1, 0x60 - ands r1, r0 - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x13] - ldrb r1, [r5, 0x13] - lsls r1, 29 - lsrs r1, 29 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x13] - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x1E] - cmp r0, 0x1 - beq _080ECFFA - ldrb r0, [r5, 0x1F] - cmp r0, 0x1 - bne _080ED01C -_080ECFFA: - strb r7, [r4, 0x1F] - b _080ED01E - .pool -_080ED01C: - strb r0, [r4, 0x1F] -_080ED01E: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - movs r1, 0x18 - bl sub_80EF910 -_080ED02C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ECF5C - - thumb_func_start sub_80ED03C -sub_80ED03C: @ 80ED03C - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, =0x00002b2c - adds r5, r0, r1 - bl sub_80EF7B4 - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ED07A - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - movs r1, 0x18 - bl sub_80EF910 - strh r6, [r5, 0x14] - movs r0, 0x6 - strb r0, [r5] -_080ED07A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED03C - - thumb_func_start sub_80ED090 -sub_80ED090: @ 80ED090 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gSaveBlock1Ptr - ldr r4, [r0] - ldr r0, =0x00002b2c - adds r7, r4, r0 - ldr r1, =0x000027cc - adds r0, r4, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ED134 - movs r3, 0x3 - adds r0, r5, 0 - ands r0, r3 - lsls r0, 5 - ldrb r1, [r7, 0x13] - movs r2, 0x61 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r7, 0x13] - ldr r0, =gUnknown_02039F2C - ldrb r0, [r0] - movs r1, 0x7 - ands r1, r0 - movs r0, 0x8 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r7, 0x13] - ldr r1, =gUnknown_02039F2E - ldrb r1, [r1] - ands r3, r1 - lsls r3, 3 - movs r1, 0x19 - negs r1, r1 - ands r0, r1 - orrs r0, r3 - strb r0, [r7, 0x13] - ldr r0, =gUnknown_02039F24 - mov r8, r0 - ldrb r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, =gPlayerParty - adds r0, r5 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x2] - mov r1, r8 - ldrb r0, [r1] - muls r0, r6 - adds r0, r5 - ldr r1, =0x00002b34 - adds r4, r1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StripExtCtrlCodes - mov r1, r8 - ldrb r0, [r1] - muls r0, r6 - adds r0, r5 - movs r1, 0x3 - bl GetMonData - strb r0, [r7, 0x1F] -_080ED134: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED090 - - thumb_func_start sub_80ED164 -sub_80ED164: @ 80ED164 - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - movs r0, 0x7 - strb r0, [r6] - movs r0, 0x1 - strb r0, [r6, 0x1] - adds r0, r6, 0x2 - ldr r4, =gSaveBlock2Ptr - ldr r1, [r4] - bl StringCopy - adds r0, r6, 0 - adds r0, 0xC - ldr r1, [r4] - ldr r2, =0x00000bd8 - adds r1, r2 - bl StringCopy - ldr r1, [r4] - ldr r2, =0x00000bd4 - adds r0, r1, r2 - ldrh r0, [r0] - strh r0, [r6, 0xA] - adds r2, 0x2 - adds r0, r1, r2 - ldrh r0, [r0] - strh r0, [r6, 0x14] - ldr r5, =0x00000d07 - adds r1, r5 - ldrb r0, [r1] - movs r1, 0 - bl sub_8164FCC - strh r0, [r6, 0x16] - ldr r0, [r4] - ldr r1, =0x00000d06 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6, 0x1C] - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080ED1F4 - movs r0, 0x32 - b _080ED1F6 - .pool -_080ED1F4: - movs r0, 0x64 -_080ED1F6: - strb r0, [r6, 0x1A] - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - strb r0, [r6, 0x1B] - adds r0, r6, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r6, 0x1D] - cmp r0, 0x1 - beq _080ED21C - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, =0x00000beb - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080ED21E -_080ED21C: - movs r0, 0x1 -_080ED21E: - strb r0, [r6, 0x1E] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED164 - - thumb_func_start SaveRecordedItemPurchasesForTVShow -@ void SaveRecordedItemPurchasesForTVShow() -SaveRecordedItemPurchasesForTVShow: @ 80ED238 - push {r4-r7,lr} - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldrh r1, [r0, 0x4] - ldr r0, =0x00003c1a - cmp r1, r0 - beq _080ED2F2 - ldr r0, =0x0000371a - cmp r1, r0 - beq _080ED2F2 - ldr r0, =0x00005555 - bl sub_80EFB38 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080ED2F2 - ldr r0, [r5] - ldr r7, =0x000027cc - adds r0, r7 - bl sub_80EFB08 - ldr r6, =gUnknown_030060BC - strb r0, [r6] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ED2F2 - movs r0, 0x16 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080ED2F2 - bl sub_80EF500 - ldr r2, =gUnknown_02039F80 - ldrh r0, [r2, 0x2] - cmp r0, 0x13 - bls _080ED2F2 - movs r1, 0 - ldrsb r1, [r6, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, [r5] - adds r5, r1, r0 - movs r0, 0x16 - strb r0, [r5] - strb r4, [r5, 0x1] - ldr r0, =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r5, 0x12] - movs r4, 0 - adds r7, r5, 0x6 - mov r12, r2 - adds r6, r5, 0 - adds r6, 0xC -_080ED2B6: - lsls r2, r4, 1 - adds r3, r7, r2 - lsls r1, r4, 2 - add r1, r12 - ldrh r0, [r1] - strh r0, [r3] - adds r2, r6, r2 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080ED2B6 - movs r0, 0x1 - bl GetPriceReduction - strb r0, [r5, 0x2] - adds r0, r5, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r5, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r5, 0x3] -_080ED2F2: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end SaveRecordedItemPurchasesForTVShow - - thumb_func_start sub_80ED320 -sub_80ED320: @ 80ED320 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - bl sub_80EF7A8 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - beq _080ED400 - ldr r0, =gSpecialVar_0x8004 - mov r8, r0 - ldrh r0, [r0] - movs r7, 0x64 - muls r0, r7 - ldr r6, =gPlayerParty - adds r0, r6 - ldr r4, =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - ldr r1, =gSaveBlock2Ptr - mov r9, r1 - ldr r0, [r1] - bl StringLength - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080ED400 - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080ED400 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r2] - adds r4, r0 - movs r0, 0x5 - strb r0, [r4] - movs r5, 0x1 - strb r5, [r4, 0x1] - mov r2, r8 - ldrh r0, [r2] - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x2] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - strb r0, [r4, 0x1A] - bl Random - lsls r0, 16 - lsrs r0, 16 - ands r0, r5 - strb r0, [r4, 0x1B] - ldrh r0, [r4, 0x2] - bl sub_80EFA24 - strh r0, [r4, 0x1C] - adds r0, r4, 0 - adds r0, 0xF - mov r2, r9 - ldr r1, [r2] - bl StringCopy - mov r1, r8 - ldrh r0, [r1] - muls r0, r7 - adds r0, r6 - adds r5, r4, 0x4 - movs r1, 0x2 - adds r2, r5, 0 - bl GetMonData - adds r0, r5, 0 - bl StripExtCtrlCodes - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x1E] - mov r2, r8 - ldrh r0, [r2] - muls r0, r7 - adds r0, r6 - movs r1, 0x3 - bl GetMonData - strb r0, [r4, 0x1F] -_080ED400: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED320 - - thumb_func_start StartMassOutbreak -StartMassOutbreak: @ 80ED430 - push {r4,r5,lr} - ldr r4, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, =0x000027cc - adds r1, r0 - ldr r2, [r4] - adds r1, r2, r1 - ldrh r3, [r1, 0xC] - ldr r5, =0x00002b90 - adds r0, r2, r5 - strh r3, [r0] - ldrb r0, [r1, 0x10] - ldr r3, =0x00002b92 - adds r2, r3 - strb r0, [r2] - ldr r0, [r4] - ldrb r2, [r1, 0x11] - adds r5, 0x3 - adds r0, r5 - strb r2, [r0] - ldr r0, [r4] - ldrb r2, [r1, 0x14] - adds r3, 0x2 - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - ldrb r2, [r1, 0x2] - adds r5, 0x2 - adds r0, r5 - strb r2, [r0] - ldr r2, [r4] - ldrh r3, [r1, 0xE] - adds r5, 0x1 - adds r0, r2, r5 - strh r3, [r0] - ldrh r3, [r1, 0x4] - adds r5, 0x2 - adds r0, r2, r5 - strh r3, [r0] - ldrh r3, [r1, 0x6] - adds r5, 0x2 - adds r0, r2, r5 - strh r3, [r0] - ldrh r3, [r1, 0x8] - adds r5, 0x2 - adds r0, r2, r5 - strh r3, [r0] - ldrh r3, [r1, 0xA] - adds r5, 0x2 - adds r0, r2, r5 - strh r3, [r0] - ldrb r0, [r1, 0x3] - ldr r3, =0x00002ba0 - adds r2, r3 - strb r0, [r2] - ldr r0, [r4] - ldrb r1, [r1, 0x13] - adds r5, 0x3 - adds r0, r5 - strb r1, [r0] - ldr r0, [r4] - ldr r1, =0x00002ba2 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end StartMassOutbreak - - thumb_func_start sub_80ED4DC -sub_80ED4DC: @ 80ED4DC - push {r4,lr} - bl sub_80EFA88 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - beq _080ED532 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - adds r0, r4, 0 - adds r0, 0x17 - bl sub_818E848 - movs r0, 0x2 - strb r0, [r4, 0x18] - movs r0, 0xC - strb r0, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - adds r0, r4, 0x2 - bl sub_818E81C - adds r0, r4, 0 - adds r0, 0xA - adds r1, r4, 0 - adds r1, 0xB - bl sub_818E7E0 - bl sub_818E880 - strb r0, [r4, 0x16] - adds r0, r4, 0 - bl sub_80ECA10 -_080ED532: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED4DC - - thumb_func_start sub_80ED548 -sub_80ED548: @ 80ED548 - push {r4,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r2] - adds r4, r0 - movs r0, 0x1 - strb r0, [r4] - strb r0, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x10 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x2] - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x18] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED548 - - thumb_func_start sub_80ED5B8 -sub_80ED5B8: @ 80ED5B8 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r2] - adds r4, r0 - movs r5, 0 - movs r0, 0x2 - strb r0, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x10 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - strh r5, [r4, 0x2] - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x18] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED5B8 - - thumb_func_start sub_80ED610 -sub_80ED610: @ 80ED610 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - movs r0, 0x3 - strb r0, [r5] - movs r0, 0x1 - mov r8, r0 - mov r1, r8 - strb r1, [r5, 0x1] - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - movs r7, 0x64 - muls r0, r7 - ldr r6, =gPlayerParty - adds r0, r6 - movs r1, 0x20 - movs r2, 0 - bl GetMonData - lsrs r0, 4 - movs r1, 0xF - ands r0, r1 - ldrb r2, [r5, 0x4] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x4] - ldr r0, =gSpecialVar_0x8007 - ldrb r0, [r0] - lsls r0, 4 - movs r2, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x4] - adds r0, r5, 0x5 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - adds r0, r6 - adds r4, r5, 0 - adds r4, 0x10 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StripExtCtrlCodes - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r5, 0x2] - adds r0, r5, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r5, 0xD] - cmp r0, 0x1 - beq _080ED6D4 - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - adds r0, r6 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _080ED6F4 -_080ED6D4: - mov r0, r8 - b _080ED706 - .pool -_080ED6F4: - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - adds r0, r6 - movs r1, 0x3 - bl GetMonData -_080ED706: - strb r0, [r5, 0xE] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80ED610 - - thumb_func_start TaskDummy5 -TaskDummy5: @ 80ED714 - bx lr - thumb_func_end TaskDummy5 - - thumb_func_start sub_80ED718 -sub_80ED718: @ 80ED718 - push {r4-r6,lr} - ldr r0, =0x00000864 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080ED7E4 - movs r1, 0 - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r3, =0x000027cc -_080ED72E: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2, r0 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x29 - beq _080ED7E4 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x17 - bls _080ED72E - ldr r0, =0x00000147 - bl sub_80EFB38 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080ED7E4 - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080ED7E4 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r2, 0 - ldrsb r2, [r4, r2] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - ldr r2, =0x000027cc - adds r1, r2 - ldr r4, [r6] - adds r4, r1 - movs r1, 0x29 - strb r1, [r4] - movs r3, 0x1 - strb r3, [r4, 0x1] - ldr r2, =gUnknown_0858D094 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0xA] - strb r0, [r4, 0x14] - strb r5, [r4, 0x2] - strb r5, [r4, 0x3] - ldrh r0, [r1] - movs r2, 0 - strh r0, [r4, 0xC] - strh r5, [r4, 0xE] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x4] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x6] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x8] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0xA] - ldrb r0, [r1, 0xB] - strb r0, [r4, 0x10] - strb r2, [r4, 0x11] - strb r2, [r4, 0x12] - movs r0, 0x32 - strb r0, [r4, 0x13] - strb r2, [r4, 0x15] - strh r3, [r4, 0x16] - adds r0, r4, 0 - bl sub_80ECA10 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x18] -_080ED7E4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED718 - - thumb_func_start EndMassOutbreak -EndMassOutbreak: @ 80ED808 - push {r4,r5,lr} - ldr r3, =gSaveBlock1Ptr - ldr r0, [r3] - ldr r2, =0x00002b90 - adds r1, r0, r2 - movs r4, 0 - movs r2, 0 - strh r2, [r1] - ldr r5, =0x00002b92 - adds r0, r5 - strb r4, [r0] - ldr r0, [r3] - ldr r1, =0x00002b93 - adds r0, r1 - strb r4, [r0] - ldr r0, [r3] - adds r5, 0x2 - adds r0, r5 - strb r4, [r0] - ldr r0, [r3] - adds r1, 0x2 - adds r0, r1 - strb r4, [r0] - ldr r0, [r3] - adds r5, 0x2 - adds r1, r0, r5 - strh r2, [r1] - adds r5, 0x2 - adds r1, r0, r5 - strh r2, [r1] - adds r5, 0x2 - adds r1, r0, r5 - strh r2, [r1] - adds r5, 0x2 - adds r1, r0, r5 - strh r2, [r1] - adds r5, 0x2 - adds r1, r0, r5 - strh r2, [r1] - ldr r1, =0x00002ba0 - adds r0, r1 - strb r4, [r0] - ldr r0, [r3] - adds r5, 0x3 - adds r0, r5 - strb r4, [r0] - ldr r0, [r3] - adds r1, 0x2 - adds r0, r1 - strh r2, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end EndMassOutbreak - - thumb_func_start sub_80ED888 -sub_80ED888: @ 80ED888 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_80ED8B4 - adds r0, r4, 0 - bl UpdateMassOutbreakTimeLeft - adds r0, r4, 0 - bl sub_80EF120 - adds r0, r4, 0 - bl sub_80EDA48 - adds r0, r4, 0 - bl sub_80EEB98 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ED888 - - thumb_func_start sub_80ED8B4 -sub_80ED8B4: @ 80ED8B4 - push {r4-r7,lr} - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, =gSaveBlock1Ptr - ldr r0, [r1] - ldr r2, =0x00002b90 - adds r0, r2 - ldrh r0, [r0] - mov r12, r1 - cmp r0, 0 - bne _080ED91C - movs r1, 0 - ldr r6, =0x000027cc -_080ED8CE: - mov r7, r12 - ldr r4, [r7] - lsls r0, r1, 3 - adds r0, r1 - lsls r3, r0, 2 - adds r2, r4, r3 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080ED912 - ldr r7, =0x000027cd - adds r0, r2, r7 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080ED912 - adds r0, r3, r6 - adds r1, r4, r0 - ldrh r0, [r1, 0x16] - cmp r0, r5 - bcs _080ED90C - movs r0, 0 - strh r0, [r1, 0x16] - b _080ED91C - .pool -_080ED90C: - subs r0, r5 - strh r0, [r1, 0x16] - b _080ED91C -_080ED912: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x17 - bls _080ED8CE -_080ED91C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80ED8B4 - - thumb_func_start UpdateMassOutbreakTimeLeft -UpdateMassOutbreakTimeLeft: @ 80ED924 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x00002ba2 - adds r1, r0, r3 - ldrh r0, [r1] - cmp r0, r2 - bhi _080ED948 - bl EndMassOutbreak - b _080ED94C - .pool -_080ED948: - subs r0, r2 - strh r0, [r1] -_080ED94C: - pop {r0} - bx r0 - thumb_func_end UpdateMassOutbreakTimeLeft - - thumb_func_start sub_80ED950 -sub_80ED950: @ 80ED950 - push {r4,lr} - lsls r0, 24 - cmp r0, 0 - beq _080ED978 - ldr r4, =gUnknown_0203A026 - ldrh r0, [r4] - lsrs r0, 8 - cmp r0, 0x4 - bls _080ED966 - bl sub_80ED9A8 -_080ED966: - ldrb r0, [r4] - strh r0, [r4] - cmp r0, 0xFF - beq _080ED99C - adds r0, 0x1 - b _080ED99A - .pool -_080ED978: - ldr r4, =gUnknown_0203A026 - ldrb r0, [r4] - cmp r0, 0x4 - bls _080ED984 - bl sub_80ED9A8 -_080ED984: - ldrh r0, [r4] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - strh r1, [r4] - lsrs r0, r1, 8 - cmp r0, 0xFF - beq _080ED99C - movs r2, 0x80 - lsls r2, 1 - adds r0, r1, r2 -_080ED99A: - strh r0, [r4] -_080ED99C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED950 - - thumb_func_start sub_80ED9A8 -sub_80ED9A8: @ 80ED9A8 - push {r4-r6,lr} - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EDA18 - movs r0, 0x18 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EDA18 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, [r6] - adds r4, r0 - movs r1, 0 - movs r0, 0x18 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, =gUnknown_0203A026 - ldrh r0, [r1] - strb r0, [r4, 0x2] - ldrh r0, [r1] - lsrs r0, 8 - strb r0, [r4, 0x3] - ldr r0, =gUnknown_0203A024 - ldrh r0, [r0] - strh r0, [r4, 0x4] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x6] -_080EDA18: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80ED9A8 - - thumb_func_start sub_80EDA3C -sub_80EDA3C: @ 80EDA3C - ldr r1, =gUnknown_0203A024 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_80EDA3C - - thumb_func_start sub_80EDA48 -sub_80EDA48: @ 80EDA48 - push {r4,lr} - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r2, =0x00002b2c - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x19 - bne _080EDA6E - ldrh r0, [r1, 0x2] - cmp r0, 0x13 - bls _080EDA62 - bl sub_80EDA80 -_080EDA62: - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - movs r1, 0x18 - bl sub_80EF910 -_080EDA6E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDA48 - - thumb_func_start sub_80EDA80 -sub_80EDA80: @ 80EDA80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, =gSaveBlock1Ptr - ldr r0, [r7] - ldr r1, =0x00002b2c - adds r5, r0, r1 - ldr r0, =0x0000ffff - bl sub_80EFB38 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080EDB1C - ldr r0, [r7] - ldr r1, =0x000027cc - mov r8, r1 - add r0, r8 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EDB1C - movs r0, 0x19 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EDB1C - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldr r4, [r7] - adds r4, r0 - movs r0, 0x19 - strb r0, [r4] - strb r6, [r4, 0x1] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - movs r0, 0x5 - bl GetGameStat - ldrh r1, [r5, 0x6] - subs r0, r1 - strh r0, [r4, 0x6] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x8] - ldrb r0, [r5, 0xA] - strb r0, [r4, 0xA] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0xB] - ldr r0, [r7] - add r0, r8 - movs r1, 0x18 - bl sub_80EF910 -_080EDB1C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDA80 - - thumb_func_start sub_80EDB44 -sub_80EDB44: @ 80EDB44 - push {r4-r7,lr} - movs r0, 0x1A - movs r1, 0x1 - bl sub_80EF46C - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r2, =gUnknown_030060BC - strb r0, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EDC40 - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r2, =0x000027cc - adds r0, r2 - ldr r1, [r4] - adds r4, r1, r0 - movs r1, 0 - movs r0, 0x1A - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r6, =0x00000867 - movs r5, 0 -_080EDB88: - lsls r0, r6, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080EDB9C - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EDB9C: - adds r6, 0x1 - ldr r0, =0x0000086e - cmp r6, r0 - bls _080EDB88 - strb r5, [r4, 0x4] - bl IsNationalPokedexEnabled - cmp r0, 0 - beq _080EDBCC - movs r0, 0x1 - bl pokedex_count - b _080EDBD2 - .pool -_080EDBCC: - movs r0, 0x1 - bl sub_80C0844 -_080EDBD2: - strh r0, [r4, 0x2] - ldr r1, =gMapHeader - ldrb r0, [r1, 0x14] - strb r0, [r4, 0x7] - ldrh r0, [r1, 0x12] - movs r1, 0 - strh r0, [r4, 0xA] - strb r1, [r4, 0x5] - strb r1, [r4, 0x6] - movs r6, 0 - adds r7, r4, 0 - adds r7, 0x13 -_080EDBEA: - ldr r0, =gUnknown_0858D0DE - lsls r5, r6, 1 - adds r0, r5, r0 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EDC04 - ldrb r0, [r4, 0x5] - adds r0, 0x1 - strb r0, [r4, 0x5] -_080EDC04: - ldr r0, =gUnknown_0858D0D0 - adds r0, r5, r0 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EDC1C - ldrb r0, [r4, 0x6] - adds r0, 0x1 - strb r0, [r4, 0x6] -_080EDC1C: - adds r6, 0x1 - cmp r6, 0x6 - bls _080EDBEA - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r2, =0x00000eb8 - adds r0, r1, r2 - ldrh r0, [r0] - strh r0, [r4, 0x8] - adds r0, r7, 0 - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0xC] -_080EDC40: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDB44 - - thumb_func_start sub_80EDC60 -sub_80EDC60: @ 80EDC60 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r7, =gSaveBlock1Ptr - ldr r0, [r7] - ldr r6, =0x000027cc - adds r0, r6 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EDCCE - movs r0, 0x1B - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EDCCE - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldr r4, [r7] - adds r4, r0 - movs r1, 0 - movs r0, 0x1B - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, =gSaveBlock2Ptr - ldr r0, [r1] - ldrb r0, [r0, 0x8] - strb r0, [r4, 0x8] - ldrh r0, [r5] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x6] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x9] -_080EDCCE: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDC60 - - thumb_func_start sub_80EDCE8 -sub_80EDCE8: @ 80EDCE8 - push {r4-r6,lr} - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EDD56 - movs r0, 0x1C - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EDD56 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, [r6] - adds r4, r0 - movs r1, 0 - movs r0, 0x1C - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - strh r0, [r4, 0x2] - ldr r1, =gMapHeader - ldrb r0, [r1, 0x14] - strb r0, [r4, 0x4] - ldrh r0, [r1, 0x12] - strh r0, [r4, 0x6] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x5] -_080EDD56: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDCE8 - - thumb_func_start sub_80EDD78 -sub_80EDD78: @ 80EDD78 - push {r4-r6,lr} - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EDE54 - movs r0, 0x1D - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EDE54 - movs r5, 0 - ldr r0, =gUnknown_0203A02A - ldrb r1, [r0] - adds r6, r0, 0 - cmp r1, 0 - beq _080EDDCC - cmp r1, 0x1 - beq _080EDDEE - b _080EDE54 - .pool -_080EDDCC: - ldr r0, =gUnknown_0203A028 - ldrh r1, [r0] - adds r0, r1, 0 - adds r0, 0xC8 - cmp r4, r0 - blt _080EDDE4 - movs r5, 0x1 - subs r0, r4, r1 - b _080EDE12 - .pool -_080EDDE4: - cmp r1, 0x63 - bls _080EDE54 - adds r0, r1, 0 - subs r0, 0x64 - b _080EDE0C -_080EDDEE: - ldr r0, =gUnknown_0203A028 - ldrh r1, [r0] - adds r0, r1, 0 - adds r0, 0x32 - cmp r4, r0 - blt _080EDE04 - movs r5, 0x1 - subs r0, r4, r1 - b _080EDE12 - .pool -_080EDE04: - cmp r1, 0x31 - bls _080EDE54 - adds r0, r1, 0 - subs r0, 0x32 -_080EDE0C: - cmp r4, r0 - bgt _080EDE54 - subs r0, r1, r4 -_080EDE12: - lsls r0, 16 - lsrs r3, r0, 16 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r2] - adds r4, r0 - movs r1, 0 - movs r0, 0x1D - strb r0, [r4] - strb r1, [r4, 0x1] - strh r3, [r4, 0x4] - ldrb r0, [r6] - strb r0, [r4, 0x3] - strb r5, [r4, 0x2] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x8] -_080EDE54: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDD78 - - thumb_func_start sub_80EDE70 -sub_80EDE70: @ 80EDE70 - ldr r2, =gUnknown_0203A02A - movs r1, 0 - strb r1, [r2] - ldr r1, =gUnknown_0203A028 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_80EDE70 - - thumb_func_start sub_80EDE84 -sub_80EDE84: @ 80EDE84 - ldr r2, =gUnknown_0203A02A - movs r1, 0x1 - strb r1, [r2] - ldr r1, =gUnknown_0203A028 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_80EDE84 - - thumb_func_start sub_80EDE98 -sub_80EDE98: @ 80EDE98 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - movs r3, 0 - ldr r6, =gUnknown_030060D0 - ldr r7, =gSaveBlock1Ptr - adds r2, r6, 0 - movs r1, 0 -_080EDEAC: - adds r0, r3, r2 - strb r1, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _080EDEAC - movs r3, 0 - movs r5, 0 -_080EDEBE: - ldr r0, [r7] - ldr r1, =0x00001aae - adds r0, r1 - adds r0, r3 - ldrb r4, [r0] - adds r3, 0x1 - cmp r4, 0 - beq _080EDF0A - movs r1, 0 - ldrb r0, [r6] - cmp r0, 0 - bne _080EDEE8 - strb r4, [r6] - b _080EDF04 - .pool -_080EDEE8: - adds r0, r1, r6 - ldrb r0, [r0] - cmp r0, r4 - beq _080EDF0A - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bhi _080EDF0A - adds r2, r1, r6 - ldrb r0, [r2] - cmp r0, 0 - bne _080EDEE8 - strb r4, [r2] -_080EDF04: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EDF0A: - lsls r0, r3, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _080EDEBE - cmp r5, 0x4 - bls _080EDF1E - movs r0, 0x4 - mov r1, r8 - strb r0, [r1, 0x3] - b _080EDF22 -_080EDF1E: - mov r0, r8 - strb r5, [r0, 0x3] -_080EDF22: - mov r1, r8 - ldrb r0, [r1, 0x3] - cmp r0, 0 - beq _080EDFA4 - cmp r0, 0x1 - bne _080EDF34 - ldrb r0, [r6] - strb r0, [r1, 0x4] - b _080EDFA4 -_080EDF34: - movs r6, 0 - adds r7, r5, 0 - muls r7, r5 - cmp r6, r7 - bge _080EDF7E - ldr r0, =gUnknown_030060D0 - mov r9, r0 -_080EDF42: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsls r0, 24 - lsrs r1, r0, 24 - mov r0, r9 - adds r2, r4, r0 - ldrb r3, [r2] - add r1, r9 - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r7 - blt _080EDF42 -_080EDF7E: - movs r3, 0 - mov r1, r8 - ldrb r1, [r1, 0x3] - cmp r3, r1 - bcs _080EDFA4 - mov r2, r8 - adds r2, 0x4 - ldr r4, =gUnknown_030060D0 -_080EDF8E: - adds r1, r2, r3 - adds r0, r3, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - mov r0, r8 - ldrb r0, [r0, 0x3] - cmp r3, r0 - bcc _080EDF8E -_080EDFA4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDE98 - - thumb_func_start sub_80EDFB4 -sub_80EDFB4: @ 80EDFB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - movs r7, 0 - movs r0, 0 - mov r9, r0 - ldr r1, =gUnknown_030060C0 - mov r8, r1 -_080EDFCA: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080EE094 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080EE094 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r2, =gUnknown_030060E0 - mov r3, r9 - lsls r1, r3, 3 - adds r6, r1, r2 - strb r0, [r6] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - strh r0, [r6, 0x2] - movs r5, 0 - adds r0, r4, 0 - movs r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080EE020 - mov r0, r8 - strh r1, [r0] - movs r5, 0x1 -_080EE020: - adds r0, r4, 0 - movs r1, 0xE - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080EE03C - lsls r0, r5, 1 - add r0, r8 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EE03C: - adds r0, r4, 0 - movs r1, 0xF - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080EE058 - lsls r0, r5, 1 - add r0, r8 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EE058: - adds r0, r4, 0 - movs r1, 0x10 - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080EE074 - lsls r0, r5, 1 - add r0, r8 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EE074: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - strh r0, [r6, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080EE094: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x5 - bls _080EDFCA - movs r7, 0 - movs r1, 0 - cmp r1, r9 - bcs _080EE0BE - ldr r2, =gUnknown_030060E0 -_080EE0A8: - lsls r0, r7, 3 - adds r0, r2 - ldrb r0, [r0] - adds r0, r1, r0 - lsls r0, 16 - lsrs r1, r0, 16 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, r9 - bcc _080EE0A8 -_080EE0BE: - adds r0, r1, 0 - mov r1, r9 - bl __divsi3 - mov r1, r10 - strb r0, [r1, 0x2] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r9 - bl __modsi3 - lsls r0, 16 - ldr r1, =gUnknown_030060E0 - lsrs r0, 13 - adds r0, r1 - ldrh r1, [r0, 0x2] - mov r2, r10 - strh r1, [r2, 0x8] - ldrh r0, [r0, 0x4] - strh r0, [r2, 0xA] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EDFB4 - - thumb_func_start sub_80EE104 -sub_80EE104: @ 80EE104 - push {r4,lr} - movs r0, 0x1F - movs r1, 0x1 - bl sub_80EF46C - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r2, =gUnknown_030060BC - strb r0, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE168 - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r4] - adds r4, r0 - movs r1, 0 - movs r0, 0x1F - strb r0, [r4] - strb r1, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0 - bl sub_80EDE98 - adds r0, r4, 0 - bl sub_80EDFB4 - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0xC] -_080EE168: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE104 - - thumb_func_start sub_80EE184 -sub_80EE184: @ 80EE184 - push {r4-r7,lr} - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080EE1A4 - b _080EE2C2 -_080EE1A4: - movs r0, 0x1E - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EE1B6 - b _080EE2C2 -_080EE1B6: - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, [r6] - adds r4, r1, r0 - movs r1, 0 - movs r0, 0x1E - strb r0, [r4] - strb r1, [r4, 0x1] - movs r5, 0 - ldr r6, =gBattleResults - ldr r3, =gMapHeader - ldr r7, =gSaveBlock2Ptr - adds r2, r6, 0 - adds r2, 0x36 -_080EE1DA: - adds r0, r1, r2 - ldrb r0, [r0] - adds r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bls _080EE1DA - ldrb r1, [r6, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080EE1FE - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080EE1FE: - ldrb r0, [r3, 0x14] - strb r0, [r4, 0x4] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, [r7] - bl StringCopy - ldrh r0, [r6, 0x6] - strh r0, [r4, 0xA] - ldr r0, =gBattleOutcome - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x9 - bhi _080EE282 - lsls r0, 2 - ldr r1, =_080EE244 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080EE244: - .4byte _080EE276 - .4byte _080EE26C - .4byte _080EE26C - .4byte _080EE27A - .4byte _080EE27A - .4byte _080EE27E - .4byte _080EE272 - .4byte _080EE27A - .4byte _080EE282 - .4byte _080EE27E -_080EE26C: - movs r0, 0 - strb r0, [r4] - b _080EE2C2 -_080EE272: - movs r0, 0 - b _080EE280 -_080EE276: - movs r0, 0x1 - b _080EE280 -_080EE27A: - movs r0, 0x2 - b _080EE280 -_080EE27E: - movs r0, 0x3 -_080EE280: - strb r0, [r4, 0x5] -_080EE282: - ldr r1, =gBattleResults - ldrh r0, [r1, 0x20] - strh r0, [r4, 0x2] - ldrb r0, [r4, 0x5] - cmp r0, 0x1 - beq _080EE2B2 - cmp r0, 0x1 - bgt _080EE2B6 - cmp r0, 0 - bne _080EE2B6 - ldrb r1, [r1, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080EE2A8 - movs r0, 0x1 - b _080EE2AC - .pool -_080EE2A8: - lsls r0, r1, 26 - lsrs r0, 28 -_080EE2AC: - strh r0, [r4, 0x6] - strh r5, [r4, 0x8] - b _080EE2B6 -_080EE2B2: - ldrh r0, [r1, 0x22] - strh r0, [r4, 0xC] -_080EE2B6: - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0xE] -_080EE2C2: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE184 - - thumb_func_start sub_80EE2CC -sub_80EE2CC: @ 80EE2CC - push {r4-r6,lr} - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE33A - movs r0, 0x20 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EE33A - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, [r6] - adds r4, r0 - movs r1, 0 - movs r0, 0x20 - strb r0, [r4] - strb r1, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - ldr r0, =gSpecialVar_0x8004 - ldrb r1, [r0] - movs r0, 0x4 - subs r0, r1 - strb r0, [r4, 0x4] - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - strh r0, [r4, 0x2] - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x5] -_080EE33A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE2CC - - thumb_func_start sub_80EE35C -sub_80EE35C: @ 80EE35C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r3, 0 - ldr r3, [sp, 0x24] - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 16 - lsrs r3, 16 - str r3, [sp] - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - ldr r0, [r0] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE426 - movs r0, 0x21 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EE426 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r2, r8 - ldr r1, [r2] - adds r4, r1, r0 - movs r1, 0 - movs r0, 0x21 - strb r0, [r4] - strb r1, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - mov r0, r10 - strh r0, [r4, 0x4] - mov r1, r9 - strh r1, [r4, 0x6] - lsls r0, r6, 1 - adds r0, r7 - ldrh r0, [r0] - strh r0, [r4, 0x2] - movs r2, 0 - movs r3, 0 - adds r5, r4, 0 - adds r5, 0x8 -_080EE3EE: - cmp r2, r6 - beq _080EE408 - lsls r0, r2, 1 - adds r0, r7 - ldrh r1, [r0] - cmp r1, 0 - beq _080EE408 - lsls r0, r3, 1 - adds r0, r5, r0 - strh r1, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080EE408: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080EE3EE - strb r3, [r4, 0x10] - mov r2, sp - ldrh r2, [r2] - strh r2, [r4, 0xE] - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x11] -_080EE426: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE35C - - thumb_func_start sub_80EE44C -sub_80EE44C: @ 80EE44C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE4BE - movs r0, 0x27 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EE4BE - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, [r6] - adds r4, r0 - movs r1, 0 - movs r0, 0x27 - strb r0, [r4] - strb r1, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - mov r0, r8 - strb r0, [r4, 0x2] - strb r7, [r4, 0x3] - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x4] -_080EE4BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE44C - - thumb_func_start sub_80EE4DC -sub_80EE4DC: @ 80EE4DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - ldr r7, =gSaveBlock1Ptr - ldr r0, [r7] - ldr r5, =0x000027cc - adds r0, r5 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE59A - movs r0, 0x23 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EE59A - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, [r7] - adds r5, r1, r0 - movs r1, 0 - movs r0, 0x23 - strb r0, [r5] - strb r1, [r5, 0x1] - adds r0, r5, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - adds r4, r5, 0x4 - adds r0, r6, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StripExtCtrlCodes - adds r0, r6, 0 - bl sub_80EE5A4 - strb r0, [r5, 0x2] - mov r0, r8 - bl sub_80EE69C - strb r0, [r5, 0x3] - adds r0, r5, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r5, 0xF] - cmp r0, 0x1 - beq _080EE578 - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _080EE590 -_080EE578: - movs r0, 0x1 - b _080EE598 - .pool -_080EE590: - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonData -_080EE598: - strb r0, [r5, 0x10] -_080EE59A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EE4DC - - thumb_func_start sub_80EE5A4 -sub_80EE5A4: @ 80EE5A4 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x32 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x33 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x34 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x35 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x36 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x43 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x44 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x45 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x46 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x47 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x48 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x49 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4A - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4B - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4C - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4D - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4E - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80EE5A4 - - thumb_func_start sub_80EE69C -sub_80EE69C: @ 80EE69C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x43 - beq _080EE722 - cmp r0, 0x32 - bne _080EE6AE - movs r0, 0x1 - b _080EE728 -_080EE6AE: - cmp r0, 0x33 - bne _080EE6B6 - movs r0, 0x5 - b _080EE728 -_080EE6B6: - cmp r0, 0x34 - bne _080EE6BE - movs r0, 0x9 - b _080EE728 -_080EE6BE: - cmp r0, 0x35 - bne _080EE6C6 - movs r0, 0xD - b _080EE728 -_080EE6C6: - cmp r0, 0x36 - bne _080EE6CE - movs r0, 0x11 - b _080EE728 -_080EE6CE: - cmp r0, 0x44 - bne _080EE6D6 - movs r0, 0x15 - b _080EE728 -_080EE6D6: - cmp r0, 0x45 - bne _080EE6DE - movs r0, 0x16 - b _080EE728 -_080EE6DE: - cmp r0, 0x46 - bne _080EE6E6 - movs r0, 0x17 - b _080EE728 -_080EE6E6: - cmp r0, 0x47 - bne _080EE6EE - movs r0, 0x18 - b _080EE728 -_080EE6EE: - cmp r0, 0x48 - bne _080EE6F6 - movs r0, 0x19 - b _080EE728 -_080EE6F6: - cmp r0, 0x49 - bne _080EE6FE - movs r0, 0x1A - b _080EE728 -_080EE6FE: - cmp r0, 0x4A - bne _080EE706 - movs r0, 0x1B - b _080EE728 -_080EE706: - cmp r0, 0x4B - bne _080EE70E - movs r0, 0x1C - b _080EE728 -_080EE70E: - cmp r0, 0x4C - bne _080EE716 - movs r0, 0x1D - b _080EE728 -_080EE716: - cmp r0, 0x4D - bne _080EE71E - movs r0, 0x1E - b _080EE728 -_080EE71E: - cmp r0, 0x4E - beq _080EE726 -_080EE722: - movs r0, 0 - b _080EE728 -_080EE726: - movs r0, 0x1F -_080EE728: - pop {r1} - bx r1 - thumb_func_end sub_80EE69C - - thumb_func_start sub_80EE72C -sub_80EE72C: @ 80EE72C - push {r4-r6,lr} - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r6, =0x000027cc - adds r0, r6 - bl sub_80EFB08 - ldr r4, =gUnknown_030060BC - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE79C - movs r0, 0x22 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EE79C - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldr r4, [r5] - adds r4, r0 - movs r1, 0 - movs r0, 0x22 - strb r0, [r4] - strb r1, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - ldr r0, [r5] - ldr r2, =0x00002bb0 - adds r1, r0, r2 - ldrh r1, [r1] - strh r1, [r4, 0x4] - ldr r1, =0x00002bb2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x6] - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x8] -_080EE79C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE72C - - thumb_func_start sub_80EE7C0 -sub_80EE7C0: @ 80EE7C0 - push {r4,lr} - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE810 - movs r0, 0xB - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - beq _080EE810 - ldr r0, [r4] - ldr r1, =0x00003150 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - beq _080EE810 - movs r0, 0 - b _080EE812 - .pool -_080EE810: - movs r0, 0x1 -_080EE812: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EE7C0 - - thumb_func_start sub_80EE818 -sub_80EE818: @ 80EE818 - push {r4-r7,lr} - movs r0, 0x24 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EE870 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r7, r0, r1 - bl sub_80F0020 - adds r4, r0, 0 - movs r6, 0x5 - lsrs r5, r4, 8 -_080EE83C: - lsls r0, r6, 3 - adds r0, r6 - lsls r0, 2 - adds r1, r0, r7 - ldrb r0, [r1] - cmp r0, 0x24 - bne _080EE866 - movs r3, 0xFF - adds r0, r4, 0 - ands r0, r3 - adds r2, r1, 0 - adds r2, 0x22 - ldrb r2, [r2] - cmp r0, r2 - bne _080EE866 - adds r0, r5, 0 - ands r0, r3 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - beq _080EE89C -_080EE866: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x17 - bls _080EE83C -_080EE870: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EE8C0 - movs r0, 0x1 - b _080EE8C2 - .pool -_080EE89C: - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r4, =0x000027cc - adds r0, r4 - adds r1, r6, 0 - bl sub_80EF910 - ldr r0, [r5] - adds r0, r4 - bl sub_80EF93C - movs r0, 0x1 - b _080EE8C2 - .pool -_080EE8C0: - movs r0, 0 -_080EE8C2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80EE818 - - thumb_func_start sub_80EE8C8 -sub_80EE8C8: @ 80EE8C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r2, =gUnknown_030060BC - strb r0, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080EE8F4 - b _080EEA52 -_080EE8F4: - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r2, =0x000027cc - adds r0, r2 - ldr r1, [r5] - adds r7, r1, r0 - movs r1, 0 - movs r0, 0x24 - strb r0, [r7] - strb r1, [r7, 0x1] - adds r0, r7, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - strh r6, [r7, 0x2] - strb r4, [r7, 0xD] - subs r0, r4, 0x1 - cmp r0, 0xC - bls _080EE926 - b _080EEA46 -_080EE926: - lsls r0, 2 - ldr r1, =_080EE944 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080EE944: - .4byte _080EE978 - .4byte _080EE9A8 - .4byte _080EE9E8 - .4byte _080EEA00 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 - .4byte _080EE978 -_080EE978: - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x4] - adds r0, r4, 0 - adds r0, 0x64 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x6] - adds r4, 0xC8 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x8] - b _080EEA46 - .pool -_080EE9A8: - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x4] - adds r0, r4, 0 - adds r0, 0x64 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x6] - adds r0, r4, 0 - adds r0, 0xC8 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x8] - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0xA] - b _080EEA46 - .pool -_080EE9E8: - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x4] - adds r4, 0x64 - adds r0, r4, 0 - b _080EEA3C - .pool -_080EEA00: - ldr r2, =gSaveBlock1Ptr - mov r8, r2 - ldr r6, =gSaveBlock2Ptr - ldr r0, [r6] - ldr r1, =0x00000caa - adds r0, r1 - ldrh r0, [r0] - movs r5, 0x64 - adds r1, r0, 0 - muls r1, r5 - movs r4, 0xEA - lsls r4, 1 - adds r1, r4 - ldr r0, [r2] - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x4] - ldr r0, [r6] - ldr r2, =0x00000cac - adds r0, r2 - ldrh r0, [r0] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - mov r2, r8 - ldr r0, [r2] - adds r0, r1 -_080EEA3C: - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x6] -_080EEA46: - adds r0, r7, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r7, 0xC] -_080EEA52: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EE8C8 - - thumb_func_start sub_80EEA70 -sub_80EEA70: @ 80EEA70 - push {r4-r7,lr} - sub sp, 0x20 - movs r0, 0x26 - movs r1, 0 - bl sub_80EF46C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EEA86 - b _080EEB8C -_080EEA86: - ldr r7, =gSaveBlock1Ptr - ldr r0, [r7] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r2, =gUnknown_030060BC - strb r0, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EEB8C - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r7] - adds r5, r1, r0 - movs r1, 0 - movs r0, 0x26 - strb r0, [r5] - strb r1, [r5, 0x1] - adds r0, r5, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - ldr r0, =0x000040ec - bl VarGet - strh r0, [r5, 0x2] - bl sub_80E980C - ldr r1, =gStringVar1 - mov r0, sp - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - adds r0, r5, 0x4 - mov r1, sp - bl StringCopy - ldr r0, =0x000040ed - bl VarGet - strh r0, [r5, 0x10] - ldr r0, =0x000040ee - bl VarGet - adds r4, r0, 0 - ldr r0, =0x000040ef - bl VarGet - lsls r4, 16 - lsrs r4, 16 - lsls r0, 16 - adds r4, r0 - str r4, [r5, 0xC] - adds r0, r5, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r5, 0x1B] - cmp r0, 0x1 - beq _080EEB3A - ldr r4, [r7] - ldr r6, =0x00004054 - adds r0, r6, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r4, r1 - ldr r0, =0x00001aa9 - adds r4, r0 - ldrb r0, [r4] - cmp r0, 0x1 - bne _080EEB70 -_080EEB3A: - movs r0, 0x1 - b _080EEB8A - .pool -_080EEB70: - adds r0, r6, 0 - bl VarGet - ldr r2, [r7] - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r2, r1 - ldr r1, =0x00001aa9 - adds r2, r1 - ldrb r0, [r2] -_080EEB8A: - strb r0, [r5, 0x1C] -_080EEB8C: - add sp, 0x20 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EEA70 - - thumb_func_start sub_80EEB98 -sub_80EEB98: @ 80EEB98 - push {r4-r7,lr} - movs r5, 0 - ldr r6, =gUnknown_0858D0EC - adds r7, r6, 0x2 - b _080EEBAE - .pool -_080EEBA8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080EEBAE: - cmp r5, 0x6 - bhi _080EEBCE - lsls r4, r5, 2 - adds r0, r4, r6 - ldrh r0, [r0] - bl VarGet - adds r4, r7 - lsls r0, 16 - lsrs r0, 16 - ldrh r4, [r4] - cmp r0, r4 - bcc _080EEBA8 - adds r0, r5, 0 - bl sub_80EEBF4 -_080EEBCE: - movs r5, 0 - ldr r4, =gUnknown_0858D0EC -_080EEBD2: - lsls r0, r5, 2 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0 - bl VarSet - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x6 - bls _080EEBD2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EEB98 - - thumb_func_start sub_80EEBF4 -sub_80EEBF4: @ 80EEBF4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x25 - movs r1, 0x1 - bl sub_80EF46C - ldr r4, =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFB08 - ldr r2, =gUnknown_030060BC - strb r0, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EEC60 - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r4] - adds r4, r0 - movs r1, 0 - movs r0, 0x25 - strb r0, [r4] - strb r1, [r4, 0x1] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - strb r5, [r4, 0x4] - ldr r1, =gUnknown_0858D0EC - lsls r0, r5, 2 - adds r0, r1 - ldrh r0, [r0] - bl VarGet - strh r0, [r4, 0x2] - adds r0, r4, 0 - bl sub_80EC9E8 - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r4, 0x5] -_080EEC60: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EEBF4 - - thumb_func_start sub_80EEC80 -sub_80EEC80: @ 80EEC80 - push {r4,lr} - ldr r4, =0x000040e6 - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EEC80 - - thumb_func_start sub_80EECA4 -sub_80EECA4: @ 80EECA4 - push {r4,lr} - ldr r4, =0x000040eb - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EECA4 - - thumb_func_start sub_80EECC8 -sub_80EECC8: @ 80EECC8 - push {r4,lr} - ldr r4, =0x000040e7 - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EECC8 - - thumb_func_start sub_80EECEC -sub_80EECEC: @ 80EECEC - push {r4,lr} - ldr r4, =0x000040e8 - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EECEC - - thumb_func_start sub_80EED10 -sub_80EED10: @ 80EED10 - push {r4,lr} - ldr r4, =0x000040e9 - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EED10 - - thumb_func_start sub_80EED34 -sub_80EED34: @ 80EED34 - push {r4,lr} - ldr r4, =0x000040ea - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - ldr r0, =gSpecialVar_0x8006 - ldrh r0, [r0] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EED34 - - thumb_func_start sub_80EED60 -sub_80EED60: @ 80EED60 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r5, =0x000040f1 - adds r0, r5, 0 - bl VarGet - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl VarSet - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EED60 - - thumb_func_start sub_80EED88 -sub_80EED88: @ 80EED88 - push {r4-r7,lr} - ldr r0, =0x00000864 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080EEE0C - ldr r6, =gSaveBlock1Ptr - ldr r0, [r6] - ldr r7, =0x00002b50 - adds r0, r7 - bl sub_80EEE30 - ldr r5, =gUnknown_030060BC - strb r0, [r5] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EEE0C - ldr r0, =0x0000028f - bl sub_80EFB38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EEE0C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r4, r0, 0x1 - adds r0, r4, 0 - bl sub_80EF0E4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EEE0C - ldr r1, [r6] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r1, r0 - adds r1, r7 - strb r4, [r1] - ldr r2, [r6] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r0, r2, r0 - ldr r1, =0x00002b52 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r2, r0 - ldr r0, =0x00002b51 - adds r2, r0 - movs r0, 0x1 - strb r0, [r2] -_080EEE0C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EED88 - - thumb_func_start sub_80EEE30 -sub_80EEE30: @ 80EEE30 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080EEE36: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080EEE48 - adds r0, r1, 0 - b _080EEE58 -_080EEE48: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0xF - ble _080EEE36 - movs r0, 0x1 - negs r0, r0 -_080EEE58: - pop {r1} - bx r1 - thumb_func_end sub_80EEE30 - - thumb_func_start sub_80EEE5C -sub_80EEE5C: @ 80EEE5C - push {r4,lr} - movs r4, 0 -_080EEE60: - adds r0, r4, 0 - bl sub_80EEE78 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080EEE60 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EEE5C - - thumb_func_start sub_80EEE78 -sub_80EEE78: @ 80EEE78 - push {r4,lr} - lsls r0, 24 - ldr r3, =gSaveBlock1Ptr - ldr r1, [r3] - lsrs r0, 22 - adds r1, r0 - ldr r2, =0x00002b50 - adds r1, r2 - movs r2, 0 - strb r2, [r1] - ldr r1, [r3] - adds r1, r0 - ldr r4, =0x00002b51 - adds r1, r4 - strb r2, [r1] - ldr r1, [r3] - adds r1, r0 - ldr r0, =0x00002b52 - adds r1, r0 - strh r2, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EEE78 - - thumb_func_start sub_80EEEB8 -sub_80EEEB8: @ 80EEEB8 - push {r4-r7,lr} - movs r2, 0 - ldr r6, =gSaveBlock1Ptr -_080EEEBE: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, r2, 2 - adds r0, r1 - ldr r3, =0x00002b50 - adds r0, r3 - ldrb r0, [r0] - adds r5, r2, 0x1 - cmp r0, 0 - bne _080EEF12 - lsls r0, r5, 24 - b _080EEF0C - .pool -_080EEEE0: - ldr r3, [r6] - lsls r4, r2, 2 - adds r0, r3, r4 - ldr r7, =0x00002b50 - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0 - beq _080EEF08 - adds r0, r3, r7 - adds r1, r0, r1 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - adds r0, r2, 0 - bl sub_80EEE78 - b _080EEF12 - .pool -_080EEF08: - adds r0, r2, 0x1 - lsls r0, 24 -_080EEF0C: - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080EEEE0 -_080EEF12: - lsls r0, r5, 24 - lsrs r2, r0, 24 - cmp r2, 0xE - bls _080EEEBE - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EEEB8 - - thumb_func_start sub_80EEF20 -sub_80EEF20: @ 80EEF20 - push {r4,lr} - movs r2, 0 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] -_080EEF28: - lsls r0, r2, 2 - adds r1, r3, r0 - ldr r4, =0x00002b50 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080EEF58 - adds r4, 0x1 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080EEF58 - adds r4, 0x1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0x2 - bhi _080EEF58 - adds r0, r2, 0 - b _080EEF64 - .pool -_080EEF58: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080EEF28 - movs r0, 0xFF -_080EEF64: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EEF20 - - thumb_func_start sub_80EEF6C -sub_80EEF6C: @ 80EEF6C - push {r4,r5,lr} - bl sub_80EEF20 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _080EEF84 - ldr r1, =gScriptResult - movs r0, 0 - b _080EF01A - .pool -_080EEF84: - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - lsls r4, r2, 2 - adds r1, r0, r4 - ldr r0, =0x00002b52 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, 0 - bne _080EEFE8 - ldr r2, =0x00002b51 - adds r1, r2 - movs r0, 0x2 - strb r0, [r1] - ldr r0, =gLocalTime - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x13 - bgt _080EEFC8 - ldr r1, =gUnknown_0858D11C - ldr r0, [r5] - adds r0, r4 - subs r2, 0x1 - b _080EEFD0 - .pool -_080EEFC8: - ldr r1, =gUnknown_0858D130 - ldr r0, [r5] - adds r0, r4 - ldr r2, =0x00002b50 -_080EEFD0: - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl box_related_two__2 - b _080EF016 - .pool -_080EEFE8: - ldrh r1, [r2] - ldr r0, =gStringVar1 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r0, [r5] - adds r0, r4 - ldr r1, =0x00002b51 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r1, =gUnknown_0858D108 - ldr r0, [r5] - adds r0, r4 - ldr r2, =0x00002b50 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl box_related_two__2 -_080EF016: - ldr r1, =gScriptResult - movs r0, 0x1 -_080EF01A: - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EEF6C - - thumb_func_start GetPriceReduction -GetPriceReduction: @ 80EF038 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080EF048 - b _080EF08A -_080EF044: - movs r0, 0x1 - b _080EF08C -_080EF048: - movs r2, 0 - ldr r4, =gSaveBlock1Ptr -_080EF04C: - ldr r1, [r4] - lsls r0, r2, 2 - adds r1, r0 - ldr r5, =0x00002b50 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, r3 - bne _080EF080 - ldr r2, =0x00002b51 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080EF08A - adds r0, r3, 0 - bl IsPriceDiscounted - lsls r0, 24 - cmp r0, 0 - bne _080EF044 - b _080EF08A - .pool -_080EF080: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080EF04C -_080EF08A: - movs r0, 0 -_080EF08C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetPriceReduction - - thumb_func_start IsPriceDiscounted -IsPriceDiscounted: @ 80EF094 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080EF0A6 - cmp r0, 0x3 - beq _080EF0C8 -_080EF0A2: - movs r0, 0x1 - b _080EF0D6 -_080EF0A6: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bne _080EF0D4 - ldr r0, =gScriptLastTalked - ldrh r0, [r0] - cmp r0, 0x19 - beq _080EF0A2 - b _080EF0D4 - .pool -_080EF0C8: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - ldr r0, =0x0000150d - cmp r1, r0 - beq _080EF0A2 -_080EF0D4: - movs r0, 0 -_080EF0D6: - pop {r1} - bx r1 - .pool - thumb_func_end IsPriceDiscounted - - thumb_func_start sub_80EF0E4 -sub_80EF0E4: @ 80EF0E4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080EF0F2 -_080EF0EE: - movs r0, 0x1 - b _080EF112 -_080EF0F2: - movs r1, 0 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - ldr r4, =0x00002b50 -_080EF0FA: - lsls r0, r1, 2 - adds r0, r3, r0 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r2 - beq _080EF0EE - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080EF0FA - movs r0, 0 -_080EF112: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80EF0E4 - - thumb_func_start sub_80EF120 -sub_80EF120: @ 80EF120 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - ldr r0, =gSaveBlock1Ptr - mov r8, r0 -_080EF130: - mov r1, r8 - ldr r0, [r1] - lsls r1, r6, 2 - adds r2, r0, r1 - ldr r3, =0x00002b50 - adds r0, r2, r3 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0 - beq _080EF196 - ldr r1, =0x00002b52 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r7 - bcs _080EF164 - adds r0, r6, 0 - bl sub_80EEE78 - b _080EF196 - .pool -_080EF164: - ldr r5, =0x00002b51 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080EF186 - ldr r0, =0x00000864 - bl FlagGet - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bne _080EF186 - mov r2, r8 - ldr r0, [r2] - adds r0, r4 - adds r0, r5 - strb r1, [r0] -_080EF186: - mov r3, r8 - ldr r1, [r3] - adds r1, r4 - ldr r0, =0x00002b52 - adds r1, r0 - ldrh r0, [r1] - subs r0, r7 - strh r0, [r1] -_080EF196: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bls _080EF130 - bl sub_80EEEB8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF120 - - thumb_func_start sub_80EF1BC -sub_80EF1BC: @ 80EF1BC - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _080EF1FC - cmp r1, 0x1 - bgt _080EF1D6 - cmp r1, 0 - beq _080EF1E0 - b _080EF244 -_080EF1D6: - cmp r2, 0x2 - beq _080EF218 - cmp r2, 0x3 - beq _080EF234 - b _080EF244 -_080EF1E0: - ldr r1, =gUnknown_0858D144 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x14] - bl StringCopy - b _080EF244 - .pool -_080EF1FC: - ldr r1, =gUnknown_0858D144 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x18] - bl StringCopy - b _080EF244 - .pool -_080EF218: - ldr r1, =gUnknown_0858D144 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x1C] - bl StringCopy - b _080EF244 - .pool -_080EF234: - ldr r1, =gUnknown_0858D144 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x20] - bl StringCopy -_080EF244: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF1BC - - thumb_func_start CopyContestCategoryToStringVar -@ void CopyContestCategoryToStringVar(u8 stringVarIndex, u8 contestCategoryId) -CopyContestCategoryToStringVar: @ 80EF250 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, 0x4 - bhi _080EF300 - lsls r0, 2 - ldr r1, =_080EF26C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080EF26C: - .4byte _080EF280 - .4byte _080EF29C - .4byte _080EF2B8 - .4byte _080EF2D4 - .4byte _080EF2F0 -_080EF280: - ldr r1, =gUnknown_0858D144 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1] - bl StringCopy - b _080EF300 - .pool -_080EF29C: - ldr r1, =gUnknown_0858D144 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x4] - bl StringCopy - b _080EF300 - .pool -_080EF2B8: - ldr r1, =gUnknown_0858D144 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x8] - bl StringCopy - b _080EF300 - .pool -_080EF2D4: - ldr r1, =gUnknown_0858D144 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0xC] - bl StringCopy - b _080EF300 - .pool -_080EF2F0: - ldr r1, =gUnknown_0858D144 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, =gUnknown_0858BAF0 - ldr r1, [r1, 0x10] - bl StringCopy -_080EF300: - pop {r0} - bx r0 - .pool - thumb_func_end CopyContestCategoryToStringVar - - thumb_func_start SetContestCategoryStringVarForInterview -@ void SetContestCategoryStringVarForInterview() -SetContestCategoryStringVarForInterview: @ 80EF30C - push {lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r1, r0 - ldrb r1, [r1, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - pop {r0} - bx r0 - .pool - thumb_func_end SetContestCategoryStringVarForInterview - - thumb_func_start sub_80EF340 -sub_80EF340: @ 80EF340 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_80EF370 - adds r3, r0, 0 - ldr r0, =gUnknown_0858D144 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - lsls r3, 24 - lsrs r3, 24 - adds r1, r5, 0 - movs r2, 0 - bl ConvertIntToDecimalStringN - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF340 - - thumb_func_start sub_80EF370 -sub_80EF370: @ 80EF370 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xA - bl __divsi3 - cmp r0, 0 - beq _080EF3FC - adds r0, r4, 0 - movs r1, 0x64 - bl __divsi3 - cmp r0, 0 - bne _080EF38E - movs r0, 0x2 - b _080EF406 -_080EF38E: - movs r1, 0xFA - lsls r1, 2 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080EF3A0 - movs r0, 0x3 - b _080EF406 -_080EF3A0: - ldr r1, =0x00002710 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080EF3B4 - movs r0, 0x4 - b _080EF406 - .pool -_080EF3B4: - ldr r1, =0x000186a0 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080EF3C8 - movs r0, 0x5 - b _080EF406 - .pool -_080EF3C8: - ldr r1, =0x000f4240 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080EF3DC - movs r0, 0x6 - b _080EF406 - .pool -_080EF3DC: - ldr r1, =0x00989680 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080EF3F0 - movs r0, 0x7 - b _080EF406 - .pool -_080EF3F0: - ldr r1, =0x05f5e100 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - beq _080EF404 -_080EF3FC: - movs r0, 0x1 - b _080EF406 - .pool -_080EF404: - movs r0, 0x8 -_080EF406: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EF370 - - thumb_func_start sub_80EF40C -sub_80EF40C: @ 80EF40C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - movs r5, 0 -_080EF41E: - lsls r4, r5, 1 - adds r0, r6, 0x6 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0 - beq _080EF43E - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - adds r1, 0xC - adds r1, r4 - ldrh r1, [r1] - muls r0, r1 - adds r7, r0 -_080EF43E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080EF41E - ldrb r0, [r6, 0x2] - cmp r0, 0x1 - bne _080EF458 - asrs r1, r7, 1 - mov r0, r8 - bl sub_80EF340 - b _080EF460 -_080EF458: - mov r0, r8 - adds r1, r7, 0 - bl sub_80EF340 -_080EF460: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EF40C - - thumb_func_start sub_80EF46C -sub_80EF46C: @ 80EF46C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r4, =0x000027cc - adds r0, r4 - mov r8, r0 - bl sub_80F0020 - adds r7, r0, 0 - movs r6, 0x5 -_080EF494: - lsls r0, r6, 3 - adds r0, r6 - lsls r0, 2 - mov r2, r8 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, r10 - bne _080EF4E4 - movs r3, 0xFF - adds r0, r7, 0 - ands r0, r3 - adds r2, r1, 0 - adds r2, 0x22 - ldrb r2, [r2] - cmp r0, r2 - bne _080EF4E4 - lsrs r0, r7, 8 - ands r0, r3 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080EF4E4 - mov r0, r9 - cmp r0, 0x1 - bne _080EF4D8 - ldr r0, [r5] - adds r0, r4 - adds r1, r6, 0 - bl sub_80EF910 - ldr r0, [r5] - adds r0, r4 - bl sub_80EF93C -_080EF4D8: - movs r0, 0x1 - b _080EF4F0 - .pool -_080EF4E4: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x17 - bls _080EF494 - movs r0, 0 -_080EF4F0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80EF46C - - thumb_func_start sub_80EF500 -sub_80EF500: @ 80EF500 - push {r4-r7,lr} - movs r2, 0 -_080EF504: - adds r1, r2, 0x1 - lsls r0, r1, 24 - lsrs r5, r0, 24 - adds r7, r1, 0 - cmp r5, 0x2 - bhi _080EF53C - ldr r6, =gUnknown_02039F80 - lsls r0, r2, 2 - adds r4, r0, r6 -_080EF516: - lsls r0, r5, 2 - adds r3, r0, r6 - ldrh r0, [r4, 0x2] - ldrh r1, [r3, 0x2] - cmp r0, r1 - bcs _080EF532 - ldrh r1, [r4] - adds r2, r0, 0 - ldrh r0, [r3] - strh r0, [r4] - ldrh r0, [r3, 0x2] - strh r0, [r4, 0x2] - strh r1, [r3] - strh r2, [r3, 0x2] -_080EF532: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080EF516 -_080EF53C: - lsls r0, r7, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bls _080EF504 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF500 - - thumb_func_start sub_80EF550 -sub_80EF550: @ 80EF550 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0 - ldr r5, =gSaveBlock1Ptr - ldr r4, =0x000027cc -_080EF55C: - ldr r3, [r5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r2, r3, r0 - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, r6 - bne _080EF5A4 - ldr r6, =0x000027cd - adds r0, r2, r6 - ldrb r2, [r0] - cmp r2, 0x1 - bne _080EF590 - ldr r0, =gScriptResult - strh r2, [r0] - b _080EF5B2 - .pool -_080EF590: - adds r0, r3, r4 - bl sub_80EF910 - ldr r0, [r5] - adds r0, r4 - bl sub_80EF93C - bl sub_80EFA88 - b _080EF5B2 -_080EF5A4: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080EF55C - bl sub_80EFA88 -_080EF5B2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EF550 - - thumb_func_start InterviewBefore -InterviewBefore: @ 80EF5B8 - push {lr} - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0xA - bhi _080EF646 - lsls r0, 2 - ldr r1, =_080EF5E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080EF5E0: - .4byte _080EF60C - .4byte _080EF612 - .4byte _080EF618 - .4byte _080EF61E - .4byte _080EF624 - .4byte _080EF62A - .4byte _080EF630 - .4byte _080EF636 - .4byte _080EF63C - .4byte _080EF646 - .4byte _080EF642 -_080EF60C: - bl sub_80EF64C - b _080EF646 -_080EF612: - bl sub_80EF6C4 - b _080EF646 -_080EF618: - bl sub_80EF704 - b _080EF646 -_080EF61E: - bl sub_80EF79C - b _080EF646 -_080EF624: - bl sub_80EF7A8 - b _080EF646 -_080EF62A: - bl sub_80EF7B4 - b _080EF646 -_080EF630: - bl sub_80EF80C - b _080EF646 -_080EF636: - bl sub_80EF7F4 - b _080EF646 -_080EF63C: - bl sub_80EF800 - b _080EF646 -_080EF642: - bl sub_80EF84C -_080EF646: - pop {r0} - bx r0 - thumb_func_end InterviewBefore - - thumb_func_start sub_80EF64C -sub_80EF64C: @ 80EF64C - push {r4,lr} - movs r0, 0x1 - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080EF6A0 - ldr r4, =gStringVar1 - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r0, r1 - ldr r1, =0x000027d0 - adds r0, r1 - movs r1, 0x6 - bl sub_811F88C -_080EF6A0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF64C - - thumb_func_start sub_80EF6C4 -sub_80EF6C4: @ 80EF6C4 - push {lr} - movs r0, 0x2 - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080EF6F0 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r0, r1 - ldr r1, =0x000027d0 - adds r0, r1 - movs r1, 0x6 - bl sub_811F88C -_080EF6F0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF6C4 - - thumb_func_start sub_80EF704 -sub_80EF704: @ 80EF704 - push {r4-r6,lr} - movs r0, 0x3 - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080EF774 - ldr r6, =gStringVar1 - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - movs r5, 0x64 - muls r0, r5 - ldr r4, =gPlayerParty - adds r0, r4 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - muls r0, r5 - adds r0, r4 - ldr r4, =gStringVar2 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r0, r1 - ldr r1, =0x000027e8 - adds r0, r1 - movs r1, 0x2 - bl sub_811F88C -_080EF774: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF704 - - thumb_func_start sub_80EF79C -sub_80EF79C: @ 80EF79C - ldr r1, =gScriptResult - movs r0, 0x1 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_80EF79C - - thumb_func_start sub_80EF7A8 -sub_80EF7A8: @ 80EF7A8 - push {lr} - movs r0, 0x5 - bl sub_80EF550 - pop {r0} - bx r0 - thumb_func_end sub_80EF7A8 - - thumb_func_start sub_80EF7B4 -sub_80EF7B4: @ 80EF7B4 - push {lr} - movs r0, 0x6 - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080EF7E0 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r0, r1 - ldr r1, =0x000027d0 - adds r0, r1 - movs r1, 0x2 - bl sub_811F88C -_080EF7E0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF7B4 - - thumb_func_start sub_80EF7F4 -sub_80EF7F4: @ 80EF7F4 - push {lr} - movs r0, 0x8 - bl sub_80EF550 - pop {r0} - bx r0 - thumb_func_end sub_80EF7F4 - - thumb_func_start sub_80EF800 -sub_80EF800: @ 80EF800 - push {lr} - movs r0, 0x9 - bl sub_80EF550 - pop {r0} - bx r0 - thumb_func_end sub_80EF800 - - thumb_func_start sub_80EF80C -sub_80EF80C: @ 80EF80C - push {lr} - movs r0, 0x7 - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080EF838 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r0, r1 - ldr r1, =0x000027e4 - adds r0, r1 - movs r1, 0x1 - bl sub_811F88C -_080EF838: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF80C - - thumb_func_start sub_80EF84C -sub_80EF84C: @ 80EF84C - push {lr} - movs r0, 0xB - bl sub_80EF550 - ldr r0, =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080EF878 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r0, r1 - ldr r1, =0x000027e0 - adds r0, r1 - movs r1, 0x1 - bl sub_811F88C -_080EF878: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EF84C - - thumb_func_start sub_80EF88C -sub_80EF88C: @ 80EF88C - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, =gPlayerParty - adds r5, r1, r0 - ldr r6, =gStringVar1 - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - mov r4, sp - adds r0, r5, 0 - movs r1, 0x3 - mov r2, sp - bl GetMonData - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080EF8EC - adds r0, r5, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - adds r1, r6, 0 - bl StringCompare - cmp r0, 0 - bne _080EF8EC - movs r0, 0 - b _080EF8EE - .pool -_080EF8EC: - movs r0, 0x1 -_080EF8EE: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80EF88C - - thumb_func_start sub_80EF8F8 -sub_80EF8F8: @ 80EF8F8 - push {lr} - bl sub_8139688 - lsls r0, 24 - lsrs r0, 24 - bl sub_80EF88C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80EF8F8 - - thumb_func_start sub_80EF910 -sub_80EF910: @ 80EF910 - push {lr} - lsls r1, 24 - lsrs r1, 24 - lsls r2, r1, 3 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - movs r0, 0 - strb r0, [r2] - strb r0, [r2, 0x1] - movs r1, 0 - adds r2, 0x2 - movs r3, 0 -_080EF92A: - adds r0, r2, r1 - strb r3, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x21 - bls _080EF92A - pop {r0} - bx r0 - thumb_func_end sub_80EF910 - - thumb_func_start sub_80EF93C -sub_80EF93C: @ 80EF93C - push {r4-r7,lr} - adds r4, r0, 0 - movs r5, 0 -_080EF942: - lsls r0, r5, 3 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080EF986 - adds r0, r5, 0x1 - b _080EF97E -_080EF954: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080EF97C - adds r1, r4 - adds r0, r3, 0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80EF910 - b _080EF986 -_080EF97C: - adds r0, r2, 0x1 -_080EF97E: - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x4 - bls _080EF954 -_080EF986: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080EF942 - movs r5, 0x5 -_080EF992: - lsls r0, r5, 3 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r1, r4 - ldrb r0, [r0] - adds r5, 0x1 - cmp r0, 0 - bne _080EF9D8 - lsls r0, r5, 24 - b _080EF9D2 -_080EF9A6: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080EF9CE - adds r1, r4 - adds r0, r3, 0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80EF910 - b _080EF9D8 -_080EF9CE: - adds r0, r2, 0x1 - lsls r0, 24 -_080EF9D2: - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080EF9A6 -_080EF9D8: - lsls r0, r5, 24 - lsrs r5, r0, 24 - cmp r5, 0x17 - bls _080EF992 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EF93C - - thumb_func_start sub_80EF9E8 -sub_80EF9E8: @ 80EF9E8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - lsrs r0, 16 - bl sub_80EFA24 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r0, =gUnknown_0858D144 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - movs r1, 0xB - muls r1, r5 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80EF9E8 - - thumb_func_start sub_80EFA24 -sub_80EFA24: @ 80EFA24 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000019b - bl __umodsi3 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, r4, 0 - b _080EFA62 - .pool -_080EFA48: - cmp r4, 0x1 - bne _080EFA54 - ldr r4, =0x0000019b - b _080EFA5A - .pool -_080EFA54: - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080EFA5A: - cmp r4, r6 - bne _080EFA62 - adds r4, r5, 0 - b _080EFA7E -_080EFA62: - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl GetSetPokedexFlag - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080EFA48 - cmp r4, r5 - beq _080EFA48 -_080EFA7E: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80EFA24 - - thumb_func_start sub_80EFA88 -sub_80EFA88: @ 80EFA88 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - bl sub_80EFADC - ldr r1, =gUnknown_030060BC - strb r0, [r1] - ldr r2, =gSpecialVar_0x8006 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - strh r1, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080EFACC - ldr r1, =gScriptResult - movs r0, 0x1 - b _080EFAD0 - .pool -_080EFACC: - ldr r1, =gScriptResult - movs r0, 0 -_080EFAD0: - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFA88 - - thumb_func_start sub_80EFADC -sub_80EFADC: @ 80EFADC - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080EFAE2: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080EFAF6 - lsls r0, r1, 24 - asrs r0, 24 - b _080EFB04 -_080EFAF6: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080EFAE2 - movs r0, 0x1 - negs r0, r0 -_080EFB04: - pop {r1} - bx r1 - thumb_func_end sub_80EFADC - - thumb_func_start sub_80EFB08 -sub_80EFB08: @ 80EFB08 - push {lr} - adds r2, r0, 0 - movs r1, 0x5 -_080EFB0E: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080EFB24 - adds r0, r1, 0 - b _080EFB34 -_080EFB24: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0x17 - ble _080EFB0E - movs r0, 0x1 - negs r0, r0 -_080EFB34: - pop {r1} - bx r1 - thumb_func_end sub_80EFB08 - - thumb_func_start sub_80EFB38 -sub_80EFB38: @ 80EFB38 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bls _080EFB50 - movs r0, 0x1 - b _080EFB52 -_080EFB50: - movs r0, 0 -_080EFB52: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EFB38 - - thumb_func_start sub_80EFB58 -sub_80EFB58: @ 80EFB58 - push {r4-r6,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r4, 0x4 - ldr r6, =0x0000ffff - b _080EFB7E - .pool -_080EFB78: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080EFB7E: - cmp r2, 0x6 - bne _080EFB84 - movs r2, 0 -_080EFB84: - lsls r1, r2, 1 - adds r0, r5, r1 - ldrh r0, [r0] - adds r3, r4, 0x4 - cmp r0, r6 - beq _080EFB78 - ldr r0, =gStringVar3 - adds r1, r3, r1 - ldrh r1, [r1] - bl CopyEasyChatWord - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFB58 - - thumb_func_start sub_80EFBA4 -sub_80EFBA4: @ 80EFBA4 - push {lr} - adds r2, r0, 0 - movs r3, 0 - movs r1, 0 - ldrb r0, [r2, 0x4] - cmp r0, 0xFF - beq _080EFBD0 - adds r2, 0x4 -_080EFBB4: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r3, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bhi _080EFBD0 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080EFBB4 -_080EFBD0: - movs r0, 0x7 - ands r3, r0 - adds r0, r3, 0 - pop {r1} - bx r1 - thumb_func_end sub_80EFBA4 - - thumb_func_start sub_80EFBDC -sub_80EFBDC: @ 80EFBDC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - ldr r4, [sp, 0x2C] - ldr r5, [sp, 0x30] - mov r8, r5 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0 - movs r7, 0xFF -_080EFC06: - mov r1, sp - adds r0, r1, r2 - ldrb r1, [r0] - orrs r1, r7 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080EFC06 - cmp r3, 0 - bne _080EFC72 - mov r4, r8 - adds r4, 0xF - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080EFC36 - mov r0, sp - adds r1, r4, r5 - b _080EFC40 -_080EFC36: - cmp r6, 0x1 - bne _080EFC46 - mov r0, sp - subs r1, r2, r5 - adds r1, r4, r1 -_080EFC40: - ldrb r1, [r1] - strb r1, [r0] - b _080EFC6C -_080EFC46: - cmp r6, 0x2 - bne _080EFC56 - mov r1, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - b _080EFC66 -_080EFC56: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 -_080EFC66: - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1, 0x1] -_080EFC6C: - mov r2, r8 - ldrb r1, [r2, 0x1E] - b _080EFCC8 -_080EFC72: - cmp r3, 0x1 - bne _080EFCD0 - mov r4, r8 - adds r4, 0x4 - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080EFC8E - mov r0, sp - adds r1, r4, r5 - b _080EFC98 -_080EFC8E: - cmp r6, 0x1 - bne _080EFC9E - mov r0, sp - subs r1, r2, r5 - adds r1, r4, r1 -_080EFC98: - ldrb r1, [r1] - strb r1, [r0] - b _080EFCC4 -_080EFC9E: - cmp r6, 0x2 - bne _080EFCAE - mov r1, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - b _080EFCBE -_080EFCAE: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 -_080EFCBE: - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1, 0x1] -_080EFCC4: - mov r5, r8 - ldrb r1, [r5, 0x1F] -_080EFCC8: - mov r0, sp - bl ConvertInternationalString - b _080EFD30 -_080EFCD0: - movs r0, 0xB - muls r4, r0 - ldr r7, =gSpeciesNames - adds r0, r4, r7 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080EFCF0 - mov r0, sp - adds r1, r5, r4 - b _080EFCFA - .pool -_080EFCF0: - cmp r6, 0x1 - bne _080EFD02 - mov r0, sp - subs r1, r2, r5 - adds r1, r4 -_080EFCFA: - adds r1, r7 - ldrb r1, [r1] - strb r1, [r0] - b _080EFD30 -_080EFD02: - cmp r6, 0x2 - bne _080EFD16 - mov r1, sp - adds r0, r5, r4 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r4, 0x1 - adds r0, r5, r0 - b _080EFD2A -_080EFD16: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4 -_080EFD2A: - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1, 0x1] -_080EFD30: - ldr r0, =gUnknown_0858D144 - mov r2, r9 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - mov r1, sp - bl StringCopy - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFBDC - - thumb_func_start sub_80EFD54 -sub_80EFD54: @ 80EFD54 - push {r4,lr} - movs r1, 0 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - ldr r0, =gSpecialVar_0x8004 - ldrh r2, [r0] - ldr r4, =0x000027cc -_080EFD62: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3, r0 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _080EFD84 - movs r0, 0x1 - b _080EFD90 - .pool -_080EFD84: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080EFD62 - movs r0, 0 -_080EFD90: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EFD54 - - thumb_func_start sub_80EFD98 -sub_80EFD98: @ 80EFD98 - push {r4,lr} - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r4, =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - ldr r0, =gStringVar3 - adds r1, r4, 0 - bl StringCompare - cmp r0, 0 - beq _080EFDD4 - bl sub_80ED320 - movs r0, 0x1 - b _080EFDD6 - .pool -_080EFDD4: - movs r0, 0 -_080EFDD6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80EFD98 - - thumb_func_start sub_80EFDDC -sub_80EFDDC: @ 80EFDDC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - ldr r0, =gSpecialVar_0x8004 - mov r9, r0 - ldrh r0, [r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, =gPlayerParty - adds r0, r6 - ldr r2, =gStringVar3 - movs r1, 0x2 - bl GetMonData - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - ldr r1, =gStringVar2 - mov r10, r1 - movs r1, 0x2 - mov r2, r10 - bl GetMonData - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, =c2_080CC144 - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r10 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFDDC - - thumb_func_start c2_080CC144 -c2_080CC144: @ 80EFE98 - push {lr} - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r2, =gStringVar2 - movs r1, 0x2 - bl SetMonData - bl c2_exit_to_overworld_1_continue_scripts_restart_music - pop {r0} - bx r0 - .pool - thumb_func_end c2_080CC144 - - thumb_func_start sub_80EFEC4 -sub_80EFEC4: @ 80EFEC4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - ldr r0, =gSpecialVar_0x8012 - ldrb r0, [r0] - ldr r1, =gSpecialVar_0x8013 - ldrb r1, [r1] - bl GetBoxedMonPtr - adds r6, r0, 0 - ldr r2, =gStringVar3 - movs r1, 0x2 - bl GetBoxMonData - ldr r0, =gStringVar2 - mov r8, r0 - adds r0, r6, 0 - movs r1, 0x2 - mov r2, r8 - bl GetBoxMonData - adds r0, r6, 0 - movs r1, 0xB - movs r2, 0 - bl GetBoxMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - bl GetBoxMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0 - bl GetBoxMonData - str r0, [sp] - ldr r0, =sub_80EFF48 - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r8 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFEC4 - - thumb_func_start sub_80EFF48 -sub_80EFF48: @ 80EFF48 - push {lr} - ldr r0, =gSpecialVar_0x8012 - ldrb r0, [r0] - ldr r1, =gSpecialVar_0x8013 - ldrb r1, [r1] - ldr r2, =gStringVar2 - bl SetBoxMonNickFromAnyBox - bl c2_exit_to_overworld_1_continue_scripts_restart_music - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFF48 - - thumb_func_start sub_80EFF6C -sub_80EFF6C: @ 80EFF6C - push {r4,lr} - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r4, =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFF6C - - thumb_func_start sub_80EFF9C -sub_80EFF9C: @ 80EFF9C - push {r4,lr} - bl sub_80F0020 - adds r4, r0, 0 - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x1 - movs r2, 0 - bl GetMonData - cmp r4, r0 - bne _080EFFD0 - ldr r1, =gScriptResult - movs r0, 0 - b _080EFFD4 - .pool -_080EFFD0: - ldr r1, =gScriptResult - movs r0, 0x1 -_080EFFD4: - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80EFF9C - - thumb_func_start sub_80EFFE0 -sub_80EFFE0: @ 80EFFE0 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - cmp r1, 0 - beq _080F0016 - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080EFFFA - movs r0, 0x2 - b _080F001C -_080EFFFA: - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080F000A - movs r0, 0x3 - b _080F001C -_080F000A: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _080F001A -_080F0016: - movs r0, 0 - b _080F001C -_080F001A: - movs r0, 0x4 -_080F001C: - pop {r1} - bx r1 - thumb_func_end sub_80EFFE0 - - thumb_func_start sub_80F0020 -sub_80F0020: @ 80F0020 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r0, [r2, 0xD] - lsls r0, 24 - ldrb r1, [r2, 0xC] - lsls r1, 16 - orrs r0, r1 - ldrb r1, [r2, 0xB] - lsls r1, 8 - orrs r0, r1 - ldrb r1, [r2, 0xA] - orrs r0, r1 - bx lr - .pool - thumb_func_end sub_80F0020 - - thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV -CheckForBigMovieOrEmergencyNewsOnTV: @ 80F0040 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080F0060 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080F006C - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080F0074 -_080F0060: - movs r0, 0 - b _080F009E - .pool -_080F006C: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080F0060 -_080F0074: - ldr r0, =0x000008bd - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F0092 - movs r0, 0x89 - lsls r0, 4 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F009C -_080F0092: - movs r0, 0x1 - b _080F009E - .pool -_080F009C: - movs r0, 0x2 -_080F009E: - pop {r1} - bx r1 - thumb_func_end CheckForBigMovieOrEmergencyNewsOnTV - - thumb_func_start GetMomOrDadStringForTVMessage -GetMomOrDadStringForTVMessage: @ 80F00A4 - push {r4,lr} - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080F0104 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080F00EC - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _080F0104 - ldr r0, =gStringVar1 - ldr r1, =gText_Mom - bl StringCopy - ldr r0, =0x00004003 - movs r1, 0x1 - bl VarSet - b _080F0104 - .pool -_080F00EC: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080F0104 - ldr r0, =gStringVar1 - ldr r1, =gText_Mom - bl StringCopy - ldr r0, =0x00004003 - movs r1, 0x1 - bl VarSet -_080F0104: - ldr r4, =0x00004003 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _080F0142 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - beq _080F0158 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080F016C - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080F0158 -_080F0142: - ldr r0, =gStringVar1 - ldr r1, =gText_Mom - bl StringCopy - b _080F01A8 - .pool -_080F0158: - ldr r0, =gStringVar1 - ldr r1, =gText_Dad - bl StringCopy - b _080F01A8 - .pool -_080F016C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F0198 - ldr r0, =gStringVar1 - ldr r1, =gText_Mom - bl StringCopy - adds r0, r4, 0 - movs r1, 0x1 - bl VarSet - b _080F01A8 - .pool -_080F0198: - ldr r0, =gStringVar1 - ldr r1, =gText_Dad - bl StringCopy - adds r0, r4, 0 - movs r1, 0x2 - bl VarSet -_080F01A8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end GetMomOrDadStringForTVMessage - - thumb_func_start sub_80F01B8 -sub_80F01B8: @ 80F01B8 - push {lr} - ldr r0, =0x000040bc - movs r1, 0 - bl VarSet - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r0, 0x5 - bl RemoveFieldObjectByLocalIdAndMap - ldr r0, =0x00000396 - bl FlagSet - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F01B8 - - thumb_func_start sub_80F01E8 -sub_80F01E8: @ 80F01E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - movs r0, 0xE1 - lsls r0, 4 - bl Alloc - mov r8, r0 - cmp r0, 0 - bne _080F0206 - b _080F0344 -_080F0206: - movs r4, 0 -_080F0208: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 5 - adds r0, r4 - lsls r0, 2 - add r0, r8 - adds r1, r4, 0 - muls r1, r5 - adds r1, r7, r1 - movs r2, 0xE1 - lsls r2, 2 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080F0208 - mov r5, r8 - movs r4, 0 - ldr r7, =gLinkPlayers - b _080F0276 - .pool -_080F0238: - lsls r0, r4, 3 - subs r2, r0, r4 - lsls r0, r2, 2 - adds r3, r0, r7 - ldrb r1, [r3] - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080F025A - lsls r0, r2, 5 - adds r0, r4 - lsls r0, 2 - adds r0, r5, r0 - bl sub_80F1254 - b _080F0270 -_080F025A: - cmp r1, 0x3 - bne _080F0270 - ldrh r0, [r3, 0x1A] - cmp r0, 0x1 - bne _080F0270 - lsls r0, r2, 5 - adds r0, r4 - lsls r0, 2 - adds r0, r5, r0 - bl sub_80F12A4 -_080F0270: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080F0276: - bl sub_8009FCC - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _080F0238 - cmp r6, 0x1 - beq _080F02C4 - cmp r6, 0x1 - bgt _080F0290 - cmp r6, 0 - beq _080F029A - b _080F031E -_080F0290: - cmp r6, 0x2 - beq _080F02DC - cmp r6, 0x3 - beq _080F0304 - b _080F031E -_080F029A: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - movs r2, 0xE1 - lsls r2, 2 - adds r1, r5, r2 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r5, r3 - ldr r4, =0x00000a8c - adds r3, r5, r4 - bl sub_80F0358 - b _080F031E - .pool -_080F02C4: - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, =0x000027cc - adds r1, r0 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r5, r3 - b _080F02EA - .pool -_080F02DC: - movs r0, 0xE1 - lsls r0, 2 - adds r1, r5, r0 - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r3, =0x000027cc - adds r2, r3 -_080F02EA: - ldr r4, =0x00000a8c - adds r3, r5, r4 - adds r0, r5, 0 - bl sub_80F0358 - b _080F031E - .pool -_080F0304: - movs r0, 0xE1 - lsls r0, 2 - adds r1, r5, r0 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r5, r3 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - ldr r4, =0x000027cc - adds r3, r4 - adds r0, r5, 0 - bl sub_80F0358 -_080F031E: - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - ldr r4, =0x000027cc - adds r0, r4 - bl sub_80EF93C - bl sub_80F0C04 - ldr r0, [r5] - adds r0, r4 - bl sub_80EF93C - bl sub_80F0708 - bl sub_80F0B64 - mov r0, r8 - bl Free -_080F0344: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F01E8 - - thumb_func_start sub_80F0358 -sub_80F0358: @ 80F0358 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - str r0, [sp, 0x10] - str r1, [sp, 0x14] - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - add r0, sp, 0x10 - str r0, [sp] - add r0, sp, 0x14 - str r0, [sp, 0x4] - add r0, sp, 0x18 - str r0, [sp, 0x8] - add r0, sp, 0x1C - str r0, [sp, 0xC] - bl sub_8009FCC - ldr r1, =gUnknown_03001174 - strb r0, [r1] -_080F0384: - movs r6, 0 - ldr r0, =gUnknown_03001174 - ldrb r1, [r0] - cmp r6, r1 - bcs _080F0384 - mov r10, r0 -_080F0390: - cmp r6, 0 - bne _080F0398 - ldr r2, =gUnknown_0203A02C - strb r6, [r2] -_080F0398: - lsls r4, r6, 2 - mov r3, sp - adds r0, r3, r4 - ldr r0, [r0] - ldr r0, [r0] - bl sub_80F06D0 - ldr r1, =gUnknown_03001176 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - adds r7, r4, 0 - cmp r0, r1 - bne _080F03E0 - ldr r1, =gUnknown_0203A02C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - mov r2, r10 - ldrb r2, [r2] - cmp r0, r2 - beq _080F048C - adds r6, 0x1 - mov r9, r6 - b _080F0470 - .pool -_080F03E0: - movs r5, 0 - mov r3, r10 - ldrb r0, [r3] - subs r0, 0x1 - adds r2, r6, 0x1 - mov r9, r2 - cmp r5, r0 - bge _080F0456 - ldr r3, =gUnknown_03001174 - mov r8, r3 -_080F03F4: - adds r0, r6, r5 - adds r4, r0, 0x1 - mov r0, r8 - ldrb r1, [r0] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - ldr r0, [r0] - bl sub_80EFB08 - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080F0446 - mov r2, r8 - ldrb r1, [r2] - adds r0, r4, 0 - bl __modsi3 - adds r2, r0, 0 - lsls r0, r2, 2 - add r0, sp - ldr r0, [r0] - mov r3, sp - adds r1, r3, r7 - ldr r1, [r1] - lsls r2, 24 - lsrs r2, 24 - bl sub_80F049C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F0456 -_080F0446: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _080F03F4 -_080F0456: - mov r2, r10 - ldrb r0, [r2] - subs r0, 0x1 - cmp r5, r0 - bne _080F0470 - mov r3, sp - adds r0, r3, r7 - ldr r0, [r0] - ldr r0, [r0] - ldr r1, =gUnknown_03001176 - ldrb r1, [r1] - bl sub_80EF910 -_080F0470: - mov r1, r9 - lsls r0, r1, 24 - lsrs r6, r0, 24 - mov r2, r10 - ldrb r2, [r2] - cmp r6, r2 - bcc _080F0390 - b _080F0384 - .pool -_080F048C: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F0358 - - thumb_func_start sub_80F049C -sub_80F049C: @ 80F049C - push {r4-r7,lr} - sub sp, 0x4 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r4, [r0] - ldr r6, [r1] - movs r5, 0 - ldr r2, =gUnknown_03001176 - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0] - str r2, [sp] - bl sub_80EFFE0 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - ldr r2, [sp] - cmp r0, 0x3 - beq _080F050C - cmp r0, 0x3 - bgt _080F04DC - cmp r0, 0x2 - beq _080F04E2 - b _080F055A - .pool -_080F04DC: - cmp r1, 0x4 - beq _080F0534 - b _080F055A -_080F04E2: - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80F0580 - b _080F0556 - .pool -_080F050C: - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80F05E8 - b _080F0556 - .pool -_080F0534: - ldr r0, =gUnknown_030060BC - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80F0668 -_080F0556: - lsls r0, 24 - lsrs r5, r0, 24 -_080F055A: - cmp r5, 0x1 - beq _080F0568 - movs r0, 0 - b _080F0574 - .pool -_080F0568: - ldr r0, =gUnknown_03001176 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80EF910 - movs r0, 0x1 -_080F0574: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F049C - - thumb_func_start sub_80F0580 -sub_80F0580: @ 80F0580 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl sub_800A2A4 - adds r5, r0, 0 - movs r2, 0xFF - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r0, r1 - bne _080F05B0 - lsrs r0, r5, 8 - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080F05B0 - movs r0, 0 - b _080F05E0 -_080F05B0: - adds r1, r4, 0 - adds r1, 0x20 - ldrb r0, [r1] - adds r2, r4, 0 - adds r2, 0x22 - strb r0, [r2] - adds r3, r4, 0 - adds r3, 0x21 - ldrb r0, [r3] - adds r2, 0x1 - strb r0, [r2] - strb r5, [r1] - lsrs r0, r5, 8 - strb r0, [r3] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] -_080F05E0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0580 - - thumb_func_start sub_80F05E8 -sub_80F05E8: @ 80F05E8 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl sub_800A2A4 - adds r2, r0, 0 - movs r3, 0xFF - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x20 - ldrb r1, [r1] - cmp r0, r1 - bne _080F0614 - lsrs r0, r2, 8 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r0, r1 - beq _080F0634 -_080F0614: - movs r3, 0xFF - adds r0, r2, 0 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x22 - lsrs r5, r2, 8 - ldrb r1, [r1] - cmp r0, r1 - bne _080F0638 - adds r0, r5, 0 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080F0638 -_080F0634: - movs r0, 0 - b _080F0660 -_080F0638: - ldrb r1, [r4, 0x1E] - adds r0, r4, 0 - adds r0, 0x20 - strb r1, [r0] - ldrb r0, [r4, 0x1F] - adds r1, r4, 0 - adds r1, 0x21 - strb r0, [r1] - strb r2, [r4, 0x1E] - strb r5, [r4, 0x1F] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] -_080F0660: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F05E8 - - thumb_func_start sub_80F0668 -sub_80F0668: @ 80F0668 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl sub_800A2A4 - adds r5, r0, 0 - movs r2, 0xFF - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r0, r1 - bne _080F0698 - lsrs r0, r5, 8 - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080F0698 - movs r0, 0 - b _080F06CA -_080F0698: - adds r1, r4, 0 - adds r1, 0x20 - ldrb r0, [r1] - adds r2, r4, 0 - adds r2, 0x22 - strb r0, [r2] - adds r3, r4, 0 - adds r3, 0x21 - ldrb r0, [r3] - adds r2, 0x1 - strb r0, [r2] - strb r5, [r1] - lsrs r0, r5, 8 - strb r0, [r3] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] - strh r0, [r6, 0x16] -_080F06CA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0668 - - thumb_func_start sub_80F06D0 -sub_80F06D0: @ 80F06D0 - push {lr} - adds r3, r0, 0 - movs r2, 0 -_080F06D6: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r3 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080F06F6 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _080F06F6 - lsls r0, r2, 24 - asrs r0, 24 - b _080F0704 -_080F06F6: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080F06D6 - movs r0, 0x1 - negs r0, r0 -_080F0704: - pop {r1} - bx r1 - thumb_func_end sub_80F06D0 - - thumb_func_start sub_80F0708 -sub_80F0708: @ 80F0708 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 -_080F0716: - ldr r3, =gSaveBlock1Ptr - ldr r1, [r3] - mov r4, r9 - lsls r2, r4, 3 - adds r0, r2, r4 - lsls r0, 2 - adds r1, r0 - ldr r0, =0x000027cc - adds r1, r0 - ldrb r0, [r1] - adds r7, r2, 0 - cmp r0, 0x29 - bls _080F0732 - b _080F0AD8 -_080F0732: - lsls r0, 2 - ldr r1, =_080F0748 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F0748: - .4byte _080F0AE2 - .4byte _080F0848 - .4byte _080F0AE2 - .4byte _080F0860 - .4byte _080F0878 - .4byte _080F0890 - .4byte _080F08BC - .4byte _080F08D4 - .4byte _080F07F0 - .4byte _080F0AE2 - .4byte _080F081C - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0AD8 - .4byte _080F0900 - .4byte _080F0AE2 - .4byte _080F0918 - .4byte _080F0944 - .4byte _080F095C - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0974 - .4byte _080F09A0 - .4byte _080F0AE2 - .4byte _080F09C0 - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F09F4 - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0AD8 - .4byte _080F0AE2 -_080F07F0: - ldr r0, [r3] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0x12] - lsls r5, r1, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0x2] - b _080F09E6 - .pool -_080F081C: - ldr r0, [r3] - mov r2, r9 - adds r4, r7, r2 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0x16] - lsls r5, r2, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0x2] - b _080F09E6 - .pool -_080F0848: - ldr r0, [r3] - mov r4, r9 - adds r1, r7, r4 - lsls r1, 2 - adds r1, r0 - ldr r0, =0x000027cc - adds r1, r0 - ldrh r0, [r1, 0x2] - b _080F09B0 - .pool -_080F0860: - ldr r0, [r3] - mov r2, r9 - adds r1, r7, r2 - lsls r1, 2 - adds r1, r0 - ldr r4, =0x000027cc - adds r1, r4 - ldrh r0, [r1, 0x2] - lsls r1, r2, 24 - b _080F09B2 - .pool -_080F0878: - ldr r0, [r3] - mov r2, r9 - adds r1, r7, r2 - lsls r1, 2 - adds r1, r0 - ldr r4, =0x000027cc - adds r1, r4 - ldrh r0, [r1, 0x6] - lsls r1, r2, 24 - b _080F09B2 - .pool -_080F0890: - ldr r0, [r3] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0x2] - lsls r5, r1, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0x1C] - b _080F09E6 - .pool -_080F08BC: - ldr r0, [r3] - mov r2, r9 - adds r1, r7, r2 - lsls r1, 2 - adds r1, r0 - ldr r4, =0x000027cc - adds r1, r4 - ldrh r0, [r1, 0x2] - lsls r1, r2, 24 - b _080F09B2 - .pool -_080F08D4: - ldr r0, [r3] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0xA] - lsls r5, r1, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0x14] - b _080F09E6 - .pool -_080F0900: - ldr r0, [r3] - mov r2, r9 - adds r1, r7, r2 - lsls r1, 2 - adds r1, r0 - ldr r4, =0x000027cc - adds r1, r4 - ldrh r0, [r1, 0x10] - lsls r1, r2, 24 - b _080F09B2 - .pool -_080F0918: - ldr r0, [r3] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0xC] - lsls r5, r1, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0xE] - b _080F09E6 - .pool -_080F0944: - ldr r0, [r3] - mov r2, r9 - adds r1, r7, r2 - lsls r1, 2 - adds r1, r0 - ldr r4, =0x000027cc - adds r1, r4 - ldrh r0, [r1, 0x4] - lsls r1, r2, 24 - b _080F09B2 - .pool -_080F095C: - ldr r0, [r3] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0x8] - b _080F09D0 - .pool -_080F0974: - ldr r0, [r3] - mov r2, r9 - adds r4, r7, r2 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0x2] - lsls r5, r2, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0xA] - b _080F09E6 - .pool -_080F09A0: - ldr r0, [r3] - mov r4, r9 - adds r1, r7, r4 - lsls r1, 2 - adds r1, r0 - ldr r0, =0x000027cc - adds r1, r0 - ldrh r0, [r1, 0x8] -_080F09B0: - lsls r1, r4, 24 -_080F09B2: - lsrs r1, 24 - bl sub_80F0B24 - b _080F0AE2 - .pool -_080F09C0: - ldr r0, [r3] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r6, =0x000027cc - adds r0, r6 - ldrh r0, [r0, 0x6] -_080F09D0: - lsls r5, r1, 24 - lsrs r5, 24 - adds r1, r5, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r6 - ldrh r0, [r4, 0x4] -_080F09E6: - adds r1, r5, 0 - bl sub_80F0B24 - b _080F0AE2 - .pool -_080F09F4: - ldr r0, [r3] - mov r2, r9 - adds r4, r7, r2 - lsls r4, 2 - adds r0, r4, r0 - ldr r5, =0x000027cc - adds r0, r5 - ldrh r0, [r0, 0x4] - lsls r2, 24 - mov r8, r2 - lsrs r6, r2, 24 - adds r1, r6, 0 - str r3, [sp, 0x4] - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r0, r4, r0 - adds r0, r5 - ldrh r0, [r0, 0x6] - adds r1, r6, 0 - bl sub_80F0B24 - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r4, r0 - adds r4, r5 - ldrb r0, [r4, 0xD] - subs r0, 0x1 - mov r6, r8 - cmp r0, 0xC - bhi _080F0AE2 - lsls r0, 2 - ldr r1, =_080F0A48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F0A48: - .4byte _080F0A7C - .4byte _080F0AA0 - .4byte _080F0AE2 - .4byte _080F0AE2 - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C - .4byte _080F0A7C -_080F0A7C: - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - mov r4, r9 - adds r0, r7, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, =0x000027cc - adds r0, r1 - ldrh r0, [r0, 0x8] - lsrs r1, r6, 24 - bl sub_80F0B24 - b _080F0AE2 - .pool -_080F0AA0: - ldr r2, =gSaveBlock1Ptr - ldr r0, [r2] - mov r1, r9 - adds r4, r7, r1 - lsls r4, 2 - adds r0, r4, r0 - ldr r5, =0x000027cc - adds r0, r5 - ldrh r0, [r0, 0x8] - lsrs r6, 24 - adds r1, r6, 0 - str r2, [sp] - bl sub_80F0B24 - ldr r2, [sp] - ldr r0, [r2] - adds r4, r0 - adds r4, r5 - ldrh r0, [r4, 0xA] - adds r1, r6, 0 - bl sub_80F0B24 - b _080F0AE2 - .pool -_080F0AD8: - mov r2, r9 - lsls r0, r2, 24 - lsrs r0, 24 - bl sub_80F0B00 -_080F0AE2: - mov r0, r9 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r0, 0x17 - bhi _080F0AF2 - b _080F0716 -_080F0AF2: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F0708 - - thumb_func_start sub_80F0B00 -sub_80F0B00: @ 80F0B00 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r2, r1 - ldr r0, =0x000027cd - adds r2, r0 - movs r0, 0 - strb r0, [r2] - bx lr - .pool - thumb_func_end sub_80F0B00 - - thumb_func_start sub_80F0B24 -sub_80F0B24: @ 80F0B24 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl GetSetPokedexFlag - lsls r0, 24 - asrs r2, r0, 24 - cmp r2, 0 - bne _080F0B56 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, r0 - ldr r0, =0x000027cd - adds r1, r0 - strb r2, [r1] -_080F0B56: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0B24 - - thumb_func_start sub_80F0B64 -sub_80F0B64: @ 80F0B64 - push {r4-r6,lr} - ldr r0, =0x00000864 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F0BA2 - movs r2, 0 - ldr r4, =0x000027cd - movs r3, 0 - ldr r5, =gSaveBlock1Ptr -_080F0B7C: - ldr r0, [r5] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r0, r1 - ldr r6, =0x000027cc - adds r0, r1, r6 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080F0B94 - cmp r0, 0x29 - bne _080F0B98 -_080F0B94: - adds r0, r1, r4 - strb r3, [r0] -_080F0B98: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x17 - bls _080F0B7C -_080F0BA2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0B64 - - thumb_func_start sub_80F0BB8 -sub_80F0BB8: @ 80F0BB8 - push {r4-r6,lr} - movs r5, 0 - ldr r6, =gSaveBlock1Ptr -_080F0BBE: - ldr r1, [r6] - lsls r0, r5, 3 - adds r0, r5 - lsls r4, r0, 2 - adds r1, r4 - ldr r0, =0x000027cc - adds r1, r0 - ldrb r0, [r1] - bl sub_80EFFE0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080F0BE6 - ldr r0, [r6] - adds r0, r4 - ldr r1, =0x000027cd - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_080F0BE6: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080F0BBE - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0BB8 - - thumb_func_start sub_80F0C04 -sub_80F0C04: @ 80F0C04 - push {r4,r5,lr} - movs r3, 0 - movs r2, 0x5 - ldr r0, =gSaveBlock1Ptr - ldr r4, [r0] - ldr r5, =0x000027cc -_080F0C10: - lsls r0, r2, 24 - asrs r1, r0, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080F0C2E - lsls r0, r3, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r3, r0, 24 -_080F0C2E: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x17 - ble _080F0C10 - movs r2, 0 - lsls r0, r3, 24 - asrs r0, 24 - movs r1, 0x5 - subs r0, r1, r0 - cmp r2, r0 - bge _080F0C6E - adds r5, r0, 0 -_080F0C4A: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000027cc - adds r0, r1 - lsls r1, r2, 24 - asrs r4, r1, 24 - movs r2, 0xA0 - lsls r2, 19 - adds r1, r2 - lsrs r1, 24 - bl sub_80EF910 - adds r4, 0x1 - lsls r4, 24 - lsrs r2, r4, 24 - asrs r4, 24 - cmp r4, r5 - blt _080F0C4A -_080F0C6E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0C04 - - thumb_func_start sub_80F0C7C -sub_80F0C7C: @ 80F0C7C - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - movs r0, 0x80 - lsls r0, 1 - bl Alloc - adds r5, r0, 0 - cmp r5, 0 - beq _080F0D4C - movs r4, 0 -_080F0C9A: - lsls r0, r4, 6 - adds r0, r5 - adds r1, r4, 0 - muls r1, r7 - add r1, r8 - movs r2, 0x40 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080F0C9A - cmp r6, 0x1 - beq _080F0CF0 - cmp r6, 0x1 - bgt _080F0CC2 - cmp r6, 0 - beq _080F0CCC - b _080F0D3E -_080F0CC2: - cmp r6, 0x2 - beq _080F0D08 - cmp r6, 0x3 - beq _080F0D28 - b _080F0D3E -_080F0CCC: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002b50 - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x40 - adds r2, r5, 0 - adds r2, 0x80 - adds r3, r5, 0 - adds r3, 0xC0 - bl sub_80F0D60 - b _080F0D3E - .pool -_080F0CF0: - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, =0x00002b50 - adds r1, r0 - adds r2, r5, 0 - adds r2, 0x80 - b _080F0D14 - .pool -_080F0D08: - adds r1, r5, 0 - adds r1, 0x40 - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, =0x00002b50 - adds r2, r0 -_080F0D14: - adds r3, r5, 0 - adds r3, 0xC0 - adds r0, r5, 0 - bl sub_80F0D60 - b _080F0D3E - .pool -_080F0D28: - adds r1, r5, 0 - adds r1, 0x40 - adds r2, r5, 0 - adds r2, 0x80 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - ldr r0, =0x00002b50 - adds r3, r0 - adds r0, r5, 0 - bl sub_80F0D60 -_080F0D3E: - bl sub_80F0EEC - bl sub_80F0F24 - adds r0, r5, 0 - bl Free -_080F0D4C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0C7C - - thumb_func_start sub_80F0D60 -sub_80F0D60: @ 80F0D60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x10] - str r1, [sp, 0x14] - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - add r0, sp, 0x10 - str r0, [sp] - add r0, sp, 0x14 - str r0, [sp, 0x4] - add r0, sp, 0x18 - str r0, [sp, 0x8] - add r0, sp, 0x1C - str r0, [sp, 0xC] - bl sub_8009FCC - ldr r1, =gUnknown_03001175 - strb r0, [r1] - movs r0, 0 - mov r10, r0 -_080F0D90: - movs r7, 0 - mov r1, r10 - adds r1, 0x1 - str r1, [sp, 0x20] - b _080F0E28 - .pool -_080F0DA0: - lsls r4, r7, 2 - mov r1, sp - adds r0, r1, r4 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r10 - bl sub_80F0ECC - ldr r1, =gUnknown_03001176 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - mov r8, r4 - adds r1, r7, 0x1 - mov r9, r1 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080F0E22 - movs r5, 0 - ldr r1, =gUnknown_03001175 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - bge _080F0E22 - adds r6, r1, 0 -_080F0DD4: - adds r0, r7, r5 - adds r4, r0, 0x1 - ldrb r1, [r6] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - ldr r0, [r0] - bl sub_80EEE30 - ldr r1, =gUnknown_030060BC - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080F0E14 - ldrb r1, [r6] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - mov r1, sp - add r1, r8 - ldr r1, [r1] - bl sub_80F0E58 -_080F0E14: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - subs r0, 0x1 - cmp r5, r0 - blt _080F0DD4 -_080F0E22: - mov r1, r9 - lsls r0, r1, 24 - lsrs r7, r0, 24 -_080F0E28: - ldr r0, =gUnknown_03001175 - ldrb r0, [r0] - cmp r7, r0 - bcc _080F0DA0 - ldr r1, [sp, 0x20] - lsls r0, r1, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0xF - bls _080F0D90 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0D60 - - thumb_func_start sub_80F0E58 -sub_80F0E58: @ 80F0E58 - push {lr} - ldr r0, [r0] - ldr r1, [r1] - ldr r2, =gUnknown_03001176 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r2, 2 - adds r1, r2 - ldr r2, =gUnknown_030060BC - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - bl sub_80F0E84 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0E58 - - thumb_func_start sub_80F0E84 -sub_80F0E84: @ 80F0E84 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - ldrb r3, [r5] - adds r0, r3, 0 - cmp r0, 0 - bne _080F0E9A -_080F0E96: - movs r0, 0 - b _080F0EC6 -_080F0E9A: - movs r1, 0 - adds r2, r3, 0 - adds r3, r0, 0 -_080F0EA0: - lsls r0, r1, 2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r3 - beq _080F0E96 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080F0EA0 - lsls r0, r6, 24 - asrs r0, 22 - adds r0, r4 - strb r2, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] - ldrh r1, [r5, 0x2] - strh r1, [r0, 0x2] - movs r0, 0x1 -_080F0EC6: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0E84 - - thumb_func_start sub_80F0ECC -sub_80F0ECC: @ 80F0ECC - push {lr} - lsls r1, 24 - lsrs r2, r1, 24 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080F0EE2 - lsls r0, r2, 24 - asrs r0, 24 - b _080F0EE6 -_080F0EE2: - movs r0, 0x1 - negs r0, r0 -_080F0EE6: - pop {r1} - bx r1 - thumb_func_end sub_80F0ECC - - thumb_func_start sub_80F0EEC -sub_80F0EEC: @ 80F0EEC - push {r4,lr} - movs r4, 0 -_080F0EF0: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, r1 - ldr r1, =0x00002b50 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bls _080F0F08 - adds r0, r4, 0 - bl sub_80EEE78 -_080F0F08: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080F0EF0 - bl sub_80EEEB8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0EEC - - thumb_func_start sub_80F0F24 -sub_80F0F24: @ 80F0F24 - push {r4,r5,lr} - ldr r0, =0x00000864 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F0F50 - movs r2, 0 - ldr r5, =gSaveBlock1Ptr - ldr r4, =0x00002b51 - movs r3, 0 -_080F0F3C: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r1 - adds r0, r4 - strb r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080F0F3C -_080F0F50: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F0F24 - - thumb_func_start sub_80F0F64 -sub_80F0F64: @ 80F0F64 - push {r4-r7,lr} - adds r6, r0, 0 - adds r5, r1, 0 - movs r0, 0x2C - bl AllocZeroed - adds r4, r0, 0 - movs r7, 0 -_080F0F74: - lsls r0, r7, 3 - adds r1, r0, r7 - lsls r1, 2 - adds r1, r6 - ldrb r1, [r1] - subs r1, 0x1 - adds r2, r0, 0 - cmp r1, 0x28 - bls _080F0F88 - b _080F11F4 -_080F0F88: - lsls r0, r1, 2 - ldr r1, =_080F0F98 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F0F98: - .4byte _080F103C - .4byte _080F103C - .4byte _080F105A - .4byte _080F11F4 - .4byte _080F1152 - .4byte _080F111E - .4byte _080F10E6 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F1092 - .4byte _080F10C6 - .4byte _080F118A - .4byte _080F11AA - .4byte _080F11CA - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11F4 - .4byte _080F11EA -_080F103C: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4] - adds r0, 0x10 - bl sub_8009228 - cmp r0, 0 - beq _080F1056 - ldr r1, [r4] - movs r0, 0x1 - strb r0, [r1, 0x18] - b _080F11F4 -_080F1056: - ldr r0, [r4] - b _080F11F2 -_080F105A: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x4] - adds r0, 0x5 - bl sub_8009228 - cmp r0, 0 - beq _080F1074 - ldr r1, [r4, 0x4] - movs r0, 0x1 - strb r0, [r1, 0xD] - b _080F1078 -_080F1074: - ldr r0, [r4, 0x4] - strb r5, [r0, 0xD] -_080F1078: - ldr r0, [r4, 0x4] - adds r0, 0x10 - bl sub_8009228 - cmp r0, 0 - beq _080F108C - ldr r1, [r4, 0x4] - movs r0, 0x1 - strb r0, [r1, 0xE] - b _080F11F4 -_080F108C: - ldr r0, [r4, 0x4] - strb r5, [r0, 0xE] - b _080F11F4 -_080F1092: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x18] - adds r0, 0x13 - bl sub_8009228 - cmp r0, 0 - beq _080F10AC - ldr r1, [r4, 0x18] - movs r0, 0x1 - strb r0, [r1, 0x2] - b _080F10B0 -_080F10AC: - ldr r0, [r4, 0x18] - strb r5, [r0, 0x2] -_080F10B0: - ldr r0, [r4, 0x18] - adds r0, 0x4 - bl sub_8009228 - cmp r0, 0 - beq _080F10C0 - ldr r1, [r4, 0x18] - b _080F10DA -_080F10C0: - ldr r0, [r4, 0x18] - strb r5, [r0, 0x3] - b _080F11F4 -_080F10C6: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x1C] - adds r0, 0x13 - bl sub_8009228 - cmp r0, 0 - beq _080F10E0 - ldr r1, [r4, 0x1C] -_080F10DA: - movs r0, 0x1 - strb r0, [r1, 0x3] - b _080F11F4 -_080F10E0: - ldr r0, [r4, 0x1C] - strb r5, [r0, 0x3] - b _080F11F4 -_080F10E6: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x14] - adds r0, 0x2 - bl sub_8009228 - cmp r0, 0 - beq _080F1100 - ldr r1, [r4, 0x14] - movs r0, 0x1 - strb r0, [r1, 0x1D] - b _080F1104 -_080F1100: - ldr r0, [r4, 0x14] - strb r5, [r0, 0x1D] -_080F1104: - ldr r0, [r4, 0x14] - adds r0, 0xC - bl sub_8009228 - cmp r0, 0 - beq _080F1118 - ldr r1, [r4, 0x14] - movs r0, 0x1 - strb r0, [r1, 0x1E] - b _080F11F4 -_080F1118: - ldr r0, [r4, 0x14] - strb r5, [r0, 0x1E] - b _080F11F4 -_080F111E: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x10] - adds r0, 0x16 - bl sub_8009228 - cmp r0, 0 - beq _080F1138 - ldr r1, [r4, 0x10] - movs r0, 0x1 - strb r0, [r1, 0x1E] - b _080F113C -_080F1138: - ldr r0, [r4, 0x10] - strb r5, [r0, 0x1E] -_080F113C: - ldr r0, [r4, 0x10] - adds r0, 0x8 - bl sub_8009228 - cmp r0, 0 - beq _080F114C - ldr r1, [r4, 0x10] - b _080F117E -_080F114C: - ldr r0, [r4, 0x10] - strb r5, [r0, 0x1F] - b _080F11F4 -_080F1152: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0xC] - adds r0, 0xF - bl sub_8009228 - cmp r0, 0 - beq _080F116C - ldr r1, [r4, 0xC] - movs r0, 0x1 - strb r0, [r1, 0x1E] - b _080F1170 -_080F116C: - ldr r0, [r4, 0xC] - strb r5, [r0, 0x1E] -_080F1170: - ldr r0, [r4, 0xC] - adds r0, 0x4 - bl sub_8009228 - cmp r0, 0 - beq _080F1184 - ldr r1, [r4, 0xC] -_080F117E: - movs r0, 0x1 - strb r0, [r1, 0x1F] - b _080F11F4 -_080F1184: - ldr r0, [r4, 0xC] - strb r5, [r0, 0x1F] - b _080F11F4 -_080F118A: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x8] - adds r0, 0x13 - bl sub_8009228 - cmp r0, 0 - beq _080F11A4 - ldr r1, [r4, 0x8] - movs r0, 0x1 - strb r0, [r1, 0x2] - b _080F11F4 -_080F11A4: - ldr r0, [r4, 0x8] - strb r5, [r0, 0x2] - b _080F11F4 -_080F11AA: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x20] - adds r0, 0x13 - bl sub_8009228 - cmp r0, 0 - beq _080F11C4 - ldr r1, [r4, 0x20] - movs r0, 0x1 - strb r0, [r1, 0x6] - b _080F11F4 -_080F11C4: - ldr r0, [r4, 0x20] - strb r5, [r0, 0x6] - b _080F11F4 -_080F11CA: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x24] - adds r0, 0x13 - bl sub_8009228 - cmp r0, 0 - beq _080F11E4 - ldr r1, [r4, 0x24] - movs r0, 0x1 - strb r0, [r1, 0xB] - b _080F11F4 -_080F11E4: - ldr r0, [r4, 0x24] - strb r5, [r0, 0xB] - b _080F11F4 -_080F11EA: - adds r0, r2, r7 - lsls r0, 2 - adds r0, r6, r0 - str r0, [r4, 0x28] -_080F11F2: - strb r5, [r0, 0x18] -_080F11F4: - adds r7, 0x1 - cmp r7, 0x17 - bgt _080F11FC - b _080F0F74 -_080F11FC: - adds r0, r4, 0 - bl Free - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F0F64 - - thumb_func_start sub_80F1208 -sub_80F1208: @ 80F1208 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_80F14F8 - adds r4, r5, 0 - movs r1, 0xD8 - lsls r1, 2 - adds r0, r4, r1 - cmp r4, r0 - bcs _080F124C -_080F121C: - ldrb r0, [r4] - cmp r0, 0x7 - bne _080F1240 - ldrb r0, [r4, 0x1D] - cmp r0, 0x1 - bne _080F1230 - ldrb r0, [r4, 0x1E] - cmp r0, 0x1 - bne _080F1236 - b _080F1240 -_080F1230: - ldrb r0, [r4, 0x1E] - cmp r0, 0x1 - bne _080F1240 -_080F1236: - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x24 - bl memset -_080F1240: - adds r4, 0x24 - movs r1, 0xD8 - lsls r1, 2 - adds r0, r5, r1 - cmp r4, r0 - bcc _080F121C -_080F124C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F1208 - - thumb_func_start sub_80F1254 -sub_80F1254: @ 80F1254 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r4, 0 - movs r1, 0xD8 - lsls r1, 2 - adds r0, r4, r1 - cmp r4, r0 - bcs _080F128A -_080F1264: - ldrb r0, [r4] - cmp r0, 0x7 - bne _080F127E - adds r0, r4, 0 - adds r0, 0xC - bl sub_8009228 - cmp r0, 0 - beq _080F127A - movs r0, 0x1 - b _080F127C -_080F127A: - movs r0, 0x2 -_080F127C: - strb r0, [r4, 0x1E] -_080F127E: - adds r4, 0x24 - movs r1, 0xD8 - lsls r1, 2 - adds r0, r5, r1 - cmp r4, r0 - bcc _080F1264 -_080F128A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F1254 - - thumb_func_start sub_80F1290 -sub_80F1290: @ 80F1290 - push {lr} - bl sub_8009228 - movs r1, 0x2 - cmp r0, 0 - beq _080F129E - movs r1, 0x1 -_080F129E: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_80F1290 - - thumb_func_start sub_80F12A4 -sub_80F12A4: @ 80F12A4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r4, 0 - movs r1, 0xD8 - lsls r1, 2 - adds r0, r4, r1 - cmp r4, r0 - bcc _080F12B6 - b _080F14F0 -_080F12B6: - ldrb r0, [r4] - subs r0, 0x1 - cmp r0, 0x28 - bls _080F12C0 - b _080F14E2 -_080F12C0: - lsls r0, 2 - ldr r1, =_080F12D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F12D0: - .4byte _080F1374 - .4byte _080F137A - .4byte _080F1380 - .4byte _080F138E - .4byte _080F139A - .4byte _080F13A8 - .4byte _080F13BE - .4byte _080F13CC - .4byte _080F13E0 - .4byte _080F13F4 - .4byte _080F1408 - .4byte _080F1416 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F14E2 - .4byte _080F142A - .4byte _080F1438 - .4byte _080F1444 - .4byte _080F1450 - .4byte _080F145C - .4byte _080F14AC - .4byte _080F1468 - .4byte _080F14B8 - .4byte _080F148C - .4byte _080F1474 - .4byte _080F14AC - .4byte _080F14B8 - .4byte _080F1480 - .4byte _080F148C - .4byte _080F1498 - .4byte _080F14AC - .4byte _080F14B8 - .4byte _080F14C4 - .4byte _080F14D8 - .4byte _080F14E2 - .4byte _080F14E2 -_080F1374: - adds r0, r4, 0 - adds r0, 0x10 - b _080F1422 -_080F137A: - adds r0, r4, 0 - adds r0, 0x10 - b _080F1422 -_080F1380: - adds r0, r4, 0x5 - bl sub_80F1290 - strb r0, [r4, 0xD] - adds r0, r4, 0 - adds r0, 0x10 - b _080F1478 -_080F138E: - adds r0, r4, 0 - adds r0, 0xB - bl sub_80F1290 - strb r0, [r4, 0x17] - b _080F14E2 -_080F139A: - adds r0, r4, 0 - adds r0, 0xF - bl sub_80F1290 - strb r0, [r4, 0x1E] - adds r0, r4, 0x4 - b _080F13B6 -_080F13A8: - adds r0, r4, 0 - adds r0, 0x16 - bl sub_80F1290 - strb r0, [r4, 0x1E] - adds r0, r4, 0 - adds r0, 0x8 -_080F13B6: - bl sub_80F1290 - strb r0, [r4, 0x1F] - b _080F14E2 -_080F13BE: - adds r0, r4, 0x2 - bl sub_80F1290 - strb r0, [r4, 0x1D] - adds r0, r4, 0 - adds r0, 0xC - b _080F13D8 -_080F13CC: - adds r0, r4, 0 - adds r0, 0x14 - bl sub_80F1290 - strb r0, [r4, 0x1D] - adds r0, r4, 0x4 -_080F13D8: - bl sub_80F1290 - strb r0, [r4, 0x1E] - b _080F14E2 -_080F13E0: - adds r0, r4, 0 - adds r0, 0xC - bl sub_80F1290 - strb r0, [r4, 0x14] - adds r0, r4, 0x4 - bl sub_80F1290 - strb r0, [r4, 0x15] - b _080F14E2 -_080F13F4: - adds r0, r4, 0x4 - bl sub_80F1290 - strb r0, [r4, 0x19] - adds r0, r4, 0 - adds r0, 0xC - bl sub_80F1290 - strb r0, [r4, 0x1A] - b _080F14E2 -_080F1408: - adds r0, r4, 0x2 - bl sub_80F1290 - strb r0, [r4, 0x17] - adds r0, r4, 0 - adds r0, 0xC - b _080F1422 -_080F1416: - adds r0, r4, 0x2 - bl sub_80F1290 - strb r0, [r4, 0x17] - adds r0, r4, 0 - adds r0, 0xB -_080F1422: - bl sub_80F1290 - strb r0, [r4, 0x18] - b _080F14E2 -_080F142A: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x2] - adds r0, r4, 0x4 - b _080F143C -_080F1438: - adds r0, r4, 0 - adds r0, 0x13 -_080F143C: - bl sub_80F1290 - strb r0, [r4, 0x3] - b _080F14E2 -_080F1444: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x2] - b _080F14E2 -_080F1450: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x6] - b _080F14E2 -_080F145C: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0xB] - b _080F14E2 -_080F1468: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x9] - b _080F14E2 -_080F1474: - adds r0, r4, 0 - adds r0, 0x13 -_080F1478: - bl sub_80F1290 - strb r0, [r4, 0xE] - b _080F14E2 -_080F1480: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x11] - b _080F14E2 -_080F148C: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x8] - b _080F14E2 -_080F1498: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0xF] - adds r0, r4, 0x4 - bl sub_80F1290 - strb r0, [r4, 0x10] - b _080F14E2 -_080F14AC: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0xC] - b _080F14E2 -_080F14B8: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x5] - b _080F14E2 -_080F14C4: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x1B] - adds r0, r4, 0x4 - bl sub_80F1290 - strb r0, [r4, 0x1C] - b _080F14E2 -_080F14D8: - adds r0, r4, 0 - adds r0, 0x13 - bl sub_80F1290 - strb r0, [r4, 0x4] -_080F14E2: - adds r4, 0x24 - movs r1, 0xD8 - lsls r1, 2 - adds r0, r5, r1 - cmp r4, r0 - bcs _080F14F0 - b _080F12B6 -_080F14F0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F12A4 - - thumb_func_start sub_80F14F8 -sub_80F14F8: @ 80F14F8 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r5, 0 - movs r6, 0x17 -_080F1500: - ldrb r0, [r4] - cmp r0, 0x17 - beq _080F151C - cmp r0, 0x19 - bne _080F152C - ldrb r0, [r4, 0xA] - cmp r0, 0x58 - bls _080F152C - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x24 - bl memset - b _080F152C -_080F151C: - ldrb r0, [r4, 0x12] - cmp r0, 0x58 - bls _080F152C - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x24 - bl memset -_080F152C: - adds r4, 0x24 - adds r5, 0x24 - subs r6, 0x1 - cmp r6, 0 - bge _080F1500 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80F14F8 - - thumb_func_start sub_80F153C -sub_80F153C: @ 80F153C - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r1, =0x000027cd - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F155A - b _080F16E6 -_080F155A: - subs r1, 0x1 - adds r0, r2, r1 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x28 - bls _080F1568 - b _080F16E6 -_080F1568: - lsls r0, 2 - ldr r1, =_080F1584 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F1584: - .4byte _080F1628 - .4byte _080F162E - .4byte _080F1634 - .4byte _080F163A - .4byte _080F165E - .4byte _080F1646 - .4byte _080F164C - .4byte _080F1664 - .4byte _080F1670 - .4byte _080F166A - .4byte _080F16B8 - .4byte _080F16E2 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F16E6 - .4byte _080F1652 - .4byte _080F1658 - .4byte _080F1676 - .4byte _080F167C - .4byte _080F1682 - .4byte _080F1688 - .4byte _080F168E - .4byte _080F1694 - .4byte _080F169A - .4byte _080F16A0 - .4byte _080F16A6 - .4byte _080F16AC - .4byte _080F16B2 - .4byte _080F16BE - .4byte _080F16C4 - .4byte _080F16CA - .4byte _080F16D0 - .4byte _080F16D6 - .4byte _080F16DC - .4byte _080F16E6 - .4byte _080F1640 -_080F1628: - bl DoTVShowPokemonFanClubLetter - b _080F16E6 -_080F162E: - bl DoTVShowRecentHappenings - b _080F16E6 -_080F1634: - bl DoTVShowPokemonFanClubOpinions - b _080F16E6 -_080F163A: - bl DoTVShowDummiedOut - b _080F16E6 -_080F1640: - bl DoTVShowPokemonNewsMassOutbreak - b _080F16E6 -_080F1646: - bl DoTVShowBravoTrainerPokemonProfile - b _080F16E6 -_080F164C: - bl DoTVShowBravoTrainerBattleTower - b _080F16E6 -_080F1652: - bl DoTVShowPokemonTodaySuccessfulCapture - b _080F16E6 -_080F1658: - bl DoTVShowTodaysSmartShopper - b _080F16E6 -_080F165E: - bl DoTVShowTheNameRaterShow - b _080F16E6 -_080F1664: - bl DoTVShowPokemonContestLiveUpdates - b _080F16E6 -_080F166A: - bl DoTVShowPokemonBattleUpdate - b _080F16E6 -_080F1670: - bl DoTVShow3CheersForPokeblocks - b _080F16E6 -_080F1676: - bl DoTVShowPokemonTodayFailedCapture - b _080F16E6 -_080F167C: - bl DoTVShowPokemonAngler - b _080F16E6 -_080F1682: - bl DoTVShowTheWorldOfMasters - b _080F16E6 -_080F1688: - bl DoTVShowTodaysRivalTrainer - b _080F16E6 -_080F168E: - bl DoTVShowDewfordTrendWatcherNetwork - b _080F16E6 -_080F1694: - bl DoTVShowHoennTreasureInvestigators - b _080F16E6 -_080F169A: - bl DoTVShowFindThatGamer - b _080F16E6 -_080F16A0: - bl DoTVShowBreakingNewsTV - b _080F16E6 -_080F16A6: - bl DoTVShowSecretBaseVisit - b _080F16E6 -_080F16AC: - bl DoTVShowPokemonLotterWinnerFlashReport - b _080F16E6 -_080F16B2: - bl DoTVShowThePokemonBattleSeminar - b _080F16E6 -_080F16B8: - bl DoTVShowTrainerFanClubSpecial - b _080F16E6 -_080F16BE: - bl DoTVShowTrainerFanClub - b _080F16E6 -_080F16C4: - bl DoTVShowSpotTheCuties - b _080F16E6 -_080F16CA: - bl DoTVShowPokemonNewsBattleFrontier - b _080F16E6 -_080F16D0: - bl DoTVShowWhatsNo1InHoennToday - b _080F16E6 -_080F16D6: - bl DoTVShowSecretBaseSecrets - b _080F16E6 -_080F16DC: - bl DoTVShowSafariFanClub - b _080F16E6 -_080F16E2: - bl DoTVShowPokemonContestLiveUpdates2 -_080F16E6: - pop {r0} - bx r0 - thumb_func_end sub_80F153C - - thumb_func_start DoTVShowBravoTrainerPokemonProfile -DoTVShowBravoTrainerPokemonProfile: @ 80F16EC - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x8 - bls _080F1712 - b _080F1952 -_080F1712: - lsls r0, r5, 2 - ldr r1, =_080F1734 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F1734: - .4byte _080F1758 - .4byte _080F17B0 - .4byte _080F17E8 - .4byte _080F1818 - .4byte _080F184C - .4byte _080F1880 - .4byte _080F18C4 - .4byte _080F190C - .4byte _080F193C -_080F1758: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - ldrb r1, [r4, 0x13] - lsls r1, 27 - lsrs r1, 30 - movs r0, 0x2 - bl sub_80EF1BC - ldrh r1, [r4, 0x2] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - bl StringCompare - cmp r0, 0 - bne _080F17A4 - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - b _080F1950 - .pool -_080F17A4: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - b _080F1950 - .pool -_080F17B0: - ldr r0, =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0x8 - ldrb r2, [r4, 0x1F] - bl sub_81DB5E8 - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x2 - bl CopyContestCategoryToStringVar - b _080F194C - .pool -_080F17E8: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldrb r1, [r4, 0x13] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _080F180C - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - b _080F1950 - .pool -_080F180C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - b _080F1950 - .pool -_080F1818: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldrb r1, [r4, 0x13] - lsls r1, 25 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x2 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - b _080F1950 - .pool -_080F184C: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldrb r1, [r4, 0x13] - lsls r1, 25 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x2 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - b _080F1950 - .pool -_080F1880: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - ldrh r0, [r4, 0x14] - cmp r0, 0 - beq _080F18B8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - b _080F1950 - .pool -_080F18B8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - b _080F1950 - .pool -_080F18C4: - ldr r0, =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - b _080F1950 - .pool -_080F190C: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone - b _080F1952 - .pool -_080F193C: - ldr r0, =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy -_080F194C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 -_080F1950: - strb r0, [r1] -_080F1952: - ldr r0, =gUnknown_0858D204 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowBravoTrainerPokemonProfile - - thumb_func_start DoTVShowBravoTrainerBattleTower -DoTVShowBravoTrainerBattleTower: @ 80F1974 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0xE - bls _080F199C - b _080F1BEA -_080F199C: - lsls r0, r5, 2 - ldr r1, =_080F19C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F19C0: - .4byte _080F19FC - .4byte _080F1A40 - .4byte _080F1A90 - .4byte _080F1AB4 - .4byte _080F1AE0 - .4byte _080F1B28 - .4byte _080F1B38 - .4byte _080F1B48 - .4byte _080F1B4E - .4byte _080F1B4E - .4byte _080F1B4E - .4byte _080F1B68 - .4byte _080F1B94 - .4byte _080F1B94 - .4byte _080F1BCC -_080F19FC: - ldr r0, =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrh r0, [r4, 0x16] - cmp r0, 0x6 - bls _080F1A34 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F1BEA - .pool -_080F1A34: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F1BEA - .pool -_080F1A40: - ldrb r0, [r4, 0x1A] - cmp r0, 0x32 - bne _080F1A58 - ldr r0, =gStringVar1 - ldr r1, =gText_Lv50 - bl StringCopy - b _080F1A60 - .pool -_080F1A58: - ldr r0, =gStringVar1 - ldr r1, =gText_OpenLevel - bl StringCopy -_080F1A60: - ldrh r1, [r4, 0x16] - movs r0, 0x1 - bl sub_80EF340 - ldrb r0, [r4, 0x1C] - cmp r0, 0x1 - bne _080F1A84 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F1BEA - .pool -_080F1A84: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F1BEA - .pool -_080F1A90: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldrh r1, [r4, 0x16] - adds r1, 0x1 - movs r0, 0x1 - bl sub_80EF340 -_080F1AA6: - ldrb r0, [r4, 0x1B] - cmp r0, 0 - beq _080F1B02 - b _080F1B1C - .pool -_080F1AB4: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - b _080F1AA6 - .pool -_080F1AE0: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080F1B1C -_080F1B02: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F1BEA - .pool -_080F1B1C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F1BEA - .pool -_080F1B28: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1E] - b _080F1B54 - .pool -_080F1B38: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1E] - b _080F1B54 - .pool -_080F1B48: - movs r0, 0xB - strb r0, [r2] - b _080F1BEA -_080F1B4E: - ldr r0, =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] -_080F1B54: - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F1BEA - .pool -_080F1B68: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x18] - bl CopyEasyChatWord - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080F1B88 - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F1BEA - .pool -_080F1B88: - ldr r1, =gUnknown_0203A030 - movs r0, 0xD - strb r0, [r1] - b _080F1BEA - .pool -_080F1B94: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x18] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1E] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0xE - strb r0, [r1] - b _080F1BEA - .pool -_080F1BCC: - ldr r0, =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080F1BEA: - ldr r0, =gUnknown_0858D240 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowBravoTrainerBattleTower - - thumb_func_start DoTVShowTodaysSmartShopper -DoTVShowTodaysSmartShopper: @ 80F1C0C - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xC - bls _080F1C34 - b _080F1E2C -_080F1C34: - lsls r0, r6, 2 - ldr r1, =_080F1C58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F1C58: - .4byte _080F1C8C - .4byte _080F1CC8 - .4byte _080F1D10 - .4byte _080F1D22 - .4byte _080F1D10 - .4byte _080F1D10 - .4byte _080F1D4C - .4byte _080F1D7C - .4byte _080F1DAC - .4byte _080F1DB8 - .4byte _080F1DC6 - .4byte _080F1DD8 - .4byte _080F1E1C -_080F1C8C: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrb r1, [r5, 0x12] - movs r2, 0 - bl GetMapName - ldrh r0, [r5, 0xC] - cmp r0, 0xFE - bls _080F1CBC - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F1E2C - .pool -_080F1CBC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F1E2C - .pool -_080F1CC8: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - ldr r4, =gStringVar2 - ldrh r0, [r5, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0xC] - movs r0, 0x2 - bl sub_80EF340 - ldr r4, =gUnknown_0203A030 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080F1E2C - .pool -_080F1D10: - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _080F1D1C - movs r0, 0x6 - strb r0, [r2] - b _080F1E2C -_080F1D1C: - movs r0, 0xA - strb r0, [r2] - b _080F1E2C -_080F1D22: - ldrh r1, [r5, 0xC] - adds r1, 0x1 - movs r0, 0x2 - bl sub_80EF340 - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _080F1D40 - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F1E2C - .pool -_080F1D40: - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F1E2C - .pool -_080F1D4C: - ldr r4, =gStringVar2 - ldrh r0, [r5, 0x8] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0xE] - movs r0, 0x2 - bl sub_80EF340 - ldrh r0, [r5, 0xA] - cmp r0, 0 - beq _080F1D94 - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F1E2C - .pool -_080F1D7C: - ldr r4, =gStringVar2 - ldrh r0, [r5, 0xA] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80EF340 -_080F1D94: - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - beq _080F1DFA - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F1E2C - .pool -_080F1DAC: - ldrh r0, [r5, 0xC] - cmp r0, 0xFE - bls _080F1DD2 - movs r0, 0xC - strb r0, [r2] - b _080F1E2C -_080F1DB8: - movs r0, 0x1 - adds r1, r5, 0 - bl sub_80EF40C - bl TVShowDone - b _080F1E2C -_080F1DC6: - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080F1DD2 - movs r0, 0x8 - strb r0, [r2] - b _080F1E2C -_080F1DD2: - movs r0, 0x9 - strb r0, [r2] - b _080F1E2C -_080F1DD8: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - ldr r4, =gStringVar2 - ldrh r0, [r5, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080F1E10 -_080F1DFA: - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F1E2C - .pool -_080F1E10: - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F1E2C - .pool -_080F1E1C: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - bl TVShowDone -_080F1E2C: - ldr r0, =gUnknown_0858D1D0 - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowTodaysSmartShopper - - thumb_func_start DoTVShowTheNameRaterShow -DoTVShowTheNameRaterShow: @ 80F1E48 - push {r4-r6,lr} - sub sp, 0x8 - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0x12 - bls _080F1E72 - b _080F20FE -_080F1E72: - lsls r0, r6, 2 - ldr r1, =_080F1E94 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F1E94: - .4byte _080F1EE0 - .4byte _080F1F28 - .4byte _080F1F4A - .4byte _080F1F28 - .4byte _080F1F28 - .4byte _080F1F28 - .4byte _080F1F28 - .4byte _080F1F28 - .4byte _080F1F28 - .4byte _080F1F90 - .4byte _080F1F90 - .4byte _080F1F90 - .4byte _080F20EC - .4byte _080F1FCC - .4byte _080F200C - .4byte _080F202C - .4byte _080F2074 - .4byte _080F20A4 - .4byte _080F20F0 -_080F1EE0: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0xF - ldrb r2, [r5, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1F] - bl sub_81DB5E8 - ldr r4, =gUnknown_0203A030 - adds r0, r5, 0 - bl sub_80EFBA4 - adds r0, 0x1 - strb r0, [r4] - b _080F20FE - .pool -_080F1F28: - ldrb r0, [r5, 0x1A] - cmp r0, 0 - bne _080F1F34 - movs r0, 0x9 - strb r0, [r2] - b _080F20FE -_080F1F34: - cmp r0, 0x1 - bne _080F1F3E - movs r0, 0xA - strb r0, [r2] - b _080F20FE -_080F1F3E: - cmp r0, 0x2 - beq _080F1F44 - b _080F20FE -_080F1F44: - movs r0, 0xB - strb r0, [r2] - b _080F20FE -_080F1F4A: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0xF - ldrb r2, [r5, 0x1E] - bl sub_81DB5E8 - ldrb r0, [r5, 0x1A] - cmp r0, 0 - bne _080F1F6C - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F20FE - .pool -_080F1F6C: - cmp r0, 0x1 - bne _080F1F7C - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F20FE - .pool -_080F1F7C: - cmp r0, 0x2 - beq _080F1F82 - b _080F20FE -_080F1F82: - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F20FE - .pool -_080F1F90: - ldr r0, =gStringVar1 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1F] - bl sub_81DB5E8 - movs r4, 0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_80EFBDC - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - movs r3, 0x1 - bl sub_80EFBDC - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F20FE - .pool -_080F1FCC: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0xF - ldrb r2, [r5, 0x1E] - bl sub_81DB5E8 - movs r4, 0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_80EFBDC - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80EFBDC - ldr r1, =gUnknown_0203A030 - movs r0, 0xE - strb r0, [r1] - b _080F20FE - .pool -_080F200C: - movs r4, 0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80EFBDC - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0 - b _080F20D2 -_080F202C: - movs r0, 0 - str r0, [sp] - str r5, [sp, 0x4] - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80EFBDC - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrh r0, [r5, 0x2] - str r0, [sp] - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80EFBDC - ldr r1, =gUnknown_0203A030 - movs r0, 0x10 - strb r0, [r1] - b _080F20FE - .pool -_080F2074: - ldrh r0, [r5, 0x2] - str r0, [sp] - str r5, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl sub_80EFBDC - movs r0, 0 - str r0, [sp] - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80EFBDC - ldr r1, =gUnknown_0203A030 - movs r0, 0x11 - strb r0, [r1] - b _080F20FE - .pool -_080F20A4: - movs r0, 0 - str r0, [sp] - str r5, [sp, 0x4] - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80EFBDC - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x1C] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrh r0, [r5, 0x1C] - str r0, [sp] - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 -_080F20D2: - bl sub_80EFBDC - ldr r1, =gUnknown_0203A030 - movs r0, 0x12 - strb r0, [r1] - b _080F20FE - .pool -_080F20EC: - movs r6, 0x12 - strb r6, [r2] -_080F20F0: - ldr r0, =gStringVar1 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1F] - bl sub_81DB5E8 - bl TVShowDone -_080F20FE: - ldr r0, =gUnknown_0858D338 - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowTheNameRaterShow - - thumb_func_start DoTVShowPokemonTodaySuccessfulCapture -DoTVShowPokemonTodaySuccessfulCapture: @ 80F211C - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xB - bls _080F2144 - b _080F2358 -_080F2144: - lsls r0, r6, 2 - ldr r1, =_080F2168 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2168: - .4byte _080F2198 - .4byte _080F21EC - .4byte _080F21F2 - .4byte _080F222C - .4byte _080F2264 - .4byte _080F226A - .4byte _080F22A0 - .4byte _080F22F4 - .4byte _080F22F4 - .4byte _080F2324 - .4byte _080F2324 - .4byte _080F2354 -_080F2198: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - ldrb r0, [r5, 0xF] - cmp r0, 0x1 - bne _080F21E0 - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F2358 - .pool -_080F21E0: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F2358 - .pool -_080F21EC: - movs r0, 0x2 - strb r0, [r2] - b _080F2358 -_080F21F2: - ldr r4, =gStringVar2 - ldrb r0, [r5, 0xF] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5, 0x12] - movs r0, 0x2 - bl sub_80EF340 - ldrb r0, [r5, 0x12] - cmp r0, 0x3 - bhi _080F2220 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F2358 - .pool -_080F2220: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F2358 - .pool -_080F222C: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - b _080F2286 - .pool -_080F2264: - movs r0, 0x6 - strb r0, [r2] - b _080F2358 -_080F226A: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy -_080F2286: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F2358 - .pool -_080F22A0: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - ldr r4, =gUnknown_0203A030 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080F2358 - .pool -_080F22F4: - ldr r0, =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80EF9E8 - b _080F233E - .pool -_080F2324: - ldr r0, =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl sub_81DB5E8 -_080F233E: - ldr r0, =gUnknown_0203A030 - strb r4, [r0] - b _080F2358 - .pool -_080F2354: - bl TVShowDone -_080F2358: - ldr r0, =gUnknown_0858D1A0 - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonTodaySuccessfulCapture - - thumb_func_start DoTVShowPokemonTodayFailedCapture -DoTVShowPokemonTodayFailedCapture: @ 80F2370 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x6 - bls _080F2396 - b _080F24C0 -_080F2396: - lsls r0, r5, 2 - ldr r1, =_080F23B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F23B8: - .4byte _080F23D4 - .4byte _080F2408 - .4byte _080F245C - .4byte _080F245C - .4byte _080F24A0 - .4byte _080F24A0 - .4byte _080F24BC -_080F23D4: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F24C0 - .pool -_080F2408: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrb r1, [r4, 0x12] - movs r2, 0 - bl GetMapName - ldr r0, =gStringVar3 - ldrh r2, [r4, 0xE] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r4, 0x11] - cmp r0, 0x1 - bne _080F2450 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F24C0 - .pool -_080F2450: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F24C0 - .pool -_080F245C: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl sub_81DB5E8 - ldrb r1, [r4, 0x10] - movs r0, 0x1 - bl sub_80EF340 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _080F2494 - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F24C0 - .pool -_080F2494: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F24C0 - .pool -_080F24A0: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F24C0 - .pool -_080F24BC: - bl TVShowDone -_080F24C0: - ldr r0, =gUnknown_0858D394 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonTodayFailedCapture - - thumb_func_start DoTVShowPokemonFanClubLetter -DoTVShowPokemonFanClubLetter: @ 80F24D8 - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r7, [r0] - adds r6, r0, 0 - cmp r7, 0x33 - bls _080F2500 - b _080F26F0 -_080F2500: - lsls r0, r7, 2 - ldr r1, =_080F2524 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2524: - .4byte _080F25F4 - .4byte _080F2628 - .4byte _080F2654 - .4byte _080F265A - .4byte _080F2672 - .4byte _080F2672 - .4byte _080F2672 - .4byte _080F2684 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26F0 - .4byte _080F26A6 - .4byte _080F26CC -_080F25F4: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - ldrb r2, [r5, 0x18] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x32 - strb r0, [r1] - b _080F26F0 - .pool -_080F2628: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r2, r0, 0x1 - cmp r2, 0x1 - bne _080F2648 - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F26F0 - .pool -_080F2648: - ldr r1, =gUnknown_0203A030 - adds r0, r2, 0x2 - strb r0, [r1] - b _080F26F0 - .pool -_080F2654: - movs r0, 0x33 - strb r0, [r6] - b _080F26F0 -_080F265A: - bl Random - ldrb r4, [r6] - adds r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, r4 - strb r0, [r6] - b _080F26F0 -_080F2672: - adds r0, r5, 0 - bl sub_80EFB58 - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F26F0 - .pool -_080F2684: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - bl __umodsi3 - adds r0, 0x46 - lsls r0, 16 - lsrs r2, r0, 16 - movs r0, 0x2 - adds r1, r2, 0 - bl sub_80EF340 - bl TVShowDone - b _080F26F0 -_080F26A6: - ldr r4, =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl box_related_two__2 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F26FC - .pool -_080F26CC: - ldr r4, =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl box_related_two__2 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F26FC - .pool -_080F26F0: - ldr r0, =gUnknown_0858D150 - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 -_080F26FC: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonFanClubLetter - - thumb_func_start DoTVShowRecentHappenings -DoTVShowRecentHappenings: @ 80F2708 - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r6, [r0] - adds r7, r0, 0 - cmp r6, 0x32 - bls _080F2730 - b _080F288C -_080F2730: - lsls r0, r6, 2 - ldr r1, =_080F2754 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2754: - .4byte _080F2820 - .4byte _080F2844 - .4byte _080F285C - .4byte _080F285C - .4byte _080F285C - .4byte _080F2862 - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F288C - .4byte _080F2868 -_080F2820: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - ldrb r2, [r5, 0x18] - bl sub_81DB5E8 - adds r0, r5, 0 - bl sub_80EFB58 - ldr r1, =gUnknown_0203A030 - movs r0, 0x32 - strb r0, [r1] - b _080F288C - .pool -_080F2844: - bl Random - ldrb r4, [r7] - adds r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, r4 - strb r0, [r7] - b _080F288C -_080F285C: - movs r0, 0x5 - strb r0, [r7] - b _080F288C -_080F2862: - bl TVShowDone - b _080F288C -_080F2868: - ldr r4, =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl box_related_two__2 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F2898 - .pool -_080F288C: - ldr r0, =gUnknown_0858D170 - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 -_080F2898: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowRecentHappenings - - thumb_func_start DoTVShowPokemonFanClubOpinions -DoTVShowPokemonFanClubOpinions: @ 80F28A4 - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, =gUnknown_0203A030 - ldrb r5, [r6] - cmp r5, 0x3 - bgt _080F28E8 - cmp r5, 0x1 - bge _080F2930 - cmp r5, 0 - beq _080F28EE - b _080F297E - .pool -_080F28E8: - cmp r5, 0x4 - beq _080F2968 - b _080F297E -_080F28EE: - ldr r0, =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r4, 0 - adds r1, 0x10 - ldrb r2, [r4, 0xE] - bl sub_81DB5E8 - ldrb r0, [r4, 0x4] - lsrs r0, 4 - adds r0, 0x1 - strb r0, [r6] - b _080F297E - .pool -_080F2930: - ldr r0, =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x1C] - bl CopyEasyChatWord - movs r0, 0x4 - strb r0, [r6] - b _080F297E - .pool -_080F2968: - ldr r0, =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x1E] - bl CopyEasyChatWord - bl TVShowDone -_080F297E: - ldr r0, =gUnknown_0858D188 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonFanClubOpinions - - thumb_func_start DoTVShowDummiedOut -DoTVShowDummiedOut: @ 80F299C - bx lr - thumb_func_end DoTVShowDummiedOut - - thumb_func_start DoTVShowPokemonNewsMassOutbreak -DoTVShowPokemonNewsMassOutbreak: @ 80F29A0 - push {r4,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r4, [r2] - adds r4, r0 - ldr r0, =gStringVar1 - ldrb r1, [r4, 0x10] - movs r2, 0 - bl GetMapName - ldr r0, =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone - bl StartMassOutbreak - ldr r1, =gUnknown_0858D19C - ldr r0, =gUnknown_0203A030 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl box_related_two__2 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonNewsMassOutbreak - - thumb_func_start DoTVShowPokemonContestLiveUpdates -DoTVShowPokemonContestLiveUpdates: @ 80F2A10 - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x20 - bls _080F2A38 - b _080F311C -_080F2A38: - lsls r0, r7, 2 - ldr r1, =_080F2A5C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2A5C: - .4byte _080F2AE0 - .4byte _080F2B54 - .4byte _080F2BA2 - .4byte _080F2BC8 - .4byte _080F2BF4 - .4byte _080F2D2C - .4byte _080F2D40 - .4byte _080F2D54 - .4byte _080F2D68 - .4byte _080F2DE8 - .4byte _080F2DFC - .4byte _080F2E10 - .4byte _080F2E24 - .4byte _080F2E38 - .4byte _080F2E4C - .4byte _080F2ECC - .4byte _080F2EE0 - .4byte _080F2EF4 - .4byte _080F2F08 - .4byte _080F2F1C - .4byte _080F2F30 - .4byte _080F2F44 - .4byte _080F2F58 - .4byte _080F2F94 - .4byte _080F3064 - .4byte _080F3080 - .4byte _080F30E0 - .4byte _080F30E0 - .4byte _080F30A8 - .4byte _080F30AE - .4byte _080F30E0 - .4byte _080F30E0 - .4byte _080F30FC -_080F2AE0: - ldr r0, =gStringVar1 - ldrb r1, [r6, 0x1C] - bl sub_818E868 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r6, 0 - adds r1, 0x14 - ldrb r2, [r6, 0x1D] - bl sub_81DB5E8 - ldrb r0, [r6, 0xD] - ldrb r1, [r6, 0xE] - cmp r0, r1 - bne _080F2B38 - cmp r0, 0 - bne _080F2B2C - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F311C - .pool -_080F2B2C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F311C - .pool -_080F2B38: - cmp r0, r1 - bls _080F2B48 - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F311C - .pool -_080F2B48: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F311C - .pool -_080F2B54: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r6, 0xF] - cmp r1, 0x8 - bne _080F2B6C - b _080F2CF0 -_080F2B6C: - cmp r1, 0x8 - bgt _080F2B88 -_080F2B70: - cmp r1, 0x2 - bne _080F2B76 - b _080F2CD8 -_080F2B76: - cmp r1, 0x2 - bgt _080F2B7C - b _080F2C96 -_080F2B7C: - b _080F2CAC - .pool -_080F2B88: - cmp r1, 0x20 - bne _080F2B8E - b _080F2D08 -_080F2B8E: - cmp r1, 0x20 - bgt _080F2B94 - b _080F2CBA -_080F2B94: - cmp r1, 0x40 - bne _080F2B9A - b _080F2D14 -_080F2B9A: - cmp r1, 0x80 - beq _080F2BA0 - b _080F311C -_080F2BA0: - b _080F2D20 -_080F2BA2: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy -_080F2BB2: - ldrb r1, [r6, 0xF] - cmp r1, 0x8 - bne _080F2BBA - b _080F2CF0 -_080F2BBA: - cmp r1, 0x8 - ble _080F2B70 - b _080F2B88 - .pool -_080F2BC8: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - adds r1, r6, 0 - adds r1, 0x14 - ldrb r2, [r6, 0x1D] - bl sub_81DB5E8 - b _080F2BB2 - .pool -_080F2BF4: - ldrb r0, [r6, 0x1C] - cmp r0, 0x4 - bhi _080F2C74 - lsls r0, 2 - ldr r1, =_080F2C08 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2C08: - .4byte _080F2C1C - .4byte _080F2C30 - .4byte _080F2C44 - .4byte _080F2C58 - .4byte _080F2C6C -_080F2C1C: - ldr r0, =gStringVar1 - ldr r1, =gText_Cool - bl StringCopy - b _080F2C74 - .pool -_080F2C30: - ldr r0, =gStringVar1 - ldr r1, =gText_Beauty - bl StringCopy - b _080F2C74 - .pool -_080F2C44: - ldr r0, =gStringVar1 - ldr r1, =gText_Cute - bl StringCopy - b _080F2C74 - .pool -_080F2C58: - ldr r0, =gStringVar1 - ldr r1, =gText_Smart - bl StringCopy - b _080F2C74 - .pool -_080F2C6C: - ldr r0, =gStringVar1 - ldr r1, =gText_Tough - bl StringCopy -_080F2C74: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r6, 0xF] - cmp r1, 0x8 - beq _080F2CF0 - cmp r1, 0x8 - bgt _080F2CB2 - cmp r1, 0x2 - beq _080F2CD8 - cmp r1, 0x2 - bgt _080F2CAC -_080F2C96: - cmp r1, 0x1 - beq _080F2CCA - b _080F311C - .pool -_080F2CAC: - cmp r1, 0x4 - beq _080F2CE4 - b _080F311C -_080F2CB2: - cmp r1, 0x20 - beq _080F2D08 - cmp r1, 0x20 - bgt _080F2CC0 -_080F2CBA: - cmp r1, 0x10 - beq _080F2CFC - b _080F311C -_080F2CC0: - cmp r1, 0x40 - beq _080F2D14 - cmp r1, 0x80 - beq _080F2D20 - b _080F311C -_080F2CCA: - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F311C - .pool -_080F2CD8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F311C - .pool -_080F2CE4: - ldr r1, =gUnknown_0203A030 - movs r0, 0xE - strb r0, [r1] - b _080F311C - .pool -_080F2CF0: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F311C - .pool -_080F2CFC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F311C - .pool -_080F2D08: - ldr r1, =gUnknown_0203A030 - movs r0, 0x14 - strb r0, [r1] - b _080F311C - .pool -_080F2D14: - ldr r1, =gUnknown_0203A030 - movs r0, 0x15 - strb r0, [r1] - b _080F311C - .pool -_080F2D20: - ldr r1, =gUnknown_0203A030 - movs r0, 0x16 - strb r0, [r1] - b _080F311C - .pool -_080F2D2C: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2D40: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2D54: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2D68: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r6, 0x1C] - cmp r0, 0x4 - bls _080F2D80 - b _080F311C -_080F2D80: - lsls r0, 2 - ldr r1, =_080F2D98 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2D98: - .4byte _080F2DAC - .4byte _080F2DB8 - .4byte _080F2DC4 - .4byte _080F2DD0 - .4byte _080F2DDC -_080F2DAC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F311C - .pool -_080F2DB8: - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F311C - .pool -_080F2DC4: - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F311C - .pool -_080F2DD0: - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F311C - .pool -_080F2DDC: - ldr r1, =gUnknown_0203A030 - movs r0, 0xD - strb r0, [r1] - b _080F311C - .pool -_080F2DE8: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2DFC: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2E10: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2E24: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2E38: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2E4C: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r6, 0x1C] - cmp r0, 0x4 - bls _080F2E64 - b _080F311C -_080F2E64: - lsls r0, 2 - ldr r1, =_080F2E7C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F2E7C: - .4byte _080F2E90 - .4byte _080F2E9C - .4byte _080F2EA8 - .4byte _080F2EB4 - .4byte _080F2EC0 -_080F2E90: - ldr r1, =gUnknown_0203A030 - movs r0, 0xF - strb r0, [r1] - b _080F311C - .pool -_080F2E9C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x10 - strb r0, [r1] - b _080F311C - .pool -_080F2EA8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x11 - strb r0, [r1] - b _080F311C - .pool -_080F2EB4: - ldr r1, =gUnknown_0203A030 - movs r0, 0x12 - strb r0, [r1] - b _080F311C - .pool -_080F2EC0: - ldr r1, =gUnknown_0203A030 - movs r0, 0x13 - strb r0, [r1] - b _080F311C - .pool -_080F2ECC: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2EE0: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2EF4: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2F08: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2F1C: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2F30: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2F44: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - b _080F2F72 - .pool -_080F2F58: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r2, [r6, 0x10] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames -_080F2F72: - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x17 - strb r0, [r1] - b _080F311C - .pool -_080F2F94: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0x12] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - ldrh r1, [r6, 0x2] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldrb r0, [r6, 0xC] - cmp r0, 0x8 - beq _080F3028 - cmp r0, 0x8 - bgt _080F2FEA - cmp r0, 0x2 - beq _080F3010 - cmp r0, 0x2 - bgt _080F2FE4 - cmp r0, 0x1 - beq _080F3002 - b _080F311C - .pool -_080F2FE4: - cmp r0, 0x4 - beq _080F301C - b _080F311C -_080F2FEA: - cmp r0, 0x20 - beq _080F3040 - cmp r0, 0x20 - bgt _080F2FF8 - cmp r0, 0x10 - beq _080F3034 - b _080F311C -_080F2FF8: - cmp r0, 0x40 - beq _080F304C - cmp r0, 0x80 - beq _080F3058 - b _080F311C -_080F3002: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1F - strb r0, [r1] - b _080F311C - .pool -_080F3010: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1E - strb r0, [r1] - b _080F311C - .pool -_080F301C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1D - strb r0, [r1] - b _080F311C - .pool -_080F3028: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1C - strb r0, [r1] - b _080F311C - .pool -_080F3034: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1B - strb r0, [r1] - b _080F311C - .pool -_080F3040: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1A - strb r0, [r1] - b _080F311C - .pool -_080F304C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x19 - strb r0, [r1] - b _080F311C - .pool -_080F3058: - ldr r1, =gUnknown_0203A030 - movs r0, 0x18 - strb r0, [r1] - b _080F311C - .pool -_080F3064: - ldr r0, =gStringVar1 - ldrh r2, [r6, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - b _080F30EA - .pool -_080F3080: - ldr r0, =gStringVar1 - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1E] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - b _080F30EA - .pool -_080F30A8: - movs r0, 0x20 - strb r0, [r2] - b _080F311C -_080F30AE: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x14 - ldrb r2, [r6, 0x1D] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - b _080F30E2 - .pool -_080F30E0: - ldr r0, =gStringVar1 -_080F30E2: - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1E] - bl sub_81DB5E8 -_080F30EA: - ldr r1, =gUnknown_0203A030 - movs r0, 0x20 - strb r0, [r1] - b _080F311C - .pool -_080F30FC: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x14 - ldrb r2, [r6, 0x1D] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x12] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080F311C: - ldr r0, =gUnknown_0858D27C - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonContestLiveUpdates - - thumb_func_start DoTVShowPokemonBattleUpdate -DoTVShowPokemonBattleUpdate: @ 80F3140 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0x7 - bls _080F3168 - b _080F3362 -_080F3168: - lsls r0, r5, 2 - ldr r1, =_080F318C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F318C: - .4byte _080F31AC - .4byte _080F31CA - .4byte _080F321C - .4byte _080F3268 - .4byte _080F329C - .4byte _080F32C0 - .4byte _080F32EC - .4byte _080F3338 -_080F31AC: - ldrb r1, [r4, 0x18] - cmp r1, 0 - bge _080F31B4 - b _080F3362 -_080F31B4: - cmp r1, 0x1 - ble _080F31BE - cmp r1, 0x2 - beq _080F31C4 - b _080F3362 -_080F31BE: - movs r0, 0x1 - strb r0, [r2] - b _080F3362 -_080F31C4: - movs r0, 0x5 - strb r0, [r2] - b _080F3362 -_080F31CA: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x19] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1A] - bl sub_81DB5E8 - ldrb r0, [r4, 0x18] - cmp r0, 0 - bne _080F3200 - ldr r0, =gStringVar3 - ldr r1, =gText_Single - bl StringCopy - b _080F3208 - .pool -_080F3200: - ldr r0, =gStringVar3 - ldr r1, =gText_Double - bl StringCopy -_080F3208: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F3362 - .pool -_080F321C: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x19] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x16] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r2, [r4, 0x14] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F3362 - .pool -_080F3268: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1A] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F3362 - .pool -_080F329C: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x19] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1A] - bl sub_81DB5E8 - bl TVShowDone - b _080F3362 - .pool -_080F32C0: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x19] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1A] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F3362 - .pool -_080F32EC: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x19] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x16] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r2, [r4, 0x14] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F3362 - .pool -_080F3338: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x19] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1A] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080F3362: - ldr r0, =gUnknown_0858D300 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonBattleUpdate - - thumb_func_start DoTVShow3CheersForPokeblocks -DoTVShow3CheersForPokeblocks: @ 80F3388 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x5 - bls _080F33AE - b _080F3624 -_080F33AE: - lsls r0, r5, 2 - ldr r1, =_080F33D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F33D0: - .4byte _080F33E8 - .4byte _080F3418 - .4byte _080F3500 - .4byte _080F350C - .4byte _080F35F4 - .4byte _080F3620 -_080F33E8: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x14] - bl sub_81DB5E8 - ldrb r0, [r4, 0x2] - cmp r0, 0x14 - bls _080F340C - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F3624 - .pool -_080F340C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F3624 - .pool -_080F3418: - ldrb r0, [r4, 0x3] - lsls r0, 29 - lsrs r0, 29 - cmp r0, 0x4 - bhi _080F349C - lsls r0, 2 - ldr r1, =_080F3430 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F3430: - .4byte _080F3444 - .4byte _080F3458 - .4byte _080F346C - .4byte _080F3480 - .4byte _080F3494 -_080F3444: - ldr r0, =gStringVar1 - ldr r1, =gText_Spicy2 - bl StringCopy - b _080F349C - .pool -_080F3458: - ldr r0, =gStringVar1 - ldr r1, =gText_Dry2 - bl StringCopy - b _080F349C - .pool -_080F346C: - ldr r0, =gStringVar1 - ldr r1, =gText_Sweet2 - bl StringCopy - b _080F349C - .pool -_080F3480: - ldr r0, =gStringVar1 - ldr r1, =gText_Bitter2 - bl StringCopy - b _080F349C - .pool -_080F3494: - ldr r0, =gStringVar1 - ldr r1, =gText_Sour2 - bl StringCopy -_080F349C: - ldrb r0, [r4, 0x2] - cmp r0, 0x18 - bls _080F34BC - ldr r0, =gStringVar2 - ldr r1, =gText_Excellent - bl StringCopy - b _080F34DC - .pool -_080F34BC: - cmp r0, 0x16 - bls _080F34D4 - ldr r0, =gStringVar2 - ldr r1, =gText_VeryGood - bl StringCopy - b _080F34DC - .pool -_080F34D4: - ldr r0, =gStringVar2 - ldr r1, =gText_Good - bl StringCopy -_080F34DC: - ldr r0, =gStringVar3 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x14] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F3624 - .pool -_080F3500: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x15] - b _080F3606 - .pool -_080F350C: - ldrb r0, [r4, 0x3] - lsls r0, 29 - lsrs r0, 29 - cmp r0, 0x4 - bhi _080F3590 - lsls r0, 2 - ldr r1, =_080F3524 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F3524: - .4byte _080F3538 - .4byte _080F354C - .4byte _080F3560 - .4byte _080F3574 - .4byte _080F3588 -_080F3538: - ldr r0, =gStringVar1 - ldr r1, =gText_Spicy2 - bl StringCopy - b _080F3590 - .pool -_080F354C: - ldr r0, =gStringVar1 - ldr r1, =gText_Dry2 - bl StringCopy - b _080F3590 - .pool -_080F3560: - ldr r0, =gStringVar1 - ldr r1, =gText_Sweet2 - bl StringCopy - b _080F3590 - .pool -_080F3574: - ldr r0, =gStringVar1 - ldr r1, =gText_Bitter2 - bl StringCopy - b _080F3590 - .pool -_080F3588: - ldr r0, =gStringVar1 - ldr r1, =gText_Sour2 - bl StringCopy -_080F3590: - ldrb r0, [r4, 0x2] - cmp r0, 0x10 - bls _080F35B0 - ldr r0, =gStringVar2 - ldr r1, =gText_SoSo - bl StringCopy - b _080F35D0 - .pool -_080F35B0: - cmp r0, 0xD - bls _080F35C8 - ldr r0, =gStringVar2 - ldr r1, =gText_Bad - bl StringCopy - b _080F35D0 - .pool -_080F35C8: - ldr r0, =gStringVar2 - ldr r1, =gText_TheWorst - bl StringCopy -_080F35D0: - ldr r0, =gStringVar3 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x14] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F3624 - .pool -_080F35F4: - ldr r0, =gStringVar1 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x15] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x14] -_080F3606: - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F3624 - .pool -_080F3620: - bl TVShowDone -_080F3624: - ldr r0, =gUnknown_0858D228 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShow3CheersForPokeblocks - - thumb_func_start DoTVShowInSearchOfTrainers -DoTVShowInSearchOfTrainers: @ 80F363C - push {r4-r7,lr} - ldr r0, =gScriptResult - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_0203A030 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x8 - bls _080F3650 - b _080F37EA -_080F3650: - lsls r0, r7, 2 - ldr r1, =_080F3668 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F3668: - .4byte _080F368C - .4byte _080F36D4 - .4byte _080F36DA - .4byte _080F372C - .4byte _080F379C - .4byte _080F379C - .4byte _080F379C - .4byte _080F379C - .4byte _080F37A2 -_080F368C: - ldr r0, =gStringVar1 - ldr r4, =gSaveBlock1Ptr - ldr r1, [r4] - ldr r2, =0x00002bac - adds r1, r2 - ldrb r1, [r1] - movs r2, 0 - bl GetMapName - ldr r0, [r4] - ldr r1, =0x00002bad - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bls _080F36C8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F37EA - .pool -_080F36C8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F37EA - .pool -_080F36D4: - movs r0, 0x2 - strb r0, [r2] - b _080F37EA -_080F36DA: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002bae - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080F36FC - movs r0, 0x4 - strb r0, [r2] - b _080F37EA - .pool -_080F36FC: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080F370A - movs r0, 0x5 - strb r0, [r2] - b _080F37EA -_080F370A: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080F3718 - movs r0, 0x6 - strb r0, [r2] - b _080F37EA -_080F3718: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F3726 - movs r0, 0x7 - strb r0, [r2] - b _080F37EA -_080F3726: - movs r0, 0x3 - strb r0, [r2] - b _080F37EA -_080F372C: - ldr r0, =gStringVar1 - ldr r4, =gSaveBlock1Ptr - ldr r1, [r4] - ldr r2, =0x00002ba4 - adds r1, r2 - ldrh r1, [r1] - movs r6, 0xB - muls r1, r6 - ldr r5, =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, =gStringVar2 - ldr r1, [r4] - ldr r2, =0x00002ba8 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldr r1, [r4] - ldr r2, =0x00002ba6 - adds r1, r2 - ldrh r1, [r1] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F37EA - .pool -_080F379C: - movs r0, 0x8 - strb r0, [r2] - b _080F37EA -_080F37A2: - ldr r0, =gStringVar1 - ldr r4, =gSaveBlock1Ptr - ldr r1, [r4] - ldr r2, =0x00002baa - adds r1, r2 - ldrh r1, [r1] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - ldr r1, [r4] - ldr r2, =0x00002ba4 - adds r1, r2 - ldrh r1, [r1] - movs r6, 0xB - muls r1, r6 - ldr r5, =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, =gStringVar3 - ldr r1, [r4] - ldr r2, =0x00002ba6 - adds r1, r2 - ldrh r1, [r1] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldr r1, =gScriptResult - movs r0, 0x1 - strh r0, [r1] - ldr r1, =gUnknown_0203A030 - movs r0, 0 - strb r0, [r1] - bl TakeTVShowInSearchOfTrainersOffTheAir -_080F37EA: - ldr r0, =gUnknown_0858D66C - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowInSearchOfTrainers - - thumb_func_start DoTVShowPokemonAngler -DoTVShowPokemonAngler: @ 80F3828 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r0, =gScriptResult - movs r1, 0 - strh r1, [r0] - ldrb r0, [r4, 0x2] - ldrb r2, [r4, 0x3] - cmp r0, r2 - bcs _080F3868 - ldr r0, =gUnknown_0203A030 - strb r1, [r0] - b _080F3870 - .pool -_080F3868: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - adds r0, r1, 0 -_080F3870: - ldrb r5, [r0] - cmp r5, 0 - beq _080F3880 - cmp r5, 0x1 - beq _080F38B8 - b _080F38E0 - .pool -_080F3880: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x6] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r4, 0x3] - movs r0, 0x2 - bl sub_80EF340 - bl TVShowDone - b _080F38E0 - .pool -_080F38B8: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x6] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80EF340 - bl TVShowDone -_080F38E0: - ldr r0, =gUnknown_0858D3B0 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonAngler - - thumb_func_start DoTVShowTheWorldOfMasters -DoTVShowTheWorldOfMasters: @ 80F3904 - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, =gUnknown_0203A030 - ldrb r5, [r6] - cmp r5, 0x1 - beq _080F3974 - cmp r5, 0x1 - bgt _080F3948 - cmp r5, 0 - beq _080F394E - b _080F39BE - .pool -_080F3948: - cmp r5, 0x2 - beq _080F3994 - b _080F39BE -_080F394E: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xB] - bl sub_81DB5E8 - ldrh r1, [r4, 0x6] - movs r0, 0x1 - bl sub_80EF340 - ldrh r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80EF340 - movs r0, 0x1 - strb r0, [r6] - b _080F39BE - .pool -_080F3974: - ldr r0, =gStringVar1 - ldrh r2, [r4, 0x8] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - movs r0, 0x2 - strb r0, [r6] - b _080F39BE - .pool -_080F3994: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xB] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrb r1, [r4, 0xA] - movs r2, 0 - bl GetMapName - ldr r0, =gStringVar3 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080F39BE: - ldr r0, =gUnknown_0858D3B8 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowTheWorldOfMasters - - thumb_func_start DoTVShowTodaysRivalTrainer -DoTVShowTodaysRivalTrainer: @ 80F39E4 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0xA - bls _080F3A0C - b _080F3BE8 -_080F3A0C: - lsls r0, r5, 2 - ldr r1, =_080F3A30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F3A30: - .4byte _080F3A5C - .4byte _080F3B30 - .4byte _080F3B58 - .4byte _080F3B90 - .4byte _080F3BA2 - .4byte _080F3BC4 - .4byte _080F3BD8 - .4byte _080F3A92 - .4byte _080F3AC0 - .4byte _080F3ADC - .4byte _080F3AF8 -_080F3A5C: - ldrb r0, [r4, 0x7] - cmp r0, 0x56 - beq _080F3A6C - cmp r0, 0x57 - beq _080F3A72 - movs r0, 0x7 - strb r0, [r2] - b _080F3BE8 -_080F3A6C: - movs r0, 0x8 - strb r0, [r2] - b _080F3BE8 -_080F3A72: - ldrh r1, [r4, 0xA] - ldr r0, =0x00000117 - cmp r1, r0 - bgt _080F3A8C - subs r0, 0x2 - cmp r1, r0 - blt _080F3A8C - movs r0, 0xA - strb r0, [r2] - b _080F3BE8 - .pool -_080F3A8C: - movs r0, 0x9 - strb r0, [r2] - b _080F3BE8 -_080F3A92: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xC] - bl sub_81DB5E8 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldr r0, =gStringVar3 - ldrb r1, [r4, 0x7] - movs r2, 0 - bl GetMapName -_080F3AB0: - ldrb r0, [r4, 0x4] - cmp r0, 0 - bne _080F3B12 - b _080F3B24 - .pool -_080F3AC0: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xC] - bl sub_81DB5E8 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - b _080F3AB0 - .pool -_080F3ADC: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xC] - bl sub_81DB5E8 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - b _080F3AB0 - .pool -_080F3AF8: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xC] - bl sub_81DB5E8 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _080F3B24 -_080F3B12: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F3BE8 - .pool -_080F3B24: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F3BE8 - .pool -_080F3B30: - ldrb r1, [r4, 0x4] - movs r0, 0 - bl sub_80EF340 - ldr r0, =0x000008a8 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080F3BCC - ldr r0, [r4, 0x4] - ldr r1, =0x00ffff00 - ands r0, r1 - cmp r0, 0 - bne _080F3B6E - b _080F3B84 - .pool -_080F3B58: - ldr r0, =0x000008a8 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080F3BCC - ldr r0, [r4, 0x4] - ldr r1, =0x00ffff00 - ands r0, r1 - cmp r0, 0 - beq _080F3B84 -_080F3B6E: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F3BE8 - .pool -_080F3B84: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F3BE8 - .pool -_080F3B90: - ldrh r0, [r4, 0x8] - cmp r0, 0 - bne _080F3B9C - movs r0, 0x6 - strb r0, [r2] - b _080F3BE8 -_080F3B9C: - movs r0, 0x5 - strb r0, [r2] - b _080F3BE8 -_080F3BA2: - ldrb r1, [r4, 0x6] - movs r0, 0 - bl sub_80EF340 - ldrb r1, [r4, 0x5] - movs r0, 0x1 - bl sub_80EF340 - ldrh r0, [r4, 0x8] - cmp r0, 0 - beq _080F3BCC - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F3BE8 - .pool -_080F3BC4: - ldrh r1, [r4, 0x8] - movs r0, 0 - bl sub_80EF340 -_080F3BCC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F3BE8 - .pool -_080F3BD8: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xC] - bl sub_81DB5E8 - bl TVShowDone -_080F3BE8: - ldr r0, =gUnknown_0858D3C4 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowTodaysRivalTrainer - - thumb_func_start DoTVShowDewfordTrendWatcherNetwork -DoTVShowDewfordTrendWatcherNetwork: @ 80F3C04 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x6 - bls _080F3C2A - b _080F3D54 -_080F3C2A: - lsls r0, r5, 2 - ldr r1, =_080F3C4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F3C4C: - .4byte _080F3C68 - .4byte _080F3CA0 - .4byte _080F3CA0 - .4byte _080F3CD4 - .4byte _080F3D0C - .4byte _080F3D0C - .4byte _080F3D40 -_080F3C68: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - ldrb r0, [r4, 0x8] - cmp r0, 0 - bne _080F3C94 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F3D54 - .pool -_080F3C94: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F3D54 - .pool -_080F3CA0: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - ldr r0, =gStringVar3 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x9] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F3D54 - .pool -_080F3CD4: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - ldrb r0, [r4, 0x8] - cmp r0, 0 - bne _080F3D00 - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F3D54 - .pool -_080F3D00: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F3D54 - .pool -_080F3D0C: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - ldr r0, =gStringVar3 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x9] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F3D54 - .pool -_080F3D40: - ldr r0, =gStringVar1 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - bl TVShowDone -_080F3D54: - ldr r0, =gUnknown_0858D3F0 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowDewfordTrendWatcherNetwork - - thumb_func_start DoTVShowHoennTreasureInvestigators -DoTVShowHoennTreasureInvestigators: @ 80F3D74 - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r7, =gUnknown_0203A030 - ldrb r6, [r7] - cmp r6, 0x1 - beq _080F3E02 - cmp r6, 0x1 - bgt _080F3DB8 - cmp r6, 0 - beq _080F3DBE - b _080F3E5C - .pool -_080F3DB8: - cmp r6, 0x2 - beq _080F3E3C - b _080F3E5C -_080F3DBE: - ldr r4, =gStringVar1 - ldrh r0, [r5, 0x2] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5, 0x4] - cmp r0, 0x57 - bne _080F3DFC - ldrh r1, [r5, 0x6] - ldr r0, =0x00000117 - cmp r1, r0 - bgt _080F3DF0 - subs r0, 0x2 - cmp r1, r0 - blt _080F3DF0 - movs r0, 0x2 - strb r0, [r7] - b _080F3E5C - .pool -_080F3DF0: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F3E5C - .pool -_080F3DFC: - movs r0, 0x1 - strb r0, [r7] - b _080F3E5C -_080F3E02: - ldr r4, =gStringVar1 - ldrh r0, [r5, 0x2] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x5] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - ldrb r1, [r5, 0x4] - movs r2, 0 - bl GetMapName - bl TVShowDone - b _080F3E5C - .pool -_080F3E3C: - ldr r4, =gStringVar1 - ldrh r0, [r5, 0x2] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x5] - bl sub_81DB5E8 - bl TVShowDone -_080F3E5C: - ldr r0, =gUnknown_0858D40C - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowHoennTreasureInvestigators - - thumb_func_start DoTVShowFindThatGamer -DoTVShowFindThatGamer: @ 80F3E7C - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x1 - beq _080F3F28 - cmp r5, 0x1 - bgt _080F3EC0 - cmp r5, 0 - beq _080F3ECC - b _080F4008 - .pool -_080F3EC0: - cmp r5, 0x2 - beq _080F3F78 - cmp r5, 0x3 - bne _080F3ECA - b _080F3FCC -_080F3ECA: - b _080F4008 -_080F3ECC: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x8] - bl sub_81DB5E8 - ldrb r0, [r4, 0x3] - cmp r0, 0 - beq _080F3EE8 - cmp r0, 0x1 - beq _080F3EFC - b _080F3F04 - .pool -_080F3EE8: - ldr r0, =gStringVar2 - ldr r1, =gText_Slots - bl StringCopy - b _080F3F04 - .pool -_080F3EFC: - ldr r0, =gStringVar2 - ldr r1, =gText_Roulette - bl StringCopy -_080F3F04: - ldrb r1, [r4, 0x2] - cmp r1, 0x1 - bne _080F3F1C - ldr r0, =gUnknown_0203A030 - strb r1, [r0] - b _080F4008 - .pool -_080F3F1C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F4008 - .pool -_080F3F28: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x8] - bl sub_81DB5E8 - ldrb r0, [r4, 0x3] - cmp r0, 0 - beq _080F3F44 - cmp r0, 0x1 - beq _080F3F58 - b _080F3F60 - .pool -_080F3F44: - ldr r0, =gStringVar2 - ldr r1, =gText_Slots - bl StringCopy - b _080F3F60 - .pool -_080F3F58: - ldr r0, =gStringVar2 - ldr r1, =gText_Roulette - bl StringCopy -_080F3F60: - ldrh r1, [r4, 0x4] - movs r0, 0x2 - bl sub_80EF340 - bl TVShowDone - b _080F4008 - .pool -_080F3F78: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x8] - bl sub_81DB5E8 - ldrb r0, [r4, 0x3] - cmp r0, 0 - beq _080F3F94 - cmp r0, 0x1 - beq _080F3FA8 - b _080F3FB0 - .pool -_080F3F94: - ldr r0, =gStringVar2 - ldr r1, =gText_Slots - bl StringCopy - b _080F3FB0 - .pool -_080F3FA8: - ldr r0, =gStringVar2 - ldr r1, =gText_Roulette - bl StringCopy -_080F3FB0: - ldrh r1, [r4, 0x4] - movs r0, 0x2 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F4008 - .pool -_080F3FCC: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x8] - bl sub_81DB5E8 - ldrb r1, [r4, 0x3] - cmp r1, 0 - beq _080F3FE8 - cmp r1, 0x1 - beq _080F3FFC - b _080F4004 - .pool -_080F3FE8: - ldr r0, =gStringVar2 - ldr r1, =gText_Roulette - bl StringCopy - b _080F4004 - .pool -_080F3FFC: - ldr r0, =gStringVar2 - ldr r1, =gText_Slots - bl StringCopy -_080F4004: - bl TVShowDone -_080F4008: - ldr r0, =gUnknown_0858D418 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowFindThatGamer - - thumb_func_start DoTVShowBreakingNewsTV -DoTVShowBreakingNewsTV: @ 80F4028 - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0xC - bls _080F4050 - b _080F4344 -_080F4050: - lsls r0, r7, 2 - ldr r1, =_080F4074 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4074: - .4byte _080F40A8 - .4byte _080F40BA - .4byte _080F40FC - .4byte _080F4140 - .4byte _080F4168 - .4byte _080F418C - .4byte _080F41D0 - .4byte _080F4254 - .4byte _080F42C8 - .4byte _080F42F4 - .4byte _080F42F4 - .4byte _080F4334 - .4byte _080F4284 -_080F40A8: - ldrb r0, [r6, 0x5] - cmp r0, 0 - bne _080F40B4 - movs r0, 0x1 - strb r0, [r2] - b _080F4344 -_080F40B4: - movs r0, 0x5 - strb r0, [r2] - b _080F4344 -_080F40BA: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrb r1, [r6, 0x4] - movs r2, 0 - bl GetMapName - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F4344 - .pool -_080F40FC: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x2] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0xA] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F4344 - .pool -_080F4140: - ldrh r1, [r6, 0x8] - movs r0, 0 - bl sub_80EF340 - ldr r4, =gStringVar2 - ldrh r0, [r6, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F4344 - .pool -_080F4168: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrb r1, [r6, 0x4] - movs r2, 0 - bl GetMapName - bl TVShowDone - b _080F4344 - .pool -_080F418C: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrb r1, [r6, 0x4] - movs r2, 0 - bl GetMapName - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F4344 - .pool -_080F41D0: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x2] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0xA] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldrb r0, [r6, 0x5] - cmp r0, 0x2 - beq _080F423C - cmp r0, 0x2 - bgt _080F4218 - cmp r0, 0x1 - beq _080F421E - b _080F4344 - .pool -_080F4218: - cmp r0, 0x3 - beq _080F4248 - b _080F4344 -_080F421E: - ldrh r0, [r6, 0xC] - cmp r0, 0 - bne _080F4230 - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F4344 - .pool -_080F4230: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F4344 - .pool -_080F423C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F4344 - .pool -_080F4248: - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F4344 - .pool -_080F4254: - ldr r0, =gStringVar1 - ldrh r2, [r6, 0xC] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r2, [r6, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - b _080F42A8 - .pool -_080F4284: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x2] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0xA] - muls r1, r5 - adds r1, r4 -_080F42A8: - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F4344 - .pool -_080F42C8: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrb r1, [r6, 0x4] - movs r2, 0 - bl GetMapName - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F4344 - .pool -_080F42F4: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x2] - movs r4, 0xB - muls r1, r4 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrb r1, [r6, 0x4] - movs r2, 0 - bl GetMapName - ldr r0, =gUnknown_0203A030 - strb r4, [r0] - b _080F4344 - .pool -_080F4334: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xE] - bl sub_81DB5E8 - bl TVShowDone -_080F4344: - ldr r0, =gUnknown_0858D428 - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowBreakingNewsTV - - thumb_func_start DoTVShowSecretBaseVisit -DoTVShowSecretBaseVisit: @ 80F4360 - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xD - bls _080F4388 - b _080F4588 -_080F4388: - lsls r0, r6, 2 - ldr r1, =_080F43AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F43AC: - .4byte _080F43E4 - .4byte _080F4414 - .4byte _080F44E4 - .4byte _080F4448 - .4byte _080F44E4 - .4byte _080F449C - .4byte _080F44C0 - .4byte _080F44E4 - .4byte _080F44EA - .4byte _080F4538 - .4byte _080F4538 - .4byte _080F4538 - .4byte _080F4538 - .4byte _080F4584 -_080F43E4: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0xC] - bl sub_81DB5E8 - ldrb r0, [r5, 0x3] - cmp r0, 0 - bne _080F4408 - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F4588 - .pool -_080F4408: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F4588 - .pool -_080F4414: - ldr r0, =gStringVar2 - ldrb r1, [r5, 0x4] - lsls r1, 5 - ldr r2, =gDecorations + 1 - adds r1, r2 - bl StringCopy - ldrb r0, [r5, 0x3] - cmp r0, 0x1 - bne _080F443C - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F4588 - .pool -_080F443C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F4588 - .pool -_080F4448: - ldr r0, =gStringVar2 - ldrb r1, [r5, 0x5] - lsls r1, 5 - ldr r2, =gDecorations + 1 - adds r1, r2 - bl StringCopy - ldrb r1, [r5, 0x3] - cmp r1, 0x3 - beq _080F4484 - cmp r1, 0x3 - bgt _080F4470 - cmp r1, 0x2 - beq _080F4476 - b _080F4588 - .pool -_080F4470: - cmp r1, 0x4 - beq _080F4490 - b _080F4588 -_080F4476: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F4588 - .pool -_080F4484: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F4588 - .pool -_080F4490: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F4588 - .pool -_080F449C: - ldr r0, =gStringVar2 - ldrb r1, [r5, 0x6] - lsls r1, 5 - ldr r4, =gDecorations + 1 - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrb r1, [r5, 0x7] - lsls r1, 5 - adds r1, r4 - b _080F44CA - .pool -_080F44C0: - ldr r0, =gStringVar2 - ldrb r1, [r5, 0x6] - lsls r1, 5 - ldr r2, =gDecorations + 1 - adds r1, r2 -_080F44CA: - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F4588 - .pool -_080F44E4: - movs r0, 0x8 - strb r0, [r2] - b _080F4588 -_080F44EA: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0xC] - bl sub_81DB5E8 - ldrb r1, [r5, 0x2] - cmp r1, 0x18 - bhi _080F450C - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F4588 - .pool -_080F450C: - cmp r1, 0x31 - bhi _080F451C - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F4588 - .pool -_080F451C: - cmp r1, 0x45 - bhi _080F452C - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F4588 - .pool -_080F452C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F4588 - .pool -_080F4538: - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0xC] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r5, 0x8] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r5, 0xA] - movs r4, 0xD - muls r1, r4 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, =gUnknown_0203A030 - strb r4, [r0] - b _080F4588 - .pool -_080F4584: - bl TVShowDone -_080F4588: - ldr r0, =gUnknown_0858D45C - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowSecretBaseVisit - - thumb_func_start DoTVShowPokemonLotterWinnerFlashReport -DoTVShowPokemonLotterWinnerFlashReport: @ 80F45A0 - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r6, [r0] - ldr r0, =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x5] - bl sub_81DB5E8 - ldrb r0, [r5, 0x4] - cmp r0, 0 - bne _080F45FC - ldr r0, =gStringVar2 - ldr r1, =gText_Jackpot - bl StringCopy - b _080F4634 - .pool -_080F45FC: - cmp r0, 0x1 - bne _080F4614 - ldr r0, =gStringVar2 - ldr r1, =gText_First - bl StringCopy - b _080F4634 - .pool -_080F4614: - cmp r0, 0x2 - bne _080F462C - ldr r0, =gStringVar2 - ldr r1, =gText_Second - bl StringCopy - b _080F4634 - .pool -_080F462C: - ldr r0, =gStringVar2 - ldr r1, =gText_Third - bl StringCopy -_080F4634: - ldr r4, =gStringVar3 - ldrh r0, [r5, 0x2] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - bl TVShowDone - ldr r1, =gUnknown_0858D494 - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonLotterWinnerFlashReport - - thumb_func_start DoTVShowThePokemonBattleSeminar -DoTVShowThePokemonBattleSeminar: @ 80F466C - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r7, [r0] - cmp r7, 0x6 - bls _080F4692 - b _080F4858 -_080F4692: - lsls r0, r7, 2 - ldr r1, =_080F46B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F46B4: - .4byte _080F46D0 - .4byte _080F4714 - .4byte _080F4760 - .4byte _080F47B4 - .4byte _080F47EC - .4byte _080F4814 - .4byte _080F4838 -_080F46D0: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0x11] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x6] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0x4] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F4858 - .pool -_080F4714: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0x11] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r2, [r6, 0x2] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F4858 - .pool -_080F4760: - ldr r0, =gStringVar1 - ldrh r2, [r6, 0x6] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r6, 0x10] - cmp r1, 0x2 - beq _080F479C - cmp r1, 0x2 - bgt _080F4788 - cmp r1, 0x1 - beq _080F478E - b _080F4824 - .pool -_080F4788: - cmp r1, 0x3 - beq _080F47A8 - b _080F4824 -_080F478E: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F4858 - .pool -_080F479C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F4858 - .pool -_080F47A8: - ldr r0, =gUnknown_0203A030 - strb r1, [r0] - b _080F4858 - .pool -_080F47B4: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0x8] - movs r5, 0xD - muls r1, r5 - ldr r4, =gMoveNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r6, 0xA] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0xC] - muls r1, r5 - adds r1, r4 - b _080F4820 - .pool -_080F47EC: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0x8] - movs r5, 0xD - muls r1, r5 - ldr r4, =gMoveNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r6, 0xA] - muls r1, r5 - adds r1, r4 - b _080F4820 - .pool -_080F4814: - ldr r0, =gStringVar2 - ldrh r2, [r6, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, =gMoveNames - adds r1, r2 -_080F4820: - bl StringCopy -_080F4824: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F4858 - .pool -_080F4838: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0xE] - movs r5, 0xD - muls r1, r5 - ldr r4, =gMoveNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x2] - muls r1, r5 - adds r1, r4 - bl StringCopy - bl TVShowDone -_080F4858: - ldr r0, =gUnknown_0858D498 - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowThePokemonBattleSeminar - - thumb_func_start DoTVShowTrainerFanClubSpecial -DoTVShowTrainerFanClubSpecial: @ 80F487C - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x5 - bls _080F48A2 - b _080F499A -_080F48A2: - lsls r0, r5, 2 - ldr r1, =_080F48C4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F48C4: - .4byte _080F48DC - .4byte _080F4944 - .4byte _080F4944 - .4byte _080F4944 - .4byte _080F4944 - .4byte _080F4978 -_080F48DC: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x18] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x17] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x14] - bl CopyEasyChatWord - ldrb r1, [r4, 0x16] - cmp r1, 0x59 - bls _080F4918 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F499A - .pool -_080F4918: - cmp r1, 0x45 - bls _080F4928 - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F499A - .pool -_080F4928: - cmp r1, 0x1D - bls _080F4938 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F499A - .pool -_080F4938: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F499A - .pool -_080F4944: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x18] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x17] - bl sub_81DB5E8 - ldrb r1, [r4, 0x16] - movs r0, 0x2 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F499A - .pool -_080F4978: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x18] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x17] - bl sub_81DB5E8 - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x14] - bl CopyEasyChatWord - bl TVShowDone -_080F499A: - ldr r0, =gUnknown_0858D320 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowTrainerFanClubSpecial - - thumb_func_start DoTVShowTrainerFanClub -DoTVShowTrainerFanClub: @ 80F49BC - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0xB - bls _080F49E4 - b _080F4B3A -_080F49E4: - lsls r0, r5, 2 - ldr r1, =_080F4A08 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4A08: - .4byte _080F4A38 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B14 - .4byte _080F4B1A -_080F4A38: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x8] - bl sub_81DB5E8 - adds r0, r4, 0 - adds r0, 0x23 - ldrb r0, [r0] - lsls r0, 8 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - adds r0, r1 - movs r1, 0xA - bl __umodsi3 - cmp r0, 0x9 - bls _080F4A60 - b _080F4B3A -_080F4A60: - lsls r0, 2 - ldr r1, =_080F4A74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4A74: - .4byte _080F4A9C - .4byte _080F4AA8 - .4byte _080F4AB4 - .4byte _080F4AC0 - .4byte _080F4ACC - .4byte _080F4AD8 - .4byte _080F4AE4 - .4byte _080F4AF0 - .4byte _080F4AFC - .4byte _080F4B08 -_080F4A9C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AA8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AB4: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AC0: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F4B3A - .pool -_080F4ACC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AD8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AE4: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AF0: - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F4B3A - .pool -_080F4AFC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F4B3A - .pool -_080F4B08: - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F4B3A - .pool -_080F4B14: - movs r0, 0xB - strb r0, [r2] - b _080F4B3A -_080F4B1A: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x8] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - ldrh r1, [r4, 0x4] - bl CopyEasyChatWord - ldr r0, =gStringVar3 - ldrh r1, [r4, 0x6] - bl CopyEasyChatWord - bl TVShowDone -_080F4B3A: - ldr r0, =gUnknown_0858D4B4 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowTrainerFanClub - - thumb_func_start DoTVShowSpotTheCuties -DoTVShowSpotTheCuties: @ 80F4B5C - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0xF - bls _080F4B82 - b _080F4D84 -_080F4B82: - lsls r0, r5, 2 - ldr r1, =_080F4BA4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4BA4: - .4byte _080F4BE4 - .4byte _080F4C30 - .4byte _080F4C30 - .4byte _080F4C30 - .4byte _080F4C64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D64 - .4byte _080F4D80 -_080F4BE4: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xF] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x10] - bl sub_81DB5E8 - ldrb r1, [r4, 0x2] - cmp r1, 0x9 - bhi _080F4C14 - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F4D84 - .pool -_080F4C14: - cmp r1, 0x13 - bhi _080F4C24 - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F4D84 - .pool -_080F4C24: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F4D84 - .pool -_080F4C30: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xF] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x10] - bl sub_81DB5E8 - ldrb r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F4D84 - .pool -_080F4C64: - ldr r0, =gStringVar2 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x10] - bl sub_81DB5E8 - ldrb r0, [r4, 0x3] - cmp r0, 0x18 - bls _080F4C76 - b _080F4D84 -_080F4C76: - lsls r0, 2 - ldr r1, =_080F4C88 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4C88: - .4byte _080F4CEC - .4byte _080F4CF8 - .4byte _080F4CF8 - .4byte _080F4CF8 - .4byte _080F4CF8 - .4byte _080F4D04 - .4byte _080F4D04 - .4byte _080F4D04 - .4byte _080F4D04 - .4byte _080F4D10 - .4byte _080F4D10 - .4byte _080F4D10 - .4byte _080F4D10 - .4byte _080F4D1C - .4byte _080F4D1C - .4byte _080F4D1C - .4byte _080F4D1C - .4byte _080F4D28 - .4byte _080F4D28 - .4byte _080F4D28 - .4byte _080F4D28 - .4byte _080F4D34 - .4byte _080F4D40 - .4byte _080F4D4C - .4byte _080F4D58 -_080F4CEC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F4D84 - .pool -_080F4CF8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F4D84 - .pool -_080F4D04: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F4D84 - .pool -_080F4D10: - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F4D84 - .pool -_080F4D1C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F4D84 - .pool -_080F4D28: - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F4D84 - .pool -_080F4D34: - ldr r1, =gUnknown_0203A030 - movs r0, 0xB - strb r0, [r1] - b _080F4D84 - .pool -_080F4D40: - ldr r1, =gUnknown_0203A030 - movs r0, 0xC - strb r0, [r1] - b _080F4D84 - .pool -_080F4D4C: - ldr r1, =gUnknown_0203A030 - movs r0, 0xD - strb r0, [r1] - b _080F4D84 - .pool -_080F4D58: - ldr r1, =gUnknown_0203A030 - movs r0, 0xE - strb r0, [r1] - b _080F4D84 - .pool -_080F4D64: - ldr r0, =gStringVar2 - adds r1, r4, 0x4 - ldrb r2, [r4, 0x10] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0xF - strb r0, [r1] - b _080F4D84 - .pool -_080F4D80: - bl TVShowDone -_080F4D84: - ldr r0, =gUnknown_0858D4E4 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowSpotTheCuties - - thumb_func_start DoTVShowPokemonNewsBattleFrontier -DoTVShowPokemonNewsBattleFrontier: @ 80F4D9C - push {r4-r7,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x12 - bls _080F4DC4 - b _080F5014 -_080F4DC4: - lsls r0, r7, 2 - ldr r1, =_080F4DE8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4DE8: - .4byte _080F4E34 - .4byte _080F4F18 - .4byte _080F4ECE - .4byte _080F4EF4 - .4byte _080F4EF4 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F18 - .4byte _080F4F3C - .4byte _080F4F74 - .4byte _080F4F9C - .4byte _080F4FE0 - .4byte _080F5004 -_080F4E34: - ldrb r0, [r6, 0xD] - subs r0, 0x1 - cmp r0, 0xC - bls _080F4E3E - b _080F5014 -_080F4E3E: - lsls r0, 2 - ldr r1, =_080F4E4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F4E4C: - .4byte _080F4E80 - .4byte _080F4E86 - .4byte _080F4E8C - .4byte _080F4E92 - .4byte _080F4E98 - .4byte _080F4E9E - .4byte _080F4EA4 - .4byte _080F4EAA - .4byte _080F4EB0 - .4byte _080F4EB6 - .4byte _080F4EBC - .4byte _080F4EC2 - .4byte _080F4EC8 -_080F4E80: - movs r0, 0x1 - strb r0, [r2] - b _080F5014 -_080F4E86: - movs r0, 0x2 - strb r0, [r2] - b _080F5014 -_080F4E8C: - movs r0, 0x3 - strb r0, [r2] - b _080F5014 -_080F4E92: - movs r0, 0x4 - strb r0, [r2] - b _080F5014 -_080F4E98: - movs r0, 0x5 - strb r0, [r2] - b _080F5014 -_080F4E9E: - movs r0, 0x6 - strb r0, [r2] - b _080F5014 -_080F4EA4: - movs r0, 0x7 - strb r0, [r2] - b _080F5014 -_080F4EAA: - movs r0, 0x8 - strb r0, [r2] - b _080F5014 -_080F4EB0: - movs r0, 0x9 - strb r0, [r2] - b _080F5014 -_080F4EB6: - movs r0, 0xA - strb r0, [r2] - b _080F5014 -_080F4EBC: - movs r0, 0xB - strb r0, [r2] - b _080F5014 -_080F4EC2: - movs r0, 0xC - strb r0, [r2] - b _080F5014 -_080F4EC8: - movs r0, 0xD - strb r0, [r2] - b _080F5014 -_080F4ECE: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xC] - bl sub_81DB5E8 - ldrh r1, [r6, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x10 - strb r0, [r1] - b _080F5014 - .pool -_080F4EF4: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xC] - bl sub_81DB5E8 - ldrh r1, [r6, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0xF - strb r0, [r1] - b _080F5014 - .pool -_080F4F18: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xC] - bl sub_81DB5E8 - ldrh r1, [r6, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0xE - strb r0, [r1] - b _080F5014 - .pool -_080F4F3C: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0x4] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x6] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0x8] - muls r1, r5 - adds r1, r4 - b _080F4FEC - .pool -_080F4F74: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0x4] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x6] - muls r1, r5 - adds r1, r4 - b _080F4FEC - .pool -_080F4F9C: - ldr r0, =gStringVar1 - ldrh r1, [r6, 0x4] - movs r5, 0xB - muls r1, r5 - ldr r4, =gSpeciesNames - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r6, 0x6] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar3 - ldrh r1, [r6, 0x8] - muls r1, r5 - adds r1, r4 - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x11 - strb r0, [r1] - b _080F5014 - .pool -_080F4FE0: - ldr r0, =gStringVar1 - ldrh r2, [r6, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 -_080F4FEC: - bl StringCopy - ldr r1, =gUnknown_0203A030 - movs r0, 0x12 - strb r0, [r1] - b _080F5014 - .pool -_080F5004: - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x13 - ldrb r2, [r6, 0xC] - bl sub_81DB5E8 - bl TVShowDone -_080F5014: - ldr r0, =gUnknown_0858D524 - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonNewsBattleFrontier - - thumb_func_start DoTVShowWhatsNo1InHoennToday -DoTVShowWhatsNo1InHoennToday: @ 80F5030 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - cmp r5, 0x8 - bls _080F5056 - b _080F5164 -_080F5056: - lsls r0, r5, 2 - ldr r1, =_080F5078 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F5078: - .4byte _080F509C - .4byte _080F5130 - .4byte _080F5130 - .4byte _080F5130 - .4byte _080F5130 - .4byte _080F5130 - .4byte _080F5130 - .4byte _080F5130 - .4byte _080F5154 -_080F509C: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x5] - bl sub_81DB5E8 - ldrb r0, [r4, 0x4] - cmp r0, 0x6 - bhi _080F5164 - lsls r0, 2 - ldr r1, =_080F50C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F50C0: - .4byte _080F50DC - .4byte _080F50E8 - .4byte _080F50F4 - .4byte _080F5100 - .4byte _080F510C - .4byte _080F5118 - .4byte _080F5124 -_080F50DC: - ldr r1, =gUnknown_0203A030 - movs r0, 0x1 - strb r0, [r1] - b _080F5164 - .pool -_080F50E8: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F5164 - .pool -_080F50F4: - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F5164 - .pool -_080F5100: - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F5164 - .pool -_080F510C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F5164 - .pool -_080F5118: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F5164 - .pool -_080F5124: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F5164 - .pool -_080F5130: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x5] - bl sub_81DB5E8 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F5164 - .pool -_080F5154: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x5] - bl sub_81DB5E8 - bl TVShowDone -_080F5164: - ldr r0, =gUnknown_0858D570 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowWhatsNo1InHoennToday - - thumb_func_start sub_80F5180 -sub_80F5180: @ 80F5180 - push {r4,lr} - movs r1, 0 - movs r2, 0 - ldr r3, [r0, 0xC] - movs r4, 0x1 -_080F518A: - adds r0, r3, 0 - lsrs r0, r1 - ands r0, r4 - cmp r0, 0 - beq _080F519A - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080F519A: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1F - bls _080F518A - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F5180 - - thumb_func_start sub_80F51AC -sub_80F51AC: @ 80F51AC - push {r4-r6,lr} - lsls r1, 24 - lsrs r4, r1, 24 - movs r2, 0 - movs r3, 0 - ldr r1, [r0, 0xC] - movs r5, 0x1 - ldr r6, =gUnknown_0858D690 -_080F51BC: - adds r0, r1, 0 - lsrs r0, r2 - ands r0, r5 - cmp r0, 0 - beq _080F51DA - cmp r3, r4 - bne _080F51D4 - adds r0, r2, r6 - ldrb r0, [r0] - b _080F51E6 - .pool -_080F51D4: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080F51DA: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080F51BC - movs r0, 0 -_080F51E6: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F51AC - - thumb_func_start DoTVShowSecretBaseSecrets -DoTVShowSecretBaseSecrets: @ 80F51EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r2, [r0] - mov r9, r2 - adds r2, r0, 0 - mov r0, r9 - cmp r0, 0x2B - bls _080F521E - b _080F552A -_080F521E: - lsls r0, 2 - ldr r1, =_080F5240 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F5240: - .4byte _080F52F0 - .4byte _080F5348 - .4byte _080F53C4 - .4byte _080F5444 - .4byte _080F5498 - .4byte _080F5498 - .4byte _080F5498 - .4byte _080F54C4 - .4byte _080F54E8 - .4byte _080F54EC - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F54F0 - .4byte _080F5510 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 - .4byte _080F5526 -_080F52F0: - ldr r0, =gStringVar1 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1C] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x1B] - bl sub_81DB5E8 - adds r0, r5, 0 - bl sub_80F5180 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080F5328 - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F552A - .pool -_080F5328: - movs r0, 0x1 - strb r0, [r5, 0x12] - bl Random - ldr r4, =gUnknown_0203A031 - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - strb r0, [r4] - ldrb r1, [r4] - b _080F542A - .pool -_080F5348: - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x1B] - bl sub_81DB5E8 - adds r0, r5, 0 - bl sub_80F5180 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - beq _080F53DE - cmp r6, 0x2 - beq _080F5370 - movs r4, 0 - b _080F538A - .pool -_080F5370: - strb r6, [r5, 0x12] - ldr r0, =gUnknown_0203A031 - ldrb r0, [r0] - cmp r0, 0 - bne _080F5384 - adds r0, r5, 0 - movs r1, 0x1 - b _080F542C - .pool -_080F5384: - adds r0, r5, 0 - movs r1, 0 - b _080F542C -_080F538A: - bl Random - ldr r7, =gUnknown_0203A031 - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - strb r0, [r7, 0x1] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r7] - cmp r0, r1 - bne _080F53B2 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =0x0000fffe - cmp r4, r0 - bls _080F538A -_080F53B2: - movs r0, 0x2 - strb r0, [r5, 0x12] - ldrb r1, [r7, 0x1] - b _080F542A - .pool -_080F53C4: - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x1B] - bl sub_81DB5E8 - adds r0, r5, 0 - bl sub_80F5180 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x2 - bne _080F53F0 -_080F53DE: - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F552A - .pool -_080F53F0: - movs r4, 0 - ldr r7, =gUnknown_0203A031 - ldr r2, =0x0000fffe - mov r8, r2 -_080F53F8: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - strb r0, [r7, 0x2] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r7] - cmp r0, r1 - beq _080F5418 - ldrb r2, [r7, 0x1] - cmp r0, r2 - bne _080F5422 -_080F5418: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r8 - bls _080F53F8 -_080F5422: - movs r0, 0x3 - strb r0, [r5, 0x12] - ldr r0, =gUnknown_0203A031 - ldrb r1, [r0, 0x2] -_080F542A: - adds r0, r5, 0 -_080F542C: - bl sub_80F51AC - ldr r1, =gUnknown_0203A030 - strb r0, [r1] - b _080F552A - .pool -_080F5444: - ldr r0, =gStringVar1 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1C] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x1B] - bl sub_81DB5E8 - ldrh r1, [r5, 0x2] - movs r0, 0x2 - bl sub_80EF340 - ldrh r0, [r5, 0x2] - cmp r0, 0x1E - bhi _080F547C - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F552A - .pool -_080F547C: - cmp r0, 0x64 - bhi _080F548C - ldr r1, =gUnknown_0203A030 - movs r0, 0x5 - strb r0, [r1] - b _080F552A - .pool -_080F548C: - ldr r1, =gUnknown_0203A030 - movs r0, 0x6 - strb r0, [r1] - b _080F552A - .pool -_080F5498: - ldr r0, =gStringVar1 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1C] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x1B] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F552A - .pool -_080F54C4: - ldr r0, =gStringVar1 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x1C] - bl sub_81DB5E8 - ldr r0, =gStringVar2 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x1B] - bl sub_81DB5E8 - bl TVShowDone - b _080F552A - .pool -_080F54E8: - movs r0, 0x3 - b _080F5528 -_080F54EC: - movs r0, 0x3 - b _080F5528 -_080F54F0: - ldr r4, =gStringVar2 - ldrh r0, [r5, 0x10] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, =gUnknown_0203A030 - ldrb r0, [r5, 0x12] - strb r0, [r1] - b _080F552A - .pool -_080F5510: - adds r0, r5, 0 - adds r0, 0x22 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F5522 - movs r0, 0x16 - b _080F5528 -_080F5522: - movs r0, 0x15 - b _080F5528 -_080F5526: - ldrb r0, [r5, 0x12] -_080F5528: - strb r0, [r2] -_080F552A: - ldr r0, =gUnknown_0858D594 - mov r2, r9 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowSecretBaseSecrets - - thumb_func_start DoTVShowSafariFanClub -DoTVShowSafariFanClub: @ 80F5548 - push {r4,r5,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_0203A030 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0xA - bls _080F5570 - b _080F56BC -_080F5570: - lsls r0, r5, 2 - ldr r1, =_080F5594 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F5594: - .4byte _080F55C0 - .4byte _080F55DC - .4byte _080F5614 - .4byte _080F5628 - .4byte _080F569A - .4byte _080F562E - .4byte _080F5650 - .4byte _080F5680 - .4byte _080F5694 - .4byte _080F569A - .4byte _080F56B8 -_080F55C0: - ldrb r1, [r4, 0x2] - cmp r1, 0 - bne _080F55CC - movs r0, 0x6 - strb r0, [r2] - b _080F56BC -_080F55CC: - cmp r1, 0x3 - bhi _080F55D6 - movs r0, 0x5 - strb r0, [r2] - b _080F56BC -_080F55D6: - movs r0, 0x1 - strb r0, [r2] - b _080F56BC -_080F55DC: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x4] - bl sub_81DB5E8 - ldrb r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldrb r0, [r4, 0x3] - cmp r0, 0 - bne _080F5608 - ldr r1, =gUnknown_0203A030 - movs r0, 0x3 - strb r0, [r1] - b _080F56BC - .pool -_080F5608: - ldr r1, =gUnknown_0203A030 - movs r0, 0x2 - strb r0, [r1] - b _080F56BC - .pool -_080F5614: - ldrb r1, [r4, 0x3] - movs r0, 0x1 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x4 - strb r0, [r1] - b _080F56BC - .pool -_080F5628: - movs r0, 0x4 - strb r0, [r2] - b _080F56BC -_080F562E: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x4] - bl sub_81DB5E8 - ldrb r1, [r4, 0x2] - movs r0, 0x1 - bl sub_80EF340 - ldrb r0, [r4, 0x3] - cmp r0, 0 - beq _080F5662 - b _080F5674 - .pool -_080F5650: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x4] - bl sub_81DB5E8 - ldrb r0, [r4, 0x3] - cmp r0, 0 - bne _080F5674 -_080F5662: - ldr r1, =gUnknown_0203A030 - movs r0, 0x8 - strb r0, [r1] - b _080F56BC - .pool -_080F5674: - ldr r1, =gUnknown_0203A030 - movs r0, 0x7 - strb r0, [r1] - b _080F56BC - .pool -_080F5680: - ldrb r1, [r4, 0x3] - movs r0, 0x1 - bl sub_80EF340 - ldr r1, =gUnknown_0203A030 - movs r0, 0x9 - strb r0, [r1] - b _080F56BC - .pool -_080F5694: - movs r0, 0x9 - strb r0, [r2] - b _080F56BC -_080F569A: - ldr r0, =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x4] - bl sub_81DB5E8 - ldr r1, =gUnknown_0203A030 - movs r0, 0xA - strb r0, [r1] - b _080F56BC - .pool -_080F56B8: - bl TVShowDone -_080F56BC: - ldr r0, =gUnknown_0858D640 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowSafariFanClub - - thumb_func_start DoTVShowPokemonContestLiveUpdates2 -DoTVShowPokemonContestLiveUpdates2: @ 80F56D4 - push {r4-r6,lr} - ldr r2, =gSaveBlock1Ptr - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x000027cc - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - ldr r1, =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, =gUnknown_0203A030 - ldrb r5, [r6] - cmp r5, 0x2 - bgt _080F5718 - cmp r5, 0x1 - bge _080F5744 - cmp r5, 0 - beq _080F571E - b _080F575E - .pool -_080F5718: - cmp r5, 0x3 - beq _080F574E - b _080F575E -_080F571E: - ldr r0, =gStringVar1 - ldrb r1, [r4, 0xA] - bl sub_818E868 - ldrb r1, [r4, 0x16] - cmp r1, 0x1 - bne _080F5734 - strb r1, [r6] - b _080F575E - .pool -_080F5734: - cmp r1, 0 - bne _080F573E - movs r0, 0x2 - strb r0, [r6] - b _080F575E -_080F573E: - movs r0, 0x3 - strb r0, [r6] - b _080F575E -_080F5744: - ldr r0, =gStringVar3 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x17] - bl sub_81DB5E8 -_080F574E: - ldr r0, =gStringVar2 - adds r1, r4, 0 - adds r1, 0xB - ldrb r2, [r4, 0x18] - bl sub_81DB5E8 - bl TVShowDone -_080F575E: - ldr r0, =gUnknown_0858D384 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl box_related_two__2 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DoTVShowPokemonContestLiveUpdates2 - - thumb_func_start TVShowDone -TVShowDone: @ 80F577C - ldr r1, =gScriptResult - movs r0, 0x1 - strh r0, [r1] - ldr r1, =gUnknown_0203A030 - movs r0, 0 - strb r0, [r1] - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r0, =0x000027cd - adds r2, r0 - movs r0, 0 - strb r0, [r2] - bx lr - .pool - thumb_func_end TVShowDone - - thumb_func_start ResetTVShowState -ResetTVShowState: @ 80F57B8 - ldr r1, =gUnknown_0203A030 - movs r0, 0 - strb r0, [r1] - bx lr - .pool - thumb_func_end ResetTVShowState - - .align 2, 0 @ Don't pad with nop. diff --git a/common_syms/tv.txt b/common_syms/tv.txt new file mode 100644 index 0000000000..0370f65e1f --- /dev/null +++ b/common_syms/tv.txt @@ -0,0 +1,4 @@ +sCurTVShowSlot +sTV_SecretBaseVisitMovesTemp +sTV_DecorationsBuffer +sTV_SecretBaseVisitMonsTemp diff --git a/data/event_scripts.s b/data/event_scripts.s index 4dd5761e57..e700ad181e 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -822,7 +822,15 @@ gUnknown_0827EE09:: @ 27EE09 .incbin "baserom.gba", 0x27ee09, 0x2 gUnknown_0827EE0B:: @ 827EE0B - .incbin "baserom.gba", 0x27ee0b, 0x118fa + .incbin "baserom.gba", 0x27ee0b, 0x46a + + .include "data/text/tv.inc" + + .incbin "baserom.gba", 0x0028c7e9, 0x90f + + .include "data/text/pokemon_news.inc" + + .incbin "baserom.gba", 0x28e066, 0x269f gUnknown_08290705:: @ 8290705 .incbin "baserom.gba", 0x290705, 0xeb diff --git a/data/text/pokemon_news.inc b/data/text/pokemon_news.inc new file mode 100644 index 0000000000..5af4e2994e --- /dev/null +++ b/data/text/pokemon_news.inc @@ -0,0 +1,165 @@ + +gPokeNewsTextSlateport_Upcoming:: @ 0828D0F8 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "SLATEPORT’s most popular kind of guy,\n" + .string "the ENERGY GURU, is in the news again!\p" + .string "He promises to, “Stupendously go for\n" + .string "it in just this many days: {STR_VAR_1}!”\p" + .string "While he refused to elaborate on what\n" + .string "he will stupendously go for, the\l" + .string "ENERGY GURU advised, “Save up your\l" + .string "money. That’ll be good…”\p" + .string "It sounds like a trip to SLATEPORT\n" + .string "would be well worth your while that day.\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextSlateport_Ongoing:: @ 0828D2A1 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "This is the news you’ve all been\n" + .string "waiting for!\p" + .string "SLATEPORT’S ENERGY GURU is going\n" + .string "for it stupendously in the MARKET!\p" + .string "He promises unbeatable bargain\n" + .string "prices on CALCIUM and PROTEIN!\p" + .string "A trip to SLATEPORT CITY sounds\n" + .string "worthwhile. Why not visit and shop\l" + .string "to your heart’s content?\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextSlateport_Ending:: @ 0828D3F5 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "This is the news you’ve all been\n" + .string "waiting for!\p" + .string "SLATEPORT’S ENERGY GURU is going\n" + .string "for it stupendously in the MARKET!\p" + .string "He promises unbeatable bargain\n" + .string "prices on CALCIUM and PROTEIN!\p" + .string "According to the ENERGY GURU, he\n" + .string "still has ample merchandise left.\p" + .string "Why not visit SLATEPORT CITY for\n" + .string "a most enjoyable shopping trip?\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextGameCorner_Upcoming:: @ 0828D571 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "It’s approaching!\n" + .string "It’s finally coming!\p" + .string "The GAME CORNER’s service day will be\n" + .string "here in just this many days: {STR_VAR_1}!\p" + .string "Even those who are usually unlucky\n" + .string "may be lucky on this particular day!\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextGameCorner_Ongoing:: @ 0828D66F + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "It’s here!\n" + .string "It’s finally arrived!\p" + .string "GAME CORNER’s service day has finally\n" + .string "arrived!\p" + .string "Could you be lucky at the SLOTS \n" + .string "and ROULETTE?\p" + .string "The location is MAUVILLE CITY.\n" + .string "This is the place!\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextGameCorner_Ending:: @ 0828D768 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "It’s here!\n" + .string "It’s finally arrived!\p" + .string "GAME CORNER’s service day has finally\n" + .string "arrived!\p" + .string "Could you be lucky at the SLOTS\n" + .string "and ROULETTE?\p" + .string "Time is limited and has almost run out.\n" + .string "The location is MAUVILLE CITY.\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextLilycove_Upcoming:: @ 0828D875 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "We’ve just received wonderful news\n" + .string "from LILYCOVE DEPARTMENT STORE.\p" + .string "The DEPARTMENT STORE’s clear-out sale\n" + .string "will be in just this many days: {STR_VAR_1}!\p" + .string "That thingamajig or that doodad that\n" + .string "you’ve always wanted could be yours!\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextLilycove_Ongoing:: @ 0828D994 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "This is the news you’ve all been\n" + .string "waiting for!\p" + .string "LILYCOVE DEPARTMENT STORE’s clear-out\n" + .string "sale has finally arrived!\p" + .string "All the thingamajigs and doodads that\n" + .string "you’ve always dreamt about…\p" + .string "You may be in for fateful encounters\n" + .string "with them all!\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextLilycove_Ending:: @ 0828DAC0 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "This is the news you’ve all been\n" + .string "waiting for!\p" + .string "LILYCOVE DEPARTMENT STORE’s clear-out\n" + .string "sale has finally arrived!\p" + .string "All the thingamajigs and doodads that\n" + .string "you’ve always dreamt about…\p" + .string "You may be in for fateful encounters\n" + .string "with them all!\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextBlendMaster_Upcoming:: @ 0828DBEC + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "We have big news for everyone\n" + .string "involved in the making of {POKEBLOCK}S.\p" + .string "The legendary BLEND MASTER will be\n" + .string "appearing in LILYCOVE CITY with just\l" + .string "a mere {STR_VAR_1}-day wait to go!\p" + .string "The BLEND MASTER is said to be\n" + .string "the best in all HOENN when it comes to\l" + .string "spinning a BERRY BLENDER.\p" + .string "Those people who want to make great\n" + .string "{POKEBLOCK}S or see the MASTER in action\l" + .string "are urged to save their BERRIES.\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextBlendMaster_Ongoing:: @ 0828DD9E + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "We have big news for everyone\n" + .string "involved in the making of {POKEBLOCK}S.\p" + .string "The legendary BLEND MASTER has\n" + .string "finally appeared!\p" + .string "The BLEND MASTER is spinning\n" + .string "the BERRY BLENDER at the LILYCOVE\l" + .string "CONTEST HALL.\p" + .string "Those people who want to make great\n" + .string "{POKEBLOCK}S or see the MASTER in action\l" + .string "should hurry to LILYCOVE.\p" + .string "That’s the news on POKéMON NEWS.$" + +gPokeNewsTextBlendMaster_Ending:: @ 0828DF05 + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "It’s incredible!\n" + .string "Too incredible, even!\p" + .string "The BERRY BLENDER is spinning at\n" + .string "a dizzying pace!\p" + .string "The BLEND MASTER has lived up to\n" + .string "his reputation!\p" + .string "The BLEND MASTER will soon be\n" + .string "leaving LILYCOVE.\p" + .string "If you haven’t seen the MASTER in\n" + .string "action, don’t waste this chance!\l" + .string "Head to LILYCOVE right now!\p" + .string "That’s the news on POKéMON NEWS.$" diff --git a/data/text/tv.inc b/data/text/tv.inc new file mode 100644 index 0000000000..fa2d0ac737 --- /dev/null +++ b/data/text/tv.inc @@ -0,0 +1,2891 @@ +gTVBravoTrainerText00:: @ 0827F275 + .string "Yeah!\n" + .string "It’s BRAVO TRAINER time!\p" + .string "Today, we’re going to profile a POKéMON\n" + .string "belonging to {STR_VAR_1}.\p" + .string "Now, this POKéMON boasts a {STR_VAR_3}\n" + .string "Rank in the {STR_VAR_2} Category.$" + +gTVBravoTrainerText01:: @ 0827F304 + .string "Introducing {STR_VAR_2} the\n" + .string "{STR_VAR_1}!\p" + .string "The nickname {STR_VAR_2}…\p" + .string "Even the nickname exudes an air that\n" + .string "proclaims “{STR_VAR_3}”!$" + +gTVBravoTrainerText02:: @ 0827F361 + .string "Anyway, when the TRAINER {STR_VAR_1}\n" + .string "entered the POKéMON in a CONTEST,\l" + .string "we managed to get a few impassioned\l" + .string "quotes about the trusty partner.$" + +gTVBravoTrainerText03:: @ 0827F3E4 + .string "Asked about the CONTEST afterwards,\n" + .string "{STR_VAR_1} happily replied with a huge\l" + .string "grin, “{STR_VAR_2}!”\p" + .string "Well, sure, {STR_VAR_1}’s POKéMON came in\n" + .string "number {STR_VAR_3} in the CONTEST.\p" + .string "That line perfectly suits {STR_VAR_1}\n" + .string "right now, I’d say!$" + +gTVBravoTrainerText04:: @ 0827F49F + .string "Asked about the CONTEST afterwards,\n" + .string "{STR_VAR_1} replied with a tinge of\l" + .string "bitterness, “{STR_VAR_2}.”\p" + .string "Well, sure, {STR_VAR_1}’s POKéMON came in\n" + .string "number {STR_VAR_3} in the CONTEST.\p" + .string "{STR_VAR_1}’s disappointment comes across\n" + .string "loud and clear, I’d say!$" + +gTVBravoTrainerText05:: @ 0827F565 + .string "Wouldn’t you also like to know what\n" + .string "{STR_VAR_1} imagines {STR_VAR_2} to be?\p" + .string "You bet we did!\n" + .string "So we asked, of course!\p" + .string "The answer is all perfectly condensed:\n" + .string "“{STR_VAR_3}!”\p" + .string "That’s what the concept of {STR_VAR_2}\n" + .string "represents to {STR_VAR_1}!$" + +gTVBravoTrainerText06:: @ 0827F624 + .string "The last move {STR_VAR_2} used by\n" + .string "the {STR_VAR_1} is entirely about\l" + .string "“{STR_VAR_3}”!$" + +gTVBravoTrainerText07:: @ 0827F65C + .string "Bravo, {STR_VAR_1}!\n" + .string "Bravo, {STR_VAR_2}!\p" + .string "I hope we can count on seeing\n" + .string "{STR_VAR_1} scale even greater heights!\p" + .string "That’s all the time we have!\n" + .string "Until next time, see you!$" + +gTVBravoTrainerText08:: @ 0827F6E6 + .string "Introducing the TRAINER’s {STR_VAR_1}!$" + + .string "Hello! You’re the TRAINER who just had\n" + .string "a battle, right?\p" + .string "I’m gathering interviews with TRAINERS\n" + .string "all over the place.\p" + .string "May I get a few words from you about\n" + .string "your impressions on battling?$" + + .string "You will? Really?\n" + .string "Thank you!\l" + .string "Then, uh…\p" + .string "How did things turn out in\n" + .string "the BATTLE TOWER today?\p" + .string "Were you satisfied with the battle?\n" + .string "Or are you unhappy?$" + + .string "Oh…\n" + .string "Sorry we disturbed you.\p" + .string "Please give us an interview the next\n" + .string "time you visit the BATTLE TOWER.$" + + .string "Well, of course!\p" + .string "That unmistakable look of satisfaction\n" + .string "on your face…\p" + .string "It’s obvious that you’ve had a great\n" + .string "battle.$" + + .string "Oh, I see…\p" + .string "Well, it certainly is difficult to make a\n" + .string "battle turn out exactly as planned.$" + + .string "Oh, oh, may I ask one more question?\p" + .string "If you were to describe your\n" + .string "impressions about this battle with\l" + .string "one saying, what would it be?$" + + .string "Oh, that is stunningly cool!\p" + .string "That’s a great line!\n" + .string "I hope you’ll do great next time, too.\p" + .string "I hope to see you again!$" + + .string "Oh, I see…\p" + .string "Still, being the silent type is also\n" + .string "cool, isn’t it?\p" + .string "I hope you’ll give me the opportunity\n" + .string "to share your thoughts again!$" + + .string "I’ll be looking forward to your\n" + .string "next battle!$" + +gTVBravoTrainerBattleTowerText00:: @ 0827FB20 + .string "Yeah!\n" + .string "It’s BRAVO TRAINER time!\p" + .string "Today, we’re going to profile {STR_VAR_1},\n" + .string "who took the BATTLE TOWER challenge!\p" + .string "For the challenge, {STR_VAR_1} entered\n" + .string "one wicked {STR_VAR_2}.$" + +gTVBravoTrainerBattleTowerText01:: @ 0827FBB3 + .string "The pair set a new record of {STR_VAR_2} wins\n" + .string "in a row in {STR_VAR_1} competition!\l" + .string "Bravo, TRAINER!$" + +gTVBravoTrainerBattleTowerText02:: @ 0827FC04 + .string "The twosome finally succumbed to\n" + .string "{STR_VAR_1} in match number {STR_VAR_2}.\l" + .string "Nice try, TRAINER!\p" + .string "But, hey, it’s just bad luck to run into\n" + .string "{STR_VAR_1} so early in the challenge.\p" + .string "We asked the TRAINER for impressions\n" + .string "on the match with {STR_VAR_1}.$" + +gTVBravoTrainerBattleTowerText03:: @ 0827FCD1 + .string "The twosome won it all by defeating\n" + .string "{STR_VAR_1}’s {STR_VAR_2} thoroughly.\l" + .string "Bravo, TRAINER!\p" + .string "Knocking off even {STR_VAR_1}…\n" + .string "It defies belief! Simply astounding!\p" + .string "We asked the TRAINER for impressions\n" + .string "on the moment of glory.$" + +gTVBravoTrainerBattleTowerText04:: @ 0827FD91 + .string "After a string of wins, the pair finally\n" + .string "succumbed to {STR_VAR_1}’s {STR_VAR_2},\l" + .string "their final hurdle.\p" + .string "Nice try, TRAINER!\p" + .string "Still, you have to give credit.\n" + .string "You don’t see many famous combinations\l" + .string "like {STR_VAR_1} and {STR_VAR_2}.\p" + .string "We asked the TRAINER for impressions\n" + .string "on battling the celebrity pair.$" + +gTVBravoTrainerBattleTowerText05:: @ 0827FE93 + .string "This is what the TRAINER had to say:\n" + .string "“I’m satisfied!”\p" + .string "Now isn’t that a refreshing reply?\n" + .string "Bravo, TRAINER!\p" + .string "Isn’t it out-and-out awesome to be\n" + .string "able to battle to full satisfaction?\p" + .string "I found out exactly how satisfied\n" + .string "when I heard the TRAINER say this:$" + +gTVBravoTrainerBattleTowerText06:: @ 0827FF89 + .string "This is what the TRAINER had to say:\n" + .string "“I’m not satisfied…”\p" + .string "Our TRAINER was obviously a little down\n" + .string "when that was uttered.\p" + .string "Still, it’s not easy to be able to battle\n" + .string "with complete satisfaction, am I right?\p" + .string "Anyway, I found out how dissatisfied\n" + .string "our TRAINER was when I heard this:$" + +gTVBravoTrainerBattleTowerText07:: @ 0828009C + .string "None$" + +gTVBravoTrainerBattleTowerText08:: @ 082800A1 + .string "None$" + +gTVBravoTrainerBattleTowerText09:: @ 082800A6 + .string "None$" + +gTVBravoTrainerBattleTowerText10:: @ 082800AB + .string "None$" + +gTVBravoTrainerBattleTowerText11:: @ 082800B0 + .string "“{STR_VAR_1}.”$" + +gTVBravoTrainerBattleTowerText12:: @ 082800B6 + .string "“{STR_VAR_1}.”\n" + .string "Now isn’t that great?\p" + .string "It really expresses {STR_VAR_2}’s joy,\n" + .string "I’d say.\p" + .string "That battle with {STR_VAR_3} at the\n" + .string "end… It really was what you’d call\l" + .string "“{STR_VAR_1}”!$" + +gTVBravoTrainerBattleTowerText13:: @ 0828013D + .string "“{STR_VAR_1}.”\n" + .string "Now isn’t that fitting?\p" + .string "That battle with {STR_VAR_3} at the\n" + .string "end… You can’t describe it as anything\l" + .string "else but “{STR_VAR_1}”!\p" + .string "{STR_VAR_2}’s disappointment comes across\n" + .string "loud and clear, I’d say!$" + +gTVBravoTrainerBattleTowerText14:: @ 082801E6 + .string "Bravo, {STR_VAR_1}!\n" + .string "Bravo, {STR_VAR_2}!\p" + .string "I hope we can count on seeing\n" + .string "{STR_VAR_1} scale even greater heights!\p" + .string "That’s all the time we have!\n" + .string "Until next time, see you!$" + + .string "Wow!\p" + .string "It’s plain to see that you lavish your\n" + .string "love on your {STR_VAR_1}.\p" + .string "Okay, it’s named {STR_VAR_2}.\p" + .string "Can I ask you a favor?\p" + .string "I’m a TV reporter, and I’m running\n" + .string "a survey on POKéMON.\p" + .string "Would you be willing to answer a few\n" + .string "simple questions for me?$" + + .string "Great! Thank you!\p" + .string "Okay, here goes.\n" + .string "I just need quick answers, okay?$" + + .string "When you first met {STR_VAR_1},\n" + .string "what did you feel?\p" + .string "How would you describe your feelings\n" + .string "at the time?$" + + .string "Your {STR_VAR_1} is cared for lovingly.\p" + .string "If you were to liken it to something\n" + .string "that you like, what would it be?$" + + .string "This question also relates to your\n" + .string "beloved {STR_VAR_1}.\p" + .string "What was it about {STR_VAR_1} that\n" + .string "attracted you?$" + + .string "Okay, that makes sense.\p" + .string "The next question might be a little\n" + .string "on the tough side.\p" + .string "Here goes…\p" + .string "What do POKéMON mean to you?$" + + .string "I see!\p" + .string "Hmhm…\p" + .string "Okay!\n" + .string "Thanks for helping me out.\p" + .string "It was fun and enlightening\n" + .string "chatting with you.\p" + .string "It’s possible that our interview will\n" + .string "end up on TV. Tune in and check!\p" + .string "Okay, that’s all.\n" + .string "Bye-bye!$" + + .string "Oh, okay…\p" + .string "Well, if you get the urge to tell me\n" + .string "about POKéMON, I’ll be here!$" + + .string "I enjoy this job--you get to learn\n" + .string "about POKéMON by doing interviews.$" + + .string "Hi, you seem to be very close to your\n" + .string "{STR_VAR_1}.\p" + .string "Do you know what?\n" + .string "I’m a TV reporter.\p" + .string "I travel around interviewing people\n" + .string "about POKéMON.\p" + .string "I’m wondering if you’d be willing to tell\n" + .string "me a little about your {STR_VAR_1}?$" + + .string "Wow, thank you!\p" + .string "Okay, then, please tell me anything\n" + .string "you’d like about your {STR_VAR_1}.$" + + .string "Wow…\n" + .string "That’s an interesting account.\p" + .string "You really are tight with {STR_VAR_1},\n" + .string "aren’t you?\p" + .string "I get the feeling that your account\n" + .string "will make a great TV story.\p" + .string "I promise that I’ll turn this into\n" + .string "an entertaining show.\l" + .string "Keep your eyes out for it.\p" + .string "Okay, that’s all.\n" + .string "Bye-bye!$" + +gTVFanClubOpinionsText00:: @ 08280886 + .string "WE ARE THE POKéMON FAN CLUB!\p" + .string "We’re on the air!\p" + .string "On this program, we get your opinions,\n" + .string "and I shout them out on your behalf!\l" + .string "Isn’t it a fantastic program concept?\p" + .string "Today, we bring you this report from\n" + .string "our reporter, who we sent out to the\l" + .string "POKéMON FAN CLUB.\p" + .string "So, just who is today’s featured\n" + .string "POKéMON fan?\p" + .string "… … … … … … … …\p" + .string "{STR_VAR_1}!\p" + .string "So, let’s hear what {STR_VAR_1} has to\n" + .string "say about {STR_VAR_3} the {STR_VAR_2}.\p" + .string "And, I will shout those words of love\n" + .string "out loud on TV!\p" + .string "Hoo-hah!\p" + .string "Let’s shout!$" + +gTVFanClubOpinionsText01:: @ 08280A44 + .string "We asked {STR_VAR_1}, “When you first\n" + .string "laid eyes on your {STR_VAR_2}, what was\l" + .string "your initial thought?”\p" + .string "“{STR_VAR_3}!”\p" + .string "Yeahah! That’s a mighty fine shout!\p" + .string "Doesn’t it bring back memories of those\n" + .string "days long gone by?$" + +gTVFanClubOpinionsText02:: @ 08280AFC + .string "We asked {STR_VAR_1}, “If you were to\n" + .string "liken your {STR_VAR_2} to something,\l" + .string "it would be…”\p" + .string "… … … … … … … …\p" + .string "“{STR_VAR_3}!”\p" + .string "Whoah-oh, now that’s an original idea!\p" + .string "You sure can sense the intensity of\n" + .string "feeling the TRAINER has for\l" + .string "{STR_VAR_2}.$" + +gTVFanClubOpinionsText03:: @ 08280BC4 + .string "And let’s see…\n" + .string "What was it about that {STR_VAR_2}\l" + .string "that so attracted {STR_VAR_1}?\p" + .string "… … … … … … … …\p" + .string "“{STR_VAR_3}!”\p" + .string "Whoa! Such a spectacular declaration!\p" + .string "The TRAINER’s love for the {STR_VAR_2}\n" + .string "comes across loud and clear!$" + +gTVFanClubOpinionsText04:: @ 08280C7A + .string "Hm? Oh, there’s still more.\n" + .string "Let’s check it out!\p" + .string "Let me see, now…\p" + .string "We asked {STR_VAR_1}, “What do POKéMON\n" + .string "mean to you?”\p" + .string "… … … … … …\p" + .string "“{STR_VAR_3}!”\p" + .string "Bravo!\p" + .string "That’s the best shout I’ve had all day!\p" + .string "“{STR_VAR_3}!”\p" + .string "It makes you want to shout it out loud\n" + .string "again and again!\p" + .string "Now that we’ve had a great shout, it’s\n" + .string "time to say good-bye until next time!\p" + .string "So, let’s all have one last shout!\n" + .string "All together now…\p" + .string "“{STR_VAR_3}!”$" + +gTVFanClubText00:: @ 08280DEE + .string "WE ARE THE POKéMON FAN CLUB!\p" + .string "We’re on the air!\p" + .string "Today, we’ll get rolling with the\n" + .string "POKéMON SURVEY CORNER.\p" + .string "Out of all the tales woven by POKéMON\n" + .string "and TRAINERS, what startling new drama\l" + .string "will grab our attention today?\p" + .string "Let me see…\p" + .string "This one!\p" + .string "We’ll start with this letter!\p" + .string "It’s a letter from {STR_VAR_1} about a\n" + .string "beloved {STR_VAR_2}.\p" + .string "Let’s see how passionately our writer\n" + .string "can express love for the {STR_VAR_2}!\l" + .string "Hmhm…$" + +gTVFanClubText01:: @ 08280F69 + .string "Whoah!\n" + .string "What an amazing letter!$" + +gTVFanClubText02:: @ 08280F88 + .string "I loved it, so here it is again!$" + +gTVFanClubText03:: @ 08280FA9 + .string "A great letter bears reading over\n" + .string "and over!$" + +gTVFanClubText04:: @ 08280FD5 + .string "The bit “{STR_VAR_3},” that really\n" + .string "accentuates emotional impact!\p" + .string "It’s a great letter that has real\n" + .string "heartfelt depth!$" + +gTVFanClubText05:: @ 08281040 + .string "Especially that “{STR_VAR_3}” bit!\p" + .string "I love how “{STR_VAR_3}” is used!$" + +gTVFanClubText06:: @ 08281073 + .string "By the way, and it’s not important,\n" + .string "but “{STR_VAR_3}” is a great saying.\p" + .string "I’ve been using “{STR_VAR_3}” a lot\n" + .string "in conversations lately.$" + +gTVFanClubText07:: @ 082810E7 + .string "If I had to score this letter,\n" + .string "I’d give it {STR_VAR_3} points.\p" + .string "Next time, I’ll be expecting an even\n" + .string "better letter, {STR_VAR_1}!\p" + .string "A-whoops, will you look at the time?\n" + .string "Time to say good-bye until next time!$" + + .string "Oh?\n" + .string "Do you perhaps like POKéMON?\p" + .string "I’m on assignment with the TV network.\p" + .string "I’m gathering stories on POKéMON and\n" + .string "TRAINERS that occurred recently.\p" + .string "If you don’t mind, could you tell me\n" + .string "something about yourself?$" + + .string "I’m gathering stories on POKéMON and\n" + .string "TRAINERS that occurred recently.\p" + .string "If you don’t mind, could you tell me\n" + .string "something about yourself?$" + + .string "Oh, you will?\n" + .string "Thank you!\p" + .string "Then, please, tell me anything of\n" + .string "interest that you experienced recently\l" + .string "involving POKéMON.$" + + .string "Oh, I see…\p" + .string "Well, if you do have an interesting\n" + .string "story to tell, please let me know.$" + + .string "Oh, what an uplifting story!\p" + .string "I’ll be sure to get your story told\n" + .string "on television.\p" + .string "It should be aired sometime, I think,\n" + .string "so please look forward to it.$" + + .string "Hmmm…\n" + .string "I’ve got a good story for a TV program.\p" + .string "I’d better write it up in a hurry!$" + +gTVRecentHappeningsText00:: @ 0828149E + .string "Hello, it’s time for RECENT HAPPENINGS.\p" + .string "For POKéMON TRAINERS, every day\n" + .string "is a storybook tale.\p" + .string "What we want to do is to introduce you\n" + .string "to some of these POKéMON tales.\p" + .string "Today, we bring you the story\n" + .string "of the TRAINER {STR_VAR_1}.\p" + .string "What did {STR_VAR_1} experience recently?\n" + .string "Let’s find out.\p" + .string "Let’s see…$" + +gTVRecentHappeningsText01:: @ 082815AF + .string "Wasn’t that enlightening?\p" + .string "The story gives you a clear idea of what\n" + .string "{STR_VAR_1} has experienced recently.\l" + .string "It’s as if we were there as witnesses!$" + +gTVRecentHappeningsText02:: @ 08281636 + .string "“{STR_VAR_3}.” That\n" + .string "accents the tale and gives it depth.$" + +gTVRecentHappeningsText03:: @ 08281666 + .string "“{STR_VAR_3}.”\n" + .string "That gives the tale a sense of place.\l" + .string "It lets us envision the tale’s setting.$" + +gTVRecentHappeningsText04:: @ 082816BA + .string "The “{STR_VAR_3}”\n" + .string "section of the tale is very expressive.$" + +gTVRecentHappeningsText05:: @ 082816EB + .string "{STR_VAR_1} has recounted a wonderful\n" + .string "tale involving POKéMON.\p" + .string "And now {STR_VAR_1}’s tale is indelibly\n" + .string "etched into your soul, too.\p" + .string "That’s it for today.\n" + .string "Please tune in next time.$" + +gTVMassOutbreakText00:: @ 0828178A + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "We’ve just received word of a very\n" + .string "rare occurrence.\p" + .string "There have been reports of a mass\n" + .string "outbreak of {STR_VAR_2} in the vicinity\l" + .string "of {STR_VAR_1}.\p" + .string "{STR_VAR_2}, as you’re probably aware,\n" + .string "is known as a POKéMON that’s rare\l" + .string "and hard to find.\p" + .string "It sounds like a rare opportunity to\n" + .string "see the mystifying outbreak of\l" + .string "{STR_VAR_2} in the wild.\p" + .string "That’s the news on POKéMON NEWS.$" + +gTV3CheersForPokeblocksText00:: @ 082818F4 + .string "MC: We hope you’re in good cheer,\n" + .string "“3 CHEERS FOR {POKEBLOCK}S” is here!\p" + .string "Today, we examine the {POKEBLOCK} blended\n" + .string "by {STR_VAR_1} and associates.\p" + .string "Without any delay, let me feed it\n" + .string "to my gourmet POKéMON GULPIN.\p" + .string "… … … … … …\n" + .string "… … … … … …$" + +gTV3CheersForPokeblocksText01:: @ 082819C7 + .string "GULPIN: Gubi! Gubii!\p" + .string "MC: And the verdict is very {STR_VAR_1}!\n" + .string "GULPIN says it tastes “{STR_VAR_2}!”\p" + .string "Thank you so much, {STR_VAR_3}!$" + +gTV3CheersForPokeblocksText02:: @ 08281A2F + .string "{STR_VAR_1}’s blending performance\n" + .string "left something to be desired.\p" + .string "If this TRAINER could blend better,\n" + .string "the {POKEBLOCK} would be much tastier.$" + +gTV3CheersForPokeblocksText03:: @ 08281AAC + .string "GULPIN: Gubi! Gubii!\p" + .string "MC: Hmm… It’s too {STR_VAR_1}.\n" + .string "GULPIN says it tastes “{STR_VAR_2}!”\p" + .string "It looks like {STR_VAR_3}’s errors\n" + .string "hurt the blending quality…$" + +gTV3CheersForPokeblocksText04:: @ 08281B28 + .string "It’s too bad that {STR_VAR_1}’s\n" + .string "leading effort went to waste.\p" + .string "Let’s hope {STR_VAR_2} can turn in\n" + .string "a better showing next time!$" + +gTV3CheersForPokeblocksText05:: @ 08281B93 + .string "Tune in next time!\n" + .string "Our slogan is “3 CHEERS FOR {POKEBLOCK}S!”$" + + .string "Hi, there!\p" + .string "I’m a big fan of {STR_VAR_1}.\n" + .string "What’s your opinion of {STR_VAR_1}?$" + + .string "I see, I see. That’s what you think\n" + .string "about the TRAINER.$" + + .string "Have you completely forgotten\n" + .string "about {STR_VAR_1}?$" + + .string "I’m a big fan of {STR_VAR_1}.\n" + .string "What’s your opinion of {STR_VAR_1}?$" + + .string "How strong would you rate {STR_VAR_1}\n" + .string "on a scale of one hundred?$" + + .string "Have you completely forgotten\n" + .string "about {STR_VAR_1}?$" + + .string "Oh, I see!\n" + .string "You should meet {STR_VAR_1} sometime.\l" + .string "I’m sure you’ll become a fan, too!$" + + .string "I see, I see.\p" + .string "Thank you!\n" + .string "That’s very useful to know.\p" + .string "I’ll share this information with other\n" + .string "{STR_VAR_1} fans and discuss it.$" + + .string "There’s going to be a TV special on\n" + .string "{STR_VAR_1} very soon.\p" + .string "I hope you catch it!$" + +gTVTrainerFanClubSpecialText00:: @ 08281DFB + .string "TRAINER FAN CLUB\n" + .string "{STR_VAR_1} SPECIAL!\p" + .string "This is a special presentation for\n" + .string "the fans of {STR_VAR_1} all over HOENN!\p" + .string "Today, we ask the question, “What do\n" + .string "people think of {STR_VAR_1}?”\p" + .string "We posed the question to {STR_VAR_2}\n" + .string "as the TRAINER representative.\p" + .string "We asked, “In one word, how would\n" + .string "you describe {STR_VAR_1}?”\p" + .string "The reply: “{STR_VAR_3}.”\p" + .string "Kudos to {STR_VAR_2}!\n" + .string "What a perceptive opinion!\p" + .string "“{STR_VAR_3} {STR_VAR_1}.”\n" + .string "It has such a nice ring to it!\p" + .string "{STR_VAR_2} also scored {STR_VAR_1}’s\n" + .string "strength from 0 to 100.$" + +gTVTrainerFanClubSpecialText01:: @ 08281F90 + .string "The score was {STR_VAR_3} points!\n" + .string "That is a very high score indeed!\p" + .string "{STR_VAR_2} must obviously hold\n" + .string "{STR_VAR_1} in very high esteem.$" + +gTVTrainerFanClubSpecialText02:: @ 08281FFA + .string "The score was {STR_VAR_3} points!\n" + .string "That is quite a good score.\p" + .string "{STR_VAR_2} must consider\n" + .string "{STR_VAR_1} to be a rival.$" + +gTVTrainerFanClubSpecialText03:: @ 08282052 + .string "The score was {STR_VAR_3} points!\n" + .string "That’s a rather weak score.\p" + .string "{STR_VAR_2} must consider\n" + .string "{STR_VAR_1} to be a mere sidekick.$" + +gTVTrainerFanClubSpecialText04:: @ 082820B2 + .string "The score was {STR_VAR_3} point(s)!\n" + .string "That’s a terrible score.\p" + .string "{STR_VAR_2} must consider\n" + .string "{STR_VAR_1} to be an underling.$" + +gTVTrainerFanClubSpecialText05:: @ 0828210E + .string "There you have it, folks!\p" + .string "I think we all learned something\n" + .string "new about {STR_VAR_1}.\p" + .string "In closing, I’ll leave you with\n" + .string "{STR_VAR_2}’s words.\p" + .string "{STR_VAR_3} {STR_VAR_1}!$" + +gTVNameRaterText00:: @ 0828218A + .string "And now, it’s time for…\n" + .string "THE NAME RATER SHOW.\p" + .string "I tell your POKéMON’s fortune from\n" + .string "the nickname you’ve bestowed.\p" + .string "Advice is what I have to give, and it is\n" + .string "helpful advice that I offer.\p" + .string "Today, I shall do a reading of\n" + .string "the nickname {STR_VAR_3} of {STR_VAR_1}’s\l" + .string "POKéMON {STR_VAR_2}.\p" + .string "Hmhm…\p" + .string "Hmm…\n" + .string "This nickname is…$" + +gTVNameRaterText01:: @ 0828229E + .string "A nickname that hints at talent in many\n" + .string "different ways.\p" + .string "I urge this TRAINER to take courage\n" + .string "and take on many challenges.$" + +gTVNameRaterText02:: @ 08282317 + .string "A nickname that perfectly complements\n" + .string "{STR_VAR_1}, the TRAINER’s name.\p" + .string "It suggests that you will forge a fine\n" + .string "partnership with precise timing.$" + +gTVNameRaterText03:: @ 0828239D + .string "A nickname fit for a unique individual\n" + .string "of a POKéMON!\p" + .string "If raised properly, this POKéMON’s\n" + .string "uniqueness will bloom excessively!$" + +gTVNameRaterText04:: @ 08282418 + .string "A nickname that will nurture the caring\n" + .string "and compassionate side of POKéMON.\p" + .string "If raised properly, this POKéMON will\n" + .string "come to exhibit real warmth!$" + +gTVNameRaterText05:: @ 082824A6 + .string "A very fine nickname that hints at\n" + .string "greatness to come.\p" + .string "I am intrigued about what the future\n" + .string "holds in store for this POKéMON.$" + +gTVNameRaterText06:: @ 08282522 + .string "A good nickname that should make the\n" + .string "POKéMON hale and hearty!\p" + .string "That POKéMON should remain fit and\n" + .string "robust for a long, long time.$" + +gTVNameRaterText07:: @ 082825A1 + .string "A good nickname that should make the\n" + .string "POKéMON very active!\p" + .string "I should think that this POKéMON will be\n" + .string "a strong performer in battles.$" + +gTVNameRaterText08:: @ 08282623 + .string "An appealing nickname that should make\n" + .string "the POKéMON very charming!\p" + .string "I don’t doubt that this POKéMON will be\n" + .string "quite the charmer in POKéMON CONTESTS.$" + +gTVNameRaterText09:: @ 082826B4 + .string "The nickname {STR_VAR_1} is rooted by\n" + .string "the letter “{STR_VAR_3}.”\p" + .string "That letter is supported by the first\n" + .string "letter “{STR_VAR_2},” which gives it a solid sense\l" + .string "of presence as a nickname.$" + +gTVNameRaterText10:: @ 0828274D + .string "The nickname {STR_VAR_1} is very\n" + .string "shapely in a pleasing manner.\p" + .string "The presence of the letters “{STR_VAR_2}” and\n" + .string "“{STR_VAR_3}”--now that is remarkably good!$" + +gTVNameRaterText11:: @ 082827CB + .string "The nickname {STR_VAR_1}--it has a\n" + .string "sublime, flowing feel to it.\p" + .string "The flow from the initial letter “{STR_VAR_2}” to\n" + .string "“{STR_VAR_3}” is especially wonderful.$" + +gTVNameRaterText12:: @ 08282849 + .string "Let’s examine other examples of fine\n" + .string "nicknames, shall we?$" + +gTVNameRaterText13:: @ 08282883 + .string "Try this example. Take a part of the\n" + .string "TRAINER name of {STR_VAR_1}, and end\l" + .string "up with the fine nickname {STR_VAR_2}{STR_VAR_3}.$" + +gTVNameRaterText14:: @ 082828E4 + .string "The nickname {STR_VAR_2}{STR_VAR_3} would also work\n" + .string "quite well.$" + +gTVNameRaterText15:: @ 08282912 + .string "The POKéMON’s species name of\n" + .string "{STR_VAR_2} could be used as the basis\l" + .string "for making the nickname {STR_VAR_1}{STR_VAR_3}.$" + +gTVNameRaterText16:: @ 0828296C + .string "{STR_VAR_1}{STR_VAR_3} would also be an effective\n" + .string "nickname.$" + +gTVNameRaterText17:: @ 08282996 + .string "What should always be avoided is using\n" + .string "another POKéMON species name.\p" + .string "For instance, avoid taking the name of\n" + .string "{STR_VAR_2} to make the nickname {STR_VAR_1}{STR_VAR_3}.\l" + .string "That is unacceptable.$" + +gTVNameRaterText18:: @ 08282A36 + .string "I must say that {STR_VAR_1} is quite\n" + .string "a good nickname.\p" + .string "I hope that the TRAINER will continue\n" + .string "to treat {STR_VAR_1} with love.\p" + .string "That’s it for today’s show.\n" + .string "May we meet again.$" + +gTVPokemonAnglerText00:: @ 08282ACF + .string "{STR_VAR_2} ANGLER\p" + .string "ANNOUNCER: Hello! Today, we’ll get tips\n" + .string "on fishing for {STR_VAR_2}.\p" + .string "GURU, what advice can you give for\n" + .string "catching {STR_VAR_2}?\p" + .string "GURU: Hm? Catching {STR_VAR_2}?\n" + .string "Well, let me tell you, be patient and\l" + .string "wait. That’s the bottom line.\p" + .string "Do you see {STR_VAR_1} over there?\n" + .string "That TRAINER makes a good example.\p" + .string "That TRAINER’s already had\n" + .string "{STR_VAR_3} POKéMON get away.\p" + .string "But there {STR_VAR_1} waits. No giving up.\n" + .string "That’s the law for catching {STR_VAR_2}.\p" + .string "ANNOUNCER: I see…\p" + .string "Oh! {STR_VAR_1} has finally landed an\n" + .string "elusive {STR_VAR_2}!\p" + .string "The TRAINER appears close to tears\n" + .string "out of sheer joy!\p" + .string "Seeing that elated look, I’m getting\n" + .string "the itch to go fishing, too!\p" + .string "Viewers, why not take this as a cue to\n" + .string "try some {STR_VAR_2} fishing?\p" + .string "Until our next broadcast, farewell and\n" + .string "good fishing to you all!$" + +gTVPokemonAnglerText01:: @ 08282D7C + .string "{STR_VAR_2} ANGLER\p" + .string "ANNOUNCER: Hello! Today, we’ll get tips\n" + .string "on fishing for {STR_VAR_2}.\p" + .string "GURU, what advice can you give for\n" + .string "catching {STR_VAR_2}?\p" + .string "GURU: Hm? Catching {STR_VAR_2}?\n" + .string "Well, let me tell you, use your fishing\l" + .string "ROD with vigor!\p" + .string "Do you see {STR_VAR_1} over there?\n" + .string "See how the ROD is handled?\p" + .string "That TRAINER’s already caught\n" + .string "{STR_VAR_3} in a row.\p" + .string "ANNOUNCER: It’s incredible!\n" + .string "It looks like a storm…\p" + .string "Seeing technique of that caliber, I’m\n" + .string "getting the itch to go fishing, too.\p" + .string "Viewers, why not take this as a cue to\n" + .string "try some {STR_VAR_2} fishing?\p" + .string "Until our next broadcast, farewell and\n" + .string "good fishing to you all!$" + +gTVPokemonTodayFailedText00:: @ 08282F9B + .string "Hello!\p" + .string "It’s time for POKéMON TODAY!\p" + .string "BIG SIS: Hi! Is everyone peachy and\n" + .string "perky today?\p" + .string "Today, we’re going to look at {STR_VAR_1}’s\n" + .string "POKéMON {STR_VAR_2}!\p" + .string "BIG BRO: Yeah! That’s what we’re going\n" + .string "to do!$" + +gTVPokemonTodayFailedText01:: @ 0828304D + .string "Oh!\n" + .string "Speaking of {STR_VAR_1}…\p" + .string "BIG SIS, I saw the TRAINER with my very\n" + .string "own eyes!\p" + .string "BIG SIS: Oh, what did you see?\p" + .string "BIG BRO: Well, I had to go on a trip to\n" + .string "{STR_VAR_2}.\p" + .string "That’s when I happened to come across\n" + .string "{STR_VAR_1}, who was trying to catch the\l" + .string "POKéMON {STR_VAR_3}, but…$" + +gTVPokemonTodayFailedText02:: @ 08283135 + .string "The POKéMON managed to get away!\p" + .string "It ended up wasting this many\n" + .string "POKé BALLS: {STR_VAR_2}!\p" + .string "You should have seen the expression\n" + .string "of frustration on {STR_VAR_1}’s face when\l" + .string "the POKéMON took off!$" + +gTVPokemonTodayFailedText03:: @ 082831DF + .string "But {STR_VAR_1} goofed and made the\n" + .string "POKéMON faint!\p" + .string "It ended up wasting this many\n" + .string "POKé BALLS: {STR_VAR_2}!\p" + .string "You should have seen the expression\n" + .string "of stunned dismay on {STR_VAR_1}’s face\l" + .string "when the POKéMON fainted!$" + +gTVPokemonTodayFailedText04:: @ 08283294 + .string "BIG SIS: Hey, there!\n" + .string "That’s not nice!\p" + .string "You shouldn’t be laughing at other\n" + .string "people’s misfortune!\p" + .string "Oh, poor {STR_VAR_1}.\n" + .string "What a shame!\p" + .string "BIG BRO: That’s true!\n" + .string "Sorry for laughing.$" + +gTVPokemonTodayFailedText05:: @ 08283337 + .string "BIG SIS: Bufufu…\p" + .string "BIG BRO: Hey!\n" + .string "You just laughed, too!\p" + .string "BIG SIS: Huh?!\p" + .string "I didn’t laugh!\n" + .string "Honestly, I didn’t!\p" + .string "Oh, poor {STR_VAR_1}.\n" + .string "What a shame!\p" + .string "BIG BRO: …$" + +gTVPokemonTodayFailedText06:: @ 082833C6 + .string "BIG SIS: That’s enough silliness!\n" + .string "Let’s look at today’s POKéMON…\p" + .string "Huh?\n" + .string "We’re out of time already?\p" + .string "Aww!\n" + .string "We couldn’t profile a POKéMON today!\p" + .string "BIG BRO: See you again next time!\p" + .string "BIG SIS: Hey, don’t end the show\n" + .string "without me!$" + +gTVPokemonTodaySuccessfulText00:: @ 082834A0 + .string "Hello!\p" + .string "It’s time for POKéMON TODAY!\p" + .string "BIG SIS: Hi! Is everyone peachy and\n" + .string "perky today?\p" + .string "Today, we’re going to look at {STR_VAR_1}’s\n" + .string "POKéMON {STR_VAR_2}!\p" + .string "BIG BRO: Yeah! That’s what we’re going\n" + .string "to do!$" + +gTVPokemonTodaySuccessfulText01:: @ 08283552 + .string "BIG SIS: {STR_VAR_1} gave the nickname\n" + .string "{STR_VAR_3} to the {STR_VAR_2}!\p" + .string "It sounds like {STR_VAR_3} is getting\n" + .string "good, loving care!$" + +gTVPokemonTodaySuccessfulText02:: @ 082835AE + .string "BIG BRO: The TRAINER had to throw this\n" + .string "many POKé BALLS to catch it: {STR_VAR_3}!\p" + .string "It finally took a single {STR_VAR_2}\n" + .string "to catch it!$" + +gTVPokemonTodaySuccessfulText03:: @ 0828361F + .string "BIG SIS: If it was that easy to catch,\n" + .string "it must have been destiny that brought\l" + .string "{STR_VAR_1} and the {STR_VAR_2} together!$" + +gTVPokemonTodaySuccessfulText04:: @ 08283685 + .string "BIG SIS: Wow! That’s so neat!\p" + .string "But you know what they say, a POKéMON\n" + .string "that takes a lot of effort to catch\l" + .string "earns the love of its TRAINER!$" + +gTVPokemonTodaySuccessfulText05:: @ 0828370C + .string "BIG SIS: {STR_VAR_1}’s {STR_VAR_2} is a\n" + .string "memorable POKéMON because it took an\l" + .string "invaluable MASTER BALL to catch!\p" + .string "BIG BRO: Wow! That’s mega-awesome!\p" + .string "BIG SIS: {STR_VAR_1} must have really\n" + .string "wanted that {STR_VAR_2}, for sure!$" + +gTVPokemonTodaySuccessfulText06:: @ 082837C2 + .string "BIG BRO: Then to give the nickname\n" + .string "{STR_VAR_3} to that {STR_VAR_2}…\p" + .string "You really get a good idea about\n" + .string "{STR_VAR_1}’s TRAINER sense.\p" + .string "BIG SIS: I second that notion!$" + +gTVPokemonTodaySuccessfulText07:: @ 08283848 + .string "If it were me, I’d give that nickname\n" + .string "to something like this {STR_VAR_3}!\p" + .string "BIG BRO: Whoa! That could be the start\n" + .string "of something new!$" + +gTVPokemonTodaySuccessfulText08:: @ 082838C2 + .string "{STR_VAR_2} the {STR_VAR_1}?\n" + .string "Doesn’t that sound perfect?\p" + .string "The letters and everything--they\n" + .string "sound just right for the POKéMON\l" + .string "{STR_VAR_1}!\p" + .string "BIG BRO: Yeah, true, that!$" + +gTVPokemonTodaySuccessfulText09:: @ 0828394A + .string "As far as I know, no TRAINER has ever\n" + .string "given the nickname {STR_VAR_2} to their\l" + .string "{STR_VAR_1}!\p" + .string "BIG BRO: That just goes to show what\n" + .string "great taste the TRAINER has in picking\l" + .string "nicknames!$" + +gTVPokemonTodaySuccessfulText10:: @ 082839EA + .string "The next time I catch a POKéMON,\n" + .string "I should give it the name {STR_VAR_2}.\p" + .string "BIG BRO: Huh? Me, too!\n" + .string "I’ll use the nickname {STR_VAR_2}, too!$" + +gTVPokemonTodaySuccessfulText11:: @ 08283A5F + .string "BIG SIS: Oh, no!\n" + .string "Look at the time!\p" + .string "Well, gang, this is it for today.\n" + .string "See you again next time!\p" + .string "BIG BRO: Remember, it could be your\n" + .string "POKéMON in the spotlight next time!$" + +gTVTodaysSmartShopperText00:: @ 08283B05 + .string "Hello!\p" + .string "It’s time for TODAY’S SMART SHOPPER.\p" + .string "INTERVIEWER: How are you, viewers?\p" + .string "Today we’re visiting a shop\n" + .string "in {STR_VAR_2}.\p" + .string "Let’s check on what the hot sellers\n" + .string "have been recently.$" + +gTVTodaysSmartShopperText01:: @ 08283BAF + .string "Let’s interview the clerk to get the\n" + .string "lowdown.\p" + .string "Hi, how’s your business?\p" + .string "CLERK: Oh, we’re doing excellent.\p" + .string "Recently, {STR_VAR_2} has been\n" + .string "selling especially strongly.\p" + .string "Why, just the other day a TRAINER\n" + .string "named {STR_VAR_1} bought {STR_VAR_3}.$" + +gTVTodaysSmartShopperText02:: @ 08283C81 + .string "INTERVIEWER: The TRAINER bought\n" + .string "{STR_VAR_3} {STR_VAR_2}S? That’s a haul!\p" + .string "If I may say so, {STR_VAR_1} must have\n" + .string "been stocking up for a long journey\l" + .string "to far-off places.\p" + .string "For traveling, {STR_VAR_2}S are so\n" + .string "important!$" + +gTVTodaysSmartShopperText03:: @ 08283D32 + .string "INTERVIEWER: Speaking of the item\n" + .string "{STR_VAR_2}, I just bought {STR_VAR_3} of\l" + .string "them recently.\p" + .string "After all, {STR_VAR_2}’s a great item!$" + +gTVTodaysSmartShopperText04:: @ 08283D99 + .string "INTERVIEWER: {STR_VAR_2}?!\n" + .string "But {STR_VAR_3} of them?!\p" + .string "I didn’t think there would be anyone\n" + .string "buying that many.\p" + .string "My goodness, I can only afford one or\n" + .string "two at a time…$" + +gTVTodaysSmartShopperText05:: @ 08283E28 + .string "INTERVIEWER: One time, I bought\n" + .string "a whole lot of the item {STR_VAR_2}.\p" + .string "But it turned out to be too many.\n" + .string "I ended up regretting it…\p" + .string "Since then, I only buy strictly what\n" + .string "I absolutely need…\p" + .string "Oops!\p" + .string "There’s no point talking about me!$" + +gTVTodaysSmartShopperText06:: @ 08283F01 + .string "CLERK: {STR_VAR_1} also bought the item\n" + .string "{STR_VAR_2} in bulk, taking {STR_VAR_3}.\p" + .string "INTERVIEWER: Oh, that’s smart.\n" + .string "{STR_VAR_2}’s a very good item, too.$" + +gTVTodaysSmartShopperText07:: @ 08283F72 + .string "CLERK: And, the TRAINER also bought\n" + .string "{STR_VAR_3} of the item {STR_VAR_2}.$" + +gTVTodaysSmartShopperText08:: @ 08283FA9 + .string "CLERK: Plus, it was during a big sale.\n" + .string "That’s smart shopping.$" + +gTVTodaysSmartShopperText09:: @ 08283FE7 + .string "INTERVIEWER: Hmm… {STR_VAR_1} sounds like\n" + .string "quite the shrewd bargain hunter!\p" + .string "In total, {STR_VAR_1}’s purchases came to…\p" + .string "¥{STR_VAR_2}?!\n" + .string "What an amazing sum!\p" + .string "Oops! We’re out of time!\n" + .string "See you on our next broadcast!$" + +gTVTodaysSmartShopperText10:: @ 0828409E + .string "CLERK: {STR_VAR_1} is a VIP customer,\n" + .string "no doubt about it.$" + +gTVTodaysSmartShopperText11:: @ 082840CE + .string "Let’s interview the clerk to get the\n" + .string "lowdown.\p" + .string "Hi, how’s your business?\p" + .string "CLERK: Oh, we’re doing unbelievable\n" + .string "business. It’s almost overwhelming.\p" + .string "Recently, a TRAINER named {STR_VAR_1}\n" + .string "bought the item {STR_VAR_2} in bulk.\p" + .string "The TRAINER almost cleared out our\n" + .string "entire stock of {STR_VAR_2}S.\p" + .string "I never dreamt that any customer\n" + .string "would ever need so many {STR_VAR_2}S.\l" + .string "It’s just unheard of!\p" + .string "INTERVIEWER: So that would be like 100\n" + .string "or 200 sold?\p" + .string "CLERK: Oh, no, much more than that!\p" + .string "INTERVIEWER: Oh, my goodness!\n" + .string "{STR_VAR_1} must be a special shopper!\p" + .string "CLERK: {STR_VAR_1} is a VIP customer,\n" + .string "no doubt about it.$" + +gTVTodaysSmartShopperText12:: @ 082842E6 + .string "INTERVIEWER: Hmm…\n" + .string "That is amazing.\p" + .string "But why would the TRAINER need to buy\n" + .string "so many?\p" + .string "… …\p" + .string "The mystery deepens, but this is all\n" + .string "the time we have today.\l" + .string "See you on our next broadcast!\p" + .string "Still, {STR_VAR_1} is certainly an enigma…$" + +gTVWorldOfMastersText00:: @ 082843BA + .string "THE WORLD OF MASTERS\p" + .string "Hello, viewers.\p" + .string "Perhaps you are aware of a TRAINER\n" + .string "named {STR_VAR_1}.\p" + .string "{STR_VAR_1} is famous as a master at\n" + .string "catching POKéMON.\p" + .string "{STR_VAR_1}’s quest for POKéMON depends\n" + .string "entirely on a careful search on foot.\p" + .string "On one memorable day, the TRAINER\n" + .string "walked some {STR_VAR_2} steps.\p" + .string "The total number of POKéMON caught\n" + .string "that day reached an impressive {STR_VAR_3}!$" + +gTVWorldOfMastersText01:: @ 082844FD + .string "That remarkable feat must have been\n" + .string "possible because of the trust between\l" + .string "the TRAINER and {STR_VAR_1}.$" + +gTVWorldOfMastersText02:: @ 0828455B + .string "The master caught the day’s last\n" + .string "{STR_VAR_3} near {STR_VAR_2}.\p" + .string "That POKéMON apparently enjoys\n" + .string "a special status as a record holder.\p" + .string "Skilled TRAINERS should be encouraged\n" + .string "to challenge this fine record.\p" + .string "That’s all for today.\n" + .string "Please tune in next time.$" + +gTVTodaysRivalTrainerText00:: @ 08284641 + .string "TODAY’S RIVAL TRAINER!\p" + .string "Hello, fellow POKéMON TRAINERS!\n" + .string "How are we all doing today?\p" + .string "Today, like every other day,\n" + .string "we’ll examine one of our rivals!$" + +gTVTodaysRivalTrainerText07:: @ 082846D2 + .string "Today’s rival TRAINER is {STR_VAR_1},\n" + .string "who’s around {STR_VAR_3} now.\p" + .string "{STR_VAR_1} has so far registered\n" + .string "{STR_VAR_2} POKéMON in the POKéDEX.$" + +gTVTodaysRivalTrainerText08:: @ 08284738 + .string "Today’s rival TRAINER is {STR_VAR_1},\n" + .string "who’s in a SECRET BASE now.\p" + .string "{STR_VAR_1} has so far registered\n" + .string "{STR_VAR_2} POKéMON in the POKéDEX.$" + +gTVTodaysRivalTrainerText09:: @ 082847A5 + .string "Today’s rival TRAINER is {STR_VAR_1}.\p" + .string "So far, {STR_VAR_1} has registered\n" + .string "{STR_VAR_2} POKéMON in the POKéDEX.$" + +gTVTodaysRivalTrainerText10:: @ 082847F7 + .string "Today’s rival TRAINER is {STR_VAR_1},\n" + .string "who’s on a ferry now.\p" + .string "{STR_VAR_1} has so far registered\n" + .string "{STR_VAR_2} POKéMON in the POKéDEX.$" + + .string "$" + +gTVTodaysRivalTrainerText01:: @ 0828485F + .string "And how many BADGES does our rival\n" + .string "have? The number is {STR_VAR_1}!$" + +gTVTodaysRivalTrainerText02:: @ 0828489A + .string "But our rival hasn’t obtained\n" + .string "a single BADGE yet!$" + +gTVTodaysRivalTrainerText03:: @ 082848CC + .string "Our rival hasn’t obtained a single\n" + .string "BATTLE FRONTIER Symbol yet.$" + +gTVTodaysRivalTrainerText04:: @ 0828490B + .string "Let’s see how many BATTLE FRONTIER\n" + .string "Symbols our rival has.\p" + .string "Gold Symbols: {STR_VAR_1}!\n" + .string "Silver Symbols: {STR_VAR_2}!$" + +gTVTodaysRivalTrainerText05:: @ 0828496B + .string "Our rival has collected {STR_VAR_1} Battle\n" + .string "Point(s) at the BATTLE FRONTIER.$" + +gTVTodaysRivalTrainerText06:: @ 082849AE + .string "So, how did you measure up in\n" + .string "comparison to {STR_VAR_1}?\p" + .string "The adventure rolls on!\p" + .string "Fellow TRAINERS!\p" + .string "Let’s all keep moving forward\n" + .string "and ahead of our rivals!$" + +gTVDewfordTrendWatcherNetworkText00:: @ 08284A3E + .string "DEWFORD TREND-WATCHER NETWORK!\p" + .string "MC: Wassup?\n" + .string "We’ll keep it real with the latest on\l" + .string "what’s hip and happening in DEWFORD.\p" + .string "Our guest today is this old cat whose\n" + .string "claim to fame is being the authority\l" + .string "on all things in DEWFORD.\p" + .string "Old man: Glad to be here.\p" + .string "MC: Let’s cut to the chase, right on.\p" + .string "What’s your word on what’s groovin’\n" + .string "the good folks of DEWFORD?\p" + .string "Old man: {STR_VAR_1} {STR_VAR_2}.\p" + .string "MC: {STR_VAR_1} {STR_VAR_2},\n" + .string "you say?\p" + .string "Old man: No.\p" + .string "{STR_VAR_1} {STR_VAR_2} never\n" + .string "did get popular at all.\p" + .string "Would you like to hear about it?\p" + .string "MC: Uh, no. What we want to know is\n" + .string "what’s the in thing of the moment…$" + +gTVDewfordTrendWatcherNetworkText01:: @ 08284C55 + .string "Old man: {STR_VAR_1} {STR_VAR_2}\n" + .string "was what {STR_VAR_3} from LITTLEROOT\l" + .string "taught me as being trendy…$" + +gTVDewfordTrendWatcherNetworkText02:: @ 08284C9B + .string "Old man: {STR_VAR_1} {STR_VAR_2}\n" + .string "was what {STR_VAR_3} from LITTLEROOT\l" + .string "taught me as being trendy…$" + +gTVDewfordTrendWatcherNetworkText03:: @ 08284CE1 + .string "But it was utterly hopeless.\p" + .string "{STR_VAR_1} {STR_VAR_2} festival!\p" + .string "{STR_VAR_1} {STR_VAR_2} contest!\p" + .string "I tried teaching everyone the best\n" + .string "I could, but…\p" + .string "Perhaps the {STR_VAR_1} part just\n" + .string "wasn’t right…\p" + .string "MC: Uh, excuse me, compadre, I need\n" + .string "to hear about what’s in now…$" + +gTVDewfordTrendWatcherNetworkText04:: @ 08284DB6 + .string "Old man: {STR_VAR_3}!\n" + .string "Please, tell me something bigger than\l" + .string "that {STR_VAR_1} {STR_VAR_2}!$" + +gTVDewfordTrendWatcherNetworkText05:: @ 08284DF5 + .string "Old man: {STR_VAR_3}!\n" + .string "Please, tell me something bigger than\l" + .string "that {STR_VAR_1} {STR_VAR_2}!$" + +gTVDewfordTrendWatcherNetworkText06:: @ 08284E34 + .string "MC: …Uh… So, there you have it,\n" + .string "all you trendy, hep cats out there!\p" + .string "{STR_VAR_1} {STR_VAR_2}…uh…\n" + .string "Didn’t get hip or happening in DEWFORD!\p" + .string "My time is up. Catch you on the fly!\p" + .string "Old man: {STR_VAR_1} {STR_VAR_2}!$" + +gTVHoennTreasureInvestigatorsText00:: @ 08284EDF + .string "HOENN TREASURE INVESTIGATORS!\p" + .string "Hi, gang!\n" + .string "Score any secret items lately?\p" + .string "As always, we’ll examine eyewitness\n" + .string "reports of secrets from all over!\p" + .string "Let’s start with a letter.\n" + .string "It says, “{STR_VAR_1} discovered!”$" + +gTVHoennTreasureInvestigatorsText01:: @ 08284FA1 + .string "Wow, we’d better check this letter\n" + .string "out! Let me read it to you.\p" + .string "…Dear INVESTIGATORS,\n" + .string "I hope you are well.\p" + .string "I recently saw {STR_VAR_2} somewhere\n" + .string "around {STR_VAR_3}.\p" + .string "The TRAINER found the item\n" + .string "{STR_VAR_1}. It made me envious.\p" + .string "…Well, good going, {STR_VAR_2}!\p" + .string "Viewers, let that motivate you to\n" + .string "fire up your ITEMFINDERS and search!\p" + .string "I’ll be waiting for exciting news\n" + .string "from all of you!$" + +gTVHoennTreasureInvestigatorsText02:: @ 082850F5 + .string "Wow, we’d better check this letter\n" + .string "out! Let me read it to you.\p" + .string "…Dear INVESTIGATORS,\n" + .string "I hope you are well.\p" + .string "I recently saw {STR_VAR_2} on a ferry.\p" + .string "The TRAINER found the item\n" + .string "{STR_VAR_1}. It made me envious.\p" + .string "…Well, good going, {STR_VAR_2}!\p" + .string "Viewers, let that motivate you to\n" + .string "fire up your ITEMFINDERS and search!\p" + .string "I’ll be waiting for exciting news\n" + .string "from all of you!$" + +gTVFindThatGamerText00:: @ 08285240 + .string "FIND THAT GAMER!\p" + .string "Hey, all you gamers!\n" + .string "How’s your {STR_VAR_2} spinning?\p" + .string "Like always, we’ll cast our spotlight\n" + .string "on a rare TRAINER who’s visited the\l" + .string "GAME CORNER!\p" + .string "Today, our no. 1 gamer is…\n" + .string "{STR_VAR_1}!$" + +gTVFindThatGamerText01:: @ 082852F4 + .string "{STR_VAR_1} played the {STR_VAR_2} game\n" + .string "and won a rare {STR_VAR_3} COINS.\p" + .string "“When {STR_VAR_1} comes, we need to\n" + .string "make sure we have enough COINS.”\p" + .string "That’s what the GAME CORNER clerks\n" + .string "mutter when our gamer is in play!\p" + .string "Viewers, it’s best to watch your COINS\n" + .string "like {STR_VAR_1} if you visit the GAME\l" + .string "CORNER and play the {STR_VAR_2} game.\p" + .string "This is live from the GAME CORNER--\n" + .string "where you can feel the excitement!\p" + .string "That’s all for today!$" + +gTVFindThatGamerText02:: @ 08285463 + .string "{STR_VAR_1} played the {STR_VAR_2} game\n" + .string "and lost {STR_VAR_3} COINS.\p" + .string "“When {STR_VAR_1} comes, our COIN\n" + .string "sales seem to increase.”\p" + .string "That’s what the GAME CORNER clerks\n" + .string "say when our gamer is in play!$" + +gTVFindThatGamerText03:: @ 08285500 + .string "Viewers, it’s best to watch your COINS\n" + .string "like {STR_VAR_1} if you visit the GAME\l" + .string "CORNER and play the {STR_VAR_2} game.\p" + .string "This is live from the GAME CORNER--\n" + .string "where you can feel the excitement!\p" + .string "That’s all for today!$" + +gTVBreakingNewsText00:: @ 082855BF + .string "BREAKING NEWS TV!$" + +gTVBreakingNewsText01:: @ 082855D1 + .string "Rare {STR_VAR_2} caught by\n" + .string "{STR_VAR_1}!\p" + .string "We’re live from the vicinity of\n" + .string "{STR_VAR_3}!\p" + .string "{STR_VAR_1} successfully captured\n" + .string "a rare {STR_VAR_2} earlier here!$" + +gTVBreakingNewsText02:: @ 0828563C + .string "When {STR_VAR_1} encountered the rare\n" + .string "{STR_VAR_2}, the TRAINER sent out\l" + .string "the POKéMON {STR_VAR_3}.$" + +gTVBreakingNewsText03:: @ 08285682 + .string "In the battle, the number of POKé\n" + .string "BALLS thrown by the TRAINER was {STR_VAR_1}.\p" + .string "Ultimately, the rare POKéMON was\n" + .string "caught by the {STR_VAR_2} used last.$" + +gTVBreakingNewsText04:: @ 08285705 + .string "In that instant, {STR_VAR_2}\n" + .string "echoed with {STR_VAR_1}’s roars of\l" + .string "triumphant joy.\p" + .string "I must say I’m a little envious of\n" + .string "{STR_VAR_1}. I’d love to roar, too.\p" + .string "…That ends the live feed from\n" + .string "the happy scene!$" + +gTVBreakingNewsText05:: @ 082857B0 + .string "{STR_VAR_1} fails to capture a rare\n" + .string "{STR_VAR_2}!\p" + .string "We’re live from the vicinity of\n" + .string "{STR_VAR_3}!\p" + .string "It was here that {STR_VAR_1} failed\n" + .string "to capture a rare {STR_VAR_2}!$" + +gTVBreakingNewsText06:: @ 08285824 + .string "When {STR_VAR_1} encountered the rare\n" + .string "{STR_VAR_2}, the TRAINER sent out\l" + .string "the POKéMON {STR_VAR_3}.$" + +gTVBreakingNewsText07:: @ 0828586A + .string "The TRAINER made the {STR_VAR_2}\n" + .string "use the move {STR_VAR_1}.\p" + .string "Without meaning to, the TRAINER\n" + .string "made the rare POKéMON faint…$" + +gTVBreakingNewsText12:: @ 082858D0 + .string "However, {STR_VAR_1} panicked at\n" + .string "the sight of the rare {STR_VAR_2}.\p" + .string "In confusion, the TRAINER ordered\n" + .string "{STR_VAR_3} to attack.\p" + .string "Without meaning to, the TRAINER\n" + .string "made the rare POKéMON faint.$" + +gTVBreakingNewsText08:: @ 0828596F + .string "In that instant, {STR_VAR_2}\n" + .string "echoed with {STR_VAR_1}’s shrieks of\l" + .string "frustration…$" + +gTVBreakingNewsText09:: @ 082859AC + .string "However, {STR_VAR_1} seemed to run\n" + .string "out of POKé BALLS.\p" + .string "The TRAINER had to break off\n" + .string "the battle with the rare {STR_VAR_2}.\p" + .string "In that instant, {STR_VAR_3}\n" + .string "echoed with {STR_VAR_1}’s shrieks of\l" + .string "frustration…$" + +gTVBreakingNewsText10:: @ 08285A50 + .string "However, the {STR_VAR_2} fled without\n" + .string "warning.\p" + .string "In that instant, {STR_VAR_3}\n" + .string "echoed with {STR_VAR_1}’s shrieks of\l" + .string "frustration…$" + +gTVBreakingNewsText11:: @ 08285AB3 + .string "I must say I feel for {STR_VAR_1}.\n" + .string "Why, it makes me want to shriek, too.\p" + .string "…That ends the live feed from\n" + .string "the melancholy scene!$" + +gTVSecretBaseVisitText00:: @ 08285B27 + .string "Hello, folks!\n" + .string "It’s time again for\l" + .string "a SECRET BASE VISIT.\p" + .string "Today, we visit the SECRET BASE\n" + .string "of {STR_VAR_1}.\p" + .string "How has {STR_VAR_1} personalized\n" + .string "the SECRET BASE?\p" + .string "Let’s find out!\n" + .string "… … … … … …$" + +gTVSecretBaseVisitText01:: @ 08285BCA + .string "Oh!\n" + .string "How marvelous!\p" + .string "This {STR_VAR_2}…\n" + .string "It’s not what one would expect to\l" + .string "find here!$" + +gTVSecretBaseVisitText02:: @ 08285C13 + .string "Oh!\n" + .string "How remarkable!\p" + .string "There isn’t a single piece\n" + .string "of furniture or interior goods!\p" + .string "Mere mortals couldn’t hope to\n" + .string "imitate this bold statement!\p" + .string "It’s simple, but it bursts, yes,\n" + .string "bursts with wildness!\p" + .string "My hat’s off to you, {STR_VAR_1}.\n" + .string "It had to be you!$" + +gTVSecretBaseVisitText03:: @ 08285CFF + .string "Oh! I see!\n" + .string "With perfect clarity, I see it!\p" + .string "This {STR_VAR_2} being here…\n" + .string "It sends an effective message!$" + +gTVSecretBaseVisitText04:: @ 08285D5D + .string "Oh! I see!\n" + .string "With perfect clarity, I see it!\p" + .string "This space is kept deliberately\n" + .string "clear of interior items!\p" + .string "It sends an effective message!$" + +gTVSecretBaseVisitText05:: @ 08285DE0 + .string "Wheeew!\p" + .string "The pairing of the {STR_VAR_2}\n" + .string "with the {STR_VAR_3}!\p" + .string "It’s a dream combination if there\n" + .string "ever was one!$" + +gTVSecretBaseVisitText06:: @ 08285E3B + .string "Wheeew!\p" + .string "The placement of this {STR_VAR_2}\n" + .string "right here…\p" + .string "It has a presence that fills\n" + .string "the entire SECRET BASE!$" + +gTVSecretBaseVisitText07:: @ 08285E9D + .string "Wheeew!\p" + .string "There’s nothing in place here.\p" + .string "This empty space has an effect on\n" + .string "the entire SECRET BASE.$" + +gTVSecretBaseVisitText08:: @ 08285EFE + .string "Oh!\n" + .string "Here comes {STR_VAR_1}!\l" + .string "Let’s challenge the TRAINER!\p" + .string "… … … … … …\n" + .string "… … … … … …$" + +gTVSecretBaseVisitText09:: @ 08285F46 + .string "Sigh…\n" + .string "I’ve got to hand it to {STR_VAR_1}.\p" + .string "The TRAINER’s POKéMON were truly\n" + .string "worthy of the CHAMPION’s title.\p" + .string "They gave ample proof of {STR_VAR_1}’s\n" + .string "toughness as a TRAINER.\p" + .string "That the {STR_VAR_2} knew the move\n" + .string "{STR_VAR_3}…\p" + .string "It shows you what sort of a TRAINER\n" + .string "{STR_VAR_1} is.\p" + .string "Certainly, it was quite a lesson!$" + +gTVSecretBaseVisitText10:: @ 08286049 + .string "Aiyeeh!\n" + .string "I’ve got to hand it to {STR_VAR_1}.\p" + .string "The TRAINER’s POKéMON were\n" + .string "monstrously tough!\p" + .string "They gave ample proof of {STR_VAR_1}’s\n" + .string "tenacity as a TRAINER.\p" + .string "That the {STR_VAR_2} knew the move\n" + .string "{STR_VAR_3}…\p" + .string "It shows you what sort of a TRAINER\n" + .string "{STR_VAR_1} is.\p" + .string "Certainly, it was quite a lesson!$" + +gTVSecretBaseVisitText11:: @ 0828613A + .string "Wheeew!\n" + .string "I’ve got to hand it to {STR_VAR_1}.\p" + .string "The TRAINER’s POKéMON were clearly\n" + .string "raised in a well-balanced manner.\p" + .string "They gave ample proof of {STR_VAR_1}’s\n" + .string "thoughtfulness as a TRAINER.\p" + .string "That the {STR_VAR_2} knew the move\n" + .string "{STR_VAR_3}…\p" + .string "It shows you what sort of a TRAINER\n" + .string "{STR_VAR_1} is.\p" + .string "Certainly, it was quite a lesson!$" + +gTVSecretBaseVisitText12:: @ 08286248 + .string "Well, well!\n" + .string "I’ve got to hand it to {STR_VAR_1}.\p" + .string "The TRAINER’s POKéMON showed\n" + .string "great promise for future growth.\p" + .string "They represented {STR_VAR_1}’s\n" + .string "hopes and dreams.\p" + .string "That the {STR_VAR_2} knew the move\n" + .string "{STR_VAR_3}…\p" + .string "It shows you what sort of a TRAINER\n" + .string "{STR_VAR_1} is.\p" + .string "Certainly, it was quite a lesson!$" + +gTVSecretBaseVisitText13:: @ 08286340 + .string "I must say, what a superb SECRET BASE\n" + .string "it was!\p" + .string "Viewers, if you have the chance,\n" + .string "do visit {STR_VAR_1}’s SECRET BASE.\p" + .string "Until next time, I bid you adieu!$" + +gTVPokemonLotteryWinnerFlashReportText00:: @ 082863CC + .string "It’s exciting!\n" + .string "It’s dramatic!\p" + .string "It’s the POKéMON LOTTERY\n" + .string "WINNER FLASH REPORT!\p" + .string "Hello! We’re coming at you live from\n" + .string "the POKéMON LOTTERY CORNER on\l" + .string "the ground floor of the LILYCOVE\l" + .string "DEPARTMENT STORE!\p" + .string "Like it always happens, another\n" + .string "lucky TRAINER appeared today!\p" + .string "That TRAINER’s name…\n" + .string "{STR_VAR_1}!\p" + .string "{STR_VAR_1} won the {STR_VAR_2} prize\n" + .string "and took home the {STR_VAR_3}!\p" + .string "{STR_VAR_1}!\n" + .string "Congratulations!\p" + .string "Viewers, don’t just watch,\n" + .string "get in on the action!\p" + .string "All of us at the LILYCOVE DEPARTMENT\n" + .string "STORE look forward to your next visit!\p" + .string "This has been a live broadcast from\n" + .string "the LILYCOVE DEPARTMENT STORE,\l" + .string "offering you the greatest selection\l" + .string "in all HOENN!$" + +gTVThePokemonBattleSeminarText00:: @ 08286616 + .string "THE POKéMON BATTLE SEMINAR!\p" + .string "We examine battles to see what\n" + .string "lessons we may learn from others.\p" + .string "Today’s case study is on {STR_VAR_1}’s\n" + .string "battle.\p" + .string "{STR_VAR_1}’s {STR_VAR_2} was\n" + .string "battling one {STR_VAR_3}…$" + +gTVThePokemonBattleSeminarText01:: @ 082866B6 + .string "And it used the move {STR_VAR_3}\n" + .string "on the {STR_VAR_2}…\p" + .string "Hmm… {STR_VAR_1}!\n" + .string "That’s the wrong thing to do!$" + +gTVThePokemonBattleSeminarText02:: @ 08286700 + .string "In addition to the doomed move,\n" + .string "the TRAINER’s {STR_VAR_1} also knew$" + +gTVThePokemonBattleSeminarText03:: @ 0828673B + .string "the moves {STR_VAR_1}, {STR_VAR_2},\n" + .string "and {STR_VAR_3}.$" + +gTVThePokemonBattleSeminarText04:: @ 08286755 + .string "the moves {STR_VAR_1} and\n" + .string "{STR_VAR_2}.$" + +gTVThePokemonBattleSeminarText05:: @ 0828676A + .string "the move {STR_VAR_2}.$" + +gTVThePokemonBattleSeminarText06:: @ 08286777 + .string "So, in this situation, what should\n" + .string "the TRAINER have used?\p" + .string "… … … … … …\n" + .string "The move {STR_VAR_1}!\p" + .string "The move {STR_VAR_1} would have been\n" + .string "absolutely better than {STR_VAR_2}.\p" + .string "Viewers, I urge you to learn from this\n" + .string "case and battle with intelligence!\p" + .string "Until next time, farewell!$" + +gTVTrainerFanClubText00:: @ 08286866 + .string "All together now!\n" + .string "TRAINER FAN CLUB!\p" + .string "MC: How’s everyone groovin’?\n" + .string "Today, we’ve rounded up the fans of\l" + .string "the hyper-popular TRAINER {STR_VAR_1}!\p" + .string "FANS: Wrooooooaaaaah!\p" + .string "FANS: {STR_VAR_1}!\p" + .string "MC: Everyone!\n" + .string "How do you like {STR_VAR_1}?!\p" + .string "FANS: We love {STR_VAR_1}!\p" + .string "MC: What do you love about\n" + .string "{STR_VAR_1}?!$" + +gTVTrainerFanClubText01:: @ 0828695E + .string "FANS: Their cool way of throwing\n" + .string "POKé BALLS!$" + +gTVTrainerFanClubText02:: @ 0828698B + .string "FANS: Their adorable way of running!$" + +gTVTrainerFanClubText03:: @ 082869B0 + .string "FANS: How the TRAINER turns tough\n" + .string "when the going gets tough!$" + +gTVTrainerFanClubText04:: @ 082869ED + .string "FANS: The TRAINER’s knowledge of\n" + .string "POKéMON!$" + +gTVTrainerFanClubText05:: @ 08286A17 + .string "FANS: The TRAINER’s kindness toward\n" + .string "all POKéMON!$" + +gTVTrainerFanClubText06:: @ 08286A48 + .string "FANS: The TRAINER’s amazing\n" + .string "BIKE-riding techniques!$" + +gTVTrainerFanClubText07:: @ 08286A7C + .string "FANS: The TRAINER’s impressive\n" + .string "item-buying style!$" + +gTVTrainerFanClubText08:: @ 08286AAE + .string "FANS: The TRAINER’s charming way\n" + .string "of nicknaming POKéMON!$" + +gTVTrainerFanClubText09:: @ 08286AE6 + .string "FANS: The TRAINER’s nifty style of\n" + .string "decorating a SECRET BASE!$" + +gTVTrainerFanClubText10:: @ 08286B23 + .string "FANS: The TRAINER’s bold ways of\n" + .string "using TMs!$" + +gTVTrainerFanClubText11:: @ 08286B4F + .string "MC: As you’ve just seen, {STR_VAR_1}\n" + .string "is hot! Like, too hot to touch, yow!\p" + .string "Among {STR_VAR_1}’s FANS\n" + .string "there’s a special slogan!\p" + .string "MC: When I say {STR_VAR_1},\n" + .string "you say…\p" + .string "FANS: {STR_VAR_2}!\p" + .string "FANS: {STR_VAR_3}!\p" + .string "FANS: {STR_VAR_2}!\p" + .string "FANS: {STR_VAR_3}!\p" + .string "MC: That’s right, when someone says,\n" + .string "“{STR_VAR_1}”…\p" + .string "Come back with, “{STR_VAR_2}\n" + .string "{STR_VAR_3}!”\p" + .string "That has such a unique ring to it!\n" + .string "I can see why people become FANS\l" + .string "of {STR_VAR_1}!\p" + .string "Okay, you, in front of the TV, join us!\n" + .string "All together now!\p" + .string "MC: When I say {STR_VAR_1},\n" + .string "you say…\p" + .string "FANS: {STR_VAR_2}!\p" + .string "FANS: {STR_VAR_3}!\p" + .string "FANS: {STR_VAR_2}!\p" + .string "FANS: {STR_VAR_3}!\p" + .string "MC: Thanks for joining us, all you\n" + .string "wild FANS of {STR_VAR_1}!\l" + .string "That’s the show! See you again!\p" + .string "MC: When I say {STR_VAR_1},\n" + .string "you say…\p" + .string "FANS: {STR_VAR_2}!\p" + .string "FANS: {STR_VAR_3}!$" + +gTVCutiesText00:: @ 08286D8F + .string "SPOT THE CUTIES!\n" + .string "POKéMON IN RIBBONS!\p" + .string "Hello, my sweet viewers!\p" + .string "I just know you’ll agree, but a POKéMON\n" + .string "wearing RIBBONS is simply divine!\p" + .string "Today, I want to share with you\n" + .string "a lovely POKéMON I spotted while\l" + .string "out on a stroll in town.\p" + .string "Today’s featured pretty POKéMON\n" + .string "is {STR_VAR_1}’s {STR_VAR_2}.$" + +gTVCutiesText01:: @ 08286E9D + .string "The number of RIBBONS that\n" + .string "{STR_VAR_2} wears is {STR_VAR_3}.\p" + .string "It says a lot about how much\n" + .string "{STR_VAR_1} adores the POKéMON.$" + +gTVCutiesText02:: @ 08286EFC + .string "{STR_VAR_2} wears an amazing\n" + .string "{STR_VAR_3} RIBBONS!\p" + .string "It speaks volumes about {STR_VAR_1}’s\n" + .string "commitment to the POKéMON!$" + +gTVCutiesText03:: @ 08286F54 + .string "{STR_VAR_2} wears an incredible\n" + .string "{STR_VAR_3} RIBBONS!\p" + .string "It shows you {STR_VAR_1}’s total\n" + .string "dedication as a collector!$" + +gTVCutiesText04:: @ 08286FAA + .string "Let us take a closer look at the many\n" + .string "RIBBONS worn by {STR_VAR_2}.$" + +gTVCutiesText05:: @ 08286FE4 + .string "The CHAMPION RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it upon entering\n" + .string "the HALL OF FAME.\p" + .string "It verily draws out the bravery\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the CHAMP RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText06:: @ 082870A3 + .string "The COOL RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for winning\n" + .string "a COOL CONTEST.\p" + .string "It verily draws out the coolness\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the COOL RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText07:: @ 0828715A + .string "The BEAUTY RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for winning\n" + .string "a BEAUTY CONTEST.\p" + .string "It verily draws out the beauty\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the BEAUTY RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText08:: @ 08287215 + .string "The CUTE RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for winning\n" + .string "a CUTE CONTEST.\p" + .string "It verily draws out the cuteness\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the CUTE RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText09:: @ 082872CC + .string "The SMART RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for winning\n" + .string "a SMART CONTEST.\p" + .string "It verily draws out the smartness\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the SMART RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText10:: @ 08287387 + .string "The TOUGH RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for winning\n" + .string "a TOUGH CONTEST.\p" + .string "It verily draws out the toughness\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the TOUGH RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText11:: @ 08287442 + .string "The WINNING RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for its feats\n" + .string "at the BATTLE TOWER.\p" + .string "It verily draws out the mightiness\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the WINNING RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText12:: @ 08287508 + .string "The VICTORY RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for its feats\n" + .string "at the BATTLE TOWER.\p" + .string "It verily draws out the incredible\n" + .string "mightiness of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the VICTORY RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText13:: @ 082875D9 + .string "The ARTIST RIBBON is especially\n" + .string "fetching.\p" + .string "{STR_VAR_2} received it for being\n" + .string "the model for an artist.\p" + .string "It verily draws out the pop-star charm\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the ARTIST RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText14:: @ 082876A1 + .string "The Hard Worker RIBBON is\n" + .string "especially fetching.\p" + .string "{STR_VAR_2} received it for being\n" + .string "an especially dedicated worker.\p" + .string "It verily draws out the determination\n" + .string "of {STR_VAR_2}.\p" + .string "{STR_VAR_2} and the Hard Worker RIBBON!\n" + .string "The combination is super effective!$" + +gTVCutiesText15:: @ 08287779 + .string "…Sigh…\p" + .string "RIBBONS and POKéMON…\n" + .string "They go so wonderfully together!\p" + .string "Before I swoon,\n" + .string "I bid you all farewell!$" + +gTVPokemonNewsBattleFrontierText00:: @ 082877DE + .string "Greetings!\n" + .string "It’s time for POKéMON NEWS.\p" + .string "We’ve got some uplifting news from\n" + .string "the BATTLE FRONTIER.$" + +gTVPokemonNewsBattleFrontierText01:: @ 0828783D + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE TOWER’s SINGLE BATTLE\l" + .string "ROOM challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText02:: @ 082878B3 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE TOWER’s DOUBLE BATTLE\l" + .string "ROOM challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText03:: @ 08287929 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE TOWER’s MULTI BATTLE\l" + .string "ROOM challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText04:: @ 0828799E + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE TOWER’s LINK MULTI BATTLE\l" + .string "ROOM challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText05:: @ 08287A18 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-championship-streak record\l" + .string "competing in the BATTLE DOME’s\l" + .string "SINGLE BATTLE Tournaments.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText06:: @ 08287A97 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-championship-streak record\l" + .string "competing in the BATTLE DOME’s\l" + .string "DOUBLE BATTLE Tournaments.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText07:: @ 08287B16 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE FACTORY’s Battle\l" + .string "Swap Single challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText08:: @ 08287B8E + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE FACTORY’s Battle\l" + .string "Swap Double challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText09:: @ 08287C06 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "record of clearing {STR_VAR_2} rooms\l" + .string "while on the BATTLE PIKE’s Battle\l" + .string "Choice challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText10:: @ 08287C7D + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while\l" + .string "competing in the BATTLE ARENA’s\l" + .string "Set KO Tournaments.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText11:: @ 08287CF3 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE PALACE’s SINGLE BATTLE\l" + .string "HALL challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText12:: @ 08287D6A + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "{STR_VAR_2}-win-streak record while on\l" + .string "the BATTLE PALACE’s DOUBLE BATTLE\l" + .string "HALL challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText13:: @ 08287DE1 + .string "The TRAINER {STR_VAR_1} set a new\n" + .string "record of clearing {STR_VAR_2} floors\l" + .string "while on the BATTLE PYRAMID’s\l" + .string "Battle Quest challenge.\p" + .string "Here’s to {STR_VAR_1}!$" + +gTVPokemonNewsBattleFrontierText14:: @ 08287E5B + .string "And to the three POKéMON, {STR_VAR_1},\n" + .string "{STR_VAR_2}, and {STR_VAR_3}!\p" + .string "Congratulations for your\n" + .string "record-breaking performance!$" + +gTVPokemonNewsBattleFrontierText15:: @ 08287EBB + .string "And to the two POKéMON, {STR_VAR_1}\n" + .string "and {STR_VAR_2}!\p" + .string "Congratulations for your\n" + .string "record-breaking performance!$" + +gTVPokemonNewsBattleFrontierText16:: @ 08287F14 + .string "And to the four POKéMON: {STR_VAR_1}!\p" + .string "{STR_VAR_2}!\p" + .string "{STR_VAR_3}!$" + +gTVPokemonNewsBattleFrontierText17:: @ 08287F39 + .string "And {STR_VAR_1}!\p" + .string "Congratulations for your\n" + .string "record-breaking performance!$" + +gTVPokemonNewsBattleFrontierText18:: @ 08287F77 + .string "Let’s hope for more record-setting\n" + .string "feats from {STR_VAR_1} and the loyal\l" + .string "POKéMON!\p" + .string "That’s the news on POKéMON NEWS!$" + +gTVWhatsNo1InHoennTodayText00:: @ 08287FE0 + .string "WHAT’S NO. 1 IN HOENN TODAY?\n" + .string "Yes, it’s that time again!\p" + .string "Hello, viewers! Are you giving your\n" + .string "best at whatever you do?\p" + .string "Let’s have a look at the TRAINER\n" + .string "who did the very best today!\p" + .string "Today’s no. 1 TRAINER is none other\n" + .string "than {STR_VAR_1}!$" + +gTVWhatsNo1InHoennTodayText01:: @ 082880C0 + .string "In one day, {STR_VAR_1} spun the SLOTS\n" + .string "at the GAME CORNER {STR_VAR_2} times.\p" + .string "While playing, {STR_VAR_1} was heard\n" + .string "murmuring, “For me, the reels don’t\l" + .string "even move…”\l" + .string "Isn’t that interesting?$" + +gTVWhatsNo1InHoennTodayText02:: @ 0828815F + .string "In one day, {STR_VAR_1} played\n" + .string "the ROULETTE game at the GAME\l" + .string "CORNER {STR_VAR_2} times.\p" + .string "While playing, {STR_VAR_1} shouted,\n" + .string "“Let the balls decide!”\p" + .string "The TRAINER’s eyes were focused and\n" + .string "the face showed concentration.$" + +gTVWhatsNo1InHoennTodayText03:: @ 0828821A + .string "In one day, {STR_VAR_1} battled\n" + .string "wild POKéMON {STR_VAR_2} times!\p" + .string "Apparently, {STR_VAR_1}’s POKéMON\n" + .string "have grown incomparably stronger.\p" + .string "They appear eager to battle anywhere,\n" + .string "anytime, and anyhow!$" + +gTVWhatsNo1InHoennTodayText04:: @ 082882BE + .string "In just one day, {STR_VAR_1} spun\n" + .string "the BERRY BLENDER {STR_VAR_2} times!\p" + .string "Toward the end, even {STR_VAR_1}\n" + .string "seemed to get dizzy.\p" + .string "The TRAINER appeared to totter\n" + .string "around like a SPINDA!$" + +gTVWhatsNo1InHoennTodayText05:: @ 08288355 + .string "In just one day, {STR_VAR_1} planted\n" + .string "{STR_VAR_2} BERRIES!\p" + .string "As a result, {STR_VAR_1}’s clothes\n" + .string "became filthy with dirt.\p" + .string "Where the TRAINER planted, countless\n" + .string "flowers have burst into bloom.\p" + .string "The flowers are said to soothe\n" + .string "the emotions of people.$" + +gTVWhatsNo1InHoennTodayText06:: @ 0828842B + .string "In just one day, {STR_VAR_1} picked\n" + .string "{STR_VAR_2} BERRIES!\p" + .string "{STR_VAR_1}’s BAG became so filled\n" + .string "with BERRIES, the TRAINER had trouble\l" + .string "walking afterward!$" + +gTVWhatsNo1InHoennTodayText07:: @ 082884A5 + .string "In just one day, {STR_VAR_1} obtained\n" + .string "{STR_VAR_2} Battle Points!\p" + .string "{STR_VAR_1} was later seen wrestling\n" + .string "with the choice of exchanging\l" + .string "the Battle Points for a cool item or\l" + .string "a nifty interior decoration.\p" + .string "The TRAINER reportedly was grinning\n" + .string "while mulling options.$" + +gTVWhatsNo1InHoennTodayText08:: @ 0828858B + .string "Well, isn’t that something!\p" + .string "{STR_VAR_1}!\n" + .string "You’re today’s no. 1 TRAINER!\p" + .string "Viewers, take heart from {STR_VAR_1}!\n" + .string "You, too, can be no. 1 every day!$" + +gTVSecretBaseSecretsText00:: @ 08288608 + .string "SECRET BASE SECRETS!\p" + .string "What do TRAINERS do in the secrecy\n" + .string "of SECRET BASES?\p" + .string "Today, we investigate {STR_VAR_1}’s\n" + .string "SECRET BASE.\p" + .string "Oh? It looks like {STR_VAR_2} has come\n" + .string "for a visit.\p" + .string "Let’s have a peek!\p" + .string "What will {STR_VAR_2} do?$" + +gTVSecretBaseSecretsText01:: @ 082886C8 + .string "What will {STR_VAR_2} do next?$" + +gTVSecretBaseSecretsText02:: @ 082886DE + .string "And now, what will {STR_VAR_2} do?$" + +gTVSecretBaseSecretsText03:: @ 082886F8 + .string "In the end, {STR_VAR_2} took {STR_VAR_3} steps\n" + .string "in {STR_VAR_1}’s SECRET BASE before\l" + .string "leaving.$" + +gTVSecretBaseSecretsText04:: @ 08288739 + .string "Hmm…\p" + .string "It appears as if {STR_VAR_1}’s SECRET\n" + .string "BASE failed to interest {STR_VAR_2}…$" + +gTVSecretBaseSecretsText05:: @ 08288777 + .string "{STR_VAR_2} appears to have enjoyed\n" + .string "{STR_VAR_1}’s SECRET BASE thoroughly.$" + +gTVSecretBaseSecretsText06:: @ 082887AF + .string "{STR_VAR_2} appears to have become\n" + .string "a huge fan of {STR_VAR_1}’s\l" + .string "SECRET BASE.$" + +gTVSecretBaseSecretsText07:: @ 082887E9 + .string "Viewers may want to check out\n" + .string "{STR_VAR_1}’s SECRET BASE, too.\p" + .string "Tune in next time as we visit another\n" + .string "SECRET BASE! Thanks for joining us!$" + +gTVSecretBaseSecretsText08:: @ 08288868 + .string "The visitor has stopped!\p" + .string "The visitor isn’t moving at all!\p" + .string "Was {STR_VAR_1}’s SECRET BASE\n" + .string "that unimpressive?$" + +gTVSecretBaseSecretsText09:: @ 082888CA + .string "The visitor has stopped!\p" + .string "The visitor isn’t moving at all!\p" + .string "Is it fatigue?\n" + .string "Has the visitor grown weary?$" + +gTVSecretBaseSecretsText10:: @ 08288930 + .string "The visitor sat down on a chair!\n" + .string "The visitor is seated!\p" + .string "Look at that look of delight!\p" + .string "That chair must be very comfortable\n" + .string "to get that response!$" + +gTVSecretBaseSecretsText11:: @ 082889C0 + .string "The visitor charged at a balloon!\p" + .string "It burst!\n" + .string "Oh, my goodness, it popped!\p" + .string "The visitor appears startled by\n" + .string "the sudden noise!$" + +gTVSecretBaseSecretsText12:: @ 08288A3A + .string "The visitor entered a TENT!\p" + .string "The visitor is running around!\p" + .string "Oh, my, the visitor is frolicking!\p" + .string "The visitor appears surprised by\n" + .string "the TENT’s size!$" + +gTVSecretBaseSecretsText13:: @ 08288ACA + .string "The visitor is examining\n" + .string "a potted plant!\p" + .string "The visitor has surprisingly\n" + .string "mature taste!$" + +gTVSecretBaseSecretsText14:: @ 08288B1E + .string "The visitor is examining\n" + .string "a GOLD SHIELD!\p" + .string "The visitor’s eyes appear to be\n" + .string "lit up with wonder!$" + +gTVSecretBaseSecretsText15:: @ 08288B7A + .string "The visitor is examining\n" + .string "a SILVER SHIELD!\p" + .string "The visitor appears to be wide-eyed!$" + +gTVSecretBaseSecretsText16:: @ 08288BC9 + .string "The visitor is examining\n" + .string "a GLASS ORNAMENT!\p" + .string "Oh, no!\p" + .string "The visitor is touching it!\p" + .string "It’s getting covered with\n" + .string "fingerprints…$" + +gTVSecretBaseSecretsText17:: @ 08288C40 + .string "The visitor is watching television!\p" + .string "Looks like we have a big fan of TV!$" + +gTVSecretBaseSecretsText18:: @ 08288C88 + .string "The visitor stomped on a MUD BALL!\p" + .string "The visitor looks delighted!$" + +gTVSecretBaseSecretsText19:: @ 08288CC8 + .string "…Oh?\p" + .string "The visitor is reaching for their own\n" + .string "BAG and rummaging about in it!\p" + .string "The visitor pulled out\n" + .string "one {STR_VAR_2}!\p" + .string "Look at the visitor smile while\n" + .string "holding up the {STR_VAR_2}!\p" + .string "It’s like a TV commercial!$" + +gTVSecretBaseSecretsText20:: @ 08288D7F + .string "The visitor grabs a cushion and…$" + +gTVSecretBaseSecretsText21:: @ 08288DA0 + .string "…begins hitting it!\p" + .string "Is the visitor under a lot of stress?$" + +gTVSecretBaseSecretsText22:: @ 08288DDA + .string "…hugs it tight!\p" + .string "Could the visitor be feeling happy\n" + .string "about something?$" + +gTVSecretBaseSecretsText23:: @ 08288E1E + .string "The visitor is chatting with\n" + .string "{STR_VAR_1}!\p" + .string "It looks like they’re going to\n" + .string "have a battle!\p" + .string "And…\p" + .string "It’s the visitor!\n" + .string "The visitor won an away match!\p" + .string "The visitor is doing\n" + .string "a victory dance!$" + +gTVSecretBaseSecretsText24:: @ 08288EC9 + .string "The visitor is chatting with\n" + .string "{STR_VAR_1}!\p" + .string "It looks like they’re going to\n" + .string "have a battle!\p" + .string "And…\p" + .string "It’s {STR_VAR_1}!\n" + .string "The visitor has lost!\p" + .string "The visitor looks dejected!$" + +gTVSecretBaseSecretsText25:: @ 08288F58 + .string "The visitor is chatting with\n" + .string "{STR_VAR_1}!\p" + .string "It looks like they’re going to\n" + .string "have a battle!\p" + .string "And…\p" + .string "No, the visitor has refused!\p" + .string "There won’t be a battle after all!\p" + .string "Did the visitor find {STR_VAR_1}\n" + .string "unappealing?$" + +gTVSecretBaseSecretsText26:: @ 08289011 + .string "The visitor is staring intently\n" + .string "at a poster!\p" + .string "Is the poster to the visitor’s\n" + .string "liking?\p" + .string "…But… There’s something disturbing\n" + .string "about the visitor’s stares.$" + +gTVSecretBaseSecretsText27:: @ 082890A4 + .string "The visitor stepped on a NOTE MAT!\p" + .string "…Hmm…\n" + .string "The visitor composed a funny tune!$" + +gTVSecretBaseSecretsText28:: @ 082890F0 + .string "The visitor is chatting with\n" + .string "{STR_VAR_1}!\p" + .string "It looks like they’re going to\n" + .string "have a battle!\p" + .string "And…\p" + .string "It’s a draw!\n" + .string "Nothing’s resolved!\p" + .string "Both TRAINERS appear to be very\n" + .string "disappointed!$" + +gTVSecretBaseSecretsText29:: @ 08289193 + .string "The visitor stepped on\n" + .string "a SPIN MAT!\p" + .string "It looks like the visitor is dizzy!\p" + .string "The visitor is tottering about!\n" + .string "Look out!$" + +gTVSecretBaseSecretsText30:: @ 08289204 + .string "The visitor is reaching for\n" + .string "a SAND ORNAMENT!\p" + .string "Oh!\p" + .string "It crumbled!\n" + .string "It’s fallen apart!\p" + .string "The visitor looks sheepish\n" + .string "and guilty!$" + +gTVSecretBaseSecretsText31:: @ 0828927C + .string "The visitor is rubbing a desktop\n" + .string "with their finger!\p" + .string "Apparently, the visitor disapproves\n" + .string "of dust!\p" + .string "The visitor is surprisingly concerned\n" + .string "about neatness!$" + +gTVSecretBaseSecretsText32:: @ 08289313 + .string "The visitor is staring at a BRICK!\p" + .string "Perhaps the visitor is thinking about\n" + .string "the object on the BRICK.$" + +gTVSecretBaseSecretsText33:: @ 08289375 + .string "The visitor is walking across\n" + .string "the SOLID BOARD.\p" + .string "The visitor keeps looking down.\p" + .string "The visitor appears to be surprisingly\n" + .string "timid and cautious!$" + +gTVSecretBaseSecretsText34:: @ 082893FF + .string "The visitor is looking intently\n" + .string "at a FENCE!\p" + .string "Has a new idea for a trap popped\n" + .string "into the visitor’s head?$" + +gTVSecretBaseSecretsText35:: @ 08289465 + .string "The visitor stepped on\n" + .string "a GLITTER MAT!\p" + .string "The visitor is striking a variety\n" + .string "of poses!\p" + .string "The visitor appears to be fantasizing\n" + .string "about being an idol!$" + +gTVSecretBaseSecretsText36:: @ 082894F2 + .string "The visitor is staring intently\n" + .string "at a TIRE!\p" + .string "Could the visitor be thinking about\n" + .string "the kind of car that would use it?$" + +gTVSecretBaseSecretsText37:: @ 08289564 + .string "The visitor climbed a STAND!\p" + .string "The visitor is looking out across\n" + .string "{STR_VAR_1}’s BASE from high up!\p" + .string "And…\p" + .string "Lets loose a roar!\n" + .string "The visitor is roaring!$" + +gTVSecretBaseSecretsText38:: @ 082895EB + .string "The visitor charged headlong into\n" + .string "a BREAKABLE DOOR!\p" + .string "The visitor is laughing uproariously!$" + +gTVSecretBaseSecretsText39:: @ 08289645 + .string "The visitor is talking to a DOLL!\p" + .string "…It’s a little creepy…$" + +gTVSecretBaseSecretsText40:: @ 0828967E + .string "The visitor is climbing the ladder\n" + .string "on a SLIDE!\p" + .string "And…\p" + .string "The visitor slid down!\p" + .string "Looks like the visitor is having\n" + .string "a grand old time!$" + +gTVSecretBaseSecretsText41:: @ 082896FC + .string "The visitor is climbing the ladder\n" + .string "on a SLIDE!\p" + .string "And…\p" + .string "The visitor went back down\n" + .string "the ladder!\p" + .string "Did the visitor suddenly chicken out?$" + +gTVSecretBaseSecretsText42:: @ 0828977D + .string "The visitor stepped on\n" + .string "a JUMP MAT!\p" + .string "The visitor jumped once!\p" + .string "Jumped twice!\p" + .string "And a successful landing!\p" + .string "The visitor is clapping!\n" + .string "What a solo performance!$" + +gTVSafariFanClubText00:: @ 08289813 + .string "SAFARI FAN CLUB!\p" + .string "REPORTER: All right, mates!\n" + .string "Tossing them SAFARI BALLS, are you?\p" + .string "You can bet I am here in the SAFARI\n" + .string "ZONE chock-full of amazing POKéMON!\p" + .string "Let’s get with it and have a chat with\n" + .string "this good fellow of a SAFARI GUIDE!\p" + .string "All right, mate, how are the visiting\n" + .string "TRAINERS looking?$" + +gTVSafariFanClubText01:: @ 0828992F + .string "GUIDE: Everyone seems to be going\n" + .string "hard at it.\p" + .string "{STR_VAR_1} is doing especially well.\p" + .string "Why, before, {STR_VAR_1} caught\n" + .string "{STR_VAR_2} POKéMON.$" + +gTVSafariFanClubText02:: @ 0828999D + .string "The TRAINER is clever with {POKEBLOCK}S.\n" + .string "Used {STR_VAR_2} that time, I think.$" + +gTVSafariFanClubText03:: @ 082899DC + .string "The TRAINER didn’t use a single\n" + .string "{POKEBLOCK}! Not a one!\p" + .string "There’s an expert for you.$" + +gTVSafariFanClubText04:: @ 08289A29 + .string "REPORTER: Is that right, then?\p" + .string "Sounds like our mate {STR_VAR_1}\n" + .string "is a stout SAFARI master!\p" + .string "GUIDE: I hope the TRAINER comes back\n" + .string "and shows us that great technique.$" + +gTVSafariFanClubText05:: @ 08289AC2 + .string "GUIDE: No one seems to be doing\n" + .string "very well.\p" + .string "{STR_VAR_1} had it especially bad.\p" + .string "Why, before, the TRAINER only\n" + .string "managed to catch {STR_VAR_2} POKéMON.$" + +gTVSafariFanClubText06:: @ 08289B42 + .string "GUIDE: No one seems to be doing\n" + .string "very well.\p" + .string "{STR_VAR_1} had it especially bad.\p" + .string "Why, before, the TRAINER didn’t\n" + .string "catch one POKéMON. Not a one!$" + +gTVSafariFanClubText07:: @ 08289BC5 + .string "The TRAINER does use {POKEBLOCK}S.\n" + .string "Used {STR_VAR_2} that time, I think.\p" + .string "But, boy, I wish the TRAINER would\n" + .string "get a bit better at this.$" + +gTVSafariFanClubText08:: @ 08289C3B + .string "I think the TRAINER would have better\n" + .string "luck using {POKEBLOCK}S, which weren’t\l" + .string "used at all that time.$" + +gTVSafariFanClubText09:: @ 08289C99 + .string "REPORTER: Is that right, then?\p" + .string "Sounds like our mate {STR_VAR_1}\n" + .string "needs more SAFARI seasoning.\p" + .string "GUIDE: I hope the TRAINER visits\n" + .string "over and over to get the hang of it.$" + +gTVSafariFanClubText10:: @ 08289D33 + .string "REPORTER: Quite right, it is!\n" + .string "Facing up to challenges is important!\p" + .string "Viewers, come on down to the SAFARI\n" + .string "and make the challenge yourself!\p" + .string "Until next time, cheerio!$" + +gTVContestLiveUpdatesText00:: @ 08289DD6 + .string "“POKéMON CONTEST LIVE UPDATES!”\p" + .string "MC: Thanks for joining us!\p" + .string "We’re live from the just-ended\n" + .string "{STR_VAR_1} site.\p" + .string "The hall is still filled with\n" + .string "an audience unwilling to leave.\p" + .string "Spectator: {STR_VAR_2}!\p" + .string "Spectator: {STR_VAR_3}!\p" + .string "MC: As you’ve just heard, the CONTEST\n" + .string "was won by the POKéMON {STR_VAR_2}\l" + .string "of {STR_VAR_3}.\p" + .string "Spectator: {STR_VAR_2}!\n" + .string "You’re the best!\p" + .string "Spectator: {STR_VAR_3}!\n" + .string "Way to go!\p" + .string "MC: Let’s hear what the fans have\n" + .string "to say about this CONTEST.$" + +gTVContestLiveUpdatesText01:: @ 08289F53 + .string "Spectator: The {STR_VAR_2} was tops in\n" + .string "both primary and secondary judging!\p" + .string "That {STR_VAR_2} will keep winning!$" + +gTVContestLiveUpdatesText02:: @ 08289FB0 + .string "Spectator: The {STR_VAR_2} didn’t do\n" + .string "well in the primary judging, but it\l" + .string "cleaned up in the secondary judging!\p" + .string "It was a miraculous comeback\n" + .string "for that {STR_VAR_2}. Yippee!$" + +gTVContestLiveUpdatesText03:: @ 0828A047 + .string "Spectator: The {STR_VAR_2} remained\n" + .string "consistent throughout both primary\l" + .string "and secondary judging.\p" + .string "{STR_VAR_3} and the {STR_VAR_2},\n" + .string "they’re no ordinary combo!$" + +gTVContestLiveUpdatesText04:: @ 0828A0C6 + .string "Spectator: In terms of being {STR_VAR_1},\n" + .string "that {STR_VAR_2} was outstanding.\p" + .string "I hope it makes better appeals\n" + .string "next time, though.$" + +gTVContestLiveUpdatesText05:: @ 0828A132 + .string "Spectator: When the {STR_VAR_2} got\n" + .string "nervous, I couldn’t stop myself from\l" + .string "shouting encouragement.\p" + .string "I’d like to say this to that\n" + .string "{STR_VAR_2}, “Congratulations!”$" + +gTVContestLiveUpdatesText06:: @ 0828A1BE + .string "Spectator: That {STR_VAR_2}’s appeal\n" + .string "startled even me!\p" + .string "{STR_VAR_2}, you were awesome!$" + +gTVContestLiveUpdatesText07:: @ 0828A202 + .string "Spectator: That {STR_VAR_2}’s combo\n" + .string "appeal was stunning!\p" + .string "It’s shaken me to the core!$" + +gTVContestLiveUpdatesText08:: @ 0828A24E + .string "Spectator: The winning {STR_VAR_2}’s\n" + .string "appeal got my heart pounding!$" + +gTVContestLiveUpdatesText09:: @ 0828A288 + .string "{STR_VAR_2}!\n" + .string "You were cool!$" + +gTVContestLiveUpdatesText10:: @ 0828A29B + .string "{STR_VAR_2}!\n" + .string "You were beautiful!$" + +gTVContestLiveUpdatesText11:: @ 0828A2B3 + .string "{STR_VAR_2}!\n" + .string "You were cute!$" + +gTVContestLiveUpdatesText12:: @ 0828A2C6 + .string "{STR_VAR_2}!\n" + .string "You were smart!$" + +gTVContestLiveUpdatesText13:: @ 0828A2DA + .string "{STR_VAR_2}!\n" + .string "You were tough!$" + +gTVContestLiveUpdatesText14:: @ 0828A2EE + .string "Spectator: The winning {STR_VAR_2}’s\n" + .string "appeal still has my heart pounding!$" + +gTVContestLiveUpdatesText15:: @ 0828A32E + .string "{STR_VAR_2}!\n" + .string "You’re the last word in cool!$" + +gTVContestLiveUpdatesText16:: @ 0828A350 + .string "{STR_VAR_2}!\n" + .string "You’re the most beautiful!$" + +gTVContestLiveUpdatesText17:: @ 0828A36F + .string "{STR_VAR_2}!\n" + .string "You’re simply the cutest!$" + +gTVContestLiveUpdatesText18:: @ 0828A38D + .string "{STR_VAR_2}!\n" + .string "You’re the smartest among the smart!$" + +gTVContestLiveUpdatesText19:: @ 0828A3B6 + .string "{STR_VAR_2}!\n" + .string "You’re the toughest of the tough!$" + +gTVContestLiveUpdatesText20:: @ 0828A3DC + .string "Spectator: Even when the {STR_VAR_2}\n" + .string "took a break from making appeals,\l" + .string "I couldn’t take my eyes off it.\p" + .string "I’m captivated by that {STR_VAR_2}.$" + +gTVContestLiveUpdatesText21:: @ 0828A455 + .string "Spectator: When the {STR_VAR_2} was\n" + .string "startled by another POKéMON’s appeal,\l" + .string "I was close to tears.\p" + .string "{STR_VAR_2}, you were resilient!\n" + .string "Way to go!$" + +gTVContestLiveUpdatesText22:: @ 0828A4CF + .string "Spectator: Oh…\n" + .string "That {STR_VAR_2}’s {STR_VAR_3}!\l" + .string "{STR_VAR_2}’s {STR_VAR_3}!\l" + .string "{STR_VAR_2}’s {STR_VAR_3}!\l" + .string "How could it be so wonderful?$" + +gTVContestLiveUpdatesText23:: @ 0828A51C + .string "MC: Well, there you have it. This place\n" + .string "is full of the {STR_VAR_1}’s fans!\p" + .string "I should also mention that another\n" + .string "POKéMON, {STR_VAR_2}’s {STR_VAR_3}, \l" + .string "caught my eye.\p" + .string "{STR_VAR_2}’s {STR_VAR_3}…$" + +gTVContestLiveUpdatesText24:: @ 0828A5AC + .string "It failed to make a single appeal during\n" + .string "secondary judging out of nervousness.\p" + .string "Next time, I would like to see this\n" + .string "{STR_VAR_1} make even one appeal.$" + +gTVContestLiveUpdatesText25:: @ 0828A638 + .string "It came dead last in both primary\n" + .string "and secondary judging.\p" + .string "I hope that {STR_VAR_1} will retrain this\n" + .string "{STR_VAR_2} and erase the shame of\l" + .string "this undisputed last-place finish.$" + +gTVContestLiveUpdatesText26:: @ 0828A6CF + .string "It failed to take advantage of\n" + .string "the audience’s excitement and make\l" + .string "an appropriate appeal.\p" + .string "We hope {STR_VAR_1} will learn how to get\n" + .string "a feel for the audience and whip their\l" + .string "excitement to a fever pitch next time.$" + +gTVContestLiveUpdatesText27:: @ 0828A797 + .string "While finishing first in the primary\n" + .string "judging, its appeals in the secondary\l" + .string "judging failed to click.\p" + .string "It suffered a humiliating come-from-\n" + .string "behind loss.\p" + .string "I’m sure {STR_VAR_1} is studying how to\n" + .string "make more effective appeals now.$" + +gTVContestLiveUpdatesText28:: @ 0828A86D + .string "The audience never got excited by its\n" + .string "appeals during the secondary judging.\p" + .string "We hope it will stop worrying about\n" + .string "other POKéMON and learn to pitch\l" + .string "its appeals to the audience more.$" + +gTVContestLiveUpdatesText29:: @ 0828A920 + .string "It lost to {STR_VAR_1}’s {STR_VAR_2}\n" + .string "by only a small margin.\p" + .string "It must be heartbreaking to come\n" + .string "so close to victory only to fail.\p" + .string "I wouldn’t be surprised if {STR_VAR_3}\n" + .string "were weeping over this outcome.$" + +gTVContestLiveUpdatesText30:: @ 0828A9CC + .string "It disappointed the JUDGE by\n" + .string "repeating the same appeals.\p" + .string "It’s an unforgivable error in any\n" + .string "CONTEST, and the POKéMON paid.\p" + .string "{STR_VAR_1} should feel guilty for\n" + .string "this sorry showing.$" + +gTVContestLiveUpdatesText31:: @ 0828AA74 + .string "{STR_VAR_1} turned in a valiant effort,\n" + .string "but…\p" + .string "It was all for naught, finishing last.\p" + .string "{STR_VAR_1} should learn from this loss\n" + .string "and put the knowledge to good use.$" + +gTVContestLiveUpdatesText32:: @ 0828AB01 + .string "I’d like to end this program with our\n" + .string "usual farewell to the winners.\p" + .string "This time, it’s {STR_VAR_1} and\n" + .string "the {STR_VAR_2}!\p" + .string "MC: Is everyone ready?\n" + .string "All together now!\p" + .string "Audience: {STR_VAR_1}! {STR_VAR_2}!\n" + .string "Congratulations!\l" + .string "You’re the CONTEST winner!$" + +gTVPokemonBattleUpdateText00:: @ 0828ABCC + .string "“POKéMON BATTLE UPDATE!”\p" + .string "Bringing you the results of POKéMON\n" + .string "battles as they come in!$" + +gTVPokemonBattleUpdateText01:: @ 0828AC22 + .string "The TRAINERS {STR_VAR_1} and\n" + .string "{STR_VAR_2} faced each other in\l" + .string "a {STR_VAR_3} BATTLE.\p" + .string "This match ended in victory for\n" + .string "{STR_VAR_1}!$" + +gTVPokemonBattleUpdateText02:: @ 0828AC7E + .string "In the battle, {STR_VAR_1}’s\n" + .string "{STR_VAR_2} was a formidable force\l" + .string "using {STR_VAR_3}!$" + +gTVPokemonBattleUpdateText03:: @ 0828ACB6 + .string "{STR_VAR_1}’s {STR_VAR_2} had a weak\n" + .string "showing that really hurt.$" + +gTVPokemonBattleUpdateText04:: @ 0828ACE3 + .string "Congratulations on your victory,\n" + .string "{STR_VAR_1}!\p" + .string "And for the defeated {STR_VAR_2},\n" + .string "we hope for a better result next time!\p" + .string "This concludes this episode of\n" + .string "“POKéMON BATTLE UPDATE!”$" + +gTVPokemonBattleUpdateText05:: @ 0828AD80 + .string "The teams of TRAINERS {STR_VAR_1} and\n" + .string "{STR_VAR_2} met in a MULTI BATTLE.\p" + .string "This match ended in victory for\n" + .string "{STR_VAR_1}’s team.$" + +gTVPokemonBattleUpdateText06:: @ 0828ADE2 + .string "In the battle, the {STR_VAR_2} on\n" + .string "{STR_VAR_1}’s team was a formidable\l" + .string "force using {STR_VAR_3}.$" + +gTVPokemonBattleUpdateText07:: @ 0828AE26 + .string "The weak showing by the {STR_VAR_3}\n" + .string "on {STR_VAR_2}’s team really hurt.\p" + .string "Congratulations on your team’s\n" + .string "victory, {STR_VAR_1}!\p" + .string "As for the defeated {STR_VAR_2}’s team,\n" + .string "we hope for a better result next time!\p" + .string "This concludes this episode of\n" + .string "“POKéMON BATTLE UPDATE!”$" + + .string "GABBY: Oh! We’ve just spotted a tough-\n" + .string "looking TRAINER here of all places!\p" + .string "Okay, roll camera!\n" + .string "Let’s get this interview.$" + + .string "GABBY: Oh! You’re {PLAYER}! Hi!\n" + .string "Do you remember us from last time?\p" + .string "Can you show us how much stronger\n" + .string "you’ve become? Okay, cue interview!$" + + .string "GABBY: My eyes didn’t lie!\n" + .string "I did discover an astonishing TRAINER!$" + + .string "GABBY: Awesome! Awesome!\n" + .string "Who are you?!\p" + .string "I knew we were onto something wild\n" + .string "when we spotted you!\p" + .string "Oh, please let me explain. We travel\n" + .string "around everywhere interviewing all\l" + .string "sorts of TRAINERS.\p" + .string "So, would you give us a bit of your time\n" + .string "for an interview?$" + + .string "GABBY: “{STR_VAR_1}!”\p" + .string "Remember? That’s the quote you gave\n" + .string "us as the battle clincher last time.\p" + .string "I never, ever forget stuff like that!$" + + .string "The last time we battled, you stomped\n" + .string "us before we could brace ourselves…\p" + .string "Anyway, what do you think?\n" + .string "Do you want to be interviewed again?$" + + .string "The last time we battled, didn’t you\n" + .string "throw a POKé BALL at us?\p" + .string "We were shocked! So we told everyone,\n" + .string "just everyone, about it!\p" + .string "Anyway, what do you think?\n" + .string "Do you want to be interviewed again?$" + + .string "The last time we battled, your item\n" + .string "skills cleverly did us in.\p" + .string "Anyway, what do you think?\n" + .string "Do you want to be interviewed again?$" + + .string "The last time we battled, we managed\n" + .string "to look respectable.\p" + .string "Anyway, what do you think?\n" + .string "Do you want to be interviewed again?$" + + .string "Anyway, what do you think?\n" + .string "Do you want to be interviewed again?$" + + .string "You will?\n" + .string "Thank you!\p" + .string "Okay, I need you to describe your\n" + .string "feelings about our battle, but it\l" + .string "has to be short and sweet. Go!$" + + .string "GABBY: Mmm, yeah!\n" + .string "That’s the perfect clincher!\p" + .string "I get the feeling that this will make\n" + .string "a great TV show.\p" + .string "There’s a chance that they’ll air this\n" + .string "on TV, so make sure to look for us!\p" + .string "Okay!\n" + .string "We’ll be seeing you!$" + + .string "GABBY: Oh…\p" + .string "Okay, but don’t give up!\n" + .string "We’ll be keeping an eye out for you!$" + + .string "GABBY: We’ll be keeping an eye out\n" + .string "for you!$" + + .string "GABBY: Is there a strong TRAINER\n" + .string "anywhere with a lot of POKéMON?$" + + .string "GABBY: Wow, you are something!\p" + .string "You’ve gotten a lot stronger--a lot--\n" + .string "since we last battled.\p" + .string "We were right about you when we\n" + .string "spotted you as a hot TRAINER.\p" + .string "So, anyway, what do you think?\n" + .string "Are you willing to give us an interview\l" + .string "this time?$" + + .string "GABBY: That was an intense battle!\n" + .string "Did you get all that on camera?$" + + .string "TY: Hey, lookie here! A tough-looking\n" + .string "TRAINER here, of all places!\l" + .string "Camera’s rolling!$" + + .string "TY: Hey, lookie here!\n" + .string "I remember you!\p" + .string "I’ll get this battle all on this\n" + .string "here camera!$" + + .string "TY: You’re a natural!\n" + .string "Got me some prime footage right here!$" + + .string "TY: Do you only have the one POKéMON\n" + .string "and that’s it?\p" + .string "If you had more POKéMON, it’d make for\n" + .string "better footage, but…$" + + .string "TY: Yep, we sure spotted a hot TRAINER.\n" + .string "This is a huge scoop for us!$" + + .string "TY: Yep, I got it all.\n" + .string "That whole battle’s on camera.$" + +gTVInSearchOfTrainersText00:: @ 0828B92C + .string "IN SEARCH OF TRAINERS…\p" + .string "GABBY: Hi! Today I’m visiting an area\n" + .string "near {STR_VAR_1}.\p" + .string "We’re trying to spot some up-and-\n" + .string "coming new talent in the field.\p" + .string "Today, we turned our lens on the\n" + .string "TRAINER {PLAYER}.\p" + .string "There’s something about this TRAINER\n" + .string "that piqued our interest.$" + +gTVInSearchOfTrainersText01:: @ 0828BA20 + .string "We’ve battled {PLAYER} before, but we\n" + .string "can attest that the TRAINER has most\l" + .string "definitely improved from before.\p" + .string "I knew we were onto someone special\n" + .string "when we spotted this TRAINER!$" + +gTVInSearchOfTrainersText02:: @ 0828BAC8 + .string "The best way to determine how strong\n" + .string "a TRAINER is…\p" + .string "Well, the fastest way is to battle.\n" + .string "And so we began our investigation!\p" + .string "… …\p" + .string "That’s how we ended up in battle\n" + .string "with {PLAYER}.\p" + .string "In a dominating performance, we were\n" + .string "flattened, rolled up, and tossed aside!\p" + .string "{PLAYER} is ruthlessly strong…\p" + .string "Here’s our impressions after having\n" + .string "battled our featured TRAINER.$" + +gTVInSearchOfTrainersText03:: @ 0828BC18 + .string "The combination of {STR_VAR_1} and\n" + .string "{STR_VAR_3} was divine!\p" + .string "The sight of them--{STR_VAR_1} and\n" + .string "{STR_VAR_3}--selflessly supporting\l" + .string "each other in the thick of battle…\p" + .string "It was a marvelous sight to behold!\p" + .string "{STR_VAR_2} was the move the TRAINER\n" + .string "used last in our battle.\p" + .string "The move {STR_VAR_2} is {STR_VAR_1}\n" + .string "and {STR_VAR_3}’s sign of friendship!$" + +gTVInSearchOfTrainersText04:: @ 0828BD20 + .string "…I lost confidence in myself as\n" + .string "a result of our encounter.\p" + .string "We were beaten before we could launch\n" + .string "a single attack.\l" + .string "Ohhh… Snivel…\p" + .string "In spite of that, {PLAYER}’s battles\n" + .string "are worth seeing.\p" + .string "I recommend confident TRAINERS to\n" + .string "challenge {PLAYER}.$" + +gTVInSearchOfTrainersText05:: @ 0828BE01 + .string "There’s only one thing to be said.\n" + .string "Don’t you dare throw a POKé BALL during\l" + .string "a TRAINER battle!\p" + .string "{PLAYER} is certainly strong, but has\n" + .string "no clue about the basic rules.\p" + .string "To our TV audience, I have a request.\p" + .string "If you see {PLAYER}, please caution\n" + .string "the TRAINER!$" + +gTVInSearchOfTrainersText06:: @ 0828BEEE + .string "{PLAYER} is adept at reading the\n" + .string "opponent’s actions.\p" + .string "The timing of item usage was remarkably\n" + .string "effective!$" + +gTVInSearchOfTrainersText07:: @ 0828BF50 + .string "Honestly speaking, I thought that\n" + .string "I might even be pretty good.\p" + .string "While we did end up losing, we did have\n" + .string "a hotly contested battle.\p" + .string "But if you’re struggling against me,\n" + .string "you have a ways to go, {PLAYER}!$" + +gTVInSearchOfTrainersText08:: @ 0828C011 + .string "After our battle, we asked {PLAYER} for\n" + .string "a succinct summary.\p" + .string "The TRAINER replied, “{STR_VAR_1}.”\p" + .string "{PLAYER}’s POKéMON {STR_VAR_2} and\n" + .string "{STR_VAR_3}…\l" + .string "And “{STR_VAR_1}”…\p" + .string "Mmm! That’s deep! There’s deep\n" + .string "significance behind that quote!\p" + .string "It’s no surprise--a good TRAINER has\n" + .string "good things to say.\p" + .string "That’s all for today!\n" + .string "See you again on our next broadcast!$" + +gTVPokemonContestLiveUpdates2Text00:: @ 0828C137 + .string "“POKéMON CONTEST LIVE UPDATES!”\p" + .string "MC: Sorry to interrupt the regular\n" + .string "programming, and thanks for joining us!\p" + .string "We bring you this live from\n" + .string "the scene of a just-completed\l" + .string "{STR_VAR_1}!\p" + .string "Spectators: ?!!!!\p" + .string "MC: Oh! It looks like the CONTEST\n" + .string "participants are headed this way!\p" + .string "I’ll try to get an impromptu interview\n" + .string "for you folks at home!\p" + .string "Spectators: ?!!!!\n" + .string "?!!!!$" + +gTVPokemonContestLiveUpdates2Text01:: @ 0828C28C + .string "MC: Excuse me!\n" + .string "Thanks for joining us on live TV!\p" + .string "May I congratulate you on your win?\p" + .string "What was the key factor in today’s\n" + .string "stunning victory?\p" + .string "BEAUTY: We gave it our best effort\n" + .string "today, my {STR_VAR_2} and I!\p" + .string "But I’m sure we wouldn’t have made it\n" + .string "if it weren’t for all the help we\l" + .string "received leading up to the CONTEST!\p" + .string "MC: Do you have a special someone\n" + .string "with whom you’d like to share your joy?\l" + .string "Let’s hear it live!\p" + .string "BEAUTY: Hey, out there!\p" + .string "{STR_VAR_3}! Are you watching?\n" + .string "We did it!\l" + .string "Thank you!$" + +gTVPokemonContestLiveUpdates2Text02:: @ 0828C45B + .string "MC: Excuse me!\n" + .string "Thanks for joining us on live TV!\p" + .string "You must be disappointed by that turn\n" + .string "of events. Do you have any comments?\p" + .string "BEAUTY: It’s heartbreaking…\n" + .string "My {STR_VAR_2} and I, we did our best…\p" + .string "But I feel like I’ve let down everyone\n" + .string "who has supported us through this.\p" + .string "MC: I hate to say it, but the POKéMON’s\n" + .string "coloration is a little wanting.\p" + .string "BEAUTY: {STR_VAR_3}, I’m so sorry…\n" + .string "I’ll do better next time, I swear…\l" + .string "…Sniff… Waaaaah!\p" + .string "Spectators: See that?\n" + .string "The poor girl!\p" + .string "MC: Uh… Uh-oh…\p" + .string "Uh… That’s all the time we have today!\n" + .string "Thanks for tuning in!$" + +gTVPokemonContestLiveUpdates2Text03:: @ 0828C662 + .string "MC: Excuse me!\n" + .string "Thanks for joining us on live TV!\p" + .string "How did your CONTEST appearance go?\p" + .string "BEAUTY: Nothing went right…\n" + .string "For some reason, my {STR_VAR_2}\l" + .string "couldn’t attract any popularity.\p" + .string "MC: I hate to say it, but the POKéMON’s\n" + .string "coloration is a little wanting.\p" + .string "BEAUTY: … … … … … …\n" + .string "…Sniff… Waaaaah!\p" + .string "Spectators: See that?\n" + .string "The poor girl!\p" + .string "MC: Uh… Uh-oh…\p" + .string "Uh… That’s all the time we have today!\n" + .string "Thanks for tuning in!$" diff --git a/data/tv.s b/data/tv.s deleted file mode 100644 index 4d2a608c42..0000000000 --- a/data/tv.s +++ /dev/null @@ -1,128 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_0858D094:: @ 858D094 - .incbin "baserom.gba", 0x58d094, 0x3c - -gUnknown_0858D0D0:: @ 858D0D0 - .incbin "baserom.gba", 0x58d0d0, 0xe - -gUnknown_0858D0DE:: @ 858D0DE - .incbin "baserom.gba", 0x58d0de, 0xe - -gUnknown_0858D0EC:: @ 858D0EC - .incbin "baserom.gba", 0x58d0ec, 0x1c - -gUnknown_0858D108:: @ 858D108 - .incbin "baserom.gba", 0x58d108, 0x14 - -gUnknown_0858D11C:: @ 858D11C - .incbin "baserom.gba", 0x58d11c, 0x14 - -gUnknown_0858D130:: @ 858D130 - .incbin "baserom.gba", 0x58d130, 0x14 - -gUnknown_0858D144:: @ 858D144 - .incbin "baserom.gba", 0x58d144, 0xc - -gUnknown_0858D150:: @ 858D150 - .incbin "baserom.gba", 0x58d150, 0x20 - -gUnknown_0858D170:: @ 858D170 - .incbin "baserom.gba", 0x58d170, 0x18 - -gUnknown_0858D188:: @ 858D188 - .incbin "baserom.gba", 0x58d188, 0x14 - -gUnknown_0858D19C:: @ 858D19C - .incbin "baserom.gba", 0x58d19c, 0x4 - -gUnknown_0858D1A0:: @ 858D1A0 - .incbin "baserom.gba", 0x58d1a0, 0x30 - -gUnknown_0858D1D0:: @ 858D1D0 - .incbin "baserom.gba", 0x58d1d0, 0x34 - -gUnknown_0858D204:: @ 858D204 - .incbin "baserom.gba", 0x58d204, 0x24 - -gUnknown_0858D228:: @ 858D228 - .incbin "baserom.gba", 0x58d228, 0x18 - -gUnknown_0858D240:: @ 858D240 - .incbin "baserom.gba", 0x58d240, 0x3c - -gUnknown_0858D27C:: @ 858D27C - .incbin "baserom.gba", 0x58d27c, 0x84 - -gUnknown_0858D300:: @ 858D300 - .incbin "baserom.gba", 0x58d300, 0x20 - -gUnknown_0858D320:: @ 858D320 - .incbin "baserom.gba", 0x58d320, 0x18 - -gUnknown_0858D338:: @ 858D338 - .incbin "baserom.gba", 0x58d338, 0x4c - -gUnknown_0858D384:: @ 858D384 - .incbin "baserom.gba", 0x58d384, 0x10 - -gUnknown_0858D394:: @ 858D394 - .incbin "baserom.gba", 0x58d394, 0x1c - -gUnknown_0858D3B0:: @ 858D3B0 - .incbin "baserom.gba", 0x58d3b0, 0x8 - -gUnknown_0858D3B8:: @ 858D3B8 - .incbin "baserom.gba", 0x58d3b8, 0xc - -gUnknown_0858D3C4:: @ 858D3C4 - .incbin "baserom.gba", 0x58d3c4, 0x2c - -gUnknown_0858D3F0:: @ 858D3F0 - .incbin "baserom.gba", 0x58d3f0, 0x1c - -gUnknown_0858D40C:: @ 858D40C - .incbin "baserom.gba", 0x58d40c, 0xc - -gUnknown_0858D418:: @ 858D418 - .incbin "baserom.gba", 0x58d418, 0x10 - -gUnknown_0858D428:: @ 858D428 - .incbin "baserom.gba", 0x58d428, 0x34 - -gUnknown_0858D45C:: @ 858D45C - .incbin "baserom.gba", 0x58d45c, 0x38 - -gUnknown_0858D494:: @ 858D494 - .incbin "baserom.gba", 0x58d494, 0x4 - -gUnknown_0858D498:: @ 858D498 - .incbin "baserom.gba", 0x58d498, 0x1c - -gUnknown_0858D4B4:: @ 858D4B4 - .incbin "baserom.gba", 0x58d4b4, 0x30 - -gUnknown_0858D4E4:: @ 858D4E4 - .incbin "baserom.gba", 0x58d4e4, 0x40 - -gUnknown_0858D524:: @ 858D524 - .incbin "baserom.gba", 0x58d524, 0x4c - -gUnknown_0858D570:: @ 858D570 - .incbin "baserom.gba", 0x58d570, 0x24 - -gUnknown_0858D594:: @ 858D594 - .incbin "baserom.gba", 0x58d594, 0xac - -gUnknown_0858D640:: @ 858D640 - .incbin "baserom.gba", 0x58d640, 0x2c - -gUnknown_0858D66C:: @ 858D66C - .incbin "baserom.gba", 0x58d66c, 0x24 - -gUnknown_0858D690:: @ 858D690 - .incbin "baserom.gba", 0x58d690, 0x20 diff --git a/include/battle.h b/include/battle.h index a60f450ce1..a3a51db710 100644 --- a/include/battle.h +++ b/include/battle.h @@ -78,6 +78,7 @@ #define BATTLE_PLAYER_TELEPORTED 0x5 #define BATTLE_POKE_FLED 0x6 #define BATTLE_CAUGHT 0x7 +#define BATTLE_SAFARI_OUT_OF_BALLS 0x8 #define BATTLE_FORFEITED 0x9 #define BATTLE_OPPONENT_TELEPORTED 0xA @@ -528,11 +529,11 @@ struct BattleResults u8 playerSwitchesCounter; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 - u8 unk5_0:1; // 0x5 , 0x1 - u8 unk5_1:1; // 0x5 , 0x2 - u8 caughtMonBall:4; // 0x5 , 0x4/0x8/0x10/0x20 - u8 unk5_6:1; // 0x5 , 0x40 - u8 unk5_7:1; // 0x5 , 0x80 + u8 unk5_0:1; // 0x5 + u8 usedMasterBall:1; // 0x5 + u8 caughtMonBall:4; // 0x5 + u8 unk5_6:1; // 0x5 + u8 unk5_7:1; // 0x5 u16 playerMon1Species; // 0x6 u8 playerMon1Name[11]; // 0x8 u8 battleTurnCounter; // 0x13 @@ -545,7 +546,7 @@ struct BattleResults u16 caughtMonSpecies; // 0x28 u8 caughtMonNick[10]; // 0x2A u8 filler34[2]; - u8 catchAttempts[12]; // 0x36 + u8 catchAttempts[11]; // 0x36 }; extern struct BattleResults gBattleResults; @@ -902,6 +903,10 @@ struct MonSpritesGfx struct SpriteTemplate templates[4]; }; +extern struct BattleSpritesGfx* gMonSpritesGfx; +extern u8 gBattleOutcome; +extern u16 gLastUsedItem; +extern u32 gBattleTypeFlags; extern struct MonSpritesGfx* gMonSpritesGfxPtr; #endif // GUARD_BATTLE_H diff --git a/include/battle_tower.h b/include/battle_tower.h new file mode 100644 index 0000000000..25b439c1b9 --- /dev/null +++ b/include/battle_tower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_TOWER_H +#define GUARD_BATTLE_TOWER_H + +u16 sub_8164FCC(u8, u8); + +#endif //GUARD_BATTLE_TOWER_H diff --git a/include/contest.h b/include/contest.h new file mode 100644 index 0000000000..6eda956b47 --- /dev/null +++ b/include/contest.h @@ -0,0 +1,18 @@ +#ifndef GUARD_CONTEST_H +#define GUARD_CONTEST_H + +struct ContestStruct_02039E00 { + u16 unk_00; + u8 unk_02[11]; + u8 unk_0d[8]; + u8 filler_15[9]; + u8 filler_1E[34]; +}; + +extern struct ContestStruct_02039E00 gUnknown_02039E00[4]; +extern u8 gUnknown_02039F24; +extern EWRAM_DATA u16 gUnknown_02039F2C; +extern EWRAM_DATA u8 gUnknown_02039F2E; +extern EWRAM_DATA u8 gUnknown_02039F30; + +#endif //GUARD_CONTEST_H diff --git a/include/decoration.h b/include/decoration.h new file mode 100644 index 0000000000..c089bdc833 --- /dev/null +++ b/include/decoration.h @@ -0,0 +1,147 @@ +#ifndef GUARD_DECORATION_H +#define GUARD_DECORATION_H + +enum DecoId { + /*000*/ DECOR_NONE, + /*001*/ DECOR_SMALL_DESK, + /*002*/ DECOR_POKEMON_DESK, + /*003*/ DECOR_HEAVY_DESK, + /*004*/ DECOR_RAGGED_DESK, + /*005*/ DECOR_COMFORT_DESK, + /*006*/ DECOR_PRETTY_DESK, + /*007*/ DECOR_BRICK_DESK, + /*008*/ DECOR_CAMP_DESK, + /*009*/ DECOR_HARD_DESK, + /*010*/ DECOR_SMALL_CHAIR, + /*011*/ DECOR_POKEMON_CHAIR, + /*012*/ DECOR_HEAVY_CHAIR, + /*013*/ DECOR_PRETTY_CHAIR, + /*014*/ DECOR_COMFORT_CHAIR, + /*015*/ DECOR_RAGGED_CHAIR, + /*016*/ DECOR_BRICK_CHAIR, + /*017*/ DECOR_CAMP_CHAIR, + /*018*/ DECOR_HARD_CHAIR, + /*019*/ DECOR_RED_PLANT, + /*020*/ DECOR_TROPICAL_PLANT, + /*021*/ DECOR_PRETTY_FLOWERS, + /*022*/ DECOR_COLORFUL_PLANT, + /*023*/ DECOR_BIG_PLANT, + /*024*/ DECOR_GORGEOUS_PLANT, + /*025*/ DECOR_RED_BRICK, + /*026*/ DECOR_YELLOW_BRICK, + /*027*/ DECOR_BLUE_BRICK, + /*028*/ DECOR_RED_BALLOON, + /*029*/ DECOR_BLUE_BALLOON, + /*030*/ DECOR_YELLOW_BALLOON, + /*031*/ DECOR_RED_TENT, + /*032*/ DECOR_BLUE_TENT, + /*033*/ DECOR_SOLID_BOARD, + /*034*/ DECOR_SLIDE, + /*035*/ DECOR_FENCE_LENGTH, + /*036*/ DECOR_FENCE_WIDTH, + /*037*/ DECOR_TIRE, + /*038*/ DECOR_STAND, + /*039*/ DECOR_MUD_BALL, + /*040*/ DECOR_BREAKABLE_DOOR, + /*041*/ DECOR_SAND_ORNAMENT, + /*042*/ DECOR_SILVER_SHIELD, + /*043*/ DECOR_GOLD_SHIELD, + /*044*/ DECOR_GLASS_ORNAMENT, + /*045*/ DECOR_TV, + /*046*/ DECOR_ROUND_TV, + /*047*/ DECOR_CUTE_TV, + /*048*/ DECOR_GLITTER_MAT, + /*049*/ DECOR_JUMP_MAT, + /*050*/ DECOR_SPIN_MAT, + /*051*/ DECOR_C_LOW_NOTE_MAT, + /*052*/ DECOR_D_NOTE_MAT, + /*053*/ DECOR_E_NOTE_MAT, + /*054*/ DECOR_F_NOTE_MAT, + /*055*/ DECOR_G_NOTE_MAT, + /*056*/ DECOR_A_NOTE_MAT, + /*057*/ DECOR_B_NOTE_MAT, + /*058*/ DECOR_C_HIGH_NOTE_MAT, + /*059*/ DECOR_SURF_MAT, + /*060*/ DECOR_THUNDER_MAT, + /*061*/ DECOR_FIRE_BLAST_MAT, + /*062*/ DECOR_POWDER_SNOW_MAT, + /*063*/ DECOR_ATTRACT_MAT, + /*064*/ DECOR_FISSURE_MAT, + /*065*/ DECOR_SPIKES_MAT, + /*066*/ DECOR_BALL_POSTER, + /*067*/ DECOR_GREEN_POSTER, + /*068*/ DECOR_RED_POSTER, + /*069*/ DECOR_BLUE_POSTER, + /*070*/ DECOR_CUTE_POSTER, + /*071*/ DECOR_PIKA_POSTER, + /*072*/ DECOR_LONG_POSTER, + /*073*/ DECOR_SEA_POSTER, + /*074*/ DECOR_SKY_POSTER, + /*075*/ DECOR_KISS_POSTER, + /*076*/ DECOR_PICHU_DOLL, + /*077*/ DECOR_PIKACHU_DOLL, + /*078*/ DECOR_MARILL_DOLL, + /*079*/ DECOR_TOGEPI_DOLL, + /*080*/ DECOR_CYNDAQUIL_DOLL, + /*081*/ DECOR_CHIKORITA_DOLL, + /*082*/ DECOR_TOTODILE_DOLL, + /*083*/ DECOR_JIGGLYPUFF_DOLL, + /*084*/ DECOR_MEOWTH_DOLL, + /*085*/ DECOR_CLEFAIRY_DOLL, + /*086*/ DECOR_DITTO_DOLL, + /*087*/ DECOR_SMOOCHUM_DOLL, + /*088*/ DECOR_TREECKO_DOLL, + /*089*/ DECOR_TORCHIC_DOLL, + /*090*/ DECOR_MUDKIP_DOLL, + /*091*/ DECOR_DUSKULL_DOLL, + /*092*/ DECOR_WYNAUT_DOLL, + /*093*/ DECOR_BALTOY_DOLL, + /*094*/ DECOR_KECLEON_DOLL, + /*095*/ DECOR_AZURILL_DOLL, + /*096*/ DECOR_SKITTY_DOLL, + /*097*/ DECOR_SWABLU_DOLL, + /*098*/ DECOR_GULPIN_DOLL, + /*099*/ DECOR_LOTAD_DOLL, + /*100*/ DECOR_SEEDOT_DOLL, + /*101*/ DECOR_PIKA_CUSHION, + /*102*/ DECOR_ROUND_CUSHION, + /*103*/ DECOR_KISS_CUSHION, + /*104*/ DECOR_ZIGZAG_CUSHION, + /*105*/ DECOR_SPIN_CUSHION, + /*106*/ DECOR_DIAMOND_CUSHION, + /*107*/ DECOR_BALL_CUSHION, + /*108*/ DECOR_GRASS_CUSHION, + /*109*/ DECOR_FIRE_CUSHION, + /*110*/ DECOR_WATER_CUSHION, + /*111*/ DECOR_SNORLAX_DOLL, + /*112*/ DECOR_RHYDON_DOLL, + /*113*/ DECOR_LAPRAS_DOLL, + /*114*/ DECOR_VENUSAUR_DOLL, + /*115*/ DECOR_CHARIZARD_DOLL, + /*116*/ DECOR_BLASTOISE_DOLL, + /*117*/ DECOR_WAILMER_DOLL, + /*118*/ DECOR_REGIROCK_DOLL, + /*119*/ DECOR_REGICE_DOLL, + /*120*/ DECOR_REGISTEEL_DOLL +}; + +// Exported type declarations + +struct Decoration +{ + /*0x00*/ u8 id; + /*0x01*/ u8 name[16]; + /*0x11*/ u8 permission; + /*0x12*/ u8 shape; + /*0x13*/ u8 category; + /*0x14*/ u16 price; + /*0x18*/ const u8 *description; + /*0x1c*/ const u16 *tiles; +}; + +// Exported RAM declarations + +// Exported ROM declarations +extern const struct Decoration gDecorations[]; + +#endif //GUARD_DECORATION_H diff --git a/include/easy_chat.h b/include/easy_chat.h index fc44b6a8aa..b0a217320f 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -30,7 +30,9 @@ enum void InitEasyChatPhrases(void); void easy_chat_input_maybe(void); -void CopyEasyChatWord(u8 *, u16); -bool32 sub_811F8D8(u16); +void CopyEasyChatWord(u8 *dest, u16 word); +bool32 sub_811F8D8(u16 word); +void InitializeEasyChatWordArray(u16 *words, u16 length); +void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); #endif // GUARD_EASYCHAT_H diff --git a/include/event_scripts.h b/include/event_scripts.h index f1abdd6f66..bb0d6731b4 100755 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -8,4 +8,353 @@ extern const u8 gUnknown_082766A2[]; extern const u8 gUnknown_082766A6[]; +extern const u8 gTVBravoTrainerText00[]; +extern const u8 gTVBravoTrainerText01[]; +extern const u8 gTVBravoTrainerText02[]; +extern const u8 gTVBravoTrainerText03[]; +extern const u8 gTVBravoTrainerText04[]; +extern const u8 gTVBravoTrainerText05[]; +extern const u8 gTVBravoTrainerText06[]; +extern const u8 gTVBravoTrainerText07[]; +extern const u8 gTVBravoTrainerText08[]; +extern const u8 gTVBravoTrainerBattleTowerText00[]; +extern const u8 gTVBravoTrainerBattleTowerText01[]; +extern const u8 gTVBravoTrainerBattleTowerText02[]; +extern const u8 gTVBravoTrainerBattleTowerText03[]; +extern const u8 gTVBravoTrainerBattleTowerText04[]; +extern const u8 gTVBravoTrainerBattleTowerText05[]; +extern const u8 gTVBravoTrainerBattleTowerText06[]; +extern const u8 gTVBravoTrainerBattleTowerText07[]; +extern const u8 gTVBravoTrainerBattleTowerText08[]; +extern const u8 gTVBravoTrainerBattleTowerText09[]; +extern const u8 gTVBravoTrainerBattleTowerText10[]; +extern const u8 gTVBravoTrainerBattleTowerText11[]; +extern const u8 gTVBravoTrainerBattleTowerText12[]; +extern const u8 gTVBravoTrainerBattleTowerText13[]; +extern const u8 gTVBravoTrainerBattleTowerText14[]; +extern const u8 gTVFanClubOpinionsText00[]; +extern const u8 gTVFanClubOpinionsText01[]; +extern const u8 gTVFanClubOpinionsText02[]; +extern const u8 gTVFanClubOpinionsText03[]; +extern const u8 gTVFanClubOpinionsText04[]; +extern const u8 gTVFanClubText00[]; +extern const u8 gTVFanClubText01[]; +extern const u8 gTVFanClubText02[]; +extern const u8 gTVFanClubText03[]; +extern const u8 gTVFanClubText04[]; +extern const u8 gTVFanClubText05[]; +extern const u8 gTVFanClubText06[]; +extern const u8 gTVFanClubText07[]; +extern const u8 gTVRecentHappeningsText00[]; +extern const u8 gTVRecentHappeningsText01[]; +extern const u8 gTVRecentHappeningsText02[]; +extern const u8 gTVRecentHappeningsText03[]; +extern const u8 gTVRecentHappeningsText04[]; +extern const u8 gTVRecentHappeningsText05[]; +extern const u8 gTVMassOutbreakText00[]; +extern const u8 gTV3CheersForPokeblocksText00[]; +extern const u8 gTV3CheersForPokeblocksText01[]; +extern const u8 gTV3CheersForPokeblocksText02[]; +extern const u8 gTV3CheersForPokeblocksText03[]; +extern const u8 gTV3CheersForPokeblocksText04[]; +extern const u8 gTV3CheersForPokeblocksText05[]; +extern const u8 gTVTrainerFanClubSpecialText00[]; +extern const u8 gTVTrainerFanClubSpecialText01[]; +extern const u8 gTVTrainerFanClubSpecialText02[]; +extern const u8 gTVTrainerFanClubSpecialText03[]; +extern const u8 gTVTrainerFanClubSpecialText04[]; +extern const u8 gTVTrainerFanClubSpecialText05[]; +extern const u8 gTVNameRaterText00[]; +extern const u8 gTVNameRaterText01[]; +extern const u8 gTVNameRaterText02[]; +extern const u8 gTVNameRaterText03[]; +extern const u8 gTVNameRaterText04[]; +extern const u8 gTVNameRaterText05[]; +extern const u8 gTVNameRaterText06[]; +extern const u8 gTVNameRaterText07[]; +extern const u8 gTVNameRaterText08[]; +extern const u8 gTVNameRaterText09[]; +extern const u8 gTVNameRaterText10[]; +extern const u8 gTVNameRaterText11[]; +extern const u8 gTVNameRaterText12[]; +extern const u8 gTVNameRaterText13[]; +extern const u8 gTVNameRaterText14[]; +extern const u8 gTVNameRaterText15[]; +extern const u8 gTVNameRaterText16[]; +extern const u8 gTVNameRaterText17[]; +extern const u8 gTVNameRaterText18[]; +extern const u8 gTVPokemonAnglerText00[]; +extern const u8 gTVPokemonAnglerText01[]; +extern const u8 gTVPokemonTodayFailedText00[]; +extern const u8 gTVPokemonTodayFailedText01[]; +extern const u8 gTVPokemonTodayFailedText02[]; +extern const u8 gTVPokemonTodayFailedText03[]; +extern const u8 gTVPokemonTodayFailedText04[]; +extern const u8 gTVPokemonTodayFailedText05[]; +extern const u8 gTVPokemonTodayFailedText06[]; +extern const u8 gTVPokemonTodaySuccessfulText00[]; +extern const u8 gTVPokemonTodaySuccessfulText01[]; +extern const u8 gTVPokemonTodaySuccessfulText02[]; +extern const u8 gTVPokemonTodaySuccessfulText03[]; +extern const u8 gTVPokemonTodaySuccessfulText04[]; +extern const u8 gTVPokemonTodaySuccessfulText05[]; +extern const u8 gTVPokemonTodaySuccessfulText06[]; +extern const u8 gTVPokemonTodaySuccessfulText07[]; +extern const u8 gTVPokemonTodaySuccessfulText08[]; +extern const u8 gTVPokemonTodaySuccessfulText09[]; +extern const u8 gTVPokemonTodaySuccessfulText10[]; +extern const u8 gTVPokemonTodaySuccessfulText11[]; +extern const u8 gTVTodaysSmartShopperText00[]; +extern const u8 gTVTodaysSmartShopperText01[]; +extern const u8 gTVTodaysSmartShopperText02[]; +extern const u8 gTVTodaysSmartShopperText03[]; +extern const u8 gTVTodaysSmartShopperText04[]; +extern const u8 gTVTodaysSmartShopperText05[]; +extern const u8 gTVTodaysSmartShopperText06[]; +extern const u8 gTVTodaysSmartShopperText07[]; +extern const u8 gTVTodaysSmartShopperText08[]; +extern const u8 gTVTodaysSmartShopperText09[]; +extern const u8 gTVTodaysSmartShopperText10[]; +extern const u8 gTVTodaysSmartShopperText11[]; +extern const u8 gTVTodaysSmartShopperText12[]; +extern const u8 gTVWorldOfMastersText00[]; +extern const u8 gTVWorldOfMastersText01[]; +extern const u8 gTVWorldOfMastersText02[]; +extern const u8 gTVTodaysRivalTrainerText00[]; +extern const u8 gTVTodaysRivalTrainerText07[]; +extern const u8 gTVTodaysRivalTrainerText08[]; +extern const u8 gTVTodaysRivalTrainerText09[]; +extern const u8 gTVTodaysRivalTrainerText10[]; +extern const u8 gTVTodaysRivalTrainerText01[]; +extern const u8 gTVTodaysRivalTrainerText02[]; +extern const u8 gTVTodaysRivalTrainerText03[]; +extern const u8 gTVTodaysRivalTrainerText04[]; +extern const u8 gTVTodaysRivalTrainerText05[]; +extern const u8 gTVTodaysRivalTrainerText06[]; +extern const u8 gTVDewfordTrendWatcherNetworkText00[]; +extern const u8 gTVDewfordTrendWatcherNetworkText01[]; +extern const u8 gTVDewfordTrendWatcherNetworkText02[]; +extern const u8 gTVDewfordTrendWatcherNetworkText03[]; +extern const u8 gTVDewfordTrendWatcherNetworkText04[]; +extern const u8 gTVDewfordTrendWatcherNetworkText05[]; +extern const u8 gTVDewfordTrendWatcherNetworkText06[]; +extern const u8 gTVHoennTreasureInvestigatorsText00[]; +extern const u8 gTVHoennTreasureInvestigatorsText01[]; +extern const u8 gTVHoennTreasureInvestigatorsText02[]; +extern const u8 gTVFindThatGamerText00[]; +extern const u8 gTVFindThatGamerText01[]; +extern const u8 gTVFindThatGamerText02[]; +extern const u8 gTVFindThatGamerText03[]; +extern const u8 gTVBreakingNewsText00[]; +extern const u8 gTVBreakingNewsText01[]; +extern const u8 gTVBreakingNewsText02[]; +extern const u8 gTVBreakingNewsText03[]; +extern const u8 gTVBreakingNewsText04[]; +extern const u8 gTVBreakingNewsText05[]; +extern const u8 gTVBreakingNewsText06[]; +extern const u8 gTVBreakingNewsText07[]; +extern const u8 gTVBreakingNewsText12[]; +extern const u8 gTVBreakingNewsText08[]; +extern const u8 gTVBreakingNewsText09[]; +extern const u8 gTVBreakingNewsText10[]; +extern const u8 gTVBreakingNewsText11[]; +extern const u8 gTVSecretBaseVisitText00[]; +extern const u8 gTVSecretBaseVisitText01[]; +extern const u8 gTVSecretBaseVisitText02[]; +extern const u8 gTVSecretBaseVisitText03[]; +extern const u8 gTVSecretBaseVisitText04[]; +extern const u8 gTVSecretBaseVisitText05[]; +extern const u8 gTVSecretBaseVisitText06[]; +extern const u8 gTVSecretBaseVisitText07[]; +extern const u8 gTVSecretBaseVisitText08[]; +extern const u8 gTVSecretBaseVisitText09[]; +extern const u8 gTVSecretBaseVisitText10[]; +extern const u8 gTVSecretBaseVisitText11[]; +extern const u8 gTVSecretBaseVisitText12[]; +extern const u8 gTVSecretBaseVisitText13[]; +extern const u8 gTVPokemonLotteryWinnerFlashReportText00[]; +extern const u8 gTVThePokemonBattleSeminarText00[]; +extern const u8 gTVThePokemonBattleSeminarText01[]; +extern const u8 gTVThePokemonBattleSeminarText02[]; +extern const u8 gTVThePokemonBattleSeminarText03[]; +extern const u8 gTVThePokemonBattleSeminarText04[]; +extern const u8 gTVThePokemonBattleSeminarText05[]; +extern const u8 gTVThePokemonBattleSeminarText06[]; +extern const u8 gTVTrainerFanClubText00[]; +extern const u8 gTVTrainerFanClubText01[]; +extern const u8 gTVTrainerFanClubText02[]; +extern const u8 gTVTrainerFanClubText03[]; +extern const u8 gTVTrainerFanClubText04[]; +extern const u8 gTVTrainerFanClubText05[]; +extern const u8 gTVTrainerFanClubText06[]; +extern const u8 gTVTrainerFanClubText07[]; +extern const u8 gTVTrainerFanClubText08[]; +extern const u8 gTVTrainerFanClubText09[]; +extern const u8 gTVTrainerFanClubText10[]; +extern const u8 gTVTrainerFanClubText11[]; +extern const u8 gTVCutiesText00[]; +extern const u8 gTVCutiesText01[]; +extern const u8 gTVCutiesText02[]; +extern const u8 gTVCutiesText03[]; +extern const u8 gTVCutiesText04[]; +extern const u8 gTVCutiesText05[]; +extern const u8 gTVCutiesText06[]; +extern const u8 gTVCutiesText07[]; +extern const u8 gTVCutiesText08[]; +extern const u8 gTVCutiesText09[]; +extern const u8 gTVCutiesText10[]; +extern const u8 gTVCutiesText11[]; +extern const u8 gTVCutiesText12[]; +extern const u8 gTVCutiesText13[]; +extern const u8 gTVCutiesText14[]; +extern const u8 gTVCutiesText15[]; +extern const u8 gTVPokemonNewsBattleFrontierText00[]; +extern const u8 gTVPokemonNewsBattleFrontierText01[]; +extern const u8 gTVPokemonNewsBattleFrontierText02[]; +extern const u8 gTVPokemonNewsBattleFrontierText03[]; +extern const u8 gTVPokemonNewsBattleFrontierText04[]; +extern const u8 gTVPokemonNewsBattleFrontierText05[]; +extern const u8 gTVPokemonNewsBattleFrontierText06[]; +extern const u8 gTVPokemonNewsBattleFrontierText07[]; +extern const u8 gTVPokemonNewsBattleFrontierText08[]; +extern const u8 gTVPokemonNewsBattleFrontierText09[]; +extern const u8 gTVPokemonNewsBattleFrontierText10[]; +extern const u8 gTVPokemonNewsBattleFrontierText11[]; +extern const u8 gTVPokemonNewsBattleFrontierText12[]; +extern const u8 gTVPokemonNewsBattleFrontierText13[]; +extern const u8 gTVPokemonNewsBattleFrontierText14[]; +extern const u8 gTVPokemonNewsBattleFrontierText15[]; +extern const u8 gTVPokemonNewsBattleFrontierText16[]; +extern const u8 gTVPokemonNewsBattleFrontierText17[]; +extern const u8 gTVPokemonNewsBattleFrontierText18[]; +extern const u8 gTVWhatsNo1InHoennTodayText00[]; +extern const u8 gTVWhatsNo1InHoennTodayText01[]; +extern const u8 gTVWhatsNo1InHoennTodayText02[]; +extern const u8 gTVWhatsNo1InHoennTodayText03[]; +extern const u8 gTVWhatsNo1InHoennTodayText04[]; +extern const u8 gTVWhatsNo1InHoennTodayText05[]; +extern const u8 gTVWhatsNo1InHoennTodayText06[]; +extern const u8 gTVWhatsNo1InHoennTodayText07[]; +extern const u8 gTVWhatsNo1InHoennTodayText08[]; +extern const u8 gTVSecretBaseSecretsText00[]; +extern const u8 gTVSecretBaseSecretsText01[]; +extern const u8 gTVSecretBaseSecretsText02[]; +extern const u8 gTVSecretBaseSecretsText03[]; +extern const u8 gTVSecretBaseSecretsText04[]; +extern const u8 gTVSecretBaseSecretsText05[]; +extern const u8 gTVSecretBaseSecretsText06[]; +extern const u8 gTVSecretBaseSecretsText07[]; +extern const u8 gTVSecretBaseSecretsText08[]; +extern const u8 gTVSecretBaseSecretsText09[]; +extern const u8 gTVSecretBaseSecretsText10[]; +extern const u8 gTVSecretBaseSecretsText11[]; +extern const u8 gTVSecretBaseSecretsText12[]; +extern const u8 gTVSecretBaseSecretsText13[]; +extern const u8 gTVSecretBaseSecretsText14[]; +extern const u8 gTVSecretBaseSecretsText15[]; +extern const u8 gTVSecretBaseSecretsText16[]; +extern const u8 gTVSecretBaseSecretsText17[]; +extern const u8 gTVSecretBaseSecretsText18[]; +extern const u8 gTVSecretBaseSecretsText19[]; +extern const u8 gTVSecretBaseSecretsText20[]; +extern const u8 gTVSecretBaseSecretsText21[]; +extern const u8 gTVSecretBaseSecretsText22[]; +extern const u8 gTVSecretBaseSecretsText23[]; +extern const u8 gTVSecretBaseSecretsText24[]; +extern const u8 gTVSecretBaseSecretsText25[]; +extern const u8 gTVSecretBaseSecretsText26[]; +extern const u8 gTVSecretBaseSecretsText27[]; +extern const u8 gTVSecretBaseSecretsText28[]; +extern const u8 gTVSecretBaseSecretsText29[]; +extern const u8 gTVSecretBaseSecretsText30[]; +extern const u8 gTVSecretBaseSecretsText31[]; +extern const u8 gTVSecretBaseSecretsText32[]; +extern const u8 gTVSecretBaseSecretsText33[]; +extern const u8 gTVSecretBaseSecretsText34[]; +extern const u8 gTVSecretBaseSecretsText35[]; +extern const u8 gTVSecretBaseSecretsText36[]; +extern const u8 gTVSecretBaseSecretsText37[]; +extern const u8 gTVSecretBaseSecretsText38[]; +extern const u8 gTVSecretBaseSecretsText39[]; +extern const u8 gTVSecretBaseSecretsText40[]; +extern const u8 gTVSecretBaseSecretsText41[]; +extern const u8 gTVSecretBaseSecretsText42[]; +extern const u8 gTVSafariFanClubText00[]; +extern const u8 gTVSafariFanClubText01[]; +extern const u8 gTVSafariFanClubText02[]; +extern const u8 gTVSafariFanClubText03[]; +extern const u8 gTVSafariFanClubText04[]; +extern const u8 gTVSafariFanClubText05[]; +extern const u8 gTVSafariFanClubText06[]; +extern const u8 gTVSafariFanClubText07[]; +extern const u8 gTVSafariFanClubText08[]; +extern const u8 gTVSafariFanClubText09[]; +extern const u8 gTVSafariFanClubText10[]; +extern const u8 gTVContestLiveUpdatesText00[]; +extern const u8 gTVContestLiveUpdatesText01[]; +extern const u8 gTVContestLiveUpdatesText02[]; +extern const u8 gTVContestLiveUpdatesText03[]; +extern const u8 gTVContestLiveUpdatesText04[]; +extern const u8 gTVContestLiveUpdatesText05[]; +extern const u8 gTVContestLiveUpdatesText06[]; +extern const u8 gTVContestLiveUpdatesText07[]; +extern const u8 gTVContestLiveUpdatesText08[]; +extern const u8 gTVContestLiveUpdatesText09[]; +extern const u8 gTVContestLiveUpdatesText10[]; +extern const u8 gTVContestLiveUpdatesText11[]; +extern const u8 gTVContestLiveUpdatesText12[]; +extern const u8 gTVContestLiveUpdatesText13[]; +extern const u8 gTVContestLiveUpdatesText14[]; +extern const u8 gTVContestLiveUpdatesText15[]; +extern const u8 gTVContestLiveUpdatesText16[]; +extern const u8 gTVContestLiveUpdatesText17[]; +extern const u8 gTVContestLiveUpdatesText18[]; +extern const u8 gTVContestLiveUpdatesText19[]; +extern const u8 gTVContestLiveUpdatesText20[]; +extern const u8 gTVContestLiveUpdatesText21[]; +extern const u8 gTVContestLiveUpdatesText22[]; +extern const u8 gTVContestLiveUpdatesText23[]; +extern const u8 gTVContestLiveUpdatesText24[]; +extern const u8 gTVContestLiveUpdatesText25[]; +extern const u8 gTVContestLiveUpdatesText26[]; +extern const u8 gTVContestLiveUpdatesText27[]; +extern const u8 gTVContestLiveUpdatesText28[]; +extern const u8 gTVContestLiveUpdatesText29[]; +extern const u8 gTVContestLiveUpdatesText30[]; +extern const u8 gTVContestLiveUpdatesText31[]; +extern const u8 gTVContestLiveUpdatesText32[]; +extern const u8 gTVPokemonBattleUpdateText00[]; +extern const u8 gTVPokemonBattleUpdateText01[]; +extern const u8 gTVPokemonBattleUpdateText02[]; +extern const u8 gTVPokemonBattleUpdateText03[]; +extern const u8 gTVPokemonBattleUpdateText04[]; +extern const u8 gTVPokemonBattleUpdateText05[]; +extern const u8 gTVPokemonBattleUpdateText06[]; +extern const u8 gTVPokemonBattleUpdateText07[]; +extern const u8 gTVInSearchOfTrainersText00[]; +extern const u8 gTVInSearchOfTrainersText01[]; +extern const u8 gTVInSearchOfTrainersText02[]; +extern const u8 gTVInSearchOfTrainersText03[]; +extern const u8 gTVInSearchOfTrainersText04[]; +extern const u8 gTVInSearchOfTrainersText05[]; +extern const u8 gTVInSearchOfTrainersText06[]; +extern const u8 gTVInSearchOfTrainersText07[]; +extern const u8 gTVInSearchOfTrainersText08[]; +extern const u8 gTVPokemonContestLiveUpdates2Text00[]; +extern const u8 gTVPokemonContestLiveUpdates2Text01[]; +extern const u8 gTVPokemonContestLiveUpdates2Text02[]; +extern const u8 gTVPokemonContestLiveUpdates2Text03[]; +extern const u8 gPokeNewsTextSlateport_Upcoming[]; +extern const u8 gPokeNewsTextSlateport_Ongoing[]; +extern const u8 gPokeNewsTextSlateport_Ending[]; +extern const u8 gPokeNewsTextGameCorner_Upcoming[]; +extern const u8 gPokeNewsTextGameCorner_Ongoing[]; +extern const u8 gPokeNewsTextGameCorner_Ending[]; +extern const u8 gPokeNewsTextLilycove_Upcoming[]; +extern const u8 gPokeNewsTextLilycove_Ongoing[]; +extern const u8 gPokeNewsTextLilycove_Ending[]; +extern const u8 gPokeNewsTextBlendMaster_Upcoming[]; +extern const u8 gPokeNewsTextBlendMaster_Ongoing[]; +extern const u8 gPokeNewsTextBlendMaster_Ending[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_camera.h b/include/field_camera.h index 9fbaac6a28..f74fadd867 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -22,4 +22,6 @@ extern u16 gUnknown_03005DE8; // Exported ROM declarations +void DrawWholeMapView(void); + #endif //GUARD_FIELD_CAMERA_H diff --git a/include/field_message_box.h b/include/field_message_box.h new file mode 100644 index 0000000000..e33d52ccf9 --- /dev/null +++ b/include/field_message_box.h @@ -0,0 +1,12 @@ +#ifndef GUARD_field_message_box_H +#define GUARD_field_message_box_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void ShowFieldMessage(const u8 *); + +#endif //GUARD_field_message_box_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 7174d98ccc..e95e4e0ce6 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -8,9 +8,14 @@ // Exported type declarations // Exported RAM declarations +extern struct MapCoords { + int width; + int height; +} gUnknown_03005DC0; // Exported ROM declarations -u8 MapGridGetMetatileBehaviorAt(s16, s16); +u32 MapGridGetMetatileBehaviorAt(int, int); +void MapGridSetMetatileIdAt(int, int, u16); void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(s16, s16); s32 GetMapBorderIdAt(s16, s16); diff --git a/include/flags.h b/include/flags.h index 020fc59cba..7d825feba4 100644 --- a/include/flags.h +++ b/include/flags.h @@ -3,7 +3,7 @@ #define TRAINER_FLAG_START 0x500 #define TRAINERS_FLAG_NO 0x356 -#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) +#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 // SYSTEM FLAGS @@ -84,6 +84,20 @@ #define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61 #define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62 +#define SYS_TOWER_SILVER CODE_FLAGS + 0x64 +#define SYS_TOWER_GOLD CODE_FLAGS + 0x65 +#define SYS_DOME_SILVER CODE_FLAGS + 0x66 +#define SYS_DOME_GOLD CODE_FLAGS + 0x67 +#define SYS_PALACE_SILVER CODE_FLAGS + 0x68 +#define SYS_PALACE_GOLD CODE_FLAGS + 0x69 +#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A +#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B +#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C +#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D +#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E +#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F +#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70 +#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71 #define SYS_FRONTIER_PASS CODE_FLAGS + 0x72 #define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77 diff --git a/include/game_stat.h b/include/game_stat.h index b8a5c3232a..5979c531cc 100644 --- a/include/game_stat.h +++ b/include/game_stat.h @@ -56,4 +56,7 @@ #define NUM_GAME_STATS 64 +void IncrementGameStat(u8); +u32 GetGameStat(u8); + #endif // GUARD_GAME_STAT_H diff --git a/include/global.h b/include/global.h index e98b01ee20..58a0d79dc0 100644 --- a/include/global.h +++ b/include/global.h @@ -197,7 +197,13 @@ struct SaveBlock2 // All below could be a one giant struct - /*0x64C*/ u8 field_64C[1629]; + /*0x64C*/ u8 field_64C[0x588]; + /*0xBD4*/ u16 field_BD4; + /*0xBD6*/ u16 field_BD6; + /*0xBD8*/ u8 field_BD8[11]; + /*0xBE3*/ u8 filler_BE3[8]; + /*0xBEB*/ u8 field_BEB; + /*0xBE3*/ u8 filler_BEC[189]; /*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3 /*0xCA9*/ u8 field_CA9_a : 1; // 0x4 /*0xCA9*/ u8 field_CA9_b : 1; // 0x8 @@ -205,7 +211,10 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_d : 1; // 0x20 /*0xCA9*/ u8 field_CA9_e : 1; // 0x40 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 - /*0xCAA*/ u8 field_CAA[368]; + /*0xCAA*/ u16 field_CAA[0x2e]; + /*0xD06*/ u8 field_D06; + /*0xD07*/ u8 field_D07; + /*0xd08*/ u8 filler_D08[0x112]; /*0xE1A*/ u16 battlePyramidFloor; // possibly? /*0xE1C*/ u8 field_E1C[16]; /*0xE2C*/ struct PyramidBag pyramidBag; @@ -225,30 +234,31 @@ extern struct SaveBlock2 *gSaveBlock2Ptr; struct SecretBaseRecord { - u8 sbr_field_0; - u8 sbr_field_1_0:4; - u8 gender:1; - u8 sbr_field_1_5:1; - u8 sbr_field_1_6:2; - u8 trainerName[7]; - u8 trainerId[4]; // byte 0 is used for determining trainer class - u8 language; - u16 sbr_field_e; - u8 sbr_field_10; - u8 sbr_field_11; - u8 decorations[16]; - u8 decorationPos[16]; - u32 partyPersonality[6]; - u16 partyMoves[6 * 4]; - u16 partySpecies[6]; - u16 partyHeldItems[6]; - u8 partyLevels[6]; - u8 partyEVs[6]; + /*ID?*/ /*0x1A9C*/ u8 sbr_field_0; + /*0x1A9D*/ u8 sbr_field_1_0:4; + /*0x1A9D*/ u8 gender:1; + /*0x1A9D*/ u8 sbr_field_1_5:1; + /*0x1A9D*/ u8 sbr_field_1_6:2; + /*0x1A9E*/ u8 trainerName[7]; // 0xFF bytes? + /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class + /*0x1AA9*/ u8 language; + /*0x1AAA*/ u16 sbr_field_e; + /*0x1AAC*/ u8 sbr_field_10; + /*0x1AAD*/ u8 sbr_field_11; + /*0x1AAE*/ u8 decorations[16]; + /*0x1ABE*/ u8 decorationPos[16]; + /*0x1ACE*/ u32 partyPersonality[6]; + /*0x1AE6*/ u16 partyMoves[6 * 4]; + /*0x1B16*/ u16 partySpecies[6]; + /*0x1B22*/ u16 partyHeldItems[6]; + /*0x1B2E*/ u8 partyLevels[6]; + /*0x1B34*/ u8 partyEVs[6]; }; #include "game_stat.h" #include "global.fieldmap.h" #include "global.berry.h" +#include "global.tv.h" #include "pokemon.h" struct WarpData @@ -317,218 +327,6 @@ struct EasyChatPair u16 words[2]; }; /*size = 0x8*/ -struct TVShowCommon -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[20]; - /*0x16*/ u16 var16[3]; - /*0x1C*/ u8 srcTrainerId3Lo; - /*0x1D*/ u8 srcTrainerId3Hi; - /*0x1E*/ u8 srcTrainerId2Lo; - /*0x1F*/ u8 srcTrainerId2Hi; - /*0x20*/ u8 srcTrainerIdLo; - /*0x21*/ u8 srcTrainerIdHi; - /*0x22*/ u8 trainerIdLo; - /*0x23*/ u8 trainerIdHi; -}; - -struct TVShowFanClubLetter -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 species; - /*0x04*/ u16 pad04[6]; - /*0x10*/ u8 playerName[8]; - /*0x18*/ u8 language; -}; - -struct TVShowRecentHappenings -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 var02; - /*0x04*/ u16 var04[6]; - /*0x10*/ u8 playerName[8]; - /*0x18*/ u8 language; - /*0x19*/ u8 pad19[10]; -}; - -struct TVShowFanclubOpinions -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 var02; - /*0x04*/ u8 var04A:4; - /*0x04*/ u8 var04B:4; - /*0x05*/ u8 playerName[8]; - /*0x0D*/ u8 language; - /*0x0E*/ u8 var0E; - /*0x0F*/ u8 var0F; - /*0x10*/ u8 var10[8]; - /*0x18*/ u16 var18[2]; - /*0x1C*/ u16 var1C[4]; -}; - -struct TVShowUnknownType04 -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[4]; - /*0x06*/ u16 var06; -}; - -struct TVShowNameRaterShow -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 species; - /*0x04*/ u8 pokemonName[11]; - /*0x0F*/ u8 trainerName[11]; - /*0x1A*/ u8 random; - /*0x1B*/ u8 random2; - /*0x1C*/ u16 var1C; - /*0x1E*/ u8 language; - /*0x1F*/ u8 pokemonNameLanguage; -}; - -struct TVShowBravoTrainerPokemonProfiles -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 species; - /*0x04*/ u16 var04[2]; - /*0x08*/ u8 pokemonNickname[11]; - /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 contestRank:2; - /*0x13*/ u8 contestResult:2; - /*0x13*/ u8 var13_7:1; - /*0x14*/ u16 var14; - /*0x16*/ u8 playerName[8]; - /*0x1E*/ u8 language; - /*0x1F*/ u8 var1f; -}; - -struct TVShowBravoTrainerBattleTowerSpotlight -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 trainerName[8]; - /*0x0A*/ u16 species; - /*0x0C*/ u8 pokemonName[8]; - /*0x14*/ u16 defeatedSpecies; - /*0x16*/ u16 var16; - /*0x18*/ u16 var18[1]; - /*0x1A*/ u8 btLevel; - /*0x1B*/ u8 var1b; - /*0x1C*/ u8 var1c; - /*0x1D*/ u8 language; -}; - -struct TVShowPokemonToday -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 language; - /*0x03*/ u8 language2; - /*0x04*/ u8 nickname[11]; - /*0x0F*/ u8 ball; - /*0x10*/ u16 species; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowSmartShopper -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 priceReduced; - /*0x03*/ u8 language; - /*0x04*/ u8 pad04[2]; - /*0x06*/ u16 itemIds[3]; - /*0x0C*/ u16 itemAmounts[3]; - /*0x12*/ u8 shopLocation; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowPokemonTodayFailed -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 language; - /*0x03*/ u8 pad03[9]; - /*0x0c*/ u16 species; - /*0x0e*/ u16 species2; - /*0x10*/ u8 var10; - /*0x11*/ u8 var11; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowPokemonAngler -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 var04; - /*0x06*/ u8 language; - u8 pad07[12]; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowWorldOfMasters -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 var02; - /*0x04*/ u16 var04; - /*0x06*/ u16 var06; - /*0x08*/ u16 var08; - /*0x0a*/ u8 var0a; - /*0x0b*/ u8 language; - u8 pad0c[7]; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowMassOutbreak -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 moves[4]; - /*0x0C*/ u16 species; - /*0x0E*/ u16 var0E; - /*0x10*/ u8 locationMapNum; - /*0x11*/ u8 locationMapGroup; - /*0x12*/ u8 var12; - /*0x13*/ u8 probability; - /*0x14*/ u8 level; - /*0x15*/ u8 var15; - /*0x16*/ u16 var16; - /*0x18*/ u8 language; - u8 pad19[11]; -}; - -typedef union TVShow -{ - struct TVShowCommon common; - struct TVShowFanClubLetter fanclubLetter; - struct TVShowRecentHappenings recentHappenings; - struct TVShowFanclubOpinions fanclubOpinions; - struct TVShowUnknownType04 unkShow04; - struct TVShowNameRaterShow nameRaterShow; - struct TVShowBravoTrainerPokemonProfiles bravoTrainer; - struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; - struct TVShowPokemonToday pokemonToday; - struct TVShowSmartShopper smartshopperShow; - struct TVShowPokemonTodayFailed pokemonTodayFailed; - struct TVShowPokemonAngler pokemonAngler; - struct TVShowWorldOfMasters worldOfMasters; - struct TVShowMassOutbreak massOutbreak; -} TVShow; - struct MailStruct { /*0x00*/ u16 words[9]; @@ -576,35 +374,6 @@ typedef union OldMan u8 filler[0x40]; } OldMan; -struct UnknownSaveStruct2ABC -{ - u8 val0; - u8 val1; - u16 val2; -}; - -struct GabbyAndTyData -{ - /*2b10*/ u16 mon1; - /*2b12*/ u16 mon2; - /*2b14*/ u16 lastMove; - /*2b16*/ u16 quote; - /*2b18*/ u8 mapnum; - /*2b19*/ u8 battleNum; - /*2b1a*/ u8 valA_0:1; - /*2b1a*/ u8 valA_1:1; - /*2b1a*/ u8 valA_2:1; - /*2b1a*/ u8 valA_3:1; - /*2b1a*/ u8 valA_4:1; - /*2b1a*/ u8 valA_5:3; - /*2b1b*/ u8 valB_0:1; - /*2b1b*/ u8 valB_1:1; - /*2b1b*/ u8 valB_2:1; - /*2b1b*/ u8 valB_3:1; - /*2b1b*/ u8 valB_4:1; - /*2b1b*/ u8 valB_5:3; -}; - struct RecordMixing_UnknownStructSub { u32 unk0; @@ -781,22 +550,22 @@ struct SaveBlock1 /*0x????*/ u8 decorCushion[10]; /*0x27CA*/ u8 padding_27CA[2]; /*0x27CC*/ TVShow tvShows[25]; - /*0x2B50*/ struct UnknownSaveStruct2ABC pokeNews[16]; + /*0x2B50*/ PokeNews pokeNews[16]; /*0x2B90*/ u16 outbreakPokemonSpecies; - /*0x????*/ u8 outbreakLocationMapNum; - /*0x????*/ u8 outbreakLocationMapGroup; - /*0x????*/ u8 outbreakPokemonLevel; - /*0x????*/ u8 outbreakUnk1; - /*0x????*/ u16 outbreakUnk2; - /*0x????*/ u16 outbreakPokemonMoves[4]; - /*0x????*/ u8 outbreakUnk4; - /*0x????*/ u8 outbreakPokemonProbability; - /*0x????*/ u16 outbreakUnk5; + /*0x2B92*/ u8 outbreakLocationMapNum; + /*0x2B93*/ u8 outbreakLocationMapGroup; + /*0x2B94*/ u8 outbreakPokemonLevel; + /*0x2B95*/ u8 outbreakUnk1; + /*0x2B96*/ u16 outbreakUnk2; + /*0x2B98*/ u16 outbreakPokemonMoves[4]; + /*0x2BA0*/ u8 outbreakUnk4; + /*0x2BA1*/ u8 outbreakPokemonProbability; + /*0x2BA2*/ u16 outbreakDaysLeft; /*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData; - /*0x????*/ u16 unk2B1C[6]; - /*0x????*/ u16 unk2B28[6]; - /*0x????*/ u16 unk2B34[6]; - /*0x????*/ u16 unk2B3A[3]; + /*0x2BB0*/ u16 unk2BB0[6]; + /*0x2BBC*/ u16 unk2BBC[6]; + /*0x2BC8*/ u16 unk2BC8[6]; + /*0x2BD4*/ u16 unk2BD4[3]; /*0x2BE0*/ struct MailStruct mail[16]; /*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system /*0x2E25*/ u8 unk2E25[3]; // possibly padding? @@ -806,7 +575,8 @@ struct SaveBlock1 /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum /*0x3030*/ struct DaycareData daycare; /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; - /*0x31A0*/ u8 filler_31A0[8]; + /*0x31A0*/ u8 unk_31A0; + /*0x31A1*/ u8 filler_31A1[7]; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; diff --git a/include/global.tv.h b/include/global.tv.h new file mode 100644 index 0000000000..5f65aa8e0a --- /dev/null +++ b/include/global.tv.h @@ -0,0 +1,535 @@ +#ifndef GUARD_GLOBAL_TV_H +#define GUARD_GLOBAL_TV_H + +enum +{ + TVSHOW_OFF_AIR, + + TVSHOW_FAN_CLUB_LETTER = 1, + TVSHOW_RECENT_HAPPENINGS, + TVSHOW_PKMN_FAN_CLUB_OPINIONS, + TVSHOW_UNKN_SHOWTYPE_04, + TVSHOW_NAME_RATER_SHOW, + TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, + TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE, + TVSHOW_CONTEST_LIVE_UPDATES, + TVSHOW_3_CHEERS_FOR_POKEBLOCKS, + TVSHOW_BATTLE_UPDATE, + TVSHOW_FAN_CLUB_SPECIAL, + TVSHOW_CONTEST_LIVE_UPDATES_2, + + TVSHOW_POKEMON_TODAY_CAUGHT = 21, + TVSHOW_SMART_SHOPPER, + TVSHOW_POKEMON_TODAY_FAILED, + TVSHOW_FISHING_ADVICE, + TVSHOW_WORLD_OF_MASTERS, + TVSHOW_TODAYS_RIVAL_TRAINER, + TVSHOW_TREND_WATCHER, + TVSHOW_TREASURE_INVESTIGATORS, + TVSHOW_FIND_THAT_GAMER, + TVSHOW_BREAKING_NEWS, + TVSHOW_SECRET_BASE_VISIT, + TVSHOW_LOTTO_WINNER, + TVSHOW_BATTLE_SEMINAR, + TVSHOW_TRAINER_FAN_CLUB, + TVSHOW_CUTIES, + TVSHOW_FRONTIER, + TVSHOW_NUMBER_ONE, + TVSHOW_SECRET_BASE_SECRETS, + TVSHOW_SAFARI_FAN_CLUB, + + TVSHOW_MASS_OUTBREAK = 41, +}; + +typedef union // size = 0x24 +{ + // Common + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 pad02[26]; + /*0x1C*/ u8 srcTrainerId3Lo; + /*0x1D*/ u8 srcTrainerId3Hi; + /*0x1E*/ u8 srcTrainerId2Lo; + /*0x1F*/ u8 srcTrainerId2Hi; + /*0x20*/ u8 srcTrainerIdLo; + /*0x21*/ u8 srcTrainerIdHi; + /*0x22*/ u8 trainerIdLo; + /*0x23*/ u8 trainerIdHi; + } common; + + // Local shows + // TVSHOW_FAN_CLUB_LETTER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u16 words[6]; + /*0x10*/ u8 playerName[8]; + /*0x18*/ u8 language; + } fanclubLetter; + + // TVSHOW_RECENT_HAPPENINGS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 var02; + /*0x04*/ u16 words[6]; + /*0x10*/ u8 playerName[8]; + /*0x18*/ u8 language; + } recentHappenings; + + // TVSHOW_PKMN_FAN_CLUB_OPINIONS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u8 friendshipHighNybble:4; + /*0x04*/ u8 questionAsked:4; + /*0x05*/ u8 playerName[8]; + /*0x0D*/ u8 language; + /*0x0E*/ u8 pokemonNameLanguage; + /*0x0F*/ u8 filler_0F[1]; + /*0x10*/ u8 nickname[8]; + /*0x18*/ u8 filler_18[4]; + /*0x1C*/ u16 words[4]; + } fanclubOpinions; + + // TVSHOW_UNKN_SHOWTYPE_04 (dummied out) + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 pad02[4]; + /*0x06*/ u16 var06; + /*0x08*/ u8 pad_08[3]; + /*0x0b*/ u8 string_0b[12]; + /*0x17*/ u8 language; + } unkShow04; + + // TVSHOW_NAME_RATER_SHOW + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u8 pokemonName[11]; + /*0x0F*/ u8 trainerName[11]; + /*0x1A*/ u8 random; + /*0x1B*/ u8 random2; + /*0x1C*/ u16 randomSpecies; + /*0x1E*/ u8 language; + /*0x1F*/ u8 pokemonNameLanguage; + } nameRaterShow; + + // TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE (contest) + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u16 words[2]; + /*0x08*/ u8 pokemonNickname[11]; + /*0x13*/ u8 contestCategory:3; + /*0x13*/ u8 contestRank:2; + /*0x13*/ u8 contestResult:2; + /*0x14*/ u16 move; + /*0x16*/ u8 playerName[8]; + /*0x1E*/ u8 language; + /*0x1F*/ u8 pokemonNameLanguage; + } bravoTrainer; + + // TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 trainerName[8]; + /*0x0A*/ u16 species; + /*0x0C*/ u8 pokemonName[8]; + /*0x14*/ u16 defeatedSpecies; + /*0x16*/ u16 numFights; + /*0x18*/ u16 words[1]; + /*0x1A*/ u8 btLevel; + /*0x1B*/ u8 interviewResponse; + /*0x1C*/ bool8 wonTheChallenge; + /*0x1D*/ u8 language; + /*0x1E*/ u8 pokemonNameLanguage; + } bravoTrainerTower; + + // TVSHOW_CONTEST_LIVE_UPDATES + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 winningSpecies; + /*0x04*/ u8 winningTrainerName[8]; + /*0x0C*/ u8 appealFlags2; + /*0x0D*/ u8 round1Rank; + /*0x0e*/ u8 round2Rank; + /*0x0f*/ u8 appealFlags1; + /*0x10*/ u16 move; + /*0x12*/ u16 species; + /*0x14*/ u8 playerName[8]; + /*0x1C*/ u8 category; + /*0x1D*/ u8 language; + /*0x1E*/ u8 winningTrainerLanguage; + } contestLiveUpdates; + + // TVSHOW_3_CHEERS_FOR_POKEBLOCKS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 sheen; + /*0x03*/ u8 flavor:3; + /*0x03*/ u8 unk_03_3:2; + /*0x04*/ u8 worstBlenderName[8]; + /*0x0C*/ u8 playerName[8]; + /*0x14*/ u8 language; + /*0x15*/ u8 worstBlenderLanguage; + } threeCheers; + + // TVSHOW_BATTLE_UPDATE + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u8 playerName[8]; + /*0x0C*/ u8 linkOpponentName[8]; + /*0x14*/ u16 move; + /*0x16*/ u16 species2; + /*0x18*/ u8 battleType; + /*0x19*/ u8 language; + /*0x1A*/ u8 linkOpponentLanguage; + } battleUpdate; + + // TVSHOW_FAN_CLUB_SPECIAL + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 playerName[8]; + /*0x0a*/ u8 idLo; + /*0x0b*/ u8 idHi; + /*0x0c*/ u8 idolName[8]; + /*0x14*/ u16 words[1]; + /*0x16*/ u8 score; + /*0x17*/ u8 language; + /*0x18*/ u8 idolNameLanguage; + } fanClubSpecial; + + // TVSHOW_CONTEST_LIVE_UPDATES_2 + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 playerName[8]; + /*0x0a*/ u8 contestCategory; + /*0x0b*/ u8 nickname[11]; + /*0x16*/ u8 pokeblockState; + /*0x17*/ u8 language; + /*0x18*/ u8 pokemonNameLanguage; + } contestLiveUpdates2; + + // Record Mixing Shows + // TVSHOW_POKEMON_TODAY_CAUGHT + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 language; + /*0x03*/ u8 language2; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 ball; + /*0x10*/ u16 species; + /*0x12*/ u8 nBallsUsed; + /*0x13*/ u8 playerName[8]; + } pokemonToday; + + // TVSHOW_SMART_SHOPPER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 priceReduced; + /*0x03*/ u8 language; + /*0x04*/ u8 pad04[2]; + /*0x06*/ u16 itemIds[3]; + /*0x0C*/ u16 itemAmounts[3]; + /*0x12*/ u8 shopLocation; + /*0x13*/ u8 playerName[8]; + } smartshopperShow; + + // TVSHOW_POKEMON_TODAY_FAILED + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 language; + /*0x03*/ u8 pad03[9]; + /*0x0c*/ u16 species; + /*0x0e*/ u16 species2; + /*0x10*/ u8 nBallsUsed; + /*0x11*/ u8 outcome; + /*0x12*/ u8 location; + /*0x13*/ u8 playerName[8]; + } pokemonTodayFailed; + + // TVSHOW_FISHING_ADVICE + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 nBites; + /*0x03*/ u8 nFails; + /*0x04*/ u16 species; + /*0x06*/ u8 language; + /*0x07*/ u8 pad07[12]; + /*0x13*/ u8 playerName[8]; + } pokemonAngler; + + // TVSHOW_WORLD_OF_MASTERS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 numPokeCaught; + /*0x04*/ u16 caughtPoke; + /*0x06*/ u16 steps; + /*0x08*/ u16 species; + /*0x0a*/ u8 location; + /*0x0b*/ u8 language; + /*0x0c*/ u8 pad0c[7]; + /*0x13*/ u8 playerName[8]; + } worldOfMasters; + + // TVSHOW_TODAYS_RIVAL_TRAINER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 dexCount; + /*0x04*/ u8 badgeCount; + /*0x05*/ u8 nSilverSymbols; + /*0x06*/ u8 nGoldSymbols; + /*0x07*/ u8 location; + /*0x08*/ u16 battlePoints; + /*0x0a*/ u16 mapDataId; + /*0x0c*/ u8 language; + /*0x0d*/ u8 filler_0d[6]; + /*0x13*/ u8 playerName[8]; + } rivalTrainer; + + // TVSHOW_TREND_WATCHER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 filler_02[2]; + /*0x04*/ u16 words[2]; + /*0x08*/ u8 gender; + /*0x09*/ u8 language; + /*0x0a*/ u8 filler_0a[9]; + /*0x13*/ u8 playerName[8]; + } trendWatcher; + + // TVSHOW_TREASURE_INVESTIGATORS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 item; + /*0x04*/ u8 location; + /*0x05*/ u8 language; + /*0x06*/ u16 mapDataId; + /*0x08*/ u8 filler_08[11]; + /*0x13*/ u8 playerName[8]; + } treasureInvestigators; + + // TVSHOW_FIND_THAT_GAMER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 won; + /*0x03*/ u8 whichGame; + /*0x04*/ u16 nCoins; + /*0x06*/ u8 filler_06[2]; + /*0x08*/ u8 language; + /*0x09*/ u8 filler_09[10]; + /*0x13*/ u8 playerName[8]; + } findThatGamer; + + // TVSHOW_BREAKING_NEWS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 lastOpponentSpecies; + /*0x04*/ u8 location; + /*0x05*/ u8 outcome; + /*0x06*/ u16 caughtMonBall; + /*0x08*/ u16 balls; + /*0x0a*/ u16 poke1Species; + /*0x0c*/ u16 lastUsedMove; + /*0x0e*/ u8 language; + /*0x0f*/ u8 filler_0f[4]; + /*0x13*/ u8 playerName[8]; + } breakingNews; + + // TVSHOW_SECRET_BASE_VISIT + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 avgLevel; + /*0x03*/ u8 nDecorations; + /*0x04*/ u8 decorations[4]; + /*0x08*/ u16 species; + /*0x0a*/ u16 move; + /*0x0c*/ u8 language; + /*0x0d*/ u8 filler_0d[6]; + /*0x13*/ u8 playerName[8]; + } secretBaseVisit; + + // TVSHOW_LOTTO_WINNER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 item; + /*0x04*/ u8 whichPrize; + /*0x05*/ u8 language; + /*0x06*/ u8 filler_06[13]; + /*0x13*/ u8 playerName[8]; + } lottoWinner; + + // TVSHOW_BATTLE_SEMINAR + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 move; + /*0x04*/ u16 foeSpecies; + /*0x06*/ u16 species; + /*0x08*/ u16 otherMoves[3]; + /*0x0e*/ u16 betterMove; + /*0x10*/ u8 nOtherMoves; + /*0x11*/ u8 language; + /*0x12*/ u8 filler_12[1]; + /*0x13*/ u8 playerName[8]; + } battleSeminar; + + // TVSHOW_TRAINER_FAN_CLUB + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 filler_02[2]; + /*0x04*/ u16 words[2]; + /*0x08*/ u8 language; + /*0x09*/ u8 filler_09[10]; + /*0x13*/ u8 playerName[8]; + } trainerFanClub; + + // TVSHOW_CUTIES + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 nRibbons; + /*0x03*/ u8 selectedRibbon; + /*0x04*/ u8 nickname[11]; + /*0x0f*/ u8 language; + /*0x10*/ u8 pokemonNameLanguage; + /*0x11*/ u8 filler_12[2]; + /*0x13*/ u8 playerName[8]; + } cuties; + + // TVSHOW_FRONTIER + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 winStreak; + /*0x04*/ u16 species1; + /*0x06*/ u16 species2; + /*0x08*/ u16 species3; + /*0x0a*/ u16 species4; + /*0x0c*/ u8 language; + /*0x0d*/ u8 facility; + /*0x0e*/ u8 filler_0e[5]; + /*0x13*/ u8 playerName[8]; + } frontier; + + // TVSHOW_NUMBER_ONE + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 count; + /*0x04*/ u8 actionIdx; + /*0x05*/ u8 language; + /*0x06*/ u8 filler_06[13]; + /*0x13*/ u8 playerName[8]; + } numberOne; + + // TVSHOW_SECRET_BASE_SECRETS + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 stepsInBase; + /*0x04*/ u8 baseOwnersName[8]; + /*0x0c*/ u32 flags; + /*0x10*/ u16 item; + /*0x12*/ u8 savedState; + /*0x13*/ u8 playerName[8]; + /*0x1b*/ u8 language; + /*0x1c*/ u8 baseOwnersNameLanguage; + } secretBaseSecrets; + + // TVSHOW_SAFARI_FAN_CLUB + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 nMonsCaught; + /*0x03*/ u8 nPkblkUsed; + /*0x04*/ u8 language; + /*0x05*/ u8 filler_05[14]; + /*0x13*/ u8 playerName[8]; + } safariFanClub; + + // Mass Outbreak + // TVSHOW_MASS_OUTBREAK + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 moves[4]; + /*0x0C*/ u16 species; + /*0x0E*/ u16 var0E; + /*0x10*/ u8 locationMapNum; + /*0x11*/ u8 locationMapGroup; + /*0x12*/ u8 var12; + /*0x13*/ u8 probability; + /*0x14*/ u8 level; + /*0x15*/ u8 var15; + /*0x16*/ u16 daysLeft; + /*0x18*/ u8 language; + } massOutbreak; +} TVShow; + +enum { + POKENEWS_NONE, + POKENEWS_SLATEPORT, + POKENEWS_GAME_CORNER, + POKENEWS_LILYCOVE, + POKENEWS_BLENDMASTER +}; + +typedef struct // 2b50 +{ + u8 kind; + u8 state; + u16 days; +} PokeNews; + +struct GabbyAndTyData +{ + /*2ba4*/ u16 mon1; + /*2ba6*/ u16 mon2; + /*2ba8*/ u16 lastMove; + /*2baa*/ u16 quote[1]; + /*2bac*/ u8 mapnum; + /*2bad*/ u8 battleNum; + /*2bae*/ u8 battleTookMoreThanOneTurn:1; + /*2bae*/ u8 playerLostAMon:1; + /*2bae*/ u8 playerUsedAnItem:1; + /*2bae*/ u8 playerThrewABall:1; + /*2bae*/ u8 onAir:1; + /*2bae*/ u8 valA_5:3; + /*2baf*/ u8 battleTookMoreThanOneTurn2:1; + /*2baf*/ u8 playerLostAMon2:1; + /*2baf*/ u8 playerUsedAnItem2:1; + /*2baf*/ u8 playerThrewABall2:1; + /*2baf*/ u8 valB_4:4; +}; + +#endif //GUARD_GLOBAL_TV_H diff --git a/include/international_string_util.h b/include/international_string_util.h new file mode 100644 index 0000000000..0eb12a535d --- /dev/null +++ b/include/international_string_util.h @@ -0,0 +1,13 @@ +#ifndef GUARD_international_string_util_H +#define GUARD_international_string_util_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void TVShowConvertInternationalString(void *dest, const void *src, u8 language); +u32 sub_81DB604(const u8 *); + +#endif //GUARD_international_string_util_H diff --git a/include/item.h b/include/item.h index eaefa02989..e642ca608b 100644 --- a/include/item.h +++ b/include/item.h @@ -58,5 +58,6 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId); u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); +u16 itemid_get_market_price(u16 itemId); #endif // ITEM_H diff --git a/include/link.h b/include/link.h index 012c904806..5f5654e4d3 100644 --- a/include/link.h +++ b/include/link.h @@ -177,12 +177,12 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]); void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); +u8 GetLinkPlayerCount(void); void sub_800E0E8(void); bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); void sub_800ADF8(void); -u8 sub_8009FCC(void); #endif // GUARD_LINK_H diff --git a/include/malloc.h b/include/malloc.h index 4568e244ad..f3a7317975 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -2,7 +2,7 @@ #define GUARD_MALLOC_H #define malloc Alloc -#define calloc AllocZeroed +#define calloc(ct, sz) AllocZeroed((ct) * (sz)) #define free Free extern u8 gHeap[]; diff --git a/include/moves.h b/include/moves.h index bc213cbc73..682f59506a 100644 --- a/include/moves.h +++ b/include/moves.h @@ -359,6 +359,7 @@ enum MOVE_DOOM_DESIRE, MOVE_PSYCHO_BOOST, }; +extern const u8 gMoveNames[][13]; #define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST diff --git a/include/pokedex.h b/include/pokedex.h index 38aca09158..79721899f2 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -16,6 +16,8 @@ enum FLAG_SET_CAUGHT }; -u8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); +s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); +u16 pokedex_count(u8); +u16 sub_80C0844(u8); #endif // GUARD_POKEDEX_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 5216e84508..49680793d2 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -2,5 +2,7 @@ #define GUARD_POKEMON_STORAGE_SYSTEM_H u8* GetBoxNamePtr(u8 boxNumber); +struct BoxPokemon *GetBoxedMonPtr(u8, u8); +void SetBoxMonNickFromAnyBox(u8, u8, u8 *); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/region_map.h b/include/region_map.h new file mode 100644 index 0000000000..52e7376be7 --- /dev/null +++ b/include/region_map.h @@ -0,0 +1,227 @@ +#ifndef GUARD_REGION_MAP_H +#define GUARD_REGION_MAP_H + +// Exported type declarations + +enum { + REGION_MAP_LITTLEROOT_TOWN, + REGION_MAP_OLDALE_TOWN, + REGION_MAP_DEWFORD_TOWN, + REGION_MAP_LAVARIDGE_TOWN, + REGION_MAP_FALLARBOR_TOWN, + REGION_MAP_VERDANTURF_TOWN, + REGION_MAP_PACIFIDLOG_TOWN, + REGION_MAP_PETALBURG_CITY, + REGION_MAP_SLATEPORT_CITY, + REGION_MAP_MAUVILLE_CITY, + REGION_MAP_RUSTBORO_CITY, + REGION_MAP_FORTREE_CITY, + REGION_MAP_LILYCOVE_CITY, + REGION_MAP_MOSSDEEP_CITY, + REGION_MAP_SOOTOPOLIS_CITY, + REGION_MAP_EVER_GRANDE_CITY, + REGION_MAP_ROUTE_101, + REGION_MAP_ROUTE_102, + REGION_MAP_ROUTE_103, + REGION_MAP_ROUTE_104, + REGION_MAP_ROUTE_105, + REGION_MAP_ROUTE_106, + REGION_MAP_ROUTE_107, + REGION_MAP_ROUTE_108, + REGION_MAP_ROUTE_109, + REGION_MAP_ROUTE_110, + REGION_MAP_ROUTE_111, + REGION_MAP_ROUTE_112, + REGION_MAP_ROUTE_113, + REGION_MAP_ROUTE_114, + REGION_MAP_ROUTE_115, + REGION_MAP_ROUTE_116, + REGION_MAP_ROUTE_117, + REGION_MAP_ROUTE_118, + REGION_MAP_ROUTE_119, + REGION_MAP_ROUTE_120, + REGION_MAP_ROUTE_121, + REGION_MAP_ROUTE_122, + REGION_MAP_ROUTE_123, + REGION_MAP_ROUTE_124, + REGION_MAP_ROUTE_125, + REGION_MAP_ROUTE_126, + REGION_MAP_ROUTE_127, + REGION_MAP_ROUTE_128, + REGION_MAP_ROUTE_129, + REGION_MAP_ROUTE_130, + REGION_MAP_ROUTE_131, + REGION_MAP_ROUTE_132, + REGION_MAP_ROUTE_133, + REGION_MAP_ROUTE_134, + REGION_MAP_UNDERWATER_124, + REGION_MAP_UNDERWATER_125, + REGION_MAP_UNDERWATER_126, + REGION_MAP_UNDERWATER_127, + REGION_MAP_UNDERWATER_128, + REGION_MAP_GRANITE_CAVE, + REGION_MAP_MT_CHIMNEY, + REGION_MAP_SAFARI_ZONE, + REGION_MAP_BATTLE_FRONTIER, + REGION_MAP_PETALBURG_WOODS, + REGION_MAP_RUSTURF_TUNNEL, + REGION_MAP_ABANDONED_SHIP, + REGION_MAP_NEW_MAUVILLE, + REGION_MAP_METEOR_FALLS, + REGION_MAP_METEOR_FALLS2, + REGION_MAP_MT_PYRE, + REGION_MAP_AQUA_HIDEOUT_OLD, + REGION_MAP_SHOAL_CAVE, + REGION_MAP_SEAFLOOR_CAVERN, + REGION_MAP_UNDERWATER, + REGION_MAP_VICTORY_ROAD, + REGION_MAP_MIRAGE_ISLAND, + REGION_MAP_CAVE_OF_ORIGIN, + REGION_MAP_SOUTHERN_ISLAND, + REGION_MAP_FIERY_PATH, + REGION_MAP_FIERY_PATH2, + REGION_MAP_JAGGED_PASS, + REGION_MAP_JAGGED_PASS2, + REGION_MAP_SEALED_CHAMBER, + REGION_MAP_UNDERWATER_SEALED_CHAMBER, + REGION_MAP_SCORCHED_SLAB, + REGION_MAP_ISLAND_CAVE, + REGION_MAP_DESERT_RUINS, + REGION_MAP_ANCIENT_TOMB, + REGION_MAP_INSIDE_OF_TRUCK, + REGION_MAP_SKY_PILLAR, + REGION_MAP_SECRET_BASE, + REGION_MAP_NONE, + REGION_MAP_PALLET_TOWN, + REGION_MAP_VIRIDIAN_CITY, + REGION_MAP_PEWTER_CITY, + REGION_MAP_CERULEAN_CITY, + REGION_MAP_LAVENDER_TOWN, + REGION_MAP_VERMILION_CITY, + REGION_MAP_CELADON_CITY, + REGION_MAP_FUCHSIA_CITY, + REGION_MAP_CINNABAR_ISLAND, + REGION_MAP_INDIGO_PLATEAU, + REGION_MAP_SAFFRON_CITY, + REGION_MAP_ROUTE_4, + REGION_MAP_ROUTE_10, + REGION_MAP_ROUTE_1, + REGION_MAP_ROUTE_2, + REGION_MAP_ROUTE_3, + REGION_MAP_ROUTE_4_2, + REGION_MAP_ROUTE_5, + REGION_MAP_ROUTE_6, + REGION_MAP_ROUTE_7, + REGION_MAP_ROUTE_8, + REGION_MAP_ROUTE_9, + REGION_MAP_ROUTE_10_2, + REGION_MAP_ROUTE_11, + REGION_MAP_ROUTE_12, + REGION_MAP_ROUTE_13, + REGION_MAP_ROUTE_14, + REGION_MAP_ROUTE_15, + REGION_MAP_ROUTE_16, + REGION_MAP_ROUTE_17, + REGION_MAP_ROUTE_18, + REGION_MAP_ROUTE_19, + REGION_MAP_ROUTE_20, + REGION_MAP_ROUTE_21, + REGION_MAP_ROUTE_22, + REGION_MAP_ROUTE_23, + REGION_MAP_ROUTE_24, + REGION_MAP_ROUTE_25, + REGION_MAP_VIRIDIAN_FOREST, + REGION_MAP_MT_MOON, + REGION_MAP_S_S_ANNE, + REGION_MAP_UNDERGROUND_PATH, + REGION_MAP_UNDERGROUND_PATH_2, + REGION_MAP_DIGLETTS_CAVE, + REGION_MAP_KANTO_VICTORY_ROAD, + REGION_MAP_ROCKET_HIDEOUT, + REGION_MAP_SILPH_CO, + REGION_MAP_POKEMON_MANSION, + REGION_MAP_KANTO_SAFARI_ZONE, + REGION_MAP_POKEMON_LEAGUE, + REGION_MAP_ROCK_TUNNEL, + REGION_MAP_SEAFOAM_ISLANDS, + REGION_MAP_POKEMON_TOWER, + REGION_MAP_CERULEAN_CAVE, + REGION_MAP_POWER_PLANT, + REGION_MAP_ONE_ISLAND, + REGION_MAP_TWO_ISLAND, + REGION_MAP_THREE_ISLAND, + REGION_MAP_FOUR_ISLAND, + REGION_MAP_FIVE_ISLAND, + REGION_MAP_SEVEN_ISLAND, + REGION_MAP_SIX_ISLAND, + REGION_MAP_KINDLE_ROAD, + REGION_MAP_TREASURE_BEACH, + REGION_MAP_CAPE_BRINK, + REGION_MAP_BOND_BRIDGE, + REGION_MAP_THREE_ISLE_PORT, + REGION_MAP_SEVII_ISLE_6, + REGION_MAP_SEVII_ISLE_7, + REGION_MAP_SEVII_ISLE_8, + REGION_MAP_SEVII_ISLE_9, + REGION_MAP_RESORT_GORGEOUS, + REGION_MAP_WATER_LABYRINTH, + REGION_MAP_FIVE_ISLE_MEADOW, + REGION_MAP_MEMORIAL_PILLAR, + REGION_MAP_OUTCAST_ISLAND, + REGION_MAP_GREEN_PATH, + REGION_MAP_WATER_PATH, + REGION_MAP_RUIN_VALLEY, + REGION_MAP_TRAINER_TOWER, + REGION_MAP_CANYON_ENTRANCE, + REGION_MAP_SEVAULT_CANYON, + REGION_MAP_TANOBY_RUINS, + REGION_MAP_SEVII_ISLE_22, + REGION_MAP_SEVII_ISLE_23, + REGION_MAP_SEVII_ISLE_24, + REGION_MAP_NAVEL_ROCK, + REGION_MAP_MT_EMBER, + REGION_MAP_BERRY_FOREST, + REGION_MAP_ICEFALL_CAVE, + REGION_MAP_ROCKET_WAREHOUSE, + REGION_MAP_TRAINER_TOWER_2, + REGION_MAP_DOTTED_HOLE, + REGION_MAP_LOST_CAVE, + REGION_MAP_PATTERN_BUSH, + REGION_MAP_ALTERING_CAVE, + REGION_MAP_TANOBY_CHAMBERS, + REGION_MAP_THREE_ISLE_PATH, + REGION_MAP_TANOBY_KEY, + REGION_MAP_BIRTH_ISLAND, + REGION_MAP_MONEAN_CHAMBER, + REGION_MAP_LIPTOO_CHAMBER, + REGION_MAP_WEEPTH_CHAMBER, + REGION_MAP_DILFORD_CHAMBER, + REGION_MAP_SCUFIB_CHAMBER, + REGION_MAP_RIXY_CHAMBER, + REGION_MAP_VIAPOIS_CHAMBER, + REGION_MAP_EMBER_SPA, + REGION_MAP_SPECIAL_AREA, + REGION_MAP_AQUA_HIDEOUT, + REGION_MAP_MAGMA_HIDEOUT, + REGION_MAP_MIRAGE_TOWER, + REGION_MAP_BIRTH_ISLAND_2, + REGION_MAP_FARAWAY_ISLAND, + REGION_MAP_ARTISAN_CAVE, + REGION_MAP_MARINE_CAVE, + REGION_MAP_UNDERWATER_MARINE_CAVE, + REGION_MAP_TERRA_CAVE, + REGION_MAP_UNDERWATER_TERRA_CAVE, + REGION_MAP_UNDERWATER_UNK1, + REGION_MAP_UNDERWATER_UNK2, + REGION_MAP_DESERT_UNDERPASS, + REGION_MAP_ALTERING_CAVE_2, + REGION_MAP_NAVEL_ROCK2, + REGION_MAP_TRAINER_HILL +}; + +// Exported RAM declarations + +// Exported ROM declarations +void GetMapName(u8 *, u16, u16); + +#endif //GUARD_REGION_MAP_H diff --git a/include/rom4.h b/include/rom4.h index e19d277a63..c7e46eecb4 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -29,5 +29,6 @@ const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8); void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); void sub_8086230(void); void c2_exit_to_overworld_2_switch(void); +void c2_exit_to_overworld_1_continue_scripts_restart_music(void); #endif //GUARD_ROM4_H diff --git a/include/rom6.h b/include/rom6.h index 15070616d8..006e939109 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -2,5 +2,6 @@ #define GUARD_ROM6_H void sub_81357FC(u8, void(void)); +u8 GetIdxOfFirstPartyMemberThatIsNotAnEgg(void); #endif //GUARD_ROM6_H diff --git a/include/script_menu.h b/include/script_menu.h new file mode 100644 index 0000000000..de80d28d45 --- /dev/null +++ b/include/script_menu.h @@ -0,0 +1,11 @@ +#ifndef GUARD_SCRIPT_MENU_H +#define GUARD_SCRIPT_MENU_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +extern const u8 *const gUnknown_0858BAF0[9]; + +#endif //GUARD_SCRIPT_MENU_H diff --git a/include/secret_base.h b/include/secret_base.h new file mode 100644 index 0000000000..4f7b411da8 --- /dev/null +++ b/include/secret_base.h @@ -0,0 +1,11 @@ +#ifndef GUARD_SECRET_BASE_H +#define GUARD_SECRET_BASE_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void sub_80E980C(void); + +#endif //GUARD_SECRET_BASE_H diff --git a/include/shop.h b/include/shop.h new file mode 100644 index 0000000000..ac5b512cac --- /dev/null +++ b/include/shop.h @@ -0,0 +1,12 @@ +#ifndef GUARD_SHOP_H +#define GUARD_SHOP_H + +// Exported type declarations + +// Exported RAM declarations + +extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; + +// Exported ROM declarations + +#endif //GUARD_SHOP_H diff --git a/include/species.h b/include/species.h index 9ab0565cb3..ac0797418d 100644 --- a/include/species.h +++ b/include/species.h @@ -449,5 +449,6 @@ enum }; #define NUM_SPECIES SPECIES_EGG +extern const u8 gSpeciesNames[][11]; #endif // GUARD_SPECIES_H diff --git a/include/string_util.h b/include/string_util.h index 382f522511..f266460829 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -31,7 +31,7 @@ u8 *StringFillWithTerminator(u8 *dest, u16 n); u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n); u32 StringLength_Multibyte(u8 *str); u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color); -bool32 sub_8009228(u8 *str); +bool32 IsStringJapanese(u8 *str); bool32 sub_800924C(u8 *str, s32 n); u8 GetExtCtrlCodeLength(u8 code); static const u8 *SkipExtCtrlCode(const u8 *s); diff --git a/include/strings.h b/include/strings.h new file mode 100644 index 0000000000..5d1a9bba06 --- /dev/null +++ b/include/strings.h @@ -0,0 +1,33 @@ +#ifndef GUARD_strings_H +#define GUARD_strings_H + +extern const u8 gText_Lv50[]; +extern const u8 gText_OpenLevel[]; +extern const u8 gText_Mom[]; +extern const u8 gText_Dad[]; +extern const u8 gText_Cool[]; +extern const u8 gText_Beauty[]; +extern const u8 gText_Cute[]; +extern const u8 gText_Smart[]; +extern const u8 gText_Tough[]; +extern const u8 gText_Single[]; +extern const u8 gText_Double[]; +extern const u8 gText_Spicy2[]; +extern const u8 gText_Dry2[]; +extern const u8 gText_Sweet2[]; +extern const u8 gText_Bitter2[]; +extern const u8 gText_Sour2[]; +extern const u8 gText_Excellent[]; +extern const u8 gText_VeryGood[]; +extern const u8 gText_Good[]; +extern const u8 gText_SoSo[]; +extern const u8 gText_Bad[]; +extern const u8 gText_TheWorst[]; +extern const u8 gText_Slots[]; +extern const u8 gText_Roulette[]; +extern const u8 gText_Jackpot[]; +extern const u8 gText_First[]; +extern const u8 gText_Second[]; +extern const u8 gText_Third[]; + +#endif //GUARD_strings_H diff --git a/include/tv.h b/include/tv.h new file mode 100644 index 0000000000..b85cac82a5 --- /dev/null +++ b/include/tv.h @@ -0,0 +1,21 @@ +#ifndef GUARD_TV_H +#define GUARD_TV_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +extern u8 *const gTVStringVarPtrs[3]; + +void ClearTVShowData(void); +void PutPokemonTodayCaughtOnAir(void); +u32 GetPlayerIDAsU32(void); +bool8 GetPriceReduction(u8 newsKind); +u8 GetRibbonCount(struct Pokemon *pokemon); +void sub_80EE184(void); +void sub_80F14F8(TVShow *shows); +int sub_80EF370(int value); + +#endif //GUARD_TV_H diff --git a/include/vars.h b/include/vars.h index 7c0edeb772..67c0b67fc2 100644 --- a/include/vars.h +++ b/include/vars.h @@ -53,4 +53,14 @@ #define VAR_0x40BC 0x40BC #define VAR_0x40C2 0x40C2 +#define VAR_FRONTIER_FACILITY 0x40CF + +#define VAR_DAILY_SLOTS 0x40E6 +#define VAR_DAILY_WILDS 0x40E7 +#define VAR_DAILY_BLENDER 0x40E8 +#define VAR_DAILY_PLANTED_BERRIES 0x40E9 +#define VAR_DAILY_PICKED_BERRIES 0x40EA +#define VAR_DAILY_ROULETTE 0x40EB +#define VAR_DAILY_BP 0x40F1 + #endif // GUARD_VARS_H diff --git a/ld_script.txt b/ld_script.txt index 887f248118..d1acf4f99c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -148,7 +148,7 @@ SECTIONS { asm/contest_effect.o(.text); asm/record_mixing.o(.text); asm/secret_base.o(.text); - asm/tv.o(.text); + src/tv.o(.text); asm/contest_link_80F57C4.o(.text); asm/script_pokemon_util_80F87D8.o(.text); asm/field_poison.o(.text); @@ -387,7 +387,7 @@ SECTIONS { data/contest_effect.o(.rodata); data/record_mixing.o(.rodata); data/secret_base.o(.rodata); - data/tv.o(.rodata); + src/tv.o(.rodata); data/contest_link_80F57C4.o(.rodata); data/script_pokemon_util_80F87D8.o(.rodata); src/pokemon_size_record.o(.rodata) diff --git a/src/battle_2.c b/src/battle_2.c index c4da02e366..306008cdb4 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -40,6 +40,7 @@ #include "trainer_classes.h" #include "evolution_scene.h" #include "roamer.h" +#include "tv.h" #include "safari_zone.h" #include "battle_string_ids.h" @@ -64,7 +65,6 @@ struct UnknownPokemonStruct2 /*0x1D*/ u8 language; }; -extern u32 gBattleTypeFlags; extern u8 gBattleCommunication[]; extern u8 gBattleTerrain; extern u16 gBattle_BG0_X; @@ -88,7 +88,6 @@ extern void (*gBattleMainFunc)(void); extern void (*gUnknown_030061E8)(void); extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for? extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for? -extern u8 gBattleOutcome; extern u8 gUnknown_02039B28[]; // possibly a struct? extern struct UnknownStruct6 gUnknown_02038C28; // todo: identify & document extern struct MusicPlayerInfo gMPlay_SE1; @@ -139,7 +138,6 @@ extern u8 gActionForBanks[BATTLE_BANKS_COUNT]; extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; extern u8 gCurrentActionFuncId; extern u8 gLastUsedAbility; -extern u16 gLastUsedItem; extern u8 gUnknown_0203CF00[]; extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; extern const u8* gBattlescriptCurrInstr; @@ -152,7 +150,6 @@ extern u8 gCurrMovePos; extern u8 gUnknown_020241E9; extern u16 gLastUsedMove; -extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const struct BattleMove gBattleMoves[]; extern const u16 gUnknown_08C004E0[]; // battle textbox palette extern const struct BgTemplate gUnknown_0831AA08[]; @@ -226,8 +223,6 @@ extern u8 sub_81A9E28(void); // battle frontier 2 extern void sub_81A56E8(u8 bank); // battle frontier 2 extern void sub_81B8FB0(u8, u8); // party menu extern u8 pokemon_order_func(u8); // party menu -extern void sub_80EC728(void); // tv -extern void sub_80EE184(void); // tv extern bool8 InBattlePyramid(void); // this file's functions @@ -859,7 +854,7 @@ static void CB2_HandleStartBattle(void) { s32 i; - for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == 3; i++); + for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++); if (i == 2) gBattleCommunication[MULTIUSE_STATE] = 16; @@ -2073,7 +2068,7 @@ static void sub_8038F34(void) else monsCount = 2; - for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == 3; i++); + for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++); if (!gSaveBlock2Ptr->field_CA9_b && i == monsCount) { @@ -4927,7 +4922,7 @@ static void HandleEndTurn_FinishBattle(void) } } } - sub_80EC728(); + PutPokemonTodayCaughtOnAir(); } if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 50ae5bafe5..fb6a8272b4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11087,7 +11087,7 @@ static void atkEF_pokeball_catch_calculation(void) { if (gLastUsedItem == ITEM_MASTER_BALL) { - gBattleResults.unk5_1 = 1; + gBattleResults.usedMasterBall = TRUE; } else { diff --git a/src/battle_util.c b/src/battle_util.c index c6762dd993..636e27bdf6 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -353,7 +353,7 @@ void sub_803F850(u8 arg0) { s32 i; - for (i = 0; i < sub_8009FCC(); i++) + for (i = 0; i < GetLinkPlayerCount(); i++) gBattleExecBuffer |= gBitTable[arg0] << (i << 2); gBattleExecBuffer &= ~(0x10000000 << arg0); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 4e4c100900..a1f187b858 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -59,7 +59,7 @@ extern u8* GetMonNick(struct Pokemon* mon, u8* dst); extern u8* GetBoxMonNick(struct BoxPokemon* boxMon, u8* dst); extern u8 sav1_map_get_name(void); extern s8 sub_8198C58(void); -extern void sub_81DB5E8(u8* str1, u8* str2, u8); +extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8); extern void sub_806A068(u16, u8); extern void fade_screen(u8, u8); extern void overworld_free_bg_tilemaps(void); @@ -404,8 +404,8 @@ static bool8 sub_807158C(struct DaycareData* daycare, u8 daycareId) || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->OT_name) != 0)) { StringCopy(gStringVar1, nick); - sub_81DB5E8(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe); - sub_81DB5E8(gStringVar3, daycareMon->monName, daycareMon->unknown); + TVShowConvertInternationalString(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe); + TVShowConvertInternationalString(gStringVar3, daycareMon->monName, daycareMon->unknown); return TRUE; } return FALSE; diff --git a/src/new_game.c b/src/new_game.c index 5a482c593f..d01aa69d4c 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -17,6 +17,7 @@ #include "easy_chat.h" #include "event_data.h" #include "money.h" +#include "tv.h" #include "coins.h" #include "text.h" @@ -36,7 +37,6 @@ extern void sub_813624C(void); // clears something pokeblock related extern void ResetPokedex(void); extern void sub_8084400(void); extern void ClearMailData(void); -extern void ClearTVShowData(void); extern void ResetGabbyAndTy(void); extern void ResetSecretBases(void); extern void ResetLinkContestBoolean(void); diff --git a/src/safari_zone.c b/src/safari_zone.c index 3e25468bf7..f7ef285772 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -114,7 +114,7 @@ void sub_80FC190(void) { SetMainCallback2(c2_exit_to_overworld_2_switch); } - else if (gBattleOutcome == 8) + else if (gBattleOutcome == BATTLE_SAFARI_OUT_OF_BALLS) { ScriptContext2_RunNewScript(gUnknown_082A4B4C); warp_in(); diff --git a/src/start_menu.c b/src/start_menu.c index ac393ce2ef..be30d0e53e 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -170,13 +170,13 @@ extern const u8 gText_BattlePyramidFloor[]; void DisplayPyramidFloorWindow(void) { // TODO: fix location - if (*(u16*)(&gSaveBlock2Ptr->field_CAA[8]) == 7) + if (gSaveBlock2Ptr->field_CAA[4] == 7) sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_1); else sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_2); PutWindowTilemap(sBattlePyramidFloorWindowId); sub_81973FC(sBattlePyramidFloorWindowId, 0); - StringCopy(gStringVar1, gUnknown_08510510[*(u16*)(&gSaveBlock2Ptr->field_CAA[8])]); + StringCopy(gStringVar1, gUnknown_08510510[gSaveBlock2Ptr->field_CAA[4]]); StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor); PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL); CopyWindowToVram(sBattlePyramidFloorWindowId, 2); diff --git a/src/string_util.c b/src/string_util.c index 92e9f19e82..ea50ba5a53 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -625,7 +625,7 @@ u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color) return dest; } -bool32 sub_8009228(u8 *str) +bool32 IsStringJapanese(u8 *str) { while (*str != EOS) { diff --git a/src/tv.c b/src/tv.c new file mode 100644 index 0000000000..73b3460687 --- /dev/null +++ b/src/tv.c @@ -0,0 +1,7927 @@ + +// Includes +#include "global.h" +#include "rtc.h" +#include "rom4.h" +#include "map_constants.h" +#include "rng.h" +#include "event_data.h" +#include "fieldmap.h" +#include "field_camera.h" +#include "strings.h" +#include "string_util.h" +#include "international_string_util.h" +#include "pokemon_storage_system.h" +#include "field_message_box.h" +#include "easy_chat.h" +#include "species.h" +#include "moves.h" +#include "battle.h" +#include "battle_tower.h" +#include "contest.h" +#include "items.h" +#include "item.h" +#include "link.h" +#include "main.h" +#include "event_scripts.h" +#include "shop.h" +#include "lilycove_lady.h" +#include "rom6.h" +#include "pokedex.h" +#include "field_map_obj.h" +#include "text.h" +#include "script_menu.h" +#include "naming_screen.h" +#include "malloc.h" +#include "region_map.h" +#include "decoration.h" +#include "secret_base.h" +#include "tv.h" + +// Static type declarations + +#define rbernoulli(num, den) TV_BernoulliTrial(0xFFFF * (num) / (den)) + +// Static RAM declarations + +s8 sCurTVShowSlot; +u16 sTV_SecretBaseVisitMovesTemp[8]; +u8 sTV_DecorationsBuffer[16]; +struct { + u8 level; + u16 species; + u16 move; +} sTV_SecretBaseVisitMonsTemp[10]; + +IWRAM_DATA u8 sTVShowMixingNumPlayers; +IWRAM_DATA u8 sTVShowNewsMixingNumPlayers; +IWRAM_DATA s8 sTVShowMixingCurSlot; + +EWRAM_DATA u16 sPokemonAnglerSpecies = 0; +EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0; +EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0; +EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE; +EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0; +EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0; +EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {}; + +// Static ROM declarations + +extern const u8 *const sTVBravoTrainerTextGroup[]; +extern const u8 *const sTVBravoTrainerBattleTowerTextGroup[]; + +void ClearPokemonNews(void); +u8 GetTVChannelByShowType(u8 kind); +u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void); +u8 CheckForBigMovieOrEmergencyNewsOnTV(void); +void SetTVMetatilesOnMap(int width, int height, u16 tileId); +u8 FindAnyTVNewsOnTheAir(void); +bool8 IsTVShowInSearchOfTrainersAiring(void); +void TakeTVShowInSearchOfTrainersOffTheAir(void); +bool8 TV_BernoulliTrial(u16 ratio); +s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows); +bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag); +void tv_store_id_3x(TVShow *show); +void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx); +s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows); +void FindActiveBroadcastByShowType_SetScriptResult(u8 kind); +void InterviewBefore_BravoTrainerPkmnProfile(void); +void InterviewBefore_NameRater(void); +u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies); +void sub_80EFA88(void); +void sub_80EF93C(TVShow *shows); +s8 sub_80EEE30(PokeNews *pokeNews); +bool8 sub_80EF0E4(u8 newsKind); +void ClearPokemonNewsI(u8 i); +void sub_80F1254(TVShow *shows); +void sub_80F12A4(TVShow *shows); +void sub_80F0358(TVShow *player1, TVShow *player2, TVShow *player3, TVShow *player4); +void sub_80F0C04(void); +void sub_80F0708(void); +void sub_80F0B64(void); +s8 sub_80F06D0(TVShow *tvShows); +bool8 sub_80F049C(TVShow *dest[], TVShow *src[], u8 idx); +bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx); +bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx); +bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx); +void sub_80F0B00(u8 showIdx); +void sub_80F0B24(u16 species, u8 showIdx); +void sub_80F0D60(PokeNews *player1, PokeNews *player2, PokeNews *player3, PokeNews *player4); +void sub_80F0EEC(void); +void sub_80F0F24(void); +s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx); +void sub_80F0E58(PokeNews *dest[], PokeNews *src[]); +bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot); +void TVShowDone(void); +void InterviewAfter_FanClubLetter(void); +void InterviewAfter_RecentHappenings(void); +void InterviewAfter_PkmnFanClubOpinions(void); +void InterviewAfter_DummyShow4(void); +void InterviewAfter_BravoTrainerPokemonProfile(void); +void InterviewAfter_BravoTrainerBattleTowerProfile(void); +void InterviewAfter_ContestLiveUpdates(void); +void UpdateWorldOfMastersAndPutItOnTheAir(void); +void PutPokemonTodayFailedOnTheAir(void); +void sub_80ED718(void); +void sub_80EED88(void); +void TV_SortPurchasesByQuantity(void); +void sub_80ED8B4(u16 days); +void UpdateMassOutbreakTimeLeft(u16 days); +void sub_80EF120(u16 days); +void sub_80EDA48(u16 days); +void sub_80EEB98(u16 days); +void PutFishingAdviceShowOnTheAir(void); +void sub_80EDA80(void); +u8 TV_MonDataIdxToRibbon(u8 monDataIdx); +void sub_80EEBF4(u8 actionIdx); +bool8 IsPriceDiscounted(u8 newsKind); +void InterviewBefore_FanClubLetter(void); +void InterviewBefore_RecentHappenings(void); +void InterviewBefore_PkmnFanClubOpinions(void); +void InterviewBefore_Dummy(void); +void InterviewBefore_BravoTrainerBTProfile(void); +void InterviewBefore_ContestLiveUpdates(void); +void InterviewBefore_3CheersForPokeblocks(void); +void InterviewBefore_FanClubSpecial(void); +void ChangeBoxPokemonNickname_CB(void); +void DoTVShowPokemonFanClubLetter(void); +void DoTVShowRecentHappenings(void); +void DoTVShowPokemonFanClubOpinions(void); +void DoTVShowDummiedOut(void); +void DoTVShowPokemonNewsMassOutbreak(void); +void DoTVShowBravoTrainerPokemonProfile(void); +void DoTVShowBravoTrainerBattleTower(void); +void DoTVShowPokemonTodaySuccessfulCapture(void); +void DoTVShowTodaysSmartShopper(void); +void DoTVShowTheNameRaterShow(void); +void DoTVShowPokemonContestLiveUpdates(void); +void DoTVShowPokemonBattleUpdate(void); +void DoTVShow3CheersForPokeblocks(void); +void DoTVShowPokemonTodayFailedCapture(void); +void DoTVShowPokemonAngler(void); +void DoTVShowTheWorldOfMasters(void); +void DoTVShowTodaysRivalTrainer(void); +void DoTVShowDewfordTrendWatcherNetwork(void); +void DoTVShowHoennTreasureInvestigators(void); +void DoTVShowFindThatGamer(void); +void DoTVShowBreakingNewsTV(void); +void DoTVShowSecretBaseVisit(void); +void DoTVShowPokemonLotteryWinnerFlashReport(void); +void DoTVShowThePokemonBattleSeminar(void); +void DoTVShowTrainerFanClubSpecial(void); +void DoTVShowTrainerFanClub(void); +void DoTVShowSpotTheCuties(void); +void DoTVShowPokemonNewsBattleFrontier(void); +void DoTVShowWhatsNo1InHoennToday(void); +void DoTVShowSecretBaseSecrets(void); +void DoTVShowSafariFanClub(void); +void DoTVShowPokemonContestLiveUpdates2(void); + +// .rodata + +const struct { + u16 species; + u16 moves[4]; + u8 level; + u8 location; +} sPokeOutbreakSpeciesList[] = { + { + SPECIES_SEEDOT, + {MOVE_BIDE, MOVE_HARDEN, MOVE_LEECH_SEED}, + 3, 0x11 // Route 102 + }, + { + SPECIES_NUZLEAF, + {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED}, + 15, 0x1D // Route 114 + }, + { + SPECIES_SEEDOT, + {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED}, + 13, 0x20 // Route 117 + }, + { + SPECIES_SEEDOT, + {MOVE_GIGA_DRAIN, MOVE_FRUSTRATION, MOVE_SOLAR_BEAM, MOVE_LEECH_SEED}, + 25, 0x23 // Route 110 + }, + { + SPECIES_SKITTY, + {MOVE_GROWL, MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_ATTRACT}, + 8, 0x1F // Route 116 + } +}; + +// TODO: Figure out what these are, and define constants in include/flags.h +const u16 sGoldSymbolFlags[] = { + SYS_TOWER_GOLD, + SYS_DOME_GOLD, + SYS_PALACE_GOLD, + SYS_ARENA_GOLD, + SYS_FACTORY_GOLD, + SYS_PIKE_GOLD, + SYS_PYRAMID_GOLD +}; + +const u16 sSilverSymbolFlags[] = { + SYS_TOWER_SILVER, + SYS_DOME_SILVER, + SYS_PALACE_SILVER, + SYS_ARENA_SILVER, + SYS_FACTORY_SILVER, + SYS_PIKE_SILVER, + SYS_PYRAMID_SILVER +}; + +// TODO: Figure out what these are, and define constants in include/vars.h +const u16 sNumberOneVarsAndThresholds[][2] = { + {VAR_DAILY_SLOTS, 100}, + {VAR_DAILY_ROULETTE, 50}, + {VAR_DAILY_WILDS, 100}, + {VAR_DAILY_BLENDER, 20}, + {VAR_DAILY_PLANTED_BERRIES, 20}, + {VAR_DAILY_PICKED_BERRIES, 20}, + {VAR_DAILY_BP, 30} +}; + +const u8 *const sPokeNewsTextGroup_Upcoming[] = { + NULL, + gPokeNewsTextSlateport_Upcoming, + gPokeNewsTextGameCorner_Upcoming, + gPokeNewsTextLilycove_Upcoming, + gPokeNewsTextBlendMaster_Upcoming +}; + +const u8 *const sPokeNewsTextGroup_Ongoing[] = { + NULL, + gPokeNewsTextSlateport_Ongoing, + gPokeNewsTextGameCorner_Ongoing, + gPokeNewsTextLilycove_Ongoing, + gPokeNewsTextBlendMaster_Ongoing +}; + +const u8 *const sPokeNewsTextGroup_Ending[] = { + NULL, + gPokeNewsTextSlateport_Ending, + gPokeNewsTextGameCorner_Ending, + gPokeNewsTextLilycove_Ending, + gPokeNewsTextBlendMaster_Ending +}; + +u8 *const gTVStringVarPtrs[] = { + gStringVar1, + gStringVar2, + gStringVar3 +}; + +const u8 *const sTVFanClubTextGroup[] = { + gTVFanClubText00, + gTVFanClubText01, + gTVFanClubText02, + gTVFanClubText03, + gTVFanClubText04, + gTVFanClubText05, + gTVFanClubText06, + gTVFanClubText07 +}; + +const u8 *const sTVRecentHappeninssTextGroup[] = { + gTVRecentHappeningsText00, + gTVRecentHappeningsText01, + gTVRecentHappeningsText02, + gTVRecentHappeningsText03, + gTVRecentHappeningsText04, + gTVRecentHappeningsText05 +}; + +const u8 *const sTVFanClubOpinionsTextGroup[] = { + gTVFanClubOpinionsText00, + gTVFanClubOpinionsText01, + gTVFanClubOpinionsText02, + gTVFanClubOpinionsText03, + gTVFanClubOpinionsText04 +}; + +const u8 *const sTVMassOutbreakTextGroup[] = { + gTVMassOutbreakText00 +}; + +const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = { + gTVPokemonTodaySuccessfulText00, + gTVPokemonTodaySuccessfulText01, + gTVPokemonTodaySuccessfulText02, + gTVPokemonTodaySuccessfulText03, + gTVPokemonTodaySuccessfulText04, + gTVPokemonTodaySuccessfulText05, + gTVPokemonTodaySuccessfulText06, + gTVPokemonTodaySuccessfulText07, + gTVPokemonTodaySuccessfulText08, + gTVPokemonTodaySuccessfulText09, + gTVPokemonTodaySuccessfulText10, + gTVPokemonTodaySuccessfulText11 +}; + +const u8 *const sTVTodaysSmartShopperTextGroup[] = { + gTVTodaysSmartShopperText00, + gTVTodaysSmartShopperText01, + gTVTodaysSmartShopperText02, + gTVTodaysSmartShopperText03, + gTVTodaysSmartShopperText04, + gTVTodaysSmartShopperText05, + gTVTodaysSmartShopperText06, + gTVTodaysSmartShopperText07, + gTVTodaysSmartShopperText08, + gTVTodaysSmartShopperText09, + gTVTodaysSmartShopperText10, + gTVTodaysSmartShopperText11, + gTVTodaysSmartShopperText12 +}; + +const u8 *const sTVBravoTrainerTextGroup[] = { + gTVBravoTrainerText00, + gTVBravoTrainerText01, + gTVBravoTrainerText02, + gTVBravoTrainerText03, + gTVBravoTrainerText04, + gTVBravoTrainerText05, + gTVBravoTrainerText06, + gTVBravoTrainerText07, + gTVBravoTrainerText08 +}; + +const u8 *const sTV3CheersForPokeblocksTextGroup[] = { + gTV3CheersForPokeblocksText00, + gTV3CheersForPokeblocksText01, + gTV3CheersForPokeblocksText02, + gTV3CheersForPokeblocksText03, + gTV3CheersForPokeblocksText04, + gTV3CheersForPokeblocksText05 +}; + +const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = { + gTVBravoTrainerBattleTowerText00, + gTVBravoTrainerBattleTowerText01, + gTVBravoTrainerBattleTowerText02, + gTVBravoTrainerBattleTowerText03, + gTVBravoTrainerBattleTowerText04, + gTVBravoTrainerBattleTowerText05, + gTVBravoTrainerBattleTowerText06, + gTVBravoTrainerBattleTowerText07, + gTVBravoTrainerBattleTowerText08, + gTVBravoTrainerBattleTowerText09, + gTVBravoTrainerBattleTowerText10, + gTVBravoTrainerBattleTowerText11, + gTVBravoTrainerBattleTowerText12, + gTVBravoTrainerBattleTowerText13, + gTVBravoTrainerBattleTowerText14 +}; + +const u8 *const sTVContestLiveUpdatesTextGroup[] = { + gTVContestLiveUpdatesText00, + gTVContestLiveUpdatesText01, + gTVContestLiveUpdatesText02, + gTVContestLiveUpdatesText03, + gTVContestLiveUpdatesText04, + gTVContestLiveUpdatesText05, + gTVContestLiveUpdatesText06, + gTVContestLiveUpdatesText07, + gTVContestLiveUpdatesText08, + gTVContestLiveUpdatesText09, + gTVContestLiveUpdatesText10, + gTVContestLiveUpdatesText11, + gTVContestLiveUpdatesText12, + gTVContestLiveUpdatesText13, + gTVContestLiveUpdatesText14, + gTVContestLiveUpdatesText15, + gTVContestLiveUpdatesText16, + gTVContestLiveUpdatesText17, + gTVContestLiveUpdatesText18, + gTVContestLiveUpdatesText19, + gTVContestLiveUpdatesText20, + gTVContestLiveUpdatesText21, + gTVContestLiveUpdatesText22, + gTVContestLiveUpdatesText23, + gTVContestLiveUpdatesText24, + gTVContestLiveUpdatesText25, + gTVContestLiveUpdatesText26, + gTVContestLiveUpdatesText27, + gTVContestLiveUpdatesText28, + gTVContestLiveUpdatesText29, + gTVContestLiveUpdatesText30, + gTVContestLiveUpdatesText31, + gTVContestLiveUpdatesText32 +}; + +const u8 *const sTVPokemonBattleUpdateTextGroup[] = { + gTVPokemonBattleUpdateText00, + gTVPokemonBattleUpdateText01, + gTVPokemonBattleUpdateText02, + gTVPokemonBattleUpdateText03, + gTVPokemonBattleUpdateText04, + gTVPokemonBattleUpdateText05, + gTVPokemonBattleUpdateText06, + gTVPokemonBattleUpdateText07 +}; + +const u8 *const sTVTrainerFanClubSpecialTextGroup[] = { + gTVTrainerFanClubSpecialText00, + gTVTrainerFanClubSpecialText01, + gTVTrainerFanClubSpecialText02, + gTVTrainerFanClubSpecialText03, + gTVTrainerFanClubSpecialText04, + gTVTrainerFanClubSpecialText05 +}; + +const u8 *const sTVNameRaterTextGroup[] = { + gTVNameRaterText00, + gTVNameRaterText01, + gTVNameRaterText02, + gTVNameRaterText03, + gTVNameRaterText04, + gTVNameRaterText05, + gTVNameRaterText06, + gTVNameRaterText07, + gTVNameRaterText08, + gTVNameRaterText09, + gTVNameRaterText10, + gTVNameRaterText11, + gTVNameRaterText12, + gTVNameRaterText13, + gTVNameRaterText14, + gTVNameRaterText15, + gTVNameRaterText16, + gTVNameRaterText17, + gTVNameRaterText18 +}; + +const u8 *const sTVPokemonContestLiveUpdates2TextGroup[] = { + gTVPokemonContestLiveUpdates2Text00, + gTVPokemonContestLiveUpdates2Text01, + gTVPokemonContestLiveUpdates2Text02, + gTVPokemonContestLiveUpdates2Text03 +}; + +const u8 *const sTVPokemonTodayFailedTextGroup[] = { + gTVPokemonTodayFailedText00, + gTVPokemonTodayFailedText01, + gTVPokemonTodayFailedText02, + gTVPokemonTodayFailedText03, + gTVPokemonTodayFailedText04, + gTVPokemonTodayFailedText05, + gTVPokemonTodayFailedText06 +}; + +const u8 *const sTVPokemonAnslerTextGroup[] = { + gTVPokemonAnglerText00, + gTVPokemonAnglerText01 +}; + +const u8 *const sTVWorldOfMastersTextGroup[] = { + gTVWorldOfMastersText00, + gTVWorldOfMastersText01, + gTVWorldOfMastersText02 +}; + +const u8 *const sTVTodaysRivalTrainerTextGroup[] = { + gTVTodaysRivalTrainerText00, + gTVTodaysRivalTrainerText01, + gTVTodaysRivalTrainerText02, + gTVTodaysRivalTrainerText03, + gTVTodaysRivalTrainerText04, + gTVTodaysRivalTrainerText05, + gTVTodaysRivalTrainerText06, + gTVTodaysRivalTrainerText07, + gTVTodaysRivalTrainerText08, + gTVTodaysRivalTrainerText09, + gTVTodaysRivalTrainerText10 +}; + +const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = { + gTVDewfordTrendWatcherNetworkText00, + gTVDewfordTrendWatcherNetworkText01, + gTVDewfordTrendWatcherNetworkText02, + gTVDewfordTrendWatcherNetworkText03, + gTVDewfordTrendWatcherNetworkText04, + gTVDewfordTrendWatcherNetworkText05, + gTVDewfordTrendWatcherNetworkText06 +}; + +const u8 *const sTVHoennTreasureInvestisatorsTextGroup[] = { + gTVHoennTreasureInvestigatorsText00, + gTVHoennTreasureInvestigatorsText01, + gTVHoennTreasureInvestigatorsText02 +}; + +const u8 *const sTVFindThatGamerTextGroup[] = { + gTVFindThatGamerText00, + gTVFindThatGamerText01, + gTVFindThatGamerText02, + gTVFindThatGamerText03 +}; + +const u8 *const sTVBreakinsNewsTextGroup[] = { + gTVBreakingNewsText00, + gTVBreakingNewsText01, + gTVBreakingNewsText02, + gTVBreakingNewsText03, + gTVBreakingNewsText04, + gTVBreakingNewsText05, + gTVBreakingNewsText06, + gTVBreakingNewsText07, + gTVBreakingNewsText08, + gTVBreakingNewsText09, + gTVBreakingNewsText10, + gTVBreakingNewsText11, + gTVBreakingNewsText12 +}; + +const u8 *const sTVSecretBaseVisitTextGroup[] = { + gTVSecretBaseVisitText00, + gTVSecretBaseVisitText01, + gTVSecretBaseVisitText02, + gTVSecretBaseVisitText03, + gTVSecretBaseVisitText04, + gTVSecretBaseVisitText05, + gTVSecretBaseVisitText06, + gTVSecretBaseVisitText07, + gTVSecretBaseVisitText08, + gTVSecretBaseVisitText09, + gTVSecretBaseVisitText10, + gTVSecretBaseVisitText11, + gTVSecretBaseVisitText12, + gTVSecretBaseVisitText13 +}; + +const u8 *const sTVPokemonLotteryWinnerFlashReportTextGroup[] = { + gTVPokemonLotteryWinnerFlashReportText00 +}; + +const u8 *const sTVThePokemonBattleSeminarTextGroup[] = { + gTVThePokemonBattleSeminarText00, + gTVThePokemonBattleSeminarText01, + gTVThePokemonBattleSeminarText02, + gTVThePokemonBattleSeminarText03, + gTVThePokemonBattleSeminarText04, + gTVThePokemonBattleSeminarText05, + gTVThePokemonBattleSeminarText06 +}; + +const u8 *const sTVTrainerFanClubTextGroup[] = { + gTVTrainerFanClubText00, + gTVTrainerFanClubText01, + gTVTrainerFanClubText02, + gTVTrainerFanClubText03, + gTVTrainerFanClubText04, + gTVTrainerFanClubText05, + gTVTrainerFanClubText06, + gTVTrainerFanClubText07, + gTVTrainerFanClubText08, + gTVTrainerFanClubText09, + gTVTrainerFanClubText10, + gTVTrainerFanClubText11 +}; + +const u8 *const sTVCutiesTextGroup[] = { + gTVCutiesText00, + gTVCutiesText01, + gTVCutiesText02, + gTVCutiesText03, + gTVCutiesText04, + gTVCutiesText05, + gTVCutiesText06, + gTVCutiesText07, + gTVCutiesText08, + gTVCutiesText09, + gTVCutiesText10, + gTVCutiesText11, + gTVCutiesText12, + gTVCutiesText13, + gTVCutiesText14, + gTVCutiesText15 +}; + +const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = { + gTVPokemonNewsBattleFrontierText00, + gTVPokemonNewsBattleFrontierText01, + gTVPokemonNewsBattleFrontierText02, + gTVPokemonNewsBattleFrontierText03, + gTVPokemonNewsBattleFrontierText04, + gTVPokemonNewsBattleFrontierText05, + gTVPokemonNewsBattleFrontierText06, + gTVPokemonNewsBattleFrontierText07, + gTVPokemonNewsBattleFrontierText08, + gTVPokemonNewsBattleFrontierText09, + gTVPokemonNewsBattleFrontierText10, + gTVPokemonNewsBattleFrontierText11, + gTVPokemonNewsBattleFrontierText12, + gTVPokemonNewsBattleFrontierText13, + gTVPokemonNewsBattleFrontierText14, + gTVPokemonNewsBattleFrontierText15, + gTVPokemonNewsBattleFrontierText16, + gTVPokemonNewsBattleFrontierText17, + gTVPokemonNewsBattleFrontierText18 +}; + +const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = { + gTVWhatsNo1InHoennTodayText00, + gTVWhatsNo1InHoennTodayText01, + gTVWhatsNo1InHoennTodayText02, + gTVWhatsNo1InHoennTodayText03, + gTVWhatsNo1InHoennTodayText04, + gTVWhatsNo1InHoennTodayText05, + gTVWhatsNo1InHoennTodayText06, + gTVWhatsNo1InHoennTodayText07, + gTVWhatsNo1InHoennTodayText08 +}; + +const u8 *const sTVSecretBaseSecretsTextGroup[] = { + gTVSecretBaseSecretsText00, + gTVSecretBaseSecretsText01, + gTVSecretBaseSecretsText02, + gTVSecretBaseSecretsText03, + gTVSecretBaseSecretsText04, + gTVSecretBaseSecretsText05, + gTVSecretBaseSecretsText06, + gTVSecretBaseSecretsText07, + gTVSecretBaseSecretsText08, + gTVSecretBaseSecretsText09, + gTVSecretBaseSecretsText10, + gTVSecretBaseSecretsText11, + gTVSecretBaseSecretsText12, + gTVSecretBaseSecretsText13, + gTVSecretBaseSecretsText14, + gTVSecretBaseSecretsText15, + gTVSecretBaseSecretsText16, + gTVSecretBaseSecretsText17, + gTVSecretBaseSecretsText18, + gTVSecretBaseSecretsText19, + gTVSecretBaseSecretsText20, + gTVSecretBaseSecretsText21, + gTVSecretBaseSecretsText22, + gTVSecretBaseSecretsText23, + gTVSecretBaseSecretsText24, + gTVSecretBaseSecretsText25, + gTVSecretBaseSecretsText26, + gTVSecretBaseSecretsText27, + gTVSecretBaseSecretsText28, + gTVSecretBaseSecretsText29, + gTVSecretBaseSecretsText30, + gTVSecretBaseSecretsText31, + gTVSecretBaseSecretsText32, + gTVSecretBaseSecretsText33, + gTVSecretBaseSecretsText34, + gTVSecretBaseSecretsText35, + gTVSecretBaseSecretsText36, + gTVSecretBaseSecretsText37, + gTVSecretBaseSecretsText38, + gTVSecretBaseSecretsText39, + gTVSecretBaseSecretsText40, + gTVSecretBaseSecretsText41, + gTVSecretBaseSecretsText42 +}; + +const u8 *const sTVSafariFanClubTextGroup[] = { + gTVSafariFanClubText00, + gTVSafariFanClubText01, + gTVSafariFanClubText02, + gTVSafariFanClubText03, + gTVSafariFanClubText04, + gTVSafariFanClubText05, + gTVSafariFanClubText06, + gTVSafariFanClubText07, + gTVSafariFanClubText08, + gTVSafariFanClubText09, + gTVSafariFanClubText10 +}; + +const u8 *const sTVInSearchOfTrainersTextGroup[] = { + gTVInSearchOfTrainersText00, + gTVInSearchOfTrainersText01, + gTVInSearchOfTrainersText02, + gTVInSearchOfTrainersText03, + gTVInSearchOfTrainersText04, + gTVInSearchOfTrainersText05, + gTVInSearchOfTrainersText06, + gTVInSearchOfTrainersText07, + gTVInSearchOfTrainersText08 +}; + +const u8 sTVSecretBaseSecretsStateLookup[] = { + 0x0a, + 0x0b, + 0x0c, + 0x0d, + 0x0e, + 0x0f, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x17, + 0x18, + 0x19, + 0x1a, + 0x1b, + 0x1c, + 0x1d, + 0x1e, + 0x1f, + 0x20, + 0x21, + 0x22, + 0x23, + 0x24, + 0x25, + 0x26, + 0x27, + 0x28, + 0x29, + 0x2a, + 0x2b +}; + +// .text + +void ClearTVShowData(void) +{ + u8 i; + u8 j; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows); i ++) + { + gSaveBlock1Ptr->tvShows[i].common.kind = 0; + gSaveBlock1Ptr->tvShows[i].common.active = 0; + for (j = 0; j < sizeof(TVShow) - 2; j ++) + { + gSaveBlock1Ptr->tvShows[i].common.pad02[j] = 0; + } + } + ClearPokemonNews(); +} + +u8 special_0x44(void) +{ + u8 i; + u8 j; + u8 selIdx; + TVShow *show; + + for (i = 5; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind == 0) + { + break; + } + } + j = Random() % i; + selIdx = j; + do + { + if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[j].common.kind) != 4) + { + if (gSaveBlock1Ptr->tvShows[j].common.active == TRUE) + { + return j; + } + } + else + { + show = &gSaveBlock1Ptr->tvShows[j]; + if (show->massOutbreak.daysLeft == 0 && show->massOutbreak.active == TRUE) + { + return j; + } + } + if (j == 0) + { + j = ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 2; + } + else + { + j --; + } + } while (j != selIdx); + return 0xFF; +} + +u8 FindAnyTVShowOnTheAir(void) +{ + u8 response; + + response = special_0x44(); + if (response == 0xFF) + { + return 0xFF; + } + if (gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE && gSaveBlock1Ptr->tvShows[response].common.kind == TVSHOW_MASS_OUTBREAK) + { + return FindFirstActiveTVShowThatIsNotAMassOutbreak(); + } + return response; +} + +void UpdateTVScreensOnMap(int width, int height) +{ + FlagSet(SYS_TV_WATCH); + switch (CheckForBigMovieOrEmergencyNewsOnTV()) + { + case 1: + SetTVMetatilesOnMap(width, height, 0x3); + break; + case 2: + break; + default: + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + { + SetTVMetatilesOnMap(width, height, 0x3); + } + else if (FlagGet(SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring())) + { + FlagReset(SYS_TV_WATCH); + SetTVMetatilesOnMap(width, height, 0x3); + } + break; + } +} + +void SetTVMetatilesOnMap(int width, int height, u16 tileId) +{ + int x; + int y; + + for (y = 0; y < height; y ++) + { + for (x = 0; x < width; x ++) + { + if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) // is this tile a TV? + { + MapGridSetMetatileIdAt(x, y, tileId | 0xc00); + } + } + } +} + +void TurnOffTVScreen(void) +{ + SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0002); + DrawWholeMapView(); +} + +void TurnOnTVScreen(void) +{ + SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0003); + DrawWholeMapView(); +} + +u8 special_0x45(void) +{ + return gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind; +} + +u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void) +{ + u8 i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind != 0 && gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].common.active == TRUE) + { + return i; + } + } + return 0xFF; +} + +u8 special_0x4a(void) +{ + TVShow *tvShow; + + tvShow = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + if (tvShow->common.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE) + { + return FindFirstActiveTVShowThatIsNotAMassOutbreak(); + } + return gSpecialVar_0x8004; +} + +// IN SEARCH OF TRAINERS + +void ResetGabbyAndTy(void) +{ + gSaveBlock1Ptr->gabbyAndTyData.mon1 = SPECIES_NONE; + gSaveBlock1Ptr->gabbyAndTyData.mon2 = SPECIES_NONE; + gSaveBlock1Ptr->gabbyAndTyData.lastMove = MOVE_NONE; + gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1; + gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.valA_5 = 0; + gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = FALSE; + gSaveBlock1Ptr->gabbyAndTyData.valB_4 = 0; + gSaveBlock1Ptr->gabbyAndTyData.mapnum = 0; + gSaveBlock1Ptr->gabbyAndTyData.battleNum = 0; +} + +void GabbyAndTyBeforeInterview(void) +{ + u8 i; + + gSaveBlock1Ptr->gabbyAndTyData.mon1 = gBattleResults.playerMon1Species; + gSaveBlock1Ptr->gabbyAndTyData.mon2 = gBattleResults.playerMon2Species; + gSaveBlock1Ptr->gabbyAndTyData.lastMove = gBattleResults.lastUsedMovePlayer; + if (gSaveBlock1Ptr->gabbyAndTyData.battleNum != 0xFF) + { + gSaveBlock1Ptr->gabbyAndTyData.battleNum ++; + } + gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = gBattleResults.unk5_0; + if (gBattleResults.playerFaintCounter != 0) + { + gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = TRUE; + } + else + { + gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE; + } + if (gBattleResults.unk3 != 0) + { + gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = TRUE; + } + else + { + gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE; + } + if (!gBattleResults.usedMasterBall) + { + for (i = 0; i < 11; i ++) + { + if (gBattleResults.catchAttempts[i]) + { + gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE; + break; + } + } + } + else + { + gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE; + } + TakeTVShowInSearchOfTrainersOffTheAir(); + if (gSaveBlock1Ptr->gabbyAndTyData.lastMove == MOVE_NONE) + { + FlagSet(0x0001); + } +} + +void GabbyAndTyAfterInterview(void) +{ + gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn; + gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon; + gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem; + gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall; + gSaveBlock1Ptr->gabbyAndTyData.onAir = TRUE; + gSaveBlock1Ptr->gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId; + IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void) +{ + gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE; +} + +u8 GabbyAndTyGetBattleNum(void) +{ + if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 5) + { + return (gSaveBlock1Ptr->gabbyAndTyData.battleNum % 3) + 6; + } + return gSaveBlock1Ptr->gabbyAndTyData.battleNum; +} + +bool8 IsTVShowInSearchOfTrainersAiring(void) +{ + return gSaveBlock1Ptr->gabbyAndTyData.onAir; +} + +bool8 GabbyAndTyGetLastQuote(void) +{ + if (gSaveBlock1Ptr->gabbyAndTyData.quote[0] == 0xFFFF) + { + return FALSE; + } + CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]); + gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1; + return TRUE; +} + +u8 GabbyAndTyGetLastBattleTrivia(void) +{ + if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2) + { + return 1; + } + if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2) + { + return 2; + } + if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2) + { + return 3; + } + if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2) + { + return 4; + } + return 0; +} + +void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) +{ + switch (GabbyAndTyGetBattleNum()) + { + case 1: + gSpecialVar_0x8004 = 14; + gSpecialVar_0x8005 = 13; + break; + case 2: + gSpecialVar_0x8004 = 5; + gSpecialVar_0x8005 = 6; + break; + case 3: + gSpecialVar_0x8004 = 18; + gSpecialVar_0x8005 = 17; + break; + case 4: + gSpecialVar_0x8004 = 21; + gSpecialVar_0x8005 = 22; + break; + case 5: + gSpecialVar_0x8004 = 8; + gSpecialVar_0x8005 = 9; + break; + case 6: + gSpecialVar_0x8004 = 19; + gSpecialVar_0x8005 = 20; + break; + case 7: + gSpecialVar_0x8004 = 23; + gSpecialVar_0x8005 = 24; + break; + case 8: + gSpecialVar_0x8004 = 10; + gSpecialVar_0x8005 = 11; + break; + } +} + +void InterviewAfter(void) +{ + switch (gSpecialVar_0x8005) + { + case TVSHOW_FAN_CLUB_LETTER: + InterviewAfter_FanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + InterviewAfter_RecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + InterviewAfter_PkmnFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + InterviewAfter_DummyShow4(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + InterviewAfter_BravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + InterviewAfter_BravoTrainerBattleTowerProfile(); + break; + case TVSHOW_CONTEST_LIVE_UPDATES: + InterviewAfter_ContestLiveUpdates(); + break; + } +} + +void PutPokemonTodayCaughtOnAir(void) +{ + u8 i; + u16 ct; + TVShow *show; + u32 language2; + u16 itemLastUsed; + + ct = 0; + sub_80EED88(); + sub_80ED718(); + if (gBattleResults.caughtMonSpecies == SPECIES_NONE) + { + PutPokemonTodayFailedOnTheAir(); + } + else + { + UpdateWorldOfMastersAndPutItOnTheAir(); + if (!rbernoulli(1, 1) && StringCompare(gSpeciesNames[gBattleResults.caughtMonSpecies], gBattleResults.caughtMonNick)) + { + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_CAUGHT, FALSE) != TRUE) + { + for (i = 0; i < 11; i ++) + { + ct += gBattleResults.catchAttempts[i]; + } + if (ct != 0 || gBattleResults.usedMasterBall) + { + ct = 0; + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->pokemonToday.kind = TVSHOW_POKEMON_TODAY_CAUGHT; + show->pokemonToday.active = FALSE; + if (gBattleResults.usedMasterBall) + { + ct = 1; + itemLastUsed = ITEM_MASTER_BALL; + } + else + { + for (i = 0; i < 11; i ++) + { + ct += gBattleResults.catchAttempts[i]; + } + if (ct > 0xFF) + { + ct = 0xFF; + } + itemLastUsed = gLastUsedItem; + } + show->pokemonToday.nBallsUsed = ct; + show->pokemonToday.ball = itemLastUsed; + StringCopy(show->pokemonToday.playerName, gSaveBlock2Ptr->playerName); + StringCopy(show->pokemonToday.nickname, gBattleResults.caughtMonNick); + language2 = sub_81DB604(show->pokemonToday.nickname); + StripExtCtrlCodes(show->pokemonToday.nickname); + show->pokemonToday.species = gBattleResults.caughtMonSpecies; + tv_store_id_3x(show); + show->pokemonToday.language = gGameLanguage; + show->pokemonToday.language2 = language2; + } + } + } + } +} + +void UpdateWorldOfMastersAndPutItOnTheAir(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + if (show->worldOfMasters.kind != TVSHOW_WORLD_OF_MASTERS) + { + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + show->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS); + show->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS; + } + show->worldOfMasters.numPokeCaught ++; + show->worldOfMasters.caughtPoke = gBattleResults.caughtMonSpecies; + show->worldOfMasters.species = gBattleResults.playerMon1Species; + show->worldOfMasters.location = gMapHeader.regionMapSectionId; +} + +void PutPokemonTodayFailedOnTheAir(void) +{ + u16 ct; + u8 i; + TVShow *show; + + if (!rbernoulli(1, 1)) + { + for (i = 0, ct = 0; i < 11; i ++) + { + ct += gBattleResults.catchAttempts[i]; + } + if (ct > 0xFF) + { + ct = 0xFF; + } + if (ct > 2 && (gBattleOutcome == BATTLE_POKE_FLED || gBattleOutcome == BATTLE_WON)) + { + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->pokemonTodayFailed.kind = TVSHOW_POKEMON_TODAY_FAILED; + show->pokemonTodayFailed.active = FALSE; + show->pokemonTodayFailed.species = gBattleResults.playerMon1Species; + show->pokemonTodayFailed.species2 = gBattleResults.lastOpponentSpecies; + show->pokemonTodayFailed.nBallsUsed = ct; + show->pokemonTodayFailed.outcome = gBattleOutcome; + show->pokemonTodayFailed.location = gMapHeader.regionMapSectionId; + StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->pokemonTodayFailed.language = gGameLanguage; + } + } + } +} + +void tv_store_id_3x(TVShow *show) +{ + u32 id; + + id = GetPlayerIDAsU32(); + show->common.srcTrainerId2Lo = id; + show->common.srcTrainerId2Hi = id >> 8; + show->common.srcTrainerIdLo = id; + show->common.srcTrainerIdHi = id >> 8; + show->common.trainerIdLo = id; + show->common.trainerIdHi = id >> 8; +} + +void tv_store_id_2x(TVShow *show) +{ + u32 id; + + id = GetPlayerIDAsU32(); + show->common.srcTrainerIdLo = id; + show->common.srcTrainerIdHi = id >> 8; + show->common.trainerIdLo = id; + show->common.trainerIdHi = id >> 8; +} + +void InterviewAfter_ContestLiveUpdates(void) +{ + TVShow *show; + TVShow *show2; + + show = &gSaveBlock1Ptr->tvShows[24]; + if (show->contestLiveUpdates.kind == TVSHOW_CONTEST_LIVE_UPDATES) + { + show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show2->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES; + show2->contestLiveUpdates.active = TRUE; + StringCopy(show2->contestLiveUpdates.playerName, gSaveBlock2Ptr->playerName); + show2->contestLiveUpdates.category = gUnknown_02039F2C; + show2->contestLiveUpdates.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL); + show2->contestLiveUpdates.winningSpecies = show->contestLiveUpdates.winningSpecies; + show2->contestLiveUpdates.appealFlags2 = show->contestLiveUpdates.appealFlags2; + show2->contestLiveUpdates.round1Rank = show->contestLiveUpdates.round1Rank; + show2->contestLiveUpdates.round2Rank = show->contestLiveUpdates.round2Rank; + show2->contestLiveUpdates.move = show->contestLiveUpdates.move; + show2->contestLiveUpdates.appealFlags1 = show->contestLiveUpdates.appealFlags1; + StringCopy(show2->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerName); + tv_store_id_2x(show2); + show2->contestLiveUpdates.language = gGameLanguage; + show2->contestLiveUpdates.winningTrainerLanguage = show->contestLiveUpdates.winningTrainerLanguage; + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + } +} + +void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3) +{ + TVShow *show; + u8 name[32]; + + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BATTLE_UPDATE); + if (gScriptResult != 1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->battleUpdate.kind = TVSHOW_BATTLE_UPDATE; + show->battleUpdate.active = TRUE; + StringCopy(show->battleUpdate.playerName, gSaveBlock2Ptr->playerName); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + show->battleUpdate.battleType = 2; + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + show->battleUpdate.battleType = 1; + } + else + { + show->battleUpdate.battleType = 0; + } + show->battleUpdate.move = a1; + show->battleUpdate.species2 = a2; + show->battleUpdate.species = a3; + StringCopy(name, gLinkPlayers[a0].name); + StripExtCtrlCodes(name); + StringCopy(show->battleUpdate.linkOpponentName, name); + tv_store_id_2x(show); + show->battleUpdate.language = gGameLanguage; + if (show->battleUpdate.language == LANGUAGE_JAPANESE || gLinkPlayers[a0].language == LANGUAGE_JAPANESE) + { + show->battleUpdate.linkOpponentLanguage = LANGUAGE_JAPANESE; + } + else + { + show->battleUpdate.linkOpponentLanguage = gLinkPlayers[a0].language; + } + } + } +} + +bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language) +{ + TVShow *show; + u8 name[32]; + + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot == -1) + { + return FALSE; + } + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS); + if (gScriptResult == 1) + { + return FALSE; + } + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->threeCheers.kind = TVSHOW_3_CHEERS_FOR_POKEBLOCKS; + show->threeCheers.active = TRUE; + StringCopy(show->threeCheers.playerName, gSaveBlock2Ptr->playerName); + StringCopy(name, partnersName); + StripExtCtrlCodes(name); + StringCopy(show->threeCheers.worstBlenderName, name); + show->threeCheers.flavor = flavor; + show->threeCheers.unk_03_3 = unused; + show->threeCheers.sheen = sheen; + tv_store_id_2x(show); + show->threeCheers.language = gGameLanguage; + if (show->threeCheers.language == LANGUAGE_JAPANESE || language == LANGUAGE_JAPANESE) + { + show->threeCheers.worstBlenderLanguage = LANGUAGE_JAPANESE; + } + else + { + show->threeCheers.worstBlenderLanguage = language; + } + return TRUE; +} + +void PutFanClubSpecialOnTheAir(void) +{ + TVShow *show; + u8 name[32]; + u32 id; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8006]; + show->fanClubSpecial.score = gSpecialVar_0x8005 * 10; + StringCopy(show->fanClubSpecial.playerName, gSaveBlock2Ptr->playerName); + show->fanClubSpecial.kind = TVSHOW_FAN_CLUB_SPECIAL; + show->fanClubSpecial.active = TRUE; + id = GetPlayerIDAsU32(); + show->fanClubSpecial.idLo = id; + show->fanClubSpecial.idHi = id >> 8; + StringCopy(name, gStringVar1); + StripExtCtrlCodes(name); + StringCopy(show->fanClubSpecial.idolName, name); + tv_store_id_2x(show); + show->fanClubSpecial.language = gGameLanguage; + if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->unk_31A0 == LANGUAGE_JAPANESE) + { + show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE; + } + else + { + show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->unk_31A0; + } +} + +void ContestLiveUpdates_BeforeInterview_1(u8 a0) +{ + TVShow *show; + + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show = &gSaveBlock1Ptr->tvShows[24]; + show->contestLiveUpdates.round1Rank = a0; + show->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES; + } +} + +void ContestLiveUpdates_BeforeInterview_2(u8 a0) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show->contestLiveUpdates.round2Rank = a0; + } +} + +void ContestLiveUpdates_BeforeInterview_3(u8 a0) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show->contestLiveUpdates.appealFlags1 = a0; + } +} + +void ContestLiveUpdates_BeforeInterview_4(u16 a0) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show->contestLiveUpdates.move = a0; + } +} + +void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show->contestLiveUpdates.winningSpecies = gUnknown_02039E00[a1].unk_00; + StringCopy(show->contestLiveUpdates.winningTrainerName, gUnknown_02039E00[a1].unk_0d); + StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName); + show->contestLiveUpdates.appealFlags2 = a0; + if (a1 + 1 > gUnknown_02039F30) + { + show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[0].language; + } + else if (gGameLanguage == LANGUAGE_JAPANESE || gLinkPlayers[a1].language == LANGUAGE_JAPANESE) + { + show->contestLiveUpdates.winningTrainerLanguage = LANGUAGE_JAPANESE; + } + else + { + show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[a1].language; + } + } +} + +void InterviewAfter_BravoTrainerPokemonProfile(void) +{ + TVShow *show; + TVShow *show2; + + show = &gSaveBlock1Ptr->tvShows[24]; + if (show->bravoTrainer.kind == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) + { + show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show2->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + show2->bravoTrainer.active = TRUE; + show2->bravoTrainer.species = show->bravoTrainer.species; + StringCopy(show2->bravoTrainer.playerName, gSaveBlock2Ptr->playerName); + StringCopy(show2->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNickname); + show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory; + show2->bravoTrainer.contestRank = show->bravoTrainer.contestRank; + show2->bravoTrainer.move = show->bravoTrainer.move; + show2->bravoTrainer.contestResult = show->bravoTrainer.contestResult; + show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory; + tv_store_id_2x(show2); + show2->bravoTrainer.language = gGameLanguage; + if (show2->bravoTrainer.language == LANGUAGE_JAPANESE || show->bravoTrainer.pokemonNameLanguage == LANGUAGE_JAPANESE) + { + show2->bravoTrainer.pokemonNameLanguage = LANGUAGE_JAPANESE; + } + else + { + show2->bravoTrainer.pokemonNameLanguage = show->bravoTrainer.pokemonNameLanguage; + } + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + } +} + +void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + InterviewBefore_BravoTrainerPkmnProfile(); + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + show->bravoTrainer.move = a0; + show->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + } +} + +void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show->bravoTrainer.contestResult = a0; + show->bravoTrainer.contestCategory = gUnknown_02039F2C; + show->bravoTrainer.contestRank = gUnknown_02039F2E; + show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); + StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); + show->bravoTrainer.pokemonNameLanguage = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_LANGUAGE); + } +} + +void InterviewAfter_BravoTrainerBattleTowerProfile(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->bravoTrainerTower.kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; + show->bravoTrainerTower.active = TRUE; + StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2Ptr->playerName); + StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2Ptr->field_BD8); + show->bravoTrainerTower.species = gSaveBlock2Ptr->field_BD4; + show->bravoTrainerTower.defeatedSpecies = gSaveBlock2Ptr->field_BD6; + show->bravoTrainerTower.numFights = sub_8164FCC(gSaveBlock2Ptr->field_D07, 0); + show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->field_D06; + if (gSaveBlock2Ptr->field_D07 == 0) + { + show->bravoTrainerTower.btLevel = 50; + } + else + { + show->bravoTrainerTower.btLevel = 100; + } + show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004; + tv_store_id_2x(show); + show->bravoTrainerTower.language = gGameLanguage; + if (show->bravoTrainerTower.language == LANGUAGE_JAPANESE || gSaveBlock2Ptr->field_BEB == LANGUAGE_JAPANESE) + { + show->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE; + } + else + { + show->bravoTrainerTower.pokemonNameLanguage = gSaveBlock2Ptr->field_BEB; + } +} + +void SaveRecordedItemPurchasesForTVShow(void) +{ + TVShow *show; + u8 i; + + if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_TRAINER_HILL_LOBBY && gSaveBlock1Ptr->location.mapNum == MAP_ID_TRAINER_HILL_LOBBY) && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_BATTLE_FRONTIER_MART && gSaveBlock1Ptr->location.mapNum == MAP_ID_BATTLE_FRONTIER_MART) && !rbernoulli(1, 3)) + { + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SMART_SHOPPER, FALSE) != TRUE) + { + TV_SortPurchasesByQuantity(); + if (gUnknown_02039F80[0].quantity >= 20) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->smartshopperShow.kind = TVSHOW_SMART_SHOPPER; + show->smartshopperShow.active = FALSE; + show->smartshopperShow.shopLocation = gMapHeader.regionMapSectionId; + for (i = 0; i < 3; i ++) + { + show->smartshopperShow.itemIds[i] = gUnknown_02039F80[i].itemId; + show->smartshopperShow.itemAmounts[i] = gUnknown_02039F80[i].quantity; + } + show->smartshopperShow.priceReduced = GetPriceReduction(1); + StringCopy(show->smartshopperShow.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->smartshopperShow.language = gGameLanguage; + } + } + } +} + +void PutNameRaterShowOnTheAir(void) +{ + TVShow *show; + + InterviewBefore_NameRater(); + if (gScriptResult != 1) + { + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); + if (StringLength(gSaveBlock2Ptr->playerName) > 1 && StringLength(gStringVar1) > 1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->nameRaterShow.kind = TVSHOW_NAME_RATER_SHOW; + show->nameRaterShow.active = TRUE; + show->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); + show->nameRaterShow.random = Random() % 3; + show->nameRaterShow.random2 = Random() % 2; + show->nameRaterShow.randomSpecies = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(show->nameRaterShow.species); + StringCopy(show->nameRaterShow.trainerName, gSaveBlock2Ptr->playerName); + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, show->nameRaterShow.pokemonName); + StripExtCtrlCodes(show->nameRaterShow.pokemonName); + tv_store_id_2x(show); + show->nameRaterShow.language = gGameLanguage; + show->nameRaterShow.pokemonNameLanguage = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_LANGUAGE); + } + } +} + +void StartMassOutbreak(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gSaveBlock1Ptr->outbreakPokemonSpecies = show->massOutbreak.species; + gSaveBlock1Ptr->outbreakLocationMapNum = show->massOutbreak.locationMapNum; + gSaveBlock1Ptr->outbreakLocationMapGroup = show->massOutbreak.locationMapGroup; + gSaveBlock1Ptr->outbreakPokemonLevel = show->massOutbreak.level; + gSaveBlock1Ptr->outbreakUnk1 = show->massOutbreak.var02; + gSaveBlock1Ptr->outbreakUnk2 = show->massOutbreak.var0E; + gSaveBlock1Ptr->outbreakPokemonMoves[0] = show->massOutbreak.moves[0]; + gSaveBlock1Ptr->outbreakPokemonMoves[1] = show->massOutbreak.moves[1]; + gSaveBlock1Ptr->outbreakPokemonMoves[2] = show->massOutbreak.moves[2]; + gSaveBlock1Ptr->outbreakPokemonMoves[3] = show->massOutbreak.moves[3]; + gSaveBlock1Ptr->outbreakUnk4 = show->massOutbreak.var03; + gSaveBlock1Ptr->outbreakPokemonProbability = show->massOutbreak.probability; + gSaveBlock1Ptr->outbreakDaysLeft = 2; +} + +void PutLilycoveContestLadyShowOnTheAir(void) +{ + TVShow *show; + + sub_80EFA88(); + if (gScriptResult != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + sub_818E848(&show->contestLiveUpdates2.language); + show->contestLiveUpdates2.pokemonNameLanguage = LANGUAGE_ENGLISH; + show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2; + show->contestLiveUpdates2.active = TRUE; + sub_818E81C(show->contestLiveUpdates2.playerName); + sub_818E7E0(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname); + show->contestLiveUpdates2.pokeblockState = sub_818E880(); + tv_store_id_2x(show); + } +} + +void InterviewAfter_FanClubLetter(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->fanclubLetter.kind = TVSHOW_FAN_CLUB_LETTER; + show->fanclubLetter.active = TRUE; + StringCopy(show->fanclubLetter.playerName, gSaveBlock2Ptr->playerName); + show->fanclubLetter.species = GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_SPECIES, NULL); + tv_store_id_2x(show); + show->fanclubLetter.language = gGameLanguage; +} + +void InterviewAfter_RecentHappenings(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->recentHappenings.kind = TVSHOW_RECENT_HAPPENINGS; + show->recentHappenings.active = TRUE; + StringCopy(show->recentHappenings.playerName, gSaveBlock2Ptr->playerName); + show->recentHappenings.var02 = 0; + tv_store_id_2x(show); + show->recentHappenings.language = gGameLanguage; +} + +void InterviewAfter_PkmnFanClubOpinions(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->fanclubOpinions.kind = TVSHOW_PKMN_FAN_CLUB_OPINIONS; + show->fanclubOpinions.active = TRUE; + show->fanclubOpinions.friendshipHighNybble = GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_FRIENDSHIP, NULL) >> 4; + show->fanclubOpinions.questionAsked = gSpecialVar_0x8007; + StringCopy(show->fanclubOpinions.playerName, gSaveBlock2Ptr->playerName); + GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_NICKNAME, show->fanclubOpinions.nickname); + StripExtCtrlCodes(show->fanclubOpinions.nickname); + show->fanclubOpinions.species = GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_SPECIES, NULL); + tv_store_id_2x(show); + show->fanclubOpinions.language = gGameLanguage; + if (gGameLanguage == LANGUAGE_JAPANESE || GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) + { + show->fanclubOpinions.pokemonNameLanguage = LANGUAGE_JAPANESE; + } + else + { + show->fanclubOpinions.pokemonNameLanguage = GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_LANGUAGE); + } +} + +void InterviewAfter_DummyShow4() +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; +} + +void sub_80ED718(void) +{ + u8 i; + u16 outbreakIdx; + TVShow *show; + + if (FlagGet(SYS_GAME_CLEAR)) + { + for (i = 0; i < 24; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK) + { + return; + } + } + if (!rbernoulli(1, 200)) + { + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + outbreakIdx = Random() % ARRAY_COUNT(sPokeOutbreakSpeciesList); + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->massOutbreak.kind = TVSHOW_MASS_OUTBREAK; + show->massOutbreak.active = TRUE; + show->massOutbreak.level = sPokeOutbreakSpeciesList[outbreakIdx].level; + show->massOutbreak.var02 = 0; + show->massOutbreak.var03 = 0; + show->massOutbreak.species = sPokeOutbreakSpeciesList[outbreakIdx].species; + show->massOutbreak.var0E = 0; + show->massOutbreak.moves[0] = sPokeOutbreakSpeciesList[outbreakIdx].moves[0]; + show->massOutbreak.moves[1] = sPokeOutbreakSpeciesList[outbreakIdx].moves[1]; + show->massOutbreak.moves[2] = sPokeOutbreakSpeciesList[outbreakIdx].moves[2]; + show->massOutbreak.moves[3] = sPokeOutbreakSpeciesList[outbreakIdx].moves[3]; + show->massOutbreak.locationMapNum = sPokeOutbreakSpeciesList[outbreakIdx].location; + show->massOutbreak.locationMapGroup = 0; + show->massOutbreak.var12 = 0; + show->massOutbreak.probability = 50; + show->massOutbreak.var15 = 0; + show->massOutbreak.daysLeft = 1; + tv_store_id_2x(show); + show->massOutbreak.language = gGameLanguage; + } + } + } +} + +void EndMassOutbreak(void) +{ + gSaveBlock1Ptr->outbreakPokemonSpecies = SPECIES_NONE; + gSaveBlock1Ptr->outbreakLocationMapNum = 0; + gSaveBlock1Ptr->outbreakLocationMapGroup = 0; + gSaveBlock1Ptr->outbreakPokemonLevel = 0; + gSaveBlock1Ptr->outbreakUnk1 = 0; + gSaveBlock1Ptr->outbreakUnk2 = 0; + gSaveBlock1Ptr->outbreakPokemonMoves[0] = MOVE_NONE; + gSaveBlock1Ptr->outbreakPokemonMoves[1] = MOVE_NONE; + gSaveBlock1Ptr->outbreakPokemonMoves[2] = MOVE_NONE; + gSaveBlock1Ptr->outbreakPokemonMoves[3] = MOVE_NONE; + gSaveBlock1Ptr->outbreakUnk4 = 0; + gSaveBlock1Ptr->outbreakPokemonProbability = 0; + gSaveBlock1Ptr->outbreakDaysLeft = 0; +} + +void sub_80ED888(u16 days) +{ + + sub_80ED8B4(days); + UpdateMassOutbreakTimeLeft(days); + sub_80EF120(days); + sub_80EDA48(days); + sub_80EEB98(days); +} + +void sub_80ED8B4(u16 days) +{ + u8 i; + TVShow *show; + + if (gSaveBlock1Ptr->outbreakPokemonSpecies == SPECIES_NONE) + { + for (i = 0; i < 24; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].massOutbreak.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].massOutbreak.active == TRUE) + { + show = &gSaveBlock1Ptr->tvShows[i]; + if (show->massOutbreak.daysLeft < days) + { + show->massOutbreak.daysLeft = 0; + } + else + { + show->massOutbreak.daysLeft -= days; + } + break; + } + } + } +} + +void UpdateMassOutbreakTimeLeft(u16 days) +{ + if (gSaveBlock1Ptr->outbreakDaysLeft <= days) + { + EndMassOutbreak(); + } + else + { + gSaveBlock1Ptr->outbreakDaysLeft -= days; + } +} + +void sub_80ED950(bool8 flag) +{ + if (flag) + { + if (sPokemonAnglerAttemptCounters >> 8 > 4) + { + PutFishingAdviceShowOnTheAir(); + } + sPokemonAnglerAttemptCounters &= 0xFF; + if (sPokemonAnglerAttemptCounters != 0xFF) + { + sPokemonAnglerAttemptCounters += 0x01; + } + } + else + { + if ((u8)sPokemonAnglerAttemptCounters > 4) + { + PutFishingAdviceShowOnTheAir(); + } + sPokemonAnglerAttemptCounters &= 0xFF00; + if (sPokemonAnglerAttemptCounters >> 8 != 0xFF) + { + sPokemonAnglerAttemptCounters += 0x0100; + } + } +} + +void PutFishingAdviceShowOnTheAir(void) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FISHING_ADVICE, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->pokemonAngler.kind = TVSHOW_FISHING_ADVICE; + show->pokemonAngler.active = FALSE; + show->pokemonAngler.nBites = sPokemonAnglerAttemptCounters; + show->pokemonAngler.nFails = sPokemonAnglerAttemptCounters >> 8; + show->pokemonAngler.species = sPokemonAnglerSpecies; + StringCopy(show->pokemonAngler.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->pokemonAngler.language = gGameLanguage; + } +} + +void sub_80EDA3C(u16 species) +{ + sPokemonAnglerSpecies = species; +} + +void sub_80EDA48(u16 days) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[24]; + if (show->worldOfMasters.kind == TVSHOW_WORLD_OF_MASTERS) + { + if (show->worldOfMasters.numPokeCaught >= 20) + { + sub_80EDA80(); + } + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + } +} + +void sub_80EDA80(void) +{ + TVShow *show; + TVShow *show2; + + show = &gSaveBlock1Ptr->tvShows[24]; + if (!rbernoulli(1, 1)) + { + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_WORLD_OF_MASTERS, FALSE) != TRUE) + { + show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show2->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS; + show2->worldOfMasters.active = FALSE; + show2->worldOfMasters.numPokeCaught = show->worldOfMasters.numPokeCaught; + show2->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS) - show->worldOfMasters.steps; + show2->worldOfMasters.caughtPoke = show->worldOfMasters.caughtPoke; + show2->worldOfMasters.species = show->worldOfMasters.species; + show2->worldOfMasters.location = show->worldOfMasters.location; + StringCopy(show2->worldOfMasters.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show2); + show2->worldOfMasters.language = gGameLanguage; + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24); + } + } +} + +void sub_80EDB44(void) +{ + TVShow *show; + u32 i; + u8 nBadges; + + HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TODAYS_RIVAL_TRAINER, TRUE); + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->rivalTrainer.kind = TVSHOW_TODAYS_RIVAL_TRAINER; + show->rivalTrainer.active = FALSE; + for (i = BADGE01_GET, nBadges = 0; i < BADGE01_GET + 8; i ++) + { + if (FlagGet(i)) + { + nBadges ++; + } + } + show->rivalTrainer.badgeCount = nBadges; + if (IsNationalPokedexEnabled()) + { + show->rivalTrainer.dexCount = pokedex_count(0x01); + } + else + { + show->rivalTrainer.dexCount = sub_80C0844(0x01); + } + show->rivalTrainer.location = gMapHeader.regionMapSectionId; + show->rivalTrainer.mapDataId = gMapHeader.mapDataId; + show->rivalTrainer.nSilverSymbols = 0; + show->rivalTrainer.nGoldSymbols = 0; + for (i = 0; i < 7; i ++) + { + if (FlagGet(sSilverSymbolFlags[i]) == TRUE) + { + show->rivalTrainer.nSilverSymbols ++; + } + if (FlagGet(sGoldSymbolFlags[i]) == TRUE) + { + show->rivalTrainer.nGoldSymbols ++; + } + } + show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontierBattlePoints; + StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->rivalTrainer.language = gGameLanguage; + } +} + +void sub_80EDC60(const u16 *words) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREND_WATCHER, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->trendWatcher.kind = TVSHOW_TREND_WATCHER; + show->trendWatcher.active = FALSE; + show->trendWatcher.gender = gSaveBlock2Ptr->playerGender; + show->trendWatcher.words[0] = words[0]; + show->trendWatcher.words[1] = words[1]; + StringCopy(show->trendWatcher.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->trendWatcher.language = gGameLanguage; + } +} + +void sub_80EDCE8(void) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREASURE_INVESTIGATORS, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->treasureInvestigators.kind = TVSHOW_TREASURE_INVESTIGATORS; + show->treasureInvestigators.active = FALSE; + show->treasureInvestigators.item = gSpecialVar_0x8005; + show->treasureInvestigators.location = gMapHeader.regionMapSectionId; + show->treasureInvestigators.mapDataId = gMapHeader.mapDataId; + StringCopy(show->treasureInvestigators.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->treasureInvestigators.language = gGameLanguage; + } +} + +void sub_80EDD78(u16 nCoinsPaidOut) +{ + TVShow *show; + bool8 flag; + u16 nCoinsWon; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FIND_THAT_GAMER, FALSE) != TRUE) + { + flag = FALSE; + switch (sFindThatGamerWhichGame) + { + case FALSE: + if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200) + { + flag = TRUE; + nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent; + break; + } + if (sFindThatGamerCoinsSpent >= 100 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 100) + { + nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut; + break; + } + return; + case TRUE: + if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50) + { + flag = TRUE; + nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent; + break; + } + if (sFindThatGamerCoinsSpent >= 50 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 50) + { + nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut; + break; + } + return; + default: + return; + } + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->findThatGamer.kind = TVSHOW_FIND_THAT_GAMER; + show->findThatGamer.active = FALSE; + show->findThatGamer.nCoins = nCoinsWon; + show->findThatGamer.whichGame = sFindThatGamerWhichGame; + show->findThatGamer.won = flag; + StringCopy(show->findThatGamer.playerName, gSaveBlock2Ptr->playerName); + tv_store_id_3x(show); + show->findThatGamer.language = gGameLanguage; + } +} + +void sub_80EDE70(u16 nCoinsSpent) +{ + sFindThatGamerWhichGame = FALSE; + sFindThatGamerCoinsSpent = nCoinsSpent; +} + +void sub_80EDE84(u16 nCoinsSpent) +{ + sFindThatGamerWhichGame = TRUE; + sFindThatGamerCoinsSpent = nCoinsSpent; +} + +#ifdef NONMATCHING // FIXME: Register allocation shenanigans +void sub_80EDE98(TVShow *show) +{ + u8 i; + u8 j; + u16 k; + u8 n; + u8 deco; + u8 x; + + for (i = 0; i < 16; i ++) + { + sTV_DecorationsBuffer[i] = 0; + } + for (i = 0, n = 0; i < 16; i ++) + { + deco = gSaveBlock1Ptr->secretBases[0].decorations[i]; + if (deco) + { + for (j = 0; j < 16; j ++) + { + if (sTV_DecorationsBuffer[j] == 0) + { + sTV_DecorationsBuffer[j] = deco; + n ++; + break; + } + if (sTV_DecorationsBuffer[j] == deco) + { + break; + } + } + } + } + if (n > 4) + { + show->secretBaseVisit.nDecorations = 4; + } + else + { + show->secretBaseVisit.nDecorations = n; + } + switch (show->secretBaseVisit.nDecorations) + { + case 0: + break; + case 1: + show->secretBaseVisit.decorations[0] = sTV_DecorationsBuffer[0]; + break; + default: + for (k = 0; k < n * n; k ++) + { + i = Random() % n; + j = Random() % n; + x = sTV_DecorationsBuffer[i]; + sTV_DecorationsBuffer[i] = sTV_DecorationsBuffer[j]; + sTV_DecorationsBuffer[j] = x; + } + for (i = 0; i < show->secretBaseVisit.nDecorations; i ++) + { + show->secretBaseVisit.decorations[i] = sTV_DecorationsBuffer[i]; + } + break; + } +} +#else +__attribute__((naked)) +void sub_80EDE98(TVShow *show) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tmov r8, r0\n" + "\tmovs r3, 0\n" + "\tldr r6, =sTV_DecorationsBuffer\n" + "\tldr r7, =gSaveBlock1Ptr\n" + "\tadds r2, r6, 0\n" + "\tmovs r1, 0\n" + "_080EDEAC:\n" + "\tadds r0, r3, r2\n" + "\tstrb r1, [r0]\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0xF\n" + "\tbls _080EDEAC\n" + "\tmovs r3, 0\n" + "\tmovs r5, 0\n" + "_080EDEBE:\n" + "\tldr r0, [r7]\n" + "\tldr r1, =0x00001aae\n" + "\tadds r0, r1\n" + "\tadds r0, r3\n" + "\tldrb r4, [r0]\n" + "\tadds r3, 0x1\n" + "\tcmp r4, 0\n" + "\tbeq _080EDF0A\n" + "\tmovs r1, 0\n" + "\tldrb r0, [r6]\n" + "\tcmp r0, 0\n" + "\tbne _080EDEE8\n" + "\tstrb r4, [r6]\n" + "\tb _080EDF04\n" + "\t.pool\n" + "_080EDEE8:\n" + "\tadds r0, r1, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, r4\n" + "\tbeq _080EDF0A\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r1, r0, 24\n" + "\tcmp r1, 0xF\n" + "\tbhi _080EDF0A\n" + "\tadds r2, r1, r6\n" + "\tldrb r0, [r2]\n" + "\tcmp r0, 0\n" + "\tbne _080EDEE8\n" + "\tstrb r4, [r2]\n" + "_080EDF04:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "_080EDF0A:\n" + "\tlsls r0, r3, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0xF\n" + "\tbls _080EDEBE\n" + "\tcmp r5, 0x4\n" + "\tbls _080EDF1E\n" + "\tmovs r0, 0x4\n" + "\tmov r1, r8\n" + "\tstrb r0, [r1, 0x3]\n" + "\tb _080EDF22\n" + "_080EDF1E:\n" + "\tmov r0, r8\n" + "\tstrb r5, [r0, 0x3]\n" + "_080EDF22:\n" + "\tmov r1, r8\n" + "\tldrb r0, [r1, 0x3]\n" + "\tcmp r0, 0\n" + "\tbeq _080EDFA4\n" + "\tcmp r0, 0x1\n" + "\tbne _080EDF34\n" + "\tldrb r0, [r6]\n" + "\tstrb r0, [r1, 0x4]\n" + "\tb _080EDFA4\n" + "_080EDF34:\n" + "\tmovs r6, 0\n" + "\tadds r7, r5, 0\n" + "\tmuls r7, r5\n" + "\tcmp r6, r7\n" + "\tbge _080EDF7E\n" + "\tldr r0, =sTV_DecorationsBuffer\n" + "\tmov r9, r0\n" + "_080EDF42:\n" + "\tbl Random\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tadds r1, r5, 0\n" + "\tbl __modsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tbl Random\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tadds r1, r5, 0\n" + "\tbl __modsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r1, r0, 24\n" + "\tmov r0, r9\n" + "\tadds r2, r4, r0\n" + "\tldrb r3, [r2]\n" + "\tadd r1, r9\n" + "\tldrb r0, [r1]\n" + "\tstrb r0, [r2]\n" + "\tstrb r3, [r1]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, r7\n" + "\tblt _080EDF42\n" + "_080EDF7E:\n" + "\tmovs r3, 0\n" + "\tmov r1, r8\n" + "\tldrb r1, [r1, 0x3]\n" + "\tcmp r3, r1\n" + "\tbcs _080EDFA4\n" + "\tmov r2, r8\n" + "\tadds r2, 0x4\n" + "\tldr r4, =sTV_DecorationsBuffer\n" + "_080EDF8E:\n" + "\tadds r1, r2, r3\n" + "\tadds r0, r3, r4\n" + "\tldrb r0, [r0]\n" + "\tstrb r0, [r1]\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tmov r0, r8\n" + "\tldrb r0, [r0, 0x3]\n" + "\tcmp r3, r0\n" + "\tbcc _080EDF8E\n" + "_080EDFA4:\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.pool"); +} +#endif + +void sub_80EDFB4(TVShow *show) +{ + u8 i; + u16 move; + u16 j; + u8 nMoves; + u8 nPokemon; + u16 sum; + + for (i = 0, nPokemon = 0; i < PARTY_SIZE; i ++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + sTV_SecretBaseVisitMonsTemp[nPokemon].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + sTV_SecretBaseVisitMonsTemp[nPokemon].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); + nMoves = 0; + move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1); + if (move != MOVE_NONE) + { + sTV_SecretBaseVisitMovesTemp[nMoves] = move; + nMoves ++; + } + move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE2); + if (move != MOVE_NONE) + { + sTV_SecretBaseVisitMovesTemp[nMoves] = move; + nMoves ++; + } + move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE3); + if (move != MOVE_NONE) + { + sTV_SecretBaseVisitMovesTemp[nMoves] = move; + nMoves ++; + } + move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE4); + if (move != MOVE_NONE) + { + sTV_SecretBaseVisitMovesTemp[nMoves] = move; + nMoves ++; + } + sTV_SecretBaseVisitMonsTemp[nPokemon].move = sTV_SecretBaseVisitMovesTemp[Random() % nMoves]; + nPokemon ++; + } + } + for (i = 0, sum = 0; i < nPokemon; i ++) + { + sum += sTV_SecretBaseVisitMonsTemp[i].level; + } + show->secretBaseVisit.avgLevel = sum / nPokemon; + j = Random() % nPokemon; + show->secretBaseVisit.species = sTV_SecretBaseVisitMonsTemp[j].species; + show->secretBaseVisit.move = sTV_SecretBaseVisitMonsTemp[j].move; +} + +void sub_80EE104(void) +{ + TVShow *show; + + HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_VISIT, TRUE); + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->secretBaseVisit.kind = TVSHOW_SECRET_BASE_VISIT; + show->secretBaseVisit.active = FALSE; + StringCopy(show->secretBaseVisit.playerName, gSaveBlock2Ptr->playerName); + sub_80EDE98(show); + sub_80EDFB4(show); + tv_store_id_3x(show); + show->secretBaseVisit.language = gGameLanguage; + } +} + +void sub_80EE184(void) +{ + TVShow *show; + u8 i; + u16 balls; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BREAKING_NEWS, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->breakingNews.kind = TVSHOW_BREAKING_NEWS; + show->breakingNews.active = FALSE; + balls = 0; + for (i = 0; i < 11; i ++) + { + balls += gBattleResults.catchAttempts[i]; + } + if (gBattleResults.usedMasterBall) + { + balls ++; + } + show->breakingNews.location = gMapHeader.regionMapSectionId; + StringCopy(show->breakingNews.playerName, gSaveBlock2Ptr->playerName); + show->breakingNews.poke1Species = gBattleResults.playerMon1Species; + switch (gBattleOutcome) + { + case BATTLE_LOST: + case BATTLE_DREW: + show->breakingNews.kind = TVSHOW_OFF_AIR; + return; + case BATTLE_CAUGHT: + show->breakingNews.outcome = 0; + break; + case BATTLE_WON: + show->breakingNews.outcome = 1; + break; + case BATTLE_RAN: + case BATTLE_PLAYER_TELEPORTED: + case BATTLE_SAFARI_OUT_OF_BALLS: + show->breakingNews.outcome = 2; + break; + case BATTLE_POKE_FLED: + case BATTLE_OPPONENT_TELEPORTED: + show->breakingNews.outcome = 3; + break; + } + show->breakingNews.lastOpponentSpecies = gBattleResults.lastOpponentSpecies; + switch (show->breakingNews.outcome) + { + case 0: + if (gBattleResults.usedMasterBall) + { + show->breakingNews.caughtMonBall = ITEM_MASTER_BALL; + } + else + { + show->breakingNews.caughtMonBall = gBattleResults.caughtMonBall; + } + show->breakingNews.balls = balls; + break; + case 1: + show->breakingNews.lastUsedMove = gBattleResults.lastUsedMovePlayer; + break; + case 2: + break; + case 3: + break; + } + tv_store_id_3x(show); + show->breakingNews.language = gGameLanguage; + } +} + +void sub_80EE2CC(void) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_LOTTO_WINNER, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->lottoWinner.kind = TVSHOW_LOTTO_WINNER; + show->lottoWinner.active = FALSE; + StringCopy(show->lottoWinner.playerName, gSaveBlock2Ptr->playerName); + show->lottoWinner.whichPrize = 4 - gSpecialVar_0x8004; + show->lottoWinner.item = gSpecialVar_0x8005; + tv_store_id_3x(show); + show->lottoWinner.language = gGameLanguage; + } +} + +void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove) +{ + TVShow *show; + u8 i; + u8 j; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BATTLE_SEMINAR, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->battleSeminar.kind = TVSHOW_BATTLE_SEMINAR; + show->battleSeminar.active = FALSE; + StringCopy(show->battleSeminar.playerName, gSaveBlock2Ptr->playerName); + show->battleSeminar.foeSpecies = foeSpecies; + show->battleSeminar.species = species; + show->battleSeminar.move = movePtr[moveIdx]; + for (i = 0, j = 0; i < 4; i ++) + { + if (i != moveIdx && movePtr[i]) + { + show->battleSeminar.otherMoves[j] = movePtr[i]; + j ++; + } + } + show->battleSeminar.nOtherMoves = j; + show->battleSeminar.betterMove = betterMove; + tv_store_id_3x(show); + show->battleSeminar.language = gGameLanguage; + } +} + +void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SAFARI_FAN_CLUB, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->safariFanClub.kind = TVSHOW_SAFARI_FAN_CLUB; + show->safariFanClub.active = FALSE; + StringCopy(show->safariFanClub.playerName, gSaveBlock2Ptr->playerName); + show->safariFanClub.nMonsCaught = nMonsCaught; + show->safariFanClub.nPkblkUsed = nPkblkUsed; + tv_store_id_3x(show); + show->safariFanClub.language = gGameLanguage; + } +} + +void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_CUTIES, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->cuties.kind = TVSHOW_CUTIES; + show->cuties.active = FALSE; + StringCopy(show->cuties.playerName, gSaveBlock2Ptr->playerName); + GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname); + StripExtCtrlCodes(show->cuties.nickname); + show->cuties.nRibbons = GetRibbonCount(pokemon); + show->cuties.selectedRibbon = TV_MonDataIdxToRibbon(ribbonMonDataIdx); + tv_store_id_3x(show); + show->cuties.language = gGameLanguage; + if (show->cuties.language == LANGUAGE_JAPANESE || GetMonData(pokemon, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) + { + show->cuties.pokemonNameLanguage = LANGUAGE_JAPANESE; + } + else + { + show->cuties.pokemonNameLanguage = GetMonData(pokemon, MON_DATA_LANGUAGE); + } + } +} + +u8 GetRibbonCount(struct Pokemon *pokemon) +{ + u8 nRibbons; + + nRibbons = 0; + nRibbons += GetMonData(pokemon, MON_DATA_COOL_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_BEAUTY_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_CUTE_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_SMART_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_TOUGH_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_CHAMPION_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_WINNING_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_VICTORY_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_ARTIST_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_EFFORT_RIBBON); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_1); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_2); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_3); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_4); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_5); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_6); + nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_7); + return nRibbons; +} + +u8 TV_MonDataIdxToRibbon(u8 monDataIdx) +{ + if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return 0; + if (monDataIdx == MON_DATA_COOL_RIBBON) return 1; + if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return 5; + if (monDataIdx == MON_DATA_CUTE_RIBBON) return 9; + if (monDataIdx == MON_DATA_SMART_RIBBON) return 13; + if (monDataIdx == MON_DATA_TOUGH_RIBBON) return 17; + if (monDataIdx == MON_DATA_WINNING_RIBBON) return 21; + if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22; + if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23; + if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24; + if (monDataIdx == MON_DATA_GIFT_RIBBON_1) return 25; + if (monDataIdx == MON_DATA_GIFT_RIBBON_2) return 26; + if (monDataIdx == MON_DATA_GIFT_RIBBON_3) return 27; + if (monDataIdx == MON_DATA_GIFT_RIBBON_4) return 28; + if (monDataIdx == MON_DATA_GIFT_RIBBON_5) return 29; + if (monDataIdx == MON_DATA_GIFT_RIBBON_6) return 30; + if (monDataIdx == MON_DATA_GIFT_RIBBON_7) return 31; + return 0; +} + +void sub_80EE72C(void) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TRAINER_FAN_CLUB, FALSE) != TRUE) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB; + show->trainerFanClub.active = FALSE; + StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName); + show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0]; + show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1]; + tv_store_id_3x(show); + show->trainerFanClub.language = gGameLanguage; + } +} + +bool8 sub_80EE7C0(void) +{ + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot == -1) + { + return TRUE; + } + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL); + if (gScriptResult == TRUE) + { + return TRUE; + } + if (gSaveBlock1Ptr->linkBattleRecords[0].name[0] == EOS) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_80EE818(void) +{ + u32 playerId; + u8 showIdx; + TVShow *shows; + + if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FRONTIER, FALSE) == TRUE) + { + shows = gSaveBlock1Ptr->tvShows; + playerId = GetPlayerIDAsU32(); + for (showIdx = 5; showIdx < 24; showIdx ++) + { + if (shows[showIdx].common.kind == TVSHOW_FRONTIER && (playerId & 0xFF) == shows[showIdx].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[showIdx].common.trainerIdHi) + { + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, showIdx); + sub_80EF93C(gSaveBlock1Ptr->tvShows); + return TRUE; + } + } + } + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot == -1) + { + return FALSE; + } + return TRUE; +} + +void sub_80EE8C8(u16 winStreak, u8 facility) +{ + TVShow *show; + + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->frontier.kind = TVSHOW_FRONTIER; + show->frontier.active = FALSE; + StringCopy(show->frontier.playerName, gSaveBlock2Ptr->playerName); + show->frontier.winStreak = winStreak; + show->frontier.facility = facility; + switch (facility) + { + case 1: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); + show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); + show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL); + break; + case 2: + show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); + show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); + show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL); + show->frontier.species4 = GetMonData(&gPlayerParty[3], MON_DATA_SPECIES, NULL); + break; + case 3: + show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); + show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); + break; + case 4: + show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[0] - 1], MON_DATA_SPECIES, NULL); + show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[1] - 1], MON_DATA_SPECIES, NULL); + break; + } + tv_store_id_3x(show); + show->frontier.language = gGameLanguage; + } +} + +void sub_80EEA70(void) +{ + TVShow *show; + u8 strbuf[32]; + + if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_SECRETS, FALSE) != TRUE) + { + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS; + show->secretBaseSecrets.active = FALSE; + StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName); + show->secretBaseSecrets.stepsInBase = VarGet(0x40ec); + sub_80E980C(); + StringCopy(strbuf, gStringVar1); + StripExtCtrlCodes(strbuf); + StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf); + show->secretBaseSecrets.item = VarGet(0x40ed); + show->secretBaseSecrets.flags = VarGet(0x40ee) + (VarGet(0x40ef) << 16); + tv_store_id_3x(show); + show->secretBaseSecrets.language = gGameLanguage; + if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language == LANGUAGE_JAPANESE) + { + show->secretBaseSecrets.baseOwnersNameLanguage = LANGUAGE_JAPANESE; + } + else + { + show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language; + } + } + } +} + +void sub_80EEB98(u16 days) +{ + u8 i; + + for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++) + { + if (VarGet(sNumberOneVarsAndThresholds[i][0]) >= sNumberOneVarsAndThresholds[i][1]) + { + sub_80EEBF4(i); + break; + } + } + for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++) + { + VarSet(sNumberOneVarsAndThresholds[i][0], 0); + } +} + +void sub_80EEBF4(u8 actionIdx) +{ + TVShow *show; + + HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_NUMBER_ONE, TRUE); + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + if (sCurTVShowSlot != -1) + { + show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; + show->numberOne.kind = TVSHOW_NUMBER_ONE; + show->numberOne.active = FALSE; + StringCopy(show->numberOne.playerName, gSaveBlock2Ptr->playerName); + show->numberOne.actionIdx = actionIdx; + show->numberOne.count = VarGet(sNumberOneVarsAndThresholds[actionIdx][0]); + tv_store_id_3x(show); + show->numberOne.language = gGameLanguage; + } +} + +void sub_80EEC80(void) +{ + VarSet(VAR_DAILY_SLOTS, VarGet(VAR_DAILY_SLOTS) + 1); +} + +void sub_80EECA4(void) +{ + VarSet(VAR_DAILY_ROULETTE, VarGet(VAR_DAILY_ROULETTE) + 1); +} + +void sub_80EECC8(void) +{ + VarSet(VAR_DAILY_WILDS, VarGet(VAR_DAILY_WILDS) + 1); +} + +void sub_80EECEC(void) +{ + VarSet(VAR_DAILY_BLENDER, VarGet(VAR_DAILY_BLENDER) + 1); +} + +void sub_80EED10(void) +{ + VarSet(VAR_DAILY_PLANTED_BERRIES, VarGet(VAR_DAILY_PLANTED_BERRIES) + 1); +} + +void sub_80EED34(void) +{ + VarSet(VAR_DAILY_PICKED_BERRIES, VarGet(VAR_DAILY_PICKED_BERRIES) + gSpecialVar_0x8006); +} + +void sub_80EED60(u16 delta) +{ + VarSet(VAR_DAILY_BP, VarGet(VAR_DAILY_BP) + delta); +} + +// PokeNews + +void sub_80EED88(void) +{ + u8 newsKind; + + if (FlagGet(SYS_GAME_CLEAR)) + { + sCurTVShowSlot = sub_80EEE30(gSaveBlock1Ptr->pokeNews); + if (sCurTVShowSlot != -1 && rbernoulli(1, 100) != TRUE) + { + newsKind = (Random() % 4) + POKENEWS_SLATEPORT; + if (sub_80EF0E4(newsKind) != TRUE) + { + gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].kind = newsKind; + gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].days = 4; + gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].state = TRUE; + } + } + } +} + +s8 sub_80EEE30(PokeNews *pokeNews) +{ + s8 i; + + for (i = 0; i < 16; i ++) + { + if (pokeNews[i].kind == 0) + { + return i; + } + } + return -1; +} + +void ClearPokemonNews(void) +{ + u8 i; + + for (i = 0; i < 16; i ++) + { + ClearPokemonNewsI(i); + } +} + +void ClearPokemonNewsI(u8 i) +{ + gSaveBlock1Ptr->pokeNews[i].kind = POKENEWS_NONE; + gSaveBlock1Ptr->pokeNews[i].state = FALSE; + gSaveBlock1Ptr->pokeNews[i].days = 0; +} + +void sub_80EEEB8(void) +{ + u8 i; + u8 j; + + for (i = 0; i < 15; i ++) + { + if (gSaveBlock1Ptr->pokeNews[i].kind == POKENEWS_NONE) + { + for (j = i + 1; j < 16; j ++) + { + if (gSaveBlock1Ptr->pokeNews[j].kind != POKENEWS_NONE) + { + gSaveBlock1Ptr->pokeNews[i] = gSaveBlock1Ptr->pokeNews[j]; + ClearPokemonNewsI(j); + break; + } + } + } + } +} + +u8 FindAnyTVNewsOnTheAir(void) +{ + u8 i; + + for (i = 0; i < 16; i ++) + { + if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE && gSaveBlock1Ptr->pokeNews[i].state == TRUE && gSaveBlock1Ptr->pokeNews[i].days < 3) + { + return i; + } + } + return -1; +} + +void DoPokeNews(void) +{ + u8 i; + u16 n; + + i = FindAnyTVNewsOnTheAir(); + if (i == 0xFF) + { + gScriptResult = FALSE; + } + else + { + if (gSaveBlock1Ptr->pokeNews[i].days == 0) + { + gSaveBlock1Ptr->pokeNews[i].state = 2; + if (gLocalTime.hours < 20) + { + ShowFieldMessage(sPokeNewsTextGroup_Ongoing[gSaveBlock1Ptr->pokeNews[i].kind]); + } + else + { + ShowFieldMessage(sPokeNewsTextGroup_Ending[gSaveBlock1Ptr->pokeNews[i].kind]); + } + } + else + { + n = gSaveBlock1Ptr->pokeNews[i].days; + ConvertIntToDecimalStringN(gStringVar1, n, STR_CONV_MODE_LEFT_ALIGN, 1); + gSaveBlock1Ptr->pokeNews[i].state = 0; + ShowFieldMessage(sPokeNewsTextGroup_Upcoming[gSaveBlock1Ptr->pokeNews[i].kind]); + } + gScriptResult = TRUE; + } +} + +bool8 GetPriceReduction(u8 newsKind) +{ + u8 i; + + if (newsKind == 0) + { + return FALSE; + } + for (i = 0; i < 16; i ++) + { + if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind) + { + if (gSaveBlock1Ptr->pokeNews[i].state == 2 && IsPriceDiscounted(newsKind)) + { + return TRUE; + } + return FALSE; + } + } + return FALSE; +} + +bool8 IsPriceDiscounted(u8 newsKind) +{ + switch (newsKind) + { + case POKENEWS_SLATEPORT: + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 25) + { + return TRUE; + } + return FALSE; + case POKENEWS_LILYCOVE: + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + { + return TRUE; + } + return FALSE; + } + return TRUE; +} + +bool8 sub_80EF0E4(u8 newsKind) +{ + u8 i; + if (newsKind == POKENEWS_NONE) + { + return TRUE; + } + for (i = 0; i < 16; i ++) + { + if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind) + { + return TRUE; + } + } + return FALSE; +} + +void sub_80EF120(u16 days) +{ + u8 i; + + for (i = 0; i < 16; i ++) + { + if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE) + { + if (gSaveBlock1Ptr->pokeNews[i].days < days) + { + ClearPokemonNewsI(i); + } + else + { + if (gSaveBlock1Ptr->pokeNews[i].state == 0 && FlagGet(SYS_GAME_CLEAR) == TRUE) + { + gSaveBlock1Ptr->pokeNews[i].state = 1; + } + gSaveBlock1Ptr->pokeNews[i].days -= days; + } + } + } + sub_80EEEB8(); +} + +void CopyContestRankToStringVar(u8 varIdx, u8 rank) +{ + switch (rank) + { + case 0: // NORMAL + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[5]); + break; + case 1: // SUPER + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[6]); + break; + case 2: // HYPER + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[7]); + break; + case 3: // MASTER + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[8]); + break; + } +} + +void CopyContestCategoryToStringVar(u8 varIdx, u8 category) +{ + switch (category) + { + case 0: // COOL + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[0]); + break; + case 1: // BEAUTY + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[1]); + break; + case 2: // CUTE + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[2]); + break; + case 3: // SMART + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[3]); + break; + case 4: // TOUGH + StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[4]); + break; + } +} + +void SetContestCategoryStringVarForInterview(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory); +} + +void TV_PrintIntToStringVar(u8 varIdx, int value) +{ + int nDigits; + + nDigits = sub_80EF370(value); + ConvertIntToDecimalStringN(gTVStringVarPtrs[varIdx], value, STR_CONV_MODE_LEFT_ALIGN, nDigits); +} + +int sub_80EF370(int value) +{ + if (value / 10 == 0) + { + return 1; + } + if (value / 100 == 0) + { + return 2; + } + if (value / 1000 == 0) + { + return 3; + } + if (value / 10000 == 0) + { + return 4; + } + if (value / 100000 == 0) + { + return 5; + } + if (value / 1000000 == 0) + { + return 6; + } + if (value / 10000000 == 0) + { + return 7; + } + if (value / 100000000 == 0) + { + return 8; + } + return 1; +} + +void sub_80EF40C(u8 varIdx, TVShow *show) +{ + u8 i; + int price; + + price = 0; + for (i = 0; i < 3; i ++) + { + if (show->smartshopperShow.itemIds[i] != ITEM_NONE) + { + price += itemid_get_market_price(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i]; + } + } + if (show->smartshopperShow.priceReduced == TRUE) + { + TV_PrintIntToStringVar(varIdx, price >> 1); + } + else + { + TV_PrintIntToStringVar(varIdx, price); + } +} + +bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag) +{ + u32 playerId; + TVShow *shows; + u8 i; + + shows = gSaveBlock1Ptr->tvShows; + playerId = GetPlayerIDAsU32(); + for (i = 5; i < 24; i ++) + { + if (shows[i].common.kind == kind && (playerId & 0xFF) == shows[i].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[i].common.trainerIdHi) + { + if (flag == TRUE) + { + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i); + sub_80EF93C(gSaveBlock1Ptr->tvShows); + } + return TRUE; + } + } + return FALSE; +} + +void TV_SortPurchasesByQuantity(void) +{ + u8 i; + u8 j; + u16 tmpId; + u16 tmpQn; + + for (i = 0; i < 2; i ++) + { + for (j = i + 1; j < 3; j ++) + { + if (gUnknown_02039F80[i].quantity < gUnknown_02039F80[j].quantity) + { + tmpId = gUnknown_02039F80[i].itemId; + tmpQn = gUnknown_02039F80[i].quantity; + gUnknown_02039F80[i].itemId = gUnknown_02039F80[j].itemId; + gUnknown_02039F80[i].quantity = gUnknown_02039F80[j].quantity; + gUnknown_02039F80[j].itemId = tmpId; + gUnknown_02039F80[j].quantity = tmpQn; + } + } + } +} + +void FindActiveBroadcastByShowType_SetScriptResult(u8 kind) +{ + u8 i; + for (i = 0; i < 5; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind == kind) + { + if (gSaveBlock1Ptr->tvShows[i].common.active == TRUE) + { + gScriptResult = TRUE; + } + else + { + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i); + sub_80EF93C(gSaveBlock1Ptr->tvShows); + sub_80EFA88(); + } + return; + } + } + sub_80EFA88(); +} + +void InterviewBefore(void) +{ + gScriptResult = FALSE; + switch (gSpecialVar_0x8005) + { + case TVSHOW_FAN_CLUB_LETTER: + InterviewBefore_FanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + InterviewBefore_RecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + InterviewBefore_PkmnFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + InterviewBefore_Dummy(); + break; + case TVSHOW_NAME_RATER_SHOW: + InterviewBefore_NameRater(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + InterviewBefore_BravoTrainerPkmnProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + InterviewBefore_BravoTrainerBTProfile(); + break; + case TVSHOW_CONTEST_LIVE_UPDATES: + InterviewBefore_ContestLiveUpdates(); + break; + case TVSHOW_3_CHEERS_FOR_POKEBLOCKS: + InterviewBefore_3CheersForPokeblocks(); + break; + case TVSHOW_FAN_CLUB_SPECIAL: + InterviewBefore_FanClubSpecial(); + break; + } +} + +void InterviewBefore_FanClubLetter(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER); + if (!gScriptResult) + { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_SPECIES, NULL)]); + InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubLetter.words, 6); + } +} + +void InterviewBefore_RecentHappenings(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS); + if (!gScriptResult) + { + InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].recentHappenings.words, 6); + } +} + +void InterviewBefore_PkmnFanClubOpinions(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS); + if (!gScriptResult) + { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_SPECIES, NULL)]); + GetMonData(&gPlayerParty[GetIdxOfFirstPartyMemberThatIsNotAnEgg()], MON_DATA_NICKNAME, gStringVar2); + StringGetEnd10(gStringVar2); + InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubOpinions.words, 2); + } +} + +void InterviewBefore_Dummy(void) +{ + gScriptResult = TRUE; +} + +void InterviewBefore_NameRater(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_NAME_RATER_SHOW); +} + +void InterviewBefore_BravoTrainerPkmnProfile(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); + if (!gScriptResult) + { + InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainer.words, 2); + } +} + +void InterviewBefore_ContestLiveUpdates(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_CONTEST_LIVE_UPDATES); +} + +void InterviewBefore_3CheersForPokeblocks(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS); +} + +void InterviewBefore_BravoTrainerBTProfile(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); + if (!gScriptResult) + { + InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainerTower.words, 1); + } +} + +void InterviewBefore_FanClubSpecial(void) +{ + FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL); + if (!gScriptResult) + { + InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanClubSpecial.words, 1); + } +} + +bool8 sub_80EF88C(u8 monIdx) +{ + struct Pokemon *pokemon; + u8 language; + + pokemon = &gPlayerParty[monIdx]; + GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1); + language = GetMonData(pokemon, MON_DATA_LANGUAGE, &language); + if (language == LANGUAGE_ENGLISH && !StringCompare(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES, NULL)], gStringVar1)) + { + return FALSE; + } + return TRUE; +} + +bool8 sub_80EF8F8(void) +{ + return sub_80EF88C(GetIdxOfFirstPartyMemberThatIsNotAnEgg()); +} + +void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx) +{ + u8 i; + + shows[idx].common.kind = TVSHOW_OFF_AIR; + shows[idx].common.active = FALSE; + for (i = 0; i < 34; i ++) + { + shows[idx].common.pad02[i] = 0; + } +} + +void sub_80EF93C(TVShow *shows) +{ + u8 i; + u8 j; + + for (i = 0; i < 4; i ++) + { + if (shows[i].common.kind == TVSHOW_OFF_AIR) + { + for (j = i + 1; j < 5; j ++) + { + if (shows[j].common.kind != TVSHOW_OFF_AIR) + { + shows[i] = shows[j]; + DeleteTVShowInArrayByIdx(shows, j); + break; + } + } + } + } + for (i = 5; i < 24; i ++) + { + if (shows[i].common.kind == TVSHOW_OFF_AIR) + { + for (j = i + 1; j < 24; j ++) + { + if (shows[j].common.kind != TVSHOW_OFF_AIR) + { + shows[i] = shows[j]; + DeleteTVShowInArrayByIdx(shows, j); + break; + } + } + } + } +} + +u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(u8 varIdx, u16 passedSpecies) +{ + u16 species; + + species = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(passedSpecies); + StringCopy(gTVStringVarPtrs[varIdx], gSpeciesNames[species]); + return species; +} + +u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies) +{ + u16 species; + u16 initSpecies; + + species = (Random() % (NUM_SPECIES - 1)) + 1; + initSpecies = species; + while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) != 1 || species == passedSpecies) + { + if (species == 1) + { + species = NUM_SPECIES - 1; + } + else + { + species --; + } + if (species == initSpecies) + { + species = passedSpecies; + return species; + } + }; + return species; +} + +void sub_80EFA88(void) +{ + sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); + gSpecialVar_0x8006 = sCurTVShowSlot; + if (sCurTVShowSlot == -1) + { + gScriptResult = TRUE; + } + else + { + gScriptResult = FALSE; + } +} + +s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows) +{ + u8 i; + + for (i = 0; i < 5; i ++) + { + if (shows[i].common.kind == TVSHOW_OFF_AIR) + { + return i; + } + } + return -1; +} + +s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows) +{ + s8 i; + + for (i = 5; i < 24; i ++) + { + if (shows[i].common.kind == TVSHOW_OFF_AIR) + { + return i; + } + } + return -1; +} + +bool8 TV_BernoulliTrial(u16 ratio) +{ + if (Random() <= ratio) + { + return FALSE; + } + return TRUE; +} + +void TV_FanClubLetter_RandomWordToStringVar3(TVShow *show) +{ + u8 i; + + i = Random() % 6; + while (TRUE) + { + if (i == 6) + { + i = 0; + } + if (show->fanclubLetter.words[i] != 0xFFFF) + { + break; + } + i ++; + } + CopyEasyChatWord(gStringVar3, show->fanclubLetter.words[i]); +} + +u8 TV_GetNicknameSumMod8(TVShow *show) +{ + u8 i; + u16 ct; + + ct = 0; + for (i = 0; i < 11; i ++) + { + if (show->nameRaterShow.pokemonName[i] == EOS) + { + break; + } + ct += show->nameRaterShow.pokemonName[i]; + } + return ct & 7; +} + +void TV_GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, u16 species, TVShow *show) +{ + u8 buff[16]; + u8 i; + u16 strlen; + + for (i = 0; i < 3; i ++) + { + buff[i] = EOS; + } + if (whichString == 0) + { + strlen = StringLength(show->nameRaterShow.trainerName); + if (charParam == 0) + { + buff[0] = show->nameRaterShow.trainerName[whichPosition]; + } + else if (charParam == 1) + { + buff[0] = show->nameRaterShow.trainerName[strlen - whichPosition]; + } + else if (charParam == 2) + { + buff[0] = show->nameRaterShow.trainerName[whichPosition]; + buff[1] = show->nameRaterShow.trainerName[whichPosition + 1]; + } + else + { + buff[0] = show->nameRaterShow.trainerName[strlen - (whichPosition + 2)]; + buff[1] = show->nameRaterShow.trainerName[strlen - (whichPosition + 1)]; + } + ConvertInternationalString(buff, show->nameRaterShow.language); + } + else if (whichString == 1) + { + strlen = StringLength(show->nameRaterShow.pokemonName); + if (charParam == 0) + { + buff[0] = show->nameRaterShow.pokemonName[whichPosition]; + } + else if (charParam == 1) + { + buff[0] = show->nameRaterShow.pokemonName[strlen - whichPosition]; + } + else if (charParam == 2) + { + buff[0] = show->nameRaterShow.pokemonName[whichPosition]; + buff[1] = show->nameRaterShow.pokemonName[whichPosition + 1]; + } + else + { + buff[0] = show->nameRaterShow.pokemonName[strlen - (whichPosition + 2)]; + buff[1] = show->nameRaterShow.pokemonName[strlen - (whichPosition + 1)]; + } + ConvertInternationalString(buff, show->nameRaterShow.pokemonNameLanguage); + } + else + { + strlen = StringLength(gSpeciesNames[species]); + if (charParam == 0) + { + buff[0] = gSpeciesNames[species][whichPosition]; + } + else if (charParam == 1) + { + buff[0] = gSpeciesNames[species][strlen - whichPosition]; + } + else if (charParam == 2) + { + buff[0] = gSpeciesNames[species][whichPosition]; + buff[1] = gSpeciesNames[species][whichPosition + 1]; + } + else + { + buff[0] = gSpeciesNames[species][strlen - (whichPosition + 2)]; + buff[1] = gSpeciesNames[species][strlen - (whichPosition + 1)]; + } + } + StringCopy(gTVStringVarPtrs[varIdx], buff); +} + +bool8 TV_IsScriptShowKindAlreadyInQueue(void) +{ + u8 i; + + for (i = 0; i < 5; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind == gSpecialVar_0x8004) + { + return TRUE; + } + } + return FALSE; +} + +bool8 TV_PutNameRaterShowOnTheAirIfNicnkameChanged(void) +{ + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); + if (!StringCompare(gStringVar3, gStringVar1)) + { + return FALSE; + } + PutNameRaterShowOnTheAir(); + return TRUE; +} + +void ChangePokemonNickname(void) +{ + void ChangePokemonNickname_CB(void); + + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2); + DoNamingScreen(3, gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL), GetMonGender(&gPlayerParty[gSpecialVar_0x8004]), GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL), ChangePokemonNickname_CB); +} + +void ChangePokemonNickname_CB(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2); + c2_exit_to_overworld_1_continue_scripts_restart_music(); +} + +void ChangeBoxPokemonNickname(void) +{ + struct BoxPokemon *boxMon; + + boxMon = GetBoxedMonPtr(gSpecialVar_0x8012, gSpecialVar_0x8013); + GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar3); + GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar2); + DoNamingScreen(3, gStringVar2, GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL), GetBoxMonGender(boxMon), GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL), ChangeBoxPokemonNickname_CB); +} + +void ChangeBoxPokemonNickname_CB(void) +{ + SetBoxMonNickFromAnyBox(gSpecialVar_0x8012, gSpecialVar_0x8013, gStringVar2); + c2_exit_to_overworld_1_continue_scripts_restart_music(); +} + +void TV_CopyNicknameToStringVar1AndEnsureTerminated(void) +{ + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); + StringGetEnd10(gStringVar1); +} + +void TV_CheckMonOTIDEqualsPlayerID(void) +{ + if (GetPlayerIDAsU32() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL)) + { + gScriptResult = FALSE; + } + else + { + gScriptResult = TRUE; + } +} + +u8 GetTVChannelByShowType(u8 kind) +{ + if (kind == TVSHOW_OFF_AIR) + { + return 0; + } + if (kind >= TVSHOW_FAN_CLUB_LETTER && kind < TVSHOW_POKEMON_TODAY_CAUGHT) + { + return 2; + } + if (kind >= TVSHOW_POKEMON_TODAY_CAUGHT && kind < TVSHOW_MASS_OUTBREAK) + { + return 3; + } + if (kind >= TVSHOW_MASS_OUTBREAK && kind < 61) + { + return 4; + } + return 0; +} + +u32 GetPlayerIDAsU32(void) +{ + return (gSaveBlock2Ptr->playerTrainerId[3] << 24) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]; +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void) +{ + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + return 0; + } + if (gSaveBlock2Ptr->playerGender == MALE) + { + if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + return 0; + } + } + else + { + if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + { + return 0; + } + } + if (FlagGet(SYS_TV_LATI) == TRUE) + { + return 1; + } + if (FlagGet(SYS_TV_HOME) == TRUE) + { + return 2; + } + return 1; +} + +void GetMomOrDadStringForTVMessage(void) +{ + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + if (gSaveBlock2Ptr->playerGender == MALE) + { + if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + StringCopy(gStringVar1, gText_Mom); + VarSet(VAR_0x4003, 1); + } + } + else + { + if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + { + StringCopy(gStringVar1, gText_Mom); + VarSet(VAR_0x4003, 1); + } + } + } + if (VarGet(VAR_0x4003) == 1) + { + StringCopy(gStringVar1, gText_Mom); + } + else if (VarGet(VAR_0x4003) == 2) + { + StringCopy(gStringVar1, gText_Dad); + } + else if (VarGet(VAR_0x4003) > 2) + { + if (VarGet(VAR_0x4003) % 2 == 0) + StringCopy(gStringVar1, gText_Mom); + else + StringCopy(gStringVar1, gText_Dad); + } + else + { + if (Random() % 2 != 0) + { + StringCopy(gStringVar1, gText_Mom); + VarSet(VAR_0x4003, 1); + } + else + { + StringCopy(gStringVar1, gText_Dad); + VarSet(VAR_0x4003, 2); + } + } +} + +void sub_80F01B8(void) +{ + VarSet(VAR_0x40BC, 0); + RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + FlagSet(0x396); +} + +void sub_80F01E8(void *src, u32 size, u8 masterIdx) +{ + u8 i; + u16 version; + TVShow (*rmBuffer2)[4][25]; + TVShow (*rmBuffer)[4][25]; + + rmBuffer2 = malloc(4 * 25 * sizeof(TVShow)); + if (rmBuffer2 != NULL) + { + for (i = 0; i < 4; i ++) + { + memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i])); + } + rmBuffer = rmBuffer2; + for (i = 0; i < GetLinkPlayerCount(); i ++) + { + version = (u8)gLinkPlayers[i].version; + if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) + { + sub_80F1254((*rmBuffer)[i]); + } + else if (version == VERSION_EMERALD && gLinkPlayers[i].language == LANGUAGE_JAPANESE) + { + sub_80F12A4((*rmBuffer)[i]); + } + } + switch (masterIdx) + { + case 0: + sub_80F0358(gSaveBlock1Ptr->tvShows, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]); + break; + case 1: + sub_80F0358((*rmBuffer)[0], gSaveBlock1Ptr->tvShows, (*rmBuffer)[2], (*rmBuffer)[3]); + break; + case 2: + sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->tvShows, (*rmBuffer)[3]); + break; + case 3: + sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->tvShows); + break; + } + sub_80EF93C(gSaveBlock1Ptr->tvShows); + sub_80F0C04(); + sub_80EF93C(gSaveBlock1Ptr->tvShows); + sub_80F0708(); + sub_80F0B64(); + free(rmBuffer2); + } +} + +void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVShow player4[25]) +{ + u8 i; + u8 j; + TVShow **argslist[4]; + + argslist[0] = &player1; + argslist[1] = &player2; + argslist[2] = &player3; + argslist[3] = &player4; + sTVShowMixingNumPlayers = GetLinkPlayerCount(); + while (1) + { + for (i = 0; i < sTVShowMixingNumPlayers; i ++) + { + if (i == 0) + { + sRecordMixingPartnersWithoutShowsToShare = i; + } + sTVShowMixingCurSlot = sub_80F06D0(argslist[i][0]); + if (sTVShowMixingCurSlot == -1) + { + sRecordMixingPartnersWithoutShowsToShare ++; + if (sRecordMixingPartnersWithoutShowsToShare == sTVShowMixingNumPlayers) + { + return; + } + } + else + { + for (j = 0; j < sTVShowMixingNumPlayers - 1; j ++) + { + sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(argslist[(i + j + 1) % sTVShowMixingNumPlayers][0]); + if (sCurTVShowSlot != -1 + && sub_80F049C(&argslist[(i + j + 1) % sTVShowMixingNumPlayers][0], &argslist[i][0], (i + j + 1) % sTVShowMixingNumPlayers) == 1) + { + break; + } + } + if (j == sTVShowMixingNumPlayers - 1) + { + DeleteTVShowInArrayByIdx(argslist[i][0], sTVShowMixingCurSlot); + } + } + } + } +} + +bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx) +{ + u8 value; + u8 switchval; + TVShow *tv1; + TVShow *tv2; + + tv1 = *dest; + tv2 = *src; + value = FALSE; + switchval = GetTVChannelByShowType(tv2[sTVShowMixingCurSlot].common.kind); + switch (switchval) + { + case 2: + value = sub_80F0580(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx); + break; + case 3: + value = sub_80F05E8(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx); + break; + case 4: + value = sub_80F0668(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx); + break; + } + if (value == TRUE) + { + DeleteTVShowInArrayByIdx(tv2, sTVShowMixingCurSlot); + return TRUE; + } + return FALSE; +} + +u8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx) +{ + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) + { + return FALSE; + } + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.active = TRUE; + return TRUE; +} + +u8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx) +{ + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) + { + return FALSE; + } + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) + { + return FALSE; + } + tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; + tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; + tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; + tv2->common.srcTrainerId2Hi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.active = TRUE; + return TRUE; +} + +u8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx) +{ + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) + { + return FALSE; + } + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.active = TRUE; + tv1->massOutbreak.daysLeft = 1; + return TRUE; +} + +s8 sub_80F06D0(TVShow *tvShows) +{ + u8 i; + + for (i = 0; i < 24; i ++) + { + if (tvShows[i].common.active == FALSE && (u8)(tvShows[i].common.kind - 1) < 60) + { + return i; + } + } + return -1; +} + +#ifdef NONMATCHING +void sub_80F0708(void) // FIXME: register allocation shenanigans +{ + u16 i; + TVShow *show; + + for (i = 0; i < 24; i ++) + { + switch (gSaveBlock1Ptr->tvShows[i].common.kind) + { + case TVSHOW_CONTEST_LIVE_UPDATES: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies, i); + break; + case TVSHOW_3_CHEERS_FOR_POKEBLOCKS: + break; + case TVSHOW_BATTLE_UPDATE: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species2, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species, i); + break; + case TVSHOW_FAN_CLUB_SPECIAL: + break; + case TVSHOW_CONTEST_LIVE_UPDATES_2: + break; + + case TVSHOW_OFF_AIR: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species, i); + break; + case TVSHOW_RECENT_HAPPENINGS: + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies, i); + break; + + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species, i); + break; + case TVSHOW_SMART_SHOPPER: + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke, i); + break; + + case TVSHOW_TODAYS_RIVAL_TRAINER: + break; + case TVSHOW_TREND_WATCHER: + break; + case TVSHOW_TREASURE_INVESTIGATORS: + break; + case TVSHOW_FIND_THAT_GAMER: + break; + case TVSHOW_BREAKING_NEWS: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species, i); + break; + case TVSHOW_SECRET_BASE_VISIT: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species, i); + break; + case TVSHOW_LOTTO_WINNER: + break; + case TVSHOW_BATTLE_SEMINAR: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies, i); + break; + case TVSHOW_TRAINER_FAN_CLUB: + break; + case TVSHOW_CUTIES: + break; + case TVSHOW_FRONTIER: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species1, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species2, i); + switch ((&gSaveBlock1Ptr->tvShows[i])->frontier.facility) + { + case 3: + case 4: + break; + case 1: + case 5 ... 13: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i); + break; + case 2: + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i); + sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species4, i); + break; + } + break; + case TVSHOW_NUMBER_ONE: + break; + case TVSHOW_SECRET_BASE_SECRETS: + break; + case TVSHOW_SAFARI_FAN_CLUB: + break; + + case TVSHOW_MASS_OUTBREAK: + break; + + default: + sub_80F0B00(i); + break; + } + } +} +#else +__attribute__((naked)) void sub_80F0708(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tsub sp, 0x8\n" + "\tmovs r0, 0\n" + "\tmov r9, r0\n" + "_080F0716:\n" + "\tldr r3, =gSaveBlock1Ptr\n" + "\tldr r1, [r3]\n" + "\tmov r4, r9\n" + "\tlsls r2, r4, 3\n" + "\tadds r0, r2, r4\n" + "\tlsls r0, 2\n" + "\tadds r1, r0\n" + "\tldr r0, =0x000027cc\n" + "\tadds r1, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r7, r2, 0\n" + "\tcmp r0, 0x29\n" + "\tbls _080F0732\n" + "\tb _080F0AD8\n" + "_080F0732:\n" + "\tlsls r0, 2\n" + "\tldr r1, =_080F0748\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.pool\n" + "\t.align 2, 0\n" + "_080F0748:\n" + "\t.4byte _080F0AE2_break @ TVSHOW_OFF_AIR\n" + "\t.4byte _080F0848 @ TVSHOW_FAN_CLUB_LETTER\n" + "\t.4byte _080F0AE2_break @ TVSHOW_RECENT_HAPPENINGS\n" + "\t.4byte _080F0860 @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n" + "\t.4byte _080F0878 @ TVSHOW_UNKN_SHOWTYPE_04\n" + "\t.4byte _080F0890 @ TVSHOW_NAME_RATER_SHOW\n" + "\t.4byte _080F08BC @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n" + "\t.4byte _080F08D4 @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n" + "\t.4byte _080F07F0 @ TVSHOW_CONTEST_LIVE_UPDATES\n" + "\t.4byte _080F0AE2_break @ TVSHOW_3_CHEERS_FOR_POKEBLOCKS\n" + "\t.4byte _080F081C @ TVSHOW_BATTLE_UPDATE\n" + "\t.4byte _080F0AE2_break @ TVSHOW_FAN_CLUB_SPECIAL\n" + "\t.4byte _080F0AE2_break @ TVSHOW_CONTEST_LIVE_UPDATES_2\n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0900 @ TVSHOW_POKEMON_TODAY_CAUGHT\n" + "\t.4byte _080F0AE2_break @ TVSHOW_SMART_SHOPPER\n" + "\t.4byte _080F0918 @ TVSHOW_POKEMON_TODAY_FAILED\n" + "\t.4byte _080F0944 @ TVSHOW_FISHING_ADVICE\n" + "\t.4byte _080F095C @ TVSHOW_WORLD_OF_MASTERS\n" + "\t.4byte _080F0AE2_break @ TVSHOW_TODAYS_RIVAL_TRAINER\n" + "\t.4byte _080F0AE2_break @ TVSHOW_TREND_WATCHER\n" + "\t.4byte _080F0AE2_break @ TVSHOW_TREASURE_INVESTIGATORS\n" + "\t.4byte _080F0AE2_break @ TVSHOW_FIND_THAT_GAMER\n" + "\t.4byte _080F0974 @ TVSHOW_BREAKING_NEWS\n" + "\t.4byte _080F09A0 @ TVSHOW_SECRET_BASE_VISIT\n" + "\t.4byte _080F0AE2_break @ TVSHOW_LOTTO_WINNER\n" + "\t.4byte _080F09C0 @ TVSHOW_BATTLE_SEMINAR\n" + "\t.4byte _080F0AE2_break @ TVSHOW_TRAINER_FAN_CLUB\n" + "\t.4byte _080F0AE2_break @ TVSHOW_CUTIES\n" + "\t.4byte _080F09F4 @ TVSHOW_FRONTIER\n" + "\t.4byte _080F0AE2_break @ TVSHOW_NUMBER_ONE\n" + "\t.4byte _080F0AE2_break @ TVSHOW_SECRET_BASE_SECRETS\n" + "\t.4byte _080F0AE2_break @ TVSHOW_SAFARI_FAN_CLUB\n" + "\t.4byte _080F0AD8 @ \n" + "\t.4byte _080F0AE2_break @ TVSHOW_MASS_OUTBREAK\n" + "_080F07F0:\n" + "\tldr r0, [r3]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x12]\n" + "\tlsls r5, r1, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0x2]\n" + "\tb _080F09E6\n" + "\t.pool\n" + "_080F081C:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r4, r7, r2\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x16]\n" + "\tlsls r5, r2, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0x2]\n" + "\tb _080F09E6\n" + "\t.pool\n" + "_080F0848:\n" + "\tldr r0, [r3]\n" + "\tmov r4, r9\n" + "\tadds r1, r7, r4\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r0, =0x000027cc\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1, 0x2]\n" + "\tb _080F09B0\n" + "\t.pool\n" + "_080F0860:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r1, r7, r2\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r4, =0x000027cc\n" + "\tadds r1, r4\n" + "\tldrh r0, [r1, 0x2]\n" + "\tlsls r1, r2, 24\n" + "\tb _080F09B2\n" + "\t.pool\n" + "_080F0878:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r1, r7, r2\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r4, =0x000027cc\n" + "\tadds r1, r4\n" + "\tldrh r0, [r1, 0x6]\n" + "\tlsls r1, r2, 24\n" + "\tb _080F09B2\n" + "\t.pool\n" + "_080F0890:\n" + "\tldr r0, [r3]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x2]\n" + "\tlsls r5, r1, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0x1C]\n" + "\tb _080F09E6\n" + "\t.pool\n" + "_080F08BC:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r1, r7, r2\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r4, =0x000027cc\n" + "\tadds r1, r4\n" + "\tldrh r0, [r1, 0x2]\n" + "\tlsls r1, r2, 24\n" + "\tb _080F09B2\n" + "\t.pool\n" + "_080F08D4:\n" + "\tldr r0, [r3]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0xA]\n" + "\tlsls r5, r1, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0x14]\n" + "\tb _080F09E6\n" + "\t.pool\n" + "_080F0900:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r1, r7, r2\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r4, =0x000027cc\n" + "\tadds r1, r4\n" + "\tldrh r0, [r1, 0x10]\n" + "\tlsls r1, r2, 24\n" + "\tb _080F09B2\n" + "\t.pool\n" + "_080F0918:\n" + "\tldr r0, [r3]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0xC]\n" + "\tlsls r5, r1, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0xE]\n" + "\tb _080F09E6\n" + "\t.pool\n" + "_080F0944:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r1, r7, r2\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r4, =0x000027cc\n" + "\tadds r1, r4\n" + "\tldrh r0, [r1, 0x4]\n" + "\tlsls r1, r2, 24\n" + "\tb _080F09B2\n" + "\t.pool\n" + "_080F095C:\n" + "\tldr r0, [r3]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x8]\n" + "\tb _080F09D0\n" + "\t.pool\n" + "_080F0974:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r4, r7, r2\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x2]\n" + "\tlsls r5, r2, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0xA]\n" + "\tb _080F09E6\n" + "\t.pool\n" + "_080F09A0:\n" + "\tldr r0, [r3]\n" + "\tmov r4, r9\n" + "\tadds r1, r7, r4\n" + "\tlsls r1, 2\n" + "\tadds r1, r0\n" + "\tldr r0, =0x000027cc\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1, 0x8]\n" + "_080F09B0:\n" + "\tlsls r1, r4, 24\n" + "_080F09B2:\n" + "\tlsrs r1, 24\n" + "\tbl sub_80F0B24\n" + "\tb _080F0AE2_break\n" + "\t.pool\n" + "_080F09C0:\n" + "\tldr r0, [r3]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r6, =0x000027cc\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x6]\n" + "_080F09D0:\n" + "\tlsls r5, r1, 24\n" + "\tlsrs r5, 24\n" + "\tadds r1, r5, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r6\n" + "\tldrh r0, [r4, 0x4]\n" + "_080F09E6:\n" + "\tadds r1, r5, 0\n" + "\tbl sub_80F0B24\n" + "\tb _080F0AE2_break\n" + "\t.pool\n" + "_080F09F4:\n" + "\tldr r0, [r3]\n" + "\tmov r2, r9\n" + "\tadds r4, r7, r2\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r5, =0x000027cc\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0, 0x4]\n" + "\tlsls r2, 24\n" + "\tmov r8, r2\n" + "\tlsrs r6, r2, 24\n" + "\tadds r1, r6, 0\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r0, r4, r0\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0, 0x6]\n" + "\tadds r1, r6, 0\n" + "\tbl sub_80F0B24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r0, [r3]\n" + "\tadds r4, r0\n" + "\tadds r4, r5\n" + "\tldrb r0, [r4, 0xD]\n" + "\tsubs r0, 0x1\n" + "\tmov r6, r8\n" + "\tcmp r0, 0xC\n" + "\tbhi _080F0AE2_break\n" + "\tlsls r0, 2\n" + "\tldr r1, =_080F0A48\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.pool\n" + "\t.align 2, 0\n" + "_080F0A48:\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0AA0\n" + "\t.4byte _080F0AE2_break\n" + "\t.4byte _080F0AE2_break\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "\t.4byte _080F0A7C\n" + "_080F0A7C:\n" + "\tldr r0, =gSaveBlock1Ptr\n" + "\tldr r1, [r0]\n" + "\tmov r4, r9\n" + "\tadds r0, r7, r4\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldr r1, =0x000027cc\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0, 0x8]\n" + "\tlsrs r1, r6, 24\n" + "\tbl sub_80F0B24\n" + "\tb _080F0AE2_break\n" + "\t.pool\n" + "_080F0AA0:\n" + "\tldr r2, =gSaveBlock1Ptr\n" + "\tldr r0, [r2]\n" + "\tmov r1, r9\n" + "\tadds r4, r7, r1\n" + "\tlsls r4, 2\n" + "\tadds r0, r4, r0\n" + "\tldr r5, =0x000027cc\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0, 0x8]\n" + "\tlsrs r6, 24\n" + "\tadds r1, r6, 0\n" + "\tstr r2, [sp]\n" + "\tbl sub_80F0B24\n" + "\tldr r2, [sp]\n" + "\tldr r0, [r2]\n" + "\tadds r4, r0\n" + "\tadds r4, r5\n" + "\tldrh r0, [r4, 0xA]\n" + "\tadds r1, r6, 0\n" + "\tbl sub_80F0B24\n" + "\tb _080F0AE2_break\n" + "\t.pool\n" + "_080F0AD8:\n" + "\tmov r2, r9\n" + "\tlsls r0, r2, 24\n" + "\tlsrs r0, 24\n" + "\tbl sub_80F0B00\n" + "_080F0AE2_break:\n" + "\tmov r0, r9\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r9, r0\n" + "\tcmp r0, 0x17\n" + "\tbhi _080F0AF2\n" + "\tb _080F0716\n" + "_080F0AF2:\n" + "\tadd sp, 0x8\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +void sub_80F0B00(u8 showIdx) +{ + gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE; +} + +void sub_80F0B24(u16 species, u8 showIdx) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) + { + gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE; + } +} + +void sub_80F0B64(void) +{ + u16 i; + + if (FlagGet(SYS_GAME_CLEAR) != TRUE) + { + for (i = 0; i < 24; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE) + { + gSaveBlock1Ptr->tvShows[i].common.active = FALSE; + } + else if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK) + { + gSaveBlock1Ptr->tvShows[i].common.active = FALSE; + } + } + } +} + +void sub_80F0BB8(void) +{ + u8 i; + + for (i = 0; i < 5; i ++) + { + if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[i].common.kind) == 2) + { + gSaveBlock1Ptr->tvShows[i].common.active = FALSE; + } + } +} + +void sub_80F0C04(void) +{ + s8 i; + s8 ct; + + ct = 0; + for (i = 5; i < 24; i ++) + { + if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_OFF_AIR) + { + ct ++; + } + } + for (i = 0; i < 5 - ct; i ++) + { + DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i + 5); + } +} + +void sub_80F0C7C(void *src, u32 size, u8 masterIdx) +{ + u8 i; + PokeNews (*rmBuffer2)[4][16]; + PokeNews (*rmBuffer)[4][16]; + + rmBuffer2 = malloc(4 * 16 * sizeof(PokeNews)); + if (rmBuffer2 != NULL) + { + for (i = 0; i < 4; i ++) + { + memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i])); + } + rmBuffer = rmBuffer2; + switch (masterIdx) + { + case 0: + sub_80F0D60(gSaveBlock1Ptr->pokeNews, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]); + break; + case 1: + sub_80F0D60((*rmBuffer)[0], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[2], (*rmBuffer)[3]); + break; + case 2: + sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[3]); + break; + case 3: + sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->pokeNews); + break; + } + sub_80F0EEC(); + sub_80F0F24(); + free(rmBuffer2); + } +} + +void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16], PokeNews player4[16]) +{ + u8 i; + u8 j; + u8 k; + PokeNews **argslist[4]; + + argslist[0] = &player1; + argslist[1] = &player2; + argslist[2] = &player3; + argslist[3] = &player4; + sTVShowNewsMixingNumPlayers = GetLinkPlayerCount(); + for (i = 0; i < 16; i ++) + { + for (j = 0; j < sTVShowNewsMixingNumPlayers; j ++) + { + sTVShowMixingCurSlot = sub_80F0ECC(*argslist[j], i); + if (sTVShowMixingCurSlot != -1) + { + for (k = 0; k < sTVShowNewsMixingNumPlayers - 1; k++) + { + sCurTVShowSlot = sub_80EEE30(*argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers]); + if (sCurTVShowSlot != -1) + { + sub_80F0E58(argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers], argslist[j]); + } + } + } + } + } +} + +void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16]) +{ + PokeNews *ptr1; + PokeNews *ptr2; + + ptr1 = *dest; + ptr2 = *src; + ptr2 += sTVShowMixingCurSlot; + sub_80F0E84(ptr1, ptr2, sCurTVShowSlot); +} + +bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot) +{ + u8 i; + u8 kind; + + if (src->kind == POKENEWS_NONE) + { + return FALSE; + } + for (i = 0; i < 16; i ++) + { + if (dest[i].kind == src->kind) + { + return FALSE; + } + } + dest[slot].kind = src->kind; + dest[slot].state = 1; + dest[slot].days = src->days; + return TRUE; +} + +s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx) +{ + if (pokeNews[idx].kind == POKENEWS_NONE) + { + return -1; + } + return idx; +} + +void sub_80F0EEC(void) +{ + u8 i; + + for (i = 0; i < 16; i ++) + { + if (gSaveBlock1Ptr->pokeNews[i].kind > POKENEWS_BLENDMASTER) + { + ClearPokemonNewsI(i); + } + } + sub_80EEEB8(); +} + +void sub_80F0F24(void) +{ + u8 i; + + if (FlagGet(SYS_GAME_CLEAR) != TRUE) + { + for (i = 0; i < 16; i ++) + { + gSaveBlock1Ptr->pokeNews[i].state = 0; + } + } +} + +#define tvlangfix(strptr, langptr, langfix) \ +if (IsStringJapanese(strptr)) \ +{ \ + (langptr) = LANGUAGE_JAPANESE; \ +} \ +else \ +{ \ + (langptr) = langfix; \ +} + +void sub_80F0F64(TVShow *show, u32 language) +{ + int i; + TVShow **r4; + + r4 = calloc(11, sizeof(TVShow *)); + for (i = 0; i < 24; i ++) + { + switch (show[i].common.kind) + { + case TVSHOW_FAN_CLUB_LETTER: + case TVSHOW_RECENT_HAPPENINGS: + r4[0] = &show[i]; + tvlangfix(r4[0]->fanclubLetter.playerName, r4[0]->fanclubLetter.language, language); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + r4[1] = &show[i]; + tvlangfix(r4[1]->fanclubOpinions.playerName, r4[1]->fanclubOpinions.language, language); + tvlangfix(r4[1]->fanclubOpinions.nickname, r4[1]->fanclubOpinions.pokemonNameLanguage, language); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + r4[6] = &show[i]; + tvlangfix(r4[6]->pokemonToday.playerName, r4[6]->pokemonToday.language, language); + tvlangfix(r4[6]->pokemonToday.nickname, r4[6]->pokemonToday.language2, language); + break; + case TVSHOW_SMART_SHOPPER: + r4[7] = &show[i]; + tvlangfix(r4[7]->smartshopperShow.playerName, r4[7]->smartshopperShow.language, language); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + r4[5] = &show[i]; + tvlangfix(r4[5]->bravoTrainerTower.trainerName, r4[5]->bravoTrainerTower.language, language); + tvlangfix(r4[5]->bravoTrainerTower.pokemonName, r4[5]->bravoTrainerTower.pokemonNameLanguage, language); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + r4[4] = &show[i]; + tvlangfix(r4[4]->bravoTrainer.playerName, r4[4]->bravoTrainer.language, language); + tvlangfix(r4[4]->bravoTrainer.pokemonNickname, r4[4]->bravoTrainer.pokemonNameLanguage, language); + break; + case TVSHOW_NAME_RATER_SHOW: + r4[3] = &show[i]; + tvlangfix(r4[3]->nameRaterShow.trainerName, r4[3]->nameRaterShow.language, language); + tvlangfix(r4[3]->nameRaterShow.pokemonName, r4[3]->nameRaterShow.pokemonNameLanguage, language); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + r4[2] = &show[i]; + tvlangfix(r4[2]->pokemonTodayFailed.playerName, r4[2]->pokemonTodayFailed.language, language); + break; + case TVSHOW_FISHING_ADVICE: + r4[8] = &show[i]; + tvlangfix(r4[8]->pokemonAngler.playerName, r4[8]->pokemonAngler.language, language); + break; + case TVSHOW_WORLD_OF_MASTERS: + r4[9] = &show[i]; + tvlangfix(r4[9]->worldOfMasters.playerName, r4[9]->worldOfMasters.language, language); + break; + case TVSHOW_MASS_OUTBREAK: + r4[10] = &show[i]; + r4[10]->massOutbreak.language = language; + break; + } + } + free(r4); +} + +void sub_80F1208(TVShow *shows) +{ + TVShow *curShow; + + sub_80F14F8(shows); + for (curShow = shows; curShow < shows + 24; curShow ++) + { + if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE) + { + if ((curShow->bravoTrainerTower.language == LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage != LANGUAGE_JAPANESE) || (curShow->bravoTrainerTower.language != LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage == LANGUAGE_JAPANESE)) + { + memset(curShow, 0, sizeof(TVShow)); + } + } + } +} + +void sub_80F1254(TVShow *shows) +{ + TVShow *curShow; + + for (curShow = shows; curShow < shows + 24; curShow ++) + { + if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE) + { + if (IsStringJapanese(curShow->bravoTrainerTower.pokemonName)) + { + curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE; + } + else + { + curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_ENGLISH; + } + } + } +} + +u8 TV_GetStringLanguage(u8 *str) +{ + return IsStringJapanese(str) ? LANGUAGE_JAPANESE : LANGUAGE_ENGLISH; +} + +void sub_80F12A4(TVShow *shows) +{ + TVShow *curShow; + + for (curShow = shows; curShow < shows + 24; curShow ++) + { + switch(curShow->common.kind) + { + case TVSHOW_FAN_CLUB_LETTER: + curShow->fanclubLetter.language = TV_GetStringLanguage(curShow->fanclubLetter.playerName); + break; + case TVSHOW_RECENT_HAPPENINGS: + curShow->recentHappenings.language = TV_GetStringLanguage(curShow->recentHappenings.playerName); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + curShow->fanclubOpinions.language = TV_GetStringLanguage(curShow->fanclubOpinions.playerName); + curShow->fanclubOpinions.pokemonNameLanguage = TV_GetStringLanguage(curShow->fanclubOpinions.nickname); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + curShow->unkShow04.language = TV_GetStringLanguage(curShow->unkShow04.string_0b); + break; + case TVSHOW_NAME_RATER_SHOW: + curShow->nameRaterShow.language = TV_GetStringLanguage(curShow->nameRaterShow.trainerName); + curShow->nameRaterShow.pokemonNameLanguage = TV_GetStringLanguage(curShow->nameRaterShow.pokemonName); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + curShow->bravoTrainer.language = TV_GetStringLanguage(curShow->bravoTrainer.playerName); + curShow->bravoTrainer.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainer.pokemonNickname); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + curShow->bravoTrainerTower.language = TV_GetStringLanguage(curShow->bravoTrainerTower.trainerName); + curShow->bravoTrainerTower.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainerTower.pokemonName); + break; + case TVSHOW_CONTEST_LIVE_UPDATES: + curShow->contestLiveUpdates.language = TV_GetStringLanguage(curShow->contestLiveUpdates.playerName); + curShow->contestLiveUpdates.winningTrainerLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates.winningTrainerName); + break; + case TVSHOW_3_CHEERS_FOR_POKEBLOCKS: + curShow->threeCheers.language = TV_GetStringLanguage(curShow->threeCheers.playerName); + curShow->threeCheers.worstBlenderLanguage = TV_GetStringLanguage(curShow->threeCheers.worstBlenderName); + break; + case TVSHOW_BATTLE_UPDATE: + curShow->battleUpdate.language = TV_GetStringLanguage(curShow->battleUpdate.playerName); + curShow->battleUpdate.linkOpponentLanguage = TV_GetStringLanguage(curShow->battleUpdate.linkOpponentName); + break; + case TVSHOW_FAN_CLUB_SPECIAL: + curShow->fanClubSpecial.language = TV_GetStringLanguage(curShow->fanClubSpecial.playerName); + curShow->fanClubSpecial.idolNameLanguage = TV_GetStringLanguage(curShow->fanClubSpecial.idolName); + break; + case TVSHOW_CONTEST_LIVE_UPDATES_2: + curShow->contestLiveUpdates2.language = TV_GetStringLanguage(curShow->contestLiveUpdates2.playerName); + curShow->contestLiveUpdates2.pokemonNameLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates2.nickname); + break; + + case TVSHOW_POKEMON_TODAY_CAUGHT: + curShow->pokemonToday.language = TV_GetStringLanguage(curShow->pokemonToday.playerName); + curShow->pokemonToday.language2 = TV_GetStringLanguage(curShow->pokemonToday.nickname); + break; + case TVSHOW_SMART_SHOPPER: + curShow->smartshopperShow.language = TV_GetStringLanguage(curShow->smartshopperShow.playerName); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + curShow->pokemonTodayFailed.language = TV_GetStringLanguage(curShow->pokemonTodayFailed.playerName); + break; + case TVSHOW_FISHING_ADVICE: + curShow->pokemonAngler.language = TV_GetStringLanguage(curShow->pokemonAngler.playerName); + break; + case TVSHOW_WORLD_OF_MASTERS: + curShow->worldOfMasters.language = TV_GetStringLanguage(curShow->worldOfMasters.playerName); + break; + case TVSHOW_TREND_WATCHER: + curShow->trendWatcher.language = TV_GetStringLanguage(curShow->trendWatcher.playerName); + break; + case TVSHOW_BREAKING_NEWS: + curShow->breakingNews.language = TV_GetStringLanguage(curShow->breakingNews.playerName); + break; + case TVSHOW_BATTLE_SEMINAR: + curShow->battleSeminar.language = TV_GetStringLanguage(curShow->battleSeminar.playerName); + break; + case TVSHOW_FIND_THAT_GAMER: + case TVSHOW_TRAINER_FAN_CLUB: + curShow->trainerFanClub.language = TV_GetStringLanguage(curShow->trainerFanClub.playerName); + break; + case TVSHOW_CUTIES: + curShow->cuties.language = TV_GetStringLanguage(curShow->cuties.playerName); + curShow->cuties.pokemonNameLanguage = TV_GetStringLanguage(curShow->cuties.nickname); + break; + case TVSHOW_TODAYS_RIVAL_TRAINER: + case TVSHOW_SECRET_BASE_VISIT: + case TVSHOW_FRONTIER: + curShow->rivalTrainer.language = TV_GetStringLanguage(curShow->rivalTrainer.playerName); + break; + case TVSHOW_TREASURE_INVESTIGATORS: + case TVSHOW_LOTTO_WINNER: + case TVSHOW_NUMBER_ONE: + curShow->treasureInvestigators.language = TV_GetStringLanguage(curShow->treasureInvestigators.playerName); + break; + case TVSHOW_SECRET_BASE_SECRETS: + curShow->secretBaseSecrets.language = TV_GetStringLanguage(curShow->secretBaseSecrets.playerName); + curShow->secretBaseSecrets.baseOwnersNameLanguage = TV_GetStringLanguage(curShow->secretBaseSecrets.baseOwnersName); + break; + case TVSHOW_SAFARI_FAN_CLUB: + curShow->safariFanClub.language = TV_GetStringLanguage(curShow->safariFanClub.playerName); + break; + case TVSHOW_MASS_OUTBREAK: + break; + } + } +} + +void sub_80F14F8(TVShow *shows) +{ + int i; + + for (i = 0; i < 24; i ++) + { + switch (shows[i].common.kind) + { + case TVSHOW_WORLD_OF_MASTERS: + if (shows[i].worldOfMasters.location > 0x58) + { + memset(&shows[i], 0, sizeof(TVShow)); + } + break; + case TVSHOW_POKEMON_TODAY_FAILED: + if (shows[i].pokemonTodayFailed.location > 0x58) + { + memset(&shows[i], 0, sizeof(TVShow)); + } + break; + } + } +} + +void DoTVShow(void) +{ + if (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active) + { + switch (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind) + { + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + DoTVShowDummiedOut(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTower(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_CONTEST_LIVE_UPDATES: + DoTVShowPokemonContestLiveUpdates(); + break; + case TVSHOW_BATTLE_UPDATE: + DoTVShowPokemonBattleUpdate(); + break; + case TVSHOW_3_CHEERS_FOR_POKEBLOCKS: + DoTVShow3CheersForPokeblocks(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; + case TVSHOW_TODAYS_RIVAL_TRAINER: + DoTVShowTodaysRivalTrainer(); + break; + case TVSHOW_TREND_WATCHER: + DoTVShowDewfordTrendWatcherNetwork(); + break; + case TVSHOW_TREASURE_INVESTIGATORS: + DoTVShowHoennTreasureInvestigators(); + break; + case TVSHOW_FIND_THAT_GAMER: + DoTVShowFindThatGamer(); + break; + case TVSHOW_BREAKING_NEWS: + DoTVShowBreakingNewsTV(); + break; + case TVSHOW_SECRET_BASE_VISIT: + DoTVShowSecretBaseVisit(); + break; + case TVSHOW_LOTTO_WINNER: + DoTVShowPokemonLotteryWinnerFlashReport(); + break; + case TVSHOW_BATTLE_SEMINAR: + DoTVShowThePokemonBattleSeminar(); + break; + case TVSHOW_FAN_CLUB_SPECIAL: + DoTVShowTrainerFanClubSpecial(); + break; + case TVSHOW_TRAINER_FAN_CLUB: + DoTVShowTrainerFanClub(); + break; + case TVSHOW_CUTIES: + DoTVShowSpotTheCuties(); + break; + case TVSHOW_FRONTIER: + DoTVShowPokemonNewsBattleFrontier(); + break; + case TVSHOW_NUMBER_ONE: + DoTVShowWhatsNo1InHoennToday(); + break; + case TVSHOW_SECRET_BASE_SECRETS: + DoTVShowSecretBaseSecrets(); + break; + case TVSHOW_SAFARI_FAN_CLUB: + DoTVShowSafariFanClub(); + break; + case TVSHOW_CONTEST_LIVE_UPDATES_2: + DoTVShowPokemonContestLiveUpdates2(); + break; + } + } +} + +void DoTVShowBravoTrainerPokemonProfile(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language); + CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory); + CopyContestRankToStringVar(2, show->bravoTrainer.contestRank); + if (!StringCompare(gSpeciesNames[show->bravoTrainer.species], show->bravoTrainer.pokemonNickname)) + sTVShowState = 8; + else + sTVShowState = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]); + TVShowConvertInternationalString(gStringVar2, show->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNameLanguage); + CopyContestCategoryToStringVar(2, show->bravoTrainer.contestCategory); + sTVShowState = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language); + if (show->bravoTrainer.contestResult == 0) // placed first + sTVShowState = 3; + else + sTVShowState = 4; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language); + CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]); + TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1); + sTVShowState = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language); + CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]); + TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1); + sTVShowState = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language); + CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory); + CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]); + if (show->bravoTrainer.move) + sTVShowState = 6; + else + sTVShowState = 7; + break; + case 6: + StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]); + StringCopy(gStringVar2, gMoveNames[show->bravoTrainer.move]); + CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]); + sTVShowState = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language); + StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainer.species]); + TVShowDone(); + break; + case 8: + StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]); + sTVShowState = 2; + break; + } + ShowFieldMessage(sTVBravoTrainerTextGroup[state]); +} + +void DoTVShowBravoTrainerBattleTower(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch(state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); + if (show->bravoTrainerTower.numFights >= 7) + sTVShowState = 1; + else + sTVShowState = 2; + break; + case 1: + if (show->bravoTrainerTower.btLevel == 50) + { + StringCopy(gStringVar1, gText_Lv50); + } + else + { + StringCopy(gStringVar1, gText_OpenLevel); + } + TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights); + if (show->bravoTrainerTower.wonTheChallenge == TRUE) + sTVShowState = 3; + else + sTVShowState = 4; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); + TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights + 1); + if (show->bravoTrainerTower.interviewResponse == 0) + sTVShowState = 5; + else + sTVShowState = 6; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); + if (show->bravoTrainerTower.interviewResponse == 0) + sTVShowState = 5; + else + sTVShowState = 6; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); + if (show->bravoTrainerTower.interviewResponse == 0) + sTVShowState = 5; + else + sTVShowState = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); + sTVShowState = 11; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); + sTVShowState = 11; + break; + case 7: + sTVShowState = 11; + break; + case 8: + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); + sTVShowState = 11; + break; + case 11: + CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); + if (show->bravoTrainerTower.interviewResponse == 0) + sTVShowState = 12; + else + sTVShowState = 13; + break; + case 12: + case 13: + CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); + TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); + TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); + sTVShowState = 14; + break; + case 14: + TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVBravoTrainerBattleTowerTextGroup[state]); +} + +void DoTVShowTodaysSmartShopper(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch(state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); + GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0); + if (show->smartshopperShow.itemAmounts[0] >= 255) + { + sTVShowState = 11; + } + else + { + sTVShowState = 1; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name); + TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0]); + sTVShowState += 1 + (Random() % 4); + break; + case 2: + case 4: + case 5: + if (show->smartshopperShow.itemIds[1] != ITEM_NONE) + { + sTVShowState = 6; + } + else + { + sTVShowState = 10; + } + break; + case 3: + TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0] + 1); + if (show->smartshopperShow.itemIds[1] != ITEM_NONE) + { + sTVShowState = 6; + } + else + { + sTVShowState = 10; + } + break; + case 6: + StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[1])->name); + TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[1]); + if (show->smartshopperShow.itemIds[2] != ITEM_NONE) + { + sTVShowState = 7; + } + else if (show->smartshopperShow.priceReduced == TRUE) + { + sTVShowState = 8; + } + else + { + sTVShowState = 9; + } + break; + case 7: + StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[2])->name); + TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[2]); + if (show->smartshopperShow.priceReduced == TRUE) + { + sTVShowState = 8; + } + else + { + sTVShowState = 9; + } + break; + case 8: + if (show->smartshopperShow.itemAmounts[0] >= 255) + { + sTVShowState = 12; + } + else + { + sTVShowState = 9; + } + break; + case 9: + sub_80EF40C(1, show); + TVShowDone(); + break; + case 10: + if (show->smartshopperShow.priceReduced == TRUE) + { + sTVShowState = 8; + } + else + { + sTVShowState = 9; + } + break; + case 11: + TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name); + if (show->smartshopperShow.priceReduced == TRUE) + { + sTVShowState = 8; + } + else + { + sTVShowState = 12; + } + break; + case 12: + TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); + TVShowDone(); + break; + } + ShowFieldMessage(sTVTodaysSmartShopperTextGroup[state]); +} + +void DoTVShowTheNameRaterShow(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language); + StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]); + TVShowConvertInternationalString(gStringVar3, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage); + sTVShowState = TV_GetNicknameSumMod8(show) + 1; + break; + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + if (show->nameRaterShow.random == 0) + { + sTVShowState = 9; + } + else if (show->nameRaterShow.random == 1) + { + sTVShowState = 10; + } + else if (show->nameRaterShow.random == 2) + { + sTVShowState = 11; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language); + if (show->nameRaterShow.random == 0) + { + sTVShowState = 9; + } + else if (show->nameRaterShow.random == 1) + { + sTVShowState = 10; + } + else if (show->nameRaterShow.random == 2) + { + sTVShowState = 11; + } + break; + case 9: + case 10: + case 11: + TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage); + TV_GetNicknameSubstring(1, 0, 0, 1, 0, show); + TV_GetNicknameSubstring(2, 1, 0, 1, 0, show); + sTVShowState = 12; + break; + case 13: + TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language); + TV_GetNicknameSubstring(1, 0, 2, 0, 0, show); + TV_GetNicknameSubstring(2, 0, 3, 1, 0, show); + sTVShowState = 14; + break; + case 14: + TV_GetNicknameSubstring(1, 0, 2, 1, 0, show); + TV_GetNicknameSubstring(2, 0, 3, 0, 0, show); + sTVShowState = 18; + break; + case 15: + TV_GetNicknameSubstring(0, 0, 2, 1, 0, show); + StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]); + TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.species, show); + sTVShowState = 16; + break; + case 16: + TV_GetNicknameSubstring(0, 0, 2, 2, show->nameRaterShow.species, show); + TV_GetNicknameSubstring(2, 0, 3, 1, 0, show); + sTVShowState = 17; + break; + case 17: + TV_GetNicknameSubstring(0, 0, 2, 1, 0, show); + StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.randomSpecies]); + TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.randomSpecies, show); + sTVShowState = 18; + break; + case 12: + state = 18; + sTVShowState = 18; + case 18: + TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage); + TVShowDone(); + break; + } + ShowFieldMessage(sTVNameRaterTextGroup[state]); +} + +void DoTVShowPokemonTodaySuccessfulCapture(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2); + if (show->pokemonToday.ball == ITEM_MASTER_BALL) + { + sTVShowState = 5; + } + else + { + sTVShowState = 1; + } + break; + case 1: + sTVShowState = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(show->pokemonToday.ball)->name); + TV_PrintIntToStringVar(2, show->pokemonToday.nBallsUsed); + if (show->pokemonToday.nBallsUsed < 4) + { + sTVShowState = 3; + } + else + { + sTVShowState = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2); + sTVShowState = 6; + break; + case 4: + sTVShowState = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]); + sTVShowState = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2); + sTVShowState += 1 + (Random() % 4); + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2); + TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(2, show->pokemonToday.species); + sTVShowState = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2); + sTVShowState = 11; + break; + case 11: + TVShowDone(); + break; + } + ShowFieldMessage(sTVPokemonTodaySuccessfulTextGroup[state]); +} + +void DoTVShowPokemonTodayFailedCapture(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonTodayFailed.species]); + sTVShowState = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language); + GetMapName(gStringVar2, show->pokemonTodayFailed.location, 0); + StringCopy(gStringVar3, gSpeciesNames[show->pokemonTodayFailed.species2]); + if (show->pokemonTodayFailed.outcome == 1) + { + sTVShowState = 3; + } + else + { + sTVShowState = 2; + } + break; + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language); + TV_PrintIntToStringVar(1, show->pokemonTodayFailed.nBallsUsed); + if (Random() % 3 == 0) + { + sTVShowState = 5; + } + else + { + sTVShowState = 4; + } + break; + case 4: + case 5: + TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language); + sTVShowState = 6; + break; + case 6: + TVShowDone(); + break; + } + ShowFieldMessage(sTVPokemonTodayFailedTextGroup[state]); +} + +void DoTVShowPokemonFanClubLetter(void) +{ + TVShow *show; + u8 state; + u16 rval; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->fanclubLetter.playerName, show->fanclubLetter.language); + StringCopy(gStringVar2, gSpeciesNames[show->fanclubLetter.species]); + sTVShowState = 50; + break; + case 1: + rval = (Random() % 4) + 1; + if (rval == 1) + sTVShowState = 2; + else + sTVShowState = rval + 2; + break; + case 2: + sTVShowState = 51; + break; + case 3: + sTVShowState += (Random() % 3) + 1; + break; + case 4: + case 5: + case 6: + TV_FanClubLetter_RandomWordToStringVar3(show); + sTVShowState = 7; + break; + case 7: + rval = (Random() % 0x1f) + 0x46; + TV_PrintIntToStringVar(2, rval); + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2); + ShowFieldMessage(gStringVar4); + sTVShowState = 1; + return; + case 51: + ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2); + ShowFieldMessage(gStringVar4); + sTVShowState = 3; + return; + } + ShowFieldMessage(sTVFanClubTextGroup[state]); +} + +void DoTVShowRecentHappenings(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->recentHappenings.playerName, show->recentHappenings.language); + TV_FanClubLetter_RandomWordToStringVar3(show); + sTVShowState = 50; + break; + case 1: + sTVShowState += 1 + (Random() % 3); + break; + case 2: + case 3: + case 4: + sTVShowState = 5; + break; + case 5: + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, show->recentHappenings.words, 2, 2); + ShowFieldMessage(gStringVar4); + sTVShowState = 1; + return; + } + ShowFieldMessage(sTVRecentHappeninssTextGroup[state]); +} + +void DoTVShowPokemonFanClubOpinions(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]); + TVShowConvertInternationalString(gStringVar3, show->fanclubOpinions.nickname, show->fanclubOpinions.pokemonNameLanguage); + sTVShowState = show->fanclubOpinions.questionAsked + 1; + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]); + CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[0]); + sTVShowState = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language); + CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[1]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVFanClubOpinionsTextGroup[state]); +} + +void DoTVShowDummiedOut(void) +{ + +} + +void DoTVShowPokemonNewsMassOutbreak(void) +{ + TVShow *show; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + GetMapName(gStringVar1, show->massOutbreak.locationMapNum, 0); + StringCopy(gStringVar2, gSpeciesNames[show->massOutbreak.species]); + TVShowDone(); + StartMassOutbreak(); + ShowFieldMessage(sTVMassOutbreakTextGroup[sTVShowState]); +} + +void DoTVShowPokemonContestLiveUpdates(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + sub_818E868(gStringVar1, show->contestLiveUpdates.category); + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language); + if (show->contestLiveUpdates.round1Rank == show->contestLiveUpdates.round2Rank) + { + if (show->contestLiveUpdates.round1Rank == 0) + { + sTVShowState = 1; + } + else + { + sTVShowState = 3; + } + } + else if (show->contestLiveUpdates.round1Rank > show->contestLiveUpdates.round2Rank) + { + sTVShowState = 2; + } + else + { + sTVShowState = 4; + } + break; + case 1: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + switch (show->contestLiveUpdates.appealFlags1) + { + case 0x01: + sTVShowState = 8; + break; + case 0x02: + sTVShowState = 5; + break; + case 0x04: + sTVShowState = 14; + break; + case 0x08: + sTVShowState = 7; + break; + case 0x10: + sTVShowState = 6; + break; + case 0x20: + sTVShowState = 20; + break; + case 0x40: + sTVShowState = 21; + break; + case 0x80: + sTVShowState = 22; + break; + } + break; + case 2: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + switch (show->contestLiveUpdates.appealFlags1) + { + case 0x01: + sTVShowState = 8; + break; + case 0x02: + sTVShowState = 5; + break; + case 0x04: + sTVShowState = 14; + break; + case 0x08: + sTVShowState = 7; + break; + case 0x10: + sTVShowState = 6; + break; + case 0x20: + sTVShowState = 20; + break; + case 0x40: + sTVShowState = 21; + break; + case 0x80: + sTVShowState = 22; + break; + } + break; + case 3: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language); + switch (show->contestLiveUpdates.appealFlags1) + { + case 0x01: + sTVShowState = 8; + break; + case 0x02: + sTVShowState = 5; + break; + case 0x04: + sTVShowState = 14; + break; + case 0x08: + sTVShowState = 7; + break; + case 0x10: + sTVShowState = 6; + break; + case 0x20: + sTVShowState = 20; + break; + case 0x40: + sTVShowState = 21; + break; + case 0x80: + sTVShowState = 22; + break; + } + break; + case 4: + switch (show->contestLiveUpdates.category) + { + case 0: + StringCopy(gStringVar1, gText_Cool); + break; + case 1: + StringCopy(gStringVar1, gText_Beauty); + break; + case 2: + StringCopy(gStringVar1, gText_Cute); + break; + case 3: + StringCopy(gStringVar1, gText_Smart); + break; + case 4: + StringCopy(gStringVar1, gText_Tough); + break; + } + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + switch (show->contestLiveUpdates.appealFlags1) + { + case 0x01: + sTVShowState = 8; + break; + case 0x02: + sTVShowState = 5; + break; + case 0x04: + sTVShowState = 14; + break; + case 0x08: + sTVShowState = 7; + break; + case 0x10: + sTVShowState = 6; + break; + case 0x20: + sTVShowState = 20; + break; + case 0x40: + sTVShowState = 21; + break; + case 0x80: + sTVShowState = 22; + break; + } + break; + case 5: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 6: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 7: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 8: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + switch (show->contestLiveUpdates.category) + { + case 0: + sTVShowState = 9; + break; + case 1: + sTVShowState = 10; + break; + case 2: + sTVShowState = 11; + break; + case 3: + sTVShowState = 12; + break; + case 4: + sTVShowState = 13; + break; + } + break; + case 9: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 10: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 11: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 12: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 13: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 14: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + switch (show->contestLiveUpdates.category) + { + case 0: + sTVShowState = 15; + break; + case 1: + sTVShowState = 16; + break; + case 2: + sTVShowState = 17; + break; + case 3: + sTVShowState = 18; + break; + case 4: + sTVShowState = 19; + break; + } + break; + case 15: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 16: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 17: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 18: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 19: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 20: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 21: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + sTVShowState = 23; + break; + case 22: + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + StringCopy(gStringVar3, gMoveNames[show->contestLiveUpdates.move]); + sTVShowState = 23; + break; + case 23: + StringCopy(gStringVar1, gSpeciesNames[show->contestLiveUpdates.species]); + TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage); + StringCopy(gStringVar3, gSpeciesNames[show->contestLiveUpdates.winningSpecies]); + switch (show->contestLiveUpdates.appealFlags2) + { + case 0x01: + sTVShowState = 31; + break; + case 0x02: + sTVShowState = 30; + break; + case 0x04: + sTVShowState = 29; + break; + case 0x08: + sTVShowState = 28; + break; + case 0x10: + sTVShowState = 27; + break; + case 0x20: + sTVShowState = 26; + break; + case 0x40: + sTVShowState = 25; + break; + case 0x80: + sTVShowState = 24; + break; + } + break; + case 24: + StringCopy(gStringVar1, gSpeciesNames[show->contestLiveUpdates.winningSpecies]); + sTVShowState = 32; + break; + case 25: + TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage); + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.winningSpecies]); + sTVShowState = 32; + break; + case 28: + sTVShowState = 32; + break; + case 29: + TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language); + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage); + sTVShowState = 32; + break; + case 26: + case 27: + case 30: + case 31: + TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage); + sTVShowState = 32; + break; + case 32: + + TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language); + StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVContestLiveUpdatesTextGroup[state]); +} + +void DoTVShowPokemonBattleUpdate(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + switch (show->battleUpdate.battleType) + { + case 0: + case 1: + sTVShowState = 1; + break; + case 2: + sTVShowState = 5; + break; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language); + TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage); + if (show->battleUpdate.battleType == 0) + { + StringCopy(gStringVar3, gText_Single); + } + else + { + StringCopy(gStringVar3, gText_Double); + } + sTVShowState = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language); + StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]); + StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]); + sTVShowState = 3; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage); + StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species]); + sTVShowState = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language); + TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage); + TVShowDone(); + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language); + TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage); + sTVShowState = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language); + StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]); + StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]); + sTVShowState = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language); + TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage); + StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.species]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVPokemonBattleUpdateTextGroup[state]); +} + +void DoTVShow3CheersForPokeblocks(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->threeCheers.playerName, show->threeCheers.language); + if (show->threeCheers.sheen > 20) + { + sTVShowState = 1; + } + else + { + sTVShowState = 3; + } + break; + case 1: + switch (show->threeCheers.flavor) + { + case 0: + StringCopy(gStringVar1, gText_Spicy2); + break; + case 1: + StringCopy(gStringVar1, gText_Dry2); + break; + case 2: + StringCopy(gStringVar1, gText_Sweet2); + break; + case 3: + StringCopy(gStringVar1, gText_Bitter2); + break; + case 4: + StringCopy(gStringVar1, gText_Sour2); + break; + } + if (show->threeCheers.sheen > 24) + { + StringCopy(gStringVar2, gText_Excellent); + } else if (show->threeCheers.sheen > 22) + { + StringCopy(gStringVar2, gText_VeryGood); + } + else + { + StringCopy(gStringVar2, gText_Good); + } + TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language); + sTVShowState = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage); + sTVShowState = 5; + break; + case 3: + switch (show->threeCheers.flavor) + { + case 0: + StringCopy(gStringVar1, gText_Spicy2); + break; + case 1: + StringCopy(gStringVar1, gText_Dry2); + break; + case 2: + StringCopy(gStringVar1, gText_Sweet2); + break; + case 3: + StringCopy(gStringVar1, gText_Bitter2); + break; + case 4: + StringCopy(gStringVar1, gText_Sour2); + break; + } + if (show->threeCheers.sheen > 16) + { + StringCopy(gStringVar2, gText_SoSo); + } else if (show->threeCheers.sheen > 13) + { + StringCopy(gStringVar2, gText_Bad); + } + else + { + StringCopy(gStringVar2, gText_TheWorst); + } + TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language); + sTVShowState = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage); + TVShowConvertInternationalString(gStringVar2, show->threeCheers.playerName, show->threeCheers.language); + sTVShowState = 5; + break; + case 5: + TVShowDone(); + break; + } + ShowFieldMessage(sTV3CheersForPokeblocksTextGroup[state]); +} + +void DoTVShowInSearchOfTrainers(void) +{ + u8 state; + + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + GetMapName(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.mapnum, 0); + if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 1) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 1: + sTVShowState = 2; + break; + case 2: + if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn) + { + sTVShowState = 4; + } + else if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall) + { + sTVShowState = 5; + } + else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem) + { + sTVShowState = 6; + } + else if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon) + { + sTVShowState = 7; + } + else + { + sTVShowState = 3; + } + break; + case 3: + StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1Ptr->gabbyAndTyData.lastMove]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]); + sTVShowState = 8; + break; + case 4: + case 5: + case 6: + case 7: + sTVShowState = 8; + break; + case 8: + CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]); + StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]); + gScriptResult = TRUE; + sTVShowState = 0; + TakeTVShowInSearchOfTrainersOffTheAir(); + break; + } + ShowFieldMessage(sTVInSearchOfTrainersTextGroup[state]); +} + +void DoTVShowPokemonAngler(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + if (show->pokemonAngler.nBites < show->pokemonAngler.nFails) + { + sTVShowState = 0; + } + else + { + sTVShowState = 1; + } + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]); + TV_PrintIntToStringVar(2, show->pokemonAngler.nFails); + TVShowDone(); + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]); + TV_PrintIntToStringVar(2, show->pokemonAngler.nBites); + TVShowDone(); + break; + } + ShowFieldMessage(sTVPokemonAnslerTextGroup[state]); +} + +void DoTVShowTheWorldOfMasters(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language); + TV_PrintIntToStringVar(1, show->worldOfMasters.steps); + TV_PrintIntToStringVar(2, show->worldOfMasters.numPokeCaught); + sTVShowState = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[show->worldOfMasters.species]); + sTVShowState = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language); + GetMapName(gStringVar2, show->worldOfMasters.location, 0); + StringCopy(gStringVar3, gSpeciesNames[show->worldOfMasters.caughtPoke]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVWorldOfMastersTextGroup[state]); +} + +void DoTVShowTodaysRivalTrainer(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + switch (show->rivalTrainer.location) + { + default: + sTVShowState = 7; + break; + case REGION_MAP_SECRET_BASE: + sTVShowState = 8; + break; + case REGION_MAP_NONE: + switch (show->rivalTrainer.mapDataId) + { + case 0x115 ... 0x117: + sTVShowState = 10; + break; + default: + sTVShowState = 9; + break; + } + break; + } + break; + case 7: + TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language); + TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount); + GetMapName(gStringVar3, show->rivalTrainer.location, 0); + if (show->rivalTrainer.badgeCount != 0) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 8: + TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language); + TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount); + if (show->rivalTrainer.badgeCount != 0) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 9: + TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language); + TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount); + if (show->rivalTrainer.badgeCount != 0) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 10: + TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language); + TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount); + if (show->rivalTrainer.badgeCount != 0) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 1: + TV_PrintIntToStringVar(0, show->rivalTrainer.badgeCount); + if (FlagGet(CODE_FLAGS + 0x48)) + { + if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols) + { + sTVShowState = 4; + } + else + { + sTVShowState = 3; + } + } + else + { + sTVShowState = 6; + } + break; + case 2: + if (FlagGet(CODE_FLAGS + 0x48)) + { + if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols) + { + sTVShowState = 4; + } + else + { + sTVShowState = 3; + } + } + else + { + sTVShowState = 6; + } + break; + case 3: + if (show->rivalTrainer.battlePoints == 0) + { + sTVShowState = 6; + } + else + { + sTVShowState = 5; + } + break; + case 4: + TV_PrintIntToStringVar(0, show->rivalTrainer.nGoldSymbols); + TV_PrintIntToStringVar(1, show->rivalTrainer.nSilverSymbols); + if (show->rivalTrainer.battlePoints == 0) + { + sTVShowState = 6; + } + else + { + sTVShowState = 5; + } + break; + case 5: + TV_PrintIntToStringVar(0, show->rivalTrainer.battlePoints); + sTVShowState = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language); + TVShowDone(); + } + ShowFieldMessage(sTVTodaysRivalTrainerTextGroup[state]); +} + +void DoTVShowDewfordTrendWatcherNetwork(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]); + CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]); + if (show->trendWatcher.gender == MALE) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 1: + case 2: + CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]); + CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]); + TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language); + sTVShowState = 3; + break; + case 3: + CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]); + CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]); + if (show->trendWatcher.gender == MALE) + { + sTVShowState = 4; + } + else + { + sTVShowState = 5; + } + break; + case 4: + case 5: + CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]); + CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]); + TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language); + sTVShowState = 6; + break; + case 6: + CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]); + CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]); + TVShowDone(); + } + ShowFieldMessage(sTVDewfordTrendWatcherNetworkTextGroup[state]); +} + +void DoTVShowHoennTreasureInvestigators(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); + if (show->treasureInvestigators.location == REGION_MAP_NONE) + { + switch (show->treasureInvestigators.mapDataId) + { + case 0x115 ... 0x117: + sTVShowState = 2; + break; + default: + sTVShowState = 1; + break; + } + } + else + { + sTVShowState = 1; + } + break; + case 1: + StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); + TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language); + GetMapName(gStringVar3, show->treasureInvestigators.location, 0); + TVShowDone(); + break; + case 2: + StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); + TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language); + TVShowDone(); + break; + } + ShowFieldMessage(sTVHoennTreasureInvestisatorsTextGroup[state]); +} + +void DoTVShowFindThatGamer(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language); + switch (show->findThatGamer.whichGame) + { + case 0: + StringCopy(gStringVar2, gText_Slots); + break; + case 1: + StringCopy(gStringVar2, gText_Roulette); + break; + } + if (show->findThatGamer.won == TRUE) + { + sTVShowState = 1; + } + else + { + sTVShowState = 2; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language); + switch (show->findThatGamer.whichGame) + { + case 0: + StringCopy(gStringVar2, gText_Slots); + break; + case 1: + StringCopy(gStringVar2, gText_Roulette); + break; + } + TV_PrintIntToStringVar(2, show->findThatGamer.nCoins); + TVShowDone(); break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language); + switch (show->findThatGamer.whichGame) + { + case 0: + StringCopy(gStringVar2, gText_Slots); + break; + case 1: + StringCopy(gStringVar2, gText_Roulette); + break; + } + TV_PrintIntToStringVar(2, show->findThatGamer.nCoins); + sTVShowState = 3; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language); + switch (show->findThatGamer.whichGame) + { + case 0: + StringCopy(gStringVar2, gText_Roulette); + break; + case 1: + StringCopy(gStringVar2, gText_Slots); + break; + } + TVShowDone(); + break; + } + ShowFieldMessage(sTVFindThatGamerTextGroup[state]); +} + +void DoTVShowBreakingNewsTV(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + if (show->breakingNews.outcome == 0) + { + sTVShowState = 1; + } + else + { + sTVShowState = 5; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]); + GetMapName(gStringVar3, show->breakingNews.location, 0); + sTVShowState = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]); + StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]); + sTVShowState = 3; + break; + case 3: + TV_PrintIntToStringVar(0, show->breakingNews.balls); + StringCopy(gStringVar2, ItemId_GetItem(show->breakingNews.caughtMonBall)->name); + sTVShowState = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + GetMapName(gStringVar2, show->breakingNews.location, 0); + TVShowDone(); + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]); + GetMapName(gStringVar3, show->breakingNews.location, 0); + sTVShowState = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]); + StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]); + switch (show->breakingNews.outcome) + { + case 1: + if (show->breakingNews.lastUsedMove == MOVE_NONE) + { + sTVShowState = 12; + } + else + { + sTVShowState = 7; + } + break; + case 2: + sTVShowState = 9; + break; + case 3: + sTVShowState = 10; + break; + } + break; + case 7: + StringCopy(gStringVar1, gMoveNames[show->breakingNews.lastUsedMove]); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.poke1Species]); + sTVShowState = 8; + break; + case 12: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]); + StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]); + sTVShowState = 8; + break; + case 8: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + GetMapName(gStringVar2, show->breakingNews.location, 0); + sTVShowState = 11; + break; + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]); + GetMapName(gStringVar3, show->breakingNews.location, 0); + sTVShowState = 11; + break; + case 11: + TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language); + TVShowDone(); + break; + } + ShowFieldMessage(sTVBreakinsNewsTextGroup[state]); +} + +void DoTVShowSecretBaseVisit(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language); + if (show->secretBaseVisit.nDecorations == 0) + { + sTVShowState = 2; + } + else + { + sTVShowState = 1; + } + break; + case 1: + StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[0]].name); + if (show->secretBaseVisit.nDecorations == 1) + { + sTVShowState = 4; + } + else + { + sTVShowState = 3; + } + break; + case 3: + StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[1]].name); + switch (show->secretBaseVisit.nDecorations) + { + case 2: + sTVShowState = 7; + break; + case 3: + sTVShowState = 6; + break; + case 4: + sTVShowState = 5; + break; + } + break; + case 5: + StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name); + StringCopy(gStringVar3, gDecorations[show->secretBaseVisit.decorations[3]].name); + sTVShowState = 8; + break; + case 6: + StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name); + sTVShowState = 8; + break; + case 2: + case 4: + case 7: + sTVShowState = 8; + break; + case 8: + TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language); + if (show->secretBaseVisit.avgLevel < 25) + { + sTVShowState = 12; + } + else if (show->secretBaseVisit.avgLevel < 50) + { + sTVShowState = 11; + } + else if (show->secretBaseVisit.avgLevel < 70) + { + sTVShowState = 10; + } + else + { + sTVShowState = 9; + } + break; + case 9: + case 10: + case 11: + case 12: + TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language); + StringCopy(gStringVar2, gSpeciesNames[show->secretBaseVisit.species]); + StringCopy(gStringVar3, gMoveNames[show->secretBaseVisit.move]); + sTVShowState = 13; + break; + case 13: + TVShowDone(); + break; + } + ShowFieldMessage(sTVSecretBaseVisitTextGroup[state]); +} + +void DoTVShowPokemonLotteryWinnerFlashReport(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + TVShowConvertInternationalString(gStringVar1, show->lottoWinner.playerName, show->lottoWinner.language); + if (show->lottoWinner.whichPrize == 0) + { + StringCopy(gStringVar2, gText_Jackpot); + } + else if (show->lottoWinner.whichPrize == 1) + { + StringCopy(gStringVar2, gText_First); + } + else if (show->lottoWinner.whichPrize == 2) + { + StringCopy(gStringVar2, gText_Second); + } + else + { + StringCopy(gStringVar2, gText_Third); + } + StringCopy(gStringVar3, ItemId_GetItem(show->lottoWinner.item)->name); + TVShowDone(); + ShowFieldMessage(sTVPokemonLotteryWinnerFlashReportTextGroup[state]); +} + +void DoTVShowThePokemonBattleSeminar(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language); + StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.species]); + StringCopy(gStringVar3, gSpeciesNames[show->battleSeminar.foeSpecies]); + sTVShowState = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language); + StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.foeSpecies]); + StringCopy(gStringVar3, gMoveNames[show->battleSeminar.move]); + sTVShowState = 2; + break; + case 2: + StringCopy(gStringVar1, gSpeciesNames[show->battleSeminar.species]); + switch (show->battleSeminar.nOtherMoves) + { + case 1: + sTVShowState = 5; + break; + case 2: + sTVShowState = 4; + break; + case 3: + sTVShowState = 3; + break; + default: + sTVShowState = 6; + break; + } + break; + case 3: + StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]); + StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]); + StringCopy(gStringVar3, gMoveNames[show->battleSeminar.otherMoves[2]]); + sTVShowState = 6; + break; + case 4: + StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]); + StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]); + sTVShowState = 6; + break; + case 5: + StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[0]]); + sTVShowState = 6; + break; + case 6: + StringCopy(gStringVar1, gMoveNames[show->battleSeminar.betterMove]); + StringCopy(gStringVar2, gMoveNames[show->battleSeminar.move]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVThePokemonBattleSeminarTextGroup[state]); +} + +void DoTVShowTrainerFanClubSpecial(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language); + CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]); + if (show->fanClubSpecial.score >= 90) + { + sTVShowState = 1; + } + else if (show->fanClubSpecial.score >= 70) + { + sTVShowState = 2; + } + else if (show->fanClubSpecial.score >= 30) + { + sTVShowState = 3; + } + else + { + sTVShowState = 4; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language); + TV_PrintIntToStringVar(2, show->fanClubSpecial.score); + sTVShowState = 5; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language); + TV_PrintIntToStringVar(2, show->fanClubSpecial.score); + sTVShowState = 5; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language); + TV_PrintIntToStringVar(2, show->fanClubSpecial.score); + sTVShowState = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language); + TV_PrintIntToStringVar(2, show->fanClubSpecial.score); + sTVShowState = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language); + CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]); + TVShowDone(); + break; + } + ShowFieldMessage(sTVTrainerFanClubSpecialTextGroup[state]); +} + +void DoTVShowTrainerFanClub(void) +{ + TVShow *show; + u8 state; + u32 playerId; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language); + playerId = ((show->common.trainerIdHi << 8) + show->common.trainerIdLo); + switch (playerId % 10) + { + case 0: + sTVShowState = 1; + break; + case 1: + sTVShowState = 2; + break; + case 2: + sTVShowState = 3; + break; + case 3: + sTVShowState = 4; + break; + case 4: + sTVShowState = 5; + break; + case 5: + sTVShowState = 6; + break; + case 6: + sTVShowState = 7; + break; + case 7: + sTVShowState = 8; + break; + case 8: + sTVShowState = 9; + break; + case 9: + sTVShowState = 10; + break; + } + break; + case 1: + sTVShowState = 11; + break; + case 2: + sTVShowState = 11; + break; + case 3: + sTVShowState = 11; + break; + case 4: + sTVShowState = 11; + break; + case 5: + sTVShowState = 11; + break; + case 6: + sTVShowState = 11; + break; + case 7: + sTVShowState = 11; + break; + case 8: + sTVShowState = 11; + break; + case 9: + sTVShowState = 11; + break; + case 10: + sTVShowState = 11; + break; + case 11: + TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language); + CopyEasyChatWord(gStringVar2, show->trainerFanClub.words[0]); + CopyEasyChatWord(gStringVar3, show->trainerFanClub.words[1]); + TVShowDone(); + } + ShowFieldMessage(sTVTrainerFanClubTextGroup[state]); +} + +void DoTVShowSpotTheCuties(void) +{ + TVShow *show; + u8 state; + u32 playerId; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language); + TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage); + if (show->cuties.nRibbons < 10) + { + sTVShowState = 1; + } + else if (show->cuties.nRibbons < 20) + { + sTVShowState = 2; + } + else + { + sTVShowState = 3; + } + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language); + TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage); + TV_PrintIntToStringVar(2, show->cuties.nRibbons); + sTVShowState = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage); + switch (show->cuties.selectedRibbon) + { + case 0: + sTVShowState = 5; + break; + case 1: + case 2: + case 3: + case 4: + sTVShowState = 6; + break; + case 5: + case 6: + case 7: + case 8: + sTVShowState = 7; + break; + case 9: + case 10: + case 11: + case 12: + sTVShowState = 8; + break; + case 13: + case 14: + case 15: + case 16: + sTVShowState = 9; + break; + case 17: + case 18: + case 19: + case 20: + sTVShowState = 10; + break; + case 21: + sTVShowState = 11; + break; + case 22: + sTVShowState = 12; + break; + case 23: + sTVShowState = 13; + break; + case 24: + sTVShowState = 14; + break; + } + break; + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage); + sTVShowState = 15; + break; + case 15: + TVShowDone(); + } + ShowFieldMessage(sTVCutiesTextGroup[state]); +} + +void DoTVShowPokemonNewsBattleFrontier(void) +{ + TVShow *show; + u8 state; + u32 playerId; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + switch (show->frontier.facility) + { + case 1: + sTVShowState = 1; + break; + case 2: + sTVShowState = 2; + break; + case 3: + sTVShowState = 3; + break; + case 4: + sTVShowState = 4; + break; + case 5: + sTVShowState = 5; + break; + case 6: + sTVShowState = 6; + break; + case 7: + sTVShowState = 7; + break; + case 8: + sTVShowState = 8; + break; + case 9: + sTVShowState = 9; + break; + case 10: + sTVShowState = 10; + break; + case 11: + sTVShowState = 11; + break; + case 12: + sTVShowState = 12; + break; + case 13: + sTVShowState = 13; + break; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 16; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 15; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 15; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 8: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 9: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 10: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 11: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 12: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 13: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TV_PrintIntToStringVar(1, show->frontier.winStreak); + sTVShowState = 14; + break; + case 14: + StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]); + StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]); + StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]); + sTVShowState = 18; + break; + case 15: + StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]); + StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]); + sTVShowState = 18; + break; + case 16: + StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]); + StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]); + StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]); + sTVShowState = 17; + break; + case 17: + StringCopy(gStringVar1, gSpeciesNames[show->frontier.species4]); + sTVShowState = 18; + break; + case 18: + TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language); + TVShowDone(); + break; + } + ShowFieldMessage(sTVPokemonNewsBattleFrontierTextGroup[state]); +} + +void DoTVShowWhatsNo1InHoennToday(void) +{ + TVShow *show; + u8 state; + u32 playerId; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + switch (show->numberOne.actionIdx) + { + case 0: + sTVShowState = 1; + break; + case 1: + sTVShowState = 2; + break; + case 2: + sTVShowState = 3; + break; + case 3: + sTVShowState = 4; + break; + case 4: + sTVShowState = 5; + break; + case 5: + sTVShowState = 6; + break; + case 6: + sTVShowState = 7; + break; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TV_PrintIntToStringVar(1, show->numberOne.count); + sTVShowState = 8; + break; + case 8: + TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language); + TVShowDone(); + break; + } + ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]); +} + +u8 sub_80F5180(TVShow *show) +{ + u8 i; + u8 tot; + + for (i = 0, tot = 0; i < 32; i ++) + { + if ((show->secretBaseSecrets.flags >> i) & 1) + { + tot ++; + } + } + return tot; +} + +u8 sub_80F51AC(TVShow *show, u8 a1) +{ + u8 i; + u8 tot; + + for (i = 0, tot = 0; i < 32; i ++) + { + if ((show->secretBaseSecrets.flags >> i) & 1) + { + if (tot == a1) + { + return sTVSecretBaseSecretsStateLookup[i]; + } + tot ++; + } + } + return 0; +} + +void DoTVShowSecretBaseSecrets(void) +{ + TVShow *show; + u8 state; + u8 bitCount; + u16 i; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + bitCount = sub_80F5180(show); + if (bitCount == 0) + { + sTVShowState = 8; + } + else + { + show->secretBaseSecrets.savedState = 1; + sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount; + sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]); + } + break; + case 1: + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + bitCount = sub_80F5180(show); + switch (bitCount) + { + case 1: + sTVShowState = 9; + break; + case 2: + show->secretBaseSecrets.savedState = 2; + if (sTVSecretBaseSecretsRandomValues[0] == 0) + { + sTVShowState = sub_80F51AC(show, 1); + } + else + { + sTVShowState = sub_80F51AC(show, 0); + } + break; + default: + for (i = 0; i < 0xFFFF; i ++) + { + sTVSecretBaseSecretsRandomValues[1] = Random() % bitCount; + if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0]) + { + break; + } + } + show->secretBaseSecrets.savedState = 2; + sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]); + break; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + bitCount = sub_80F5180(show); + if (bitCount == 2) + { + sTVShowState = 9; + } + else + { + for (i = 0; i < 0xFFFF; i ++) + { + sTVSecretBaseSecretsRandomValues[2] = Random() % bitCount; + if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1]) + { + break; + } + } + show->secretBaseSecrets.savedState = 3; + sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]); + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + TV_PrintIntToStringVar(2, show->secretBaseSecrets.stepsInBase); + if (show->secretBaseSecrets.stepsInBase <= 30) + { + sTVShowState = 4; + } + else if (show->secretBaseSecrets.stepsInBase <= 100) + { + sTVShowState = 5; + } + else + { + sTVShowState = 6; + } + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + sTVShowState = 7; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + sTVShowState = 7; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + sTVShowState = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); + TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); + TVShowDone(); + break; + case 8: + sTVShowState = 3; + break; + case 9: + sTVShowState = 3; + break; + case 10: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 11: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 12: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 13: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 14: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 15: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 16: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 17: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 18: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 19: + StringCopy(gStringVar2, ItemId_GetItem(show->secretBaseSecrets.item)->name); + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 20: + if (show->common.trainerIdLo & 1) + { + sTVShowState = 22; + } + else + { + sTVShowState = 21; + } + break; + case 21: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 22: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 23: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 24: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 25: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 26: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 27: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 28: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 29: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 30: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 31: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 32: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 33: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 34: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 35: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 36: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 37: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 38: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 39: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 40: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 41: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 42: + sTVShowState = show->secretBaseSecrets.savedState; + break; + case 43: + sTVShowState = show->secretBaseSecrets.savedState; + break; + } + ShowFieldMessage(sTVSecretBaseSecretsTextGroup[state]); +} + +void DoTVShowSafariFanClub(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + if (show->safariFanClub.nMonsCaught == 0) + { + sTVShowState = 6; + } + else if (show->safariFanClub.nMonsCaught < 4) + { + sTVShowState = 5; + } + else + { + sTVShowState = 1; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language); + TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught); + if (show->safariFanClub.nPkblkUsed == 0) + { + sTVShowState = 3; + } + else + { + sTVShowState = 2; + } + break; + case 2: + TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed); + sTVShowState = 4; + break; + case 3: + sTVShowState = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language); + sTVShowState = 10; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language); + TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught); + if (show->safariFanClub.nPkblkUsed == 0) + { + sTVShowState = 8; + } + else + { + sTVShowState = 7; + } + break; + case 6: + TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language); + if (show->safariFanClub.nPkblkUsed == 0) + { + sTVShowState = 8; + } + else + { + sTVShowState = 7; + } + break; + case 7: + TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed); + sTVShowState = 9; + break; + case 8: + sTVShowState = 9; + break; + case 9: + TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language); + sTVShowState = 10; + break; + case 10: + TVShowDone(); + } + ShowFieldMessage(sTVSafariFanClubTextGroup[state]); +} + +void DoTVShowPokemonContestLiveUpdates2(void) +{ + TVShow *show; + u8 state; + + show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; + gScriptResult = FALSE; + state = sTVShowState; + switch (state) + { + case 0: + sub_818E868(gStringVar1, show->contestLiveUpdates2.contestCategory); + if (show->contestLiveUpdates2.pokeblockState == 1) + { + sTVShowState = 1; + } + else if (show->contestLiveUpdates2.pokeblockState == 0) + { + sTVShowState = 2; + } + else + { + sTVShowState = 3; + } + break; + case 1: + case 2: + TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates2.playerName, show->contestLiveUpdates2.language); + case 3: + TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates2.nickname, show->contestLiveUpdates2.pokemonNameLanguage); + TVShowDone(); + break; + } + ShowFieldMessage(sTVPokemonContestLiveUpdates2TextGroup[state]); +} + +void TVShowDone(void) +{ + gScriptResult = TRUE; + sTVShowState = 0; + gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active = FALSE; +} + +void ResetTVShowState(void) +{ + sTVShowState = 0; +} diff --git a/sym_bss.txt b/sym_bss.txt index f32300b15b..db7495182e 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -25,16 +25,9 @@ .include "src/fldeff_cut.o" .include "src/script_menu.o" .include "src/record_mixing.o" + .include "src/tv.o" -gUnknown_03001174: @ 3001174 - .space 0x1 - -gUnknown_03001175: @ 3001175 - .space 0x1 - -gUnknown_03001176: @ 3001176 - .space 0x2 - + .space 1 @ TODO: define this u32 in mauville_old_man gUnknown_03001178: @ 3001178 .space 0x4 diff --git a/sym_common.txt b/sym_common.txt index 7ba414cab2..acc6cf8623 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -210,13 +210,7 @@ gBattleMainFunc: @ 3005D04 .space 0xC gBattleResults: @ 3005D10 - .space 0x2A - -gUnknown_03005D3A: @ 3005D3A - .space 0xC - -gUnknown_03005D46: @ 3005D46 - .space 0xE + .space 0x44 gLeveledUpInBattle: @ 3005D54 .space 0xC @@ -326,17 +320,7 @@ gUnknown_030060B4: @ 30060B4 gUnknown_030060B8: @ 30060B8 .space 0x4 -gUnknown_030060BC: @ 30060BC - .space 0x4 - -gUnknown_030060C0: @ 30060C0 - .space 0x10 - -gUnknown_030060D0: @ 30060D0 - .space 0x10 - -gUnknown_030060E0: @ 30060E0 - .space 0x50 + .include "tv.o" gUnknown_03006130: @ 3006130 .space 0x34 @@ -393,7 +377,7 @@ gUnknown_030061EC: @ 30061EC .space 0x4 .include"save.o" - + .space 0x8 gRamSaveSectionLocations: @ 3006220 diff --git a/sym_ewram.txt b/sym_ewram.txt index 944a51b622..6f7b4b4d8f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1029,16 +1029,7 @@ gBagPockets: @ 2039DD8 .space 0x28 gUnknown_02039E00: @ 2039E00 - .space 0x2 - -gUnknown_02039E02: @ 2039E02 - .space 0xB - -gUnknown_02039E0D: @ 2039E0D - .space 0x11 - -gUnknown_02039E1E: @ 2039E1E - .space 0xE2 + .space 0x100 gUnknown_02039F00: @ 2039F00 .space 0x8 @@ -1145,26 +1136,7 @@ gUnknown_0203A01D: @ 203A01D gUnknown_0203A020: @ 203A020 .space 0x4 -gUnknown_0203A024: @ 203A024 - .space 0x2 - -gUnknown_0203A026: @ 203A026 - .space 0x2 - -gUnknown_0203A028: @ 203A028 - .space 0x2 - -gUnknown_0203A02A: @ 203A02A - .space 0x2 - -gUnknown_0203A02C: @ 203A02C - .space 0x4 - -gUnknown_0203A030: @ 203A030 - .space 0x1 - -gUnknown_0203A031: @ 203A031 - .space 0x3 + .include "src/tv.o" gUnknown_0203A034: @ 203A034 .space 0x4 From c78679ae66c71836b23e59e001c45235117cab2f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 13 Oct 2017 17:22:50 +0200 Subject: [PATCH 138/182] rom3 decomp start --- asm/battle_5.s | 8 +- asm/battle_7.s | 16 +- asm/battle_anim.s | 6 +- asm/battle_anim_80FE840.s | 10 +- asm/battle_interface.s | 2 +- asm/berry_blender.s | 14 +- asm/cable_club.s | 10 +- asm/contest.s | 4 +- asm/contest_link_80FC4F4.s | 4 +- asm/dewford_trend.s | 2 +- asm/link.s | 86 +- asm/record_mixing.s | 14 +- asm/recorded_battle.s | 4 +- asm/rom3.s | 2239 +--------------------------------- asm/rom6.s | 6 +- asm/rom_80A5C6C.s | 8 +- asm/secret_base.s | 2 +- asm/trade.s | 10 +- asm/tv.s | 6 +- include/battle.h | 11 +- include/battle_2.h | 2 + include/battle_anim.h | 6 + include/battle_controllers.h | 38 +- include/link.h | 9 +- include/recorded_battle.h | 2 + ld_script.txt | 1 + src/battle_2.c | 3 - src/battle_controllers.c | 928 ++++++++++++++ src/battle_util.c | 2 +- sym_ewram.txt | 6 +- 30 files changed, 1160 insertions(+), 2299 deletions(-) create mode 100644 include/battle_anim.h create mode 100644 src/battle_controllers.c diff --git a/asm/battle_5.s b/asm/battle_5.s index 4d02a59429..f2d6797f95 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -59,13 +59,13 @@ _08056F3E: bl AllocZeroed ldr r1, [r5] str r0, [r1, 0x1C] - ldr r4, =gUnknown_020244A0 + ldr r4, =gLinkBattleSendBuffer movs r5, 0x80 lsls r5, 5 adds r0, r5, 0 bl AllocZeroed str r0, [r4] - ldr r4, =gUnknown_020244A4 + ldr r4, =gLinkBattleRecvBuffer adds r0, r5, 0 bl AllocZeroed str r0, [r4] @@ -160,11 +160,11 @@ _0805703C: str r5, [r0, 0x1C] bl Free str r5, [r6] - ldr r4, =gUnknown_020244A0 + ldr r4, =gLinkBattleSendBuffer ldr r0, [r4] bl Free str r5, [r4] - ldr r4, =gUnknown_020244A4 + ldr r4, =gLinkBattleRecvBuffer ldr r0, [r4] bl Free str r5, [r4] diff --git a/asm/battle_7.s b/asm/battle_7.s index 7aea39cffa..a51670cd3c 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -1801,7 +1801,7 @@ _0805E056: movs r4, 0 cmp r4, r5 bcs _0805E076 - ldr r7, =gBanksBySide + ldr r7, =gBanksByIdentity ldr r6, =gUnknown_0832C108 _0805E060: adds r0, r4, r7 @@ -1874,14 +1874,14 @@ _0805E0F0: _0805E100: cmp r4, 0x4 bne _0805E110 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0] b _0805E198 .pool _0805E110: cmp r4, 0x5 bne _0805E1AC - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x1] b _0805E198 .pool @@ -1916,28 +1916,28 @@ _0805E150: _0805E160: cmp r4, 0x6 bne _0805E170 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0] b _0805E198 .pool _0805E170: cmp r4, 0x7 bne _0805E180 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x1] b _0805E198 .pool _0805E180: cmp r4, 0x8 bne _0805E190 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x2] b _0805E198 .pool _0805E190: cmp r5, 0x9 bne _0805E1AC - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x3] _0805E198: lsls r0, 3 @@ -2038,7 +2038,7 @@ _0805E252: _0805E260: ldrb r0, [r4] bl sub_8072B18 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 645700d53c..458ddbbaf9 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80A3934 -sub_80A3934: @ 80A3934 + thumb_func_start ClearBattleAnimationVars +ClearBattleAnimationVars: @ 80A3934 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -84,7 +84,7 @@ _080A3994: pop {r0} bx r0 .pool - thumb_func_end sub_80A3934 + thumb_func_end ClearBattleAnimationVars thumb_func_start move_anim_start_t1 move_anim_start_t1: @ 80A3A10 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 58eb2ebf08..582b018314 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -10676,7 +10676,7 @@ _08103D54: strh r0, [r3, 0x4] b _08103DB6 _08103D5C: - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity ldr r0, =gAnimationBankTarget ldrb r0, [r0] adds r0, r1 @@ -27474,7 +27474,7 @@ sub_810C560: @ 810C560 lsls r0, 8 strh r0, [r5, 0x3C] _0810C594: - ldr r3, =gBanksBySide + ldr r3, =gBanksByIdentity ldrb r0, [r7] adds r0, r3 ldrb r1, [r0] @@ -27699,7 +27699,7 @@ _0810C736: lsls r0, 24 cmp r0, 0 bne _0810C78C - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity ldrb r0, [r6] adds r0, r1 ldrb r1, [r0] @@ -27843,7 +27843,7 @@ _0810C85A: lsls r0, 24 cmp r0, 0 bne _0810C8B4 - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity ldr r0, =gAnimationBankTarget ldrb r0, [r0] adds r0, r1 @@ -28771,7 +28771,7 @@ _0810D000: negs r0, r0 lsrs r4, r0, 16 _0810D012: - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity add r0, r8 ldrb r1, [r0] adds r0, r7, 0 diff --git a/asm/battle_interface.s b/asm/battle_interface.s index d9bb3d8cc4..b1bb7df961 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -514,7 +514,7 @@ _08072694: _08072716: str r0, [sp] _08072718: - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity add r0, r10 ldrb r1, [r0] lsls r0, r1, 1 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 277a49d2f5..e6e1c93d17 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -1275,7 +1275,7 @@ _080802AC: strh r0, [r1] adds r5, 0x1 _080802D4: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -1295,7 +1295,7 @@ _080802EC: bl sub_807FD90 b _08080336 _08080302: - bl sub_8009FCC + bl GetLinkPlayerCount ldr r2, =gUnknown_020322A4 ldr r1, [r2] adds r1, 0x7C @@ -6091,7 +6091,7 @@ _08082BEE: lsls r0, 24 lsrs r5, r0, 24 _08082BF4: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6104,7 +6104,7 @@ _08082C0C: lsls r0, 24 lsrs r5, r0, 24 _08082C12: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6118,7 +6118,7 @@ _08082C12: cmp r0, 0 bne _08082C0C _08082C2E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6132,7 +6132,7 @@ _08082C48: lsls r0, 24 lsrs r5, r0, 24 _08082C4E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6149,7 +6149,7 @@ _08082C6A: ldr r4, =gUnknown_03003110 adds r0, r4, 0 bl sub_8081F94 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 diff --git a/asm/cable_club.s b/asm/cable_club.s index d5d3af1514..194a253518 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1059,7 +1059,7 @@ _080B2C5C: lsls r0, 24 lsrs r4, r0, 24 _080B2C7E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -1361,7 +1361,7 @@ _080B2F0C: movs r0, 0 mov r8, r0 mov r9, r0 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 @@ -1980,11 +1980,11 @@ _080B3474: bl sub_800B524 lsls r0, r4, 24 lsrs r0, 24 - bl sub_800A5EC + bl ResetBlockReceivedFlag adds r5, 0x1C adds r4, 0x1 _080B349A: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -2080,7 +2080,7 @@ _080B3574: beq _080B35F8 b _080B35FE _080B357A: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r3, r0, 24 movs r4, 0 diff --git a/asm/contest.s b/asm/contest.s index 561c798575..c2bf16d845 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1048,7 +1048,7 @@ _080D8004: bl sub_80DC594 bl sub_80DC5E8 bl sub_80DC7EC - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r4, [r1] movs r0, 0x1 strb r0, [r1, 0x1] @@ -13606,7 +13606,7 @@ sub_80DE864: @ 80DE864 movs r1, 0 movs r2, 0x14 bl memset - bl sub_80A3934 + bl ClearBattleAnimationVars ldr r1, =gBattleMonForms movs r2, 0 adds r0, r1, 0x3 diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s index ad22946c50..c4e3863c10 100644 --- a/asm/contest_link_80FC4F4.s +++ b/asm/contest_link_80FC4F4.s @@ -50,7 +50,7 @@ sub_80FC530: @ 80FC530 cmp r4, 0 beq _080FC552 adds r0, r5, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag movs r0, 0x1 b _080FC554 _080FC552: @@ -141,7 +141,7 @@ sub_80FC5DC: @ 80FC5DC bl GetMultiplayerId ldr r1, =gUnknown_02039F25 strb r0, [r1] - bl sub_8009FCC + bl GetLinkPlayerCount ldr r4, =gUnknown_02039F30 strb r0, [r4] ldr r1, =gUnknown_02039F2A diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s index c3a7b192cd..40df2d6a01 100644 --- a/asm/dewford_trend.s +++ b/asm/dewford_trend.s @@ -492,7 +492,7 @@ sub_812287C: @ 812287C bl Free b _08122980 _081228B0: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 mov r9, r0 diff --git a/asm/link.s b/asm/link.s index fb20b1fb2f..0c632ed9b3 100644 --- a/asm/link.s +++ b/asm/link.s @@ -545,7 +545,7 @@ _08009888: movs r6, 0 strh r0, [r4] adds r0, r5, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag ldrh r0, [r4] cmp r0, r8 beq _080098C4 @@ -1371,8 +1371,8 @@ _08009FC4: .pool thumb_func_end sub_8009FAC - thumb_func_start sub_8009FCC -sub_8009FCC: @ 8009FCC + thumb_func_start GetLinkPlayerCount +GetLinkPlayerCount: @ 8009FCC push {lr} ldr r0, =gLinkVSyncDisabled ldrb r0, [r0] @@ -1392,14 +1392,14 @@ _08009FEC: _08009FF4: pop {r1} bx r1 - thumb_func_end sub_8009FCC + thumb_func_end GetLinkPlayerCount thumb_func_start sub_8009FF8 sub_8009FF8: @ 8009FF8 push {r4-r7,lr} adds r6, r0, 0 adds r5, r1, 0 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r4, r0, 24 movs r2, 0 @@ -1442,7 +1442,7 @@ sub_800A03C: @ 800A03C thumb_func_start sub_800A040 sub_800A040: @ 800A040 push {lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -1546,7 +1546,7 @@ _0800A0EA: b _0800A22E .pool _0800A0FC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 cmp r0, 0 bne _0800A10E @@ -1572,12 +1572,12 @@ _0800A130: adds r5, 0x1C adds r6, 0x1 _0800A134: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r6, r0 blt _0800A120 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r7, r0 @@ -1714,12 +1714,12 @@ _0800A266: lsls r0, 24 lsrs r4, r0, 24 _0800A26C: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _0800A24C - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r6, r0 @@ -2181,8 +2181,8 @@ _0800A5E2: .pool thumb_func_end ResetBlockReceivedFlags - thumb_func_start sub_800A5EC -sub_800A5EC: @ 800A5EC + thumb_func_start ResetBlockReceivedFlag +ResetBlockReceivedFlag: @ 800A5EC push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -2206,7 +2206,7 @@ _0800A616: pop {r0} bx r0 .pool - thumb_func_end sub_800A5EC + thumb_func_end ResetBlockReceivedFlag thumb_func_start sub_800A620 sub_800A620: @ 800A620 @@ -2697,7 +2697,7 @@ _0800A9E2: lsrs r4, r0, 24 adds r5, 0x1 _0800A9EE: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -3044,7 +3044,7 @@ _0800AC96: thumb_func_start sub_800ACAC sub_800ACAC: @ 800ACAC push {r4,lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r3, 0 @@ -3142,7 +3142,7 @@ _0800AD72: thumb_func_start sub_800AD88 sub_800AD88: @ 800AD88 push {r4,r5,lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r3, r0, 24 movs r1, 0 @@ -3239,7 +3239,7 @@ _0800AE46: thumb_func_start sub_800AE5C sub_800AE5C: @ 800AE5C push {r4,lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 @@ -9671,7 +9671,7 @@ _0800E1C8: lsls r0, 24 lsrs r5, r0, 24 _0800E1E6: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 subs r0, 0x1 @@ -9965,7 +9965,7 @@ _0800E428: ble _0800E3FC mov r4, r9 _0800E434: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -10019,7 +10019,7 @@ _0800E4A6: adds r5, 0x1C adds r4, 0x1 _0800E4AC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -13627,7 +13627,7 @@ sub_80102B8: @ 80102B8 bl sub_800FD14 strh r4, [r5] _080102E6: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 @@ -13734,7 +13734,7 @@ sub_8010390: @ 8010390 b _0801041C .pool _080103CC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0x1 @@ -14607,7 +14607,7 @@ sub_8010A70: @ 8010A70 adds r1, r4, 0 bl CpuSet movs r0, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag _08010A9C: add sp, 0x4 pop {r4,r5} @@ -14683,7 +14683,7 @@ _08010B40: b _08010CF0 _08010B4A: adds r0, r4, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag movs r0, 0xF0 lsls r0, 7 bl sub_800FD14 @@ -14713,7 +14713,7 @@ _08010B78: b _08010CF0 _08010B8C: adds r0, r4, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag lsls r2, r4, 8 ldr r0, =gBlockRecvBuffer adds r2, r0 @@ -14845,7 +14845,7 @@ _08010C94: ldr r2, =0x0100007e bl CpuSet movs r0, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag ldr r1, =gUnknown_03005000 ldr r5, =0x00000ce8 adds r0, r1, r5 @@ -14947,7 +14947,7 @@ _08010D82: ldr r0, =gBlockRecvBuffer bl sub_8010A14 movs r0, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag ldr r0, =gReceivedRemoteLinkPlayers strb r4, [r0] adds r0, r5, 0 @@ -15290,7 +15290,7 @@ _08011048: strb r0, [r1, 0x3] adds r4, 0x1 _08011054: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -20950,12 +20950,12 @@ _08014138: adds r5, 0x1C adds r4, 0x1 _08014152: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 blt _08014138 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -21159,7 +21159,7 @@ sub_8014304: @ 8014304 strh r1, [r0] ldr r0, =0x00004087 bl VarSet - bl sub_8009FCC + bl GetLinkPlayerCount ldr r1, =gUnknown_03005DB8 strb r0, [r1] bl GetMultiplayerId @@ -39108,7 +39108,7 @@ sub_801D978: @ 801D978 push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_800A5EC + bl ResetBlockReceivedFlag pop {r0} bx r0 thumb_func_end sub_801D978 @@ -39697,7 +39697,7 @@ sub_801DDD0: @ 801DDD0 strb r5, [r4, 0x16] movs r0, 0xFF strb r0, [r4, 0x1A] - bl sub_8009FCC + bl GetLinkPlayerCount strb r0, [r4, 0xD] bl GetMultiplayerId strb r0, [r4, 0x13] @@ -42285,7 +42285,7 @@ _0801F30A: movs r0, 0x1 strh r0, [r4] _0801F30E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 adds r2, r0, 0 @@ -42361,7 +42361,7 @@ _0801F3A2: strh r1, [r4, 0x4] lsls r0, r1, 24 lsrs r0, 24 - bl sub_800A5EC + bl ResetBlockReceivedFlag movs r1, 0x2 ldrsh r0, [r4, r1] lsls r0, 8 @@ -42446,7 +42446,7 @@ _0801F448: ldrsh r0, [r4, r3] cmp r0, 0 beq _0801F47C - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -45504,7 +45504,7 @@ _08020C8E: b _08020CF8 .pool _08020CAC: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 mov r8, r0 @@ -53271,7 +53271,7 @@ _08024B2C: _08024B6A: ldr r0, [sp, 0x10] strb r1, [r0] - bl sub_8009FCC + bl GetLinkPlayerCount mov r1, r8 strb r0, [r1] bl GetMultiplayerId @@ -57700,7 +57700,7 @@ _08026EF6: adds r4, 0xC adds r5, 0x1 _08026EFE: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -59511,7 +59511,7 @@ _08027C76: thumb_func_start sub_8027D20 sub_8027D20: @ 8027D20 push {lr} - bl sub_8009FCC + bl GetLinkPlayerCount ldr r1, =gUnknown_02022C98 ldr r1, [r1] adds r1, 0x24 @@ -64891,7 +64891,7 @@ sub_802AA48: @ 802AA48 sub_802AA60: @ 802AA60 push {r4,lr} adds r4, r0, 0 - bl sub_8009FCC + bl GetLinkPlayerCount movs r2, 0 strb r0, [r4, 0x5] adds r1, r4, 0 @@ -68775,7 +68775,7 @@ _0802C8A4: thumb_func_start sub_802C8AC sub_802C8AC: @ 802C8AC push {lr} - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 pop {r1} diff --git a/asm/record_mixing.s b/asm/record_mixing.s index aacc5baa08..7bf84bc2c3 100644 --- a/asm/record_mixing.s +++ b/asm/record_mixing.s @@ -1135,7 +1135,7 @@ _080E76DC: bl memcpy _080E76E4: mov r0, r8 - bl sub_800A5EC + bl ResetBlockReceivedFlag mov r0, r9 lsls r1, r0, 1 adds r1, r5, r1 @@ -1162,7 +1162,7 @@ _080E7714: lsrs r0, 24 mov r8, r0 _080E771C: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r8, r0 @@ -1179,7 +1179,7 @@ _080E771C: adds r1, 0x1 strh r1, [r0, 0x8] _080E773E: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 ldr r4, [sp, 0x8] @@ -1312,7 +1312,7 @@ sub_80E7820: @ 80E7820 sub_80E7830: @ 80E7830 push {r4,lr} adds r4, r0, 0 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 @@ -1738,7 +1738,7 @@ sub_80E7B60: @ 80E7B60 ldr r0, =gLinkPlayers ldrh r0, [r0, 0x4] bl SeedRng2 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r4, r0, 24 movs r0, 0 @@ -1931,7 +1931,7 @@ _080E7CFA: lsrs r0, 16 mov r8, r0 _080E7D04: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r8, r0 @@ -3557,7 +3557,7 @@ sub_80E89AC: @ 80E89AC adds r6, r0, 0 mov r8, r1 mov r9, r2 - bl sub_8009FCC + bl GetLinkPlayerCount adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s index e742cbe7dd..2209312c2c 100644 --- a/asm/recorded_battle.s +++ b/asm/recorded_battle.s @@ -125,7 +125,7 @@ _08184EAC: bl GetMultiplayerId ldr r1, =gUnknown_0203C7B4 strb r0, [r1] - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 mov r10, r0 @@ -505,7 +505,7 @@ _081851D0: adds r4, 0x1C adds r5, 0x1 _081851DA: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 diff --git a/asm/rom3.s b/asm/rom3.s index 649097eb6a..ab32fa3152 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -5,2134 +5,7 @@ .text - thumb_func_start HandleLinkBattleSetup -HandleLinkBattleSetup: @ 8032654 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08032686 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _0803266E - bl sub_800B488 -_0803266E: - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0803267A - bl sub_8009734 -_0803267A: - ldr r0, =task00_08081A90 - movs r1, 0 - bl CreateTask - bl sub_8033244 -_08032686: - pop {r0} - bx r0 - .pool - thumb_func_end HandleLinkBattleSetup - thumb_func_start SetUpBattleVarsAndBirchZigzagoon -SetUpBattleVarsAndBirchZigzagoon: @ 803269C - push {r4-r7,lr} - sub sp, 0x14 - ldr r0, =gBattleMainFunc - ldr r1, =nullsub_20 - str r1, [r0] - movs r0, 0 - str r0, [sp, 0x10] - movs r1, 0 - ldr r7, =gBattleBankFunc - ldr r6, =gActionSelectionCursor - movs r2, 0 - ldr r5, =gMoveSelectionCursor - ldr r4, =nullsub_21 - ldr r3, =gBanksBySide -_080326B8: - lsls r0, r1, 2 - adds r0, r7 - str r4, [r0] - adds r1, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r0, [sp, 0x10] - adds r0, r6 - strb r2, [r0] - ldr r0, [sp, 0x10] - adds r0, r5 - strb r2, [r0] - ldr r0, [sp, 0x10] - adds r0, 0x1 - str r0, [sp, 0x10] - adds r1, r0, 0 - cmp r1, 0x3 - ble _080326B8 - bl HandleLinkBattleSetup - ldr r0, =gBattleExecBuffer - movs r5, 0 - str r5, [r0] - bl sub_80A3934 - bl ClearBattleMonForms - movs r0, 0xF - bl BattleAI_HandleItemUseBeforeAISetup - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08032728 - bl ZeroEnemyPartyMons - ldr r4, =gEnemyParty - movs r1, 0x90 - lsls r1, 1 - str r5, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - str r5, [sp, 0xC] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x20 - bl CreateMon - str r5, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0xC - add r2, sp, 0x10 - bl SetMonData -_08032728: - ldr r0, =gUnknown_02022FF4 - str r5, [r0] - ldr r0, =gUnknown_0202428C - strb r5, [r0] - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end SetUpBattleVarsAndBirchZigzagoon - - thumb_func_start sub_8032768 -sub_8032768: @ 8032768 - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _08032784 - movs r0, 0x1 - bl sub_8184DA4 - b _0803278A - .pool -_08032784: - movs r0, 0x2 - bl sub_8184DA4 -_0803278A: - ldr r4, =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _0803279C - bl sub_8185EB8 -_0803279C: - ldr r0, [r4] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080327B0 - bl b_setup_bx_link - b _080327B4 - .pool -_080327B0: - bl b_setup_bx -_080327B4: - bl sub_8033050 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080327E2 - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - cmp r4, r1 - bge _080327E2 - adds r5, r0, 0 -_080327D0: - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_81B8D64 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _080327D0 -_080327E2: - movs r4, 0 - ldr r3, =gBattleStruct - movs r2, 0xD2 - lsls r2, 1 - movs r1, 0 -_080327EC: - ldr r0, [r3] - adds r0, r4, r0 - adds r0, r2 - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x5F - bls _080327EC - movs r4, 0 - ldr r3, =gBattleStruct - movs r2, 0x81 - lsls r2, 2 - movs r1, 0 -_08032804: - ldr r0, [r3] - adds r0, r4, r0 - adds r0, r2 - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x67 - bls _08032804 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8032768 - - thumb_func_start b_setup_bx -b_setup_bx: @ 8032824 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleTypeFlags - ldr r3, [r0] - movs r5, 0x80 - lsls r5, 15 - ands r5, r3 - cmp r5, 0 - beq _080328E4 - ldr r1, =gBattleMainFunc - ldr r0, =BeginBattleIntro - str r0, [r1] - movs r4, 0x80 - lsls r4, 17 - ands r4, r3 - cmp r4, 0 - beq _08032874 - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - str r0, [r2] - ldr r1, =gBanksBySide - movs r0, 0 - strb r0, [r1] - b _0803287E - .pool -_08032874: - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand - str r0, [r2] - ldr r1, =gBanksBySide - strb r4, [r1] -_0803287E: - ldr r3, =SetBankFuncToOpponentBufferRunCommand - str r3, [r2, 0x4] - movs r0, 0x1 - strb r0, [r1, 0x1] - ldr r0, =SetBankFuncToPlayerPartnerBufferRunCommand - str r0, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r1, =gNoOfAllBanks - movs r0, 0x4 - strb r0, [r1] - movs r0, 0 - movs r1, 0 - bl sub_81B8D64 - movs r0, 0x1 - movs r1, 0 - bl sub_81B8D64 - movs r0, 0x2 - movs r1, 0x1 - bl sub_81B8D64 - movs r0, 0x3 - movs r1, 0x1 - bl sub_81B8D64 - ldr r0, =gBattlePartyID - movs r1, 0 - strh r1, [r0] - strh r1, [r0, 0x2] - movs r1, 0x3 - b _08032A76 - .pool -_080328E4: - movs r7, 0x1 - adds r0, r3, 0 - ands r0, r7 - cmp r0, 0 - beq _080328F0 - b _080329E0 -_080328F0: - ldr r0, =gBattleMainFunc - ldr r2, =BeginBattleIntro - str r2, [r0] - movs r1, 0x80 - ands r1, r3 - mov r12, r2 - cmp r1, 0 - beq _08032918 - ldr r1, =gBattleBankFunc - ldr r0, =SetBankFuncToSafariBufferRunCommand - b _08032934 - .pool -_08032918: - movs r0, 0x80 - lsls r0, 2 - ands r3, r0 - cmp r3, 0 - beq _08032930 - ldr r1, =gBattleBankFunc - ldr r0, =SetBankFuncToWallyBufferRunCommand - b _08032934 - .pool -_08032930: - ldr r1, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand -_08032934: - str r0, [r1] - mov r10, r1 - ldr r4, =gBanksBySide - movs r0, 0 - mov r9, r0 - mov r1, r9 - strb r1, [r4] - mov r5, r10 - ldr r2, =SetBankFuncToOpponentBufferRunCommand - mov r8, r2 - str r2, [r5, 0x4] - movs r6, 0x1 - strb r6, [r4, 0x1] - ldr r2, =gNoOfAllBanks - movs r7, 0x2 - strb r7, [r2] - ldr r0, =gBattleTypeFlags - ldr r3, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r3 - cmp r0, 0 - bne _08032964 - b _08032CB2 -_08032964: - movs r1, 0x80 - lsls r1, 18 - ands r1, r3 - cmp r1, 0 - beq _080329CC - movs r1, 0x80 - lsls r1, 24 - ands r1, r3 - cmp r1, 0 - beq _080329B4 - mov r1, r12 - ldr r0, =gBattleMainFunc - str r1, [r0] - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - str r0, [r5] - mov r1, r9 - strb r1, [r4] - ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand - str r0, [r5, 0x4] - strb r6, [r4, 0x1] - strb r7, [r2] - b _08032CB2 - .pool -_080329B4: - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - str r0, [r5, 0x4] - strb r1, [r4, 0x1] - ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand - str r0, [r5] - strb r6, [r4] - strb r7, [r2] - b _08032CB2 - .pool -_080329CC: - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - mov r2, r10 - str r0, [r2] - strb r1, [r4] - mov r0, r8 - str r0, [r2, 0x4] - strb r6, [r4, 0x1] - b _08032CB2 - .pool -_080329E0: - ldr r1, =BeginBattleIntro - ldr r2, =gBattleMainFunc - str r1, [r2] - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand - str r0, [r2] - ldr r4, =gBanksBySide - strb r5, [r4] - ldr r6, =SetBankFuncToOpponentBufferRunCommand - str r6, [r2, 0x4] - strb r7, [r4, 0x1] - str r0, [r2, 0x8] - movs r0, 0x2 - mov r12, r0 - mov r1, r12 - strb r1, [r4, 0x2] - str r6, [r2, 0xC] - movs r0, 0x3 - mov r8, r0 - mov r1, r8 - strb r1, [r4, 0x3] - ldr r0, =gNoOfAllBanks - mov r10, r0 - movs r1, 0x4 - mov r9, r1 - strb r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r3 - cmp r0, 0 - bne _08032A20 - b _08032CB2 -_08032A20: - movs r1, 0xA0 - lsls r1, 1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, r1 - bne _08032AA0 - ldr r0, =BeginBattleIntro - ldr r1, =gBattleMainFunc - str r0, [r1] - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - str r0, [r2] - strb r5, [r4] - str r6, [r2, 0x4] - strb r7, [r4, 0x1] - str r0, [r2, 0x8] - mov r0, r12 - strb r0, [r4, 0x2] - str r6, [r2, 0xC] - mov r1, r8 - strb r1, [r4, 0x3] - mov r0, r9 - mov r2, r10 - strb r0, [r2] - movs r0, 0 - movs r1, 0 - bl sub_81B8D64 - movs r0, 0x1 - movs r1, 0 - bl sub_81B8D64 - movs r0, 0x2 - movs r1, 0x1 - bl sub_81B8D64 - movs r0, 0x3 - movs r1, 0x1 - bl sub_81B8D64 - ldr r0, =gBattlePartyID - strh r5, [r0] - strh r5, [r0, 0x2] - mov r1, r8 -_08032A76: - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - b _08032CB2 - .pool -_08032AA0: - movs r5, 0x40 - ands r5, r3 - cmp r5, 0 - bne _08032AAA - b _08032C3C -_08032AAA: - ldr r0, =gUnknown_0203C7B4 - ldrb r5, [r0] - movs r0, 0 - mov r10, r0 - ldr r1, =gLinkPlayers - mov r12, r1 - adds r7, r4, 0 - mov r8, r0 - ldr r6, =gBattlePartyID - movs r4, 0 - movs r2, 0x3 - mov r9, r2 -_08032AC2: - mov r1, r12 - adds r0, r4, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _08032AE4 - cmp r0, 0x1 - bge _08032AFC - cmp r0, 0 - beq _08032AE8 - b _08032B06 - .pool -_08032AE4: - cmp r0, 0x3 - bne _08032B06 -_08032AE8: - ldr r0, =gLinkPlayers - adds r0, r4, r0 - ldrb r0, [r0, 0x18] - movs r1, 0 - bl sub_81B8D64 - b _08032B06 - .pool -_08032AFC: - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_81B8D64 -_08032B06: - cmp r10, r5 - bne _08032B56 - ldr r0, =gLinkPlayers - adds r3, r4, r0 - ldrh r1, [r3, 0x18] - lsls r1, 2 - ldr r2, =gBattleBankFunc - adds r1, r2 - ldr r2, =SetBankFuncToRecordedPlayerBufferRunCommand - str r2, [r1] - ldrh r1, [r3, 0x18] - mov r12, r0 - cmp r1, 0x2 - bgt _08032B38 - cmp r1, 0x1 - bge _08032B4C - cmp r1, 0 - beq _08032B3C - b _08032C2C - .pool -_08032B38: - cmp r1, 0x3 - bne _08032C2C -_08032B3C: - mov r1, r12 - adds r0, r4, r1 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _08032C12 -_08032B4C: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - ldrh r0, [r3, 0x18] - b _08032C24 -_08032B56: - ldr r2, =gLinkPlayers - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - bne _08032B80 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032B92 - b _08032BD8 - .pool -_08032B80: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032BD8 -_08032B92: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, =gBattleBankFunc - adds r0, r1 - ldr r1, =SetBankFuncToRecordedPlayerBufferRunCommand - str r1, [r0] - ldrh r1, [r2, 0x18] - cmp r1, 0x2 - bgt _08032BBC - cmp r1, 0x1 - bge _08032BD0 - cmp r1, 0 - beq _08032BC0 - b _08032C2C - .pool -_08032BBC: - cmp r1, 0x3 - bne _08032C2C -_08032BC0: - mov r2, r12 - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _08032C12 -_08032BD0: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - b _08032C22 -_08032BD8: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, =gBattleBankFunc - adds r0, r1 - ldr r1, =SetBankFuncToRecordedOpponentBufferRunCommand - str r1, [r0] - ldrh r0, [r2, 0x18] - cmp r0, 0x2 - bgt _08032C00 - cmp r0, 0x1 - bge _08032C1C - cmp r0, 0 - beq _08032C04 - b _08032C2C - .pool -_08032C00: - cmp r0, 0x3 - bne _08032C2C -_08032C04: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - adds r0, r7 - movs r1, 0x1 - strb r1, [r0] - ldrh r0, [r2, 0x18] -_08032C12: - lsls r0, 1 - adds r0, r6 - mov r1, r8 - strh r1, [r0] - b _08032C2C -_08032C1C: - adds r0, r7 - mov r1, r9 - strb r1, [r0] -_08032C22: - ldrh r0, [r2, 0x18] -_08032C24: - lsls r0, 1 - adds r0, r6 - mov r2, r9 - strh r2, [r0] -_08032C2C: - adds r4, 0x1C - movs r0, 0x1 - add r10, r0 - mov r1, r10 - cmp r1, 0x3 - bgt _08032C3A - b _08032AC2 -_08032C3A: - b _08032CB2 -_08032C3C: - movs r1, 0x4 - ands r1, r3 - cmp r1, 0 - beq _08032C7C - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - str r0, [r2] - strb r5, [r4] - str r0, [r2, 0x8] - mov r0, r12 - strb r0, [r4, 0x2] - movs r0, 0x80 - lsls r0, 18 - ands r3, r0 - cmp r3, 0 - beq _08032C70 - ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand - str r0, [r2, 0x4] - strb r7, [r4, 0x1] - str r0, [r2, 0xC] - mov r1, r8 - strb r1, [r4, 0x3] - b _08032CB2 - .pool -_08032C70: - str r6, [r2, 0x4] - strb r7, [r4, 0x1] - str r6, [r2, 0xC] - mov r2, r8 - strb r2, [r4, 0x3] - b _08032CB2 -_08032C7C: - ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand - str r0, [r2, 0x4] - strb r1, [r4, 0x1] - str r0, [r2, 0xC] - mov r0, r12 - strb r0, [r4, 0x3] - movs r0, 0x80 - lsls r0, 18 - ands r3, r0 - cmp r3, 0 - beq _08032CA8 - ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand - str r0, [r2] - strb r7, [r4] - str r0, [r2, 0x8] - mov r1, r8 - strb r1, [r4, 0x2] - b _08032CB2 - .pool -_08032CA8: - str r6, [r2] - strb r7, [r4] - str r6, [r2, 0x8] - mov r2, r8 - strb r2, [r4, 0x2] -_08032CB2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end b_setup_bx - - thumb_func_start b_setup_bx_link -b_setup_bx_link: @ 8032CC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, =gBattleTypeFlags - ldr r1, [r4] - movs r5, 0x1 - adds r3, r1, 0 - ands r3, r5 - cmp r3, 0 - bne _08032D48 - movs r4, 0x4 - ands r4, r1 - cmp r4, 0 - beq _08032D1C - ldr r1, =gBattleMainFunc - ldr r0, =BeginBattleIntro - str r0, [r1] - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand - str r0, [r2] - ldr r1, =gBanksBySide - strb r3, [r1] - ldr r0, =SetBankFuncToLinkOpponentBufferRunCommand - str r0, [r2, 0x4] - strb r5, [r1, 0x1] - ldr r1, =gNoOfAllBanks - movs r0, 0x2 - b _0803303A - .pool -_08032D1C: - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand - str r0, [r2, 0x4] - ldr r1, =gBanksBySide - strb r4, [r1, 0x1] - ldr r0, =SetBankFuncToLinkOpponentBufferRunCommand - str r0, [r2] - strb r5, [r1] - ldr r1, =gNoOfAllBanks - movs r0, 0x2 - b _0803303A - .pool -_08032D48: - movs r0, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _08032DD0 - movs r6, 0x4 - adds r3, r6, 0 - ands r3, r1 - cmp r3, 0 - beq _08032D98 - ldr r1, =gBattleMainFunc - ldr r0, =BeginBattleIntro - str r0, [r1] - ldr r2, =gBattleBankFunc - ldr r4, =SetBankFuncToPlayerBufferRunCommand - str r4, [r2] - ldr r1, =gBanksBySide - movs r0, 0 - strb r0, [r1] - ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand - str r3, [r2, 0x4] - strb r5, [r1, 0x1] - str r4, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] - b _08032DB4 - .pool -_08032D98: - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand - str r0, [r2, 0x4] - ldr r1, =gBanksBySide - strb r3, [r1, 0x1] - ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand - str r3, [r2] - strb r5, [r1] - str r0, [r2, 0xC] - movs r0, 0x2 - strb r0, [r1, 0x3] - str r3, [r2, 0x8] - movs r0, 0x3 - strb r0, [r1, 0x2] -_08032DB4: - ldr r0, =gNoOfAllBanks - strb r6, [r0] - b _0803303C - .pool -_08032DD0: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08032E8C - movs r4, 0x4 - adds r3, r4, 0 - ands r3, r1 - cmp r3, 0 - beq _08032E1C - ldr r1, =gBattleMainFunc - ldr r0, =BeginBattleIntro - str r0, [r1] - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToPlayerBufferRunCommand - str r0, [r2] - ldr r1, =gBanksBySide - movs r0, 0 - strb r0, [r1] - ldr r3, =SetBankFuncToOpponentBufferRunCommand - str r3, [r2, 0x4] - strb r5, [r1, 0x1] - ldr r0, =SetBankFuncToLinkPartnerBufferRunCommand - b _08032E2E - .pool -_08032E1C: - ldr r2, =gBattleBankFunc - ldr r0, =SetBankFuncToLinkPartnerBufferRunCommand - str r0, [r2] - ldr r1, =gBanksBySide - strb r3, [r1] - ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand - str r3, [r2, 0x4] - strb r5, [r1, 0x1] - ldr r0, =SetBankFuncToPlayerBufferRunCommand -_08032E2E: - str r0, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, =gNoOfAllBanks - strb r4, [r0] - movs r0, 0 - movs r1, 0 - bl sub_81B8D64 - movs r0, 0x1 - movs r1, 0 - bl sub_81B8D64 - movs r0, 0x2 - movs r1, 0x1 - bl sub_81B8D64 - movs r0, 0x3 - movs r1, 0x1 - bl sub_81B8D64 - ldr r0, =gBattlePartyID - movs r1, 0 - strh r1, [r0] - strh r1, [r0, 0x2] - movs r1, 0x3 - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - b _0803303C - .pool -_08032E8C: - bl GetMultiplayerId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r4] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032EA4 - ldr r1, =gBattleMainFunc - ldr r0, =BeginBattleIntro - str r0, [r1] -_08032EA4: - movs r0, 0 - mov r10, r0 - ldr r1, =gLinkPlayers - mov r12, r1 - ldr r7, =gBanksBySide - mov r8, r0 - ldr r6, =gBattlePartyID - movs r4, 0 - movs r2, 0x3 - mov r9, r2 -_08032EB8: - mov r1, r12 - adds r0, r4, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _08032EE0 - cmp r0, 0x1 - bge _08032EF8 - cmp r0, 0 - beq _08032EE4 - b _08032F02 - .pool -_08032EE0: - cmp r0, 0x3 - bne _08032F02 -_08032EE4: - ldr r0, =gLinkPlayers - adds r0, r4, r0 - ldrb r0, [r0, 0x18] - movs r1, 0 - bl sub_81B8D64 - b _08032F02 - .pool -_08032EF8: - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_81B8D64 -_08032F02: - cmp r10, r5 - bne _08032F52 - ldr r0, =gLinkPlayers - adds r3, r4, r0 - ldrh r1, [r3, 0x18] - lsls r1, 2 - ldr r2, =gBattleBankFunc - adds r1, r2 - ldr r2, =SetBankFuncToPlayerBufferRunCommand - str r2, [r1] - ldrh r1, [r3, 0x18] - mov r12, r0 - cmp r1, 0x2 - bgt _08032F34 - cmp r1, 0x1 - bge _08032F48 - cmp r1, 0 - beq _08032F38 - b _08033028 - .pool -_08032F34: - cmp r1, 0x3 - bne _08033028 -_08032F38: - mov r1, r12 - adds r0, r4, r1 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _0803300E -_08032F48: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - ldrh r0, [r3, 0x18] - b _08033020 -_08032F52: - ldr r2, =gLinkPlayers - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - bne _08032F7C - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032F8E - b _08032FD4 - .pool -_08032F7C: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032FD4 -_08032F8E: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, =gBattleBankFunc - adds r0, r1 - ldr r1, =SetBankFuncToLinkPartnerBufferRunCommand - str r1, [r0] - ldrh r1, [r2, 0x18] - cmp r1, 0x2 - bgt _08032FB8 - cmp r1, 0x1 - bge _08032FCC - cmp r1, 0 - beq _08032FBC - b _08033028 - .pool -_08032FB8: - cmp r1, 0x3 - bne _08033028 -_08032FBC: - mov r2, r12 - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _0803300E -_08032FCC: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - b _0803301E -_08032FD4: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, =gBattleBankFunc - adds r0, r1 - ldr r1, =SetBankFuncToLinkOpponentBufferRunCommand - str r1, [r0] - ldrh r0, [r2, 0x18] - cmp r0, 0x2 - bgt _08032FFC - cmp r0, 0x1 - bge _08033018 - cmp r0, 0 - beq _08033000 - b _08033028 - .pool -_08032FFC: - cmp r0, 0x3 - bne _08033028 -_08033000: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - adds r0, r7 - movs r1, 0x1 - strb r1, [r0] - ldrh r0, [r2, 0x18] -_0803300E: - lsls r0, 1 - adds r0, r6 - mov r1, r8 - strh r1, [r0] - b _08033028 -_08033018: - adds r0, r7 - mov r1, r9 - strb r1, [r0] -_0803301E: - ldrh r0, [r2, 0x18] -_08033020: - lsls r0, 1 - adds r0, r6 - mov r2, r9 - strh r2, [r0] -_08033028: - adds r4, 0x1C - movs r0, 0x1 - add r10, r0 - mov r1, r10 - cmp r1, 0x3 - bgt _08033036 - b _08032EB8 -_08033036: - ldr r1, =gNoOfAllBanks - movs r0, 0x4 -_0803303A: - strb r0, [r1] -_0803303C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end b_setup_bx_link - - thumb_func_start sub_8033050 -sub_8033050: @ 8033050 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08033068 - b _0803319C -_08033068: - movs r0, 0 - mov r8, r0 - b _0803317A - .pool -_08033074: - movs r5, 0 - movs r0, 0x1 - add r0, r8 - mov r10, r0 - ldr r0, =gBanksBySide - add r0, r8 - mov r9, r0 - mov r0, r8 - lsls r6, r0, 1 - movs r7, 0 -_08033088: - mov r0, r8 - cmp r0, 0x1 - bgt _080330F0 - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080330A8 - ldr r0, =gPlayerParty - b _080330AA - .pool -_080330A8: - ldr r0, =gEnemyParty -_080330AA: - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08033170 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08033170 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08033170 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08033170 - ldr r0, =gBattlePartyID - adds r0, r6, r0 - strh r5, [r0] - b _08033178 - .pool -_080330F0: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08033118 - ldr r0, =gPlayerParty - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08033170 - adds r0, r4, 0 - movs r1, 0xB - b _0803312C - .pool -_08033118: - ldr r0, =gEnemyParty - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08033170 - adds r0, r4, 0 - movs r1, 0x41 -_0803312C: - bl GetMonData - cmp r0, 0 - beq _08033170 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08033170 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08033170 - ldr r1, =gBattlePartyID - mov r0, r8 - subs r0, 0x2 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _08033170 - adds r0, r6, r1 - strh r5, [r0] - b _08033178 - .pool -_08033170: - adds r7, 0x64 - adds r5, 0x1 - cmp r5, 0x5 - ble _08033088 -_08033178: - mov r8, r10 -_0803317A: - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r8, r0 - bge _08033184 - b _08033074 -_08033184: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0803319C - ldr r0, =gBattlePartyID - movs r1, 0 - strh r1, [r0, 0x2] - movs r1, 0x3 - strh r1, [r0, 0x6] -_0803319C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8033050 - - thumb_func_start dp01_prepare_buffer -dp01_prepare_buffer: @ 80331B8 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r5, r3, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080331E4 - adds r0, r3, 0 - adds r1, r2, 0 - adds r2, r4, 0 - bl PrepareBufferDataTransferLink - b _08033236 - .pool -_080331E4: - cmp r5, 0 - beq _080331EE - cmp r5, 0x1 - beq _08033218 - b _08033236 -_080331EE: - movs r3, 0 - cmp r3, r2 - bge _08033236 - ldr r6, =gBattleBufferA - ldr r5, =gActiveBank -_080331F8: - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3, r0 - adds r0, r6 - ldrb r1, [r4] - strb r1, [r0] - adds r4, 0x1 - adds r3, 0x1 - cmp r3, r2 - blt _080331F8 - b _08033236 - .pool -_08033218: - movs r3, 0 - cmp r3, r2 - bge _08033236 - ldr r6, =gBattleBufferB - ldr r5, =gActiveBank -_08033222: - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3, r0 - adds r0, r6 - ldrb r1, [r4] - strb r1, [r0] - adds r4, 0x1 - adds r3, 0x1 - cmp r3, r2 - blt _08033222 -_08033236: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end dp01_prepare_buffer - - thumb_func_start sub_8033244 -sub_8033244: @ 8033244 - push {r4-r6,lr} - ldr r0, =task00_wireless_something - movs r1, 0 - bl CreateTask - ldr r2, =gUnknown_02022D08 - strb r0, [r2] - ldr r5, =gTasks - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r6, 0 - movs r4, 0 - strh r4, [r0, 0x1E] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x26] - ldr r0, =sub_803375C - movs r1, 0 - bl CreateTask - ldr r2, =gUnknown_02022D09 - strb r0, [r2] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x26] - ldr r0, =gUnknown_02022D0A - strb r6, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8033244 - - thumb_func_start PrepareBufferDataTransferLink -PrepareBufferDataTransferLink: @ 80332F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r2 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r1, 16 - mov r12, r1 - movs r1, 0x3 - mov r0, r12 - bics r0, r1 - adds r0, 0x4 - mov r8, r0 - ldr r2, =gTasks - ldr r3, =gUnknown_02022D08 - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r4, r0, r2 - movs r1, 0x24 - ldrsh r0, [r4, r1] - add r0, r8 - adds r0, 0x9 - movs r1, 0x80 - lsls r1, 5 - adds r5, r2, 0 - cmp r0, r1 - ble _08033346 - ldrh r0, [r4, 0x24] - movs r2, 0 - strh r0, [r4, 0x20] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r2, [r0, 0x24] -_08033346: - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r2, 0x24 - ldrsh r1, [r0, r2] - ldr r4, =gUnknown_020244A0 - ldr r0, [r4] - adds r0, r1 - strb r6, [r0] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - ldr r0, =gActiveBank - ldrb r0, [r0] - strb r0, [r1, 0x1] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r2, 0x24 - ldrsh r1, [r0, r2] - ldr r0, [r4] - adds r1, r0 - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r1, 0x2] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - ldr r0, =gBankTarget - ldrb r0, [r0] - strb r0, [r1, 0x3] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r1, 0x24 - ldrsh r0, [r0, r1] - ldr r1, [r4] - adds r0, r1 - mov r2, r8 - strb r2, [r0, 0x4] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - mov r2, r8 - ands r0, r2 - asrs r0, 8 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - ldr r0, =gAbsentBankFlags - ldrb r0, [r0] - strb r0, [r1, 0x6] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r2, 0x24 - ldrsh r1, [r0, r2] - ldr r0, [r4] - adds r1, r0 - ldr r0, =gEffectBank - ldrb r0, [r0] - strb r0, [r1, 0x7] - movs r2, 0 - cmp r2, r12 - bge _08033434 - mov r10, r5 - adds r6, r3, 0 -_08033412: - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r2, r1 - adds r1, r0 - mov r7, r9 - adds r0, r7, r2 - ldrb r0, [r0] - strb r0, [r1, 0x8] - adds r2, 0x1 - cmp r2, r12 - blt _08033412 -_08033434: - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldrh r0, [r1, 0x24] - add r0, r8 - adds r0, 0x8 - strh r0, [r1, 0x24] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end PrepareBufferDataTransferLink - - thumb_func_start task00_wireless_something -task00_wireless_something: @ 8033474 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x1E - ldrsh r0, [r0, r2] - adds r7, r1, 0 - cmp r0, 0x5 - bls _08033490 - b _08033640 -_08033490: - lsls r0, 2 - ldr r1, =_080334A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080334A4: - .4byte _080334BC - .4byte _080334CA - .4byte _080334E6 - .4byte _08033570 - .4byte _080335E6 - .4byte _08033624 -_080334BC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 - movs r1, 0x64 - strh r1, [r0, 0x1C] - b _080334F6 -_080334CA: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r7 - ldrh r0, [r1, 0x1C] - subs r0, 0x1 - strh r0, [r1, 0x1C] - lsls r0, 16 - cmp r0, 0 - beq _080334E0 - b _08033640 -_080334E0: - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - b _0803363E -_080334E6: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08033504 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 -_080334F6: - ldrh r1, [r0, 0x1E] - adds r1, 0x1 - strh r1, [r0, 0x1E] - b _08033640 - .pool -_08033504: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _0803351C - movs r5, 0x2 - b _0803352A - .pool -_0803351C: - movs r0, 0x40 - ands r1, r0 - movs r0, 0x2 - cmp r1, 0 - beq _08033528 - movs r0, 0x4 -_08033528: - adds r5, r0, 0 -_0803352A: - bl sub_800ABAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bcs _08033538 - b _08033640 -_08033538: - bl sub_800ABBC - lsls r0, 24 - cmp r0, 0 - beq _0803355C - bl sub_800A620 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - b _0803363E - .pool -_0803355C: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - b _0803363E - .pool -_08033570: - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r7 - movs r3, 0x26 - ldrsh r5, [r2, r3] - movs r0, 0x24 - ldrsh r6, [r2, r0] - mov r12, r6 - cmp r5, r12 - beq _08033640 - ldrh r0, [r2, 0x22] - movs r6, 0x22 - ldrsh r3, [r2, r6] - cmp r3, 0 - bne _080335E0 - cmp r5, r12 - ble _080335A0 - movs r6, 0x20 - ldrsh r0, [r2, r6] - cmp r5, r0 - bne _080335A0 - strh r3, [r2, 0x20] - strh r3, [r2, 0x26] -_080335A0: - adds r4, r1, r4 - lsls r4, 3 - adds r4, r7 - movs r0, 0x26 - ldrsh r1, [r4, r0] - ldr r5, =gUnknown_020244A0 - ldr r0, [r5] - adds r1, r0 - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - lsls r1, 8 - orrs r0, r1 - adds r0, 0x8 - lsls r0, 16 - lsrs r6, r0, 16 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x26 - ldrsh r2, [r4, r1] - ldr r1, [r5] - adds r1, r2 - adds r2, r6, 0 - bl SendBlock - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - b _08033640 - .pool -_080335E0: - subs r0, 0x1 - strh r0, [r2, 0x22] - b _08033640 -_080335E6: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _08033640 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r3, 0x26 - ldrsh r2, [r1, r3] - ldr r0, =gUnknown_020244A0 - ldr r0, [r0] - adds r2, r0 - ldrb r0, [r2, 0x4] - ldrb r2, [r2, 0x5] - lsls r2, 8 - movs r3, 0x1 - strh r3, [r1, 0x22] - orrs r0, r2 - ldrh r6, [r1, 0x26] - adds r0, r6 - adds r0, 0x8 - strh r0, [r1, 0x26] - b _0803363C - .pool -_08033624: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r7 - ldrh r0, [r1, 0x22] - subs r0, 0x1 - strh r0, [r1, 0x22] - lsls r0, 16 - cmp r0, 0 - bne _08033640 - movs r0, 0x1 - strh r0, [r1, 0x22] -_0803363C: - movs r0, 0x3 -_0803363E: - strh r0, [r1, 0x1E] -_08033640: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task00_wireless_something - - thumb_func_start sub_8033648 -sub_8033648: @ 8033648 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08033738 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08033738 - bl sub_8011BD0 - movs r4, 0 - ldr r0, =gBlockRecvBuffer - mov r10, r0 - b _0803372C - .pool -_08033680: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gBitTable - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - ands r0, r1 - adds r1, r4, 0x1 - mov r9, r1 - cmp r0, 0 - beq _08033726 - adds r0, r4, 0 - bl sub_800A5EC - lsls r0, r4, 8 - mov r4, r10 - adds r3, r0, r4 - ldr r1, =gBlockRecvBuffer + 4 - adds r0, r1 - ldrh r6, [r0] - ldr r7, =gTasks - ldr r4, =gUnknown_02022D09 - mov r12, r4 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r2, r0, r7 - movs r0, 0x24 - ldrsh r1, [r2, r0] - adds r0, r6, 0 - adds r0, 0x9 - adds r1, r0 - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - ble _080336E0 - ldrh r0, [r2, 0x24] - strh r0, [r2, 0x20] - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r7 - movs r1, 0 - strh r1, [r0, 0x24] -_080336E0: - ldr r2, =gUnknown_020244A4 - mov r4, r12 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r7 - movs r4, 0x24 - ldrsh r1, [r0, r4] - ldr r0, [r2] - adds r5, r0, r1 - adds r4, r3, 0 - movs r2, 0 - adds r3, r6, 0 - adds r3, 0x8 - mov r8, r7 - mov r7, r12 - cmp r2, r3 - bge _08033714 -_08033706: - adds r0, r5, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r3 - blt _08033706 -_08033714: - ldrb r0, [r7] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r8 - ldrh r0, [r1, 0x24] - adds r0, r6, r0 - adds r0, 0x8 - strh r0, [r1, 0x24] -_08033726: - mov r1, r9 - lsls r0, r1, 24 - lsrs r4, r0, 24 -_0803372C: - bl sub_8009FCC - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08033680 -_08033738: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8033648 - - thumb_func_start sub_803375C -sub_803375C: @ 803375C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r1 - movs r0, 0x26 - ldrsh r2, [r3, r0] - movs r4, 0x24 - ldrsh r0, [r3, r4] - cmp r2, r0 - bne _08033780 - b _0803389C -_08033780: - cmp r2, r0 - ble _08033792 - movs r4, 0x20 - ldrsh r0, [r3, r4] - cmp r2, r0 - bne _08033792 - movs r0, 0 - strh r0, [r3, 0x20] - strh r0, [r3, 0x26] -_08033792: - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r5, r0, r1 - movs r0, 0x26 - ldrsh r1, [r5, r0] - ldr r3, =gUnknown_020244A4 - mov r8, r3 - ldr r0, [r3] - adds r3, r1, r0 - ldrb r4, [r3, 0x1] - ldrb r6, [r3, 0x4] - ldrb r0, [r3, 0x5] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r3] - mov r9, r2 - cmp r0, 0x1 - beq _0803385C - cmp r0, 0x1 - bgt _080337CC - cmp r0, 0 - beq _080337D2 - b _0803388A - .pool -_080337CC: - cmp r0, 0x2 - beq _08033874 - b _0803388A -_080337D2: - ldr r2, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r4, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803389C - lsls r0, r4, 9 - ldr r1, =gBattleBufferA - adds r0, r1 - adds r1, r3, 0 - adds r1, 0x8 - adds r2, r6, 0 - bl memcpy - adds r0, r4, 0 - bl sub_803F850 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0803388A - ldr r2, =gBankAttacker - movs r4, 0x26 - ldrsh r0, [r5, r4] - mov r3, r8 - ldr r1, [r3] - adds r0, r1 - ldrb r0, [r0, 0x2] - strb r0, [r2] - ldr r2, =gBankTarget - movs r4, 0x26 - ldrsh r0, [r5, r4] - adds r0, r1 - ldrb r0, [r0, 0x3] - strb r0, [r2] - ldr r2, =gAbsentBankFlags - movs r3, 0x26 - ldrsh r0, [r5, r3] - adds r0, r1 - ldrb r0, [r0, 0x6] - strb r0, [r2] - ldr r2, =gEffectBank - movs r4, 0x26 - ldrsh r0, [r5, r4] - adds r0, r1 - ldrb r0, [r0, 0x7] - strb r0, [r2] - b _0803388A - .pool -_0803385C: - lsls r0, r4, 9 - ldr r1, =gBattleBufferB - adds r0, r1 - adds r1, r3, 0 - adds r1, 0x8 - adds r2, r6, 0 - bl memcpy - b _0803388A - .pool -_08033874: - ldrb r2, [r3, 0x8] - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r4, 2 - adds r0, r1 - lsls r2, 2 - ldr r1, [r0] - lsls r1, r2 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] -_0803388A: - ldr r0, =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, r6, r0 - adds r0, 0x8 - strh r0, [r1, 0x26] -_0803389C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803375C thumb_func_start EmitGetMonData EmitGetMonData: @ 80338B4 @@ -2147,7 +20,7 @@ EmitGetMonData: @ 80338B4 strb r2, [r1, 0x2] strb r3, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -2168,7 +41,7 @@ dp01_build_cmdbuf_x01_a_b_0: @ 80338D8 strb r2, [r1, 0x2] strb r4, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 @@ -2204,7 +77,7 @@ _08033920: _0803392E: adds r2, r5, 0x3 adds r0, r6, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -2240,7 +113,7 @@ _0803396C: adds r2, r4, 0x3 adds r0, r6, 0 adds r1, r5, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -2258,7 +131,7 @@ EmitLoadMonSprite: @ 8033980 strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2277,7 +150,7 @@ EmitSwitchInAnim: @ 80339A0 strb r2, [r1, 0x2] strb r3, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -2295,7 +168,7 @@ EmitReturnPokeToBall: @ 80339C4 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2313,7 +186,7 @@ EmitDrawTrainerPic: @ 80339E4 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2331,7 +204,7 @@ EmitTrainerSlide: @ 8033A04 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2349,7 +222,7 @@ EmitTrainerSlideBack: @ 8033A24 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2367,7 +240,7 @@ EmitFaintAnimation: @ 8033A44 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2385,7 +258,7 @@ dp01_build_cmdbuf_x0B_B_B_B: @ 8033A64 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2403,7 +276,7 @@ dp01_build_cmdbuf_x0C_C_C_C: @ 8033A84 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2420,7 +293,7 @@ EmitBallThrow: @ 8033AA4 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2458,7 +331,7 @@ _08033AF2: adds r2, 0x2 adds r0, r6, 0 adds r1, r5, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -2559,7 +432,7 @@ _08033BB6: mov r0, r9 adds r1, r4, 0 movs r2, 0x2C - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer add sp, 0x4 pop {r3,r4} mov r8, r3 @@ -2676,7 +549,7 @@ _08033C88: mov r0, r10 mov r1, r9 movs r2, 0x44 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r3-r5} mov r8, r3 mov r9, r4 @@ -2775,7 +648,7 @@ _08033D7C: mov r0, r10 mov r1, r9 movs r2, 0x44 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r3-r5} mov r8, r3 mov r9, r4 @@ -2802,7 +675,7 @@ EmitChooseAction: @ 8033DE4 lsrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -2821,7 +694,7 @@ EmitCmd13: @ 8033E10 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2853,7 +726,7 @@ _08033E4C: bls _08033E4C adds r0, r6, 0 movs r2, 0x18 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -2881,7 +754,7 @@ _08033E7E: ble _08033E7E adds r0, r5, 0 movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 @@ -2913,7 +786,7 @@ _08033EBA: ble _08033EBA adds r0, r5, 0 movs r2, 0x8 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -2932,7 +805,7 @@ dp01_build_cmdbuf_x17_17_17_17: @ 8033EDC strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -2960,7 +833,7 @@ EmitHealthBarUpdate: @ 8033EFC strb r1, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -2988,7 +861,7 @@ EmitExpUpdate: @ 8033F34 asrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3031,7 +904,7 @@ EmitStatusIconUpdate: @ 8033F68 lsrs r2, 24 strb r2, [r1, 0x8] movs r2, 0x9 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -3062,7 +935,7 @@ EmitStatusAnimation: @ 8033FBC lsrs r2, 24 strb r2, [r1, 0x5] movs r2, 0x6 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3080,7 +953,7 @@ dp01_build_cmdbuf_x1C_a: @ 8033FF8 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3119,7 +992,7 @@ _08034048: lsrs r2, 16 adds r0, r6, 0 adds r1, r5, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -3174,7 +1047,7 @@ _080340B0: lsls r2, 16 lsrs r2, 16 adds r0, r6, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -3213,7 +1086,7 @@ _080340F6: lsrs r2, 16 adds r0, r6, 0 adds r1, r5, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -3252,7 +1125,7 @@ _0803413E: lsrs r2, 16 adds r0, r6, 0 adds r1, r5, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 @@ -3275,7 +1148,7 @@ EmitCmd_x21: @ 8034158 lsrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3305,7 +1178,7 @@ _08034198: adds r0, r5, 0 adds r1, r2, 0 movs r2, 0x5 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 @@ -3329,7 +1202,7 @@ dp01_build_cmdbuf_x23_aa_0: @ 80341BC strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3353,7 +1226,7 @@ dp01_build_cmdbuf_x24_aa_0: @ 80341E8 strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3372,7 +1245,7 @@ dp01_build_cmdbuf_x25_25_25_25: @ 8034214 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3389,7 +1262,7 @@ dp01_build_cmdbuf_x26_a: @ 8034234 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3407,7 +1280,7 @@ dp01_build_cmdbuf_x27_27_27_27: @ 8034254 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3425,7 +1298,7 @@ dp01_build_cmdbuf_x28_28_28_28: @ 8034274 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3443,7 +1316,7 @@ EmitHitAnimation: @ 8034294 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3461,7 +1334,7 @@ Emit_x2A: @ 80342B4 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3484,7 +1357,7 @@ EmitEffectivenessSound: @ 80342D4 strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3507,7 +1380,7 @@ EmitPlaySound: @ 8034300 strb r2, [r4, 0x3] adds r1, r4, 0 movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3526,7 +1399,7 @@ EmitFaintingCry: @ 803432C strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3543,7 +1416,7 @@ EmitIntroSlide: @ 803434C strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3561,7 +1434,7 @@ EmitIntroTrainerBallThrow: @ 803436C strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3599,7 +1472,7 @@ _080343B4: ble _080343B4 adds r0, r5, 0 movs r2, 0x34 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 @@ -3618,7 +1491,7 @@ EmitCmd49: @ 80343D4 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3636,7 +1509,7 @@ Emit_x32: @ 80343F4 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3655,7 +1528,7 @@ EmitSpriteInvisibility: @ 8034414 strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3677,7 +1550,7 @@ EmitBattleAnimation: @ 8034438 lsrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 @@ -3711,7 +1584,7 @@ _08034490: ldrb r2, [r1, 0x2] adds r2, 0x4 adds r0, r5, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 @@ -3729,7 +1602,7 @@ EmitResetActionMoveSelection: @ 80344A8 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r0} bx r0 .pool @@ -3765,7 +1638,7 @@ Emit_x37: @ 80344C8 adds r2, 0x6 adds r0, r5, 0 adds r1, r4, 0 - bl dp01_prepare_buffer + bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 diff --git a/asm/rom6.s b/asm/rom6.s index 2ed9d888ec..5eff527fed 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -5399,7 +5399,7 @@ sub_8138240: @ 8138240 bl GetMultiplayerId lsls r0, 24 lsrs r7, r0, 24 - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 @@ -11676,7 +11676,7 @@ _0813B62E: ldrh r0, [r0] strh r0, [r5] movs r0, 0x1 - bl sub_800A5EC + bl ResetBlockReceivedFlag ldr r0, =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x1 @@ -11756,7 +11756,7 @@ _0813B6E4: ldrh r0, [r0] strh r0, [r1] movs r0, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag _0813B708: ldr r1, =gTasks lsls r0, r4, 2 diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index cf09bf1485..3be09f93e0 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -1810,7 +1810,7 @@ _080A6A04: GetBankSide: @ 80A6A30 lsls r0, 24 lsrs r0, 24 - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity adds r0, r1 ldrb r1, [r0] movs r0, 0x1 @@ -1823,7 +1823,7 @@ GetBankSide: @ 80A6A30 GetBankIdentity: @ 80A6A44 lsls r0, 24 lsrs r0, 24 - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity adds r0, r1 ldrb r0, [r0] bx lr @@ -1840,7 +1840,7 @@ GetBankByIdentity: @ 80A6A54 ldrb r2, [r0] cmp r1, r2 bcs _080A6A7E - ldr r4, =gBanksBySide + ldr r4, =gBanksByIdentity ldrb r0, [r4] cmp r0, r3 beq _080A6A7E @@ -1883,7 +1883,7 @@ sub_80A6A90: @ 80A6A90 b _080A6B18 .pool _080A6ABC: - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity adds r0, r4, r0 ldrb r0, [r0] cmp r0, 0xFF diff --git a/asm/secret_base.s b/asm/secret_base.s index 0290e9f7fc..0e47eaf4f6 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -4494,7 +4494,7 @@ sub_80EAF80: @ 80EAF80 bne _080EAF9A b _080EB16A _080EAF9A: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/trade.s b/asm/trade.s index d4c54cef68..ba06550192 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -125,7 +125,7 @@ sub_8077234: @ 8077234 _08077250: lsls r0, r4, 24 lsrs r0, 24 - bl sub_800A5EC + bl ResetBlockReceivedFlag _08077258: pop {r4} pop {r0} @@ -6603,7 +6603,7 @@ _0807A97C: adds r4, 0x1C adds r5, 0x1 _0807A980: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -6632,7 +6632,7 @@ _0807A9B0: adds r4, 0x1C adds r5, 0x1 _0807A9B4: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 @@ -12903,7 +12903,7 @@ _0807E504: strb r6, [r0] _0807E514: movs r0, 0 - bl sub_800A5EC + bl ResetBlockReceivedFlag _0807E51A: movs r0, 0x2 ands r0, r5 @@ -12924,7 +12924,7 @@ _0807E51A: strb r1, [r0] _0807E53C: movs r0, 0x1 - bl sub_800A5EC + bl ResetBlockReceivedFlag _0807E542: pop {r4-r6} pop {r0} diff --git a/asm/tv.s b/asm/tv.s index d61392fa19..bdd74e7301 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -7992,7 +7992,7 @@ _080F0270: lsls r0, 24 lsrs r4, r0, 24 _080F0276: - bl sub_8009FCC + bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -8107,7 +8107,7 @@ sub_80F0358: @ 80F0358 str r0, [sp, 0x8] add r0, sp, 0x1C str r0, [sp, 0xC] - bl sub_8009FCC + bl GetLinkPlayerCount ldr r1, =gUnknown_03001174 strb r0, [r1] _080F0384: @@ -9329,7 +9329,7 @@ sub_80F0D60: @ 80F0D60 str r0, [sp, 0x8] add r0, sp, 0x1C str r0, [sp, 0xC] - bl sub_8009FCC + bl GetLinkPlayerCount ldr r1, =gUnknown_03001175 strb r0, [r1] movs r0, 0 diff --git a/include/battle.h b/include/battle.h index a60f450ce1..4a29e84883 100644 --- a/include/battle.h +++ b/include/battle.h @@ -27,7 +27,9 @@ #define BIT_SIDE 0x1 #define BIT_MON 0x2 +#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank])) #define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE)) +#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) #define BATTLE_TYPE_DOUBLE 0x0001 #define BATTLE_TYPE_LINK 0x0002 @@ -654,7 +656,9 @@ struct BattleStruct u8 field_1A1; bool8 overworldWeatherDone; u8 atkCancellerTracker; - u8 field_1A4[240]; + u8 field_1A4[96]; + u8 field_204[104]; + u8 field_26C[40]; u8 field_294[4]; u8 field_298[8]; u8 field_2A0; @@ -891,6 +895,11 @@ struct BattleSpriteData extern struct BattleSpriteData *gBattleSpritesDataPtr; +#define BATTLE_BUFFER_LINK_SIZE 0x1000 + +extern u8 *gLinkBattleSendBuffer; +extern u8 *gLinkBattleRecvBuffer; + // Move this somewhere else #include "sprite.h" diff --git a/include/battle_2.h b/include/battle_2.h index 677bf0505a..ceec2aa00f 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -17,6 +17,8 @@ void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); u32 sub_80397C4(u32 setId, u32 tableId); void sub_8039E9C(struct Sprite *sprite); +void nullsub_20(void); +void BeginBattleIntro(void); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_anim.h b/include/battle_anim.h new file mode 100644 index 0000000000..fa546b1924 --- /dev/null +++ b/include/battle_anim.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_ANIM_H +#define GUARD_BATTLE_ANIM_H + +void ClearBattleAnimationVars(void); + +#endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index e36c95fbe9..b368782100 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -46,7 +46,13 @@ struct ChooseMoveStruct u8 monType2; }; -// rom3.s, emitters +// general functions +void HandleLinkBattleSetup(void); +void SetUpBattleVarsAndBirchZigzagoon(void); +void sub_8032768(void); +void sub_8033648(void); + +// emitters void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); @@ -86,4 +92,34 @@ void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); void EmitBallThrow(u8 bufferId, u8 caseId); void EmitCmd_x21(u8 bufferId, u8 arg1, u16 arg2); +// player controller +void SetBankFuncToPlayerBufferRunCommand(void); +void nullsub_21(void); +void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); +void ActionSelectionDestroyCursorAt(u8 cursorPos); + +// recorded player controller +void SetBankFuncToRecordedPlayerBufferRunCommand(void); + +// opponent controller +void SetBankFuncToOpponentBufferRunCommand(void); + +// player partner controller +void SetBankFuncToPlayerPartnerBufferRunCommand(void); + +// safari controller +void SetBankFuncToSafariBufferRunCommand(void); + +// wally controller +void SetBankFuncToWallyBufferRunCommand(void); + +// recorded opponent controller +void SetBankFuncToRecordedOpponentBufferRunCommand(void); + +// link opponent +void SetBankFuncToLinkOpponentBufferRunCommand(void); + +// link partner +void SetBankFuncToLinkPartnerBufferRunCommand(void); + #endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/include/link.h b/include/link.h index 012c904806..fa39af699e 100644 --- a/include/link.h +++ b/include/link.h @@ -141,6 +141,7 @@ extern u8 gShouldAdvanceLinkState; extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; +extern bool8 gLinkVSyncDisabled; void Task_DestroySelf(u8); void OpenLink(void); @@ -183,6 +184,12 @@ bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); void sub_800ADF8(void); -u8 sub_8009FCC(void); +u8 GetLinkPlayerCount(void); +void sub_800B488(void); +void sub_8009734(void); +void sub_800A620(void); +void sub_8011BD0(void); +u8 sub_800ABAC(void); +u8 sub_800ABBC(void); #endif // GUARD_LINK_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 65ad998e6a..2d8135e41c 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -3,6 +3,7 @@ extern u32 gRecordedBattleRngSeed; +void sub_8184DA4(u8 arg0); void sub_8185F84(void); void sub_8184E58(void); void RecordedBattle_SetBankAction(u8 bank, u8 action); @@ -15,5 +16,6 @@ u8 MoveRecordedBattleToSaveData(void); void sub_818603C(u8); void sub_8185FD0(void); void sub_8186444(void); +void sub_8185EB8(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/ld_script.txt b/ld_script.txt index 887f248118..b270153515 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -54,6 +54,7 @@ SECTIONS { asm/link.o(.text); src/rtc.o(.text); asm/main_menu.o(.text); + src/battle_controllers.o(.text); asm/rom3.o(.text); src/decompress.o(.text); asm/battle_1.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index c4da02e366..734b8c3083 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -207,9 +207,6 @@ extern const u8 BattleScript_ActionSwitch[]; extern const u8 BattleScript_PrintFailedToRunString[]; // functions -extern void HandleLinkBattleSetup(void); // rom_3 -extern void SetUpBattleVarsAndBirchZigzagoon(void); // rom_3 -extern void sub_8032768(void); // rom_3 extern void dp12_8087EA4(void); extern void sub_80356D0(void); extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower diff --git a/src/battle_controllers.c b/src/battle_controllers.c new file mode 100644 index 0000000000..cfa4aae713 --- /dev/null +++ b/src/battle_controllers.c @@ -0,0 +1,928 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "link.h" +#include "task.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "pokemon.h" +#include "species.h" +#include "recorded_battle.h" +#include "util.h" + +extern u32 gBattleTypeFlags; +extern u32 gBattleExecBuffer; +extern void (*gBattleMainFunc)(void); +extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void); +extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; +extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT]; +extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT]; +extern u8 gNoOfAllBanks; +extern u8 gActiveBank; +extern u8 gUnknown_0202428C; +extern u32 gUnknown_02022FF4; +extern u8 gUnknown_0203C7B4; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; +extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; +extern u8 gUnknown_02022D08; +extern u8 gUnknown_02022D09; +extern u8 gUnknown_02022D0A; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gAbsentBankFlags; +extern u8 gEffectBank; + +extern void task00_08081A90(u8 taskId); // cable_club +extern void sub_81B8D64(u8 bank, u8 arg1); // party_menu + +// this file's funcionts +static void sub_8033244(void); +static void SetControllersVariablesInLinkBattle(void); +static void SetControllersVariables(void); +static void sub_8033050(void); +void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); +static void Task_HandleSendLinkBuffersData(u8 taskId); +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId); + +void HandleLinkBattleSetup(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gLinkVSyncDisabled) + sub_800B488(); + if (!gReceivedRemoteLinkPlayers) + sub_8009734(); + CreateTask(task00_08081A90, 0); + sub_8033244(); + } +} + +void SetUpBattleVarsAndBirchZigzagoon(void) +{ + s32 i; + + gBattleMainFunc = nullsub_20; + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + gBattleBankFunc[i] = nullsub_21; + gBanksByIdentity[i] = 0xFF; + gActionSelectionCursor[i] = 0; + gMoveSelectionCursor[i] = 0; + } + + HandleLinkBattleSetup(); + gBattleExecBuffer = 0; + ClearBattleAnimationVars(); + ClearBattleMonForms(); + BattleAI_HandleItemUseBeforeAISetup(0xF); + + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + ZeroEnemyPartyMons(); + CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, 0, 0); + i = 0; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i); + } + + gUnknown_02022FF4 = 0; + gUnknown_0202428C = 0; +} + +void sub_8032768(void) +{ + s32 i; + u8 *data; + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + sub_8184DA4(1); + else + sub_8184DA4(2); + + if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) + sub_8185EB8(); + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + SetControllersVariablesInLinkBattle(); + else + SetControllersVariables(); + + sub_8033050(); + + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + for (i = 0; i < gNoOfAllBanks; i++) + sub_81B8D64(i, 0); + } + + for (i = 0; i < sizeof(gBattleStruct->field_1A4); i++) + *(gBattleStruct->field_1A4 + i) = 0; + + for (i = 0; i < sizeof(gBattleStruct->field_204); i++) + *(gBattleStruct->field_204 + i) = 0; +} + +static void SetControllersVariables(void) +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + gBattleMainFunc = BeginBattleIntro; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + { + gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToPlayerPartnerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + } + else + { + gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToPlayerPartnerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + } + + gNoOfAllBanks = 4; + + sub_81B8D64(0, 0); + sub_81B8D64(1, 0); + sub_81B8D64(2, 1); + sub_81B8D64(3, 1); + + gBattlePartyID[0] = 0; + gBattlePartyID[1] = 0; + gBattlePartyID[2] = 3; + gBattlePartyID[3] = 3; + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMainFunc = BeginBattleIntro; + + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + gBattleBankFunc[0] = SetBankFuncToSafariBufferRunCommand; + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + gBattleBankFunc[0] = SetBankFuncToWallyBufferRunCommand; + else + gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand; + + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gNoOfAllBanks = 2; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + { + if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + if (gBattleTypeFlags & BATTLE_TYPE_x80000000) + { + gBattleMainFunc = BeginBattleIntro; + + gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToRecordedOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gNoOfAllBanks = 2; + } + else // see how the banks are switched + { + gBattleBankFunc[1] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[0] = SetBankFuncToRecordedOpponentBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1; + + gNoOfAllBanks = 2; + } + } + else + { + gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + } + } + } + else + { + gBattleMainFunc = BeginBattleIntro; + + gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + + gNoOfAllBanks = 4; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + gBattleMainFunc = BeginBattleIntro; + + gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[0] = 0; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = 1; + + gBattleBankFunc[2] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[2] = 2; + + gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[3] = 3; + + gNoOfAllBanks = 4; + + sub_81B8D64(0, 0); + sub_81B8D64(1, 0); + sub_81B8D64(2, 1); + sub_81B8D64(3, 1); + + gBattlePartyID[0] = 0; + gBattlePartyID[1] = 0; + gBattlePartyID[2] = 3; + gBattlePartyID[3] = 3; + } + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + u8 var; // multiplayer Id in a recorded battle? + + for (var = gUnknown_0203C7B4, i = 0; i < BATTLE_BANKS_COUNT; i++) + { + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + sub_81B8D64(gLinkPlayers[i].lp_field_18, 0); + break; + case 1: + case 2: + sub_81B8D64(gLinkPlayers[i].lp_field_18, 1); + break; + } + + if (i == var) + { + gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToRecordedPlayerBufferRunCommand; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON1; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON2; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + else if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[var].lp_field_18 & 1)) + || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[var].lp_field_18 & 1))) + { + gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToRecordedPlayerBufferRunCommand; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON1; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON2; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + else + { + gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToRecordedOpponentBufferRunCommand; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_OPPONENT_MON1; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_OPPONENT_MON2; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[2] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + gBattleBankFunc[1] = SetBankFuncToRecordedOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[3] = SetBankFuncToRecordedOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + } + else + { + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + } + } + else + { + gBattleBankFunc[1] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[3] = SetBankFuncToRecordedPlayerBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_PLAYER_MON2; + + if (gBattleTypeFlags & BATTLE_TYPE_x2000000) + { + gBattleBankFunc[0] = SetBankFuncToRecordedOpponentBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToRecordedOpponentBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2; + } + else + { + gBattleBankFunc[0] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2; + } + } + } + } +} + +static void SetControllersVariablesInLinkBattle(void) +{ + s32 i; + u8 multiplayerId; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gBattleMainFunc = BeginBattleIntro; + + gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gNoOfAllBanks = 2; + } + else + { + gBattleBankFunc[1] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1; + + gNoOfAllBanks = 2; + } + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gBattleMainFunc = BeginBattleIntro; + + gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[3] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + + gNoOfAllBanks = 4; + } + else + { + gBattleBankFunc[1] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[3] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[2] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2; + + gNoOfAllBanks = 4; + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gBattleMainFunc = BeginBattleIntro; + + gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToLinkPartnerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + + gNoOfAllBanks = 4; + } + else + { + gBattleBankFunc[0] = SetBankFuncToLinkPartnerBufferRunCommand; + gBanksByIdentity[0] = IDENTITY_PLAYER_MON1; + + gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1; + + gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand; + gBanksByIdentity[2] = IDENTITY_PLAYER_MON2; + + gBattleBankFunc[3] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2; + + gNoOfAllBanks = 4; + } + + sub_81B8D64(0, 0); + sub_81B8D64(1, 0); + sub_81B8D64(2, 1); + sub_81B8D64(3, 1); + gBattlePartyID[0] = 0; + gBattlePartyID[1] = 0; + gBattlePartyID[2] = 3; + gBattlePartyID[3] = 3; + } + else + { + multiplayerId = GetMultiplayerId(); + + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + gBattleMainFunc = BeginBattleIntro; + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + sub_81B8D64(gLinkPlayers[i].lp_field_18, 0); + break; + case 1: + case 2: + sub_81B8D64(gLinkPlayers[i].lp_field_18, 1); + break; + } + + if (i == multiplayerId) + { + gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToPlayerBufferRunCommand; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 0; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 2; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + else + { + if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1)) + || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1))) + { + gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToLinkPartnerBufferRunCommand; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 0; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 2; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + else + { + gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToLinkOpponentBufferRunCommand; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 1; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 3; + gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + } + } + + gNoOfAllBanks = 4; + } +} + +static void sub_8033050(void) +{ + s32 i, j; + + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + for (i = 0; i < gNoOfAllBanks; i++) + { + for (j = 0; j < 6; j++) + { + if (i < 2) + { + if (GET_BANK_SIDE2(i) == SIDE_PLAYER) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0) + { + gBattlePartyID[i] = j; + break; + } + } + else + { + if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0) + { + gBattlePartyID[i] = j; + break; + } + } + } + else + { + if (GET_BANK_SIDE2(i) == SIDE_PLAYER) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2. + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0 + && gBattlePartyID[i - 2] != j) + { + gBattlePartyID[i] = j; + break; + } + } + else + { + if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0 + && gBattlePartyID[i - 2] != j) + { + gBattlePartyID[i] = j; + break; + } + } + } + } + } + + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + gBattlePartyID[1] = 0, gBattlePartyID[3] = 3; + } +} + +void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + PrepareBufferDataTransferLink(bufferId, size, data); + } + else + { + switch (bufferId) + { + case 0: + for (i = 0; i < size; i++) + { + gBattleBufferA[gActiveBank][i] = *data; + data++; + } + break; + case 1: + for (i = 0; i < size; i++) + { + gBattleBufferB[gActiveBank][i] = *data; + data++; + } + break; + } + } +} + +static void sub_8033244(void) +{ + gUnknown_02022D08 = CreateTask(Task_HandleSendLinkBuffersData, 0); + gTasks[gUnknown_02022D08].data[11] = 0; + gTasks[gUnknown_02022D08].data[12] = 0; + gTasks[gUnknown_02022D08].data[13] = 0; + gTasks[gUnknown_02022D08].data[14] = 0; + gTasks[gUnknown_02022D08].data[15] = 0; + + gUnknown_02022D09 = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0); + gTasks[gUnknown_02022D09].data[12] = 0; + gTasks[gUnknown_02022D09].data[13] = 0; + gTasks[gUnknown_02022D09].data[14] = 0; + gTasks[gUnknown_02022D09].data[15] = 0; + + gUnknown_02022D0A = 0; +} + +enum +{ + LINK_BUFF_BUFFER_ID, + LINK_BUFF_ACTIVE_BANK, + LINK_BUFF_ATTACKER, + LINK_BUFF_TARGET, + LINK_BUFF_SIZE_LO, + LINK_BUFF_SIZE_HI, + LINK_BUFF_ABSENT_BANK_FLAGS, + LINK_BUFF_EFFECT_BANK, + LINK_BUFF_DATA +}; + +void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data) +{ + s32 alignedSize; + s32 i; + + alignedSize = size - size % 4 + 4; + if (gTasks[gUnknown_02022D08].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE) + { + gTasks[gUnknown_02022D08].data[12] = gTasks[gUnknown_02022D08].data[14]; + gTasks[gUnknown_02022D08].data[14] = 0; + } + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_BUFFER_ID] = bufferId; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BANK] = gActiveBank; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ATTACKER] = gBankAttacker; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_TARGET] = gBankTarget; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_LO] = alignedSize; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BANK_FLAGS] = gAbsentBankFlags; + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBank; + + for (i = 0; i < size; i++) + gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_DATA + i] = data[i]; + + gTasks[gUnknown_02022D08].data[14] = gTasks[gUnknown_02022D08].data[14] + alignedSize + LINK_BUFF_DATA; +} + +static void Task_HandleSendLinkBuffersData(u8 taskId) +{ + u16 var; + u16 blockSize; + + switch (gTasks[taskId].data[11]) + { + case 0: + gTasks[taskId].data[10] = 100; + gTasks[taskId].data[11]++; + break; + case 1: + gTasks[taskId].data[10]--; + if (gTasks[taskId].data[10] == 0) + gTasks[taskId].data[11]++; + break; + case 2: + if (gLinkVSyncDisabled) + { + gTasks[taskId].data[11]++; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + var = 2; + else + var = (gBattleTypeFlags & BATTLE_TYPE_MULTI) ? 4 : 2; + + if (sub_800ABAC() >= var) + { + if (sub_800ABBC()) + { + sub_800A620(); + gTasks[taskId].data[11]++; + } + else + { + gTasks[taskId].data[11]++; + } + } + } + break; + case 3: + if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) + { + if (gTasks[taskId].data[13] == 0) + { + if (gTasks[taskId].data[15] > gTasks[taskId].data[14] + && gTasks[taskId].data[15] == gTasks[taskId].data[12]) + { + gTasks[taskId].data[12] = 0; + gTasks[taskId].data[15] = 0; + } + blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA; + SendBlock(bitmask_all_link_players_but_self(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize); + gTasks[taskId].data[11]++; + } + else + { + gTasks[taskId].data[13]--; + break; + } + } + break; + case 4: + if (sub_800A520()) + { + blockSize = gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8); + gTasks[taskId].data[13] = 1; + gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA; + gTasks[taskId].data[11] = 3; + } + break; + case 5: + gTasks[taskId].data[13]--; + if (gTasks[taskId].data[13] == 0) + { + gTasks[taskId].data[13] = 1; + gTasks[taskId].data[11] = 3; + } + break; + } +} + +// fix me +void sub_8033648(void) +{ + u8 i; + s32 j; + u16 r6; + u8 *recvBuffer; + u8 *dest; + u8 *src; + + if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_20)) + { + sub_8011BD0(); + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (GetBlockReceivedStatus() & gBitTable[i]) + { + ResetBlockReceivedFlag(i); + recvBuffer = (u8 *)gBlockRecvBuffer[i]; + #ifndef NONMATCHING + asm(""); + recvBuffer = (u8 *)&gBlockRecvBuffer[i]; + #endif + r6 = gBlockRecvBuffer[i][2]; + + if (gTasks[gUnknown_02022D09].data[14] + 9 + r6 > 0x1000) + { + gTasks[gUnknown_02022D09].data[12] = gTasks[gUnknown_02022D09].data[14]; + gTasks[gUnknown_02022D09].data[14] = 0; + } + + dest = &gLinkBattleRecvBuffer[gTasks[gUnknown_02022D09].data[14]]; + src = recvBuffer; + + for (j = 0; j < r6 + 8; j++) + dest[j] = src[j]; + + gTasks[gUnknown_02022D09].data[14] = gTasks[gUnknown_02022D09].data[14] + r6 + 8; + } + } + } +} + +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) +{ + u16 blockSize; + u8 bank; + u8 var; + + if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) + { + if (gTasks[taskId].data[15] > gTasks[taskId].data[14] + && gTasks[taskId].data[15] == gTasks[taskId].data[12]) + { + gTasks[taskId].data[12] = 0; + gTasks[taskId].data[15] = 0; + } + bank = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BANK]; + blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8); + + switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0]) + { + case 0: + if (gBattleExecBuffer & gBitTable[bank]) + return; + + memcpy(gBattleBufferA[bank], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize); + sub_803F850(bank); + + if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) + { + gBankAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 2]; + gBankTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 3]; + gAbsentBankFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 6]; + gEffectBank = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7]; + } + break; + case 1: + memcpy(gBattleBufferB[bank], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize); + break; + case 2: + var = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA]; + gBattleExecBuffer &= ~(gBitTable[bank] << (var * 4)); + break; + } + + gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA; + } +} diff --git a/src/battle_util.c b/src/battle_util.c index c6762dd993..636e27bdf6 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -353,7 +353,7 @@ void sub_803F850(u8 arg0) { s32 i; - for (i = 0; i < sub_8009FCC(); i++) + for (i = 0; i < GetLinkPlayerCount(); i++) gBattleExecBuffer |= gBitTable[arg0] << (i << 2); gBattleExecBuffer &= ~(0x10000000 << arg0); diff --git a/sym_ewram.txt b/sym_ewram.txt index 944a51b622..495d233f95 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -282,7 +282,7 @@ gNoOfAllBanks: @ 202406C gBattlePartyID: @ 202406E .space 0x8 -gBanksBySide: @ 2024076 +gBanksByIdentity: @ 2024076 .space 0x4 gActionsByTurnOrder: @ 202407A @@ -471,10 +471,10 @@ gBattleScripting: @ 2024474 gBattleStruct: @ 202449C .space 0x4 -gUnknown_020244A0: @ 20244A0 +gLinkBattleSendBuffer: @ 20244A0 .space 0x4 -gUnknown_020244A4: @ 20244A4 +gLinkBattleRecvBuffer: @ 20244A4 .space 0x4 gBattleResources: @ 20244A8 From cc847132496af6034a56838e6e8e7575bbda7648 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 11:47:17 -0400 Subject: [PATCH 139/182] sub_8121B1C --- asm/mail.s | 143 ---------------------------- include/international_string_util.h | 1 + src/mail.c | 113 ++++++++++++++-------- 3 files changed, 72 insertions(+), 185 deletions(-) diff --git a/asm/mail.s b/asm/mail.s index c35d3873a1..72e5673d81 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -5,149 +5,6 @@ .text - thumb_func_start sub_8121B1C -sub_8121B1C: @ 8121B1C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - movs r7, 0 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r6, 0 - ldr r1, =gUnknown_0203A134 - ldr r0, [r1] - movs r2, 0x8A - lsls r2, 2 - mov r10, r2 - add r0, r10 - ldr r0, [r0] - ldrb r0, [r0] - cmp r6, r0 - bcs _08121BCC - mov r9, r1 - mov r8, r10 -_08121B60: - mov r0, r9 - ldr r1, [r0] - lsls r0, r6, 6 - adds r5, r1, r0 - ldrb r0, [r5] - cmp r0, 0xFF - beq _08121BB8 - cmp r0, 0 - beq _08121BB8 - mov r2, r8 - adds r0, r1, r2 - ldr r1, [r0] - ldr r0, [r1, 0x8] - lsls r4, r6, 2 - adds r0, r4, r0 - ldr r2, [r0] - lsls r2, 24 - lsrs r2, 26 - ldrb r0, [r1, 0x4] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r1, 0x3] - adds r3, r7, r3 - lsls r3, 24 - lsrs r3, 24 - ldr r0, =gUnknown_0859F2AC - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - bl box_print - mov r1, r9 - ldr r0, [r1] - add r0, r8 - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r4, r0 - ldrb r0, [r4, 0x1] - adds r0, r7, r0 - lsls r0, 24 - lsrs r7, r0, 24 -_08121BB8: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r2, =gUnknown_0203A134 - ldr r0, [r2] - add r0, r10 - ldr r0, [r0] - ldrb r0, [r0] - cmp r6, r0 - bcc _08121B60 -_08121BCC: - ldr r1, =gText_FromSpace - add r0, sp, 0xC - bl StringCopy - ldr r4, =gUnknown_0203A134 - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 2 - adds r1, r2 - bl StringCopy - ldr r0, [r4] - ldr r1, =0x00000219 - adds r0, r1 - ldrb r2, [r0] - movs r0, 0x1 - add r1, sp, 0xC - bl GetStringCenterAlignXOffset - adds r2, r0, 0 - adds r2, 0x68 - ldr r0, [r4] - movs r1, 0x8A - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r3, [r0, 0x1] - adds r3, 0x58 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r0, =gUnknown_0859F2AC - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x1 - bl box_print - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121B1C - thumb_func_start sub_8121C50 sub_8121C50: @ 8121C50 push {lr} diff --git a/include/international_string_util.h b/include/international_string_util.h index a2891aeb71..412e71de24 100644 --- a/include/international_string_util.h +++ b/include/international_string_util.h @@ -10,5 +10,6 @@ void sub_81DB52C(const u8 *src); void TVShowConvertInternationalString(void *dest, const void *src, u8 language); u32 sub_81DB604(const u8 *); +s32 GetStringCenterAlignXOffset(u8 fontId, const u8 *str, s32 totalWidth); #endif //GUARD_INTERNATIONAL_STRING_UTIL_H diff --git a/src/mail.c b/src/mail.c index 0c3e85cc35..48dc7eba02 100644 --- a/src/mail.c +++ b/src/mail.c @@ -27,10 +27,8 @@ struct UnkMailStruct { u32 unk_0_0:2; - u32 unk_0_2:2; - u32 unk_0_4:4; - u32 unk_1_0:4; - u32 unk_1_4:1; + u32 unk_0_2:6; + u32 unk_1:8; }; struct MailLayout @@ -38,9 +36,8 @@ struct MailLayout u8 var0; u8 var1; u8 var2; - u8 var3_0:4; - u8 var3_4:4; - u32 var4; + u8 var3; + u8 var4; const struct UnkMailStruct *var8; }; @@ -52,7 +49,7 @@ struct Unk203A134 /*0x0210*/ MainCallback callback2; /*0x0214*/ struct MailStruct *mail; /*0x0218*/ bool8 flag; - /*0x0219*/ u8 unk_0219; + /*0x0219*/ u8 signatureWidth; /*0x021a*/ u8 mailType; /*0x021b*/ u8 unk_021b; /*0x021c*/ u8 unk_021c; @@ -200,47 +197,47 @@ const struct MailGraphics gUnknown_0859F2B8[] = { }; const struct UnkMailStruct Unknown_0859F3A8[] = { - { .unk_0_0 = 3, .unk_1_4 = TRUE }, - { .unk_0_0 = 3, .unk_1_4 = TRUE }, - { .unk_0_0 = 3, .unk_1_4 = TRUE } + { .unk_0_0 = 3, .unk_1 = 16 }, + { .unk_0_0 = 3, .unk_1 = 16 }, + { .unk_0_0 = 3, .unk_1 = 16 } }; const struct MailLayout gUnknown_0859F3B4[] = { - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x08, 0x00, 0x2, 0x0, 0x04, Unknown_0859F3A8 }, - { 0x03, 0x00, 0x00, 0x2, 0x0, 0x00, Unknown_0859F3A8 } + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x08, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, + { 0x03, 0x00, 0x00, 0x02, 0x00, Unknown_0859F3A8 } }; const struct UnkMailStruct Unknown_0859F444[] = { - { .unk_0_0 = 2, .unk_1_4 = TRUE }, - { .unk_0_0 = 2, .unk_1_4 = TRUE }, - { .unk_0_0 = 2, .unk_1_4 = TRUE }, - { .unk_0_0 = 2, .unk_1_4 = TRUE }, - { .unk_0_0 = 1, .unk_1_4 = TRUE } + { .unk_0_0 = 2, .unk_1 = 16 }, + { .unk_0_0 = 2, .unk_1 = 16 }, + { .unk_0_0 = 2, .unk_1 = 16 }, + { .unk_0_0 = 2, .unk_1 = 16 }, + { .unk_0_0 = 1, .unk_1 = 16 } }; const struct MailLayout gUnknown_0859F458[] = { - { 0x05, 0x07, 0x58, 0xb, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x0a, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x0c, 0x68, 0x5, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x05, 0x60, 0x8, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x0a, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x09, 0x70, 0x5, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x0c, 0x68, 0x9, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x0d, 0x68, 0xd, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x09, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x09, 0x60, 0x9, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x11, 0x68, 0xf, 0x0, 0x1e, Unknown_0859F444 }, - { 0x05, 0x09, 0x60, 0x5, 0x0, 0x1e, Unknown_0859F444 } + { 0x05, 0x07, 0x58, 0x0b, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0a, 0x60, 0x09, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0c, 0x68, 0x05, 0x1e, Unknown_0859F444 }, + { 0x05, 0x05, 0x60, 0x08, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0a, 0x60, 0x09, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x70, 0x05, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0c, 0x68, 0x09, 0x1e, Unknown_0859F444 }, + { 0x05, 0x0d, 0x68, 0x0d, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x60, 0x09, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x60, 0x09, 0x1e, Unknown_0859F444 }, + { 0x05, 0x11, 0x68, 0x0f, 0x1e, Unknown_0859F444 }, + { 0x05, 0x09, 0x60, 0x05, 0x1e, Unknown_0859F444 } }; // What the heck are these meant to be? Call them u16 for now. @@ -481,11 +478,43 @@ void sub_8121A1C(void) if (!gUnknown_0203A134->playerIsSender) { StringCopy(ptr, gText_FromSpace); - gUnknown_0203A134->unk_0219 = gUnknown_0203A134->layout->var2 - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60); + gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->var2 - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60); } else { sub_81DB52C(gUnknown_0203A134->playerName); - gUnknown_0203A134->unk_0219 = gUnknown_0203A134->layout->var2; + gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->var2; } } + +void sub_8121B1C(void) +{ + u16 i; + u8 strbuf[0x20]; + u8 y; + u8 *bufptr; + s32 box_x; + s32 box_y; + + y = 0; + PutWindowTilemap(0); + PutWindowTilemap(1); + FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(1, 0); + for (i = 0; i < gUnknown_0203A134->layout->var0; i ++) + { + if (gUnknown_0203A134->strbuf[i][0] == EOS || gUnknown_0203A134->strbuf[i][0] == CHAR_SPACE) + { + continue; + } + box_print(0, 1, gUnknown_0203A134->layout->var8[i].unk_0_2 + gUnknown_0203A134->layout->var4, y + gUnknown_0203A134->layout->var3, gUnknown_0859F2AC, 0, gUnknown_0203A134->strbuf[i]); + y += gUnknown_0203A134->layout->var8[i].unk_1; + } + bufptr = StringCopy(strbuf, gText_FromSpace); + StringCopy(bufptr, gUnknown_0203A134->playerName); + box_x = GetStringCenterAlignXOffset(1, strbuf, gUnknown_0203A134->signatureWidth) + 0x68; + box_y = gUnknown_0203A134->layout->var1 + 0x58; + box_print(0, 1, box_x, box_y, gUnknown_0859F2AC, 0, strbuf); + CopyWindowToVram(0, 3); + CopyWindowToVram(1, 3); +} From 32168adbc884f49da522b77900ea9a131df96f15 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 12:03:15 -0400 Subject: [PATCH 140/182] Remaining functions --- asm/mail.s | 160 ----------------------------------------- include/pokemon_icon.h | 2 + ld_script.txt | 1 - src/mail.c | 77 +++++++++++++++++--- 4 files changed, 70 insertions(+), 170 deletions(-) delete mode 100644 asm/mail.s diff --git a/asm/mail.s b/asm/mail.s deleted file mode 100644 index 72e5673d81..0000000000 --- a/asm/mail.s +++ /dev/null @@ -1,160 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8121C50 -sub_8121C50: @ 8121C50 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8121C50 - - thumb_func_start sub_8121C64 -sub_8121C64: @ 8121C64 - push {r4,lr} - ldr r4, =gUnknown_0203A134 - ldr r0, [r4] - ldr r1, =0x0000021b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08121C7C - bl AnimateSprites - bl BuildOamBuffer -_08121C7C: - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121C64 - - thumb_func_start sub_8121C98 -sub_8121C98: @ 8121C98 - push {lr} - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08121CB2 - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 2 - adds r0, r1 - ldr r1, =sub_8121CC0 - str r1, [r0] -_08121CB2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121C98 - - thumb_func_start sub_8121CC0 -sub_8121CC0: @ 8121CC0 - push {lr} - sub sp, 0x4 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08121CEE - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =gUnknown_0203A134 - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 2 - adds r0, r1 - ldr r1, =sub_8121D00 - str r1, [r0] -_08121CEE: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121CC0 - - thumb_func_start sub_8121D00 -sub_8121D00: @ 8121D00 - push {r4,lr} - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08121D88 - ldr r4, =gUnknown_0203A134 - ldr r0, [r4] - movs r1, 0x83 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl SetMainCallback2 - ldr r1, [r4] - ldr r2, =0x0000021b - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x2 - bgt _08121D58 - cmp r0, 0x1 - blt _08121D58 - subs r2, 0x7 - adds r0, r1, r2 - ldr r0, [r0] - ldrh r0, [r0, 0x1E] - bl sub_80D2E84 - lsls r0, 16 - lsrs r0, 16 - bl sub_80D2FF0 - ldr r0, [r4] - movs r1, 0x87 - lsls r1, 2 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - bl sub_80D2EF8 -_08121D58: - ldr r4, =gUnknown_0203A134 - ldr r0, [r4] - ldr r2, =0x0000222c - movs r1, 0 - bl memset - bl ResetPaletteFade - movs r0, 0 - bl UnsetBgTilemapBuffer - movs r0, 0x1 - bl UnsetBgTilemapBuffer - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - bl FreeAllWindowBuffers - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_08121D88: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8121D00 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 1863f9f7a1..b6d21823e0 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -6,5 +6,7 @@ const u16 *GetValidMonIconPalettePtr(u16 speciesId); u16 sub_80D2E84(u16 speciesId); void sub_80D2F68(u16 iconId); u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); +void sub_80D2FF0(u16 iconId); +void sub_80D2EF8(struct Sprite *sprite); #endif // GUARD_POKEMON_ICON_H diff --git a/ld_script.txt b/ld_script.txt index 8349338bc0..b120074015 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -165,7 +165,6 @@ SECTIONS { asm/mon_markings.o(.text); asm/mauville_old_man.o(.text); src/mail.o(.text); - asm/mail.o(.text); asm/menu_helpers.o(.text); asm/dewford_trend.o(.text); asm/heal_location.o(.text); diff --git a/src/mail.c b/src/mail.c index 48dc7eba02..bcb08b49da 100644 --- a/src/mail.c +++ b/src/mail.c @@ -51,8 +51,8 @@ struct Unk203A134 /*0x0218*/ bool8 flag; /*0x0219*/ u8 signatureWidth; /*0x021a*/ u8 mailType; - /*0x021b*/ u8 unk_021b; - /*0x021c*/ u8 unk_021c; + /*0x021b*/ u8 animsActive; + /*0x021c*/ u8 monIconSprite; /*0x021d*/ u8 language; /*0x021e*/ bool8 playerIsSender; /*0x0220*/ void (*parserSingle)(u8 *dest, u16 word); @@ -85,6 +85,8 @@ void sub_8121B1C(void); void sub_8121C50(void); void sub_8121C64(void); void sub_8121C98(void); +void sub_8121CC0(void); +void sub_8121D00(void); // .rodata @@ -299,19 +301,19 @@ void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) { switch (gUnknown_0203A134->mailType) { default: - gUnknown_0203A134->unk_021b = 0; + gUnknown_0203A134->animsActive = 0; break; case ITEM_BEAD_MAIL - ITEM_ORANGE_MAIL: - gUnknown_0203A134->unk_021b = 1; + gUnknown_0203A134->animsActive = 1; break; case ITEM_DREAM_MAIL - ITEM_ORANGE_MAIL: - gUnknown_0203A134->unk_021b = 2; + gUnknown_0203A134->animsActive = 2; break; } } else { - gUnknown_0203A134->unk_021b = 0; + gUnknown_0203A134->animsActive = 0; } gUnknown_0203A134->mail = mail; gUnknown_0203A134->callback = callback; @@ -422,15 +424,15 @@ bool8 sub_81215EC(void) break; case 17: icon = sub_80D2E84(gUnknown_0203A134->mail->species); - switch (gUnknown_0203A134->unk_021b) + switch (gUnknown_0203A134->animsActive) { case 1: sub_80D2F68(icon); - gUnknown_0203A134->unk_021c = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0); + gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0); break; case 2: sub_80D2F68(icon); - gUnknown_0203A134->unk_021c = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0); + gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0); break; } break; @@ -518,3 +520,60 @@ void sub_8121B1C(void) CopyWindowToVram(0, 3); CopyWindowToVram(1, 3); } + +void sub_8121C50(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8121C64(void) +{ + if (gUnknown_0203A134->animsActive != 0) + { + AnimateSprites(); + BuildOamBuffer(); + } + gUnknown_0203A134->callback2(); +} + +void sub_8121C98(void) +{ + if (!UpdatePaletteFade()) + { + gUnknown_0203A134->callback2 = sub_8121CC0; + } +} + +void sub_8121CC0(void) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_0203A134->callback2 = sub_8121D00; + } +} + +void sub_8121D00(void) +{ + if (!UpdatePaletteFade()) + { + SetMainCallback2(gUnknown_0203A134->callback); + switch (gUnknown_0203A134->animsActive) + { + case 1: + case 2: + sub_80D2FF0(sub_80D2E84(gUnknown_0203A134->mail->species)); + sub_80D2EF8(&gSprites[gUnknown_0203A134->monIconSprite]); + } + memset(gUnknown_0203A134, 0, sizeof(*gUnknown_0203A134)); + ResetPaletteFade(); + UnsetBgTilemapBuffer(0); + UnsetBgTilemapBuffer(1); + ResetBgsAndClearDma3BusyFlags(0); + FreeAllWindowBuffers(); + free(gUnknown_0203A134); + gUnknown_0203A134 = NULL; + } +} From dea018323f6a16d964359df8d9628e8f21740ba9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 12:05:18 -0400 Subject: [PATCH 141/182] Struct pointer in EWRAM --- src/mail.c | 2 +- sym_ewram.txt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mail.c b/src/mail.c index bcb08b49da..8d84e3c200 100644 --- a/src/mail.c +++ b/src/mail.c @@ -75,7 +75,7 @@ struct MailGraphics // Static RAM declarations -EWRAM_DATA struct Unk203A134 *gUnknown_0203A134; +static EWRAM_DATA struct Unk203A134 *gUnknown_0203A134 = NULL; // Static ROM declarations diff --git a/sym_ewram.txt b/sym_ewram.txt index 6f7b4b4d8f..cf5fe171c0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1188,8 +1188,7 @@ gUnknown_0203A12C: @ 203A12C gUnknown_0203A130: @ 203A130 .space 0x4 -gUnknown_0203A134: @ 203A134 - .space 0x4 + .include "src/mail.o" gUnknown_0203A138: @ 203A138 .space 0x8 From 1112af4e1905135a7bc2dd53353b52762ff7d49a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Oct 2017 12:19:51 -0400 Subject: [PATCH 142/182] Field labels --- src/mail.c | 84 ++++++++++++++++++++++++++---------------------------- 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/src/mail.c b/src/mail.c index 8d84e3c200..a39142892e 100644 --- a/src/mail.c +++ b/src/mail.c @@ -26,22 +26,35 @@ struct UnkMailStruct { - u32 unk_0_0:2; - u32 unk_0_2:6; - u32 unk_1:8; + u32 numEasyChatWords:2; + u32 xOffset:6; + u32 lineHeight:8; }; struct MailLayout { - u8 var0; - u8 var1; - u8 var2; - u8 var3; - u8 var4; + u8 numSubStructs; + u8 signatureYPos; + u8 signatureWidth; + u8 wordsXPos; + u8 wordsYPos; const struct UnkMailStruct *var8; }; -struct Unk203A134 +struct MailGraphics +{ + const u16 *palette; + const u8 *tiles; + const u8 *tileMap; + u16 var0C; + u16 var0E; + u16 color10; + u16 color12; +}; + +// Static RAM declarations + +static EWRAM_DATA struct { /*0x0000*/ u8 strbuf[8][64]; /*0x0200*/ u8 playerName[12]; @@ -60,22 +73,7 @@ struct Unk203A134 /*0x0228*/ const struct MailLayout *layout; /*0x022c*/ u8 bg1TilemapBuffer[0x1000]; /*0x122c*/ u8 bg2TilemapBuffer[0x1000]; -}; - -struct MailGraphics -{ - const u16 *palette; - const u8 *tiles; - const u8 *tileMap; - u16 var0C; - u16 var0E; - u16 color10; - u16 color12; -}; - -// Static RAM declarations - -static EWRAM_DATA struct Unk203A134 *gUnknown_0203A134 = NULL; +} *gUnknown_0203A134 = NULL; // Static ROM declarations @@ -199,9 +197,9 @@ const struct MailGraphics gUnknown_0859F2B8[] = { }; const struct UnkMailStruct Unknown_0859F3A8[] = { - { .unk_0_0 = 3, .unk_1 = 16 }, - { .unk_0_0 = 3, .unk_1 = 16 }, - { .unk_0_0 = 3, .unk_1 = 16 } + { .numEasyChatWords = 3, .lineHeight = 16 }, + { .numEasyChatWords = 3, .lineHeight = 16 }, + { .numEasyChatWords = 3, .lineHeight = 16 } }; const struct MailLayout gUnknown_0859F3B4[] = { @@ -220,11 +218,11 @@ const struct MailLayout gUnknown_0859F3B4[] = { }; const struct UnkMailStruct Unknown_0859F444[] = { - { .unk_0_0 = 2, .unk_1 = 16 }, - { .unk_0_0 = 2, .unk_1 = 16 }, - { .unk_0_0 = 2, .unk_1 = 16 }, - { .unk_0_0 = 2, .unk_1 = 16 }, - { .unk_0_0 = 1, .unk_1 = 16 } + { .numEasyChatWords = 2, .lineHeight = 16 }, + { .numEasyChatWords = 2, .lineHeight = 16 }, + { .numEasyChatWords = 2, .lineHeight = 16 }, + { .numEasyChatWords = 2, .lineHeight = 16 }, + { .numEasyChatWords = 1, .lineHeight = 16 } }; const struct MailLayout gUnknown_0859F458[] = { @@ -272,7 +270,7 @@ void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) { u16 buffer[2]; u16 species; - gUnknown_0203A134 = calloc(1, sizeof(struct Unk203A134)); + gUnknown_0203A134 = calloc(1, sizeof(*gUnknown_0203A134)); gUnknown_0203A134->language = LANGUAGE_ENGLISH; gUnknown_0203A134->playerIsSender = TRUE; gUnknown_0203A134->parserSingle = CopyEasyChatWord; @@ -471,21 +469,21 @@ void sub_8121A1C(void) u8 *ptr; total = 0; - for (i = 0; i < gUnknown_0203A134->layout->var0; i ++) + for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++) { - ConvertEasyChatWordsToString(gUnknown_0203A134->strbuf[i], &gUnknown_0203A134->mail->words[total], gUnknown_0203A134->layout->var8[i].unk_0_0, 1); - total += gUnknown_0203A134->layout->var8[i].unk_0_0; + ConvertEasyChatWordsToString(gUnknown_0203A134->strbuf[i], &gUnknown_0203A134->mail->words[total], gUnknown_0203A134->layout->var8[i].numEasyChatWords, 1); + total += gUnknown_0203A134->layout->var8[i].numEasyChatWords; } ptr = StringCopy(gUnknown_0203A134->playerName, gUnknown_0203A134->mail->playerName); if (!gUnknown_0203A134->playerIsSender) { StringCopy(ptr, gText_FromSpace); - gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->var2 - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60); + gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60); } else { sub_81DB52C(gUnknown_0203A134->playerName); - gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->var2; + gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth; } } @@ -503,19 +501,19 @@ void sub_8121B1C(void) PutWindowTilemap(1); FillWindowPixelBuffer(0, 0); FillWindowPixelBuffer(1, 0); - for (i = 0; i < gUnknown_0203A134->layout->var0; i ++) + for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++) { if (gUnknown_0203A134->strbuf[i][0] == EOS || gUnknown_0203A134->strbuf[i][0] == CHAR_SPACE) { continue; } - box_print(0, 1, gUnknown_0203A134->layout->var8[i].unk_0_2 + gUnknown_0203A134->layout->var4, y + gUnknown_0203A134->layout->var3, gUnknown_0859F2AC, 0, gUnknown_0203A134->strbuf[i]); - y += gUnknown_0203A134->layout->var8[i].unk_1; + box_print(0, 1, gUnknown_0203A134->layout->var8[i].xOffset + gUnknown_0203A134->layout->wordsYPos, y + gUnknown_0203A134->layout->wordsXPos, gUnknown_0859F2AC, 0, gUnknown_0203A134->strbuf[i]); + y += gUnknown_0203A134->layout->var8[i].lineHeight; } bufptr = StringCopy(strbuf, gText_FromSpace); StringCopy(bufptr, gUnknown_0203A134->playerName); box_x = GetStringCenterAlignXOffset(1, strbuf, gUnknown_0203A134->signatureWidth) + 0x68; - box_y = gUnknown_0203A134->layout->var1 + 0x58; + box_y = gUnknown_0203A134->layout->signatureYPos + 0x58; box_print(0, 1, box_x, box_y, gUnknown_0859F2AC, 0, strbuf); CopyWindowToVram(0, 3); CopyWindowToVram(1, 3); From 20d158cf4a17e8d362cdafbf13906c59d9916e24 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 13 Oct 2017 19:46:27 +0200 Subject: [PATCH 143/182] start decompiling emitters --- asm/rom3.s | 751 ++--------------------------------- include/battle_controllers.h | 97 ++++- include/battle_util.h | 1 + src/battle_controllers.c | 254 ++++++++++++ sym_ewram.txt | 2 +- 5 files changed, 378 insertions(+), 727 deletions(-) diff --git a/asm/rom3.s b/asm/rom3.s index ab32fa3152..eb650e7ffe 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -7,687 +7,12 @@ - thumb_func_start EmitGetMonData -EmitGetMonData: @ 80338B4 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r3, 0 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - strb r3, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitGetMonData - - thumb_func_start dp01_build_cmdbuf_x01_a_b_0 -dp01_build_cmdbuf_x01_a_b_0: @ 80338D8 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r4, 0 - movs r3, 0x1 - strb r3, [r1] - strb r5, [r1, 0x1] - strb r2, [r1, 0x2] - strb r4, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x01_a_b_0 - - thumb_func_start EmitSetMonData -EmitSetMonData: @ 8033900 - push {r4-r6,lr} - ldr r4, [sp, 0x10] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r3, 24 - lsrs r5, r3, 24 - ldr r0, =gUnknown_02022D10 - movs r3, 0x2 - strb r3, [r0] - strb r1, [r0, 0x1] - strb r2, [r0, 0x2] - adds r1, r0, 0 - cmp r5, 0 - beq _0803392E - adds r3, r1, 0x3 - adds r2, r5, 0 -_08033920: - ldrb r0, [r4] - strb r0, [r3] - adds r4, 0x1 - adds r3, 0x1 - subs r2, 0x1 - cmp r2, 0 - bne _08033920 -_0803392E: - adds r2, r5, 0x3 - adds r0, r6, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end EmitSetMonData - - thumb_func_start sub_8033940 -sub_8033940: @ 8033940 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r4, r2, 24 - ldr r0, =gUnknown_02022D10 - movs r2, 0x3 - strb r2, [r0] - strb r1, [r0, 0x1] - strb r4, [r0, 0x2] - adds r5, r0, 0 - cmp r4, 0 - beq _0803396C - adds r1, r5, 0x3 - adds r2, r4, 0 -_0803395E: - ldrb r0, [r3] - strb r0, [r1] - adds r3, 0x1 - adds r1, 0x1 - subs r2, 0x1 - cmp r2, 0 - bne _0803395E -_0803396C: - adds r2, r4, 0x3 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8033940 - - thumb_func_start EmitLoadMonSprite -EmitLoadMonSprite: @ 8033980 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0x4 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitLoadMonSprite - - thumb_func_start EmitSwitchInAnim -EmitSwitchInAnim: @ 80339A0 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r3, 0x5 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - strb r3, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitSwitchInAnim - - thumb_func_start EmitReturnPokeToBall -EmitReturnPokeToBall: @ 80339C4 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0x6 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitReturnPokeToBall - - thumb_func_start EmitDrawTrainerPic -EmitDrawTrainerPic: @ 80339E4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0x7 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitDrawTrainerPic - - thumb_func_start EmitTrainerSlide -EmitTrainerSlide: @ 8033A04 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0x8 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitTrainerSlide - - thumb_func_start EmitTrainerSlideBack -EmitTrainerSlideBack: @ 8033A24 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0x9 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitTrainerSlideBack - - thumb_func_start EmitFaintAnimation -EmitFaintAnimation: @ 8033A44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0xA - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitFaintAnimation - - thumb_func_start dp01_build_cmdbuf_x0B_B_B_B -dp01_build_cmdbuf_x0B_B_B_B: @ 8033A64 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0xB - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x0B_B_B_B - - thumb_func_start dp01_build_cmdbuf_x0C_C_C_C -dp01_build_cmdbuf_x0C_C_C_C: @ 8033A84 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0xC - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x0C_C_C_C - - thumb_func_start EmitBallThrow -EmitBallThrow: @ 8033AA4 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02022D10 - movs r2, 0xD - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitBallThrow - - thumb_func_start sub_8033AC4 -sub_8033AC4: @ 8033AC4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r1, =gUnknown_02022D10 - movs r0, 0xE - strb r0, [r1] - strb r4, [r1, 0x1] - lsls r0, r4, 1 - adds r0, r4 - adds r5, r1, 0 - cmp r0, 0 - beq _08033AF2 - adds r1, r5, 0x2 - adds r3, r0, 0 -_08033AE4: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _08033AE4 -_08033AF2: - lsls r2, r4, 1 - adds r2, r4 - adds r2, 0x2 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8033AC4 - - thumb_func_start EmitMoveAnimation -EmitMoveAnimation: @ 8033B0C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r4, [sp, 0x20] - ldr r5, [sp, 0x24] - ldr r6, [sp, 0x2C] - mov r8, r6 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 16 - lsrs r1, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r7, =gUnknown_02022D10 - movs r0, 0 - mov r12, r0 - movs r0, 0xF - strb r0, [r7] - strb r1, [r7, 0x1] - lsrs r1, 8 - strb r1, [r7, 0x2] - strb r2, [r7, 0x3] - strb r3, [r7, 0x4] - movs r6, 0xFF - lsls r6, 8 - lsrs r3, 8 - strb r3, [r7, 0x5] - strb r4, [r7, 0x6] - adds r0, r4, 0 - ands r0, r6 - asrs r0, 8 - strb r0, [r7, 0x7] - movs r0, 0xFF - lsls r0, 16 - ands r0, r4 - asrs r0, 16 - strb r0, [r7, 0x8] - lsrs r4, 24 - strb r4, [r7, 0x9] - strb r5, [r7, 0xA] - mov r0, r8 - strb r0, [r7, 0xB] - mov r0, r12 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08033BAC - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08033BAC - ldr r0, =gBattleWeather - ldrh r0, [r0] - strb r0, [r7, 0xC] - ands r6, r0 - lsrs r0, r6, 8 - strb r0, [r7, 0xD] - adds r4, r7, 0 - b _08033BB6 - .pool -_08033BAC: - ldr r0, =gUnknown_02022D10 - movs r1, 0 - strb r1, [r0, 0xC] - strb r1, [r0, 0xD] - adds r4, r0, 0 -_08033BB6: - movs r0, 0 - strb r0, [r4, 0xE] - strb r0, [r4, 0xF] - adds r0, r4, 0 - adds r0, 0x10 - ldr r1, [sp, 0x28] - movs r2, 0x1C - bl memcpy - mov r0, r9 - adds r1, r4, 0 - movs r2, 0x2C - bl PrepareBufferDataTransfer - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end EmitMoveAnimation - - thumb_func_start EmitPrintString -EmitPrintString: @ 8033BE4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, =gUnknown_02022D10 - movs r0, 0x10 - strb r0, [r2] - ldr r0, =gBattleOutcome - ldrb r0, [r0] - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - lsrs r1, 8 - strb r1, [r2, 0x3] - adds r0, r2, 0x4 - mov r12, r0 - ldr r4, =gCurrentMove - ldrh r0, [r4] - strh r0, [r2, 0x4] - ldr r0, =gLastUsedMove - ldrh r0, [r0] - mov r1, r12 - strh r0, [r1, 0x2] - ldr r0, =gLastUsedItem - ldrh r0, [r0] - strh r0, [r1, 0x4] - ldr r0, =gLastUsedAbility - ldrb r0, [r0] - strb r0, [r1, 0x6] - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - strb r0, [r1, 0x7] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x52 - ldrb r1, [r1] - mov r3, r12 - strb r1, [r3, 0x8] - adds r0, 0xB1 - ldrb r0, [r0] - strb r0, [r3, 0x9] - ldr r0, =gStringBank - ldrb r0, [r0] - strb r0, [r3, 0xA] - ldr r3, =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - mov r7, r12 - strb r0, [r7, 0xB] - movs r3, 0 - mov r9, r2 - ldr r0, =gBattleTextBuff3 - mov r8, r0 - adds r2, 0x10 - ldr r0, =gBattleMons - adds r4, r0, 0 - adds r4, 0x20 -_08033C6A: - adds r1, r2, r3 - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x58 - adds r3, 0x1 - cmp r3, 0x3 - ble _08033C6A - movs r3, 0 - mov r5, r12 - adds r5, 0x10 - mov r4, r12 - adds r4, 0x20 - ldr r6, =gBattleTextBuff2 - mov r2, r12 - adds r2, 0x30 -_08033C88: - adds r1, r5, r3 - ldr r7, =gBattleTextBuff1 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r4, r3 - adds r0, r3, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r3 - mov r7, r8 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0xF - ble _08033C88 - mov r0, r10 - mov r1, r9 - movs r2, 0x44 - bl PrepareBufferDataTransfer - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end EmitPrintString - - thumb_func_start EmitPrintStringPlayerOnly -EmitPrintStringPlayerOnly: @ 8033CFC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, =gUnknown_02022D10 - movs r0, 0x11 - strb r0, [r2] - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - lsrs r1, 8 - strb r1, [r2, 0x3] - adds r0, r2, 0x4 - mov r12, r0 - ldr r0, =gCurrentMove - ldrh r0, [r0] - strh r0, [r2, 0x4] - ldr r0, =gLastUsedMove - ldrh r0, [r0] - mov r1, r12 - strh r0, [r1, 0x2] - ldr r0, =gLastUsedItem - ldrh r0, [r0] - strh r0, [r1, 0x4] - ldr r0, =gLastUsedAbility - ldrb r0, [r0] - strb r0, [r1, 0x6] - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - strb r0, [r1, 0x7] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x52 - ldrb r0, [r0] - strb r0, [r1, 0x8] - movs r3, 0 - mov r9, r2 - ldr r7, =gBattleTextBuff3 - mov r8, r7 - mov r4, r9 - adds r4, 0x10 - ldr r0, =gBattleMons - adds r2, r0, 0 - adds r2, 0x20 -_08033D5E: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x58 - adds r3, 0x1 - cmp r3, 0x3 - ble _08033D5E - movs r3, 0 - mov r5, r12 - adds r5, 0x10 - mov r4, r12 - adds r4, 0x20 - ldr r6, =gBattleTextBuff2 - mov r2, r12 - adds r2, 0x30 -_08033D7C: - adds r1, r5, r3 - ldr r7, =gBattleTextBuff1 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r4, r3 - adds r0, r3, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r3 - mov r7, r8 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0xF - ble _08033D7C - mov r0, r10 - mov r1, r9 - movs r2, 0x44 - bl PrepareBufferDataTransfer - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end EmitPrintStringPlayerOnly - - thumb_func_start EmitChooseAction -EmitChooseAction: @ 8033DE4 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gUnknown_02022D10 - movs r3, 0x12 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitChooseAction - thumb_func_start EmitCmd13 EmitCmd13: @ 8033E10 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x13 strb r2, [r1] strb r2, [r1, 0x1] @@ -706,7 +31,7 @@ EmitChooseMove: @ 8033E30 adds r5, r3, 0 lsls r0, 24 lsrs r6, r0, 24 - ldr r3, =gUnknown_02022D10 + ldr r3, =gBattleBuffersTransferData movs r4, 0 movs r0, 0x14 strb r0, [r3] @@ -739,7 +64,7 @@ EmitOpenBag: @ 8033E6C adds r4, r1, 0 lsls r0, 24 lsrs r5, r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r0, 0x15 strb r0, [r1] movs r2, 0 @@ -767,7 +92,7 @@ EmitChoosePokemon: @ 8033EA0 ldr r6, [sp, 0x10] lsls r0, 24 lsrs r5, r0, 24 - ldr r4, =gUnknown_02022D10 + ldr r4, =gBattleBuffersTransferData movs r0, 0x16 strb r0, [r4] strb r1, [r4, 0x1] @@ -798,7 +123,7 @@ dp01_build_cmdbuf_x17_17_17_17: @ 8033EDC push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x17 strb r2, [r1] strb r2, [r1, 0x1] @@ -818,7 +143,7 @@ EmitHealthBarUpdate: @ 8033EFC lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r3, =gUnknown_02022D10 + ldr r3, =gBattleBuffersTransferData movs r4, 0 movs r2, 0x18 strb r2, [r3] @@ -848,7 +173,7 @@ EmitExpUpdate: @ 8033F34 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r3, 0x19 strb r3, [r1] strb r4, [r1, 0x1] @@ -874,7 +199,7 @@ EmitStatusIconUpdate: @ 8033F68 adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r3, 0x1A strb r3, [r1] strb r4, [r1, 0x1] @@ -917,7 +242,7 @@ EmitStatusAnimation: @ 8033FBC adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r3, 0x1B strb r3, [r1] strb r4, [r1, 0x1] @@ -948,7 +273,7 @@ dp01_build_cmdbuf_x1C_a: @ 8033FF8 adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x1C strb r2, [r1] strb r3, [r1, 0x1] @@ -966,7 +291,7 @@ dp01_build_cmdbuf_x1D_1D_numargs_varargs: @ 8034018 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r0, 0x1D strb r0, [r1] strb r0, [r1, 0x1] @@ -1007,7 +332,7 @@ sub_8034060: @ 8034060 lsrs r6, r0, 24 lsls r2, 16 lsrs r5, r2, 16 - ldr r2, =gUnknown_02022D10 + ldr r2, =gBattleBuffersTransferData movs r0, 0x1E strb r0, [r2] strb r1, [r2, 0x1] @@ -1061,7 +386,7 @@ sub_80340C8: @ 80340C8 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r0, 0x1F strb r0, [r1] strb r4, [r1, 0x1] @@ -1100,7 +425,7 @@ sub_8034110: @ 8034110 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r0, 0x20 strb r0, [r1] strb r4, [r1, 0x1] @@ -1140,7 +465,7 @@ EmitCmd_x21: @ 8034158 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r3, 0x21 strb r3, [r1] strb r4, [r1, 0x1] @@ -1161,7 +486,7 @@ dp01_build_cmdbuf_x22_a_three_bytes: @ 8034184 adds r4, r2, 0 lsls r0, 24 lsrs r5, r0, 24 - ldr r2, =gUnknown_02022D10 + ldr r2, =gBattleBuffersTransferData movs r0, 0x22 strb r0, [r2] strb r1, [r2, 0x1] @@ -1192,7 +517,7 @@ dp01_build_cmdbuf_x23_aa_0: @ 80341BC lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r3, =gUnknown_02022D10 + ldr r3, =gBattleBuffersTransferData movs r4, 0 movs r2, 0x23 strb r2, [r3] @@ -1216,7 +541,7 @@ dp01_build_cmdbuf_x24_aa_0: @ 80341E8 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r3, =gUnknown_02022D10 + ldr r3, =gBattleBuffersTransferData movs r4, 0 movs r2, 0x24 strb r2, [r3] @@ -1238,7 +563,7 @@ dp01_build_cmdbuf_x25_25_25_25: @ 8034214 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x25 strb r2, [r1] strb r2, [r1, 0x1] @@ -1257,7 +582,7 @@ dp01_build_cmdbuf_x26_a: @ 8034234 adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x26 strb r2, [r1] strb r3, [r1, 0x1] @@ -1273,7 +598,7 @@ dp01_build_cmdbuf_x27_27_27_27: @ 8034254 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x27 strb r2, [r1] strb r2, [r1, 0x1] @@ -1291,7 +616,7 @@ dp01_build_cmdbuf_x28_28_28_28: @ 8034274 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x28 strb r2, [r1] strb r2, [r1, 0x1] @@ -1309,7 +634,7 @@ EmitHitAnimation: @ 8034294 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x29 strb r2, [r1] strb r2, [r1, 0x1] @@ -1327,7 +652,7 @@ Emit_x2A: @ 80342B4 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x2A strb r2, [r1] strb r2, [r1, 0x1] @@ -1347,7 +672,7 @@ EmitEffectivenessSound: @ 80342D4 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r3, =gUnknown_02022D10 + ldr r3, =gBattleBuffersTransferData movs r4, 0 movs r2, 0x2B strb r2, [r3] @@ -1371,7 +696,7 @@ EmitPlaySound: @ 8034300 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r4, =gUnknown_02022D10 + ldr r4, =gBattleBuffersTransferData movs r3, 0x2C strb r3, [r4] strb r1, [r4, 0x1] @@ -1392,7 +717,7 @@ EmitFaintingCry: @ 803432C push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x2D strb r2, [r1] strb r2, [r1, 0x1] @@ -1411,7 +736,7 @@ EmitIntroSlide: @ 803434C adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x2E strb r2, [r1] strb r3, [r1, 0x1] @@ -1427,7 +752,7 @@ EmitIntroTrainerBallThrow: @ 803436C push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x2F strb r2, [r1] strb r2, [r1, 0x1] @@ -1448,7 +773,7 @@ EmitDrawPartyStatusSummary: @ 803438C lsrs r5, r0, 24 lsls r2, 24 lsrs r2, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r3, 0x30 strb r3, [r1] movs r0, 0x7F @@ -1484,7 +809,7 @@ EmitCmd49: @ 80343D4 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x31 strb r2, [r1] strb r2, [r1, 0x1] @@ -1502,7 +827,7 @@ Emit_x32: @ 80343F4 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x32 strb r2, [r1] strb r2, [r1, 0x1] @@ -1521,7 +846,7 @@ EmitSpriteInvisibility: @ 8034414 adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x33 strb r2, [r1] strb r3, [r1, 0x1] @@ -1542,7 +867,7 @@ EmitBattleAnimation: @ 8034438 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r3, 0x34 strb r3, [r1] strb r4, [r1, 0x1] @@ -1564,7 +889,7 @@ EmitLinkStandbyMsg: @ 8034464 lsrs r5, r0, 24 lsls r2, 24 lsrs r2, 24 - ldr r4, =gUnknown_02022D10 + ldr r4, =gBattleBuffersTransferData movs r0, 0x35 strb r0, [r4] strb r1, [r4, 0x1] @@ -1580,7 +905,7 @@ _0803448C: strb r2, [r4, 0x2] strb r2, [r4, 0x3] _08034490: - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData ldrb r2, [r1, 0x2] adds r2, 0x4 adds r0, r5, 0 @@ -1597,7 +922,7 @@ EmitResetActionMoveSelection: @ 80344A8 adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02022D10 + ldr r1, =gBattleBuffersTransferData movs r2, 0x36 strb r2, [r1] strb r3, [r1, 0x1] @@ -1614,7 +939,7 @@ Emit_x37: @ 80344C8 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r4, =gUnknown_02022D10 + ldr r4, =gBattleBuffersTransferData movs r0, 0x37 strb r0, [r4] strb r1, [r4, 0x1] diff --git a/include/battle_controllers.h b/include/battle_controllers.h index b368782100..475dcd348c 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -46,6 +46,69 @@ struct ChooseMoveStruct u8 monType2; }; +enum +{ + CONTROLLER_GETMONDATA, + CONTROLLER_GETRAWMONDATA, + CONTROLLER_SETMONDATA, + CONTROLLER_SETRAWMONDATA, + CONTROLLER_LOADMONSPRITE, + CONTROLLER_SWITCHINANIM, + CONTROLLER_RETURNPOKETOBALL, + CONTROLLER_DRAWTRAINERPIC, + CONTROLLER_TRAINERSLIDE, + CONTROLLER_TRAINERSLIDEBACK, + CONTROLLER_FAINTANIMATION, + CONTROLLER_11, + CONTROLLER_12, + CONTROLLER_BALLTHROW, + CONTROLLER_PAUSE, + CONTROLLER_MOVEANIMATION, + CONTROLLER_PRINTSTRING, + CONTROLLER_PRINTSTRINGPLAYERONLY, + CONTROLLER_CHOOSEACTION, + CONTROLLER_19, + CONTROLLER_20, + CONTROLLER_OPENBAG, + CONTROLLER_22, + CONTROLLER_23, + CONTROLLER_HEALTHBARUPDATE, + CONTROLLER_EXPBARUPDATE, + CONTROLLER_STATUSICONUPDATE, + CONTROLLER_STATUSANIMATION, + CONTROLLER_STATUSXOR, + CONTROLLER_29, + CONTROLLER_DMATRANSFER, + CONTROLLER_31, + CONTROLLER_32, + CONTROLLER_33, + CONTROLLER_34, + CONTROLLER_35, + CONTROLLER_36, + CONTROLLER_37, + CONTROLLER_38, + CONTROLLER_39, + CONTROLLER_40, + CONTROLLER_HITANIMATION, + CONTROLLER_42, + CONTROLLER_EFFECTIVENESSSOUND, + CONTROLLER_44, + CONTROLLER_FAINTINGCRY, + CONTROLLER_INTROSLIDE, + CONTROLLER_TRAINERBALLTHROW, + CONTROLLER_48, + CONTROLLER_49, + CONTROLLER_50, + CONTROLLER_SPRITEINVISIBILITY, + CONTROLLER_BATTLEANIMATION, + CONTROLLER_LINKSTANDBYMSG, + CONTROLLER_RESETACTIONMOVESELECTION, + CONTROLLER_55, + CONTROLLER_56 +}; + +#define LAST_CONTROLLER_CMD_ID CONTROLLER_56 + 1 + // general functions void HandleLinkBattleSetup(void); void SetUpBattleVarsAndBirchZigzagoon(void); @@ -53,24 +116,36 @@ void sub_8032768(void); void sub_8033648(void); // emitters +void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2); +void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); -void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit); +void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused +void EmitLoadMonSprite(u8 bufferId); +void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void EmitReturnPokeToBall(u8 bufferId, u8 arg1); +void EmitDrawTrainerPic(u8 bufferId); +void EmitTrainerSlide(u8 bufferId); +void EmitTrainerSlideBack(u8 bufferId); +void EmitFaintAnimation(u8 bufferId); +void EmitCmd11(u8 bufferId); // unused +void EmitCmd12(u8 bufferId); // unused +void EmitBallThrow(u8 bufferId, u8 caseId); +void EmitPause(u8 bufferId, u8 toWait, void *data); // unused +void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); +void EmitPrintString(u8 bufferId, u16 stringId); +void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); +void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); + + void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); void EmitEffectivenessSound(u8 bufferId, u16 songId); void EmitPlaySound(u8 bufferId, u16 songId, u8 arg2); -void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); -void EmitFaintAnimation(u8 bufferId); void Emit_x2A(u8 bufferId); void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); -void EmitReturnPokeToBall(u8 bufferId, u8 arg1); -void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2); -void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); -void EmitTrainerSlide(u8 bufferId); -void EmitTrainerSlideBack(u8 bufferId); void EmitFaintingCry(u8 bufferId); void Emit_x37(u8 bufferId, u8 arg1); void EmitHitAnimation(u8 bufferId); @@ -80,16 +155,12 @@ void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); void EmitCmd13(u8 bufferId); void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); void EmitIntroSlide(u8 bufferId, u8 terrainId); -void EmitDrawTrainerPic(u8 bufferId); -void EmitLoadMonSprite(u8 bufferId); void EmitIntroTrainerBallThrow(u8 bufferId); -void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct* movePpData); void EmitOpenBag(u8 bufferId, u8* arg1); void Emit_x32(u8 bufferId); -void EmitPrintString(u8 bufferId, u16 stringId); + void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); -void EmitBallThrow(u8 bufferId, u8 caseId); void EmitCmd_x21(u8 bufferId, u8 arg1, u16 arg2); // player controller diff --git a/include/battle_util.h b/include/battle_util.h index c1ff7d8ab7..b21b250c4c 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -33,6 +33,7 @@ #define ITEMEFFECT_ON_SWITCH_IN 0x0 #define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) +#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))) #define BS_GET_TARGET 0 #define BS_GET_ATTACKER 1 diff --git a/src/battle_controllers.c b/src/battle_controllers.c index cfa4aae713..58a595730b 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -9,6 +9,8 @@ #include "species.h" #include "recorded_battle.h" #include "util.h" +#include "abilities.h" +#include "battle_message.h" extern u32 gBattleTypeFlags; extern u32 gBattleExecBuffer; @@ -25,6 +27,7 @@ extern u8 gUnknown_0203C7B4; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; +extern u8 gBattleBuffersTransferData[0x100]; extern u8 gUnknown_02022D08; extern u8 gUnknown_02022D09; extern u8 gUnknown_02022D0A; @@ -32,6 +35,9 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gAbsentBankFlags; extern u8 gEffectBank; +extern u16 gBattleWeather; + +extern const struct BattleMove gBattleMoves[]; extern void task00_08081A90(u8 taskId); // cable_club extern void sub_81B8D64(u8 bank, u8 arg1); // party_menu @@ -926,3 +932,251 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA; } } + +void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2) +{ + gBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA; + gBattleBuffersTransferData[1] = arg1; + gBattleBuffersTransferData[2] = arg2; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) +{ + gBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA; + gBattleBuffersTransferData[1] = monId; + gBattleBuffersTransferData[2] = bytes; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA; + gBattleBuffersTransferData[1] = request; + gBattleBuffersTransferData[2] = c; + for (i = 0; i < bytes; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 3 + bytes); +} + +void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA; + gBattleBuffersTransferData[1] = monId; + gBattleBuffersTransferData[2] = bytes; + for (i = 0; i < bytes; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, bytes + 3); +} + +void EmitLoadMonSprite(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[1] = 4; + gBattleBuffersTransferData[2] = 4; + gBattleBuffersTransferData[3] = 4; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit) +{ + gBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM; + gBattleBuffersTransferData[1] = partyId; + gBattleBuffersTransferData[2] = dontClearSubstituteBit; + gBattleBuffersTransferData[3] = 5; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +// TODO: change Poke to Mon to be consistent +void EmitReturnPokeToBall(u8 bufferId, u8 arg1) +{ + gBattleBuffersTransferData[0] = CONTROLLER_RETURNPOKETOBALL; + gBattleBuffersTransferData[1] = arg1; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void EmitDrawTrainerPic(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[1] = 7; + gBattleBuffersTransferData[2] = 7; + gBattleBuffersTransferData[3] = 7; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitTrainerSlide(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[1] = 8; + gBattleBuffersTransferData[2] = 8; + gBattleBuffersTransferData[3] = 8; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitTrainerSlideBack(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[1] = 9; + gBattleBuffersTransferData[2] = 9; + gBattleBuffersTransferData[3] = 9; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitFaintAnimation(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[1] = 10; + gBattleBuffersTransferData[2] = 10; + gBattleBuffersTransferData[3] = 10; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd11(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_11; + gBattleBuffersTransferData[1] = 11; + gBattleBuffersTransferData[2] = 11; + gBattleBuffersTransferData[3] = 11; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd12(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_12; + gBattleBuffersTransferData[1] = 12; + gBattleBuffersTransferData[2] = 12; + gBattleBuffersTransferData[3] = 12; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitBallThrow(u8 bufferId, u8 caseId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROW; + gBattleBuffersTransferData[1] = caseId; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void EmitPause(u8 bufferId, u8 toWait, void *data) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_PAUSE; + gBattleBuffersTransferData[1] = toWait; + for (i = 0; i < toWait * 3; i++) + gBattleBuffersTransferData[2 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, toWait * 3 + 2); +} + +void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit) +{ + gBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION; + gBattleBuffersTransferData[1] = move; + gBattleBuffersTransferData[2] = (move & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = turnOfMove; + gBattleBuffersTransferData[4] = movePower; + gBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8; + gBattleBuffersTransferData[6] = dmg; + gBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8; + gBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16; + gBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24; + gBattleBuffersTransferData[10] = friendship; + gBattleBuffersTransferData[11] = multihit; + if (WEATHER_HAS_EFFECT2) + { + gBattleBuffersTransferData[12] = gBattleWeather; + gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; + } + else + { + gBattleBuffersTransferData[12] = 0; + gBattleBuffersTransferData[13] = 0; + } + gBattleBuffersTransferData[14] = 0; + gBattleBuffersTransferData[15] = 0; + memcpy(&gBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct)); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 16 + sizeof(struct DisableStruct)); +} + +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u16 gCurrentMove; +extern u16 gLastUsedMove; +extern u16 gLastUsedItem; +extern u8 gBattleOutcome; +extern u8 gLastUsedAbility; +extern u8 gStringBank; + +void EmitPrintString(u8 bufferId, u16 stringID) +{ + s32 i; + struct StringInfoBattle* stringInfo; + + gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRING; + gBattleBuffersTransferData[1] = gBattleOutcome; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gLastUsedMove; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = gBattleScripting.bank; + stringInfo->unk1605E = gBattleStruct->field_52; + stringInfo->hpScale = gBattleStruct->hpScale; + stringInfo->StringBank = gStringBank; + stringInfo->moveType = gBattleMoves[gCurrentMove].type; + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); +} + +void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID) +{ + s32 i; + struct StringInfoBattle* stringInfo; + + gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY; + gBattleBuffersTransferData[1] = 17; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gLastUsedMove; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = gBattleScripting.bank; + stringInfo->unk1605E = gBattleStruct->field_52; + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); +} + +void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2) +{ + gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION; + gBattleBuffersTransferData[1] = arg1; + gBattleBuffersTransferData[2] = arg2; + gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 495d233f95..368e2b84af 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -196,7 +196,7 @@ gUnknown_02022D0A: @ 2022D0A gUnknown_02022D0C: @ 2022D0C .space 0x4 -gUnknown_02022D10: @ 2022D10 +gBattleBuffersTransferData: @ 2022D10 .space 0x100 gUnknown_02022E10: @ 2022E10 From 2852f4f1b86f1a5fbfdceb296d184158068b5ad5 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 13 Oct 2017 19:48:09 -0500 Subject: [PATCH 144/182] Continue attempt to decomp braillemessage --- include/menu.h | 1 + include/new_menu_helpers.h | 1 + src/scrcmd.c | 56 +++++++++++++++++++++++--------------- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/include/menu.h b/include/menu.h index 766aa9d39c..66ac73e03b 100644 --- a/include/menu.h +++ b/include/menu.h @@ -19,5 +19,6 @@ void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); +void sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index a597fc9a27..6377897d34 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -4,5 +4,6 @@ void sub_81973A4(void); void sub_81973C4(u8, u8); void sub_819746C(u8 windowId, bool8 copyToVram); +void sub_81973FC(u8, u8); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/src/scrcmd.c b/src/scrcmd.c index f6039142cf..af314609c8 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -26,6 +26,7 @@ #include "lilycove_lady.h" #include "main.h" #include "map_obj_lock.h" +#include "menu.h" #include "money.h" #include "mystery_event_script.h" #include "new_menu_helpers.h" @@ -46,6 +47,7 @@ #include "sound.h" #include "string_util.h" #include "text.h" +#include "text_window.h" #include "trainer_see.h" #include "tv.h" #include "window.h" @@ -1483,46 +1485,56 @@ bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) return TRUE; } -// Temporary, will come back to this later. -/*bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) +// Lots of math, can't figure it out. +/* +bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); - u8 *localStringVar4; + struct WindowTemplate template1; + struct WindowTemplate template2; + int i; u8 width; u8 height; - u8 temp; + int temp1; + int temp2; + u8 x; + u8 y; - StringExpandPlaceholders(gStringVar4, ptr); + StringExpandPlaceholders(gStringVar4, ptr + 6); width = GetStringWidth(6, gStringVar4, -1) / 8; if (width > 0x1C) width = 0x1C; - height = 4; - localStringVar4 = gStringVar4; - temp = width + 2; - - for (; *localStringVar4 != 0xFF; localStringVar4++) + for (i = 0, height = 4; gStringVar4[i] != 0xFF;) { - if (*localStringVar4 == 0xFE) - height += 4; + if (gStringVar4[i++] == 0xFE) + height += 3; } if (height > 0x12) height = 0x12; - temp = 0x1E - temp; + x = width + 2; + temp1 = (0x1E - x) / 2; + x = temp1 + 1; + temp1 = ((x - temp1 - 1) * 8 + 3); - u8 v2 = ptr[0]; - u8 v3 = ptr[1]; - u8 v4 = ptr[2]; - u8 v5 = ptr[3]; - u8 v6 = ptr[4]; - u8 v7 = ptr[5]; - StringBraille(gStringVar4, ptr + 6); - MenuDrawTextWindow(v2, v3, v4, v5); - MenuPrint(gStringVar4, v6, v7); + y = height + 2; + temp2 = (0x14 - y) / 2; + y = temp2 + 2; + temp2 = ((y - temp2 - 1) * 8); + + sub_8198A50(&template1, 0, x, y, width, height, 0xF, 0x1); + template2 = template1; + gUnknown_03000F30 = AddWindow(&template2); + sub_809882C(gUnknown_03000F30, 0x214, 0xE0); + sub_81973FC(gUnknown_03000F30, 0); + PutWindowTilemap(gUnknown_03000F30); + FillWindowPixelBuffer(gUnknown_03000F30, 0x11); + PrintTextOnWindow(gUnknown_03000F30, 6, gStringVar4, temp1, temp2, 0xFF, 0x0); + CopyWindowToVram(gUnknown_03000F30, 3); return FALSE; }*/ __attribute__((naked)) From 14e41d6c508e5c425dff8f2c4933ae4c8b7ab762 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 14 Oct 2017 11:34:26 +0200 Subject: [PATCH 145/182] rom3 is decompiled --- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 18 +- asm/battle_controller_player.s | 38 +- asm/battle_controller_player_partner.s | 10 +- asm/battle_controller_recorded_opponent.s | 10 +- asm/battle_controller_recorded_player.s | 12 +- asm/battle_controller_safari.s | 6 +- asm/battle_controller_wally.s | 10 +- asm/rom3.s | 971 ---------------------- include/battle_controllers.h | 75 +- include/link.h | 1 - include/recorded_battle.h | 1 + ld_script.txt | 1 - src/battle_2.c | 4 +- src/battle_ai_switch_items.c | 18 +- src/battle_controllers.c | 407 ++++++++- src/battle_script_commands.c | 34 +- 18 files changed, 514 insertions(+), 1106 deletions(-) delete mode 100644 asm/rom3.s diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index bf350a8bc3..ee8cf71549 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -1572,7 +1572,7 @@ _0806513A: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl LinkOpponentBufferExecCompleted add sp, 0x100 pop {r4-r6} diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index b26943cf5c..37d8f8346e 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -1113,7 +1113,7 @@ _0814B872: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl LinkPartnerBufferExecCompleted add sp, 0x100 pop {r4-r6} diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 424e4159df..056d921476 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -1666,7 +1666,7 @@ _0805FFEA: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl OpponentBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -2607,7 +2607,7 @@ _08060806: ldrb r1, [r0] movs r0, 0x1 adds r2, r4, 0 - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl OpponentBufferExecCompleted add sp, 0x58 pop {r4-r7} @@ -5243,7 +5243,7 @@ sub_8061FB8: @ 8061FB8 movs r0, 0x1 movs r1, 0xA _08061FD6: - bl EmitCmd_x21 + bl EmitCmd33 _08061FDA: bl OpponentBufferExecCompleted b _08062156 @@ -5347,7 +5347,7 @@ _0806209C: movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 - bl EmitCmd_x21 + bl EmitCmd33 b _08061FDA .pool _080620C4: @@ -5378,7 +5378,7 @@ _080620C6: movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 - bl EmitCmd_x21 + bl EmitCmd33 b _08062152 .pool _08062108: @@ -5401,7 +5401,7 @@ _08062108: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 b _08062152 .pool _0806213C: @@ -5413,7 +5413,7 @@ _0806213C: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 _08062152: bl OpponentBufferExecCompleted _08062156: @@ -5435,7 +5435,7 @@ sub_806215C: @ 806215C adds r0, 0xC0 ldrb r1, [r0] movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 + bl EmitCmd35 bl OpponentBufferExecCompleted pop {r0} bx r0 @@ -5550,7 +5550,7 @@ _0806225A: lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 bl OpponentBufferExecCompleted pop {r4-r7} pop {r0} diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 047c62f6b7..d9c22e13ad 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -226,7 +226,7 @@ _0805764C: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 b _080577C2 _08057658: movs r0, 0x20 @@ -393,7 +393,7 @@ _080577B2: movs r1, 0xC _080577BC: movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 _080577C2: bl PlayerBufferExecCompleted b _080577E8 @@ -518,7 +518,7 @@ _080578A0: orrs r2, r0 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free @@ -1086,7 +1086,7 @@ _08057E14: _08057E1C: movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 bl PlayerBufferExecCompleted b _08057F9E .pool @@ -3413,7 +3413,7 @@ _080591FE: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitCmd_x21 + bl EmitCmd33 strb r5, [r4] bl IsDoubleBattle lsls r0, 24 @@ -3686,7 +3686,7 @@ _08059430: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitCmd_x21 + bl EmitCmd33 strb r5, [r4] ldr r0, =sub_8059544 str r0, [r6] @@ -4059,14 +4059,14 @@ sub_8059828: @ 8059828 ldrb r1, [r0] ldr r2, =gUnknown_0203CF00 movs r0, 0x1 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 b _0805987A .pool _08059870: movs r0, 0x1 movs r1, 0x6 movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 _0805987A: ldr r1, =gBattleBufferA ldr r0, =gActiveBank @@ -4130,7 +4130,7 @@ sub_80598E0: @ 80598E0 ldr r0, =gScriptItemId ldrh r1, [r0] movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 + bl EmitCmd35 bl PlayerBufferExecCompleted _08059906: pop {r0} @@ -4291,14 +4291,14 @@ _08059A2C: movs r0, 0x1 movs r1, 0xE movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 b _08059A76 .pool _08059A6C: movs r0, 0x1 movs r1, 0xD movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 _08059A76: bl PlayerBufferExecCompleted _08059A7A: @@ -4772,7 +4772,7 @@ _08059E4E: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl PlayerBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -5713,7 +5713,7 @@ _0805A66A: ldrb r1, [r0] movs r0, 0x1 adds r2, r4, 0 - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl PlayerBufferExecCompleted add sp, 0x58 pop {r4-r7} @@ -8658,7 +8658,7 @@ sub_805C158: @ 805C158 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 bl PlayerBufferExecCompleted _0805C194: pop {r0} @@ -8826,7 +8826,7 @@ _0805C2C8: lsrs r1, 24 movs r0, 0x1 mov r2, r12 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 bl PlayerBufferExecCompleted b _0805C3BC .pool @@ -9378,7 +9378,7 @@ sub_805C80C: @ 805C80C movs r0, 0x1 movs r1, 0 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -9390,7 +9390,7 @@ sub_805C820: @ 805C820 movs r0, 0x1 movs r1, 0 movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -9401,7 +9401,7 @@ sub_805C834: @ 805C834 push {lr} movs r0, 0x1 movs r1, 0 - bl dp01_build_cmdbuf_x23_aa_0 + bl EmitCmd35 bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -9412,7 +9412,7 @@ sub_805C848: @ 805C848 push {lr} movs r0, 0x1 movs r1, 0 - bl dp01_build_cmdbuf_x24_aa_0 + bl EmitCmd36 bl PlayerBufferExecCompleted pop {r0} bx r0 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 35ee3a733f..d519f5daa8 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -645,7 +645,7 @@ _081BB2E2: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitCmd_x21 + bl EmitCmd33 strb r5, [r4] bl IsDoubleBattle lsls r0, 24 @@ -918,7 +918,7 @@ _081BB514: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitCmd_x21 + bl EmitCmd33 strb r5, [r4] ldr r0, =sub_81BB628 str r0, [r6] @@ -1688,7 +1688,7 @@ _081BBCBE: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl PlayerPartnerBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -5068,7 +5068,7 @@ _081BDB3C: orrs r2, r5 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 bl PlayerPartnerBufferExecCompleted pop {r4-r6} pop {r0} @@ -5138,7 +5138,7 @@ _081BDBD0: lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 bl PlayerPartnerBufferExecCompleted pop {r4-r6} pop {r0} diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 562b55d4d2..19185a25ac 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -1553,7 +1553,7 @@ _0818727E: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl RecordedOpponentBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -4754,7 +4754,7 @@ sub_8188EF0: @ 8188EF0 lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 bl RecordedOpponentBufferExecCompleted pop {r0} bx r0 @@ -4785,7 +4785,7 @@ sub_8188F20: @ 8188F20 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 b _08188F6C .pool _08188F48: @@ -4803,7 +4803,7 @@ _08188F48: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 _08188F6C: bl RecordedOpponentBufferExecCompleted pop {r4,r5} @@ -4839,7 +4839,7 @@ sub_8188F88: @ 8188F88 ldrb r1, [r0] movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 bl RecordedOpponentBufferExecCompleted pop {r4} pop {r0} diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index f7dfc0fedf..9693137472 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -1489,7 +1489,7 @@ _0818A646: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl RecordedPlayerBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -4861,7 +4861,7 @@ sub_818C49C: @ 818C49C lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 bl RecordedPlayerBufferExecCompleted _0818C4C6: pop {r0} @@ -4897,7 +4897,7 @@ _0818C508: lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 bl RecordedPlayerBufferExecCompleted _0818C522: pop {r0} @@ -4929,7 +4929,7 @@ sub_818C538: @ 818C538 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 b _0818C584 .pool _0818C560: @@ -4947,7 +4947,7 @@ _0818C560: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 _0818C584: bl RecordedPlayerBufferExecCompleted pop {r4,r5} @@ -4983,7 +4983,7 @@ sub_818C5A0: @ 818C5A0 ldrb r1, [r0] movs r0, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes + bl EmitCmd34 bl RecordedPlayerBufferExecCompleted pop {r4} pop {r0} diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index a45ae6cee1..d7efd69fe6 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -103,13 +103,13 @@ _0815942A: movs r1, 0x7 _0815942E: movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 b _08159440 _08159436: movs r0, 0x1 movs r1, 0x8 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 _08159440: bl SafariBufferExecCompleted b _0815954E @@ -399,7 +399,7 @@ sub_8159698: @ 8159698 ldr r0, =gScriptItemId ldrh r1, [r0] movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 + bl EmitCmd35 bl SafariBufferExecCompleted _081596BE: pop {r0} diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index de17547a11..d028f3bac3 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -153,7 +153,7 @@ _081684CE: movs r1, 0x9 _081684E4: movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 bl WallyBufferExecCompleted ldr r1, [r4] adds r1, 0x94 @@ -208,7 +208,7 @@ _08168540: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl EmitCmd_x21 + bl EmitCmd33 bl WallyBufferExecCompleted _08168564: pop {r4,r5} @@ -311,7 +311,7 @@ sub_8168610: @ 8168610 ldr r0, =gScriptItemId ldrh r1, [r0] movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 + bl EmitCmd35 bl WallyBufferExecCompleted _08168636: pop {r0} @@ -975,7 +975,7 @@ _08168BFA: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl EmitDataTransfer bl WallyBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -3777,7 +3777,7 @@ _0816A550: lsls r2, 1 movs r0, 0x1 movs r1, 0xA - bl EmitCmd_x21 + bl EmitCmd33 bl WallyBufferExecCompleted _0816A574: pop {r4} diff --git a/asm/rom3.s b/asm/rom3.s deleted file mode 100644 index 7ed49bd4d3..0000000000 --- a/asm/rom3.s +++ /dev/null @@ -1,971 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start EmitCmd13 -EmitCmd13: @ 8033E10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x13 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitCmd13 - - thumb_func_start EmitChooseMove -EmitChooseMove: @ 8033E30 - push {r4-r6,lr} - adds r5, r3, 0 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, =gBattleBuffersTransferData - movs r4, 0 - movs r0, 0x14 - strb r0, [r3] - strb r1, [r3, 0x1] - strb r2, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0 - adds r1, r3, 0 - adds r4, r1, 0x4 -_08033E4C: - adds r0, r5, r2 - ldrb r0, [r0] - strb r0, [r4] - adds r4, 0x1 - adds r2, 0x1 - cmp r2, 0x13 - bls _08033E4C - adds r0, r6, 0 - movs r2, 0x18 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end EmitChooseMove - - thumb_func_start EmitOpenBag -EmitOpenBag: @ 8033E6C - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r0, 0x15 - strb r0, [r1] - movs r2, 0 - adds r3, r1, 0x1 -_08033E7E: - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2 - ble _08033E7E - adds r0, r5, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end EmitOpenBag - - thumb_func_start EmitChoosePokemon -EmitChoosePokemon: @ 8033EA0 - push {r4-r6,lr} - ldr r6, [sp, 0x10] - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gBattleBuffersTransferData - movs r0, 0x16 - strb r0, [r4] - strb r1, [r4, 0x1] - strb r2, [r4, 0x2] - strb r3, [r4, 0x3] - movs r2, 0 - adds r1, r4, 0 - adds r3, r1, 0x4 -_08033EBA: - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2 - ble _08033EBA - adds r0, r5, 0 - movs r2, 0x8 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end EmitChoosePokemon - - thumb_func_start dp01_build_cmdbuf_x17_17_17_17 -dp01_build_cmdbuf_x17_17_17_17: @ 8033EDC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x17 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x17_17_17_17 - - thumb_func_start EmitHealthBarUpdate -EmitHealthBarUpdate: @ 8033EFC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, =gBattleBuffersTransferData - movs r4, 0 - movs r2, 0x18 - strb r2, [r3] - strb r4, [r3, 0x1] - strb r1, [r3, 0x2] - lsls r1, 16 - asrs r1, 16 - movs r2, 0xFF - lsls r2, 8 - ands r1, r2 - asrs r1, 8 - strb r1, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitHealthBarUpdate - - thumb_func_start EmitExpUpdate -EmitExpUpdate: @ 8033F34 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gBattleBuffersTransferData - movs r3, 0x19 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsls r2, 16 - asrs r2, 16 - movs r3, 0xFF - lsls r3, 8 - ands r2, r3 - asrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitExpUpdate - - thumb_func_start EmitStatusIconUpdate -EmitStatusIconUpdate: @ 8033F68 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r3, 0x1A - strb r3, [r1] - strb r4, [r1, 0x1] - movs r6, 0xFF - lsls r6, 8 - adds r3, r4, 0 - ands r3, r6 - lsrs r3, 8 - strb r3, [r1, 0x2] - movs r5, 0xFF - lsls r5, 16 - adds r3, r4, 0 - ands r3, r5 - lsrs r3, 16 - strb r3, [r1, 0x3] - lsrs r4, 24 - strb r4, [r1, 0x4] - strb r2, [r1, 0x5] - adds r3, r2, 0 - ands r3, r6 - lsrs r3, 8 - strb r3, [r1, 0x6] - adds r3, r2, 0 - ands r3, r5 - lsrs r3, 16 - strb r3, [r1, 0x7] - lsrs r2, 24 - strb r2, [r1, 0x8] - movs r2, 0x9 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end EmitStatusIconUpdate - - thumb_func_start EmitStatusAnimation -EmitStatusAnimation: @ 8033FBC - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r3, 0x1B - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - movs r3, 0xFF - lsls r3, 8 - ands r3, r2 - lsrs r3, 8 - strb r3, [r1, 0x3] - movs r3, 0xFF - lsls r3, 16 - ands r3, r2 - lsrs r3, 16 - strb r3, [r1, 0x4] - lsrs r2, 24 - strb r2, [r1, 0x5] - movs r2, 0x6 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitStatusAnimation - - thumb_func_start dp01_build_cmdbuf_x1C_a -dp01_build_cmdbuf_x1C_a: @ 8033FF8 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x1C - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x1C_a - - thumb_func_start dp01_build_cmdbuf_x1D_1D_numargs_varargs -dp01_build_cmdbuf_x1D_1D_numargs_varargs: @ 8034018 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r1, =gBattleBuffersTransferData - movs r0, 0x1D - strb r0, [r1] - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - adds r5, r1, 0 - cmp r4, 0 - beq _08034048 - adds r1, r5, 0x4 - adds r3, r4, 0 -_0803403A: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _0803403A -_08034048: - adds r2, r4, 0x4 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x1D_1D_numargs_varargs - - thumb_func_start sub_8034060 -sub_8034060: @ 8034060 - push {r4-r6,lr} - adds r4, r3, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 16 - lsrs r5, r2, 16 - ldr r2, =gBattleBuffersTransferData - movs r0, 0x1E - strb r0, [r2] - strb r1, [r2, 0x1] - movs r3, 0xFF - lsls r3, 8 - adds r0, r1, 0 - ands r0, r3 - lsrs r0, 8 - strb r0, [r2, 0x2] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r2, 0x3] - lsrs r1, 24 - strb r1, [r2, 0x4] - strb r5, [r2, 0x5] - adds r0, r5, 0 - ands r0, r3 - lsrs r0, 8 - strb r0, [r2, 0x6] - adds r1, r2, 0 - cmp r5, 0 - beq _080340B0 - adds r3, r1, 0x7 - adds r2, r5, 0 -_080340A2: - ldrb r0, [r4] - strb r0, [r3] - adds r4, 0x1 - adds r3, 0x1 - subs r2, 0x1 - cmp r2, 0 - bne _080340A2 -_080340B0: - adds r2, r5, 0x7 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8034060 - - thumb_func_start sub_80340C8 -sub_80340C8: @ 80340C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r1, =gBattleBuffersTransferData - movs r0, 0x1F - strb r0, [r1] - strb r4, [r1, 0x1] - lsrs r0, r4, 8 - strb r0, [r1, 0x2] - adds r5, r1, 0 - cmp r4, 0 - beq _080340F6 - adds r1, r5, 0x3 - adds r3, r4, 0 -_080340E8: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080340E8 -_080340F6: - adds r2, r4, 0x3 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80340C8 - - thumb_func_start sub_8034110 -sub_8034110: @ 8034110 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r1, =gBattleBuffersTransferData - movs r0, 0x20 - strb r0, [r1] - strb r4, [r1, 0x1] - lsrs r0, r4, 8 - strb r0, [r1, 0x2] - adds r5, r1, 0 - cmp r4, 0 - beq _0803413E - adds r1, r5, 0x3 - adds r3, r4, 0 -_08034130: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _08034130 -_0803413E: - adds r2, r4, 0x3 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8034110 - - thumb_func_start EmitCmd_x21 -EmitCmd_x21: @ 8034158 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gBattleBuffersTransferData - movs r3, 0x21 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitCmd_x21 - - thumb_func_start dp01_build_cmdbuf_x22_a_three_bytes -dp01_build_cmdbuf_x22_a_three_bytes: @ 8034184 - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, =gBattleBuffersTransferData - movs r0, 0x22 - strb r0, [r2] - strb r1, [r2, 0x1] - movs r3, 0 - adds r1, r2, 0x2 -_08034198: - adds r0, r4, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r3, 0x1 - cmp r3, 0x2 - ble _08034198 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0x5 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x22_a_three_bytes - - thumb_func_start dp01_build_cmdbuf_x23_aa_0 -dp01_build_cmdbuf_x23_aa_0: @ 80341BC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, =gBattleBuffersTransferData - movs r4, 0 - movs r2, 0x23 - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x23_aa_0 - - thumb_func_start dp01_build_cmdbuf_x24_aa_0 -dp01_build_cmdbuf_x24_aa_0: @ 80341E8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, =gBattleBuffersTransferData - movs r4, 0 - movs r2, 0x24 - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x24_aa_0 - - thumb_func_start dp01_build_cmdbuf_x25_25_25_25 -dp01_build_cmdbuf_x25_25_25_25: @ 8034214 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x25 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x25_25_25_25 - - thumb_func_start dp01_build_cmdbuf_x26_a -dp01_build_cmdbuf_x26_a: @ 8034234 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x26 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x26_a - - thumb_func_start dp01_build_cmdbuf_x27_27_27_27 -dp01_build_cmdbuf_x27_27_27_27: @ 8034254 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x27 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x27_27_27_27 - - thumb_func_start dp01_build_cmdbuf_x28_28_28_28 -dp01_build_cmdbuf_x28_28_28_28: @ 8034274 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x28 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end dp01_build_cmdbuf_x28_28_28_28 - - thumb_func_start EmitHitAnimation -EmitHitAnimation: @ 8034294 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x29 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitHitAnimation - - thumb_func_start Emit_x2A -Emit_x2A: @ 80342B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x2A - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end Emit_x2A - - thumb_func_start EmitEffectivenessSound -EmitEffectivenessSound: @ 80342D4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, =gBattleBuffersTransferData - movs r4, 0 - movs r2, 0x2B - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitEffectivenessSound - - thumb_func_start EmitPlaySound -EmitPlaySound: @ 8034300 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r4, =gBattleBuffersTransferData - movs r3, 0x2C - strb r3, [r4] - strb r1, [r4, 0x1] - lsrs r1, 8 - strb r1, [r4, 0x2] - strb r2, [r4, 0x3] - adds r1, r4, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitPlaySound - - thumb_func_start EmitFaintingCry -EmitFaintingCry: @ 803432C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x2D - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitFaintingCry - - thumb_func_start EmitIntroSlide -EmitIntroSlide: @ 803434C - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x2E - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitIntroSlide - - thumb_func_start EmitIntroTrainerBallThrow -EmitIntroTrainerBallThrow: @ 803436C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x2F - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitIntroTrainerBallThrow - - thumb_func_start EmitDrawPartyStatusSummary -EmitDrawPartyStatusSummary: @ 803438C - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r1, =gBattleBuffersTransferData - movs r3, 0x30 - strb r3, [r1] - movs r0, 0x7F - ands r0, r2 - strb r0, [r1, 0x1] - movs r0, 0x80 - ands r0, r2 - lsls r0, 24 - lsrs r0, 31 - strb r0, [r1, 0x2] - strb r3, [r1, 0x3] - movs r2, 0 - adds r3, r1, 0x4 -_080343B4: - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2F - ble _080343B4 - adds r0, r5, 0 - movs r2, 0x34 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end EmitDrawPartyStatusSummary - - thumb_func_start EmitCmd49 -EmitCmd49: @ 80343D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x31 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitCmd49 - - thumb_func_start Emit_x32 -Emit_x32: @ 80343F4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x32 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end Emit_x32 - - thumb_func_start EmitSpriteInvisibility -EmitSpriteInvisibility: @ 8034414 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x33 - strb r2, [r1] - strb r3, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitSpriteInvisibility - - thumb_func_start EmitBattleAnimation -EmitBattleAnimation: @ 8034438 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gBattleBuffersTransferData - movs r3, 0x34 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end EmitBattleAnimation - - thumb_func_start EmitLinkStandbyMsg -EmitLinkStandbyMsg: @ 8034464 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r4, =gBattleBuffersTransferData - movs r0, 0x35 - strb r0, [r4] - strb r1, [r4, 0x1] - cmp r2, 0 - beq _0803448C - adds r0, r4, 0x4 - bl sub_81850DC - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - b _08034490 - .pool -_0803448C: - strb r2, [r4, 0x2] - strb r2, [r4, 0x3] -_08034490: - ldr r1, =gBattleBuffersTransferData - ldrb r2, [r1, 0x2] - adds r2, 0x4 - adds r0, r5, 0 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end EmitLinkStandbyMsg - - thumb_func_start EmitResetActionMoveSelection -EmitResetActionMoveSelection: @ 80344A8 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleBuffersTransferData - movs r2, 0x36 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .pool - thumb_func_end EmitResetActionMoveSelection - - thumb_func_start Emit_x37 -Emit_x37: @ 80344C8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, =gBattleBuffersTransferData - movs r0, 0x37 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - lsrs r0, 31 - strb r0, [r4, 0x2] - ldrb r0, [r1] - lsls r0, 28 - lsrs r0, 31 - strb r0, [r4, 0x3] - adds r0, r4, 0x6 - bl sub_81850DC - strb r0, [r4, 0x4] - strb r0, [r4, 0x5] - ldrb r2, [r4, 0x4] - adds r2, 0x6 - adds r0, r5, 0 - adds r1, r4, 0 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end Emit_x37 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 475dcd348c..4bc6b7b84e 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -54,7 +54,7 @@ enum CONTROLLER_SETRAWMONDATA, CONTROLLER_LOADMONSPRITE, CONTROLLER_SWITCHINANIM, - CONTROLLER_RETURNPOKETOBALL, + CONTROLLER_RETURNMONTOBALL, CONTROLLER_DRAWTRAINERPIC, CONTROLLER_TRAINERSLIDE, CONTROLLER_TRAINERSLIDEBACK, @@ -68,17 +68,17 @@ enum CONTROLLER_PRINTSTRINGPLAYERONLY, CONTROLLER_CHOOSEACTION, CONTROLLER_19, - CONTROLLER_20, + CONTROLLER_CHOOSEMOVE, CONTROLLER_OPENBAG, - CONTROLLER_22, + CONTROLLER_CHOOSEPOKEMON, CONTROLLER_23, CONTROLLER_HEALTHBARUPDATE, - CONTROLLER_EXPBARUPDATE, + CONTROLLER_EXPUPDATE, CONTROLLER_STATUSICONUPDATE, CONTROLLER_STATUSANIMATION, CONTROLLER_STATUSXOR, - CONTROLLER_29, - CONTROLLER_DMATRANSFER, + CONTROLLER_DATATRANSFER, + CONTROLLER_DMA3TRANSFER, CONTROLLER_31, CONTROLLER_32, CONTROLLER_33, @@ -92,11 +92,11 @@ enum CONTROLLER_HITANIMATION, CONTROLLER_42, CONTROLLER_EFFECTIVENESSSOUND, - CONTROLLER_44, + CONTROLLER_PLAYFANFAREORBGM, CONTROLLER_FAINTINGCRY, CONTROLLER_INTROSLIDE, - CONTROLLER_TRAINERBALLTHROW, - CONTROLLER_48, + CONTROLLER_INTROTRAINERBALLTHROW, + CONTROLLER_DRAWPARTYSTATUSSUMMARY, CONTROLLER_49, CONTROLLER_50, CONTROLLER_SPRITEINVISIBILITY, @@ -114,6 +114,7 @@ void HandleLinkBattleSetup(void); void SetUpBattleVarsAndBirchZigzagoon(void); void sub_8032768(void); void sub_8033648(void); +void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); // emitters void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2); @@ -122,7 +123,7 @@ void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused void EmitLoadMonSprite(u8 bufferId); void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); -void EmitReturnPokeToBall(u8 bufferId, u8 arg1); +void EmitReturnMonToBall(u8 bufferId, u8 arg1); void EmitDrawTrainerPic(u8 bufferId); void EmitTrainerSlide(u8 bufferId); void EmitTrainerSlideBack(u8 bufferId); @@ -135,33 +136,43 @@ void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 void EmitPrintString(u8 bufferId, u16 stringId); void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); - - -void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); -void EmitEffectivenessSound(u8 bufferId, u16 songId); -void EmitPlaySound(u8 bufferId, u16 songId, u8 arg2); -void Emit_x2A(u8 bufferId); -void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); -void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); -void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void EmitCmd19(u8 bufferId); +void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); +void EmitOpenBag(u8 bufferId, u8* arg1); void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); -void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); -void EmitFaintingCry(u8 bufferId); -void Emit_x37(u8 bufferId, u8 arg1); -void EmitHitAnimation(u8 bufferId); -void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); -void EmitCmd49(u8 bufferId); -void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); -void EmitCmd13(u8 bufferId); +void EmitCmd23(u8 bufferId); // unused +void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); +void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); +void EmitStatusXor(u8 bufferId, u8 b); // unused +void EmitDataTransfer(u8 bufferId, u16 size, void *data); +void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused +void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused +void EmitCmd32(u8 bufferId, u16 size, void *c); // unused +void EmitCmd33(u8 bufferId, u8 arg1, u16 arg2); +void EmitCmd34(u8 bufferId, u8 b, u8 *c); +void EmitCmd35(u8 bufferId, u16 b); +void EmitCmd36(u8 bufferId, u16 b); +void EmitCmd37(u8 bufferId); +void EmitCmd38(u8 bufferId, u8 b); +void EmitCmd39(u8 bufferId); +void EmitCmd40(u8 bufferId); +void EmitHitAnimation(u8 bufferId); +void EmitCmd42(u8 bufferId); +void EmitEffectivenessSound(u8 bufferId, u16 songId); +void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); +void EmitFaintingCry(u8 bufferId); void EmitIntroSlide(u8 bufferId, u8 terrainId); void EmitIntroTrainerBallThrow(u8 bufferId); -void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct* movePpData); -void EmitOpenBag(u8 bufferId, u8* arg1); -void Emit_x32(u8 bufferId); - +void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void EmitCmd49(u8 bufferId); +void EmitCmd50(u8 bufferId); +void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); +void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); -void EmitCmd_x21(u8 bufferId, u8 arg1, u16 arg2); +void EmitCmd55(u8 bufferId, u8 arg1); // player controller void SetBankFuncToPlayerBufferRunCommand(void); diff --git a/include/link.h b/include/link.h index 7965a4b1db..b8835ce04a 100644 --- a/include/link.h +++ b/include/link.h @@ -185,7 +185,6 @@ bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); void sub_800ADF8(void); -u8 GetLinkPlayerCount(void); void sub_800B488(void); void sub_8009734(void); void sub_800A620(void); diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 2d8135e41c..6b80e220fa 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -17,5 +17,6 @@ void sub_818603C(u8); void sub_8185FD0(void); void sub_8186444(void); void sub_8185EB8(void); +u8 sub_81850DC(u8 *arg0); #endif // GUARD_RECORDED_BATTLE_H diff --git a/ld_script.txt b/ld_script.txt index 5a9dace281..0290688745 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -55,7 +55,6 @@ SECTIONS { src/rtc.o(.text); asm/main_menu.o(.text); src/battle_controllers.o(.text); - asm/rom3.o(.text); src/decompress.o(.text); asm/battle_1.o(.text); src/battle_2.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index 7db3fd38e4..16c07114a6 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -4080,7 +4080,7 @@ static void HandleTurnActionSelectionState(void) if (gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_MULTIPLETURNS || gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_RECHARGE) { - Emit_x32(0); + EmitCmd50(0); MarkBufferBankForExecution(gActiveBank); return; } @@ -4108,7 +4108,7 @@ static void HandleTurnActionSelectionState(void) { RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 3); } - Emit_x32(0); + EmitCmd50(0); MarkBufferBankForExecution(gActiveBank); return; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 661759a98f..d86be6fad4 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -39,7 +39,7 @@ static bool8 ShouldSwitchIfPerishSong(void) && gDisableStructs[gActiveBank].perishSong1 == 0) { *(gBattleStruct->field_294 + gActiveBank) = 6; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } @@ -121,7 +121,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) { // we found a mon *(gBattleStruct->field_294 + gActiveBank) = i; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } } @@ -221,7 +221,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) { // we found a mon *(gBattleStruct->field_294 + gActiveBank) = i; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } } @@ -241,13 +241,13 @@ static bool8 ShouldSwitchIfNaturalCure(void) if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1) { *(gBattleStruct->field_294 + gActiveBank) = 6; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1) { *(gBattleStruct->field_294 + gActiveBank) = 6; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } @@ -258,7 +258,7 @@ static bool8 ShouldSwitchIfNaturalCure(void) if (Random() & 1) { *(gBattleStruct->field_294 + gActiveBank) = 6; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } @@ -426,7 +426,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0) { *(gBattleStruct->field_294 + gActiveBank) = i; - EmitCmd_x21(1, 2, 0); + EmitCmd33(1, 2, 0); return TRUE; } } @@ -611,7 +611,7 @@ void AI_TrySwitchOrUseItem(void) } } - EmitCmd_x21(1, 0, (gActiveBank ^ BIT_SIDE) << 8); + EmitCmd33(1, 0, (gActiveBank ^ BIT_SIDE) << 8); } #define TYPE_FORESIGHT 0xFE @@ -940,7 +940,7 @@ static bool8 ShouldUseItem(void) if (shouldUse) { - EmitCmd_x21(1, 1, 0); + EmitCmd33(1, 1, 0); *(gBattleStruct->field_C0 + (gActiveBank / 2) * 2) = item; gBattleResources->battleHistory->trainerItems[i] = 0; return shouldUse; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 58a595730b..9ac18c72f0 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -36,6 +36,13 @@ extern u8 gBankTarget; extern u8 gAbsentBankFlags; extern u8 gEffectBank; extern u16 gBattleWeather; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u16 gCurrentMove; +extern u16 gLastUsedMove; +extern u16 gLastUsedItem; +extern u8 gBattleOutcome; +extern u8 gLastUsedAbility; +extern u8 gStringBank; extern const struct BattleMove gBattleMoves[]; @@ -43,11 +50,10 @@ extern void task00_08081A90(u8 taskId); // cable_club extern void sub_81B8D64(u8 bank, u8 arg1); // party_menu // this file's funcionts -static void sub_8033244(void); +static void CreateTasksForSendRecvLinkBuffers(void); static void SetControllersVariablesInLinkBattle(void); static void SetControllersVariables(void); -static void sub_8033050(void); -void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); +static void SetBattlePartyIds(void); static void Task_HandleSendLinkBuffersData(u8 taskId); static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId); @@ -60,7 +66,7 @@ void HandleLinkBattleSetup(void) if (!gReceivedRemoteLinkPlayers) sub_8009734(); CreateTask(task00_08081A90, 0); - sub_8033244(); + CreateTasksForSendRecvLinkBuffers(); } } @@ -114,7 +120,7 @@ void sub_8032768(void) else SetControllersVariables(); - sub_8033050(); + SetBattlePartyIds(); if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { @@ -602,7 +608,7 @@ static void SetControllersVariablesInLinkBattle(void) } } -static void sub_8033050(void) +static void SetBattlePartyIds(void) { s32 i, j; @@ -672,7 +678,7 @@ static void sub_8033050(void) } } -void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) +static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) { s32 i; @@ -702,7 +708,7 @@ void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) } } -static void sub_8033244(void) +static void CreateTasksForSendRecvLinkBuffers(void) { gUnknown_02022D08 = CreateTask(Task_HandleSendLinkBuffersData, 0); gTasks[gUnknown_02022D08].data[11] = 0; @@ -993,10 +999,9 @@ void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit) PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -// TODO: change Poke to Mon to be consistent -void EmitReturnPokeToBall(u8 bufferId, u8 arg1) +void EmitReturnMonToBall(u8 bufferId, u8 arg1) { - gBattleBuffersTransferData[0] = CONTROLLER_RETURNPOKETOBALL; + gBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL; gBattleBuffersTransferData[1] = arg1; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); } @@ -1103,14 +1108,6 @@ void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 16 + sizeof(struct DisableStruct)); } -extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; -extern u16 gCurrentMove; -extern u16 gLastUsedMove; -extern u16 gLastUsedItem; -extern u8 gBattleOutcome; -extern u8 gLastUsedAbility; -extern u8 gStringBank; - void EmitPrintString(u8 bufferId, u16 stringID) { s32 i; @@ -1180,3 +1177,375 @@ void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2) gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } + +void EmitCmd19(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_19; + gBattleBuffersTransferData[1] = 19; + gBattleBuffersTransferData[2] = 19; + gBattleBuffersTransferData[3] = 19; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEMOVE; + gBattleBuffersTransferData[1] = isDoubleBattle; + gBattleBuffersTransferData[2] = NoPpNumber; + gBattleBuffersTransferData[3] = 0; + for (i = 0; i < sizeof(*movePpData); i++) + gBattleBuffersTransferData[4 + i] = *((u8*)(movePpData) + i); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(*movePpData) + 4); +} + +void EmitOpenBag(u8 bufferId, u8 *arg1) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; + for (i = 0; i < 3; i++) + gBattleBuffersTransferData[1 + i] = arg1[i]; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON; + gBattleBuffersTransferData[1] = caseId; + gBattleBuffersTransferData[2] = arg2; + gBattleBuffersTransferData[3] = abilityId; + for (i = 0; i < 3; i++) + gBattleBuffersTransferData[4 + i] = arg4[i]; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 8); // but only 7 bytes were written +} + +void EmitCmd23(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_23; + gBattleBuffersTransferData[1] = 23; + gBattleBuffersTransferData[2] = 23; + gBattleBuffersTransferData[3] = 23; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +// why is the argument u16 if it's being cast to s16 anyway? +void EmitHealthBarUpdate(u8 bufferId, u16 hpValue) +{ + gBattleBuffersTransferData[0] = CONTROLLER_HEALTHBARUPDATE; + gBattleBuffersTransferData[1] = 0; + gBattleBuffersTransferData[2] = (s16)hpValue; + gBattleBuffersTransferData[3] = ((s16)hpValue & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +// why is the argument u16 if it's being cast to s16 anyway? +void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints) +{ + gBattleBuffersTransferData[0] = CONTROLLER_EXPUPDATE; + gBattleBuffersTransferData[1] = partyId; + gBattleBuffersTransferData[2] = (s16)expPoints; + gBattleBuffersTransferData[3] = ((s16)expPoints & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2) +{ + gBattleBuffersTransferData[0] = CONTROLLER_STATUSICONUPDATE; + gBattleBuffersTransferData[1] = status1; + gBattleBuffersTransferData[2] = (status1 & 0x0000FF00) >> 8; + gBattleBuffersTransferData[3] = (status1 & 0x00FF0000) >> 16; + gBattleBuffersTransferData[4] = (status1 & 0xFF000000) >> 24; + gBattleBuffersTransferData[5] = status2; + gBattleBuffersTransferData[6] = (status2 & 0x0000FF00) >> 8; + gBattleBuffersTransferData[7] = (status2 & 0x00FF0000) >> 16; + gBattleBuffersTransferData[8] = (status2 & 0xFF000000) >> 24; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 9); +} + +void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status) +{ + gBattleBuffersTransferData[0] = CONTROLLER_STATUSANIMATION; + gBattleBuffersTransferData[1] = status2; + gBattleBuffersTransferData[2] = status; + gBattleBuffersTransferData[3] = (status & 0x0000FF00) >> 8; + gBattleBuffersTransferData[4] = (status & 0x00FF0000) >> 16; + gBattleBuffersTransferData[5] = (status & 0xFF000000) >> 24; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 6); +} + +void EmitStatusXor(u8 bufferId, u8 b) +{ + gBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void EmitDataTransfer(u8 bufferId, u16 size, void *data) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_DATATRANSFER; + gBattleBuffersTransferData[1] = 29; + gBattleBuffersTransferData[2] = size; + gBattleBuffersTransferData[3] = (size & 0xFF00) >> 8; + for (i = 0; i < size; i++) + gBattleBuffersTransferData[4 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 4); +} + +void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_DMA3TRANSFER; + gBattleBuffersTransferData[1] = (u32)(dst); + gBattleBuffersTransferData[2] = ((u32)(dst) & 0x0000FF00) >> 8; + gBattleBuffersTransferData[3] = ((u32)(dst) & 0x00FF0000) >> 16; + gBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24; + gBattleBuffersTransferData[5] = size; + gBattleBuffersTransferData[6] = (size & 0xFF00) >> 8; + for (i = 0; i < size; i++) + gBattleBuffersTransferData[7 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 7); +} + +void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_31; + gBattleBuffersTransferData[1] = songId; + gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; + for (i = 0; i < songId; i++) // ???? + gBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, songId + 3); +} + +void EmitCmd32(u8 bufferId, u16 size, void *data) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_32; + gBattleBuffersTransferData[1] = size; + gBattleBuffersTransferData[2] = (size & 0xFF00) >> 8; + for (i = 0; i < size; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 3); +} + +void EmitCmd33(u8 bufferId, u8 arg1, u16 arg2) +{ + gBattleBuffersTransferData[0] = CONTROLLER_33; + gBattleBuffersTransferData[1] = arg1; + gBattleBuffersTransferData[2] = arg2; + gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd34(u8 bufferId, u8 b, u8 *c) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_34; + gBattleBuffersTransferData[1] = b; + for (i = 0; i < 3; i++) + gBattleBuffersTransferData[2 + i] = c[i]; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 5); +} + +void EmitCmd35(u8 bufferId, u16 b) +{ + gBattleBuffersTransferData[0] = CONTROLLER_35; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd36(u8 bufferId, u16 b) +{ + gBattleBuffersTransferData[0] = CONTROLLER_36; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd37(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_37; + gBattleBuffersTransferData[1] = 37; + gBattleBuffersTransferData[2] = 37; + gBattleBuffersTransferData[3] = 37; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd38(u8 bufferId, u8 b) +{ + gBattleBuffersTransferData[0] = CONTROLLER_38; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void EmitCmd39(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_39; + gBattleBuffersTransferData[1] = 39; + gBattleBuffersTransferData[2] = 39; + gBattleBuffersTransferData[3] = 39; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd40(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_40; + gBattleBuffersTransferData[1] = 40; + gBattleBuffersTransferData[2] = 40; + gBattleBuffersTransferData[3] = 40; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitHitAnimation(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION; + gBattleBuffersTransferData[1] = 41; + gBattleBuffersTransferData[2] = 41; + gBattleBuffersTransferData[3] = 41; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd42(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_42; + gBattleBuffersTransferData[1] = 42; + gBattleBuffersTransferData[2] = 42; + gBattleBuffersTransferData[3] = 42; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitEffectivenessSound(u8 bufferId, u16 songId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND; + gBattleBuffersTransferData[1] = songId; + gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM) +{ + gBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM; + gBattleBuffersTransferData[1] = songId; + gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = playBGM; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitFaintingCry(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_FAINTINGCRY; + gBattleBuffersTransferData[1] = 45; + gBattleBuffersTransferData[2] = 45; + gBattleBuffersTransferData[3] = 45; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitIntroSlide(u8 bufferId, u8 terrainId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE; + gBattleBuffersTransferData[1] = terrainId; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void EmitIntroTrainerBallThrow(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_INTROTRAINERBALLTHROW; + gBattleBuffersTransferData[1] = 47; + gBattleBuffersTransferData[2] = 47; + gBattleBuffersTransferData[3] = 47; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2) +{ + s32 i; + + gBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; + gBattleBuffersTransferData[1] = arg2 & 0x7F; + gBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7; + gBattleBuffersTransferData[3] = 48; + for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * 6); i++) + gBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct HpAndStatus) * 6 + 4); +} + +void EmitCmd49(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_49; + gBattleBuffersTransferData[1] = 49; + gBattleBuffersTransferData[2] = 49; + gBattleBuffersTransferData[3] = 49; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitCmd50(u8 bufferId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_50; + gBattleBuffersTransferData[1] = 50; + gBattleBuffersTransferData[2] = 50; + gBattleBuffersTransferData[3] = 50; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible) +{ + gBattleBuffersTransferData[0] = CONTROLLER_SPRITEINVISIBILITY; + gBattleBuffersTransferData[1] = isInvisible; + gBattleBuffersTransferData[2] = 51; + gBattleBuffersTransferData[3] = 51; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument) +{ + gBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION; + gBattleBuffersTransferData[1] = animationId; + gBattleBuffersTransferData[2] = argument; + gBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2) +{ + bool8 arg2_ = arg2; + gBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG; + gBattleBuffersTransferData[1] = arg1; + + if (arg2_) + gBattleBuffersTransferData[3] = gBattleBuffersTransferData[2] = sub_81850DC(&gBattleBuffersTransferData[4]); + else + gBattleBuffersTransferData[3] = gBattleBuffersTransferData[2] = 0; + + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, gBattleBuffersTransferData[2] + 4); +} + +void EmitResetActionMoveSelection(u8 bufferId, u8 caseId) +{ + gBattleBuffersTransferData[0] = CONTROLLER_RESETACTIONMOVESELECTION; + gBattleBuffersTransferData[1] = caseId; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void EmitCmd55(u8 bufferId, u8 arg1) +{ + gBattleBuffersTransferData[0] = CONTROLLER_55; + gBattleBuffersTransferData[1] = arg1; + gBattleBuffersTransferData[2] = gSaveBlock2Ptr->field_CA9_b; + gBattleBuffersTransferData[3] = gSaveBlock2Ptr->field_CA9_b; + gBattleBuffersTransferData[5] = gBattleBuffersTransferData[4] = sub_81850DC(&gBattleBuffersTransferData[6]); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, gBattleBuffersTransferData[4] + 6); +} diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fb6a8272b4..a1e5767ada 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -349,7 +349,7 @@ static void atk51_switch_handle_order(void); static void atk52_switch_in_effects(void); static void atk53_trainer_slide(void); static void atk54_effectiveness_sound(void); -static void atk55_play_sound(void); +static void atk55_play_fanfare(void); static void atk56_fainting_cry(void); static void atk57(void); static void atk58_return_to_ball(void); @@ -601,7 +601,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk52_switch_in_effects, atk53_trainer_slide, atk54_effectiveness_sound, - atk55_play_sound, + atk55_play_fanfare, atk56_fainting_cry, atk57, atk58_return_to_ball, @@ -5308,7 +5308,7 @@ static void atk4B_return_atk_to_ball(void) gActiveBank = gBankAttacker; if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) { - EmitReturnPokeToBall(0, 0); + EmitReturnMonToBall(0, 0); MarkBufferBankForExecution(gActiveBank); } gBattlescriptCurrInstr++; @@ -5627,7 +5627,7 @@ static void atk50_openpartyscreen(void) { gAbsentBankFlags |= gBitTable[gActiveBank]; gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); - Emit_x2A(0); + EmitCmd42(0); MarkBufferBankForExecution(gActiveBank); } else if (!gSpecialStatuses[gActiveBank].flag40) @@ -5649,7 +5649,7 @@ static void atk50_openpartyscreen(void) { gAbsentBankFlags |= gBitTable[gActiveBank]; gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); - Emit_x2A(0); + EmitCmd42(0); MarkBufferBankForExecution(gActiveBank); } else if (!gSpecialStatuses[gActiveBank].flag40) @@ -5670,7 +5670,7 @@ static void atk50_openpartyscreen(void) { gAbsentBankFlags |= gBitTable[gActiveBank]; gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); - Emit_x2A(0); + EmitCmd42(0); MarkBufferBankForExecution(gActiveBank); } else if (!gSpecialStatuses[gActiveBank].flag40) @@ -5692,7 +5692,7 @@ static void atk50_openpartyscreen(void) { gAbsentBankFlags |= gBitTable[gActiveBank]; gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); - Emit_x2A(0); + EmitCmd42(0); MarkBufferBankForExecution(gActiveBank); } else if (!gSpecialStatuses[gActiveBank].flag40) @@ -5755,7 +5755,7 @@ static void atk50_openpartyscreen(void) { gAbsentBankFlags |= gBitTable[gActiveBank]; gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); - Emit_x2A(0); + EmitCmd42(0); MarkBufferBankForExecution(gActiveBank); } else if (!gSpecialStatuses[gActiveBank].flag40) @@ -5771,7 +5771,7 @@ static void atk50_openpartyscreen(void) { gAbsentBankFlags |= gBitTable[gActiveBank]; gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); - Emit_x2A(0); + EmitCmd42(0); MarkBufferBankForExecution(gActiveBank); } else if (!gSpecialStatuses[gActiveBank].flag40) @@ -6031,10 +6031,10 @@ static void atk54_effectiveness_sound(void) gBattlescriptCurrInstr += 3; } -static void atk55_play_sound(void) +static void atk55_play_fanfare(void) { gActiveBank = gBankAttacker; - EmitPlaySound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), 0); + EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 3; @@ -6052,7 +6052,7 @@ static void atk56_fainting_cry(void) static void atk57(void) { gActiveBank = GetBankByIdentity(0); - Emit_x37(0, gBattleOutcome); + EmitCmd55(0, gBattleOutcome); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 1; @@ -6061,7 +6061,7 @@ static void atk57(void) static void atk58_return_to_ball(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); - EmitReturnPokeToBall(0, 1); + EmitReturnMonToBall(0, 1); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; @@ -7137,7 +7137,7 @@ static void atk76_various(void) gDisableStructs[1].truantUnknownBit = 1; break; case 13: - EmitCmd13(0); + EmitCmd19(0); MarkBufferBankForExecution(gActiveBank); break; case 14: @@ -7162,7 +7162,7 @@ static void atk76_various(void) gActiveBank = 1; if (gBattleMons[gActiveBank].hp != 0) { - EmitReturnPokeToBall(0, 0); + EmitReturnMonToBall(0, 0); MarkBufferBankForExecution(gActiveBank); } break; @@ -7172,7 +7172,7 @@ static void atk76_various(void) gActiveBank = 3; if (gBattleMons[gActiveBank].hp != 0) { - EmitReturnPokeToBall(0, 0); + EmitReturnMonToBall(0, 0); MarkBufferBankForExecution(gActiveBank); } } @@ -7197,7 +7197,7 @@ static void atk76_various(void) gBattleOutcome = BATTLE_OPPONENT_TELEPORTED; break; case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC: - EmitPlaySound(0, BGM_KACHI1, 1); + EmitPlayFanfareOrBGM(0, BGM_KACHI1, TRUE); MarkBufferBankForExecution(gActiveBank); break; } From 752ce9b90d756e01766c12136169eefe335ac016 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 14 Oct 2017 16:55:25 +0200 Subject: [PATCH 146/182] start working on battle anim --- asm/battle_7.s | 18 +- asm/battle_anim.s | 1587 +------------------ asm/battle_anim_80A9C70.s | 12 +- asm/battle_anim_80D51AC.s | 90 +- asm/battle_anim_80FE840.s | 1746 ++++++++++----------- asm/battle_anim_815A0D4.s | 398 ++--- asm/battle_anim_8170478.s | 116 +- asm/battle_anim_sound_tasks.s | 62 +- asm/battle_controller_linkopponent.s | 14 +- asm/battle_controller_linkpartner.s | 12 +- asm/battle_controller_opponent.s | 12 +- asm/battle_controller_player.s | 12 +- asm/battle_controller_player_partner.s | 12 +- asm/battle_controller_recorded_opponent.s | 12 +- asm/battle_controller_recorded_player.s | 12 +- asm/battle_controller_wally.s | 10 +- asm/contest.s | 338 ++-- asm/contest_ai.s | 298 ++-- asm/contest_effect.s | 148 +- asm/contest_link_80FC4F4.s | 16 +- asm/rom3.s | 2 +- asm/rom_80A5C6C.s | 158 +- data/battle_anim_scripts.s | 2 +- data/battle_anims.s | 28 +- include/battle_anim.h | 48 + include/battle_interface.h | 1 + include/contest.h | 30 +- include/decompress.h | 2 +- include/sprite.h | 2 +- ld_script.txt | 1 + src/battle_anim.c | 650 ++++++++ src/decompress.c | 2 +- src/sprite.c | 2 +- sym_ewram.txt | 74 +- 34 files changed, 2538 insertions(+), 3389 deletions(-) create mode 100644 include/battle_anim.h create mode 100644 src/battle_anim.c diff --git a/asm/battle_7.s b/asm/battle_7.s index 36a0bf282e..4fea686508 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -1056,10 +1056,10 @@ _0805D980: b _0805DA1E .pool _0805D9CC: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker mov r2, r10 strb r2, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget mov r1, sp ldrb r1, [r1] strb r1, [r0] @@ -1070,7 +1070,7 @@ _0805D9CC: ldr r0, =gUnknown_082C9320 adds r1, r5, 0 movs r2, 0 - bl move_something + bl DoBattleAnim ldr r0, =task0A_0803415C movs r1, 0xA bl CreateTask @@ -1180,14 +1180,14 @@ move_anim_start_t4: @ 805DAC4 lsrs r4, 24 lsls r3, 24 lsrs r3, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker strb r1, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget strb r2, [r0] ldr r0, =gUnknown_082C937C adds r1, r3, 0 movs r2, 0 - bl move_something + bl DoBattleAnim ldr r0, =task0A_08034248 movs r1, 0xA bl CreateTask @@ -2353,7 +2353,7 @@ _0805E51C: beq _0805E558 movs r0, 0 mov r10, r0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrh r1, [r2, 0x2] @@ -3111,7 +3111,7 @@ sub_805EB9C: @ 805EB9C _0805EBC8: lsls r0, r5, 24 lsrs r0, 24 - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _0805EC60 @@ -3329,7 +3329,7 @@ sub_805ED70: @ 805ED70 cmp r0, 0 beq _0805EDAC adds r0, r4, 0 - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 bne _0805EDC0 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 5ce9c4cf94..a35f322d42 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -5,1523 +5,16 @@ .text - thumb_func_start sub_80A3934 -sub_80A3934: @ 80A3934 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, =gAnimFramesToWait - movs r1, 0 - strb r1, [r0] - ldr r0, =gAnimScriptActive - strb r1, [r0] - ldr r0, =gAnimVisualTaskCount - strb r1, [r0] - ldr r0, =gAnimSoundTaskCount - strb r1, [r0] - ldr r0, =gDisableStructMoveAnim - movs r1, 0 - str r1, [r0] - ldr r0, =gMoveDmgMoveAnim - str r1, [r0] - ldr r0, =gMovePowerMoveAnim - movs r2, 0 - strh r1, [r0] - ldr r0, =gHappinessMoveAnim - strb r2, [r0] - ldr r4, =gUnknown_02038430 - ldr r5, =gUnknown_02038432 - ldr r6, =gUnknown_02038433 - ldr r7, =gAnimMoveIndex - ldr r0, =gAnimationBankAttacker - mov r12, r0 - ldr r1, =gAnimationBankTarget - mov r8, r1 - ldr r0, =gUnknown_02038440 - mov r9, r0 - ldr r1, =0x0000ffff - adds r3, r1, 0 - ldr r1, =gAnimSpriteIndexArray - movs r2, 0x7 -_080A397E: - ldrh r0, [r1] - orrs r0, r3 - strh r0, [r1] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080A397E - ldr r1, =gBattleAnimArgs - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xE -_080A3994: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080A3994 - movs r1, 0 - movs r0, 0xFF - strb r0, [r4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x1] - strb r1, [r5] - strb r1, [r6] - movs r0, 0 - strh r1, [r7] - mov r1, r12 - strb r0, [r1] - mov r1, r8 - strb r0, [r1] - mov r1, r9 - strb r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A3934 - - thumb_func_start move_anim_start_t1 -move_anim_start_t1: @ 80A3A10 - push {lr} - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, =gAnimationBankAttacker - ldr r0, =gBankAttacker - ldrb r0, [r0] - strb r0, [r2] - ldr r2, =gAnimationBankTarget - ldr r0, =gBankTarget - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gUnknown_082C8D6C - movs r2, 0x1 - bl move_something - pop {r0} - bx r0 - .pool - thumb_func_end move_anim_start_t1 - - thumb_func_start move_something -move_something: @ 80A3A48 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A3AE8 - bl sub_80A8278 - movs r0, 0 - bl sub_8072A88 - movs r4, 0 - mov r0, r8 - lsls r0, 2 - mov r10, r0 - ldr r6, =gBattlePartyID - movs r7, 0x64 - ldr r5, =gUnknown_02038438 -_080A3A84: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080A3AA8 - ldrh r0, [r6] - muls r0, r7 - ldr r1, =gEnemyParty - b _080A3AAE - .pool -_080A3AA8: - ldrh r0, [r6] - muls r0, r7 - ldr r1, =gPlayerParty -_080A3AAE: - adds r0, r1 - movs r1, 0xB - bl GetMonData - strh r0, [r5] - adds r6, 0x2 - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _080A3A84 - ldr r3, =gAnimMoveIndex - ldr r5, =gUnknown_02038430 - ldr r1, =gAnimScriptActive - mov r12, r1 - ldr r7, =gAnimScriptCallback - ldr r6, =move_anim_execute - b _080A3B10 - .pool -_080A3AE8: - ldr r3, =gAnimMoveIndex - ldr r5, =gUnknown_02038430 - mov r0, r8 - lsls r0, 2 - mov r10, r0 - ldr r1, =gAnimScriptActive - mov r12, r1 - ldr r7, =gAnimScriptCallback - ldr r6, =move_anim_execute - ldr r2, =gUnknown_02039F34 - ldr r1, =gUnknown_02038438 - movs r4, 0x3 -_080A3B00: - ldr r0, [r2] - ldr r0, [r0, 0x18] - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A3B00 -_080A3B10: - mov r0, r9 - cmp r0, 0 - bne _080A3B38 - strh r0, [r3] - b _080A3B3C - .pool -_080A3B38: - mov r1, r8 - strh r1, [r3] -_080A3B3C: - ldr r1, =gBattleAnimArgs - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xE -_080A3B44: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080A3B44 - movs r0, 0xFF - strb r0, [r5] - movs r0, 0x1 - negs r0, r0 - strb r0, [r5, 0x1] - ldr r0, [sp] - add r0, r10 - ldr r0, [r0] - ldr r1, =gBattleAnimScriptPtr - str r0, [r1] - movs r0, 0x1 - mov r1, r12 - strb r0, [r1] - movs r0, 0 - ldr r1, =gAnimFramesToWait - strb r0, [r1] - str r6, [r7] - ldr r0, =0x0000ffff - adds r2, r0, 0 - ldr r1, =gAnimSpriteIndexArray - movs r4, 0x7 -_080A3B76: - ldrh r0, [r1] - orrs r0, r2 - strh r0, [r1] - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A3B76 - mov r1, r9 - cmp r1, 0 - beq _080A3BC2 - movs r4, 0 - ldr r2, =gUnknown_082C8D64 - b _080A3BAA - .pool -_080A3BA8: - adds r4, 0x1 -_080A3BAA: - lsls r0, r4, 1 - adds r0, r2 - ldrh r0, [r0] - ldr r1, =0x0000ffff - cmp r0, r1 - beq _080A3BC2 - cmp r8, r0 - bne _080A3BA8 - ldr r0, =gMPlay_BGM - movs r2, 0x80 - bl m4aMPlayVolumeControl -_080A3BC2: - ldr r0, =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_WIN0V - strh r1, [r0] - ldr r0, =gBattle_WIN1H - strh r1, [r0] - ldr r0, =gBattle_WIN1V - strh r1, [r0] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end move_something - - thumb_func_start move_anim_8072740 -move_anim_8072740: @ 80A3BFC - push {r4,lr} - adds r4, r0, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end move_anim_8072740 - - thumb_func_start move_anim_task_del -move_anim_task_del: @ 80A3C1C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end move_anim_task_del - - thumb_func_start move_anim_related_task_del -move_anim_related_task_del: @ 80A3C38 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end move_anim_related_task_del - - thumb_func_start sub_80A3C54 -sub_80A3C54: @ 80A3C54 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r4, =0x0000ffff - ldr r1, =gAnimSpriteIndexArray -_080A3C60: - ldrh r0, [r1] - cmp r0, r4 - bne _080A3C74 - strh r3, [r1] - b _080A3C7C - .pool -_080A3C74: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x7 - ble _080A3C60 -_080A3C7C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A3C54 - - thumb_func_start sub_80A3C84 -sub_80A3C84: @ 80A3C84 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r0, =0x0000ffff - adds r4, r0, 0 - ldr r1, =gAnimSpriteIndexArray -_080A3C92: - ldrh r0, [r1] - cmp r0, r3 - bne _080A3CA8 - orrs r0, r4 - strh r0, [r1] - b _080A3CB0 - .pool -_080A3CA8: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x7 - ble _080A3C92 -_080A3CB0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A3C84 - - thumb_func_start move_anim_waiter -move_anim_waiter: @ 80A3CB8 - push {lr} - ldr r2, =gAnimFramesToWait - ldrb r1, [r2] - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0 - bgt _080A3CDC - ldr r0, =gAnimScriptCallback - ldr r1, =move_anim_execute - str r1, [r0] - movs r0, 0 - b _080A3CDE - .pool -_080A3CDC: - subs r0, r1, 0x1 -_080A3CDE: - strb r0, [r2] - pop {r0} - bx r0 - thumb_func_end move_anim_waiter - - thumb_func_start move_anim_execute -move_anim_execute: @ 80A3CE4 - push {r4,lr} - ldr r4, =gUnknown_08525E98 -_080A3CE8: - ldr r0, =gBattleAnimScriptPtr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, =gAnimFramesToWait - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080A3D0C - ldr r0, =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080A3CE8 -_080A3D0C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end move_anim_execute - - thumb_func_start ma00_load_graphics -ma00_load_graphics: @ 80A3D24 - push {r4-r6,lr} - ldr r6, =gBattleAnimScriptPtr - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - lsls r5, r4, 3 - ldr r0, =gUnknown_085112B4 + 0x10 - adds r0, r5, r0 - bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_08511A34 + 0x198 - adds r5, r0 - adds r0, r5, 0 - bl LoadCompressedObjectPaletteUsingHeap - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - ldr r0, =0xffffd8f0 - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_80A3C54 - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] - ldr r1, =gAnimScriptCallback - ldr r0, =move_anim_waiter - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ma00_load_graphics - - thumb_func_start ma01_080728D0 -@ void ma01_080728D0() -ma01_080728D0: @ 80A3D8C - push {r4-r6,lr} - ldr r6, =gBattleAnimScriptPtr - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - ldr r1, =gUnknown_08524B44 - ldr r0, =0xffffd8f0 - adds r4, r0 - lsls r0, r4, 3 - adds r0, r1 - ldrh r5, [r0, 0x6] - adds r0, r5, 0 - bl FreeSpriteTilesByTag - adds r0, r5, 0 - bl FreeSpritePaletteByTag - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_80A3C84 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ma01_080728D0 - - thumb_func_start ma02_instanciate_template -ma02_instanciate_template: @ 80A3DD8 - push {r4-r7,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r1, [r5] - adds r3, r1, 0x1 - str r3, [r5] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r7, r2, r0 - adds r0, r1, 0x5 - str r0, [r5] - ldrb r4, [r1, 0x5] - adds r0, r1, 0x6 - str r0, [r5] - ldrb r0, [r1, 0x6] - adds r1, 0x7 - str r1, [r5] - cmp r0, 0 - beq _080A3E28 - adds r6, r5, 0 - ldr r5, =gBattleAnimArgs - adds r3, r0, 0 -_080A3E10: - ldr r2, [r6] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r5] - adds r2, 0x2 - str r2, [r6] - adds r5, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080A3E10 -_080A3E28: - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - beq _080A3E58 - movs r0, 0x80 - eors r4, r0 - cmp r4, 0x3F - bls _080A3E48 - adds r0, r4, 0 - subs r0, 0x40 - b _080A3E4A - .pool -_080A3E48: - negs r0, r4 -_080A3E4A: - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gAnimationBankTarget - b _080A3E6A - .pool -_080A3E58: - cmp r4, 0x3F - bls _080A3E62 - adds r0, r4, 0 - subs r0, 0x40 - b _080A3E64 -_080A3E62: - negs r0, r4 -_080A3E64: - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gAnimationBankAttacker -_080A3E6A: - ldrb r0, [r0] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 24 - asrs r1, 24 - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0x2 - bgt _080A3E88 - movs r6, 0x3 -_080A3E88: - ldr r5, =gAnimationBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_80A5C6C - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x3 - bl sub_80A5C6C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r7, 0 - adds r1, r4, 0 - bl CreateSpriteAndAnimate - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ma02_instanciate_template - - thumb_func_start sub_80A3ECC -sub_80A3ECC: @ 80A3ECC - push {r4-r7,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r6, r2, r0 - adds r0, r1, 0x5 - str r0, [r4] - ldrb r7, [r1, 0x5] - adds r0, r1, 0x6 - str r0, [r4] - ldrb r0, [r1, 0x6] - adds r1, 0x7 - str r1, [r4] - cmp r0, 0 - beq _080A3F1C - adds r5, r4, 0 - ldr r4, =gBattleAnimArgs - adds r3, r0, 0 -_080A3F04: - ldr r2, [r5] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r4] - adds r2, 0x2 - str r2, [r5] - adds r4, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080A3F04 -_080A3F1C: - adds r0, r6, 0 - adds r1, r7, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r6 - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A3ECC - - thumb_func_start ma04_wait_countdown -ma04_wait_countdown: @ 80A3F48 - push {r4,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r2, r0, 0x1 - str r2, [r1] - ldr r3, =gAnimFramesToWait - ldrb r0, [r0, 0x1] - strb r0, [r3] - lsls r0, 24 - cmp r0, 0 - bne _080A3F66 - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - strb r0, [r3] -_080A3F66: - adds r0, r2, 0x1 - str r0, [r1] - ldr r1, =gAnimScriptCallback - ldr r0, =move_anim_waiter - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma04_wait_countdown - - thumb_func_start sub_80A3F88 -sub_80A3F88: @ 80A3F88 - push {lr} - ldr r0, =gAnimVisualTaskCount - ldrb r2, [r0] - cmp r2, 0 - bne _080A3FAC - ldr r0, =gBattleAnimScriptPtr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, =gAnimFramesToWait - strb r2, [r0] - b _080A3FB2 - .pool -_080A3FAC: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] -_080A3FB2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A3F88 - - thumb_func_start nullsub_6 -nullsub_6: @ 80A3FBC - bx lr - thumb_func_end nullsub_6 - - thumb_func_start nullsub_7 -nullsub_7: @ 80A3FC0 - bx lr - thumb_func_end nullsub_7 - - thumb_func_start sub_80A3FC4 -sub_80A3FC4: @ 80A3FC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - ldr r0, =gAnimVisualTaskCount - ldrb r0, [r0] - cmp r0, 0 - bne _080A3FEC - ldr r0, =gAnimSoundTaskCount - ldrb r0, [r0] - cmp r0, 0 - bne _080A3FEC - ldr r1, =gUnknown_02038430 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080A3FEC - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - beq _080A4004 -_080A3FEC: - ldr r1, =gSoundAnimFramesToWait - movs r0, 0 - strh r0, [r1] - b _080A401E - .pool -_080A4004: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080A403C - ldr r1, =gSoundAnimFramesToWait - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bhi _080A4030 -_080A401E: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] - b _080A40A2 - .pool -_080A4030: - ldr r0, =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, =gMPlay_SE2 - bl m4aMPlayStop -_080A403C: - ldr r1, =gSoundAnimFramesToWait - movs r0, 0 - strh r0, [r1] - movs r5, 0 - ldr r7, =0x0000ffff - ldr r6, =gUnknown_08524B44 - ldr r4, =gAnimSpriteIndexArray -_080A404A: - ldrh r0, [r4] - cmp r0, r7 - beq _080A406E - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x6] - bl FreeSpriteTilesByTag - ldrh r0, [r4] - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x6] - bl FreeSpritePaletteByTag - ldrh r1, [r4] - adds r0, r7, 0 - orrs r0, r1 - strh r0, [r4] -_080A406E: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x7 - ble _080A404A - mov r1, r8 - cmp r1, 0 - bne _080A40A2 - ldr r0, =gMPlay_BGM - ldr r1, =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A409C - bl sub_80A8278 - movs r0, 0x1 - bl sub_8072A88 -_080A409C: - ldr r0, =gAnimScriptActive - mov r1, r8 - strb r1, [r0] -_080A40A2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A3FC4 - - thumb_func_start ma09_play_sound -ma09_play_sound: @ 80A40CC - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r0, [r4] - adds r1, r0, 0x1 - str r1, [r4] - ldrb r0, [r0, 0x1] - ldrb r1, [r1, 0x1] - lsls r1, 8 - orrs r0, r1 - bl PlaySE - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma09_play_sound - - thumb_func_start sub_80A40F4 -sub_80A40F4: @ 80A40F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - mov r8, r1 - adds r6, r0, r1 - ldr r1, =gBankSpriteIds - movs r2, 0 - ldrsh r0, [r6, r2] - adds r0, r1 - ldrb r5, [r0] - ldr r1, =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r4, r0, r1 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r3, 0x4 - ldrsh r0, [r6, r3] - cmp r0, 0 - bne _080A4148 - adds r0, r7, 0 - bl move_anim_task_del - b _080A41BE - .pool -_080A4148: - ldr r0, =task_pA_ma0A_obj_to_bg_pal - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - mov r1, r8 - subs r1, 0x8 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - strh r5, [r1, 0x8] - ldrh r0, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r0, r3 - strh r0, [r1, 0xA] - ldrh r0, [r4, 0x26] - ldrh r4, [r4, 0x22] - adds r0, r4 - strh r0, [r1, 0xC] - movs r3, 0x2 - ldrsh r0, [r6, r3] - cmp r0, 0 - bne _080A4190 - ldr r0, =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r1, 0xE] - ldr r0, =gBattle_BG1_Y - b _080A4198 - .pool -_080A4190: - ldr r0, =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r1, 0xE] - ldr r0, =gBattle_BG2_Y -_080A4198: - ldrh r0, [r0] - strh r0, [r1, 0x10] - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r6, 0x2] - strh r1, [r0, 0x12] - ldrh r1, [r6] - strh r1, [r0, 0x14] - ldr r1, =gUnknown_02038430 - movs r3, 0x6 - ldrsh r0, [r6, r3] - adds r0, r1 - strb r2, [r0] - adds r0, r7, 0 - bl move_anim_task_del -_080A41BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A40F4 - - thumb_func_start sub_80A41D8 -sub_80A41D8: @ 80A41D8 - push {r4,r5,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r2, [r1] - adds r0, r2, 0x1 - str r0, [r1] - ldrb r0, [r2, 0x1] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A41F8 - ldr r0, =gAnimationBankTarget - b _080A41FA - .pool -_080A41F8: - ldr r0, =gAnimationBankAttacker -_080A41FA: - ldrb r4, [r0] - adds r0, r4, 0 - bl b_side_obj__get_some_boolean - lsls r0, 24 - cmp r0, 0 - beq _080A4266 - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4226 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4230 -_080A4226: - movs r5, 0 - b _080A4232 - .pool -_080A4230: - movs r5, 0x1 -_080A4232: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_80A438C - ldr r0, =sub_80A40F4 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - strh r4, [r0, 0x8] - strh r5, [r0, 0xA] - movs r1, 0x1 - strh r1, [r0, 0xC] - strh r2, [r0, 0xE] -_080A4266: - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - bl b_side_obj__get_some_boolean - lsls r0, 24 - cmp r0, 0 - beq _080A42D8 - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4294 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A42A4 -_080A4294: - movs r5, 0 - b _080A42A6 - .pool -_080A42A4: - movs r5, 0x1 -_080A42A6: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_80A438C - ldr r0, =sub_80A40F4 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - strh r5, [r0, 0xA] - movs r1, 0x1 - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] -_080A42D8: - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] - ldr r1, =gAnimScriptCallback - ldr r0, =move_anim_waiter - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A41D8 - - thumb_func_start b_side_obj__get_some_boolean -b_side_obj__get_some_boolean: @ 80A4310 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4330 - ldr r0, =gAnimationBankAttacker - ldrb r0, [r0] - cmp r4, r0 - beq _080A4374 - b _080A4384 - .pool -_080A4330: - adds r0, r4, 0 - bl sub_80A6A90 - lsls r0, 24 - cmp r0, 0 - beq _080A4384 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A4374 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4374 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _080A4384 -_080A4374: - movs r0, 0x1 - b _080A4386 - .pool -_080A4384: - movs r0, 0 -_080A4386: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end b_side_obj__get_some_boolean - - thumb_func_start sub_80A438C -sub_80A438C: @ 80A438C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - cmp r1, 0 - beq _080A43AA - b _080A455E -_080A43AA: - bl IsContest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A43DC - ldr r1, =0x06008000 - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldr r1, =0x0600f000 - movs r2, 0x80 - lsls r2, 5 - movs r0, 0xFF - movs r3, 0 - bl RequestDma3Fill - b _080A43F8 - .pool -_080A43DC: - ldr r1, =0x06004000 - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldr r1, =0x0600e000 - movs r2, 0x80 - lsls r2, 5 - movs r0, 0xFF - movs r3, 0 - bl RequestDma3Fill -_080A43F8: - add r0, sp, 0x10 - bl sub_80A6B30 - add r0, sp, 0x20 - movs r1, 0 - strh r1, [r0] - ldr r1, [sp, 0x10] - ldr r2, =0x01000800 - bl CpuSet - mov r0, sp - adds r0, 0x22 - movs r1, 0xFF - strh r1, [r0] - ldr r1, [sp, 0x14] - ldr r2, =0x01000400 - bl CpuSet - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x2 - bl lcd_bg_operations - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl lcd_bg_operations - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl lcd_bg_operations - ldr r0, =gBankSpriteIds - adds r0, r6, r0 - ldrb r4, [r0] - ldr r5, =gBattle_BG1_X - ldr r0, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x24] - ldrh r1, [r1, 0x20] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r5] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A447A - ldr r0, =gUnknown_02039F34 - ldr r0, [r0] - ldr r0, [r0, 0x18] - ldrh r0, [r0] - bl sub_80DB2A8 - lsls r0, 24 - cmp r0, 0 - beq _080A447A - ldrh r0, [r5] - subs r0, 0x1 - strh r0, [r5] -_080A447A: - ldr r5, =gBattle_BG1_Y - ldr r2, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r5] - mov r0, r9 - cmp r0, 0 - beq _080A44B0 - ldr r0, =gBankSpriteIds - adds r0, r6, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080A44B0: - ldr r0, =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldrh r1, [r5] - movs r0, 0x16 - bl SetGpuReg - lsls r4, r6, 5 - ldr r0, =gPlttBufferUnfaded + 0x200 - adds r4, r0 - add r0, sp, 0x10 - ldrb r1, [r0, 0x8] - lsls r1, 4 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - add r0, sp, 0x10 - ldrb r1, [r0, 0x8] - lsls r1, 5 - movs r0, 0xA0 - lsls r0, 19 - adds r1, r0 - ldr r2, =0x04000008 - adds r0, r4, 0 - bl CpuSet - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4524 - movs r3, 0 - b _080A452E - .pool -_080A4524: - adds r0, r6, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r3, r0, 24 -_080A452E: - add r0, sp, 0x10 - ldrb r0, [r0, 0x8] - str r0, [sp] - ldr r0, [sp, 0x10] - str r0, [sp, 0x4] - ldr r0, [sp, 0x14] - str r0, [sp, 0x8] - add r0, sp, 0x10 - ldrh r0, [r0, 0xA] - str r0, [sp, 0xC] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl sub_8118FBC - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A4558 - b _080A4666 -_080A4558: - bl sub_80A46A0 - b _080A4666 -_080A455E: - ldr r1, =0x06006000 - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldr r1, =0x0600f000 - movs r7, 0x80 - lsls r7, 5 - movs r0, 0 - adds r2, r7, 0 - movs r3, 0x1 - bl RequestDma3Fill - add r0, sp, 0x10 - movs r1, 0x2 - bl sub_80A6B90 - add r0, sp, 0x24 - movs r4, 0 - strh r4, [r0] - ldr r1, [sp, 0x10] - adds r1, r7 - ldr r2, =0x01000800 - bl CpuSet - mov r0, sp - adds r0, 0x26 - strh r4, [r0] - ldr r1, [sp, 0x14] - movs r2, 0x80 - lsls r2, 4 - mov r8, r2 - add r1, r8 - ldr r2, =0x01000400 - bl CpuSet - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl lcd_bg_operations - movs r0, 0x2 - movs r1, 0 - movs r2, 0x1 - bl lcd_bg_operations - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl lcd_bg_operations - ldr r0, =gBankSpriteIds - adds r2, r5, r0 - ldrb r4, [r2] - ldr r5, =gBattle_BG2_X - ldr r3, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r1, 0x24] - ldrh r4, [r1, 0x20] - adds r0, r4 - negs r0, r0 - adds r0, 0x20 - strh r0, [r5] - ldr r4, =gBattle_BG2_Y - ldrh r0, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r4] - mov r0, r9 - cmp r0, 0 - beq _080A460E - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080A460E: - ldrh r1, [r5] - movs r0, 0x18 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x1A - bl SetGpuReg - lsls r4, r6, 5 - ldr r0, =gPlttBufferUnfaded + 0x200 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x90 - movs r2, 0x20 - bl LoadPalette - ldr r1, =0x05000120 - ldr r2, =0x04000008 - adds r0, r4, 0 - bl CpuSet - adds r0, r6, 0 - bl GetBankIdentity - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - add r0, sp, 0x10 - ldrb r0, [r0, 0x8] - str r0, [sp] - ldr r0, [sp, 0x10] - adds r0, r7 - str r0, [sp, 0x4] - ldr r0, [sp, 0x14] - add r0, r8 - str r0, [sp, 0x8] - add r0, sp, 0x10 - ldrh r0, [r0, 0xA] - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl sub_8118FBC -_080A4666: - add sp, 0x28 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A438C - + thumb_func_start sub_80A46A0 sub_80A46A0: @ 80A46A0 push {r4-r7,lr} sub sp, 0x10 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r0, [r0] - bl sub_80DB2A8 + bl IsSpeciesNotUnown lsls r0, 24 cmp r0, 0 beq _080A4712 @@ -1790,14 +283,14 @@ _080A48D2: cmp r4, 0x2 bne _080A48E0 _080A48D6: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080A48E2 .pool _080A48E0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080A48E2: ldrb r5, [r0] - ldr r3, =gUnknown_02038430 + ldr r3, =gMonAnimTaskIdArray ldrb r0, [r3] cmp r0, 0xFF beq _080A4908 @@ -1902,7 +395,7 @@ _080A49BC: _080A49C4: movs r4, 0x1 _080A49C6: - ldr r6, =gUnknown_02038430 + ldr r6, =gMonAnimTaskIdArray ldrb r0, [r6] cmp r0, 0xFF beq _080A49DE @@ -1964,15 +457,15 @@ _080A4A3A: cmp r5, 0x2 bne _080A4A48 _080A4A3E: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080A4A4A .pool _080A4A48: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080A4A4A: ldrb r4, [r0] adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4A8A @@ -2005,7 +498,7 @@ _080A4A8A: cmp r5, 0x1 bls _080A4ACA adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4ACA @@ -2066,15 +559,15 @@ _080A4AFE: cmp r5, 0x2 bne _080A4B0C _080A4B02: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080A4B0E .pool _080A4B0C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080A4B0E: ldrb r6, [r0] adds r0, r6, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4B38 @@ -2099,7 +592,7 @@ _080A4B38: adds r4, r6, 0 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4B78 @@ -2183,7 +676,7 @@ _080A4BF8: movs r5, 0x1 _080A4BFA: adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4C0C @@ -2202,7 +695,7 @@ _080A4C0C: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4C38 @@ -2526,7 +1019,7 @@ sub_80A4E5C: @ 80A4E5C b _080A4EDA .pool _080A4EA8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2866,7 +1359,7 @@ BattleAnimGetPanControl: @ 80A5178 bne _080A51C0 ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r2, [r0] ldr r1, [r1, 0x4] lsls r0, r2, 1 @@ -2892,8 +1385,8 @@ _080A51C0: lsls r0, 24 cmp r0, 0 beq _080A51E8 - ldr r0, =gAnimationBankAttacker - ldr r1, =gAnimationBankTarget + ldr r0, =gAnimBankAttacker + ldr r1, =gAnimBankTarget ldrb r0, [r0] ldrb r1, [r1] cmp r0, r1 @@ -2905,13 +1398,13 @@ _080A51C0: b _080A524C .pool _080A51E8: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080A5226 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2933,7 +1426,7 @@ _080A5218: lsls r0, 24 b _080A5250 _080A5226: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2988,7 +1481,7 @@ sub_80A5278: @ 80A5278 bne _080A52C0 ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r2, [r0] ldr r1, [r1, 0x4] lsls r0, r2, 1 @@ -3010,7 +1503,7 @@ sub_80A5278: @ 80A5278 b _080A52DE .pool _080A52C0: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -3860,11 +2353,11 @@ sub_80A5984: @ 80A5984 str r1, [r0] cmp r2, 0 beq _080A59A0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget b _080A59A2 .pool _080A59A0: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker _080A59A2: ldrb r0, [r0] bl GetBankIdentity @@ -3882,11 +2375,11 @@ _080A59BE: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x2 movs r1, 0x4 movs r2, 0x2 - bl lcd_bg_operations + bl SetAnimBgAttribute _080A59D2: pop {r4} pop {r0} @@ -3908,11 +2401,11 @@ sub_80A59DC: @ 80A59DC movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x2 movs r1, 0x4 movs r2, 0x2 - bl lcd_bg_operations + bl SetAnimBgAttribute _080A5A04: pop {r0} bx r0 @@ -3927,11 +2420,11 @@ sub_80A5A0C: @ 80A5A0C ldrb r6, [r0, 0x1] adds r0, 0x2 str r0, [r1] - ldr r7, =gAnimationBankAttacker + ldr r7, =gAnimBankAttacker ldrb r0, [r7] bl GetBankSide adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] bl GetBankSide lsls r4, 24 @@ -3961,11 +2454,11 @@ _080A5A64: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x2 movs r1, 0x4 movs r2, 0x2 - bl lcd_bg_operations + bl SetAnimBgAttribute _080A5A78: pop {r4-r7} pop {r0} @@ -4051,11 +2544,11 @@ sub_80A5AFC: @ 80A5AFC lsls r0, 24 cmp r0, 0 beq _080A5BA6 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankSide adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] bl GetBankSide lsls r4, 24 @@ -4133,11 +2626,11 @@ sub_80A5BAC: @ 80A5BAC lsls r0, 24 cmp r0, 0 beq _080A5C38 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankSide adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] bl GetBankSide lsls r4, 24 diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s index ca6572e1ad..0559ceab23 100644 --- a/asm/battle_anim_80A9C70.s +++ b/asm/battle_anim_80A9C70.s @@ -331,7 +331,7 @@ sub_80A9EF4: @ 80A9EF4 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -616,7 +616,7 @@ _080AA16C: movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080AA186: pop {r4} pop {r0} @@ -829,7 +829,7 @@ _080AA322: b _080AA330 _080AA328: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080AA352 _080AA330: ldr r0, =gBattleAnimArgs @@ -863,13 +863,13 @@ move_anim_start_t2: @ 80AA364 lsrs r4, 24 lsls r1, 24 lsrs r1, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker strb r4, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget strb r4, [r0] ldr r0, =gUnknown_082C92FC movs r2, 0 - bl move_something + bl DoBattleAnim ldr r0, =task0A_80788BC movs r1, 0xA bl CreateTask diff --git a/asm/battle_anim_80D51AC.s b/asm/battle_anim_80D51AC.s index 52b599c4c3..3ee1786ad5 100755 --- a/asm/battle_anim_80D51AC.s +++ b/asm/battle_anim_80D51AC.s @@ -18,7 +18,7 @@ sub_80D51AC: @ 80D51AC cmp r2, 0xFF bne _080D51D0 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D520C .pool _080D51D0: @@ -140,7 +140,7 @@ _080D5288: adds r0, r6 strh r3, [r0, 0x26] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D52CA _080D52C6: subs r0, 0x1 @@ -204,7 +204,7 @@ _080D5326: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080D533C @@ -216,7 +216,7 @@ _080D533C: .pool _080D5348: ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 _080D5350: @@ -226,7 +226,7 @@ _080D5352: beq _080D5368 _080D5356: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D53A6 .pool _080D5368: @@ -359,7 +359,7 @@ _080D5436: adds r0, r7 strh r2, [r0, 0x26] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D5478 _080D5474: subs r0, r2, 0x1 @@ -385,7 +385,7 @@ sub_80D5484: @ 80D5484 cmp r3, 0xFF bne _080D54A8 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D54F6 .pool _080D54A8: @@ -584,7 +584,7 @@ _080D55F8: strh r0, [r2, 0x26] _080D5630: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D563C _080D5638: subs r0, r2, 0x1 @@ -705,7 +705,7 @@ _080D56F6: cmp r0, 0 bne _080D5728 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D5728: pop {r4-r7} pop {r0} @@ -829,7 +829,7 @@ _080D5810: strh r0, [r4, 0x24] strh r0, [r4, 0x26] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D5822: pop {r4-r6} pop {r0} @@ -842,7 +842,7 @@ sub_80D5830: @ 80D5830 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -871,7 +871,7 @@ sub_80D5860: @ 80D5860 movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -892,7 +892,7 @@ _080D5894: strh r2, [r4, 0x2E] strh r0, [r4, 0x32] ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -919,7 +919,7 @@ sub_80D58D4: @ 80D58D4 strh r1, [r0, 0x30] ldr r1, =sub_80A6630 str r1, [r0, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 @@ -970,7 +970,7 @@ sub_80D5944: @ 80D5944 strh r1, [r0, 0x32] ldr r1, =sub_80A6630 str r1, [r0, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 @@ -988,12 +988,12 @@ sub_80D5968: @ 80D5968 cmp r0, 0 bne _080D598C ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080D5990 .pool _080D598C: ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080D5990: ldrb r0, [r0] adds r0, r1 @@ -1093,7 +1093,7 @@ _080D5A56: strh r1, [r3, 0x26] _080D5A58: adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _080D5A8E .pool _080D5A64: @@ -1133,11 +1133,11 @@ sub_80D5A94: @ 80D5A94 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D5AB0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080D5AB2 .pool _080D5AB0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080D5AB2: ldrb r2, [r0] ldr r0, =gBankSpriteIds @@ -1192,7 +1192,7 @@ _080D5ADC: movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A6680 @@ -1218,11 +1218,11 @@ sub_80D5B48: @ 80D5B48 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D5B70 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080D5B72 .pool _080D5B70: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080D5B72: ldrb r1, [r0] ldr r0, =gBankSpriteIds @@ -1281,7 +1281,7 @@ _080D5B9C: lsls r0, 16 cmp r0, 0 bne _080D5C04 - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 b _080D5C0C @@ -1318,7 +1318,7 @@ sub_80D5C20: @ 80D5C20 lsls r1, 2 adds r1, r4 strh r3, [r1, 0x26] - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -1338,7 +1338,7 @@ sub_80D5C50: @ 80D5C50 bl __divsi3 lsls r0, 16 lsrs r7, r0, 16 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1485,7 +1485,7 @@ _080D5D70: cmp r0, 0 bne _080D5DA4 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D5DA4: pop {r4,r5} pop {r0} @@ -1518,16 +1518,16 @@ _080D5DD8: beq _080D5DE8 b _080D5E10 _080D5DDE: - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker b _080D5DEA .pool _080D5DE8: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget _080D5DEA: ldrb r0, [r5] movs r4, 0x2 eors r0, r4 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D5E10 @@ -1540,7 +1540,7 @@ _080D5DEA: .pool _080D5E10: adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D5E58 _080D5E18: ldr r1, =gTasks @@ -1549,7 +1549,7 @@ _080D5E18: lsls r0, 3 adds r5, r0, r1 strh r2, [r5, 0x8] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1609,7 +1609,7 @@ sub_80D5E6C: @ 80D5E6C cmp r1, r0 bls _080D5EAA adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D5EAA: pop {r4} pop {r0} @@ -1622,7 +1622,7 @@ sub_80D5EB8: @ 80D5EB8 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -1660,7 +1660,7 @@ _080D5ED4: b _080D5F18 .pool _080D5F14: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] _080D5F18: strh r0, [r2, 0x12] @@ -1817,7 +1817,7 @@ _080D601E: strh r3, [r0, 0x24] strh r3, [r0, 0x26] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D6050: pop {r3,r4} mov r8, r3 @@ -1923,7 +1923,7 @@ _080D6120: adds r0, r6, 0 bl sub_80A7344 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D612C: pop {r4-r6} pop {r0} @@ -1995,11 +1995,11 @@ _080D61B8: ldrsh r0, [r6, r1] cmp r0, 0 bne _080D61C8 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080D61CA .pool _080D61C8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080D61CA: ldrb r0, [r0] bl GetBankSide @@ -2076,11 +2076,11 @@ sub_80D622C: @ 80D622C ldrsh r0, [r4, r1] cmp r0, 0 bne _080D6274 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080D6276 .pool _080D6274: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080D6276: ldrb r0, [r0] bl GetBankSide @@ -2201,7 +2201,7 @@ _080D6364: bl sub_80A7344 _080D636A: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080D6382 _080D6372: movs r0, 0 @@ -2236,7 +2236,7 @@ sub_80D6388: @ 80D6388 adds r0, r5, r7 lsls r0, 3 adds r6, r0, r4 - ldr r0, =gMovePowerMoveAnim + ldr r0, =gAnimMovePower ldrh r0, [r0] movs r1, 0xC bl __udivsi3 @@ -2248,7 +2248,7 @@ _080D63C0: adds r0, r5, r7 lsls r0, 3 adds r6, r0, r4 - ldr r0, =gMoveDmgMoveAnim + ldr r0, =gAnimMoveDmg ldr r0, [r0] movs r1, 0xC bl __divsi3 @@ -2435,7 +2435,7 @@ _080D6518: adds r0, r2 strh r4, [r0, 0x26] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080D654A: pop {r4,r5} pop {r0} diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 4ecdcbf680..318f8061ce 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -22,7 +22,7 @@ sub_80FE840: @ 80FE840 strh r0, [r4, 0x2E] ldrh r0, [r5, 0x6] strh r0, [r4, 0x30] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -80,7 +80,7 @@ sub_80FE898: @ 80FE898 b _080FE8DA _080FE8D4: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FE8DA: pop {r4} pop {r0} @@ -96,7 +96,7 @@ sub_80FE8E0: @ 80FE8E0 ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -132,7 +132,7 @@ sub_80FE930: @ 80FE930 bl StartSpriteAnim ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -147,7 +147,7 @@ sub_80FE930: @ 80FE930 strh r0, [r4, 0x36] ldr r0, =sub_80A6EEC str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -167,7 +167,7 @@ sub_80FE988: @ 80FE988 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -212,14 +212,14 @@ _080FE9FA: ldrsh r0, [r4, r1] cmp r0, 0x7F ble _080FEA14 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 adds r0, 0x1 b _080FEA1E .pool _080FEA14: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 adds r0, 0x6 @@ -287,7 +287,7 @@ sub_80FEA58: @ 80FEA58 strh r0, [r1, 0x4] strh r2, [r1, 0x6] ldr r4, =gUnknown_08592210 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 adds r3, r0, 0 @@ -304,7 +304,7 @@ _080FEAB2: cmp r0, 0xF bne _080FEAC0 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080FEAC0: pop {r4-r6} pop {r0} @@ -321,7 +321,7 @@ sub_80FEAD8: @ 80FEAD8 ldr r6, =gBattleAnimArgs ldrh r0, [r6, 0x6] strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -355,7 +355,7 @@ sub_80FEB28: @ 80FEB28 cmp r0, 0 beq _080FEB3C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FEB3C: pop {r4} pop {r0} @@ -374,7 +374,7 @@ sub_80FEB44: @ 80FEB44 ands r1, r0 adds r0, r5, 0 bl StartSpriteAnim - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -410,7 +410,7 @@ _080FEB94: strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -454,7 +454,7 @@ sub_80FEBFC: @ 80FEBFC cmp r0, 0 beq _080FEC12 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _080FEC42 _080FEC12: movs r1, 0x38 @@ -494,7 +494,7 @@ sub_80FEC48: @ 80FEC48 adds r6, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -508,7 +508,7 @@ _080FEC68: ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -583,7 +583,7 @@ sub_80FECF0: @ 80FECF0 strh r0, [r4, 0x2E] ldr r0, =sub_80A64B0 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -655,7 +655,7 @@ sub_80FED74: @ 80FED74 lsrs r0, 16 cmp r0, 0x7F bhi _080FEDC8 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 movs r1, 0x3 @@ -669,7 +669,7 @@ sub_80FED74: @ 80FED74 b _080FEDEC .pool _080FEDC8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 adds r0, 0x1 @@ -704,7 +704,7 @@ _080FEDEC: cmp r0, r1 bne _080FEE10 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FEE10: pop {r4} pop {r0} @@ -727,10 +727,10 @@ sub_80FEE1C: @ 80FEE1C bne _080FEE3E _080FEE36: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080FEE70 _080FEE3E: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -740,17 +740,17 @@ _080FEE3E: movs r0, 0x2 movs r1, 0x4 movs r2, 0x3 - bl lcd_bg_operations + bl SetAnimBgAttribute b _080FEE6A .pool _080FEE60: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _080FEE6A: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080FEE70: pop {r4} pop {r0} @@ -771,7 +771,7 @@ sub_80FEE78: @ 80FEE78 strh r0, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -823,14 +823,14 @@ sub_80FEECC: @ 80FEECC lsrs r0, 16 cmp r0, 0x7F bhi _080FEF18 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 subs r0, 0x1 b _080FEF22 .pool _080FEF18: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 adds r0, 0x1 @@ -847,7 +847,7 @@ _080FEF22: .pool _080FEF38: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FEF3E: pop {r4} pop {r0} @@ -868,7 +868,7 @@ sub_80FEF44: @ 80FEF44 strh r0, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -939,7 +939,7 @@ _080FEFE4: b _080FEFF6 _080FEFF0: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FEFF6: pop {r4} pop {r0} @@ -950,7 +950,7 @@ _080FEFF6: sub_80FEFFC: @ 80FEFFC push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -1026,7 +1026,7 @@ _080FF08C: sub_80FF090: @ 80FF090 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1067,7 +1067,7 @@ _080FF0DE: cmp r0, 0x50 ble _080FF0EC adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FF0EC: pop {r4} pop {r0} @@ -1080,7 +1080,7 @@ sub_80FF0F4: @ 80FF0F4 adds r5, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1098,7 +1098,7 @@ _080FF114: ldrsh r0, [r6, r1] cmp r0, 0 bne _080FF154 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -1117,7 +1117,7 @@ _080FF114: b _080FF174 .pool _080FF154: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -1139,11 +1139,11 @@ _080FF174: strh r0, [r5, 0x38] adds r0, r5, 0 bl sub_80A68D4 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -1249,7 +1249,7 @@ _080FF256: cmp r7, 0 beq _080FF260 adds r0, r6, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FF260: pop {r4-r7} pop {r0} @@ -1265,7 +1265,7 @@ sub_80FF268: @ 80FF268 lsrs r0, 24 cmp r0, 0x1 bne _080FF28A - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -1350,7 +1350,7 @@ _080FF2F8: ldrsh r0, [r4, r1] cmp r0, 0x7F bgt _080FF338 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 lsls r0, 24 @@ -1359,7 +1359,7 @@ _080FF2F8: b _080FF346 .pool _080FF338: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 lsls r0, 24 @@ -1382,7 +1382,7 @@ _080FF346: cmp r0, 0 bne _080FF36A adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FF36A: pop {r4,r5} pop {r0} @@ -1500,7 +1500,7 @@ _080FF424: b _080FF452 _080FF44C: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FF452: pop {r4} pop {r0} @@ -1534,7 +1534,7 @@ sub_80FF458: @ 80FF458 cmp r0, 0 bge _080FF498 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080FF51C .pool _080FF498: @@ -1550,7 +1550,7 @@ _080FF498: lsls r0, 28 lsrs r0, 30 strh r0, [r6, 0x24] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget mov r9, r0 ldrb r0, [r0] bl sub_80A8328 @@ -1639,7 +1639,7 @@ sub_80FF53C: @ 80FF53C lsls r1, 16 asrs r1, 24 strh r1, [r5, 0x24] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1765,7 +1765,7 @@ _080FF674: cmp r0, 0x3 bne _080FF68E adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080FF68E: pop {r4-r7} pop {r0} @@ -1785,7 +1785,7 @@ sub_80FF698: @ 80FF698 beq _080FF704 b _080FF756 _080FF6AA: - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -1845,7 +1845,7 @@ _080FF704: bl ChangeSpriteAffineAnim movs r0, 0x19 strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -1860,7 +1860,7 @@ _080FF704: strh r0, [r5, 0x36] ldr r0, =sub_80A70C0 str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 _080FF756: @@ -1878,7 +1878,7 @@ sub_80FF768: @ 80FF768 ldrsh r0, [r5, r1] cmp r0, 0 bne _080FF7D4 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -1941,7 +1941,7 @@ sub_80FF7EC: @ 80FF7EC push {r4-r6} sub sp, 0x4 mov r9, r0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -1956,7 +1956,7 @@ sub_80FF7EC: @ 80FF7EC lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -2081,7 +2081,7 @@ _080FF91C: cmp r1, r0 ble _080FF92E adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FF92E: pop {r0} bx r0 @@ -2095,7 +2095,7 @@ sub_80FF934: @ 80FF934 ldrsh r0, [r6, r1] cmp r0, 0 bne _080FF974 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -2144,7 +2144,7 @@ _080FF974: cmp r1, r0 ble _080FF9AA adds r0, r6, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FF9AA: pop {r4-r6} pop {r0} @@ -2284,7 +2284,7 @@ _080FFA98: cmp r0, 0x32 ble _080FFAAC adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FFAAC: pop {r4} pop {r0} @@ -2349,7 +2349,7 @@ sub_80FFB18: @ 80FFB18 adds r5, r0, 0 movs r1, 0 bl sub_80A69CC - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -2360,7 +2360,7 @@ sub_80FFB18: @ 80FFB18 bl sub_80A5C6C lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -2442,7 +2442,7 @@ _080FFBBA: strh r5, [r4, 0x26] strh r5, [r4, 0x2E] adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FFBEC: pop {r4,r5} pop {r0} @@ -2453,7 +2453,7 @@ _080FFBEC: sub_80FFBF4: @ 80FFBF4 push {r4-r6,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x1 bl sub_80A5C6C @@ -2537,7 +2537,7 @@ _080FFC8A: cmp r0, 0 beq _080FFCAA adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FFCAA: pop {r4} pop {r0} @@ -2551,7 +2551,7 @@ sub_80FFCB4: @ 80FFCB4 adds r5, r0, 0 movs r1, 0 bl sub_80A6980 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -2562,7 +2562,7 @@ sub_80FFCB4: @ 80FFCB4 bl sub_80A5C6C lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -2915,7 +2915,7 @@ sub_80FFF7C: @ 80FFF7C cmp r0, 0x14 ble _080FFF8E adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080FFF8E: movs r0, 0x2E ldrsh r1, [r4, r0] @@ -2954,7 +2954,7 @@ sub_80FFFC0: @ 80FFFC0 lsls r0, 3 ldr r1, =gTasks adds r5, r0, r1 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] bl sub_80A82E4 lsls r0, 24 @@ -3017,7 +3017,7 @@ _08100028: cmp r0, 0x40 bne _08100060 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08100060: ldr r4, =gSprites movs r0, 0xC @@ -3581,7 +3581,7 @@ _081004D6: cmp r0, 0 bne _081004FC adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _081004FC _081004E6: ldrh r0, [r6, 0xA] @@ -3772,11 +3772,11 @@ sub_8100640: @ 8100640 ldrsh r0, [r0, r1] cmp r0, 0 bne _0810065C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810065E .pool _0810065C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810065E: ldrb r6, [r0] adds r0, r6, 0 @@ -3857,7 +3857,7 @@ _081006E4: strb r0, [r4, 0x5] b _08100738 _08100700: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -4047,7 +4047,7 @@ _08100876: cmp r1, r0 bne _0810088A adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810088A: pop {r4-r7} pop {r0} @@ -4066,7 +4066,7 @@ sub_8100898: @ 8100898 cmp r0, 0 bne _081008B4 adds r0, r6, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0810098E .pool _081008B4: @@ -4074,11 +4074,11 @@ _081008B4: ldrsh r0, [r1, r3] cmp r0, 0 bne _081008C4 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _081008C6 .pool _081008C4: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _081008C6: ldrb r0, [r4] movs r1, 0x2 @@ -4227,7 +4227,7 @@ sub_81009DC: @ 81009DC cmp r0, 0 beq _081009F2 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081009F2: pop {r0} bx r0 @@ -4237,7 +4237,7 @@ _081009F2: sub_81009F8: @ 81009F8 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4264,7 +4264,7 @@ _08100A2C: strh r0, [r4, 0x22] ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -4277,7 +4277,7 @@ _08100A2C: sub_8100A50: @ 8100A50 push {r4,r5,lr} adds r5, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4343,7 +4343,7 @@ sub_8100A94: @ 8100A94 sub_8100AE0: @ 8100AE0 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -4439,7 +4439,7 @@ sub_8100B88: @ 8100B88 b _08100C24 .pool _08100BA8: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r4, 0x2 eors r0, r4 @@ -4453,7 +4453,7 @@ _08100BA8: b _08100C34 .pool _08100BC8: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -4469,7 +4469,7 @@ _08100BC8: mov r8, r2 mov r1, r8 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _08100C3E @@ -4494,7 +4494,7 @@ _08100BC8: b _08100C3E .pool _08100C24: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -4509,7 +4509,7 @@ _08100C34: _08100C3E: strh r7, [r6, 0x20] strh r4, [r6, 0x22] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4619,7 +4619,7 @@ _08100CF2: asrs r0, 16 cmp r0, 0x14 bne _08100D28 - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 movs r0, 0x3 @@ -4739,7 +4739,7 @@ _08100DE0: adds r0, r4 bl DestroySprite adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08100E10: pop {r4,r5} pop {r0} @@ -4754,7 +4754,7 @@ sub_8100E1C: @ 8100E1C ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x4] strh r0, [r5, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4846,7 +4846,7 @@ _08100EB2: cmp r0, r1 bne _08100EE8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08100EE8: pop {r4} pop {r0} @@ -4866,7 +4866,7 @@ sub_8100EF0: @ 8100EF0 adds r0, 0x8 strh r0, [r1, 0x2] _08100F06: - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r1, 0 bl sub_80A60AC @@ -5090,7 +5090,7 @@ _081010C2: sub_81010CC: @ 81010CC push {r4-r6,lr} adds r4, r0, 0 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -5309,7 +5309,7 @@ _0810127A: movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08101290: pop {r4} pop {r0} @@ -5406,7 +5406,7 @@ _08101320: strh r0, [r4, 0x30] ldrh r0, [r5, 0x8] strh r0, [r4, 0x32] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A656C @@ -5426,11 +5426,11 @@ sub_810135C: @ 810135C ldrsh r0, [r0, r1] cmp r0, 0 bne _08101378 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810137A .pool _08101378: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810137A: ldrb r6, [r0] bl IsDoubleBattle @@ -5440,7 +5440,7 @@ _0810137A: movs r1, 0x2 adds r0, r6, 0 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _081013C4 @@ -5507,7 +5507,7 @@ _08101414: strh r0, [r5, 0x30] ldrh r0, [r1, 0x8] strh r0, [r5, 0x32] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A656C @@ -5523,7 +5523,7 @@ sub_8101440: @ 8101440 push {r4,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5599,7 +5599,7 @@ _081014D8: cmp r0, 0 beq _081014EC adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081014EC: pop {r4} pop {r0} @@ -5611,7 +5611,7 @@ sub_81014F4: @ 81014F4 push {r4,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5885,7 +5885,7 @@ _08101718: strh r1, [r5, 0x24] movs r0, 0x6 strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -6052,7 +6052,7 @@ _0810187C: cmp r0, 0x8 bne _08101890 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08101890: pop {r4} pop {r0} @@ -6199,7 +6199,7 @@ sub_8101998: @ 8101998 adds r4, r0, 0 movs r0, 0x6 strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -6238,7 +6238,7 @@ sub_81019E8: @ 81019E8 cmp r6, 0 bne _08101A24 ldr r1, =gBankSpriteIds - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -6301,7 +6301,7 @@ sub_8101A74: @ 8101A74 adds r4, r0, 0 movs r0, 0x4 strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -6361,7 +6361,7 @@ sub_8101AE8: @ 8101AE8 cmp r0, 0 bne _08101B38 ldr r1, =gBankSpriteIds - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -6431,7 +6431,7 @@ _08101B78: thumb_func_start sub_8101B84 sub_8101B84: @ 8101B84 push {lr} - bl move_anim_8072740 + bl DestroyAnimSprite pop {r0} bx r0 thumb_func_end sub_8101B84 @@ -6466,7 +6466,7 @@ _08101BB6: _08101BBC: strh r5, [r4, 0x30] ldr r1, =gBankSpriteIds - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -6558,7 +6558,7 @@ _08101C4C: lsrs r0, 24 bl sub_80A7344 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08101C8E: pop {r4,r5} pop {r0} @@ -6576,7 +6576,7 @@ sub_8101C94: @ 8101C94 lsls r0, 3 adds r5, r0, r1 ldr r1, =gBankSpriteIds - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -6596,7 +6596,7 @@ sub_8101C94: @ 8101C94 cmp r1, 0x1 beq _08101D04 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08101D22 .pool _08101CE8: @@ -6864,7 +6864,7 @@ _08101ED4: .pool _08101EE0: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08101EE6: pop {r4} pop {r0} @@ -6906,7 +6906,7 @@ _08101F2C: ldrb r0, [r4, 0x8] bl sub_80A7344 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08101F38: pop {r4,r5} pop {r0} @@ -6922,11 +6922,11 @@ sub_8101F40: @ 8101F40 ldrsh r0, [r6, r1] cmp r0, 0 bne _08101F5C - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _08101F5E .pool _08101F5C: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _08101F5E: ldrb r0, [r4] movs r1, 0x2 @@ -6962,7 +6962,7 @@ _08101F5E: sub_8101FA8: @ 8101FA8 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -6992,7 +6992,7 @@ sub_8101FA8: @ 8101FA8 sub_8101FF0: @ 8101FF0 push {r4-r6,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -7100,7 +7100,7 @@ sub_810208C: @ 810208C cmp r0, 0x8 ble _081020D4 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081020D4: pop {r0} bx r0 @@ -7115,11 +7115,11 @@ sub_81020D8: @ 81020D8 ldrsh r0, [r6, r1] cmp r0, 0 bne _081020F4 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _081020F6 .pool _081020F4: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _081020F6: ldrb r0, [r4] movs r1, 0 @@ -7181,7 +7181,7 @@ _0810215C: cmp r0, 0 beq _08102178 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08102178: pop {r0} bx r0 @@ -7191,7 +7191,7 @@ _08102178: sub_810217C: @ 810217C push {r4-r6,lr} adds r4, r0, 0 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -7301,7 +7301,7 @@ _08102238: cmp r0, 0 beq _08102262 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08102262: pop {r4} pop {r0} @@ -7316,7 +7316,7 @@ sub_8102268: @ 8102268 ldrsh r0, [r6, r1] cmp r0, 0 bne _081022B2 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -7352,7 +7352,7 @@ _081022B2: cmp r1, r0 bne _081022C2 adds r0, r6, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081022C2: pop {r4-r6} pop {r0} @@ -7383,7 +7383,7 @@ _08102300: cmp r0, 0x2 bne _0810230C adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08102344 _0810230C: ldrh r0, [r4, 0x8] @@ -7465,7 +7465,7 @@ _08102390: strb r0, [r2] movs r0, 0x1E strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -7480,7 +7480,7 @@ _08102390: strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 _081023CC: @@ -7525,7 +7525,7 @@ sub_81023E0: @ 81023E0 cmp r0, 0x10 bne _08102428 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08102428: pop {r4,r5} pop {r0} @@ -7582,7 +7582,7 @@ _08102482: bcc _08102448 _08102490: adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r7} pop {r0} bx r0 @@ -7610,7 +7610,7 @@ _081024C2: cmp r4, r0 bcc _081024B2 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -7663,7 +7663,7 @@ sub_8102528: @ 8102528 cmp r0, 0 beq _0810253A adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810253A: pop {r0} bx r0 @@ -7673,7 +7673,7 @@ _0810253A: sub_8102540: @ 8102540 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r1, 0x2 bl sub_80A5C6C @@ -7729,7 +7729,7 @@ _081025AE: cmp r0, 0 beq _081025BC adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081025BC: pop {r0} bx r0 @@ -8034,7 +8034,7 @@ _08102820: cmp r0, 0 bne _08102832 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08102832: add sp, 0x4 pop {r3} @@ -8068,7 +8068,7 @@ _08102862: strh r0, [r5, 0x2E] ldrh r0, [r6, 0x4] strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -8113,7 +8113,7 @@ _08102862: b _081028FA .pool _081028D4: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -8216,7 +8216,7 @@ _081029A2: cmp r0, 0 bne _081029B0 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081029B0: pop {r0} bx r0 @@ -8333,7 +8333,7 @@ _08102A88: _08102A9A: ldr r0, =sub_8102AE0 str r0, [r6] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -8374,7 +8374,7 @@ sub_8102AE0: @ 8102AE0 ldrsh r0, [r0, r1] cmp r0, 0 bne _08102B32 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -8396,7 +8396,7 @@ _08102B26: ldr r0, =0x00002771 bl FreeSpritePaletteByTag adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08102B32: pop {r4} pop {r0} @@ -8481,7 +8481,7 @@ _08102BC2: sub_8102BCC: @ 8102BCC push {r4,lr} adds r4, r0, 0 - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] @@ -8575,7 +8575,7 @@ _08102C7A: cmp r4, 0x3 bls _08102C32 mov r0, r9 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r3,r4} mov r8, r3 mov r9, r4 @@ -8605,7 +8605,7 @@ _08102CAA: cmp r4, 0x3 bls _08102CAA adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 @@ -8657,7 +8657,7 @@ _08102D10: b _08102D4E .pool _08102D34: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -8855,7 +8855,7 @@ _08102EA6: sub_8102EB0: @ 8102EB0 push {r4-r7,lr} adds r6, r0, 0 - ldr r7, =gAnimationBankAttacker + ldr r7, =gAnimBankAttacker ldrb r0, [r7] bl GetBankSide lsls r0, 24 @@ -9002,7 +9002,7 @@ sub_8102FB8: @ 8102FB8 _08102FDC: ldr r6, =0x0000fff0 _08102FDE: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -9021,7 +9021,7 @@ _08102FDE: strh r0, [r5, 0x2E] ldr r0, =sub_80A64B0 str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4-r6} @@ -9135,7 +9135,7 @@ _081030DC: b _08103106 _08103100: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08103106: pop {r4} pop {r0} @@ -9197,11 +9197,11 @@ sub_8103164: @ 8103164 ldrsh r0, [r0, r1] cmp r0, 0 bne _08103180 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08103182 .pool _08103180: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08103182: ldrb r4, [r0] adds r0, r4, 0 @@ -9242,7 +9242,7 @@ sub_81031D0: @ 81031D0 lsls r0, 16 cmp r0, 0 bne _081031F8 - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldrh r1, [r4, 0x30] @@ -9268,11 +9268,11 @@ sub_8103208: @ 8103208 ldrsh r0, [r0, r1] cmp r0, 0 bne _08103224 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08103226 .pool _08103224: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08103226: ldrb r0, [r0] adds r1, r4, 0 @@ -9325,11 +9325,11 @@ sub_8103284: @ 8103284 ldrsh r0, [r0, r1] cmp r0, 0 bne _081032A0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _081032A2 .pool _081032A0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _081032A2: ldrb r5, [r0] adds r0, r5, 0 @@ -9463,11 +9463,11 @@ sub_8103390: @ 8103390 ldrsh r0, [r0, r1] cmp r0, 0 bne _081033AC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _081033AE .pool _081033AC: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _081033AE: ldrb r4, [r0] adds r0, r4, 0 @@ -9541,7 +9541,7 @@ sub_810342C: @ 810342C cmp r0, 0x5 ble _08103444 adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08103444: pop {r0} bx r0 @@ -9591,11 +9591,11 @@ sub_8103498: @ 8103498 ldrsh r0, [r0, r1] cmp r0, 0 bne _081034B4 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _081034B6 .pool _081034B4: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _081034B6: ldrb r0, [r0] adds r1, r4, 0 @@ -9664,7 +9664,7 @@ _08103524: cmp r0, 0x40 bne _08103538 adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08103538: pop {r0} bx r0 @@ -9716,7 +9716,7 @@ _0810357A: sub_810358C: @ 810358C push {r4-r6,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -9730,7 +9730,7 @@ sub_810358C: @ 810358C lsrs r0, 24 strh r0, [r5, 0x22] ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r6, [r0] @@ -9830,7 +9830,7 @@ sub_8103680: @ 8103680 cmp r0, 0 bne _08103696 adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0810369A _08103696: subs r0, r2, 0x1 @@ -9847,7 +9847,7 @@ sub_81036A0: @ 81036A0 lsls r4, 24 lsrs r4, 24 ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -9872,7 +9872,7 @@ sub_81036DC: @ 81036DC lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r1, r0, r1 ldrb r4, [r1] @@ -9974,7 +9974,7 @@ _081037AA: adds r0, r4, 0 bl sub_80A7344 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _081037D0 .pool _081037CC: @@ -9992,7 +9992,7 @@ sub_81037D8: @ 81037D8 push {r4,r5,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -10018,7 +10018,7 @@ _08103810: ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -10054,7 +10054,7 @@ _0810384C: _08103860: ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -10092,7 +10092,7 @@ sub_81038A0: @ 81038A0 strh r1, [r0, 0x36] ldr r1, =sub_80A6EEC str r1, [r0, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 @@ -10117,7 +10117,7 @@ sub_81038C8: @ 81038C8 b _0810390E .pool _081038EC: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -10137,7 +10137,7 @@ _0810390E: adds r0, r5, 0 movs r1, 0x1 bl sub_80A69CC - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -10201,7 +10201,7 @@ _08103980: strh r7, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 @@ -10507,7 +10507,7 @@ sub_8103BE4: @ 8103BE4 cmp r0, 0 bne _08103C02 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08103C02: pop {r0} bx r0 @@ -10677,7 +10677,7 @@ _08103D54: b _08103DB6 _08103D5C: ldr r1, =gBanksBySide - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -10716,7 +10716,7 @@ _08103DB0: _08103DB4: strh r0, [r2, 0x4] _08103DB6: - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -10742,11 +10742,11 @@ _08103DB6: ands r0, r1 cmp r0, 0 beq _08103E20 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _08103E20 @@ -10759,7 +10759,7 @@ _08103DB6: .pool _08103E20: mov r5, sp - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -10897,7 +10897,7 @@ _08103F28: asrs r0, 16 cmp r0, 0x3F ble _08103FA0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 lsls r0, 24 @@ -10914,7 +10914,7 @@ _08103F78: asrs r0, 16 cmp r0, 0x3F ble _08103FA0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 lsls r0, 24 @@ -10927,7 +10927,7 @@ _08103F78: b _08103FB0 .pool _08103FA0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 lsls r0, 24 @@ -11035,7 +11035,7 @@ _08104050: cmp r0, 0x18 bne _0810407C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810407C: pop {r4-r7} pop {r0} @@ -11050,7 +11050,7 @@ sub_8104088: @ 8104088 adds r5, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -11066,7 +11066,7 @@ sub_8104088: @ 8104088 adds r0, r1 lsls r0, 16 lsrs r7, r0, 16 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11112,7 +11112,7 @@ _081040CC: strh r7, [r5, 0x36] ldr r0, =sub_80A7000 str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 @@ -11145,7 +11145,7 @@ sub_8104154: @ 8104154 lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11184,7 +11184,7 @@ _08104178: cmp r0, 0x2 bne _081041B8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081041B8: pop {r4} pop {r0} @@ -11200,7 +11200,7 @@ sub_81041C4: @ 81041C4 bl sub_80A69CC movs r0, 0x14 strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -11339,7 +11339,7 @@ _081042BE: cmp r0, 0x1 bne _081042FE adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081042FE: pop {r4} pop {r0} @@ -11352,7 +11352,7 @@ sub_8104304: @ 8104304 adds r4, r0, 0 movs r1, 0 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11375,7 +11375,7 @@ _08104322: strh r0, [r4, 0x36] ldr r0, =sub_80A62EC str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r1, [r4, 0x1C] @@ -11423,7 +11423,7 @@ _08104390: strh r0, [r5, 0x22] movs r0, 0x6 strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -11462,7 +11462,7 @@ sub_81043F8: @ 81043F8 cmp r0, 0 beq _0810440E adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810440E: pop {r0} bx r0 @@ -11510,7 +11510,7 @@ _08104448: movs r0, 0x6 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -11664,7 +11664,7 @@ sub_8104594: @ 8104594 cmp r0, 0 beq _081045A8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081045A8: pop {r4} pop {r0} @@ -11752,7 +11752,7 @@ sub_8104614: @ 8104614 movs r1, 0x1 bl sub_80A750C adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08104664: pop {r4,r5} pop {r0} @@ -11786,7 +11786,7 @@ sub_8104674: @ 8104674 strh r0, [r4, 0x10] strh r5, [r4, 0x12] strh r5, [r4, 0x14] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 lsls r0, 24 @@ -11946,7 +11946,7 @@ _081047D8: movs r1, 0 strh r1, [r0, 0x26] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081047F6: pop {r4,r5} pop {r0} @@ -12124,7 +12124,7 @@ sub_8104938: @ 8104938 cmp r0, 0 bne _08104964 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0810498A .pool _08104964: @@ -12276,7 +12276,7 @@ _08104A64: adds r0, r2 strh r5, [r0, 0x26] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08104AA8 .pool _08104A9C: @@ -12333,7 +12333,7 @@ sub_8104AF0: @ 8104AF0 cmp r0, 0 bne _08104B10 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08104B10: pop {r4} pop {r0} @@ -12345,7 +12345,7 @@ _08104B10: sub_8104B1C: @ 8104B1C push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -12378,7 +12378,7 @@ _08104B50: ldr r0, =0x0000ffc0 _08104B6A: strh r0, [r4, 0x30] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -12391,7 +12391,7 @@ _08104B6A: strh r1, [r4, 0x32] strh r1, [r4, 0x34] strh r1, [r4, 0x36] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A656C @@ -12411,11 +12411,11 @@ sub_8104BAC: @ 8104BAC ldrsh r0, [r0, r1] cmp r0, 0 bne _08104BC8 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08104BCA .pool _08104BC8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08104BCA: ldrb r5, [r0] adds r0, r5, 0 @@ -12509,7 +12509,7 @@ sub_8104C78: @ 8104C78 cmp r0, 0 bne _08104C98 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08104C98: pop {r4} pop {r0} @@ -12559,7 +12559,7 @@ sub_8104CA4: @ 8104CA4 strh r2, [r4, 0x18] movs r0, 0x2 strh r0, [r4, 0x1A] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12741,7 +12741,7 @@ _08104E48: strh r1, [r0, 0x22] _08104E66: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08104E6C: pop {r4,r5} pop {r0} @@ -12759,7 +12759,7 @@ sub_8104E74: @ 8104E74 lsls r1, 3 ldr r0, =gTasks adds r5, r1, r0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] bl sub_80A6190 lsls r0, 24 @@ -12947,7 +12947,7 @@ _08104FF0: movs r0, 0x3 strb r0, [r1, 0x15] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810500E: pop {r4} pop {r0} @@ -12959,7 +12959,7 @@ _0810500E: sub_810501C: @ 810501C push {r4-r6,lr} adds r4, r0, 0 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0 bl sub_80A5C6C @@ -13169,7 +13169,7 @@ _0810519A: ands r0, r1 strb r0, [r2] adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081051BC: pop {r4} pop {r0} @@ -13194,11 +13194,11 @@ sub_81051C4: @ 81051C4 adds r1, r0, 0 cmp r2, 0 bne _081051F0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _081051F2 .pool _081051F0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _081051F2: ldrb r5, [r0] ldrb r1, [r1, 0x6] @@ -13212,7 +13212,7 @@ _081051F2: movs r1, 0x2 adds r0, r5, 0 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810526A @@ -13278,7 +13278,7 @@ sub_8105284: @ 8105284 adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810529E: pop {r4} pop {r0} @@ -13305,15 +13305,15 @@ sub_81052A4: @ 81052A4 ldrsh r0, [r0, r2] cmp r0, 0 bne _081052DC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r7, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget b _081052E2 .pool _081052DC: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r7, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker _081052E2: ldrb r0, [r0] mov r8, r0 @@ -13354,7 +13354,7 @@ _08105310: mov r4, r8 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810535C @@ -13389,7 +13389,7 @@ _0810536C: adds r4, r7, 0 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _081053E4 @@ -13457,7 +13457,7 @@ _081053FA: movs r1, 0x2 mov r0, r8 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810544C @@ -13581,7 +13581,7 @@ sub_8105538: @ 8105538 adds r4, r0, 0 movs r1, 0 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -13622,7 +13622,7 @@ sub_810557C: @ 810557C strh r0, [r4, 0x24] subs r2, 0x20 strh r2, [r4, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -13836,7 +13836,7 @@ sub_810571C: @ 810571C b _08105752 .pool _08105750: - ldr r0, =move_anim_8072740 + ldr r0, =DestroyAnimSprite _08105752: str r0, [r3, 0x1C] _08105754: @@ -13856,7 +13856,7 @@ sub_810575C: @ 810575C movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -13925,7 +13925,7 @@ sub_81057B8: @ 81057B8 orrs r1, r2 strb r1, [r0] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08105802: pop {r4,r5} pop {r0} @@ -13950,7 +13950,7 @@ sub_8105810: @ 8105810 strh r0, [r4, 0xE] movs r0, 0x3 strh r0, [r4, 0x20] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -14124,7 +14124,7 @@ _08105962: cmp r0, 0 bne _08105992 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08105992: pop {r4,r5} pop {r0} @@ -14263,7 +14263,7 @@ _08105A88: ands r1, r2 strb r1, [r0] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08105AA6: pop {r4-r6} pop {r0} @@ -14292,7 +14292,7 @@ sub_8105AAC: @ 8105AAC strh r0, [r4, 0x16] strh r0, [r4, 0x18] strh r0, [r4, 0x22] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -14469,7 +14469,7 @@ _08105C34: cmp r0, 0 bne _08105C42 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08105C42: pop {r4-r6} pop {r0} @@ -14603,7 +14603,7 @@ _08105D00: movs r1, 0 str r1, [r0] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0x4 pop {r4-r6} pop {r0} @@ -14626,7 +14626,7 @@ _08105D6A: cmp r4, 0 bge _08105D6A adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 @@ -14684,7 +14684,7 @@ sub_8105DE8: @ 8105DE8 adds r5, r0, 0 movs r1, 0 bl sub_80A69CC - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -14716,7 +14716,7 @@ _08105E08: strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldrb r1, [r4, 0xA] @@ -14765,7 +14765,7 @@ _08105E7A: cmp r0, 0x3C bne _08105EAA adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08105EAA: pop {r4} pop {r0} @@ -14923,7 +14923,7 @@ _08105FD8: movs r1, 0 bl SetGpuReg adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810600C: add sp, 0xC pop {r4,r5} @@ -14989,7 +14989,7 @@ _0810607C: strh r0, [r4, 0x24] strh r0, [r4, 0x26] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081060A4: pop {r4-r6} pop {r0} @@ -15054,7 +15054,7 @@ _0810610C: strh r0, [r4, 0x24] strh r0, [r4, 0x26] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08106134: pop {r4-r6} pop {r0} @@ -15072,7 +15072,7 @@ sub_8106140: @ 8106140 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -15120,7 +15120,7 @@ sub_810618C: @ 810618C b _081061BC _081061B6: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081061BC: pop {r4} pop {r0} @@ -15190,7 +15190,7 @@ _08106236: cmp r0, 0x78 ble _08106244 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106244: pop {r4} pop {r0} @@ -15268,7 +15268,7 @@ sub_810627C: @ 810627C cmp r5, 0x40 bgt _081062E2 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081062E2: pop {r4,r5} pop {r0} @@ -15291,11 +15291,11 @@ sub_81062E8: @ 81062E8 movs r0, 0x1 movs r1, 0x4 movs r2, 0x3 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -15303,7 +15303,7 @@ sub_81062E8: @ 81062E8 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0810632A: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -15489,7 +15489,7 @@ _081064BC: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _081064D0: movs r0, 0x50 movs r1, 0 @@ -15500,9 +15500,9 @@ _081064D0: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081064F0: add sp, 0x10 pop {r4,r5} @@ -15526,11 +15526,11 @@ sub_81064F8: @ 81064F8 movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -15538,7 +15538,7 @@ sub_81064F8: @ 81064F8 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0810653A: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -15561,7 +15561,7 @@ _0810653A: b _0810658A .pool _08106578: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -15747,7 +15747,7 @@ _081066FC: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _08106710: movs r0, 0x50 movs r1, 0 @@ -15758,9 +15758,9 @@ _08106710: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08106730: add sp, 0x10 pop {r4,r5} @@ -15773,7 +15773,7 @@ _08106730: sub_810673C: @ 810673C push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -15912,7 +15912,7 @@ _08106858: cmp r1, r0 bne _08106868 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106868: pop {r4} pop {r0} @@ -15924,7 +15924,7 @@ _08106868: sub_8106878: @ 8106878 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -15991,7 +15991,7 @@ sub_81068CC: @ 81068CC bge _08106910 _0810690A: adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106910: pop {r0} bx r0 @@ -16019,7 +16019,7 @@ sub_8106914: @ 8106914 cmp r0, r1 blt _08106940 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106940: pop {r0} bx r0 @@ -16029,7 +16029,7 @@ _08106940: sub_8106944: @ 8106944 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -16074,7 +16074,7 @@ sub_810699C: @ 810699C cmp r0, 0 beq _081069B2 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081069B2: pop {r0} bx r0 @@ -16164,7 +16164,7 @@ _08106A50: cmp r2, 0x64 ble _08106A5A adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106A5A: pop {r4,r5} pop {r0} @@ -16222,7 +16222,7 @@ _08106ABA: cmp r0, 0x1E ble _08106AC8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106AC8: pop {r4} pop {r0} @@ -16314,7 +16314,7 @@ sub_8106B54: @ 8106B54 adds r0, r4, 0 movs r1, 0 bl StartSpriteAnim - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A82E4 subs r0, 0x1 @@ -16439,7 +16439,7 @@ _08106C6A: cmp r0, 0x5A ble _08106C78 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106C78: pop {r4} pop {r0} @@ -16480,7 +16480,7 @@ _08106CB4: cmp r0, 0 beq _08106CC8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106CC8: pop {r4} pop {r0} @@ -16497,7 +16497,7 @@ sub_8106CD0: @ 8106CD0 cmp r0, 0 bne _08106CEC adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _08106D50 .pool _08106CEC: @@ -16505,11 +16505,11 @@ _08106CEC: ldrsh r0, [r1, r2] cmp r0, 0 bne _08106CFC - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _08106CFE .pool _08106CFC: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _08106CFE: ldrb r0, [r4] movs r1, 0x2 @@ -16579,7 +16579,7 @@ sub_8106D5C: @ 8106D5C b _08106D8C _08106D86: adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106D8C: pop {r0} bx r0 @@ -16628,7 +16628,7 @@ sub_8106DD4: @ 8106DD4 cmp r0, 0 bne _08106DF4 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08106DF4: pop {r4} pop {r0} @@ -16645,11 +16645,11 @@ sub_8106E00: @ 8106E00 ldrsh r0, [r0, r1] cmp r0, 0 bne _08106E1C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08106E1E .pool _08106E1C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08106E1E: ldrb r6, [r0] adds r0, r6, 0 @@ -16754,7 +16754,7 @@ sub_8106EC8: @ 8106EC8 cmp r0, 0x10 ble _08106EFC adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106EFC: pop {r0} bx r0 @@ -16803,7 +16803,7 @@ _08106F40: cmp r1, r0 bne _08106F54 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08106F54: pop {r4} pop {r0} @@ -16968,14 +16968,14 @@ _08107066: orrs r0, r1 strb r0, [r3] adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08107098: movs r1, 0x36 ldrsh r0, [r4, r1] cmp r0, 0x4 bne _081070A6 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081070A6: pop {r4} pop {r0} @@ -16992,11 +16992,11 @@ sub_81070AC: @ 81070AC ands r0, r1 cmp r0, 0 beq _081070F8 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _081070F8 @@ -17016,7 +17016,7 @@ sub_81070AC: @ 81070AC b _08107118 .pool _081070F8: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -17040,7 +17040,7 @@ _08107118: strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -17055,13 +17055,13 @@ sub_8107144: @ 8107144 lsls r0, 24 lsrs r0, 24 ldr r3, =gBattleAnimArgs - ldr r1, =gDisableStructMoveAnim + ldr r1, =gAnimDisableStructPtr ldr r1, [r1] ldrb r2, [r1, 0x10] movs r1, 0x1 ands r1, r2 strh r1, [r3, 0xE] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -17073,11 +17073,11 @@ update_fury_cutter_counter_copy: @ 8107168 lsls r0, 24 lsrs r0, 24 ldr r2, =gBattleAnimArgs - ldr r1, =gDisableStructMoveAnim + ldr r1, =gAnimDisableStructPtr ldr r1, [r1] ldrb r1, [r1, 0x10] strh r1, [r2, 0xE] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -17144,7 +17144,7 @@ _081071F8: cmp r1, r0 bne _0810720A adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810720A: pop {r4-r6} pop {r0} @@ -17196,7 +17196,7 @@ _0810725A: sub_8107260: @ 8107260 push {r4-r6,lr} adds r6, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -17237,7 +17237,7 @@ _081072A2: movs r1, 0x40 orrs r0, r1 strb r0, [r2] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -17253,7 +17253,7 @@ _081072D8: strh r0, [r6, 0x2E] ldrh r0, [r6, 0x20] strh r0, [r6, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -17422,7 +17422,7 @@ sub_810744C: @ 810744C adds r5, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -17445,7 +17445,7 @@ _08107482: strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -17507,7 +17507,7 @@ _08107506: cmp r0, 0 beq _08107518 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08107518: pop {r4} pop {r0} @@ -17603,7 +17603,7 @@ _081075BE: cmp r1, r0 bne _081075DE adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081075DE: pop {r4-r7} pop {r0} @@ -17621,7 +17621,7 @@ sub_81075EC: @ 81075EC strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -17683,7 +17683,7 @@ sub_8107674: @ 8107674 cmp r0, 0 beq _08107688 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08107688: ldrh r0, [r4, 0x3A] lsls r0, 16 @@ -17762,7 +17762,7 @@ sub_81076F4: @ 81076F4 cmp r1, 0 bne _08107722 adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08107722: pop {r0} bx r0 @@ -17773,7 +17773,7 @@ _08107722: sub_8107730: @ 8107730 push {r4-r7,lr} adds r4, r0, 0 - ldr r7, =gAnimationBankAttacker + ldr r7, =gAnimBankAttacker ldrb r0, [r7] movs r1, 0 bl sub_80A5C6C @@ -17836,7 +17836,7 @@ sub_81077A4: @ 81077A4 cmp r0, 0 beq _081077BA adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081077BA: pop {r0} bx r0 @@ -17846,11 +17846,11 @@ _081077BA: sub_81077C0: @ 81077C0 push {r4-r7,lr} adds r6, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -17898,7 +17898,7 @@ _0810781E: _08107828: adds r0, r6, 0 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -17910,7 +17910,7 @@ _08107828: _08107842: ldrh r0, [r5, 0x8] strh r0, [r6, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -17929,7 +17929,7 @@ _08107842: strh r0, [r6, 0x36] ldr r0, =sub_80A6EEC str r0, [r6, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 pop {r4-r7} @@ -17956,7 +17956,7 @@ sub_8107894: @ 8107894 strh r1, [r4, 0x36] ldr r0, =sub_80A6EEC str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -18026,7 +18026,7 @@ sub_810790C: @ 810790C cmp r0, r1 bne _0810794C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810794C: pop {r4} pop {r0} @@ -18054,11 +18054,11 @@ sub_8107954: @ 8107954 movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute mov r0, sp bl sub_80A6B30 bl IsContest @@ -18068,8 +18068,8 @@ sub_8107954: @ 8107954 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations - ldr r0, =gAnimationBankAttacker + bl SetAnimBgAttribute + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -18174,7 +18174,7 @@ _08107A32: b _08107B0E .pool _08107AB4: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -18454,7 +18454,7 @@ _08107D08: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _08107D1C: movs r0, 0 strh r0, [r7] @@ -18475,7 +18475,7 @@ _08107D1C: ldr r1, =0x0000ffff strh r1, [r0, 0x26] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08107D4A: pop {r3} mov r8, r3 @@ -18945,7 +18945,7 @@ _081080C0: cmp r0, 0x15 bne _081080DE adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081080DE: pop {r4} pop {r0} @@ -19267,7 +19267,7 @@ _0810836C: cmp r0, 0 bne _0810837A adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810837A: add sp, 0xC pop {r4-r6} @@ -19278,7 +19278,7 @@ _0810837A: thumb_func_start sub_8108384 sub_8108384: @ 8108384 push {r4,r5,lr} - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -19350,7 +19350,7 @@ sub_8108408: @ 8108408 lsls r1, 24 lsrs r1, 24 str r1, [sp] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -19576,7 +19576,7 @@ sub_81085C8: @ 81085C8 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xA] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -19721,7 +19721,7 @@ _08108704: cmp r0, 0 bne _08108712 adds r0, r1, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08108712: pop {r3} mov r8, r3 @@ -19956,7 +19956,7 @@ sub_81088E4: @ 81088E4 lsls r1, 3 ldr r0, =gTasks adds r5, r1, r0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -20171,7 +20171,7 @@ _08108AAA: b _08108AB8 _08108AB2: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08108AB8: pop {r4} pop {r0} @@ -20371,7 +20371,7 @@ sub_8108C08: @ 8108C08 cmp r0, 0 bne _08108C4C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08108C4C: pop {r4} pop {r0} @@ -20418,7 +20418,7 @@ sub_8108C94: @ 8108C94 adds r4, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -20495,7 +20495,7 @@ _08108D34: cmp r1, r0 bne _08108D46 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08108D46: ldrh r0, [r4, 0x2E] adds r0, 0x1 @@ -20593,7 +20593,7 @@ _08108DE2: strh r0, [r4, 0x2E] mov r0, r9 strh r0, [r4, 0x30] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 subs r0, 0x1 @@ -20648,7 +20648,7 @@ _08108E58: strh r0, [r4, 0x2E] mov r0, r9 strh r0, [r4, 0x30] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 subs r0, 0x1 @@ -20698,7 +20698,7 @@ sub_8108EC8: @ 8108EC8 movs r0, 0xFE lsls r0, 8 strh r0, [r4, 0x36] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r1, =sub_80A634C @@ -20732,7 +20732,7 @@ sub_8108F08: @ 8108F08 strh r0, [r4, 0x32] ldr r0, =sub_80A656C str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -20746,7 +20746,7 @@ sub_8108F4C: @ 8108F4C push {r4,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -20798,7 +20798,7 @@ _08108F9E: sub_8108FBC: @ 8108FBC push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -20886,7 +20886,7 @@ sub_8109064: @ 8109064 push {r4,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -21026,7 +21026,7 @@ sub_810916C: @ 810916C strh r1, [r0, 0x36] ldr r1, =sub_80A6EEC str r1, [r0, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 @@ -21037,11 +21037,11 @@ sub_810916C: @ 810916C sub_8109198: @ 8109198 push {r4-r6,lr} adds r6, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -21128,7 +21128,7 @@ sub_8109244: @ 8109244 strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -21164,7 +21164,7 @@ sub_810929C: @ 810929C beq _081092E4 movs r4, 0 strh r4, [r6, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -21224,7 +21224,7 @@ sub_8109314: @ 8109314 cmp r0, 0x1F bne _08109330 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08109330: pop {r4} pop {r0} @@ -21274,7 +21274,7 @@ sub_8109364: @ 8109364 strh r0, [r4, 0x30] ldrh r0, [r1, 0x8] strh r0, [r4, 0x32] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A653C @@ -21371,7 +21371,7 @@ sub_810940C: @ 810940C cmp r0, r1 bne _08109458 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08109458: pop {r4} pop {r0} @@ -21407,7 +21407,7 @@ sub_8109460: @ 8109460 adds r0, r2 ldrh r0, [r0, 0x22] strh r0, [r4, 0x10] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -21785,7 +21785,7 @@ _0810979C: cmp r0, 0 bne _081097AA adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081097AA: add sp, 0xC pop {r4,r5} @@ -21820,7 +21820,7 @@ sub_81097B4: @ 81097B4 lsls r0, 2 adds r0, r1 ldrh r4, [r0, 0x20] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -21992,7 +21992,7 @@ sub_8109930: @ 8109930 adds r0, r2 lsls r0, 16 lsrs r4, r0, 16 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -22214,7 +22214,7 @@ _08109AE0: cmp r0, 0x10 ble _08109AF4 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08109AF4: pop {r4} pop {r0} @@ -22248,7 +22248,7 @@ _08109B18: bl StartSpriteAnim ldrh r0, [r4, 0x4] strh r0, [r5, 0x3C] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -22261,7 +22261,7 @@ _08109B48: ldr r0, =0x0000fffc _08109B4A: strh r0, [r5, 0x36] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 movs r1, 0x3 @@ -22279,7 +22279,7 @@ _08109B70: ldrh r0, [r5, 0x30] adds r0, 0xC0 strh r0, [r5, 0x30] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -22356,7 +22356,7 @@ _08109BCE: lsls r0, 1 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -22426,7 +22426,7 @@ _08109C82: .pool _08109CA4: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08109CAA: pop {r4} pop {r0} @@ -22485,7 +22485,7 @@ _08109CC8: lsrs r0, 16 cmp r0, 0x83 bls _08109D3C - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 movs r1, 0x3 @@ -22500,7 +22500,7 @@ _08109CC8: b _08109D80 .pool _08109D3C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 lsls r0, 24 @@ -22561,7 +22561,7 @@ _08109DA8: cmp r0, 0x1E bne _08109DB6 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08109DB6: pop {r4} pop {r0} @@ -22578,7 +22578,7 @@ sub_8109DBC: @ 8109DBC lsls r1, 3 ldr r0, =gTasks adds r4, r1, r0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -22590,11 +22590,11 @@ sub_8109DBC: @ 8109DBC movs r1, 0x1 _08109DE2: strh r1, [r4, 0x20] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r1, [r0] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -22906,7 +22906,7 @@ _0810A024: blt _0810A024 _0810A04E: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810A054: pop {r4-r7} pop {r0} @@ -22932,7 +22932,7 @@ sub_810A060: @ 810A060 movs r1, 0x10 bl BlendPalette adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0x10 pop {r4} pop {r0} @@ -22974,7 +22974,7 @@ _0810A0CA: adds r0, 0x1 strh r0, [r2, 0x8] ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r6, [r0] @@ -23059,7 +23059,7 @@ _0810A16E: strh r1, [r0, 0x24] strh r1, [r0, 0x26] adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810A194: pop {r3-r5} mov r8, r3 @@ -23075,7 +23075,7 @@ _0810A194: sub_810A1A8: @ 810A1A8 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23119,7 +23119,7 @@ sub_810A1F8: @ 810A1F8 cmp r0, 0 beq _0810A20E adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810A20E: pop {r0} bx r0 @@ -23129,7 +23129,7 @@ _0810A20E: sub_810A214: @ 810A214 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23178,7 +23178,7 @@ _0810A26E: sub_810A274: @ 810A274 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -23191,7 +23191,7 @@ sub_810A274: @ 810A274 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23261,15 +23261,15 @@ _0810A324: beq _0810A35C b _0810A380 _0810A32E: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810A382 .pool _0810A338: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r6, 0x2 eors r0, r6 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _0810A354 @@ -23282,21 +23282,21 @@ _0810A354: eors r4, r0 b _0810A384 _0810A35C: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r4, 0x2 eors r0, r4 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810A380 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] eors r4, r0 b _0810A384 .pool _0810A380: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810A382: ldrb r4, [r0] _0810A384: @@ -23417,7 +23417,7 @@ sub_810A46C: @ 810A46C strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -23517,7 +23517,7 @@ sub_810A4F4: @ 810A4F4 b _0810A564 _0810A55E: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810A564: pop {r4} pop {r0} @@ -23562,7 +23562,7 @@ _0810A5A4: cmp r0, 0 bgt _0810A5B6 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810A5B6: pop {r0} bx r0 @@ -23576,7 +23576,7 @@ sub_810A5BC: @ 810A5BC lsls r0, 24 cmp r0, 0 bne _0810A5D8 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23588,7 +23588,7 @@ _0810A5D8: negs r0, r0 strh r0, [r1, 0x2] _0810A5E0: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -23633,11 +23633,11 @@ sub_810A628: @ 810A628 ands r0, r1 cmp r0, 0 beq _0810A64C - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget b _0810A64E .pool _0810A64C: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker _0810A64E: ldrb r6, [r0] bl IsContest @@ -23756,7 +23756,7 @@ _0810A742: cmp r0, 0 bgt _0810A754 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810A754: pop {r4} pop {r0} @@ -23812,7 +23812,7 @@ _0810A7B6: strh r0, [r4, 0x2E] ldr r0, =sub_80A64B0 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -23827,7 +23827,7 @@ sub_810A7DC: @ 810A7DC adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0 bl sub_80A5C6C @@ -24012,7 +24012,7 @@ _0810A952: .pool _0810A970: mov r0, r9 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0810A9BC _0810A978: cmp r7, 0 @@ -24199,7 +24199,7 @@ _0810AAE4: cmp r0, 0x33 bne _0810AAF8 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810AAF8: pop {r0} bx r0 @@ -24220,11 +24220,11 @@ sub_810AAFC: @ 810AAFC ldrsh r0, [r0, r1] cmp r0, 0 bne _0810AB28 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0810AB2A .pool _0810AB28: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0810AB2A: ldrb r0, [r4] movs r1, 0x2 @@ -24383,7 +24383,7 @@ _0810AC78: cmp r0, 0 bne _0810AC86 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810AC86: pop {r4-r7} pop {r0} @@ -24440,11 +24440,11 @@ sub_810ACD8: @ 810ACD8 ldrsh r0, [r0, r1] cmp r0, 0 bne _0810ACF4 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0810ACF6 .pool _0810ACF4: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0810ACF6: ldrb r0, [r4] movs r1, 0x2 @@ -24478,11 +24478,11 @@ sub_810AD30: @ 810AD30 ldrsh r0, [r0, r1] cmp r0, 0 bne _0810AD4C - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0810AD4E .pool _0810AD4C: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0810AD4E: ldrb r0, [r4] movs r1, 0x2 @@ -24501,7 +24501,7 @@ _0810AD4E: strh r0, [r5, 0x24] ldrh r0, [r1, 0x4] strh r0, [r5, 0x26] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A67D8 @@ -24518,7 +24518,7 @@ sub_810AD98: @ 810AD98 adds r5, r0, 0 movs r1, 0x1 bl StartSpriteAffineAnim - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -24646,7 +24646,7 @@ _0810AE90: lsrs r0, 24 movs r6, 0 strh r0, [r5, 0x26] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -24783,7 +24783,7 @@ _0810AFA0: ands r1, r2 strb r1, [r0] adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810AFC0: pop {r4-r6} pop {r0} @@ -24820,7 +24820,7 @@ _0810AFF4: _0810AFFA: b _0810B14E _0810AFFC: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -24878,7 +24878,7 @@ _0810B070: movs r0, 0x78 subs r0, r1 strh r0, [r5, 0xE] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x3 bl sub_80A5C6C @@ -24981,7 +24981,7 @@ _0810B140: cmp r0, 0 bne _0810B14E adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810B14E: pop {r4-r6} pop {r0} @@ -25124,7 +25124,7 @@ sub_810B23C: @ 810B23C beq _0810B280 b _0810B294 _0810B24E: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -25191,7 +25191,7 @@ _0810B2C8: .4byte _0810B404 .4byte _0810B414 _0810B2DC: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -25206,7 +25206,7 @@ _0810B2DC: strh r0, [r5, 0x16] movs r0, 0x4 strh r0, [r5, 0x18] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x2 bl sub_80A5C6C @@ -25338,7 +25338,7 @@ _0810B404: cmp r0, 0 bne _0810B428 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0810B428 _0810B414: ldrh r1, [r5, 0x1E] @@ -25539,7 +25539,7 @@ _0810B584: beq _0810B600 b _0810B60E _0810B58A: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_80A5C6C @@ -25561,7 +25561,7 @@ _0810B5A4: bgt _0810B5A4 strh r1, [r5, 0x24] _0810B5B4: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -25603,7 +25603,7 @@ _0810B600: cmp r0, 0 bne _0810B60E adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810B60E: pop {r4,r5} pop {r0} @@ -25721,7 +25721,7 @@ sub_810B6C4: @ 810B6C4 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -25734,7 +25734,7 @@ sub_810B6C4: @ 810B6C4 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -25934,7 +25934,7 @@ sub_810B848: @ 810B848 b _0810B8A6 _0810B8A0: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810B8A6: pop {r4} pop {r0} @@ -25957,7 +25957,7 @@ sub_810B8AC: @ 810B8AC movs r0, 0xFE lsls r0, 8 strh r0, [r4, 0x36] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r1, =sub_80A634C @@ -25976,14 +25976,14 @@ sub_810B8EC: @ 810B8EC adds r4, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26003,7 +26003,7 @@ _0810B92C: adds r0, r1 strh r0, [r4, 0x32] _0810B936: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -26015,7 +26015,7 @@ _0810B936: strh r0, [r4, 0x36] ldrh r0, [r1, 0x8] strh r0, [r4, 0x2E] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A6EEC @@ -26041,7 +26041,7 @@ sub_810B974: @ 810B974 b _0810B9C6 .pool _0810B990: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -26049,7 +26049,7 @@ _0810B990: adds r3, 0x22 movs r1, 0x1 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26130,7 +26130,7 @@ sub_810BA24: @ 810BA24 ldrsh r0, [r6, r1] cmp r0, 0 bne _0810BA74 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -26148,7 +26148,7 @@ sub_810BA24: @ 810BA24 b _0810BA86 .pool _0810BA74: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -26157,7 +26157,7 @@ _0810BA74: movs r1, 0x1 bl sub_80A8924 _0810BA86: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26277,7 +26277,7 @@ sub_810BB60: @ 810BB60 strh r5, [r4, 0x24] movs r0, 0x80 strh r0, [r4, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26312,7 +26312,7 @@ _0810BB90: sub_810BBC8: @ 810BBC8 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26406,7 +26406,7 @@ sub_810BC4C: @ 810BC4C bge _0810BC8E _0810BC88: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810BC8E: pop {r4} pop {r0} @@ -26431,7 +26431,7 @@ sub_810BC94: @ 810BC94 ldrsh r0, [r1, r2] cmp r0, 0 bne _0810BCE0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -26447,7 +26447,7 @@ sub_810BC94: @ 810BC94 b _0810BCF2 .pool _0810BCE0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -26456,7 +26456,7 @@ _0810BCE0: movs r1, 0x1 bl sub_80A8924 _0810BCF2: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26619,7 +26619,7 @@ _0810BDEC: bge _0810BE42 _0810BE3C: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810BE42: pop {r4} pop {r0} @@ -26645,7 +26645,7 @@ sub_810BE48: @ 810BE48 b _0810BEA2 .pool _0810BE6C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -26653,7 +26653,7 @@ _0810BE6C: adds r3, 0x22 movs r1, 0 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26686,7 +26686,7 @@ _0810BEB4: cmp r0, 0 beq _0810BEC8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810BEC8: pop {r4,r5} pop {r0} @@ -26712,7 +26712,7 @@ sub_810BED0: @ 810BED0 b _0810BF32 .pool _0810BEF4: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 @@ -26742,7 +26742,7 @@ _0810BF26: adds r0, r1 strh r0, [r5, 0x22] _0810BF32: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810BF90 .pool _0810BF40: @@ -26755,7 +26755,7 @@ _0810BF40: bl sub_80A6980 b _0810BF8E _0810BF52: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 @@ -26785,7 +26785,7 @@ _0810BF82: adds r0, r1 strh r0, [r5, 0x22] _0810BF8E: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810BF90: ldrb r0, [r0] strh r0, [r5, 0x3C] @@ -26806,7 +26806,7 @@ _0810BFB4: movs r0, 0x40 _0810BFB6: strh r0, [r5, 0x3A] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -26911,7 +26911,7 @@ _0810C086: b _0810C098 _0810C092: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810C098: pop {r4} pop {r0} @@ -26934,11 +26934,11 @@ sub_810C0A0: @ 810C0A0 movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -26946,7 +26946,7 @@ sub_810C0A0: @ 810C0A0 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0810C0E2: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -27148,7 +27148,7 @@ _0810C29C: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _0810C2B0: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -27164,9 +27164,9 @@ _0810C2B0: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810C2DA: add sp, 0x10 pop {r4,r5} @@ -27179,7 +27179,7 @@ _0810C2DA: sub_810C2F0: @ 810C2F0 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -27216,11 +27216,11 @@ sub_810C324: @ 810C324 movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -27228,7 +27228,7 @@ sub_810C324: @ 810C324 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0810C366: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -27420,7 +27420,7 @@ _0810C50C: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _0810C520: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -27436,9 +27436,9 @@ _0810C520: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810C54A: add sp, 0x10 pop {r4,r5} @@ -27456,13 +27456,13 @@ sub_810C560: @ 810C560 ldr r6, =gBattleAnimArgs ldrh r0, [r6] strh r0, [r5, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker mov r8, r0 ldrb r0, [r0] movs r1, 0x2 bl sub_80A5C6C adds r4, r0, 0 - ldr r7, =gAnimationBankTarget + ldr r7, =gAnimBankTarget ldrb r0, [r7] movs r1, 0x2 bl sub_80A5C6C @@ -27523,7 +27523,7 @@ _0810C5F0: movs r0, 0x1 strh r0, [r5, 0x3A] _0810C5F4: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -27545,7 +27545,7 @@ _0810C5F4: ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -27567,7 +27567,7 @@ _0810C65C: ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -27676,7 +27676,7 @@ _0810C728: _0810C736: movs r5, 0x50 strh r5, [r4, 0x2E] - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0 bl sub_80A5C6C @@ -27844,7 +27844,7 @@ _0810C85A: cmp r0, 0 bne _0810C8B4 ldr r1, =gBanksBySide - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -28011,7 +28011,7 @@ _0810C9CE: cmp r0, 0 bne _0810C9DC adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810C9DC: pop {r4,r5} pop {r0} @@ -28054,7 +28054,7 @@ sub_810C9E4: @ 810C9E4 lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810CAD0 @@ -28349,7 +28349,7 @@ _0810CC7C: unc_080B06FC: @ 810CC88 push {r4-r6,lr} adds r5, r0, 0 - ldr r0, =gDisableStructMoveAnim + ldr r0, =gAnimDisableStructPtr ldr r0, [r0] ldrb r1, [r0, 0x11] lsrs r0, r1, 4 @@ -28371,7 +28371,7 @@ _0810CCA6: ldr r6, =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -28381,7 +28381,7 @@ _0810CCA6: negs r0, r0 strh r0, [r6, 0x4] _0810CCCE: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -28423,7 +28423,7 @@ sub_810CD1C: @ 810CD1C bl StartSpriteAnim ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 _0810CD3E: @@ -28515,7 +28515,7 @@ _0810CDD8: cmp r0, 0x15 bne _0810CDF6 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810CDF6: pop {r4} pop {r0} @@ -28531,7 +28531,7 @@ sub_810CDFC: @ 810CDFC ldrb r3, [r1] lsls r3, 1 adds r3, r1 - ldr r1, =gDisableStructMoveAnim + ldr r1, =gAnimDisableStructPtr ldr r1, [r1] ldrb r1, [r1, 0x11] lsrs r2, r1, 4 @@ -28540,7 +28540,7 @@ sub_810CDFC: @ 810CDFC subs r2, r1 subs r2, 0x1 strh r2, [r3] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -28563,7 +28563,7 @@ unc_080B08A0: @ 810CE2C strh r0, [r4, 0x2E] ldr r0, =sub_80A64B0 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -28581,7 +28581,7 @@ sub_810CE68: @ 810CE68 ldrsh r0, [r4, r1] cmp r0, 0x1 bne _0810CE90 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -28658,7 +28658,7 @@ _0810CF0C: strh r0, [r5, 0x2E] ldr r0, =sub_80A64B0 str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -28680,11 +28680,11 @@ sub_810CF30: @ 810CF30 mov r9, r0 cmp r1, 0 bne _0810CF54 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810CF56 .pool _0810CF54: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810CF56: ldrb r0, [r0] mov r8, r0 @@ -28875,7 +28875,7 @@ sub_810D0B8: @ 810D0B8 bl DestroySprite _0810D0F4: adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0810D104 .pool _0810D100: @@ -28960,7 +28960,7 @@ sub_810D164: @ 810D164 strh r6, [r5, 0x24] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 _0810D1A4: @@ -28974,10 +28974,10 @@ _0810D1A4: sub_810D1B4: @ 810D1B4 push {r4-r6,lr} adds r6, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget eors r0, r1 ldrb r1, [r2] cmp r0, r1 @@ -28997,7 +28997,7 @@ _0810D1E0: adds r0, r6, 0 movs r1, 0x1 bl sub_80A6980 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -29059,7 +29059,7 @@ sub_810D240: @ 810D240 b _0810D272 _0810D26C: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810D272: pop {r4} pop {r0} @@ -29105,7 +29105,7 @@ sub_810D2B0: @ 810D2B0 strh r0, [r4, 0x2E] ldr r0, =sub_80A64B0 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -29146,7 +29146,7 @@ sub_810D308: @ 810D308 bne _0810D34C movs r0, 0x6 strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -29178,7 +29178,7 @@ sub_810D360: @ 810D360 strh r1, [r0, 0x2E] ldr r1, =sub_80A64B0 str r1, [r0, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 @@ -29251,7 +29251,7 @@ _0810D3F6: cmp r0, 0x78 ble _0810D404 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810D404: pop {r4} pop {r0} @@ -29267,11 +29267,11 @@ sub_810D40C: @ 810D40C ldrsh r0, [r0, r1] cmp r0, 0 bne _0810D428 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0810D42A .pool _0810D428: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0810D42A: ldrb r0, [r4] movs r1, 0 @@ -29332,7 +29332,7 @@ _0810D48E: cmp r0, 0 bne _0810D4AA adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0810D4EC _0810D4AA: ldrh r0, [r1, 0x2E] @@ -29370,7 +29370,7 @@ _0810D4DA: cmp r0, 0 bne _0810D4EC adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810D4EC: pop {r0} bx r0 @@ -29386,7 +29386,7 @@ sub_810D4F4: @ 810D4F4 ldrsh r0, [r6, r1] cmp r0, 0 bne _0810D520 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -29397,7 +29397,7 @@ sub_810D4F4: @ 810D4F4 b _0810D532 .pool _0810D520: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -29473,7 +29473,7 @@ _0810D5C0: b _0810D5CE _0810D5C6: adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0810D5D2 _0810D5CE: ldr r0, =sub_810D5DC @@ -29505,7 +29505,7 @@ sub_810D5DC: @ 810D5DC cmp r0, 0x28 ble _0810D604 adds r0, r1, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810D604: pop {r0} bx r0 @@ -29533,7 +29533,7 @@ sub_810D608: @ 810D608 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A8328 movs r1, 0x3 @@ -29545,11 +29545,11 @@ sub_810D608: @ 810D608 ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget b _0810D680 .pool _0810D664: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 movs r1, 0x3 @@ -29561,7 +29561,7 @@ _0810D664: ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker _0810D680: ldrb r0, [r0] strh r0, [r5, 0x3C] @@ -29704,7 +29704,7 @@ sub_810D770: @ 810D770 cmp r4, r0 bge _0810D7BA adds r0, r7, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0810D818 _0810D7BA: ldrh r0, [r7, 0x2E] @@ -29712,7 +29712,7 @@ _0810D7BA: strh r0, [r7, 0x2E] b _0810D818 _0810D7C2: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -29725,7 +29725,7 @@ _0810D7C2: adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget mov r8, r2 ldrb r0, [r2] movs r1, 0x2 @@ -29793,7 +29793,7 @@ sub_810D830: @ 810D830 ble _0810D870 _0810D86A: adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810D870: pop {r0} bx r0 @@ -29821,15 +29821,15 @@ sub_810D874: @ 810D874 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r4, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810D8BE .pool _0810D8B8: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r4, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810D8BE: ldrb r0, [r0] bl sub_80A8328 @@ -29893,7 +29893,7 @@ _0810D918: strh r0, [r5, 0x36] adds r0, r5, 0 bl obj_translate_based_on_private_1_2_3_4 - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A6F98 @@ -29915,7 +29915,7 @@ sub_810D960: @ 810D960 cmp r1, r0 bne _0810D976 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810D976: ldrh r0, [r4, 0x2E] adds r0, 0x1 @@ -29929,7 +29929,7 @@ _0810D976: sub_810D984: @ 810D984 push {r4-r6,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -30018,7 +30018,7 @@ _0810DA34: bl StartSpriteAnim b _0810DA5E _0810DA48: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30030,7 +30030,7 @@ _0810DA48: _0810DA5E: ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -30067,7 +30067,7 @@ sub_810DA7C: @ 810DA7C cmp r0, 0x28 ble _0810DAB6 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810DAB6: pop {r4} pop {r0} @@ -30128,7 +30128,7 @@ _0810DB1A: ldrh r1, [r4, 0x1C] adds r0, r1 strh r0, [r4, 0x1C] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30179,7 +30179,7 @@ _0810DB60: movs r0, 0x1 bl sub_80A6DAC adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810DB98: pop {r4-r7} pop {r0} @@ -30205,7 +30205,7 @@ _0810DBC2: bl sub_80A69CC ldrh r0, [r4, 0x4] strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -30239,7 +30239,7 @@ sub_810DC10: @ 810DC10 cmp r0, 0 beq _0810DC24 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810DC24: pop {r4} pop {r0} @@ -30263,7 +30263,7 @@ _0810DC44: adds r0, r4, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] mov r6, sp adds r6, 0x2 @@ -30271,7 +30271,7 @@ _0810DC44: mov r2, sp adds r3, r6, 0 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30314,7 +30314,7 @@ sub_810DCB4: @ 810DCB4 cmp r0, 0 beq _0810DCC8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810DCC8: pop {r4} pop {r0} @@ -30378,7 +30378,7 @@ sub_810DD24: @ 810DD24 cmp r0, 0 bne _0810DD4A adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810DD4A: pop {r4} pop {r0} @@ -30389,7 +30389,7 @@ _0810DD4A: sub_810DD50: @ 810DD50 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -30397,7 +30397,7 @@ sub_810DD50: @ 810DD50 adds r3, 0x22 movs r1, 0x1 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30426,7 +30426,7 @@ _0810DD7C: strh r1, [r4, 0x36] ldr r0, =sub_80A6EEC str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -30450,7 +30450,7 @@ sub_810DDC4: @ 810DDC4 b _0810DE16 .pool _0810DDE0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -30458,7 +30458,7 @@ _0810DDE0: adds r3, 0x22 movs r1, 0x1 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30514,7 +30514,7 @@ sub_810DE2C: @ 810DE2C cmp r0, 0 beq _0810DE68 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810DE68: pop {r4} pop {r0} @@ -30569,7 +30569,7 @@ sub_810DE98: @ 810DE98 cmp r0, 0x47 bne _0810DED2 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810DED2: pop {r4} pop {r0} @@ -30666,7 +30666,7 @@ _0810DF76: cmp r1, 0 bne _0810DF90 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810DF90: pop {r4-r7} pop {r0} @@ -30680,7 +30680,7 @@ sub_810DFA8: @ 810DFA8 adds r6, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30696,7 +30696,7 @@ _0810DFC8: strh r0, [r6, 0x2E] ldrh r0, [r6, 0x20] strh r0, [r6, 0x30] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -30737,7 +30737,7 @@ sub_810E028: @ 810E028 cmp r0, 0 beq _0810E03C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810E03C: pop {r4} pop {r0} @@ -30748,7 +30748,7 @@ _0810E03C: sub_810E044: @ 810E044 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -30805,7 +30805,7 @@ _0810E088: ldrsh r0, [r2, r3] cmp r0, 0 bne _0810E0EC - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -30821,7 +30821,7 @@ _0810E088: b _0810E0FE .pool _0810E0EC: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -30841,7 +30841,7 @@ _0810E0FE: strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldrb r1, [r4, 0xA] @@ -30919,7 +30919,7 @@ _0810E1AA: cmp r0, r1 bge _0810E1C2 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810E1C2: pop {r0} bx r0 @@ -30929,7 +30929,7 @@ _0810E1C2: sub_810E1C8: @ 810E1C8 push {r4,r5,lr} adds r5, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30955,7 +30955,7 @@ _0810E1FE: strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -31036,7 +31036,7 @@ _0810E296: ands r0, r2 strb r0, [r1] adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810E2BC: pop {r4} pop {r0} @@ -31099,11 +31099,11 @@ sub_810E314: @ 810E314 ands r0, r1 cmp r0, 0 beq _0810E33C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0810E33E .pool _0810E33C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0810E33E: ldrb r6, [r0] adds r0, r6, 0 @@ -32049,7 +32049,7 @@ _0810EA36: sub_810EA4C: @ 810EA4C push {r4,r5,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A8328 movs r1, 0x3 @@ -32061,7 +32061,7 @@ sub_810EA4C: @ 810EA4C ands r0, r2 orrs r0, r1 strb r0, [r4, 0x5] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -32106,7 +32106,7 @@ _0810EAC4: ldrsh r0, [r4, r2] cmp r0, 0 bne _0810EADC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32117,7 +32117,7 @@ _0810EADC: ldrsh r0, [r4, r1] cmp r0, 0x1 bne _0810EAF8 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32189,7 +32189,7 @@ _0810EB6A: cmp r0, r1 bne _0810EB82 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810EB82: pop {r4} pop {r0} @@ -32237,7 +32237,7 @@ sub_810EB88: @ 810EB88 strh r0, [r4, 0x6] ldr r0, =gUnknown_085973E8 mov r8, r0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -32263,7 +32263,7 @@ _0810EC02: cmp r0, 0xFF ble _0810EC16 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810EC16: pop {r3} mov r8, r3 @@ -32316,7 +32316,7 @@ _0810EC78: cmp r0, 0 beq _0810EC8C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810EC8C: pop {r4} pop {r0} @@ -32341,7 +32341,7 @@ _0810ECAA: beq _0810ECE0 b _0810ED1E _0810ECB0: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_80A5C6C @@ -32394,7 +32394,7 @@ _0810ECE0: ands r0, r2 strb r0, [r1] adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810ED1E: pop {r4} pop {r0} @@ -32521,7 +32521,7 @@ _0810EE00: cmp r0, 0 ble _0810EE0E adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810EE0E: pop {r0} bx r0 @@ -32545,11 +32545,11 @@ _0810EE28: ldrsh r0, [r0, r2] cmp r0, 0 bne _0810EE40 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0810EE42 .pool _0810EE40: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0810EE42: ldrb r0, [r4] movs r1, 0 @@ -32631,7 +32631,7 @@ _0810EECC: adds r0, r5, 0 bl sub_80A749C adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810EEEC: add sp, 0x4 pop {r4,r5} @@ -32700,11 +32700,11 @@ _0810EF60: ldrsh r0, [r2, r1] cmp r0, 0 bne _0810EF74 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0810EF76 .pool _0810EF74: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0810EF76: ldrb r0, [r4] movs r1, 0 @@ -32773,7 +32773,7 @@ _0810EFEA: cmp r0, 0x1F bne _0810EFFE adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810EFFE: pop {r4} pop {r0} @@ -32845,7 +32845,7 @@ _0810F02A: b _0810F07E _0810F078: adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810F07E: pop {r0} bx r0 @@ -32861,7 +32861,7 @@ sub_810F084: @ 810F084 mov r8, r0 ldrh r4, [r0, 0x20] ldrh r5, [r0, 0x22] - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -33021,7 +33021,7 @@ _0810F1BC: _0810F1DA: strb r0, [r1] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -33038,7 +33038,7 @@ sub_810F1EC: @ 810F1EC lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -33078,7 +33078,7 @@ _0810F22E: orrs r1, r0 lsrs r6, r1, 31 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F264 @@ -33091,7 +33091,7 @@ _0810F264: adds r4, r0, 0 eors r4, r7 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F284 @@ -33109,7 +33109,7 @@ _0810F284: lsls r0, 24 cmp r0, 0 beq _0810F2B8 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -33126,7 +33126,7 @@ _0810F2B0: movs r0, 0x28 b _0810F2F2 _0810F2B8: - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -33205,7 +33205,7 @@ sub_810F340: @ 810F340 b _0810F3B6 _0810F35C: adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F382 @@ -33226,7 +33226,7 @@ _0810F382: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F3AC @@ -33375,7 +33375,7 @@ sub_810F46C: @ 810F46C lsrs r4, r0, 24 adds r6, r4, 0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F4D4 @@ -33398,7 +33398,7 @@ _0810F4D4: adds r4, r0, 0 eors r4, r6 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F502 @@ -33454,7 +33454,7 @@ sub_810F524: @ 810F524 orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F562 @@ -33464,7 +33464,7 @@ _0810F562: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0810F57C @@ -33473,7 +33473,7 @@ _0810F562: adds r0, r5, 0 bl sub_80A477C _0810F57C: - ldr r0, =move_anim_8072740 + ldr r0, =DestroyAnimSprite str r0, [r6, 0x1C] pop {r4-r6} pop {r0} @@ -33505,7 +33505,7 @@ _0810F5A6: lsls r0, 24 cmp r0, 0 beq _0810F5EE - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -33568,7 +33568,7 @@ _0810F62C: sub_810F634: @ 810F634 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -33608,7 +33608,7 @@ _0810F684: movs r0, 0x1 _0810F692: strh r0, [r5, 0x30] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A67D8 @@ -33623,7 +33623,7 @@ _0810F692: sub_810F6B0: @ 810F6B0 push {r4-r7,lr} adds r5, r0, 0 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r1, 0x1 bl sub_80A861C @@ -33756,7 +33756,7 @@ _0810F7B4: cmp r0, r1 bne _0810F7CC adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810F7CC: pop {r4} pop {r0} @@ -33805,7 +33805,7 @@ sub_810F810: @ 810F810 cmp r0, 0 bne _0810F830 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810F830: pop {r4} pop {r0} @@ -33831,7 +33831,7 @@ sub_810F83C: @ 810F83C strh r0, [r4, 0x8] strh r1, [r4, 0xA] strh r1, [r4, 0xC] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -33930,7 +33930,7 @@ _0810F900: ldrb r0, [r4, 0x8] bl sub_80A7344 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810F936: pop {r4,r5} pop {r0} @@ -33952,7 +33952,7 @@ sub_810F940: @ 810F940 movs r0, 0x10 strh r0, [r5, 0xE] strh r1, [r5, 0x10] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -34203,7 +34203,7 @@ _0810FB44: movs r1, 0 bl SetGpuReg adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810FB5A: pop {r4-r6} pop {r0} @@ -34241,7 +34241,7 @@ _0810FB8A: cmp r1, r0 bne _0810FB9C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0810FB9C: ldrh r0, [r4, 0x30] adds r0, 0x1 @@ -34260,7 +34260,7 @@ sub_810FBA8: @ 810FBA8 ldrsh r0, [r6, r1] cmp r0, 0 bne _0810FBD4 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -34305,7 +34305,7 @@ sub_810FBF0: @ 810FBF0 bne _0810FC60 ldr r0, =0x0000fff6 strh r0, [r5, 0x1C] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x5 bl sub_80A861C @@ -34316,7 +34316,7 @@ sub_810FBF0: @ 810FBF0 bl sub_80A861C adds r0, 0x8 strh r0, [r5, 0x20] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x5 bl sub_80A861C @@ -34331,7 +34331,7 @@ sub_810FBF0: @ 810FBF0 _0810FC60: movs r0, 0xA strh r0, [r5, 0x1C] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x4 bl sub_80A861C @@ -34342,7 +34342,7 @@ _0810FC60: bl sub_80A861C subs r0, 0x8 strh r0, [r5, 0x20] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x4 bl sub_80A861C @@ -34357,7 +34357,7 @@ _0810FC94: bne _0810FCE8 ldr r0, =0x0000fff6 strh r0, [r5, 0x1C] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x4 bl sub_80A861C @@ -34368,7 +34368,7 @@ _0810FC94: bl sub_80A861C adds r0, 0x8 strh r0, [r5, 0x20] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x4 bl sub_80A861C @@ -34383,7 +34383,7 @@ _0810FC94: _0810FCE8: movs r0, 0xA strh r0, [r5, 0x1C] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x5 bl sub_80A861C @@ -34394,7 +34394,7 @@ _0810FCE8: bl sub_80A861C subs r0, 0x8 strh r0, [r5, 0x20] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x5 bl sub_80A861C @@ -34497,7 +34497,7 @@ _0810FDD4: cmp r0, 0x11 ble _0810FDE8 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0810FDE8: pop {r4,r5} pop {r0} @@ -34535,7 +34535,7 @@ sub_810FE14: @ 810FE14 lsls r1, 3 ldr r0, =gTasks adds r4, r1, r0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl sub_80A6190 lsls r0, 24 @@ -34590,7 +34590,7 @@ _0810FE86: movs r0, 0 strh r0, [r4, 0x24] _0810FE92: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -34786,7 +34786,7 @@ _08110014: .pool _08110020: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08110026: pop {r3,r4} mov r8, r3 @@ -34819,7 +34819,7 @@ sub_8110034: @ 8110034 cmp r6, 0xFF bne _0811006C adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08110116 .pool _0811006C: @@ -34835,7 +34835,7 @@ _0811006C: adds r0, r5, 0 bl FreeOamMatrix mov r0, r8 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08110116 .pool _08110094: @@ -35035,7 +35035,7 @@ _08110228: lsrs r0, 24 bl FreeOamMatrix adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08110238: pop {r4,r5} pop {r0} @@ -35062,7 +35062,7 @@ _08110256: beq _0811034A b _08110360 _08110260: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -35181,7 +35181,7 @@ _0811034A: movs r1, 0 bl SetGpuReg adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08110360: pop {r4,r5} pop {r0} @@ -35209,7 +35209,7 @@ sub_8110368: @ 8110368 b _081103C4 .pool _08110394: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35232,7 +35232,7 @@ _08110394: negs r0, r0 strh r0, [r1] _081103C4: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A60AC @@ -35270,7 +35270,7 @@ _081103C4: strh r0, [r6, 0x36] ldr r0, =sub_80A6EEC str r0, [r6, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 pop {r4-r6} @@ -35297,7 +35297,7 @@ sub_8110438: @ 8110438 b _08110478 .pool _0811045C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35311,7 +35311,7 @@ _0811045C: negs r1, r1 strh r1, [r0] _08110478: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A60AC @@ -35345,7 +35345,7 @@ _08110478: strh r0, [r6, 0x36] ldr r0, =sub_80A6EEC str r0, [r6, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 pop {r4-r6} @@ -35384,7 +35384,7 @@ _08110500: ldrsh r0, [r1, r2] cmp r0, 0 bne _08110548 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -35400,7 +35400,7 @@ _08110500: b _0811055A .pool _08110548: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -35431,7 +35431,7 @@ sub_811057C: @ 811057C cmp r0, 0 beq _08110592 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _081105AE _08110592: movs r1, 0x3A @@ -35457,7 +35457,7 @@ _081105AE: sub_81105B4: @ 81105B4 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -35465,7 +35465,7 @@ sub_81105B4: @ 81105B4 adds r3, 0x22 movs r1, 0 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35490,7 +35490,7 @@ _081105FC: ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35545,7 +35545,7 @@ _08110664: cmp r0, 0x33 bne _08110678 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08110678: pop {r0} bx r0 @@ -35633,7 +35633,7 @@ sub_8110700: @ 8110700 movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -35655,7 +35655,7 @@ sub_8110720: @ 8110720 b _08110762 .pool _08110740: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35676,11 +35676,11 @@ _08110762: lsls r0, 24 cmp r0, 0 bne _081107B2 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] bl GetBankSide lsls r4, 24 @@ -35712,7 +35712,7 @@ _081107B2: adds r0, r7, 0 movs r1, 0x1 bl sub_80A69CC - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -35764,7 +35764,7 @@ _081107B2: strh r5, [r7, 0x36] ldr r0, =sub_80A6EEC str r0, [r7, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r7, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 @@ -35780,7 +35780,7 @@ sub_8110850: @ 8110850 adds r6, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35794,7 +35794,7 @@ _08110870: ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -35849,7 +35849,7 @@ sub_81108CC: @ 81108CC cmp r0, 0 beq _081108F8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _08110988 _081108F8: movs r0, 0x2E @@ -35941,11 +35941,11 @@ sub_8110994: @ 8110994 ldrsh r0, [r0, r1] cmp r0, 0 bne _081109B0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _081109B2 .pool _081109B0: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _081109B2: ldrb r0, [r4] movs r1, 0x2 @@ -35980,7 +35980,7 @@ sub_81109F0: @ 81109F0 ldrsh r0, [r6, r1] cmp r0, 0 beq _08110A10 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x20 @@ -36064,7 +36064,7 @@ sub_8110AB4: @ 8110AB4 bl StartSpriteAnim adds r0, r5, 0 bl AnimateSprite - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -36183,7 +36183,7 @@ sub_8110B80: @ 8110B80 cmp r0, r1 bne _08110BC6 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08110BC6: pop {r4} pop {r0} @@ -36207,11 +36207,11 @@ sub_8110BCC: @ 8110BCC movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -36219,7 +36219,7 @@ sub_8110BCC: @ 8110BCC movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _08110C10: ldr r0, =gBattle_BG1_X strh r5, [r0] @@ -36254,7 +36254,7 @@ _08110C10: ldrsh r0, [r0, r1] cmp r0, 0 beq _08110C6E - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -36440,7 +36440,7 @@ _08110DFC: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _08110E10: ldr r0, =gBattle_BG1_X movs r1, 0 @@ -36456,9 +36456,9 @@ _08110E10: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08110E3A: add sp, 0x10 pop {r4,r5} @@ -36480,7 +36480,7 @@ sub_8110E4C: @ 8110E4C ldrsh r0, [r4, r2] cmp r0, 0 beq _08110E98 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -36568,7 +36568,7 @@ _08110F0E: cmp r0, r1 bge _08110F24 _08110F20: - ldr r0, =move_anim_8072740 + ldr r0, =DestroyAnimSprite str r0, [r5, 0x1C] _08110F24: pop {r4,r5} @@ -36597,7 +36597,7 @@ sub_8110F30: @ 8110F30 strh r0, [r4, 0x36] ldr r0, =sub_80A6EEC str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -36620,7 +36620,7 @@ sub_8110F74: @ 8110F74 lsls r1, 3 ldr r0, =gTasks adds r6, r1, r0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -36636,7 +36636,7 @@ sub_8110F74: @ 8110F74 lsls r1, 13 adds r0, r1 lsrs r7, r0, 16 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -36926,7 +36926,7 @@ _081111FE: cmp r0, 0 bne _0811120C adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0811120C: pop {r4} pop {r0} @@ -37090,7 +37090,7 @@ _0811134E: thumb_func_start sub_811135C sub_811135C: @ 811135C push {lr} - ldr r0, =gDisableStructMoveAnim + ldr r0, =gAnimDisableStructPtr ldr r0, [r0] ldrb r1, [r0, 0x11] lsrs r0, r1, 4 @@ -37183,7 +37183,7 @@ _08111400: cmp r0, 0 bne _08111412 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08111412: pop {r0} bx r0 @@ -37193,7 +37193,7 @@ _08111412: sub_8111418: @ 8111418 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -37216,7 +37216,7 @@ _08111434: sub_8111444: @ 8111444 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -37286,7 +37286,7 @@ sub_811149C: @ 811149C cmp r0, 0x8C ble _081114E6 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081114E6: pop {r4} pop {r0} @@ -37298,7 +37298,7 @@ sub_81114EC: @ 81114EC push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, =gMoveDmgMoveAnim + ldr r2, =gAnimMoveDmg ldr r0, [r2] cmp r0, 0x20 bgt _08111500 @@ -37322,7 +37322,7 @@ _08111510: strh r0, [r1, 0xE] _0811151A: adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -37365,7 +37365,7 @@ _0811154E: movs r0, 0x1 bl sub_80A6DAC adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0811157A: ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -37424,7 +37424,7 @@ _081115BC: movs r0, 0x1 bl sub_80A6DAC adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081115F4: pop {r4-r6} pop {r0} @@ -37443,7 +37443,7 @@ sub_811160C: @ 811160C strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -37748,7 +37748,7 @@ _08111852: cmp r0, 0x3D bne _08111884 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08111884: pop {r4} pop {r0} @@ -37902,7 +37902,7 @@ _081119BC: adds r0, r1, 0 bl sub_80A7344 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask movs r0, 0x50 movs r1, 0 bl SetGpuReg @@ -37925,7 +37925,7 @@ sub_81119E0: @ 81119E0 adds r4, r0, 0 ldrh r5, [r4, 0x20] ldrh r6, [r4, 0x22] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker mov r8, r0 ldrb r0, [r0] movs r1, 0x2 @@ -38042,7 +38042,7 @@ _08111AD2: lsls r0, 16 cmp r0, 0 bgt _08111B96 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -38104,7 +38104,7 @@ _08111B3C: lsls r0, 16 cmp r0, 0 bgt _08111B96 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -38223,7 +38223,7 @@ _08111C38: cmp r6, 0 beq _08111C44 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _08111C4A _08111C44: ldrh r0, [r3, 0x30] @@ -38254,7 +38254,7 @@ sub_8111C50: @ 8111C50 cmp r0, 0 bge _08111C80 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08111D5C .pool _08111C80: @@ -38285,7 +38285,7 @@ _08111C80: adds r0, r4 movs r1, 0x50 strh r1, [r0, 0x2E] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -38470,7 +38470,7 @@ _08111E1C: b _08111E48 _08111E42: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08111E48: pop {r4} pop {r0} @@ -38510,7 +38510,7 @@ sub_8111E78: @ 8111E78 lsls r0, 3 ldr r1, =gTasks adds r5, r0, r1 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -38557,7 +38557,7 @@ _08111ED0: bl FreeSpritePaletteByTag _08111EFE: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _081120CC .pool _08111F0C: @@ -38604,7 +38604,7 @@ _08111F0C: adds r2, r4 ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 @@ -38864,7 +38864,7 @@ sub_8112170: @ 8112170 lsls r0, 3 ldr r1, =gTasks adds r4, r0, r1 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -38956,7 +38956,7 @@ _08112248: bl SetGpuRegBits _08112252: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08112258: ldrh r0, [r4, 0x26] adds r0, 0x1 @@ -38979,7 +38979,7 @@ sub_8112264: @ 8112264 ldrsh r0, [r0, r1] cmp r0, 0 bne _081122AC - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -38994,11 +38994,11 @@ sub_8112264: @ 8112264 lsls r2, 13 adds r0, r2 lsrs r5, r0, 16 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget b _081122D0 .pool _081122AC: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -39013,7 +39013,7 @@ _081122AC: lsls r2, 13 adds r0, r2 lsrs r5, r0, 16 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker _081122D0: ldrb r0, [r4] movs r1, 0 @@ -39166,7 +39166,7 @@ sub_81123C4: @ 81123C4 ldr r2, =gBattleAnimArgs ldrh r0, [r2] strh r0, [r1, 0x1C] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -39189,7 +39189,7 @@ _08112434: _08112436: lsls r1, r4, 16 asrs r3, r1, 16 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r2, [r0] str r1, [sp, 0x10] cmp r3, r2 @@ -39201,7 +39201,7 @@ _08112436: lsls r0, r4, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _08112502 @@ -39565,7 +39565,7 @@ _0811273C: movs r1, 0 bl SetGpuReg adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08112752: pop {r4,r5} pop {r0} @@ -39594,7 +39594,7 @@ sub_8112758: @ 8112758 movs r0, 0x54 movs r1, 0x10 bl SetGpuReg - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -39855,7 +39855,7 @@ sub_8112994: @ 8112994 movs r1, 0 bl SetGpuReg adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081129DA: pop {r4,r5} pop {r0} @@ -39869,7 +39869,7 @@ sub_81129F0: @ 81129F0 adds r4, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -40048,7 +40048,7 @@ sub_8112B44: @ 8112B44 ldr r0, =gBattle_WIN0V strh r1, [r0] adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -40064,7 +40064,7 @@ sub_8112B78: @ 8112B78 movs r1, 0xC bl Sin strh r0, [r5, 0x24] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -40171,7 +40171,7 @@ sub_8112C4C: @ 8112C4C movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -40195,7 +40195,7 @@ sub_8112C6C: @ 8112C6C mov r8, r0 mov r0, r8 strh r0, [r4, 0xA] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -40301,7 +40301,7 @@ _08112D56: lsls r0, 2 adds r5, r0, r1 strh r7, [r5, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide movs r1, 0 @@ -40445,7 +40445,7 @@ _08112E80: movs r1, 0 bl SetGpuReg adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08112E96: pop {r4-r7} pop {r0} @@ -40562,7 +40562,7 @@ sub_8112F60: @ 8112F60 orrs r1, r2 strb r1, [r3] ldr r2, =gBankSpriteIds - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker ldrb r1, [r1] adds r1, r2 ldrb r1, [r1] @@ -40679,7 +40679,7 @@ _08113054: sub_8113064: @ 8113064 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -40752,7 +40752,7 @@ sub_8113100: @ 8113100 push {r4,r5,lr} adds r5, r0, 0 bl sub_80A6838 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -40765,7 +40765,7 @@ sub_8113100: @ 8113100 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -40834,11 +40834,11 @@ sub_81131B4: @ 81131B4 ldrsh r0, [r0, r1] cmp r0, 0 bne _081131D0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _081131D2 .pool _081131D0: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _081131D2: ldrb r0, [r4] movs r1, 0 @@ -40876,7 +40876,7 @@ _081131D2: sub_8113224: @ 8113224 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -40898,7 +40898,7 @@ _0811323E: sub_8113250: @ 8113250 push {r4-r7,lr} adds r6, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -41088,7 +41088,7 @@ _081133CE: cmp r0, 0x14 ble _081133E2 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081133E2: pop {r4,r5} pop {r0} @@ -41106,7 +41106,7 @@ sub_81133E8: @ 81133E8 lsls r1, 3 ldr r0, =gTasks adds r4, r1, r0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -41133,7 +41133,7 @@ _0811342A: strb r0, [r1, 0x8] mov r0, sp strb r5, [r0, 0x9] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A6190 lsls r0, 24 @@ -41274,7 +41274,7 @@ _08113556: .pool _08113568: adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0811356E: pop {r0} bx r0 @@ -41354,7 +41354,7 @@ sub_81135EC: @ 81135EC movs r1, 0x5 bl __divsi3 adds r6, r0, 0 - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker mov r8, r1 ldrb r0, [r1] movs r1, 0x2 @@ -41453,7 +41453,7 @@ sub_811369C: @ 811369C cmp r0, r1 ble _081136E0 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081136E0: pop {r4} pop {r0} @@ -41473,7 +41473,7 @@ sub_81136E8: @ 81136E8 ldr r1, =gBattleAnimArgs ldrh r1, [r1] strh r1, [r0, 0x8] - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker ldrb r4, [r1] movs r1, 0x10 strh r1, [r0, 0xA] @@ -41545,7 +41545,7 @@ sub_811375C: @ 811375C bne _081137DE ldr r2, =gSprites ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -41559,7 +41559,7 @@ sub_811375C: @ 811375C orrs r1, r2 strb r1, [r0] adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _081137DE .pool _081137D8: @@ -41639,7 +41639,7 @@ sub_811381C: @ 811381C movs r1, 0 bl SetGpuReg adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08113882 .pool _0811387C: @@ -41661,7 +41661,7 @@ sub_8113888: @ 8113888 lsls r1, 5 movs r0, 0x52 bl SetGpuReg - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -41679,7 +41679,7 @@ _081138BC: bl SetGpuReg _081138C4: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -41690,14 +41690,14 @@ _081138C4: sub_81138D4: @ 81138D4 push {r4-r6,lr} adds r4, r0, 0 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x30] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -41805,7 +41805,7 @@ _081139C2: cmp r0, 0 bne _081139D4 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081139D4: pop {r4-r6} pop {r0} @@ -41918,11 +41918,11 @@ sub_8113A90: @ 8113A90 adds r3, r0, 0 cmp r1, 0 bne _08113AAC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08113AAE .pool _08113AAC: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08113AAE: ldrb r5, [r0] movs r6, 0x14 @@ -42054,7 +42054,7 @@ sub_8113BAC: @ 8113BAC lsls r1, 3 ldr r0, =gTasks adds r5, r1, r0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x1 bl sub_80A5C6C @@ -42096,7 +42096,7 @@ _08113C1C: ldr r0, =0x0000ffc0 _08113C1E: strh r0, [r5, 0x18] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -42355,7 +42355,7 @@ _08113E5E: .pool _08113E6C: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08113E72: pop {r4} pop {r0} @@ -42411,11 +42411,11 @@ _08113EBC: adds r1, r4, 0 bl SetGpuReg adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _081140A6 .pool _08113EF8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -42472,7 +42472,7 @@ _08113F78: b _08114044 .pool _08113F84: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x1 bl sub_80A5C6C @@ -42795,7 +42795,7 @@ _08114210: adds r1, r4, 0 bl SetGpuReg adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08114232: pop {r4,r5} pop {r0} @@ -43014,7 +43014,7 @@ sub_81143C0: @ 81143C0 lsls r0, 24 lsrs r0, 24 mov r10, r0 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankIdentity_permutated lsls r0, 24 @@ -43049,7 +43049,7 @@ sub_81143C0: @ 81143C0 ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0811444E @@ -43075,7 +43075,7 @@ sub_81143C0: @ 81143C0 strb r1, [r0] _0811444E: mov r0, r10 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r3-r5} mov r8, r3 mov r9, r4 @@ -43091,7 +43091,7 @@ sub_8114470: @ 8114470 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankIdentity_permutated lsls r0, 24 @@ -43106,7 +43106,7 @@ sub_8114470: @ 8114470 ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _081144AC @@ -43116,7 +43116,7 @@ sub_8114470: @ 8114470 bl sub_80A477C _081144AC: adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 @@ -43141,7 +43141,7 @@ sub_81144BC: @ 81144BC bl StartSpriteAnim ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -43180,11 +43180,11 @@ sub_81144F8: @ 81144F8 movs r0, 0x1 movs r1, 0x4 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -43192,7 +43192,7 @@ sub_81144F8: @ 81144F8 movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0811455C: bl IsDoubleBattle lsls r0, 24 @@ -43202,7 +43202,7 @@ _0811455C: lsls r0, 24 cmp r0, 0 bne _081145D6 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankIdentity lsls r0, 24 @@ -43218,7 +43218,7 @@ _0811458C: ldrb r0, [r4] movs r5, 0x2 eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -43248,21 +43248,21 @@ _0811458C: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r6, 0x1 _081145D6: bl IsContest lsls r0, 24 cmp r0, 0 beq _08114614 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r5, [r0] b _0811465C .pool _08114614: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -43299,7 +43299,7 @@ _0811465C: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r1, r4, 0 adds r2, r5, 0 @@ -43458,7 +43458,7 @@ _081147B8: cmp r0, 0x1 bne _08114886 ldr r2, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -43503,7 +43503,7 @@ _08114824: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _08114856: movs r0, 0 bl GetGpuReg @@ -43523,7 +43523,7 @@ _08114856: movs r1, 0 bl SetGpuReg adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08114886: add sp, 0x10 pop {r4-r6} @@ -43590,7 +43590,7 @@ _08114908: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0811492C @@ -43617,7 +43617,7 @@ _0811492E: bl sub_80A750C _0811494A: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -43645,7 +43645,7 @@ _08114974: strh r0, [r1, 0xE] _08114980: adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -43655,7 +43655,7 @@ _08114980: sub_8114994: @ 8114994 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -43670,7 +43670,7 @@ sub_8114994: @ 8114994 strh r0, [r4, 0x22] movs r0, 0x14 strh r0, [r4, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -43716,7 +43716,7 @@ sub_81149FC: @ 81149FC strh r1, [r5, 0x24] movs r0, 0x14 strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -43751,7 +43751,7 @@ sub_8114A60: @ 8114A60 cmp r0, 0 beq _08114A74 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08114A74: pop {r4} pop {r0} @@ -43764,7 +43764,7 @@ sub_8114A7C: @ 8114A7C adds r6, r0, 0 movs r1, 0x1 bl sub_80A6980 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -43778,7 +43778,7 @@ _08114A9C: ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -43797,7 +43797,7 @@ _08114A9C: strh r0, [r6, 0x36] ldr r0, =sub_80A6EEC str r0, [r6, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 pop {r4-r6} @@ -43814,7 +43814,7 @@ sub_8114AF0: @ 8114AF0 adds r6, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A60AC @@ -43890,7 +43890,7 @@ sub_8114B80: @ 8114B80 ldrsh r0, [r6, r1] cmp r0, 0 bne _08114BF4 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -43964,7 +43964,7 @@ _08114C2E: cmp r0, r1 bge _08114C46 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08114C46: pop {r0} bx r0 @@ -44025,7 +44025,7 @@ _08114C74: cmp r0, 0xA bne _08114CB6 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08114CB6: pop {r0} bx r0 @@ -44096,7 +44096,7 @@ _08114D3C: lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -44118,7 +44118,7 @@ _08114D70: _08114D78: ldrh r0, [r0] strh r0, [r4, 0x22] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A6190 lsls r0, 24 @@ -44246,7 +44246,7 @@ _08114E7E: .pool _08114E8C: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask ldr r2, =gSprites movs r0, 0x1C ldrsh r1, [r4, r0] @@ -44289,7 +44289,7 @@ sub_8114EB4: @ 8114EB4 movs r4, 0 strh r4, [r1, 0x24] strh r4, [r1, 0x26] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -44304,7 +44304,7 @@ _08114F00: _08114F02: strh r4, [r0] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -44402,7 +44402,7 @@ _08114F78: .pool _08114FCC: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08114FD2: pop {r4,r5} pop {r0} @@ -44442,7 +44442,7 @@ _08115018: lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -44458,7 +44458,7 @@ _08115044: _08115046: ldrh r0, [r0] strh r0, [r4, 0x20] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A6190 lsls r0, 24 @@ -44521,7 +44521,7 @@ _081150C2: .pool _081150D4: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081150DA: pop {r4} pop {r0} @@ -44634,11 +44634,11 @@ sub_81151A0: @ 81151A0 adds r7, r0, 0 cmp r1, 0 bne _081151BC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _081151BE .pool _081151BC: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _081151BE: ldrb r4, [r0] movs r6, 0x18 @@ -44698,7 +44698,7 @@ sub_8115228: @ 8115228 cmp r0, 0 beq _0811523C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0811523C: pop {r4} pop {r0} @@ -44714,11 +44714,11 @@ sub_8115244: @ 8115244 ldrsh r0, [r0, r1] cmp r0, 0 bne _08115260 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08115262 .pool _08115260: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08115262: ldrb r5, [r0] adds r0, r5, 0 @@ -44754,7 +44754,7 @@ _08115262: ands r0, r2 orrs r0, r1 strh r0, [r6, 0x4] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 ldrh r0, [r4, 0x4] @@ -44788,7 +44788,7 @@ sub_81152DC: @ 81152DC b _08115314 .pool _08115308: - ldr r0, =gMovePowerMoveAnim + ldr r0, =gAnimMovePower ldrh r0, [r0] movs r1, 0xA bl __udivsi3 @@ -44818,7 +44818,7 @@ _08115340: _08115346: lsls r0, r5, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _08115370 @@ -44853,7 +44853,7 @@ _08115380: cmp r0, 0xFF bne _08115398 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _081153A0 _08115398: movs r0, 0x1 @@ -44991,7 +44991,7 @@ _08115490: ldrh r0, [r3, 0x22] strh r0, [r1] adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0811549C: pop {r0} bx r0 @@ -45110,7 +45110,7 @@ _08115554: blt _08115554 _08115578: adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0811557E: pop {r4-r7} pop {r0} @@ -45191,7 +45191,7 @@ sub_8115600: @ 8115600 lsrs r1, r0, 24 ldr r3, =gBattleAnimArgs movs r2, 0 - ldr r0, =gMovePowerMoveAnim + ldr r0, =gAnimMovePower ldrh r0, [r0] cmp r0, 0x63 bls _08115614 @@ -45199,7 +45199,7 @@ sub_8115600: @ 8115600 _08115614: strh r2, [r3, 0x1E] adds r0, r1, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -45217,11 +45217,11 @@ sub_8115628: @ 8115628 adds r6, r2, 0 cmp r0, 0 beq _08115648 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget b _0811564A .pool _08115648: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker _0811564A: ldrb r0, [r0] adds r5, r0, 0 @@ -45271,7 +45271,7 @@ _0811565A: ldrh r0, [r6, 0x4] strh r0, [r4, 0xE] adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r7} pop {r0} bx r0 @@ -45333,7 +45333,7 @@ sub_811572C: @ 811572C strh r0, [r4, 0x22] ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -45415,7 +45415,7 @@ _081157D2: cmp r0, r1 bne _081157F6 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081157F6: pop {r4} pop {r0} @@ -45503,7 +45503,7 @@ sub_8115884: @ 8115884 cmp r0, 0 bne _0811589A adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0811589A: pop {r0} bx r0 @@ -45638,7 +45638,7 @@ sub_8115984: @ 8115984 movs r2, 0 bl BlendPalettes adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081159AA: pop {r4} pop {r0} @@ -45810,7 +45810,7 @@ _08115AF8: b _08115B06 _08115B00: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08115B06: pop {r4-r6} pop {r0} @@ -45852,9 +45852,9 @@ sub_8115B0C: @ 8115B0C mov r8, r2 cmp r5, r1 bge _08115B74 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r3, [r0] - ldr r7, =gAnimationBankTarget + ldr r7, =gAnimBankTarget movs r0, 0x1 mov r12, r0 adds r2, r1, 0 @@ -45996,7 +45996,7 @@ _08115C6C: b _08115C7A _08115C74: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08115C7A: pop {r4-r6} pop {r0} @@ -46135,7 +46135,7 @@ _08115D80: b _08115D8E _08115D88: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08115D8E: pop {r4-r6} pop {r0} @@ -46317,7 +46317,7 @@ sub_8115EB8: @ 8115EB8 movs r3, 0 bl BeginNormalPaletteFade adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08115EFE: add sp, 0x4 pop {r4,r5} @@ -46336,9 +46336,9 @@ sub_8115F10: @ 8115F10 lsrs r0, 24 mov r8, r0 movs r2, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r6, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r7, [r0] ldr r4, =gBattleAnimArgs ldrh r1, [r4] @@ -46380,7 +46380,7 @@ _08115F6E: adds r0, r2, 0 bl InvertPlttBuffer mov r0, r8 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0xC pop {r3} mov r8, r3 @@ -46429,10 +46429,10 @@ _08115FD6: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] mov r9, r0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] mov r10, r0 ldrh r1, [r4, 0xC] @@ -46507,7 +46507,7 @@ _08116050: adds r0, r5, 0 bl UnfadePlttBuffer mov r0, r8 - bl move_anim_task_del + bl DestroyAnimVisualTask _0811607A: pop {r3-r5} mov r8, r3 @@ -46679,7 +46679,7 @@ _081161BA: bcc _081161BA _081161DC: adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _081161E2: pop {r4-r7} pop {r0} @@ -46692,7 +46692,7 @@ sub_81161F4: @ 81161F4 push {r4-r6,lr} ldr r6, =gSprites ldr r4, =gBankSpriteIds - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] @@ -46707,7 +46707,7 @@ sub_81161F4: @ 81161F4 adds r0, r2, 0 ands r0, r3 strb r0, [r1] - ldr r3, =gAnimationBankTarget + ldr r3, =gAnimBankTarget ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] @@ -46873,7 +46873,7 @@ _08116358: strh r1, [r6] strh r1, [r2] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08116382 _0811637E: subs r0, r2, 0x1 @@ -46907,7 +46907,7 @@ _081163AC: _081163B4: ldr r0, =sub_80A67BC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -46955,7 +46955,7 @@ _081163FC: sub_8116420: @ 8116420 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -47113,7 +47113,7 @@ _08116584: ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x6] strh r0, [r4, 0x2E] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A64B0 @@ -47180,7 +47180,7 @@ sub_81165E4: @ 81165E4 cmp r0, 0xC ble _0811661A adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0811661A: pop {r0} bx r0 @@ -47256,14 +47256,14 @@ _081166B8: movs r5, 0 _081166BA: mov r0, sp - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker b _081166CA .pool _081166C4: movs r5, 0 _081166C6: mov r0, sp - ldr r1, =gAnimationBankTarget + ldr r1, =gAnimBankTarget _081166CA: ldrb r1, [r1] strb r1, [r0] @@ -47271,10 +47271,10 @@ _081166CA: .pool _081166D4: mov r1, sp - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] strb r0, [r1] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] strb r0, [r1, 0x1] b _0811670E @@ -47287,13 +47287,13 @@ _081166EC: _081166F4: movs r5, 0 mov r2, sp - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08116706 .pool _08116700: movs r5, 0 mov r2, sp - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08116706: ldrb r0, [r0] movs r1, 0x2 @@ -47310,7 +47310,7 @@ _08116712: cmp r4, r0 beq _0811673C adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0811673C @@ -47558,7 +47558,7 @@ _0811693C: b _08116954 _08116946: adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08116954 _0811694E: mov r0, r8 @@ -47614,7 +47614,7 @@ sub_81169A0: @ 81169A0 cmp r0, 0 bne _081169B8 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081169B8: pop {r0} bx r0 @@ -47750,7 +47750,7 @@ _08116ABC: cmp r0, 0 bne _08116ACA adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08116ACA: pop {r4-r6} pop {r0} @@ -47867,7 +47867,7 @@ _08116BA2: lsls r0, 24 cmp r0, 0 bne _08116C26 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankIdentity lsls r0, 24 @@ -47883,7 +47883,7 @@ _08116BD2: ldrb r0, [r5] movs r6, 0x2 eors r0, r6 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -47925,14 +47925,14 @@ _08116C26: lsls r0, 24 cmp r0, 0 beq _08116C64 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r5, [r0] b _08116CAC .pool _08116C64: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -47969,7 +47969,7 @@ _08116CAC: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r1, r4, 0 adds r2, r5, 0 @@ -48138,7 +48138,7 @@ _08116DF6: cmp r0, 0x1 bne _08116E7C ldr r2, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -48164,7 +48164,7 @@ _08116E7C: mov r2, r8 strh r2, [r7] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08116E86: add sp, 0x14 pop {r3} @@ -48223,11 +48223,11 @@ sub_8116F04: @ 8116F04 ldrsh r0, [r1, r2] cmp r0, 0 bne _08116F24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08116F26 .pool _08116F24: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08116F26: ldrb r0, [r0] strb r0, [r1] @@ -48247,7 +48247,7 @@ _08116F26: cmp r0, 0 beq _08116F5C ldrb r0, [r1, 0x1] - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _08116F5C @@ -48281,11 +48281,11 @@ _08116F5C: movs r0, 0x1 movs r1, 0x4 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -48293,7 +48293,7 @@ _08116F5C: movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _08116FBA: bl IsDoubleBattle lsls r0, 24 @@ -48320,7 +48320,7 @@ _08116FBA: _08116FEC: ldr r0, [r4] ldrb r0, [r0, 0x1] - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x1 @@ -48350,7 +48350,7 @@ _08116FEC: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute ldr r0, [r4] strb r5, [r0, 0x2] _08117036: @@ -48360,7 +48360,7 @@ _08117036: beq _08117078 ldr r0, =gUnknown_0203A110 ldr r1, [r0] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r0, [r0] @@ -48765,7 +48765,7 @@ _081173B6: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _081173E6: movs r0, 0 bl GetGpuReg @@ -48833,7 +48833,7 @@ _08117466: movs r0, 0 str r0, [r4] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08117478: pop {r4-r6} pop {r0} @@ -48987,7 +48987,7 @@ _081175AC: .pool _081175B8: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081175BE: pop {r4-r6} pop {r0} @@ -49044,7 +49044,7 @@ sub_8117610: @ 8117610 lsrs r6, r0, 24 movs r4, 0 movs r2, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r3, [r0] movs r5, 0x1 _08117620: @@ -49096,7 +49096,7 @@ sub_8117660: @ 8117660 ldrsh r0, [r4, r1] cmp r0, 0 beq _0811769C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -49125,7 +49125,7 @@ _0811769C: adds r0, 0x1 strh r0, [r1, 0x8] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 @@ -49196,7 +49196,7 @@ sub_8117754: @ 8117754 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide ldr r1, =gBattleAnimArgs @@ -49204,7 +49204,7 @@ sub_8117754: @ 8117754 lsrs r0, 24 strh r0, [r1, 0xE] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -49217,7 +49217,7 @@ sub_8117780: @ 8117780 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide ldr r1, =gBattleAnimArgs @@ -49225,7 +49225,7 @@ sub_8117780: @ 8117780 lsrs r0, 24 strh r0, [r1, 0xE] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -49239,10 +49239,10 @@ sub_81177AC: @ 81177AC lsrs r3, r0, 24 ldr r5, =gBattleAnimArgs movs r4, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r2, [r0] movs r0, 0x2 - ldr r1, =gAnimationBankTarget + ldr r1, =gAnimBankTarget eors r0, r2 ldrb r1, [r1] cmp r0, r1 @@ -49251,7 +49251,7 @@ sub_81177AC: @ 81177AC _081177C8: strh r4, [r5, 0xE] adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -49266,13 +49266,13 @@ sub_81177E4: @ 81177E4 movs r4, 0 ldr r6, =gSprites _081177EE: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] cmp r4, r0 beq _0811782C lsls r0, r4, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _0811782C @@ -49303,7 +49303,7 @@ _0811782C: cmp r4, 0x3 bls _081177EE adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r7} pop {r0} bx r0 @@ -49355,7 +49355,7 @@ sub_8117854: @ 8117854 cmp r1, 0 beq _081178BA adds r0, r6, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _081178BA @@ -49423,7 +49423,7 @@ _08117930: lsls r0, 24 cmp r0, 0 beq _08117964 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r4, [r0] @@ -49744,7 +49744,7 @@ _08117BB2: bl DestroySprite _08117C06: adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08117C0C: add sp, 0x4 pop {r4-r6} @@ -49762,7 +49762,7 @@ sub_8117C24: @ 8117C24 ldr r1, =gBattleTerrain ldrb r1, [r1] strh r1, [r2] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -49784,7 +49784,7 @@ sub_8117C44: @ 8117C44 adds r1, r2 str r0, [r1] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -49809,7 +49809,7 @@ sub_8117C70: @ 8117C70 movs r1, 0 str r1, [r0] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 @@ -49854,13 +49854,13 @@ _08117CD2: _08117CE4: cmp r0, 0x1 bne _08117CF0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08117CF6 .pool _08117CF0: cmp r0, 0x2 bne _08117CFC - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08117CF6: ldrb r0, [r0] adds r4, r0, 0 @@ -49883,7 +49883,7 @@ _08117CFC: movs r2, 0x20 bl memcpy adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0xC pop {r4,r5} pop {r0} @@ -49929,13 +49929,13 @@ _08117D6E: _08117D80: cmp r0, 0x1 bne _08117D8C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08117D92 .pool _08117D8C: cmp r0, 0x2 bne _08117D98 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08117D92: ldrb r0, [r0] adds r4, r0, 0 @@ -49958,7 +49958,7 @@ _08117D98: movs r2, 0x20 bl memcpy adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0xC pop {r4,r5} pop {r0} @@ -50004,13 +50004,13 @@ _08117E0A: _08117E1C: cmp r0, 0x1 bne _08117E28 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08117E2E .pool _08117E28: cmp r0, 0x2 bne _08117E34 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08117E2E: ldrb r0, [r0] adds r4, r0, 0 @@ -50024,7 +50024,7 @@ _08117E34: movs r2, 0x20 bl memcpy adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0xC pop {r4,r5} pop {r0} @@ -50052,7 +50052,7 @@ _08117E80: strh r1, [r0, 0xE] _08117E84: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -50064,15 +50064,15 @@ sub_8117E94: @ 8117E94 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldr r1, =gBankTarget ldrb r1, [r1] strb r1, [r2] - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget ldr r1, =gEffectBank ldrb r1, [r1] strb r1, [r2] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -50083,11 +50083,11 @@ sub_8117EC4: @ 8117EC4 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -50104,7 +50104,7 @@ _08117EF8: _08117EFC: strh r0, [r1, 0xE] adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -50116,11 +50116,11 @@ sub_8117F10: @ 8117F10 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget ldr r1, =gBankTarget ldrb r1, [r1] strb r1, [r2] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -50131,15 +50131,15 @@ sub_8117F30: @ 8117F30 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldr r1, =gBankAttacker ldrb r1, [r1] strb r1, [r2] - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget ldr r1, =gEffectBank ldrb r1, [r1] strb r1, [r2] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -50155,7 +50155,7 @@ sub_8117F60: @ 8117F60 cmp r0, 0 beq _08117F78 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08117FB4 _08117F78: ldr r0, =gTasks @@ -50165,7 +50165,7 @@ _08117F78: adds r3, r0 ldr r0, =gBattleSpritesDataPtr ldr r4, [r0] - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] ldr r1, [r4] lsls r0, 2 @@ -50209,7 +50209,7 @@ sub_8117FD0: @ 8117FD0 bne _08118014 ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r3, [r0] ldr r0, [r1] lsls r3, 2 @@ -50237,8 +50237,8 @@ _08118014: .pool thumb_func_end sub_8117FD0 - thumb_func_start lcd_bg_operations -lcd_bg_operations: @ 811802C + thumb_func_start SetAnimBgAttribute +SetAnimBgAttribute: @ 811802C push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 @@ -50364,7 +50364,7 @@ _08118132: pop {r0} bx r0 .pool - thumb_func_end lcd_bg_operations + thumb_func_end SetAnimBgAttribute thumb_func_start sub_8118140 sub_8118140: @ 8118140 diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index fc21f001f4..55c7037cdd 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -75,7 +75,7 @@ sub_815A114: @ 815A114 b _0815A15A _0815A154: adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815A15A: pop {r0} bx r0 @@ -87,7 +87,7 @@ sub_815A160: @ 815A160 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -112,7 +112,7 @@ sub_815A160: @ 815A160 movs r2, 0 bl sub_807521C adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 @@ -196,7 +196,7 @@ sub_815A234: @ 815A234 movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -207,7 +207,7 @@ sub_815A254: @ 815A254 push {r4-r7,lr} sub sp, 0x4 adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -261,7 +261,7 @@ _0815A2B2: strh r6, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 @@ -537,7 +537,7 @@ _0815A4E0: movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815A4FE: pop {r4} pop {r0} @@ -768,7 +768,7 @@ sub_815A6C4: @ 815A6C4 adds r4, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] mov r5, sp adds r5, 0x2 @@ -776,7 +776,7 @@ sub_815A6C4: @ 815A6C4 mov r2, sp adds r3, r5, 0 bl sub_80A8924 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -869,7 +869,7 @@ _0815A798: cmp r0, 0x10 bne _0815A7AC adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815A7AC: pop {r0} bx r0 @@ -891,7 +891,7 @@ sub_815A7B0: @ 815A7B0 strh r0, [r4, 0x22] ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -919,7 +919,7 @@ sub_815A7EC: @ 815A7EC lsls r0, 24 cmp r0, 0 bne _0815A840 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -988,7 +988,7 @@ _0815A84C: cmp r0, 0xF0 bls _0815A8A4 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815A8A4: pop {r4,r5} pop {r0} @@ -1006,7 +1006,7 @@ sub_815A8AC: @ 815A8AC cmp r0, 0 beq _0815A8C2 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815A8C2: pop {r0} bx r0 @@ -1017,7 +1017,7 @@ sub_815A8C8: @ 815A8C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1034,7 +1034,7 @@ _0815A8EC: _0815A8F0: strh r0, [r1, 0xE] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -1046,7 +1046,7 @@ sub_815A904: @ 815A904 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gMoveDmgMoveAnim + ldr r0, =gAnimMoveDmg ldr r0, [r0] cmp r0, 0 ble _0815A920 @@ -1060,7 +1060,7 @@ _0815A920: _0815A924: strh r0, [r1, 0xE] adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -1235,7 +1235,7 @@ sub_815AA6C: @ 815AA6C movs r0, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -1251,7 +1251,7 @@ sub_815AAA4: @ 815AAA4 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815AAD0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -1380,7 +1380,7 @@ _0815ABBA: cmp r0, 0 bne _0815ABC8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815ABC8: pop {r4} pop {r0} @@ -1456,7 +1456,7 @@ _0815AC40: bl SetGpuRegBits _0815AC70: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -1486,7 +1486,7 @@ sub_815AC8C: @ 815AC8C bl ClearGpuRegBits _0815ACB8: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -1502,11 +1502,11 @@ sub_815ACD0: @ 815ACD0 ldrsh r0, [r6, r1] cmp r0, 0 bne _0815ACEC - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0815ACEE .pool _0815ACEC: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0815ACEE: ldrb r0, [r4] movs r1, 0 @@ -1585,7 +1585,7 @@ sub_815AD4C: @ 815AD4C cmp r0, r1 bge _0815ADAA adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite b _0815ADAA .pool _0815AD98: @@ -1596,7 +1596,7 @@ _0815AD98: cmp r0, r1 ble _0815ADAA adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815ADAA: pop {r0} bx r0 @@ -1618,11 +1618,11 @@ sub_815ADB0: @ 815ADB0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815ADDC - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0815ADDE .pool _0815ADDC: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0815ADDE: ldrb r0, [r4] bl sub_80A6190 @@ -1882,7 +1882,7 @@ _0815AFC4: strb r0, [r1, 0x15] _0815AFDA: adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815AFE0: pop {r4-r7} pop {r0} @@ -1903,7 +1903,7 @@ sub_815AFF0: @ 815AFF0 movs r5, 0 strh r5, [r4, 0x8] strh r5, [r4, 0xA] - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C @@ -2162,7 +2162,7 @@ _0815B220: cmp r0, 0 bne _0815B22E adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815B22E: add sp, 0x8 pop {r3} @@ -2262,7 +2262,7 @@ _0815B2D8: ldrsh r0, [r5, r1] cmp r0, 0x3D bne _0815B324 - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldrh r0, [r5, 0x24] @@ -2278,7 +2278,7 @@ _0815B2D8: strh r1, [r5, 0x26] movs r0, 0x14 strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -2339,7 +2339,7 @@ _0815B37C: cmp r0, 0 bne _0815B38E adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815B38E: pop {r4,r5} pop {r0} @@ -2370,7 +2370,7 @@ _0815B3B4: beq _0815B478 b _0815B496 _0815B3BE: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -2471,7 +2471,7 @@ _0815B478: cmp r0, r1 bge _0815B496 adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815B496: pop {r4-r6} pop {r0} @@ -2482,7 +2482,7 @@ _0815B496: sub_815B49C: @ 815B49C push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2513,7 +2513,7 @@ sub_815B4D4: @ 815B4D4 ldrh r0, [r4, 0x2E] adds r0, 0x48 strh r0, [r4, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2578,7 +2578,7 @@ _0815B54C: cmp r0, r1 bls _0815B566 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815B566: pop {r4,r5} pop {r0} @@ -2747,7 +2747,7 @@ _0815B69C: cmp r0, 0 bne _0815B6AE adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815B6AE: pop {r4,r5} pop {r0} @@ -2789,7 +2789,7 @@ _0815B6F4: cmp r0, 0 bne _0815B706 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815B706: pop {r4,r5} pop {r0} @@ -2814,7 +2814,7 @@ _0815B71E: movs r0, 0x90 lsls r0, 4 strh r0, [r4, 0x30] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -2845,7 +2845,7 @@ _0815B748: cmp r0, r1 ble _0815B770 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815B770: pop {r4} pop {r0} @@ -2887,7 +2887,7 @@ _0815B7B8: cmp r0, 0 bne _0815B7CA adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815B7CA: pop {r4,r5} pop {r0} @@ -2933,7 +2933,7 @@ _0815B81C: movs r0, 0x4C movs r1, 0 bl SetGpuReg - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -2943,14 +2943,14 @@ _0815B81C: movs r0, 0x1 movs r1, 0x2 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute b _0815B84E .pool _0815B844: movs r0, 0x2 movs r1, 0x2 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0815B84E: ldr r0, =gTasks mov r6, r8 @@ -2996,9 +2996,9 @@ _0815B886: _0815B8A6: b _0815BA7A _0815B8A8: - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] - ldr r1, =gAnimationBankTarget + ldr r1, =gAnimBankTarget ldrb r1, [r1] mov r2, r8 lsls r4, r2, 2 @@ -3030,7 +3030,7 @@ _0815B8EA: adds r2, 0x4 adds r2, r0 ldr r1, =gBattleMonForms - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -3051,16 +3051,16 @@ _0815B8EA: lsls r0, 24 cmp r0, 0 beq _0815BA1C - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0, 0x18] ldrh r0, [r0] - bl sub_80DB2A8 + bl IsSpeciesNotUnown adds r4, r0, 0 ldr r0, [r5] ldr r0, [r0, 0x18] ldrh r0, [r0, 0x2] - bl sub_80DB2A8 + bl IsSpeciesNotUnown lsls r4, 24 lsls r0, 24 cmp r4, r0 @@ -3113,17 +3113,17 @@ _0815B988: cmp r5, 0x7 ble _0815B980 _0815B99C: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r0, [r0, 0x2] - bl sub_80DB2A8 + bl IsSpeciesNotUnown lsls r0, 24 cmp r0, 0 beq _0815B9EC ldr r3, =gSprites ldr r4, =gBankSpriteIds - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] @@ -3139,7 +3139,7 @@ _0815B99C: _0815B9EC: ldr r3, =gSprites ldr r4, =gBankSpriteIds - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] @@ -3209,7 +3209,7 @@ _0815BA82: movs r0, 0x4C movs r1, 0 bl SetGpuReg - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -3219,20 +3219,20 @@ _0815BA82: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute b _0815BAB6 .pool _0815BAAC: movs r0, 0x2 movs r1, 0x2 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _0815BAB6: bl IsContest lsls r0, 24 cmp r0, 0 bne _0815BAF6 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -3259,7 +3259,7 @@ _0815BAB6: bl SetBankEnemyShadowSpriteCallback _0815BAF6: mov r0, r8 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815BAFC: add sp, 0x10 pop {r3,r4} @@ -3279,7 +3279,7 @@ c3_80DFBE4: @ 815BB18 ldr r4, =gBattleAnimArgs ldr r3, =gSprites ldr r2, =gBankSpriteIds - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker ldrb r1, [r1] adds r1, r2 ldrb r2, [r1] @@ -3292,7 +3292,7 @@ c3_80DFBE4: @ 815BB18 lsls r1, 29 lsrs r1, 31 strh r1, [r4, 0xE] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -3305,14 +3305,14 @@ sub_815BB58: @ 815BB58 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] - ldr r1, =gAnimationBankTarget + ldr r1, =gAnimBankTarget ldrb r1, [r1] movs r2, 0x1 bl sub_805E448 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -3361,11 +3361,11 @@ _0815BBC8: movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -3373,7 +3373,7 @@ _0815BBC8: movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0815BC02: mov r0, sp bl sub_80A6B30 @@ -3390,7 +3390,7 @@ _0815BC02: b _0815BC5C .pool _0815BC34: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -3571,12 +3571,12 @@ _0815BDA6: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _0815BDC8: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] @@ -3589,7 +3589,7 @@ _0815BDC8: movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815BDF2: add sp, 0x10 pop {r4} @@ -3621,7 +3621,7 @@ sub_815BE04: @ 815BE04 lsls r0, 16 lsrs r5, r0, 16 _0815BE2E: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A5C6C @@ -3870,7 +3870,7 @@ sub_815BFF4: @ 815BFF4 adds r0, r5 bl DestroySprite adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815C040: pop {r4-r6} pop {r0} @@ -3966,11 +3966,11 @@ _0815C0EC: movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute bl IsContest lsls r0, 24 cmp r0, 0 @@ -3978,7 +3978,7 @@ _0815C0EC: movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute _0815C124: mov r0, sp bl sub_80A6B30 @@ -3996,7 +3996,7 @@ _0815C124: b _0815C1CA .pool _0815C15C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankIdentity lsls r0, 24 @@ -4085,7 +4085,7 @@ _0815C224: adds r5, r0, r1 movs r0, 0 strh r0, [r5, 0xE] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4229,12 +4229,12 @@ _0815C34A: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _0815C36C: movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute ldr r0, =gBattle_BG1_X movs r1, 0 strh r1, [r0] @@ -4247,7 +4247,7 @@ _0815C36C: movs r1, 0 bl SetGpuReg adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815C396: add sp, 0x10 pop {r4-r6} @@ -4291,7 +4291,7 @@ _0815C3E8: cmp r0, 0 bne _0815C3FA adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815C3FA: pop {r4,r5} pop {r0} @@ -4325,7 +4325,7 @@ _0815C41E: ldrh r0, [r4, 0x32] adds r0, 0x80 strh r0, [r4, 0x32] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4354,7 +4354,7 @@ _0815C456: cmp r0, 0x40 ble _0815C472 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815C472: pop {r4} pop {r0} @@ -4377,7 +4377,7 @@ sub_815C478: @ 815C478 cmp r0, 0 bne _0815C4A4 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0815C538 .pool _0815C4A4: @@ -4427,11 +4427,11 @@ _0815C4BC: ldrsh r0, [r5, r1] cmp r0, 0 bne _0815C508 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0815C50A .pool _0815C508: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0815C50A: ldrb r0, [r0] bl GetBankSide @@ -4632,7 +4632,7 @@ _0815C698: lsrs r0, 24 bl sub_80A7344 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815C6A8: pop {r4-r6} pop {r0} @@ -4643,7 +4643,7 @@ _0815C6A8: sub_815C6B0: @ 815C6B0 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4683,7 +4683,7 @@ sub_815C700: @ 815C700 ldrh r0, [r4, 0x2E] adds r0, 0x3 strh r0, [r4, 0x2E] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4700,7 +4700,7 @@ sub_815C700: @ 815C700 cmp r1, 0xF0 ble _0815C732 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815C732: ldrh r1, [r4, 0x2E] movs r0, 0xFF @@ -4720,7 +4720,7 @@ _0815C744: cmp r1, 0 bge _0815C75C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815C75C: ldrh r1, [r4, 0x2E] movs r0, 0xFF @@ -4909,7 +4909,7 @@ _0815C8C8: lsrs r0, 24 bl sub_80A7344 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0815C950 _0815C8DA: ldrh r0, [r7, 0x26] @@ -4991,7 +4991,7 @@ sub_815C95C: @ 815C95C ldrsh r0, [r6, r2] cmp r0, 0 bne _0815C990 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -5070,7 +5070,7 @@ _0815C9FA: cmp r0, 0 beq _0815CA1A adds r0, r5, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815CA1A: pop {r4-r6} pop {r0} @@ -5100,11 +5100,11 @@ sub_815CA20: @ 815CA20 mov r8, r0 cmp r1, 0 bne _0815CA5C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0815CA5E .pool _0815CA5C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0815CA5E: ldrb r0, [r0] strh r0, [r2, 0x1E] @@ -5239,7 +5239,7 @@ _0815CB50: strh r4, [r0, 0x24] strh r4, [r0, 0x26] adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815CB78: pop {r3} mov r8, r3 @@ -5379,7 +5379,7 @@ _0815CC7A: cmp r0, 0x1F bne _0815CC8E adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815CC8E: pop {r4} pop {r0} @@ -5516,7 +5516,7 @@ _0815CD82: movs r0, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815CDAA: pop {r4} pop {r0} @@ -5528,7 +5528,7 @@ _0815CDAA: sub_815CDB4: @ 815CDB4 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -5586,14 +5586,14 @@ sub_815CDFC: @ 815CDFC cmp r0, 0xC3 ble _0815CE48 _0815CE36: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 subs r0, 0x1 b _0815CE52 .pool _0815CE48: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 adds r0, 0x1 @@ -5654,7 +5654,7 @@ _0815CE98: cmp r0, r1 bne _0815CEC8 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815CEC8: pop {r4} pop {r0} @@ -5681,7 +5681,7 @@ sub_815CED8: @ 815CED8 beq _0815CF18 movs r0, 0x1 str r0, [sp, 0x1C] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldr r1, [r0, 0x10] @@ -5693,7 +5693,7 @@ sub_815CED8: @ 815CED8 b _0815D058 .pool _0815CF18: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5702,7 +5702,7 @@ _0815CF18: movs r0, 0 str r0, [sp, 0x1C] ldr r6, =gBattlePartyID - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] lsls r0, 1 adds r0, r6 @@ -5770,7 +5770,7 @@ _0815CFC4: movs r2, 0x1 str r2, [sp, 0x1C] ldr r6, =gBattlePartyID - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] lsls r0, 1 adds r0, r6 @@ -5834,12 +5834,12 @@ _0815D056: _0815D058: mov r10, r3 _0815D05A: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A8328 lsls r0, 24 lsrs r7, r0, 24 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -5864,7 +5864,7 @@ _0815D05A: str r3, [sp, 0x8] mov r0, r8 str r0, [sp, 0xC] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] str r0, [sp, 0x10] movs r0, 0x1 @@ -6072,11 +6072,11 @@ sub_815D240: @ 815D240 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815D26C - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0815D26E .pool _0815D26C: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0815D26E: ldrb r5, [r0] movs r6, 0 @@ -6536,7 +6536,7 @@ _0815D62E: b _0815D63C _0815D636: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815D63C: add sp, 0x14 pop {r3-r5} @@ -6643,7 +6643,7 @@ _0815D708: cmp r0, 0 bne _0815D720 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815D720: pop {r4-r6} pop {r0} @@ -6827,7 +6827,7 @@ sub_815D870: @ 815D870 ldrb r1, [r6] adds r0, r5, 0 bl StartSpriteAffineAnim - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -6837,7 +6837,7 @@ sub_815D870: @ 815D870 negs r0, r0 strh r0, [r6, 0x2] _0815D896: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -7238,7 +7238,7 @@ sub_815DB90: @ 815DB90 mov r1, r8 adds r4, r0, r1 ldr r1, =gBankSpriteIds - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -7361,7 +7361,7 @@ sub_815DCA4: @ 815DCA4 cmp r0, 0 bne _0815DCC4 adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815DCC4: movs r0, 0 strh r0, [r5, 0x8] @@ -7373,11 +7373,11 @@ _0815DCC4: ldrsh r0, [r4, r1] cmp r0, 0 bne _0815DCE8 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0815DCEA .pool _0815DCE8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0815DCEA: ldrb r4, [r0] adds r0, r4, 0 @@ -7485,7 +7485,7 @@ _0815DDCC: cmp r0, 0 bne _0815DDDA adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815DDDA: pop {r4,r5} pop {r0} @@ -7731,7 +7731,7 @@ _0815DFB4: movs r3, 0 bl BlendPalette adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815DFC6: pop {r4,r5} pop {r0} @@ -7746,7 +7746,7 @@ sub_815DFCC: @ 815DFCC lsrs r0, 24 movs r2, 0xD0 lsls r2, 1 - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker ldrb r3, [r1] ldr r1, =gBattleAnimArgs ldrb r1, [r1] @@ -7775,7 +7775,7 @@ sub_815DFCC: @ 815DFCC sub_815E01C: @ 815E01C push {r4-r6,lr} adds r5, r0, 0 - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -7837,7 +7837,7 @@ _0815E09A: lsls r0, 2 strh r0, [r5, 0x2E] _0815E0A8: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -7887,7 +7887,7 @@ sub_815E0DC: @ 815E0DC cmp r0, 0xE bne _0815E110 adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815E110: pop {r0} bx r0 @@ -7923,7 +7923,7 @@ _0815E144: strh r0, [r6, 0x14] strh r1, [r6, 0x16] _0815E14E: - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -7968,7 +7968,7 @@ _0815E1A8: subs r0, r4, r0 _0815E1AC: strh r0, [r6, 0x1E] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x3 bl sub_80A5C6C @@ -7987,7 +7987,7 @@ _0815E1D0: asrs r0, 2 subs r0, r4, r0 strh r0, [r6, 0x20] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -8163,7 +8163,7 @@ _0815E330: cmp r0, 0 bne _0815E33E adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815E33E: add sp, 0x14 pop {r3} @@ -8319,7 +8319,7 @@ sub_815E444: @ 815E444 strh r0, [r4, 0x36] ldrh r0, [r1, 0x8] strh r0, [r4, 0x2E] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, =sub_80A70C0 @@ -8345,7 +8345,7 @@ sub_815E47C: @ 815E47C lsls r0, 3 ldr r1, =gTasks adds r7, r0, r1 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker mov r10, r0 ldrb r0, [r0] movs r1, 0x2 @@ -8360,7 +8360,7 @@ sub_815E47C: @ 815E47C lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x20] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget mov r8, r0 ldrb r0, [r0] movs r1, 0x2 @@ -8471,7 +8471,7 @@ _0815E596: .pool _0815E5B8: mov r0, r9 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815E5BE: pop {r3-r5} mov r8, r3 @@ -8609,7 +8609,7 @@ _0815E6BE: .pool _0815E6CC: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815E6D2: pop {r4,r5} pop {r0} @@ -8626,11 +8626,11 @@ sub_815E6D8: @ 815E6D8 adds r6, r0, 0 cmp r1, 0 bne _0815E6F4 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0815E6F6 .pool _0815E6F4: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0815E6F6: ldrb r5, [r0] ldrh r2, [r4, 0x4] @@ -8798,7 +8798,7 @@ _0815E802: b _0815E83C _0815E836: adds r0, r2, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815E83C: pop {r0} bx r0 @@ -8815,7 +8815,7 @@ sub_815E840: @ 815E840 cmp r0, 0 bne _0815E85C adds r0, r1, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0815E884 .pool _0815E85C: @@ -8926,7 +8926,7 @@ _0815E8F2: .pool _0815E948: adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815E94E: pop {r4-r6} pop {r0} @@ -8942,11 +8942,11 @@ sub_815E954: @ 815E954 ldrsh r0, [r0, r1] cmp r0, 0 bne _0815E970 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker b _0815E972 .pool _0815E970: - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget _0815E972: ldrb r0, [r4] movs r1, 0x2 @@ -9023,7 +9023,7 @@ sub_815E9BC: @ 815E9BC cmp r0, 0 bne _0815EA10 adds r0, r3, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815EA10: pop {r0} bx r0 @@ -9308,7 +9308,7 @@ _0815EC1E: cmp r0, 0x5 bne _0815EC40 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815EC40: pop {r4} pop {r0} @@ -9339,7 +9339,7 @@ sub_815EC48: @ 815EC48 lsrs r7, r0, 24 cmp r7, 0x1 bne _0815ECB4 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -9363,7 +9363,7 @@ _0815ECAC: b _0815ECD2 .pool _0815ECB4: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -9586,7 +9586,7 @@ _0815EE60: movs r1, 0 strh r1, [r0, 0x24] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815EE78: pop {r4} pop {r0} @@ -9606,11 +9606,11 @@ sub_815EE84: @ 815EE84 adds r0, r4, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _0815EEAA .pool _0815EEA8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _0815EEAA: ldrb r0, [r0] strh r0, [r4, 0x3C] @@ -9915,7 +9915,7 @@ _0815F0F8: b _0815F106 _0815F100: adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815F106: pop {r4,r5} pop {r0} @@ -9976,7 +9976,7 @@ _0815F16A: cmp r1, r0 bne _0815F17C adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815F17C: ldrh r0, [r4, 0x38] adds r0, 0x1 @@ -9991,7 +9991,7 @@ _0815F17C: sub_815F18C: @ 815F18C push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -10126,7 +10126,7 @@ _0815F2A0: b _0815F310 .pool _0815F2AC: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl refresh_graphics_maybe @@ -10348,7 +10348,7 @@ _0815F460: movs r0, 0x7D bl PlaySE12WithPanning adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815F482: pop {r4-r6} pop {r0} @@ -10360,7 +10360,7 @@ _0815F482: sub_815F48C: @ 815F48C push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -10384,7 +10384,7 @@ _0815F4B8: strb r0, [r1] ldr r4, =0x0000ffa0 _0815F4C8: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl sub_80A5C6C @@ -10543,7 +10543,7 @@ _0815F5E0: cmp r0, 0x7 bne _0815F61A adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815F61A: pop {r4,r5} pop {r0} @@ -10589,7 +10589,7 @@ sub_815F620: @ 815F620 bl obj_delete_but_dont_free_vram _0815F66E: mov r0, r8 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0815F780 .pool _0815F67C: @@ -10639,7 +10639,7 @@ _0815F67C: strh r1, [r0, 0x8] ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 @@ -10742,7 +10742,7 @@ sub_815F79C: @ 815F79C cmp r0, 0 bne _0815F7BA adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815F7BA: pop {r0} bx r0 @@ -10764,7 +10764,7 @@ sub_815F7C4: @ 815F7C4 strh r0, [r4, 0x30] ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 @@ -10869,7 +10869,7 @@ sub_815F8A0: @ 815F8A0 ldr r3, =gBattleAnimArgs movs r2, 0 strh r2, [r3, 0xE] - ldr r1, =gHappinessMoveAnim + ldr r1, =gAnimFriendship ldrb r0, [r1] ldrb r1, [r1] adds r0, r1, 0 @@ -10899,7 +10899,7 @@ _0815F8D4: strh r0, [r3, 0xE] _0815F8E0: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -10958,7 +10958,7 @@ _0815F940: ldrh r1, [r6, 0xA] adds r0, r1 strh r0, [r6, 0xA] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11028,7 +11028,7 @@ _0815F9F4: lsls r0, 24 cmp r0, 0 beq _0815FA28 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldr r2, [r0, 0x8] @@ -11036,7 +11036,7 @@ _0815F9F4: ldr r3, [r0, 0xC] mov r9, r3 ldrh r6, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_80A82E4 lsls r0, 24 @@ -11045,7 +11045,7 @@ _0815F9F4: b _0815FB4E .pool _0815FA28: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -11177,7 +11177,7 @@ _0815FB2E: _0815FB4E: ldr r5, =0x0000ffe0 _0815FB50: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_80A5C6C @@ -11191,7 +11191,7 @@ _0815FB50: str r4, [sp, 0x8] mov r0, r9 str r0, [sp, 0xC] - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] str r0, [sp, 0x10] movs r0, 0 @@ -11253,7 +11253,7 @@ _0815FBE8: ldrh r2, [r6, 0xA] adds r0, r2 strh r0, [r6, 0xA] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11307,7 +11307,7 @@ _0815FC56: ldrsh r0, [r6, r1] cmp r0, 0 bne _0815FCD6 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11315,7 +11315,7 @@ _0815FC56: bne _0815FCB4 lsls r4, r5, 16 asrs r4, 16 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_80A5C6C @@ -11328,7 +11328,7 @@ _0815FC56: _0815FCB4: lsls r4, r5, 16 asrs r4, 16 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_80A5C6C @@ -11383,7 +11383,7 @@ _0815FD08: ldr r5, =gSprites adds r0, r5 bl sub_80A8610 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11440,7 +11440,7 @@ _0815FD8C: ldrh r3, [r2, 0xA] adds r0, r3 strh r0, [r2, 0xA] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker mov r10, r0 ldrb r0, [r0] str r2, [sp, 0x18] @@ -11524,7 +11524,7 @@ _0815FE44: cmp r0, 0 bne _0815FE68 mov r0, r8 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815FE68: add sp, 0x1C pop {r3-r5} @@ -11563,7 +11563,7 @@ _0815FE92: asrs r1, 24 movs r0, 0x7A bl PlaySE12WithPanning - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_80A5C6C @@ -11583,7 +11583,7 @@ _0815FE92: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11652,7 +11652,7 @@ _0815FF6E: ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11683,7 +11683,7 @@ _0815FFA8: cmp r0, 0x2 bne _0815FFBC adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _0815FFBC: pop {r4} pop {r0} @@ -11721,14 +11721,14 @@ _0815FFF4: .4byte _081600CC .4byte _08160132 _08160008: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] movs r1, 0 bl sub_80A5C6C lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_80A5C6C @@ -11756,7 +11756,7 @@ _0816003E: .pool _08160058: ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -11812,7 +11812,7 @@ _081600B4: b _08160150 _081600CC: ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -11862,7 +11862,7 @@ _0816012A: b _08160150 _08160132: ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -11874,7 +11874,7 @@ _08160132: movs r1, 0 strh r1, [r0, 0x24] adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08160150: pop {r4,r5} pop {r0} @@ -11898,7 +11898,7 @@ sub_8160164: @ 8160164 lsrs r0, 24 movs r5, 0 strh r0, [r4, 0xE] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12061,7 +12061,7 @@ _081602C4: .pool _081602D4: adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081602DA: pop {r4-r6} pop {r0} @@ -12072,7 +12072,7 @@ _081602DA: sub_81602E0: @ 81602E0 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12100,7 +12100,7 @@ sub_81602E0: @ 81602E0 cmp r0, 0 beq _08160326 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08160326: ldrh r0, [r4, 0x32] adds r0, 0x1 @@ -12115,7 +12115,7 @@ _08160326: sub_8160338: @ 8160338 push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12166,7 +12166,7 @@ _08160396: sub_81603A8: @ 81603A8 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -12377,7 +12377,7 @@ _08160536: strh r0, [r2, 0xE] _08160538: adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 thumb_func_end sub_81604F0 @@ -12477,7 +12477,7 @@ _08160600: cmp r0, 0 bne _08160618 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08160618: pop {r4-r6} pop {r0} diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index dd992a8cd3..1e90e60c75 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -16,7 +16,7 @@ sub_8170478: @ 8170478 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x10] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r4, [r0] ldr r0, =gBattle_WIN0H movs r1, 0 @@ -43,19 +43,19 @@ sub_8170478: @ 8170478 movs r0, 0x1 movs r1, 0x4 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x1 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute ldr r0, =gHealthBoxesIds adds r4, r0 ldrb r0, [r4] @@ -212,7 +212,7 @@ sub_8170660: @ 8170660 push {r7} lsls r0, 24 lsrs r7, r0, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] mov r8, r0 ldr r1, =gTasks @@ -335,7 +335,7 @@ _08170708: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _0817076C: movs r0, 0 bl GetGpuReg @@ -372,7 +372,7 @@ _0817076C: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute ldr r0, =gHealthBoxesIds add r0, r8 ldrb r0, [r0] @@ -412,7 +412,7 @@ _0817076C: orrs r2, r5 strb r2, [r0, 0x5] adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08170814: pop {r3} mov r8, r3 @@ -540,12 +540,12 @@ sub_8170920: @ 8170920 lsrs r4, 24 mov r1, sp adds r1, 0x1 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r2, [r0] mov r0, sp bl sub_8170834 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask add sp, 0x4 pop {r4} pop {r0} @@ -628,11 +628,11 @@ sub_81709EC: @ 81709EC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl sub_817094C adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -752,7 +752,7 @@ _08170AD6: cmp r0, 0 bne _08170AF8 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08170AF8: pop {r4-r6} pop {r0} @@ -766,7 +766,7 @@ sub_8170B04: @ 8170B04 lsls r0, 24 lsrs r6, r0, 24 ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r5, [r0] @@ -834,7 +834,7 @@ _08170B84: orrs r1, r2 strb r1, [r0] adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08170BA4: pop {r4-r6} pop {r0} @@ -852,7 +852,7 @@ sub_8170BB0: @ 8170BB0 lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gBankSpriteIds - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] adds r1, r0, r1 ldrb r1, [r1] @@ -904,7 +904,7 @@ _08170C08: b _08170CEE .pool _08170C44: - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_80A5C6C @@ -979,7 +979,7 @@ _08170CC4: cmp r0, 0 bne _08170CEE adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08170CEE: add sp, 0xC pop {r3,r4} @@ -1003,7 +1003,7 @@ sub_8170CFC: @ 8170CFC lsrs r0, 24 bl sub_8076A78 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -1023,7 +1023,7 @@ sub_8170D24: @ 8170D24 lsrs r0, 24 bl sub_8076AE8 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -1051,7 +1051,7 @@ _08170D70: _08170D74: strh r0, [r1, 0xE] adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -1162,7 +1162,7 @@ sub_8170E04: @ 8170E04 adds r6, r4, r1 movs r0, 0x22 strh r0, [r6, 0x2E] - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget mov r8, r2 ldrb r0, [r2] movs r1, 0 @@ -1246,7 +1246,7 @@ sub_8170EF0: @ 8170EF0 cmp r1, r0 bne _08170F1A adds r0, r3, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08170F1A: pop {r0} bx r0 @@ -1313,7 +1313,7 @@ _08170F54: adds r6, r4, r0 movs r0, 0x22 strh r0, [r6, 0x2E] - ldr r1, =gAnimationBankTarget + ldr r1, =gAnimBankTarget mov r8, r1 ldrb r0, [r1] movs r1, 0 @@ -1550,7 +1550,7 @@ _08171188: movs r2, 0x1 movs r3, 0x1C bl sub_8171D98 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r1, [r0] movs r0, 0 movs r2, 0xE @@ -1585,7 +1585,7 @@ sub_81711E8: @ 81711E8 str r0, [r4, 0x1C] ldr r2, =gSprites ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -1607,7 +1607,7 @@ sub_8171240: @ 8171240 push {r4-r7,lr} adds r7, r0, 0 ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r4, [r0] @@ -2333,7 +2333,7 @@ sub_81717F8: @ 81717F8 push {r7} sub sp, 0x4 adds r6, r0, 0 - ldr r7, =gAnimationBankTarget + ldr r7, =gAnimBankTarget ldrh r0, [r6, 0x36] adds r0, 0x1 movs r1, 0 @@ -2715,7 +2715,7 @@ sub_8171AE4: @ 8171AE4 movs r2, 0x1 movs r3, 0x1C bl sub_8171D98 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r1, [r0] movs r0, 0x1 movs r2, 0xE @@ -2724,7 +2724,7 @@ sub_8171AE4: @ 8171AE4 _08171B36: ldr r6, =gSprites ldr r5, =gBankSpriteIds - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -2792,7 +2792,7 @@ sub_8171BAC: @ 8171BAC _08171BCA: ldr r4, =gSprites ldr r3, =gBankSpriteIds - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] @@ -2841,7 +2841,7 @@ _08171C24: beq _08171C8A ldr r4, =gSprites ldr r3, =gBankSpriteIds - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] @@ -4730,7 +4730,7 @@ sub_8172BF0: @ 8172BF0 movs r0, 0 mov r8, r0 ldr r0, =gBankSpriteIds - ldr r3, =gAnimationBankAttacker + ldr r3, =gAnimBankAttacker ldrb r2, [r3] adds r0, r2, r0 ldrb r6, [r0] @@ -4877,7 +4877,7 @@ _08172D28: adds r0, r1 ldrb r1, [r0, 0x8] strh r1, [r0, 0x8] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4914,7 +4914,7 @@ _08172D7E: beq _08172D8A _08172D84: adds r0, r7, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08172D8A: pop {r3} mov r8, r3 @@ -4949,7 +4949,7 @@ _08172DC0: beq _08172E4E b _08172E84 _08172DC6: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -5010,7 +5010,7 @@ _08172E14: b _08172E84 _08172E4E: ldr r1, =gBankSpriteIds - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] @@ -5032,7 +5032,7 @@ _08172E4E: ldrb r0, [r4] bl sub_805E974 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08172E84: pop {r4,r5} pop {r0} @@ -5048,7 +5048,7 @@ sub_8172E9C: @ 8172E9C ldr r3, =gBattleAnimArgs ldr r1, =gBattleSpritesDataPtr ldr r2, [r1] - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker ldrb r1, [r1] ldr r2, [r2] lsls r1, 2 @@ -5057,7 +5057,7 @@ sub_8172E9C: @ 8172E9C lsls r1, 29 lsrs r1, 31 strh r1, [r3, 0xE] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -5068,11 +5068,11 @@ sub_8172ED0: @ 8172ED0 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, =gAnimationBankTarget + ldr r2, =gAnimBankTarget ldr r1, =gEffectBank ldrb r1, [r1] strb r1, [r2] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -5108,7 +5108,7 @@ sub_8172EF0: @ 8172EF0 bl GetMonData adds r4, r0, 0 adds r0, r6, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _08172FC8 @@ -5540,7 +5540,7 @@ sub_81732B0: @ 81732B0 ldr r0, =0x0000281d bl IndexOfSpritePaletteTag adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -5559,7 +5559,7 @@ sub_81732E4: @ 81732E4 adds r0, r5, 0 bl FreeSpritePaletteByTag adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -5603,7 +5603,7 @@ sub_817330C: @ 817330C bl sub_80A68D4 ldr r2, =gSprites ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -5628,7 +5628,7 @@ sub_817339C: @ 817339C adds r3, r0, 0 ldr r2, =gSprites ldr r1, =gBankSpriteIds - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -5679,7 +5679,7 @@ sub_8173400: @ 8173400 adds r4, r0, 0 ldr r5, =gSprites ldr r3, =gBankSpriteIds - ldr r2, =gAnimationBankAttacker + ldr r2, =gAnimBankAttacker ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] @@ -5708,7 +5708,7 @@ sub_8173400: @ 8173400 movs r1, 0 bl StartSpriteAnim adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _08173448: pop {r4,r5} pop {r0} @@ -5733,7 +5733,7 @@ sub_817345C: @ 817345C _08173478: movs r0, 0 bl GetBankByIdentity - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker strb r0, [r1] movs r0, 0x1 b _08173498 @@ -5741,16 +5741,16 @@ _08173478: _0817348C: movs r0, 0x1 bl GetBankByIdentity - ldr r1, =gAnimationBankAttacker + ldr r1, =gAnimBankAttacker strb r0, [r1] movs r0, 0 _08173498: bl GetBankByIdentity - ldr r1, =gAnimationBankTarget + ldr r1, =gAnimBankTarget strb r0, [r1] _081734A0: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -5801,7 +5801,7 @@ _08173508: _0817350C: strh r0, [r1] adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -5812,18 +5812,18 @@ sub_817351C: @ 817351C push {lr} lsls r0, 24 lsrs r0, 24 - ldr r3, =gAnimationBankAttacker + ldr r3, =gAnimBankAttacker ldr r1, =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, [r2, 0x8] ldrh r1, [r1] strb r1, [r3] - ldr r3, =gAnimationBankTarget + ldr r3, =gAnimBankTarget ldr r1, [r2, 0x8] ldrh r1, [r1] lsrs r1, 8 strb r1, [r3] - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s index 698230802a..27b7a80138 100644 --- a/asm/battle_anim_sound_tasks.s +++ b/asm/battle_anim_sound_tasks.s @@ -142,7 +142,7 @@ sub_8158C04: @ 8158C04 cmp r0, 0x2 bne _08158C4C adds r0, r5, 0 - bl move_anim_related_task_del + bl DestroyAnimSoundTask _08158C4C: pop {r4,r5} pop {r0} @@ -264,7 +264,7 @@ sub_8158D08: @ 8158D08 cmp r0, 0 bne _08158D50 adds r0, r5, 0 - bl move_anim_related_task_del + bl DestroyAnimSoundTask b _08158D82 .pool _08158D50: @@ -319,7 +319,7 @@ sub_8158D8C: @ 8158D8C ldrsh r0, [r0, r1] cmp r0, 0 bne _08158DC8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r4, [r0] @@ -327,7 +327,7 @@ sub_8158D8C: @ 8158D8C .pool _08158DC8: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08158E76 _08158DD0: ldr r0, =gBattleAnimArgs @@ -336,25 +336,25 @@ _08158DD0: adds r2, r0, 0 cmp r1, 0 bne _08158DEC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r4, [r0] b _08158E12 .pool _08158DEC: cmp r1, 0x1 bne _08158DFC - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r4, [r0] b _08158E12 .pool _08158DFC: cmp r1, 0x2 bne _08158E08 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08158E0A .pool _08158E08: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08158E0A: ldrb r1, [r0] movs r0, 0x2 @@ -369,12 +369,12 @@ _08158E12: bne _08158E38 _08158E1E: adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _08158E38 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08158E8C .pool _08158E38: @@ -416,7 +416,7 @@ _08158E76: bl PlayCry3 _08158E86: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08158E8C: pop {r4-r6} pop {r0} @@ -444,7 +444,7 @@ sub_8158E9C: @ 8158E9C ldrsh r0, [r0, r1] cmp r0, 0 bne _08158ED8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r4, [r0] @@ -452,7 +452,7 @@ sub_8158E9C: @ 8158E9C .pool _08158ED8: adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08158F86 _08158EE0: ldr r0, =gBattleAnimArgs @@ -461,25 +461,25 @@ _08158EE0: adds r2, r0, 0 cmp r1, 0 bne _08158EFC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r4, [r0] b _08158F22 .pool _08158EFC: cmp r1, 0x1 bne _08158F0C - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r4, [r0] b _08158F22 .pool _08158F0C: cmp r1, 0x2 bne _08158F18 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _08158F1A .pool _08158F18: - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _08158F1A: ldrb r1, [r0] movs r0, 0x2 @@ -494,12 +494,12 @@ _08158F22: bne _08158F48 _08158F2E: adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _08158F48 adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _08158FEE .pool _08158F48: @@ -571,7 +571,7 @@ _08158FD0: .pool _08158FE8: adds r0, r6, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08158FEE: pop {r4-r6} pop {r0} @@ -620,7 +620,7 @@ _08159028: movs r2, 0xA bl PlayCry3 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _0815906A _0815904E: bl IsCryPlaying @@ -633,7 +633,7 @@ _0815904E: movs r2, 0x8 bl PlayCry3 mov r0, r9 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815906A: pop {r3,r4} mov r8, r3 @@ -669,7 +669,7 @@ _081590A0: cmp r0, 0 bne _081590B0 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _081590B0: pop {r4} pop {r0} @@ -698,14 +698,14 @@ sub_81590B8: @ 81590B8 lsls r0, 24 cmp r0, 0 beq _081590F8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] b _08159102 .pool _081590F8: - ldr r1, =gUnknown_02038438 - ldr r0, =gAnimationBankAttacker + ldr r1, =gAnimSpeciesByBanks + ldr r0, =gAnimBankAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r1 @@ -728,7 +728,7 @@ _08159102: .pool _08159130: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08159136: pop {r4,r5} pop {r0} @@ -829,7 +829,7 @@ _081591F2: bl PlayCry3 _081591FE: adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _08159204: pop {r3} mov r8, r3 @@ -856,7 +856,7 @@ sub_8159210: @ 8159210 adds r0, r5, 0 bl PlaySE1WithPanning adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -881,7 +881,7 @@ sub_8159244: @ 8159244 adds r0, r5, 0 bl PlaySE2WithPanning adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 @@ -995,7 +995,7 @@ _08159342: cmp r1, r0 bne _0815935A adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _0815935A: pop {r4,r5} pop {r0} diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index bf350a8bc3..85794d9e8a 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -276,7 +276,7 @@ _080645CA: ldrb r1, [r7] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _0806469C @@ -4729,7 +4729,7 @@ _08066D32: ldrb r0, [r1] mov r1, r8 strb r0, [r1] - ldr r3, =gMovePowerMoveAnim + ldr r3, =gAnimMovePower ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -4743,7 +4743,7 @@ _08066D32: lsls r0, 8 orrs r2, r0 strh r2, [r3] - ldr r3, =gMoveDmgMoveAnim + ldr r3, =gAnimMoveDmg ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -4769,7 +4769,7 @@ _08066D32: lsls r0, 24 orrs r2, r0 str r2, [r3] - ldr r2, =gHappinessMoveAnim + ldr r2, =gAnimFriendship ldrb r0, [r5] lsls r0, 9 mov r1, r12 @@ -4791,7 +4791,7 @@ _08066D32: lsls r0, 8 orrs r2, r0 strh r2, [r4] - ldr r7, =gDisableStructMoveAnim + ldr r7, =gAnimDisableStructPtr ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -4928,7 +4928,7 @@ _08066F08: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -6080,7 +6080,7 @@ sub_80678D0: @ 80678D0 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _08067916 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index b26943cf5c..954abc7790 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4038,7 +4038,7 @@ _0814D2CE: ldrb r0, [r1] mov r1, r8 strb r0, [r1] - ldr r3, =gMovePowerMoveAnim + ldr r3, =gAnimMovePower ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -4052,7 +4052,7 @@ _0814D2CE: lsls r0, 8 orrs r2, r0 strh r2, [r3] - ldr r3, =gMoveDmgMoveAnim + ldr r3, =gAnimMoveDmg ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -4078,7 +4078,7 @@ _0814D2CE: lsls r0, 24 orrs r2, r0 str r2, [r3] - ldr r2, =gHappinessMoveAnim + ldr r2, =gAnimFriendship ldrb r0, [r5] lsls r0, 9 mov r1, r12 @@ -4100,7 +4100,7 @@ _0814D2CE: lsls r0, 8 orrs r2, r0 strh r2, [r4] - ldr r7, =gDisableStructMoveAnim + ldr r7, =gAnimDisableStructPtr ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -4237,7 +4237,7 @@ _0814D4A4: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -5474,7 +5474,7 @@ sub_814DF40: @ 814DF40 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _0814DF86 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 424e4159df..c32ba8938b 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -4877,7 +4877,7 @@ _08061C8A: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, =gMovePowerMoveAnim + ldr r4, =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4891,7 +4891,7 @@ _08061C8A: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, =gMoveDmgMoveAnim + ldr r4, =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4917,7 +4917,7 @@ _08061C8A: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, =gHappinessMoveAnim + ldr r3, =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4939,7 +4939,7 @@ _08061C8A: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r3, =gDisableStructMoveAnim + ldr r3, =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -5068,7 +5068,7 @@ _08061E48: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -6535,7 +6535,7 @@ sub_8062AD0: @ 8062AD0 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _08062B16 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 047c62f6b7..a4dcf0a529 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -8142,7 +8142,7 @@ _0805BCBE: ldrb r0, [r1] mov r1, r8 strb r0, [r1] - ldr r3, =gMovePowerMoveAnim + ldr r3, =gAnimMovePower ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -8156,7 +8156,7 @@ _0805BCBE: lsls r0, 8 orrs r2, r0 strh r2, [r3] - ldr r3, =gMoveDmgMoveAnim + ldr r3, =gAnimMoveDmg ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -8182,7 +8182,7 @@ _0805BCBE: lsls r0, 24 orrs r2, r0 str r2, [r3] - ldr r2, =gHappinessMoveAnim + ldr r2, =gAnimFriendship ldrb r0, [r5] lsls r0, 9 mov r1, r12 @@ -8204,7 +8204,7 @@ _0805BCBE: lsls r0, 8 orrs r2, r0 strh r2, [r4] - ldr r7, =gDisableStructMoveAnim + ldr r7, =gAnimDisableStructPtr ldrb r1, [r5] lsls r1, 9 mov r0, r12 @@ -8341,7 +8341,7 @@ _0805BE94: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -10172,7 +10172,7 @@ dp01t_33_1_enemy_move: @ 805CEF4 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _0805CF3A diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 35ee3a733f..8da3eac546 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4658,7 +4658,7 @@ _081BD7A2: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, =gMovePowerMoveAnim + ldr r4, =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4672,7 +4672,7 @@ _081BD7A2: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, =gMoveDmgMoveAnim + ldr r4, =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4698,7 +4698,7 @@ _081BD7A2: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, =gHappinessMoveAnim + ldr r3, =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4720,7 +4720,7 @@ _081BD7A2: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r3, =gDisableStructMoveAnim + ldr r3, =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4849,7 +4849,7 @@ _081BD960: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -6207,7 +6207,7 @@ sub_81BE53C: @ 81BE53C push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _081BE582 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 562b55d4d2..b52aafcea3 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4414,7 +4414,7 @@ _08188BE6: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, =gMovePowerMoveAnim + ldr r4, =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4428,7 +4428,7 @@ _08188BE6: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, =gMoveDmgMoveAnim + ldr r4, =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4454,7 +4454,7 @@ _08188BE6: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, =gHappinessMoveAnim + ldr r3, =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4476,7 +4476,7 @@ _08188BE6: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r3, =gDisableStructMoveAnim + ldr r3, =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4605,7 +4605,7 @@ _08188DA4: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -5819,7 +5819,7 @@ sub_8189800: @ 8189800 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _08189846 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index f7dfc0fedf..6b2710b8e5 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4514,7 +4514,7 @@ _0818C192: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, =gMovePowerMoveAnim + ldr r4, =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4528,7 +4528,7 @@ _0818C192: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, =gMoveDmgMoveAnim + ldr r4, =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4554,7 +4554,7 @@ _0818C192: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, =gHappinessMoveAnim + ldr r3, =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4576,7 +4576,7 @@ _0818C192: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r3, =gDisableStructMoveAnim + ldr r3, =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4705,7 +4705,7 @@ _0818C350: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -6003,7 +6003,7 @@ sub_818CE98: @ 818CE98 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _0818CEDE diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index de17547a11..2a45ccb3ef 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3322,7 +3322,7 @@ sub_816A144: @ 816A144 adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, =gMovePowerMoveAnim + ldr r4, =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -3336,7 +3336,7 @@ sub_816A144: @ 816A144 lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, =gMoveDmgMoveAnim + ldr r4, =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -3362,7 +3362,7 @@ sub_816A144: @ 816A144 lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, =gHappinessMoveAnim + ldr r3, =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -3384,7 +3384,7 @@ sub_816A144: @ 816A144 lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r3, =gDisableStructMoveAnim + ldr r3, =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -3505,7 +3505,7 @@ _0816A2F6: movs r0, 0 bl sub_805EB9C adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] diff --git a/asm/contest.s b/asm/contest.s index eebe557e5d..51dc801765 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -138,7 +138,7 @@ sub_80D779C: @ 80D779C _080D77BA: lsls r0, r4, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] lsls r2, r4, 2 adds r1, 0x24 @@ -224,7 +224,7 @@ _080D7848: thumb_func_start sub_80D787C sub_80D787C: @ 80D787C push {r4-r7,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] movs r1, 0 @@ -244,7 +244,7 @@ _080D7890: cmp r5, 0x3 ble _080D7890 movs r4, 0 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources movs r5, 0x3 _080D78AA: ldr r0, [r6] @@ -257,7 +257,7 @@ _080D78AA: subs r5, 0x1 cmp r5, 0 bge _080D78AA - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources movs r7, 0x4 negs r7, r7 movs r6, 0xFF @@ -287,7 +287,7 @@ _080D78CC: subs r5, 0x1 cmp r5, 0 bge _080D78CC - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x8] movs r1, 0 @@ -339,7 +339,7 @@ _080D7942: cmp r5, 0x3 ble _080D7942 bl sub_80DD590 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x1C] movs r1, 0 @@ -354,7 +354,7 @@ _080D7942: thumb_func_start sub_80D7988 sub_80D7988: @ 80D7988 push {r4,r5,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources movs r0, 0x40 bl AllocZeroed str r0, [r4] @@ -441,7 +441,7 @@ sub_80D7988: @ 80D7988 thumb_func_start sub_80D7A5C sub_80D7A5C: @ 80D7A5C push {r4,r5,lr} - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0] bl Free @@ -590,7 +590,7 @@ _080D7BD4: strb r0, [r6] b _080D7C56 _080D7BDA: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] adds r0, 0x59 @@ -628,7 +628,7 @@ _080D7C04: ldr r0, =sub_80D7C7C movs r1, 0xA bl CreateTask - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] strb r0, [r1, 0x8] @@ -840,7 +840,7 @@ sub_80D7DE8: @ 80D7DE8 bl GetMultiplayerId adds r0, r4, 0 bl DestroyTask - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x8] @@ -973,7 +973,7 @@ _080D7F40: bl CopyToBgTilemapBuffer movs r0, 0x2 bl CopyBgTilemapBufferToVram - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x2C] ldr r2, =0x0201aa04 @@ -1038,7 +1038,7 @@ _080D8004: bl sub_80DBF90 bl sub_80DB2BC bl sub_80DB120 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] movs r4, 0 @@ -1256,7 +1256,7 @@ _080D81FA: b _080D822C .pool _080D8208: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x6] @@ -1401,7 +1401,7 @@ sub_80D833C: @ 80D833C str r1, [r0, 0x8] ldr r0, [r0, 0x8] ldr r0, =gStringVar1 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] ldrb r1, [r1, 0x1] @@ -1527,7 +1527,7 @@ sub_80D8490: @ 80D8490 mov r8, r0 ldr r2, =gUnknown_02039E00 + 30 mov r10, r2 - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources _080D84B8: lsls r1, r6, 1 mov r0, r8 @@ -1632,7 +1632,7 @@ _080D856C: lsrs r6, r0, 24 cmp r6, 0x3 bls _080D84B8 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] ldrb r0, [r0] @@ -1738,7 +1738,7 @@ _080D868E: movs r0, 0 bl sub_80DC490 ldr r0, =gStringVar1 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] ldrb r1, [r1, 0x1] @@ -1785,7 +1785,7 @@ _080D86E4: b _080D87FA .pool _080D8730: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] ldrb r0, [r0] @@ -1804,7 +1804,7 @@ _080D8754: subs r0, 0x1 _080D8756: strb r0, [r1] - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] ldrb r0, [r0] @@ -1831,7 +1831,7 @@ _080D8756: b _080D87FA .pool _080D879C: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] ldrb r0, [r0] @@ -1851,7 +1851,7 @@ _080D87C0: adds r0, r2, 0x1 strb r0, [r1] _080D87C4: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] ldrb r0, [r0] @@ -1967,7 +1967,7 @@ sub_80D8894: @ 80D8894 ldr r4, =gUnknown_02039F25 ldrb r0, [r4] bl sub_80DB8B8 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldrb r2, [r4] ldr r3, [r1, 0x4] @@ -2020,7 +2020,7 @@ sub_80D892C: @ 80D892C lsrs r0, 24 bl DestroyTask ldr r2, =gTasks - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x8] @@ -2145,7 +2145,7 @@ sub_80D8A50: @ 80D8A50 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrh r1, [r0, 0x6] @@ -2184,7 +2184,7 @@ sub_80D8A88: @ 80D8A88 asrs r0, 16 cmp r0, 0x13 ble _080D8B18 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r1, [r0] movs r0, 0 @@ -2217,7 +2217,7 @@ _080D8ADE: lsls r0, 24 lsrs r0, 24 bl sub_80DB8B8 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldrb r2, [r5] adds r2, r4 @@ -2259,7 +2259,7 @@ sub_80D8B38: @ 80D8B38 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0] ldrb r6, [r0, 0x11] @@ -2348,7 +2348,7 @@ _080D8B84: _080D8C74: bl sub_80DCD48 movs r7, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0] ldr r0, [r0, 0x8] @@ -2367,7 +2367,7 @@ _080D8C92: cmp r1, r0 bne _080D8C92 _080D8C9C: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] strb r7, [r0, 0x11] @@ -2447,7 +2447,7 @@ _080D8D56: adds r0, r6, 0 bl sub_80DF080 bl sub_80DF750 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 3 @@ -2678,7 +2678,7 @@ _080D8F84: beq _080D8F92 bl _080DA100 _080D8F92: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] adds r0, 0x5A @@ -2719,7 +2719,7 @@ _080D8FB8: adds r0, r4, 0 bl sub_80DEAA8 adds r0, r4, 0 - bl move_anim_start_t1 + bl DoMoveAnim ldr r1, =gTasks mov r2, r8 lsls r0, r2, 2 @@ -2742,7 +2742,7 @@ _080D9010: _080D9024: adds r0, r6, 0 bl sub_80DE9B0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r0, [r1] adds r0, 0x5A @@ -3173,7 +3173,7 @@ _080D939E: cmp r7, 0x3 bgt _080D9418 ldr r5, =gUnknown_02039F26 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources _080D93BC: movs r3, 0 str r3, [sp] @@ -3488,7 +3488,7 @@ _080D963C: movs r0, 0x64 bl PlaySE _080D9642: - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x4] lsls r0, r7, 3 @@ -3588,7 +3588,7 @@ _080D971C: beq _080D9728 bl _080DA100 _080D9728: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 3 @@ -3739,7 +3739,7 @@ _080D9870: bgt _080D988E bl _080DA100 _080D988E: - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources ldr r0, [r7] ldr r1, [r0, 0x4] lsls r0, r6, 3 @@ -3866,7 +3866,7 @@ _080D999E: beq _080D99A8 b _080DA100 _080D99A8: - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x4] lsls r4, r6, 3 @@ -3898,7 +3898,7 @@ _080D99A8: .pool _080D99EC: bl sub_80DCD48 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x14] lsls r0, r6, 2 @@ -3992,7 +3992,7 @@ _080D9AAE: lsls r0, r5, 24 cmp r0, 0 ble _080D9AD2 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] ldr r2, [sp, 0x4] @@ -4013,7 +4013,7 @@ _080D9AD2: ldr r2, =gUnknown_02039E00 + 2 adds r1, r2 bl StringCopy - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r1, [r0] ldrb r0, [r1, 0x13] @@ -4374,7 +4374,7 @@ _080D9DC2: _080D9DD4: bl sub_80DB89C ldr r0, =gStringVar3 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r1, [r5] ldr r1, [r1, 0x10] ldr r1, [r1] @@ -4725,7 +4725,7 @@ sub_80DA110: @ 80DA110 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r3, [r1] ldrb r2, [r3, 0x7] @@ -4829,7 +4829,7 @@ _080DA1C6: ands r0, r1 cmp r0, 0 beq _080DA224 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r0, [r2, 0x7] @@ -4861,7 +4861,7 @@ _080DA224: bl sub_80DBA18 b _080DA23E _080DA22E: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x7] @@ -4947,7 +4947,7 @@ _080DA2BA: strh r5, [r4, 0xA] b _080DA2F6 _080DA2D2: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x7] @@ -5082,7 +5082,7 @@ sub_80DA3CC: @ 80DA3CC ldrsh r0, [r6, r1] cmp r0, 0 bne _080DA448 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r5, =gUnknown_02039F25 ldrb r1, [r5] @@ -5255,7 +5255,7 @@ sub_80DA51C: @ 80DA51C ldrh r1, [r4] movs r0, 0xC bl SetGpuReg - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r1, [r0] ldrb r0, [r1, 0x1] @@ -5296,7 +5296,7 @@ sub_80DA5B4: @ 80DA5B4 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x6] @@ -5327,7 +5327,7 @@ sub_80DA5E8: @ 80DA5E8 strh r1, [r0] ldr r0, =gBattle_BG2_Y strh r1, [r0] - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources movs r3, 0 ldr r2, =gUnknown_02039F10 movs r1, 0x3 @@ -5350,7 +5350,7 @@ _080DA600: ands r0, r1 cmp r0, 0 bne _080DA65C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r2, [r0] ldr r0, =gUnknown_02039F25 ldrb r1, [r0] @@ -5553,7 +5553,7 @@ sub_80DA7EC: @ 80DA7EC movs r3, 0x10 bl BeginNormalPaletteFade ldr r2, =gTasks - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x8] @@ -6818,7 +6818,7 @@ _080DB1CC: strh r0, [r4, 0x2E] strh r5, [r4, 0x32] adds r0, r5, 0 - bl sub_80DB2A8 + bl IsSpeciesNotUnown lsls r0, 24 cmp r0, 0 beq _080DB278 @@ -6851,8 +6851,8 @@ _080DB280: .pool thumb_func_end sub_80DB174 - thumb_func_start sub_80DB2A8 -sub_80DB2A8: @ 80DB2A8 + thumb_func_start IsSpeciesNotUnown +IsSpeciesNotUnown: @ 80DB2A8 push {lr} lsls r0, 16 lsrs r0, 16 @@ -6865,12 +6865,12 @@ _080DB2B6: _080DB2B8: pop {r1} bx r1 - thumb_func_end sub_80DB2A8 + thumb_func_end IsSpeciesNotUnown thumb_func_start sub_80DB2BC sub_80DB2BC: @ 80DB2BC push {r4-r6,lr} - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0, 0x24] movs r4, 0xA0 @@ -7199,7 +7199,7 @@ sub_80DB584: @ 80DB584 movs r4, 0 movs r5, 0 _080DB58A: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] adds r0, r5, r0 @@ -7238,7 +7238,7 @@ sub_80DB5B8: @ 80DB5B8 lsrs r1, 24 mov r8, r1 mov r10, r8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources mov r9, r0 ldr r0, [r0] ldr r1, [r0, 0x4] @@ -7365,7 +7365,7 @@ _080DB6B6: adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] add r0, r8 @@ -7486,7 +7486,7 @@ sub_80DB798: @ 80DB798 adds r1, 0x2 lsls r1, 24 lsrs r7, r1, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r2, [r1, 0x4] lsls r1, r0, 3 @@ -7647,7 +7647,7 @@ _080DB8D0: .pool _080DB8F4: ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r0, [r0] @@ -7674,7 +7674,7 @@ _080DB91E: lsls r0, r4, 24 lsrs r0, 24 bl sub_80DB8B8 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1, 0x4] adds r1, r5, r1 @@ -7696,7 +7696,7 @@ sub_80DB944: @ 80DB944 mov r6, r8 push {r6,r7} sub sp, 0x8 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources mov r4, sp movs r3, 0 movs r6, 0x3 @@ -7751,7 +7751,7 @@ _080DB9A4: movs r0, 0x4 negs r0, r0 mov r9, r0 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources mov r8, r1 movs r7, 0x3 mov r12, r7 @@ -7806,7 +7806,7 @@ _080DB9F8: thumb_func_start sub_80DBA18 sub_80DBA18: @ 80DBA18 push {r4,r5,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources movs r2, 0 movs r3, 0x3 _080DBA20: @@ -7854,7 +7854,7 @@ sub_80DBA68: @ 80DBA68 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r2, [r1, 0x4] lsls r1, r0, 3 @@ -7889,7 +7889,7 @@ sub_80DBAA0: @ 80DBAA0 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources movs r0, 0 mov r8, r0 movs r1, 0x7 @@ -8092,7 +8092,7 @@ _080DBC1A: b _080DBAC0 _080DBC34: movs r6, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources movs r7, 0 movs r4, 0 _080DBC3C: @@ -8132,7 +8132,7 @@ _080DBC3C: adds r6, 0x1 cmp r6, 0x3 ble _080DBC3C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x10] ldrb r1, [r2, 0x1] @@ -8155,7 +8155,7 @@ sub_80DBCA8: @ 80DBCA8 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r2, [r1, 0x4] lsls r1, r0, 3 @@ -8626,7 +8626,7 @@ sub_80DC028: @ 80DC028 lsls r2, 24 lsrs r2, 24 mov r8, r2 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x14] lsls r1, r2, 2 @@ -8746,7 +8746,7 @@ _080DC126: bne _080DC15C adds r0, r7, 0 bl DestroyTask - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x14] mov r2, r9 @@ -8950,7 +8950,7 @@ _080DC2C8: movs r1, 0xB4 movs r3, 0x1 bl CreateSprite - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r2, [r1, 0x14] lsls r1, r4, 2 @@ -8970,7 +8970,7 @@ sub_80DC308: @ 80DC308 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r2, [r0, 0x14] lsls r3, r6, 2 @@ -9067,7 +9067,7 @@ _080DC3B0: sub_80DC3C4: @ 80DC3C4 push {r4,lr} movs r2, 0 - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r0, [r3] ldr r0, [r0, 0x14] ldrb r1, [r0, 0x2] @@ -9114,7 +9114,7 @@ sub_80DC408: @ 80DC408 ldrsh r0, [r3, r4] cmp r1, r0 bne _080DC440 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] movs r2, 0x2E ldrsh r1, [r3, r2] @@ -9145,7 +9145,7 @@ sub_80DC44C: @ 80DC44C push {r4-r6,lr} movs r2, 0 ldr r6, =gSprites - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r4, =gUnknown_08587A6C ldr r3, =gUnknown_02039F26 _080DC458: @@ -9180,7 +9180,7 @@ sub_80DC490: @ 80DC490 movs r3, 0 ldr r7, =gUnknown_02039F26 ldr r5, =gSprites - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources movs r2, 0 _080DC4A0: adds r0, r3, r7 @@ -9231,7 +9231,7 @@ sub_80DC4F0: @ 80DC4F0 ldr r0, =gUnknown_08587B08 bl LoadSpritePalette movs r5, 0 - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources ldr r0, =gSprites mov r8, r0 movs r6, 0 @@ -9315,7 +9315,7 @@ sub_80DC594: @ 80DC594 movs r3, 0x4 orrs r2, r3 strb r2, [r1] - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] adds r1, 0x58 @@ -9333,7 +9333,7 @@ sub_80DC5E8: @ 80DC5E8 bl CreateTask lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] strb r0, [r1, 0xD] @@ -9365,7 +9365,7 @@ sub_80DC630: @ 80DC630 lsls r0, 24 lsrs r0, 24 ldr r3, =gTasks - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r5, [r1] ldr r1, [r5] ldrb r2, [r1, 0xD] @@ -9430,7 +9430,7 @@ sub_80DC6A4: @ 80DC6A4 adds r0, r2 ldrb r0, [r0, 0x8] adds r5, r0, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r4, [r0] ldr r0, [r4] ldrb r1, [r0, 0xD] @@ -9553,7 +9553,7 @@ _080DC79C: eors r1, r2 strh r1, [r0] _080DC7AA: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] adds r0, 0x14 @@ -9590,7 +9590,7 @@ sub_80DC7EC: @ 80DC7EC ldr r0, =sub_80DC8D0 movs r1, 0x1E bl CreateTask - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r1, [r1] strb r0, [r1, 0xE] @@ -9614,7 +9614,7 @@ sub_80DC81C: @ 80DC81C lsls r0, 24 lsrs r0, 24 ldr r3, =gTasks - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r4, [r1] ldr r1, [r4] ldrb r2, [r1, 0xE] @@ -9819,7 +9819,7 @@ sub_80DC9B4: @ 80DC9B4 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 3 @@ -9923,7 +9923,7 @@ sub_80DC9EC: @ 80DC9EC lsls r3, 6 ldr r0, =0x0600e026 adds r3, r0 - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources ldr r0, [r7] ldr r0, [r0, 0x34] str r0, [sp] @@ -10083,7 +10083,7 @@ sub_80DCBE8: @ 80DCBE8 lsrs r0, 24 mov r9, r0 bl sub_80DCBB4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r2, =gSprites mov r8, r2 @@ -10186,7 +10186,7 @@ _080DCCCC: thumb_func_start sub_80DCCD8 sub_80DCCD8: @ 80DCCD8 push {lr} - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] movs r3, 0x30 ldrsh r2, [r0, r3] @@ -10279,7 +10279,7 @@ _080DCD7E: bls _080DCD7E movs r5, 0 _080DCD92: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 3 @@ -10322,7 +10322,7 @@ _080DCDBC: bls _080DCD92 movs r5, 0 _080DCDEA: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 3 @@ -10536,7 +10536,7 @@ _080DCF80: ldr r3, =gUnknown_02039F26 movs r6, 0 _080DCF90: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] adds r0, r6, r0 @@ -10577,7 +10577,7 @@ _080DCFCC: add r3, sp, 0x4 mov r12, r3 _080DCFE0: - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r4, 3 @@ -10667,7 +10667,7 @@ sub_80DD080: @ 80DD080 push {r6,r7} lsls r0, 24 lsrs r6, r0, 24 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r3, [r4] ldr r1, [r3, 0x4] lsls r7, r6, 3 @@ -10731,7 +10731,7 @@ _080DD0B4: b _080DD12C .pool _080DD110: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x4] lsls r3, r6, 3 @@ -10789,7 +10789,7 @@ _080DD166: adds r2, 0x1 cmp r2, 0x3 ble _080DD166 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x4] subs r0, r7, r6 @@ -10819,7 +10819,7 @@ _080DD1B4: add r0, r9 ldr r0, [r0] bl _call_via_r0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] subs r0, r7, r6 @@ -10855,7 +10855,7 @@ _080DD204: _080DD206: adds r0, r1 strh r0, [r2, 0x2] - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x4] subs r0, r7, r6 @@ -10927,7 +10927,7 @@ _080DD206: .pool _080DD29C: ldr r2, =gContestMoves - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x4] subs r0, r7, r6 @@ -10960,7 +10960,7 @@ _080DD2D8: ands r0, r1 strb r0, [r3, 0x15] _080DD2E2: - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x4] subs r0, r7, r6 @@ -11071,7 +11071,7 @@ _080DD3AE: cmp r0, 0 bne _080DD3A2 _080DD3B6: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] subs r0, r7, r6 @@ -11092,7 +11092,7 @@ _080DD3C4: sub_80DD3D4: @ 80DD3D4 lsls r0, 24 lsrs r0, 24 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r2, [r2] ldr r3, [r2, 0x4] lsls r2, r0, 3 @@ -11108,7 +11108,7 @@ sub_80DD3D4: @ 80DD3D4 sub_80DD3F0: @ 80DD3F0 lsls r0, 24 lsrs r0, 24 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r2, [r2] ldr r3, [r2, 0x4] lsls r2, r0, 3 @@ -11177,7 +11177,7 @@ sub_80DD45C: @ 80DD45C adds r1, r2 bl StringCopy ldr r0, =gStringVar2 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r1, [r5] ldr r2, [r1, 0x4] lsls r1, r4, 3 @@ -11265,7 +11265,7 @@ sub_80DD560: @ 80DD560 push {r4,lr} lsls r0, 24 lsrs r0, 24 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r1, [r4] ldr r3, [r1, 0x4] lsls r1, r0, 3 @@ -11315,7 +11315,7 @@ _080DD5AC: cmp r4, 0x3 ble _080DD5AC movs r4, 0 - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources ldr r1, [r7] mov r8, r1 adds r5, r2, 0 @@ -11422,7 +11422,7 @@ _080DD684: cmp r4, 0x3 ble _080DD5CA movs r4, 0 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources movs r5, 0 _080DD690: ldr r0, [r6] @@ -11483,7 +11483,7 @@ sub_80DD6DC: @ 80DD6DC strb r0, [r3] ldr r0, =SpriteCallbackDummy str r0, [r2, 0x1C] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r1, [r2, 0x6] @@ -11502,7 +11502,7 @@ sub_80DD720: @ 80DD720 push {r4,r5,lr} lsls r0, 24 lsrs r1, r0, 24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r5, [r0, 0x12] @@ -11700,7 +11700,7 @@ _080DD8F8: adds r2, r4 ldr r0, =sub_80DD6DC str r0, [r2] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r0, [r2, 0x6] @@ -11720,7 +11720,7 @@ sub_80DD940: @ 80DD940 mov r6, r8 push {r6,r7} movs r5, 0 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, =gSprites mov r9, r0 ldr r0, =0x06010000 @@ -11905,7 +11905,7 @@ _080DDACA: movs r1, 0x1 eors r0, r1 strh r0, [r4, 0xE] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r0, [r0, 0x13] @@ -11939,7 +11939,7 @@ sub_80DDB0C: @ 80DDB0C movs r1, 0xA bl CreateTask ldr r3, =gSprites - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r2, [r4] ldr r0, [r2] adds r0, 0x58 @@ -11981,7 +11981,7 @@ sub_80DDB6C: @ 80DDB6C lsls r0, 24 lsrs r0, 24 adds r3, r0, 0 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0] adds r0, 0x58 @@ -12040,7 +12040,7 @@ _080DDBD4: sub_80DDBE8: @ 80DDBE8 push {r4,r5,lr} ldr r5, =gSprites - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r2, [r0] adds r0, r2, 0 @@ -12093,7 +12093,7 @@ task08_080CD1CC: @ 80DDC4C lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0] adds r0, 0x58 @@ -12175,7 +12175,7 @@ sub_80DDCDC: @ 80DDCDC lsls r4, 24 asrs r4, 24 strh r4, [r1, 0x8] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r0, [r2, 0x6] @@ -12216,7 +12216,7 @@ _080DDD4E: bl sub_80DDB0C b _080DDD64 _080DDD54: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x6] @@ -12241,7 +12241,7 @@ _080DDD70: movs r0, 0 strh r0, [r4, 0x1E] bl sub_80DD940 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r1, [r2, 0x6] @@ -12261,7 +12261,7 @@ _080DDD9C: thumb_func_start sub_80DDDA8 sub_80DDDA8: @ 80DDDA8 ldr r3, =gSprites - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r2, [r0] ldr r0, [r2] adds r0, 0x58 @@ -12292,7 +12292,7 @@ sub_80DDDA8: @ 80DDDA8 thumb_func_start sub_80DDDE4 sub_80DDDE4: @ 80DDDE4 ldr r2, =gSprites - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] adds r0, 0x58 @@ -12316,7 +12316,7 @@ sub_80DDE0C: @ 80DDE0C ldr r0, =sub_80DDE30 movs r1, 0xF bl CreateTask - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r0, [r2, 0x6] @@ -12383,7 +12383,7 @@ _080DDE8C: ldrsh r0, [r0, r1] cmp r0, 0x9 bne _080DDEBA - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r1, [r2, 0x6] @@ -12421,7 +12421,7 @@ sub_80DDED0: @ 80DDED0 cmp r4, 0 ble _080DDF1C movs r5, 0 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0] movs r1, 0x13 @@ -12433,7 +12433,7 @@ sub_80DDED0: @ 80DDED0 b _080DDF4E .pool _080DDF1C: - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0] movs r1, 0x13 @@ -12458,7 +12458,7 @@ _080DDF48: movs r5, 0xC movs r3, 0 _080DDF4C: - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources _080DDF4E: ldr r1, =gTasks lsls r0, r6, 2 @@ -12536,7 +12536,7 @@ _080DDFB8: bne _080DDFFC adds r0, r5, 0 bl DestroyTask - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r1, [r2, 0x7] @@ -12562,7 +12562,7 @@ sub_80DE008: @ 80DE008 lsrs r0, 24 mov r10, r0 movs r5, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources mov r9, r0 mov r8, r9 ldr r6, =gSprites @@ -12666,7 +12666,7 @@ sub_80DE0F0: @ 80DE0F0 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r2, [r1, 0x4] lsls r1, r0, 3 @@ -12708,7 +12708,7 @@ sub_80DE12C: @ 80DE12C movs r0, 0x11 mov r9, r0 _080DE146: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] adds r0, 0xD @@ -12789,7 +12789,7 @@ sub_80DE1E8: @ 80DE1E8 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r2, [r1, 0x4] lsls r1, r0, 3 @@ -12896,7 +12896,7 @@ sub_80DE224: @ 80DE224 movs r0, 0 str r0, [sp, 0x8] add r0, sp, 0x8 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r1, [r4] ldr r1, [r1, 0x28] ldr r2, =0x05000400 @@ -12963,7 +12963,7 @@ sub_80DE350: @ 80DE350 bl RequestDma3Fill movs r5, 0 str r5, [sp] - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, [r6] ldr r1, [r0, 0x28] ldr r2, =0x05000400 @@ -13136,7 +13136,7 @@ _080DE4D0: _080DE4DA: movs r2, 0 adds r6, r3, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r3, =gUnknown_02039F26 _080DE4E2: ldr r0, [r5] @@ -13170,7 +13170,7 @@ _080DE52C: ands r1, r0 cmp r1, 0 beq _080DE584 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r0, [r2, 0x7] @@ -13201,7 +13201,7 @@ _080DE584: bl sub_80DBAA0 b _080DE59A _080DE58A: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] ldrb r1, [r0, 0x7] @@ -13356,7 +13356,7 @@ sub_80DE69C: @ 80DE69C mov r8, r0 movs r7, 0 ldr r6, =gSprites - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources _080DE6AE: bl AllocOamMatrix ldr r1, [r5] @@ -13450,7 +13450,7 @@ _080DE74C: adds r1, r2 mov r0, r8 strh r0, [r1, 0x8] - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0] ldrb r0, [r2, 0x7] @@ -13471,7 +13471,7 @@ sub_80DE794: @ 80DE794 lsls r0, 24 lsrs r6, r0, 24 ldr r2, =gSprites - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r0, [r3] ldr r0, [r0, 0x14] ldrb r1, [r0] @@ -13515,7 +13515,7 @@ _080DE7CC: _080DE7EC: movs r4, 0 _080DE7EE: - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x14] lsls r0, r4, 2 @@ -13583,7 +13583,7 @@ sub_80DE864: @ 80DE864 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r1, [r0, 0x4] lsls r0, r7, 3 @@ -13606,7 +13606,7 @@ sub_80DE864: @ 80DE864 movs r1, 0 movs r2, 0x14 bl memset - bl sub_80A3934 + bl ClearBattleAnimationVars ldr r1, =gBattleMonForms movs r2, 0 adds r0, r1, 0x3 @@ -13667,7 +13667,7 @@ _080DE910: b _080DE9A0 .pool _080DE920: - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r7, 3 @@ -13695,17 +13695,17 @@ _080DE920: b _080DE9A2 .pool _080DE960: - ldr r1, =gHappinessMoveAnim + ldr r1, =gAnimFriendship movs r0, 0xFF b _080DE9A0 .pool _080DE96C: - ldr r1, =gHappinessMoveAnim + ldr r1, =gAnimFriendship movs r0, 0 b _080DE9A0 .pool _080DE978: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0] adds r2, r0, 0 @@ -13735,7 +13735,7 @@ _080DE9A2: thumb_func_start sub_80DE9B0 sub_80DE9B0: @ 80DE9B0 push {r4,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x18] movs r1, 0 @@ -13763,7 +13763,7 @@ sub_80DE9DC: @ 80DE9DC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, [r6] ldr r0, [r0, 0x18] strb r4, [r0, 0x5] @@ -14558,7 +14558,7 @@ sub_80DF080: @ 80DF080 push {r4-r7,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r3, [r2] ldr r5, [r3, 0x10] ldrb r1, [r5, 0x1] @@ -14810,7 +14810,7 @@ sub_80DF250: @ 80DF250 movs r0, 0 str r0, [sp, 0x20] movs r4, 0 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources mov r2, sp adds r2, 0xC str r2, [sp, 0x28] @@ -14871,7 +14871,7 @@ _080DF2C2: subs r2, r0 cmp r2, 0x32 bgt _080DF2EE - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources ldr r0, [r7] ldr r2, [r0, 0x1C] add r2, r9 @@ -14880,7 +14880,7 @@ _080DF2C2: orrs r0, r1 strb r0, [r2, 0xD] _080DF2EE: - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x1C] mov r3, r9 @@ -14926,7 +14926,7 @@ _080DF336: ldrb r0, [r0] cmp r0, 0 beq _080DF354 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r2, [r0, 0x1C] add r2, r9 @@ -14978,7 +14978,7 @@ _080DF38E: mov r2, r8 cmp r2, 0 bne _080DF3B4 - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r0, [r3] ldr r2, [r0, 0x1C] add r2, r9 @@ -14987,7 +14987,7 @@ _080DF38E: orrs r0, r1 strb r0, [r2, 0xD] _080DF3B4: - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, [r6] ldr r0, [r0, 0x1C] mov r7, r9 @@ -15031,7 +15031,7 @@ _080DF3EA: ldr r2, [sp, 0x28] strb r0, [r2, 0x5] movs r4, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] mov r8, r0 ldr r7, [sp, 0x30] @@ -15046,7 +15046,7 @@ _080DF40E: mov r12, r4 cmp r0, 0 beq _080DF450 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r6, [r0] ldr r3, [sp, 0x28] mov r4, sp @@ -15123,7 +15123,7 @@ _080DF4B6: bne _080DF478 _080DF4C0: bl Random - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r4, [r1, 0x1C] ldr r1, [sp, 0x30] @@ -15167,7 +15167,7 @@ sub_80DF4F8: @ 80DF4F8 _080DF514: movs r7, 0 movs r3, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources mov r12, r0 _080DF51C: adds r0, r3, r1 @@ -15253,7 +15253,7 @@ _080DF5A0: bl __modsi3 lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x1C] add r0, r8 @@ -15295,7 +15295,7 @@ _080DF5F6: bne _080DF628 mov r0, sp strb r1, [r0] - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x1C] ldrb r4, [r0, 0x1D] @@ -15306,7 +15306,7 @@ _080DF628: mov r1, sp movs r0, 0 strb r0, [r1] - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x1C] ldrb r4, [r0, 0xD] @@ -15360,7 +15360,7 @@ _080DF682: ldrb r6, [r0] movs r2, 0x80 movs r3, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0, 0x1C] lsls r1, r6, 4 @@ -15391,7 +15391,7 @@ _080DF6C4: ldr r5, [sp, 0x4] lsrs r0, r5, 24 bl ContestLiveUpdates_BeforeInterview_3 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x1C] add r0, r8 @@ -15519,7 +15519,7 @@ _080DF7AE: movs r2, 0x5 movs r3, 0x1 bl sub_80DEBD0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x1C] lsls r0, r7, 4 @@ -15606,7 +15606,7 @@ _080DF884: add r0, sp, 0x4 ldr r1, =gText_BDot bl StringCopy - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x1C] lsls r0, r7, 4 diff --git a/asm/contest_ai.s b/asm/contest_ai.s index f937633da9..a213c393cf 100644 --- a/asm/contest_ai.s +++ b/asm/contest_ai.s @@ -10,7 +10,7 @@ sub_81562C4: @ 81562C4 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0xC] movs r1, 0 @@ -57,7 +57,7 @@ _081562DE: thumb_func_start sub_8156324 sub_8156324: @ 8156324 push {r4-r6,lr} - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0xC] ldr r0, [r0, 0x14] @@ -98,7 +98,7 @@ _0815636C: bl Random adds r5, r0, 0 ands r5, r6 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r1, [r0, 0xC] adds r0, r1, 0x5 @@ -135,7 +135,7 @@ sub_81563B0: @ 81563B0 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r0, [r0, 0xC] ldrb r0, [r0] @@ -211,7 +211,7 @@ _08156444: orrs r0, r1 strb r0, [r2, 0x9] _08156458: - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r3, [r0, 0xC] ldrb r1, [r3, 0x9] @@ -263,7 +263,7 @@ sub_81564AC: @ 81564AC lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r0, [r3] ldr r0, [r0, 0x8] b _081564CC @@ -289,7 +289,7 @@ _081564D2: thumb_func_start sub_81564DC sub_81564DC: @ 81564DC push {r4,lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r0, [r3] ldr r0, [r0, 0xC] adds r1, r0, 0x5 @@ -331,7 +331,7 @@ _08156516: thumb_func_start sub_8156530 sub_8156530: @ 8156530 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r0, [r0] @@ -349,7 +349,7 @@ sub_8156530: @ 8156530 sub_8156550: @ 8156550 push {lr} bl sub_8156530 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -384,7 +384,7 @@ _08156590: sub_8156594: @ 8156594 push {lr} bl sub_8156530 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -419,7 +419,7 @@ _081565D4: sub_81565D8: @ 81565D8 push {lr} bl sub_8156530 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -454,7 +454,7 @@ _08156618: sub_815661C: @ 815661C push {lr} bl sub_8156530 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -487,7 +487,7 @@ _0815665C: thumb_func_start sub_8156660 sub_8156660: @ 8156660 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r0, [r0] @@ -507,7 +507,7 @@ sub_8156660: @ 8156660 sub_8156684: @ 8156684 push {lr} bl sub_8156660 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -542,7 +542,7 @@ _081566C4: sub_81566C8: @ 81566C8 push {lr} bl sub_8156660 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -577,7 +577,7 @@ _08156708: sub_815670C: @ 815670C push {lr} bl sub_8156660 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -612,7 +612,7 @@ _0815674C: sub_8156750: @ 8156750 push {lr} bl sub_8156660 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -645,7 +645,7 @@ _08156790: thumb_func_start sub_8156794 sub_8156794: @ 8156794 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r0, [r0, 0x8] @@ -667,7 +667,7 @@ sub_8156794: @ 8156794 sub_81567BC: @ 81567BC push {lr} bl sub_8156794 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -702,7 +702,7 @@ _081567FC: sub_8156800: @ 8156800 push {lr} bl sub_8156794 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -737,7 +737,7 @@ _08156840: sub_8156844: @ 8156844 push {lr} bl sub_8156794 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -772,7 +772,7 @@ _08156884: sub_8156888: @ 8156888 push {lr} bl sub_8156794 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -806,7 +806,7 @@ _081568C8: thumb_func_start sub_81568CC sub_81568CC: @ 81568CC push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r4, [r0, 0xC] adds r1, r4, 0 @@ -839,7 +839,7 @@ sub_81568CC: @ 81568CC sub_815690C: @ 815690C push {lr} bl sub_81568CC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -874,7 +874,7 @@ _0815694C: sub_8156950: @ 8156950 push {lr} bl sub_81568CC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -909,7 +909,7 @@ _08156990: sub_8156994: @ 8156994 push {lr} bl sub_81568CC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -944,7 +944,7 @@ _081569D4: sub_81569D8: @ 81569D8 push {lr} bl sub_81568CC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -977,7 +977,7 @@ _08156A18: thumb_func_start sub_8156A1C sub_8156A1C: @ 8156A1C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r3, [r0, 0xC] adds r1, r3, 0 @@ -1002,7 +1002,7 @@ sub_8156A1C: @ 8156A1C sub_8156A48: @ 8156A48 push {r4,r5,lr} bl sub_8156A1C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1043,7 +1043,7 @@ _08156A90: sub_8156A98: @ 8156A98 push {r4,r5,lr} bl sub_8156A1C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1084,7 +1084,7 @@ _08156AE0: sub_8156AE8: @ 8156AE8 push {r4,r5,lr} bl sub_8156A1C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1125,7 +1125,7 @@ _08156B30: sub_8156B38: @ 8156B38 push {r4,r5,lr} bl sub_8156A1C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1164,7 +1164,7 @@ _08156B80: thumb_func_start sub_8156B88 sub_8156B88: @ 8156B88 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r1, =gUnknown_02039F00 @@ -1187,7 +1187,7 @@ sub_8156B88: @ 8156B88 sub_8156BB4: @ 8156BB4 push {r4,r5,lr} bl sub_8156B88 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1228,7 +1228,7 @@ _08156BFC: sub_8156C04: @ 8156C04 push {r4,r5,lr} bl sub_8156B88 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1269,7 +1269,7 @@ _08156C4C: sub_8156C54: @ 8156C54 push {r4,r5,lr} bl sub_8156B88 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1310,7 +1310,7 @@ _08156C9C: sub_8156CA4: @ 8156CA4 push {r4,r5,lr} bl sub_8156B88 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -1349,7 +1349,7 @@ _08156CEC: thumb_func_start sub_8156CF4 sub_8156CF4: @ 8156CF4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r0, =gScriptContestCategory @@ -1367,7 +1367,7 @@ sub_8156CF4: @ 8156CF4 sub_8156D18: @ 8156D18 push {lr} bl sub_8156CF4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1402,7 +1402,7 @@ _08156D58: sub_8156D5C: @ 8156D5C push {lr} bl sub_8156CF4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1437,7 +1437,7 @@ _08156D9C: sub_8156DA0: @ 8156DA0 push {r4,lr} ldr r2, =gUnknown_02039E00 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0xC] ldrb r1, [r0, 0x4] @@ -1469,7 +1469,7 @@ sub_8156DA0: @ 8156DA0 sub_8156DE4: @ 8156DE4 push {r4,lr} bl sub_8156DA0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] ldr r3, =gAIScriptPtr @@ -1506,7 +1506,7 @@ _08156E24: sub_8156E2C: @ 8156E2C push {r4,lr} bl sub_8156DA0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] ldr r3, =gAIScriptPtr @@ -1543,7 +1543,7 @@ _08156E6C: sub_8156E74: @ 8156E74 push {r4,lr} bl sub_8156DA0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] ldr r3, =gAIScriptPtr @@ -1580,7 +1580,7 @@ _08156EB4: sub_8156EBC: @ 8156EBC push {r4,lr} bl sub_8156DA0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] ldr r3, =gAIScriptPtr @@ -1616,7 +1616,7 @@ _08156EFC: thumb_func_start sub_8156F04 sub_8156F04: @ 8156F04 ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r3, [r0, 0xC] ldrb r1, [r3, 0x4] @@ -1646,7 +1646,7 @@ sub_8156F04: @ 8156F04 sub_8156F44: @ 8156F44 push {lr} bl sub_8156F04 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1681,7 +1681,7 @@ _08156F84: sub_8156F88: @ 8156F88 push {lr} bl sub_8156F04 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1715,7 +1715,7 @@ _08156FC8: thumb_func_start sub_8156FCC sub_8156FCC: @ 8156FCC ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r3, [r0, 0xC] ldrb r1, [r3, 0x4] @@ -1749,7 +1749,7 @@ sub_8156FCC: @ 8156FCC sub_8157018: @ 8157018 push {lr} bl sub_8156FCC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1784,7 +1784,7 @@ _08157058: sub_815705C: @ 815705C push {lr} bl sub_8156FCC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1819,7 +1819,7 @@ _0815709C: sub_81570A0: @ 81570A0 push {r4-r7,lr} ldr r2, =gUnknown_02039E00 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0xC] ldrb r0, [r1, 0x4] @@ -1887,7 +1887,7 @@ _0815711A: sub_815712C: @ 815712C push {lr} bl sub_81570A0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -1924,7 +1924,7 @@ _0815716C: sub_8157174: @ 8157174 push {r4-r7,lr} ldr r2, =gUnknown_02039E00 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0xC] ldrb r0, [r1, 0x4] @@ -1992,7 +1992,7 @@ _081571EE: sub_8157200: @ 8157200 push {lr} bl sub_8157174 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2029,7 +2029,7 @@ _08157240: sub_8157248: @ 8157248 push {r4,lr} ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r4, [r0, 0xC] ldrb r1, [r4, 0x4] @@ -2069,7 +2069,7 @@ sub_8157248: @ 8157248 sub_81572A4: @ 81572A4 push {lr} bl sub_8157248 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2104,7 +2104,7 @@ _081572E4: sub_81572E8: @ 81572E8 push {lr} bl sub_8157248 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2139,7 +2139,7 @@ _08157328: sub_815732C: @ 815732C push {lr} bl sub_8157248 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2174,7 +2174,7 @@ _0815736C: sub_8157370: @ 8157370 push {lr} bl sub_8157248 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2209,7 +2209,7 @@ _081573B0: sub_81573B4: @ 81573B4 push {r4,lr} ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r4, [r0, 0xC] ldrb r1, [r4, 0x4] @@ -2249,7 +2249,7 @@ sub_81573B4: @ 81573B4 sub_8157410: @ 8157410 push {lr} bl sub_81573B4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2284,7 +2284,7 @@ _08157450: sub_8157454: @ 8157454 push {lr} bl sub_81573B4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2319,7 +2319,7 @@ _08157494: sub_8157498: @ 8157498 push {lr} bl sub_81573B4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2354,7 +2354,7 @@ _081574D8: sub_81574DC: @ 81574DC push {lr} bl sub_81573B4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2389,7 +2389,7 @@ _0815751C: sub_8157520: @ 8157520 push {r4,r5,lr} ldr r3, =gUnknown_02039E00 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r4, [r5] ldr r1, [r4, 0xC] ldrb r0, [r1, 0x4] @@ -2435,7 +2435,7 @@ _08157560: sub_8157578: @ 8157578 push {lr} bl sub_8157520 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2470,7 +2470,7 @@ _081575B8: sub_81575BC: @ 81575BC push {lr} bl sub_8157520 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2505,7 +2505,7 @@ _081575FC: sub_8157600: @ 8157600 push {lr} bl sub_8157520 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2540,7 +2540,7 @@ _08157640: sub_8157644: @ 8157644 push {lr} bl sub_8157520 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2576,7 +2576,7 @@ sub_8157688: @ 8157688 push {r4-r6,lr} movs r3, 0 ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] ldrb r1, [r0, 0x4] @@ -2592,7 +2592,7 @@ sub_8157688: @ 8157688 adds r6, r2, 0 _081576AA: lsls r1, r4, 1 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] adds r0, 0x41 @@ -2619,7 +2619,7 @@ _081576D2: _081576DC: movs r3, 0x1 _081576DE: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] strh r3, [r0, 0x18] @@ -2637,7 +2637,7 @@ _081576DE: sub_8157700: @ 8157700 push {lr} bl sub_8157688 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2674,7 +2674,7 @@ _08157740: sub_8157748: @ 8157748 push {lr} bl sub_8157688 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2712,7 +2712,7 @@ sub_8157790: @ 8157790 push {r4-r6,lr} movs r3, 0 ldr r2, =gUnknown_02039E00 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] ldrb r1, [r0, 0x4] @@ -2728,7 +2728,7 @@ sub_8157790: @ 8157790 adds r6, r2, 0 _081577B2: lsls r1, r4, 1 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] adds r0, 0x41 @@ -2754,7 +2754,7 @@ _081577D8: _081577E2: movs r3, 0x1 _081577E4: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] strh r3, [r0, 0x18] @@ -2772,7 +2772,7 @@ _081577E4: sub_8157808: @ 8157808 push {lr} bl sub_8157790 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2809,7 +2809,7 @@ _08157848: sub_8157850: @ 8157850 push {lr} bl sub_8157790 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2847,7 +2847,7 @@ sub_8157898: @ 8157898 push {r4-r6,lr} movs r5, 0 ldr r3, =gUnknown_02039E00 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r4, [r6] ldr r1, [r4, 0xC] ldrb r0, [r1, 0x4] @@ -2893,7 +2893,7 @@ _081578D6: sub_81578F8: @ 81578F8 push {lr} bl sub_8157898 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2930,7 +2930,7 @@ _08157938: sub_8157940: @ 8157940 push {lr} bl sub_8157898 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -2972,7 +2972,7 @@ sub_8157988: @ 8157988 bl sub_81564AC lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r5, [r1, 0xC] ldr r2, [r1, 0x4] @@ -3000,7 +3000,7 @@ sub_8157988: @ 8157988 sub_81579CC: @ 81579CC push {lr} bl sub_8157988 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3035,7 +3035,7 @@ _08157A0C: sub_8157A10: @ 8157A10 push {lr} bl sub_8157988 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3070,7 +3070,7 @@ _08157A50: sub_8157A54: @ 8157A54 push {lr} bl sub_8157988 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3105,7 +3105,7 @@ _08157A94: sub_8157A98: @ 8157A98 push {lr} bl sub_8157988 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3152,7 +3152,7 @@ sub_8157ADC: @ 8157ADC cmp r0, 0 beq _08157B18 ldr r2, =gContestMoves - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r4, 3 @@ -3167,7 +3167,7 @@ sub_8157ADC: @ 8157ADC orrs r0, r1 lsrs r6, r0, 31 _08157B18: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] strh r6, [r0, 0x18] @@ -3184,7 +3184,7 @@ _08157B18: sub_8157B38: @ 8157B38 push {lr} bl sub_8157ADC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3219,7 +3219,7 @@ _08157B78: sub_8157B7C: @ 8157B7C push {lr} bl sub_8157ADC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3254,7 +3254,7 @@ _08157BBC: sub_8157BC0: @ 8157BC0 push {lr} bl sub_8157ADC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3289,7 +3289,7 @@ _08157C00: sub_8157C04: @ 8157C04 push {lr} bl sub_8157ADC - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3333,14 +3333,14 @@ sub_8157C48: @ 8157C48 lsls r0, 24 cmp r0, 0 beq _08157C74 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] movs r0, 0 b _08157C7C .pool _08157C74: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] movs r0, 0x1 @@ -3359,7 +3359,7 @@ _08157C7C: sub_8157C94: @ 8157C94 push {lr} bl sub_8157C48 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3396,7 +3396,7 @@ _08157CD4: sub_8157CDC: @ 8157CDC push {lr} bl sub_8157C48 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3438,7 +3438,7 @@ sub_8157D24: @ 8157D24 bl sub_81564AC lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r3, [r1, 0xC] ldr r2, [r1, 0x4] @@ -3463,7 +3463,7 @@ sub_8157D24: @ 8157D24 sub_8157D60: @ 8157D60 push {lr} bl sub_8157D24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3500,7 +3500,7 @@ _08157DA0: sub_8157DA8: @ 8157DA8 push {lr} bl sub_8157D24 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3542,7 +3542,7 @@ sub_8157DF0: @ 8157DF0 bl sub_81564AC lsls r0, 24 lsrs r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r5, [r1, 0xC] ldr r3, [r1, 0x4] @@ -3574,7 +3574,7 @@ sub_8157DF0: @ 8157DF0 sub_8157E3C: @ 8157E3C push {lr} bl sub_8157DF0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3611,7 +3611,7 @@ _08157E7C: sub_8157E84: @ 8157E84 push {lr} bl sub_8157DF0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3648,7 +3648,7 @@ _08157EC4: sub_8157ECC: @ 8157ECC push {lr} bl sub_8157DF0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3685,7 +3685,7 @@ _08157F0C: sub_8157F14: @ 8157F14 push {lr} bl sub_8157DF0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3726,7 +3726,7 @@ sub_8157F5C: @ 8157F5C ldrb r0, [r0, 0x1] bl sub_81564AC lsls r0, 24 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r3, [r1, 0xC] ldr r2, =gUnknown_02039F00 @@ -3754,7 +3754,7 @@ sub_8157F5C: @ 8157F5C sub_8157FA0: @ 8157FA0 push {lr} bl sub_8157F5C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3791,7 +3791,7 @@ _08157FE0: sub_8157FE8: @ 8157FE8 push {lr} bl sub_8157F5C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3828,7 +3828,7 @@ _08158028: sub_8158030: @ 8158030 push {lr} bl sub_8157F5C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3865,7 +3865,7 @@ _08158070: sub_8158078: @ 8158078 push {lr} bl sub_8157F5C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3908,7 +3908,7 @@ sub_81580C0: @ 81580C0 lsls r0, 24 ldr r3, [r5] ldrb r2, [r3, 0x2] - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r4, [r1] ldr r1, [r4] lsrs r0, 23 @@ -3935,7 +3935,7 @@ sub_81580C0: @ 81580C0 sub_8158108: @ 8158108 push {lr} bl sub_81580C0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -3970,7 +3970,7 @@ _08158148: sub_815814C: @ 815814C push {lr} bl sub_81580C0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4005,7 +4005,7 @@ _0815818C: sub_8158190: @ 8158190 push {lr} bl sub_81580C0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4040,7 +4040,7 @@ _081581D0: sub_81581D4: @ 81581D4 push {lr} bl sub_81580C0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4082,7 +4082,7 @@ sub_8158218: @ 8158218 lsrs r0, 24 ldr r3, [r5] ldrb r2, [r3, 0x2] - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r4, [r1] ldr r1, [r4] lsls r2, 2 @@ -4105,7 +4105,7 @@ sub_8158218: @ 8158218 sub_8158254: @ 8158254 push {lr} bl sub_8158218 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4140,7 +4140,7 @@ _08158294: sub_8158298: @ 8158298 push {lr} bl sub_8158218 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4175,7 +4175,7 @@ _081582D8: sub_81582DC: @ 81582DC push {lr} bl sub_8158218 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4210,7 +4210,7 @@ _0815831C: sub_8158320: @ 8158320 push {lr} bl sub_8158218 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4251,7 +4251,7 @@ sub_8158364: @ 8158364 lsls r0, 24 ldr r3, [r5] ldrb r2, [r3, 0x2] - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r4, [r1] ldr r1, [r4] lsrs r0, 23 @@ -4282,7 +4282,7 @@ sub_8158364: @ 8158364 sub_81583B8: @ 81583B8 push {lr} bl sub_8158364 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4317,7 +4317,7 @@ _081583F8: sub_81583FC: @ 81583FC push {lr} bl sub_8158364 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -4351,7 +4351,7 @@ _0815843C: thumb_func_start sub_8158440 sub_8158440: @ 8158440 push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r3, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4374,7 +4374,7 @@ sub_8158440: @ 8158440 thumb_func_start sub_815846C sub_815846C: @ 815846C push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r3, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4399,7 +4399,7 @@ sub_815846C: @ 815846C thumb_func_start sub_815849C sub_815849C: @ 815849C push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4427,7 +4427,7 @@ sub_815849C: @ 815849C thumb_func_start sub_81584D4 sub_81584D4: @ 81584D4 push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4454,7 +4454,7 @@ sub_81584D4: @ 81584D4 thumb_func_start sub_8158508 sub_8158508: @ 8158508 push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4481,7 +4481,7 @@ sub_8158508: @ 8158508 thumb_func_start sub_815853C sub_815853C: @ 815853C push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4524,7 +4524,7 @@ _08158586: thumb_func_start sub_815858C sub_815858C: @ 815858C push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4567,7 +4567,7 @@ _081585D6: thumb_func_start sub_81585DC sub_81585DC: @ 81585DC push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4610,7 +4610,7 @@ _08158626: thumb_func_start sub_815862C sub_815862C: @ 815862C push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4653,7 +4653,7 @@ _08158676: thumb_func_start sub_815867C sub_815867C: @ 815867C push {r4,r5,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4696,7 +4696,7 @@ _081586C8: thumb_func_start sub_81586D0 sub_81586D0: @ 81586D0 push {r4,r5,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4739,7 +4739,7 @@ _0815871C: thumb_func_start sub_8158724 sub_8158724: @ 8158724 push {r4,r5,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4782,7 +4782,7 @@ _08158770: thumb_func_start sub_8158778 sub_8158778: @ 8158778 push {r4,r5,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4828,7 +4828,7 @@ sub_81587CC: @ 81587CC bl Random movs r2, 0xFF ands r2, r0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4869,7 +4869,7 @@ sub_815881C: @ 815881C bl Random movs r2, 0xFF ands r2, r0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0xC] ldr r4, =gAIScriptPtr @@ -4955,7 +4955,7 @@ sub_81588BC: @ 81588BC lsls r0, 24 cmp r0, 0 bne _081588D6 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0xC] ldrb r1, [r2, 0x9] @@ -4971,7 +4971,7 @@ _081588D6: thumb_func_start sub_81588E0 sub_81588E0: @ 81588E0 push {r4,lr} - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r1, [r1] ldr r3, [r1, 0xC] adds r4, r3, 0 @@ -4993,7 +4993,7 @@ sub_81588E0: @ 81588E0 thumb_func_start sub_8158908 sub_8158908: @ 8158908 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r0, [r3] ldr r0, [r0, 0xC] adds r1, r0, 0 @@ -5033,7 +5033,7 @@ sub_8158948: @ 8158948 ldr r6, =gUnknown_02039E00 + 30 _08158950: lsls r1, r4, 1 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] adds r0, 0x41 @@ -5057,7 +5057,7 @@ _08158980: cmp r4, 0x3 ble _08158950 _08158986: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] strh r5, [r0, 0x18] @@ -5075,7 +5075,7 @@ _08158986: sub_81589A4: @ 81589A4 push {lr} bl sub_8158948 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -5112,7 +5112,7 @@ _081589E4: sub_81589EC: @ 81589EC push {lr} bl sub_8158948 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -5158,7 +5158,7 @@ sub_8158A34: @ 8158A34 movs r4, 0 ldr r0, =gUnknown_02039E00 mov r12, r0 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0, 0xC] adds r0, 0x41 @@ -5205,7 +5205,7 @@ _08158A8E: sub_8158AA0: @ 8158AA0 push {lr} bl sub_8158A34 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 @@ -5242,7 +5242,7 @@ _08158AE0: sub_8158AE8: @ 8158AE8 push {lr} bl sub_8158A34 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0xC] movs r1, 0x18 diff --git a/asm/contest_effect.s b/asm/contest_effect.s index 3b88e16e0f..f3c2345034 100644 --- a/asm/contest_effect.s +++ b/asm/contest_effect.s @@ -68,7 +68,7 @@ ContestEffectFunc_080E547C: @ 80E547C thumb_func_start ContestEffectFunc_080E5480 ContestEffectFunc_080E5480: @ 80E5480 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -94,7 +94,7 @@ ContestEffectFunc_080E5480: @ 80E5480 thumb_func_start ContestEffectFunc_080E54B0 ContestEffectFunc_080E54B0: @ 80E54B0 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -119,7 +119,7 @@ ContestEffectFunc_080E54B0: @ 80E54B0 thumb_func_start ContestEffectFunc_080E54E0 ContestEffectFunc_080E54E0: @ 80E54E0 - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -165,7 +165,7 @@ ContestEffectFunc_080E54E0: @ 80E54E0 thumb_func_start ContestEffectFunc_080E5534 ContestEffectFunc_080E5534: @ 80E5534 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -189,7 +189,7 @@ ContestEffectFunc_080E5534: @ 80E5534 thumb_func_start ContestEffectFunc_080E5560 ContestEffectFunc_080E5560: @ 80E5560 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -215,7 +215,7 @@ ContestEffectFunc_080E5560: @ 80E5560 thumb_func_start ContestEffectFunc_080E5590 ContestEffectFunc_080E5590: @ 80E5590 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -239,7 +239,7 @@ ContestEffectFunc_080E5590: @ 80E5590 thumb_func_start ContestEffectFunc_080E55BC ContestEffectFunc_080E55BC: @ 80E55BC push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -266,7 +266,7 @@ ContestEffectFunc_080E55BC: @ 80E55BC ContestEffectFunc_080E55EC: @ 80E55EC push {r4,r5,lr} movs r2, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources ldr r0, [r5] ldr r1, [r0, 0x8] ldrb r4, [r1, 0x11] @@ -293,7 +293,7 @@ _080E560A: cmp r0, r1 bne _080E560A _080E5622: - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x8] strb r2, [r0, 0x8] @@ -307,14 +307,14 @@ _080E5622: _080E563A: cmp r2, 0 bne _080E564C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] movs r1, 0x36 bl sub_80DD3F0 _080E564C: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -330,7 +330,7 @@ _080E564C: ContestEffectFunc_080E5664: @ 80E5664 push {r4-r6,lr} movs r1, 0 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0, 0x8] ldrb r5, [r0, 0x11] @@ -359,7 +359,7 @@ _080E5698: adds r3, 0x1 cmp r3, 0x3 ble _080E567E - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] adds r0, 0x8 @@ -372,14 +372,14 @@ _080E5698: _080E56B4: cmp r1, 0 bne _080E56C6 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] movs r1, 0x36 bl sub_80DD3F0 _080E56C6: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -409,7 +409,7 @@ ContestEffectFunc_080E56E0: @ 80E56E0 bhi _080E5702 movs r1, 0x28 _080E5702: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] strh r1, [r0, 0x4] @@ -425,7 +425,7 @@ ContestEffectFunc_080E5718: @ 80E5718 mov r7, r8 push {r7} movs r7, 0 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x8] ldrb r5, [r0, 0x11] @@ -521,7 +521,7 @@ ContestEffectFunc_080E57CC: @ 80E57CC push {r5-r7} movs r0, 0 mov r9, r0 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x8] ldrb r2, [r0, 0x11] @@ -619,7 +619,7 @@ ContestEffectFunc_080E588C: @ 80E588C push {r6,r7} movs r0, 0 mov r9, r0 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r0, [r1] ldr r0, [r0, 0x8] ldrb r7, [r0, 0x11] @@ -674,7 +674,7 @@ _080E58DA: _080E5900: adds r6, 0x1C adds r5, 0x1 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources cmp r5, 0x3 ble _080E58B0 _080E590A: @@ -704,7 +704,7 @@ _080E5928: thumb_func_start ContestEffectFunc_080E5938 ContestEffectFunc_080E5938: @ 80E5938 push {r4,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r1, [r4] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -732,7 +732,7 @@ ContestEffectFunc_080E5938: @ 80E5938 thumb_func_start ContestEffectFunc_080E5970 ContestEffectFunc_080E5970: @ 80E5970 push {r4,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r1, [r4] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -765,7 +765,7 @@ ContestEffectFunc_080E59B0: @ 80E59B0 push {lr} movs r0, 0 bl sub_80E6934 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -781,7 +781,7 @@ ContestEffectFunc_080E59D0: @ 80E59D0 push {lr} movs r0, 0x1 bl sub_80E6934 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -797,7 +797,7 @@ ContestEffectFunc_080E59F0: @ 80E59F0 push {lr} movs r0, 0x2 bl sub_80E6934 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -813,7 +813,7 @@ ContestEffectFunc_080E5A10: @ 80E5A10 push {lr} movs r0, 0x3 bl sub_80E6934 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -829,7 +829,7 @@ ContestEffectFunc_080E5A30: @ 80E5A30 push {lr} movs r0, 0x4 bl sub_80E6934 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -844,7 +844,7 @@ ContestEffectFunc_080E5A30: @ 80E5A30 ContestEffectFunc_080E5A50: @ 80E5A50 push {r4-r6,lr} movs r4, 0 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x11] @@ -855,7 +855,7 @@ ContestEffectFunc_080E5A50: @ 80E5A50 beq _080E5AB0 movs r5, 0 _080E5A68: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r1, [r0, 0x8] ldrb r0, [r1, 0x11] @@ -932,7 +932,7 @@ ContestEffectFunc_080E5AD4: @ 80E5AD4 mov r10, r3 movs r6, 0 _080E5B00: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r2, [r0] ldr r1, [r2, 0x8] ldrb r0, [r1, 0x11] @@ -1000,7 +1000,7 @@ _080E5B76: bge _080E5B76 _080E5B7E: movs r5, 0 - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources movs r6, 0 mov r4, r10 _080E5B86: @@ -1125,7 +1125,7 @@ _080E5C70: lsrs r0, 24 mov r9, r0 _080E5C86: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] adds r0, 0xD @@ -1139,7 +1139,7 @@ _080E5C86: cmp r0, 0xFF bne _080E5C16 _080E5CA0: - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, [r6] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1173,7 +1173,7 @@ ContestEffectFunc_080E5CD4: @ 80E5CD4 movs r0, 0 mov r8, r0 movs r6, 0 - ldr r7, =gUnknown_02039F34 + ldr r7, =gContestResources movs r5, 0 _080E5CE4: ldr r2, [r7] @@ -1228,7 +1228,7 @@ _080E5D46: adds r6, 0x1 cmp r6, 0x3 ble _080E5CE4 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1256,7 +1256,7 @@ ContestEffectFunc_080E5D7C: @ 80E5D7C push {r4-r7,lr} movs r7, 0 movs r4, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources movs r6, 0 _080E5D86: ldr r3, [r5] @@ -1301,7 +1301,7 @@ _080E5DD2: adds r4, 0x1 cmp r4, 0x3 ble _080E5D86 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1325,7 +1325,7 @@ _080E5DF8: ContestEffectFunc_080E5E04: @ 80E5E04 push {r4,lr} ldr r1, =gUnknown_02039F26 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r4, [r0] ldr r0, [r4, 0x8] ldrb r2, [r0, 0x11] @@ -1366,7 +1366,7 @@ _080E5E46: ContestEffectFunc_080E5E5C: @ 80E5E5C push {r4,lr} ldr r1, =gUnknown_02039F26 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r4, [r0] ldr r0, [r4, 0x8] ldrb r2, [r0, 0x11] @@ -1408,7 +1408,7 @@ ContestEffectFunc_080E5EB4: @ 80E5EB4 push {r4-r7,lr} movs r1, 0 movs r5, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r4, [r0] ldr r2, [r4, 0x8] ldrb r0, [r2, 0x11] @@ -1434,7 +1434,7 @@ _080E5EDA: bge _080E5EE8 movs r5, 0 _080E5EE8: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r3, [r0] ldr r0, [r3, 0x8] ldrb r2, [r0, 0x11] @@ -1467,7 +1467,7 @@ _080E5F0C: movs r1, 0x11 bl sub_80DD3D4 _080E5F2C: - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r1, [r4] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -1498,7 +1498,7 @@ _080E5F2C: ContestEffectFunc_080E5F64: @ 80E5F64 push {r4-r7,lr} movs r6, 0 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r4, [r0] ldr r2, [r4, 0x8] ldrb r1, [r2, 0x11] @@ -1567,7 +1567,7 @@ _080E5FDE: thumb_func_start ContestEffectFunc_080E5FE4 ContestEffectFunc_080E5FE4: @ 80E5FE4 push {r4,r5,lr} - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources ldr r3, [r1] ldr r0, [r3, 0x8] ldrb r2, [r0, 0x11] @@ -1647,7 +1647,7 @@ ContestEffectFunc_080E6068: @ 80E6068 cmp r0, 0x2 bhi _080E6098 movs r4, 0xA - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1659,7 +1659,7 @@ _080E6098: cmp r0, 0x5 bhi _080E60B4 movs r4, 0x14 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1671,7 +1671,7 @@ _080E60B4: cmp r0, 0x7 bhi _080E60D0 movs r4, 0x28 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1683,7 +1683,7 @@ _080E60D0: cmp r1, 0x8 bhi _080E60EC movs r4, 0x3C - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -1693,14 +1693,14 @@ _080E60D0: .pool _080E60EC: movs r4, 0x50 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] movs r1, 0x1E bl sub_80DD3D4 _080E60FC: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -1721,7 +1721,7 @@ ContestEffectFunc_080E611C: @ 80E611C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r3, [r0, 0x8] ldrb r0, [r3, 0x11] @@ -1743,7 +1743,7 @@ _080E6140: adds r5, r0, 0 cmp r6, r1 beq _080E616A - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources _080E614E: lsls r0, r2, 24 movs r2, 0x80 @@ -1845,7 +1845,7 @@ ContestEffectFunc_080E620C: @ 80E620C mov r7, r9 mov r6, r8 push {r6,r7} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r3, [r0] ldr r1, [r3, 0x8] ldrb r2, [r1, 0x11] @@ -1928,7 +1928,7 @@ _080E62AC: thumb_func_start ContestEffectFunc_080E62B8 ContestEffectFunc_080E62B8: @ 80E62B8 push {r4-r7,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x11] @@ -1939,7 +1939,7 @@ ContestEffectFunc_080E62B8: @ 80E62B8 movs r5, 0 movs r6, 0 _080E62CE: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r4, [r0] ldr r1, [r4, 0x8] ldrb r2, [r1, 0x11] @@ -1994,7 +1994,7 @@ _080E632E: thumb_func_start ContestEffectFunc_080E6334 ContestEffectFunc_080E6334: @ 80E6334 push {r4,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r1, [r4] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -2046,7 +2046,7 @@ _080E6390: thumb_func_start ContestEffectFunc_080E6398 ContestEffectFunc_080E6398: @ 80E6398 push {lr} - ldr r3, =gUnknown_02039F34 + ldr r3, =gContestResources ldr r1, [r3] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -2090,7 +2090,7 @@ _080E63E4: ContestEffectFunc_080E63E8: @ 80E63E8 push {r4-r7,lr} sub sp, 0x4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r2, [r0] ldr r1, [r2] ldrb r1, [r1, 0x1] @@ -2258,7 +2258,7 @@ ContestEffectFunc_080E6520: @ 80E6520 mov r7, r8 push {r7} sub sp, 0x4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r2, [r0] ldr r1, [r2] ldrb r1, [r1, 0x1] @@ -2434,7 +2434,7 @@ ContestEffectFunc_080E6664: @ 80E6664 ContestEffectFunc_080E6668: @ 80E6668 push {r4-r7,lr} sub sp, 0x8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r0, [r1] ldrb r0, [r0, 0x1] @@ -2517,7 +2517,7 @@ _080E66FC: cmp r0, 0x3 ble _080E66AA movs r6, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources adds r4, r5, 0 _080E6712: ldr r0, [r4] @@ -2576,7 +2576,7 @@ _080E676C: ContestEffectFunc_080E6778: @ 80E6778 push {lr} ldr r3, =gContestMoves - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -2613,7 +2613,7 @@ ContestEffectFunc_080E67BC: @ 80E67BC movs r0, 0 mov r8, r0 movs r4, 0 - ldr r5, =gUnknown_02039F34 + ldr r5, =gContestResources movs r6, 0 _080E67CC: ldr r3, [r5] @@ -2672,14 +2672,14 @@ _080E682E: mov r7, r8 cmp r7, 0 bne _080E684A - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] movs r1, 0x36 bl sub_80DD3F0 _080E684A: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -2696,7 +2696,7 @@ _080E684A: thumb_func_start ContestEffectFunc_080E6868 ContestEffectFunc_080E6868: @ 80E6868 push {r4,lr} - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r0, [r1] ldrb r0, [r0, 0x13] @@ -2745,7 +2745,7 @@ _080E68C2: movs r1, 0x1E bl sub_80DD3D4 _080E68CE: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r1, [r0] ldr r0, [r1, 0x8] ldrb r2, [r0, 0x11] @@ -2764,7 +2764,7 @@ _080E68CE: thumb_func_start ContestEffectFunc_080E68EC ContestEffectFunc_080E68EC: @ 80E68EC push {r4,lr} - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r2, [r0, 0x10] ldrb r1, [r2, 0x1] @@ -2811,7 +2811,7 @@ sub_80E6934: @ 80E6934 mov r8, r0 movs r7, 0 movs r4, 0 - ldr r6, =gUnknown_02039F34 + ldr r6, =gContestResources ldr r0, =gContestMoves mov r9, r0 movs r5, 0 @@ -2861,7 +2861,7 @@ _080E699E: ble _080E694E cmp r7, 0 bne _080E69B8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x11] @@ -2882,7 +2882,7 @@ sub_80E69C8: @ 80E69C8 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r0, [r2] ldr r0, [r0, 0x8] adds r0, 0xD @@ -2945,7 +2945,7 @@ sub_80E6A2C: @ 80E6A2C movs r2, 0x8 bl memset movs r7, 0 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -3040,7 +3040,7 @@ _080E6AD6: strh r0, [r1] _080E6AFE: adds r7, 0x1 - ldr r4, =gUnknown_02039F34 + ldr r4, =gContestResources ldr r0, [r4] ldr r0, [r0, 0x8] adds r0, 0x8 @@ -3081,7 +3081,7 @@ sub_80E6B3C: @ 80E6B3C lsrs r0, 24 lsls r1, 24 lsrs r1, 24 - ldr r2, =gUnknown_02039F34 + ldr r2, =gContestResources ldr r4, [r2] ldr r3, [r4, 0x4] lsls r2, r0, 3 diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s index 4565c75aa1..0154cab36d 100644 --- a/asm/contest_link_80FC4F4.s +++ b/asm/contest_link_80FC4F4.s @@ -657,7 +657,7 @@ _080FCA30: lsls r0, 24 cmp r0, 0 beq _080FCAB2 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r2, [r0] ldr r0, =gUnknown_02039F25 ldrb r0, [r0] @@ -688,7 +688,7 @@ _080FCA68: ldrb r0, [r6] cmp r2, r0 bge _080FCAA4 - ldr r1, =gUnknown_02039F34 + ldr r1, =gContestResources mov r8, r1 ldr r4, =gBlockRecvBuffer movs r3, 0 @@ -955,7 +955,7 @@ _080FCCE8: bne _080FCCF4 b _080FCE42 _080FCCF4: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] movs r1, 0x70 @@ -968,7 +968,7 @@ _080FCD04: bne _080FCD10 b _080FCE42 _080FCD10: - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] ldr r1, =gUnknown_02039F2B @@ -1004,7 +1004,7 @@ _080FCD54: lsls r0, 24 cmp r0, 0 beq _080FCE42 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] movs r1, 0x14 @@ -1015,7 +1015,7 @@ _080FCD6C: lsls r0, 24 cmp r0, 0 beq _080FCE42 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldr r1, =gUnknown_02039F2B @@ -1031,7 +1031,7 @@ _080FCD98: lsls r0, 24 cmp r0, 0 beq _080FCE42 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x10] b _080FCDD4 @@ -1041,7 +1041,7 @@ _080FCDB0: lsls r0, 24 cmp r0, 0 beq _080FCE42 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x10] b _080FCE04 diff --git a/asm/rom3.s b/asm/rom3.s index 0159a453aa..f5ee3f47a9 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -75,7 +75,7 @@ _080326B8: ldr r0, =gBattleExecBuffer movs r5, 0 str r5, [r0] - bl sub_80A3934 + bl ClearBattleAnimationVars bl ClearBattleMonForms movs r0, 0xF bl BattleAI_HandleItemUseBeforeAISetup diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index 0e328358b7..a4d786159e 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -74,7 +74,7 @@ _080A5D00: lsls r0, 24 cmp r0, 0 beq _080A5D28 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] @@ -180,7 +180,7 @@ _080A5DDA: lsls r0, 24 cmp r0, 0 beq _080A5E04 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] @@ -531,7 +531,7 @@ sub_80A60AC: @ 80A60AC lsls r0, 24 cmp r0, 0 beq _080A60E8 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] @@ -554,7 +554,7 @@ _080A60E8: ldrh r0, [r1, 0x2] cmp r0, 0 bne _080A610C - ldr r1, =gUnknown_02038438 + ldr r1, =gAnimSpeciesByBanks lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] @@ -724,9 +724,9 @@ GetAnimBankSpriteId: @ 80A6240 adds r1, r0, 0 cmp r0, 0 bne _080A6268 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _080A62B6 @@ -737,9 +737,9 @@ GetAnimBankSpriteId: @ 80A6240 _080A6268: cmp r0, 0x1 bne _080A6288 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] - bl sub_80A6A90 + bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _080A62B6 @@ -750,22 +750,22 @@ _080A6268: _080A6288: cmp r1, 0x2 bne _080A62A4 - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r4, 0x2 eors r0, r4 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A62B6 b _080A62C0 .pool _080A62A4: - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r4, 0x2 eors r0, r4 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080A62C0 @@ -1242,7 +1242,7 @@ sub_80A65EC: @ 80A65EC ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x34] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -1421,7 +1421,7 @@ move_anim_8074EE0: @ 80A674C adds r4, r0, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -1439,7 +1439,7 @@ sub_80A6760: @ 80A6760 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x34] - ldr r5, =gAnimationBankAttacker + ldr r5, =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -1518,7 +1518,7 @@ sub_80A67F4: @ 80A67F4 movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite pop {r4} pop {r0} bx r0 @@ -1537,7 +1537,7 @@ sub_80A6814: @ 80A6814 movs r1, 0 bl SetGpuReg adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 @@ -1547,7 +1547,7 @@ sub_80A6814: @ 80A6814 sub_80A6838: @ 80A6838 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -1575,13 +1575,13 @@ sub_80A6864: @ 80A6864 lsls r1, 16 lsrs r5, r1, 16 mov r8, r5 - ldr r7, =gAnimationBankAttacker + ldr r7, =gAnimBankAttacker ldrb r0, [r7] movs r1, 0 bl sub_80A5C6C lsls r0, 24 lsrs r6, r0, 24 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_80A5C6C @@ -1729,7 +1729,7 @@ sub_80A6980: @ 80A6980 lsls r1, 24 cmp r1, 0 bne _080A69A8 - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_80A60AC @@ -1765,7 +1765,7 @@ sub_80A69CC: @ 80A69CC lsls r1, 24 cmp r1, 0 bne _080A69F0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_80A60AC @@ -1777,7 +1777,7 @@ sub_80A69CC: @ 80A69CC b _080A6A04 .pool _080A69F0: - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A60AC @@ -1862,8 +1862,8 @@ _080A6A7E: .pool thumb_func_end GetBankByIdentity - thumb_func_start sub_80A6A90 -sub_80A6A90: @ 80A6A90 + thumb_func_start AnimBankSpriteExists +AnimBankSpriteExists: @ 80A6A90 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -1872,11 +1872,11 @@ sub_80A6A90: @ 80A6A90 lsls r0, 24 cmp r0, 0 beq _080A6ABC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] cmp r0, r4 beq _080A6B0A - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] cmp r0, r4 beq _080A6B0A @@ -1926,7 +1926,7 @@ _080A6B1A: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_80A6A90 + thumb_func_end AnimBankSpriteExists thumb_func_start IsDoubleBattle IsDoubleBattle: @ 80A6B20 @@ -2061,7 +2061,7 @@ sub_80A6BFC: @ 80A6BFC b _080A6C60 .pool _080A6C30: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -2271,21 +2271,21 @@ _080A6DBE: movs r0, 0x3 movs r1, 0 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x3 movs r1, 0x1 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute b _080A6DE8 _080A6DD4: movs r0, 0x3 movs r1, 0 movs r2, 0x1 - bl lcd_bg_operations + bl SetAnimBgAttribute movs r0, 0x3 movs r1, 0x1 movs r2, 0 - bl lcd_bg_operations + bl SetAnimBgAttribute _080A6DE8: pop {r0} bx r0 @@ -2934,7 +2934,7 @@ sub_80A7270: @ 80A7270 cmp r0, 0 bne _080A72A6 adds r0, r7, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A72B4 @@ -3372,7 +3372,7 @@ _080A75F6: _080A7602: cmp r7, 0 beq _080A7614 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] adds r1, r0, 0 adds r1, 0x10 @@ -3383,7 +3383,7 @@ _080A7614: mov r0, r8 cmp r0, 0 beq _080A7628 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] adds r1, r0, 0 adds r1, 0x10 @@ -3394,11 +3394,11 @@ _080A7628: mov r0, r9 cmp r0, 0 beq _080A764E - ldr r6, =gAnimationBankAttacker + ldr r6, =gAnimBankAttacker ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A764E @@ -3413,11 +3413,11 @@ _080A764E: mov r0, r10 cmp r0, 0 beq _080A7674 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7674 @@ -3499,7 +3499,7 @@ _080A76F2: bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A771A @@ -3517,7 +3517,7 @@ _080A771A: bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7746 @@ -3537,7 +3537,7 @@ _080A7746: bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7772 @@ -3558,7 +3558,7 @@ _080A7772: bl GetBankByIdentity lsls r0, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A77A0 @@ -3670,7 +3670,7 @@ _080A7838: _080A7842: adds r0, r5, 0 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -3682,7 +3682,7 @@ _080A7842: _080A785C: ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] - ldr r4, =gAnimationBankTarget + ldr r4, =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -3701,7 +3701,7 @@ _080A785C: strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4-r7} @@ -3716,7 +3716,7 @@ sub_80A78AC: @ 80A78AC adds r6, r0, 0 movs r1, 0x1 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -3730,7 +3730,7 @@ _080A78CC: ldr r4, =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, =gAnimationBankTarget + ldr r5, =gAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_80A5C6C @@ -3768,7 +3768,7 @@ sub_80A791C: @ 80A791C cmp r0, 0 beq _080A7930 adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080A7930: pop {r4} pop {r0} @@ -3799,17 +3799,17 @@ _080A7954: adds r0, r5, 0 adds r1, r4, 0 bl sub_80A69CC - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker b _080A7976 .pool _080A796C: adds r0, r5, 0 adds r1, r4, 0 bl sub_80A6980 - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget _080A7976: ldrb r6, [r0] - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -3844,7 +3844,7 @@ _080A798E: strh r0, [r5, 0x36] ldr r0, =sub_80A6EEC str r0, [r5, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4-r7} @@ -4070,7 +4070,7 @@ _080A7B60: cmp r1, r0 bne _080A7B90 adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080A7B90: pop {r4,r5} pop {r0} @@ -4090,7 +4090,7 @@ sub_80A7B98: @ 80A7B98 cmp r3, 0xFF bne _080A7BBC adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080A7BE2 .pool _080A7BBC: @@ -4210,7 +4210,7 @@ _080A7C78: b _080A7CAC _080A7CA6: adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080A7CAC: pop {r4,r5} pop {r0} @@ -4230,7 +4230,7 @@ sub_80A7CB4: @ 80A7CB4 cmp r2, 0xFF bne _080A7CD8 adds r0, r4, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask b _080A7CEE .pool _080A7CD8: @@ -4554,7 +4554,7 @@ _080A7F42: lsls r0, 24 cmp r0, 0 beq _080A7F78 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r2, [r0] @@ -4807,7 +4807,7 @@ sub_80A8140: @ 80A8140 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, =gHappinessMoveAnim + ldr r0, =gAnimFriendship ldrb r0, [r0] movs r1, 0 cmp r0, 0x1E @@ -4823,7 +4823,7 @@ _080A815E: ldr r0, =gBattleAnimArgs strh r1, [r0, 0xE] adds r0, r2, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask pop {r0} bx r0 .pool @@ -4837,9 +4837,9 @@ sub_80A8174: @ 80A8174 lsls r0, 24 lsrs r4, r0, 24 adds r7, r4, 0 - ldr r6, =gAnimationBankTarget + ldr r6, =gAnimBankTarget ldrb r0, [r6] - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A81B4 @@ -4863,10 +4863,10 @@ sub_80A8174: @ 80A8174 orrs r0, r2 strb r0, [r1, 0x5] _080A81B4: - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker mov r8, r0 ldrb r0, [r0] - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A81EC @@ -4894,7 +4894,7 @@ _080A81EC: ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8224 @@ -4922,7 +4922,7 @@ _080A8224: mov r1, r8 ldrb r0, [r1] eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A825C @@ -4968,7 +4968,7 @@ _080A8286: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A82C8 @@ -5416,7 +5416,7 @@ sub_80A861C: @ 80A861C lsls r0, 24 cmp r0, 0 beq _080A86C4 - ldr r0, =gUnknown_02039F34 + ldr r0, =gContestResources ldr r0, [r0] ldr r2, [r0, 0x18] ldrb r1, [r2, 0x4] @@ -5941,7 +5941,7 @@ sub_80A8A6C: @ 80A8A6C push {r4,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5998,7 +5998,7 @@ _080A8AB6: sub_80A8AEC: @ 80A8AEC push {r4,lr} adds r4, r0, 0 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -6054,7 +6054,7 @@ sub_80A8B64: @ 80A8B64 push {r4,lr} adds r4, r0, 0 bl sub_80A6838 - ldr r0, =gAnimationBankAttacker + ldr r0, =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -6081,7 +6081,7 @@ _080A8B9C: strh r0, [r4, 0x22] ldr r0, =sub_80A67D8 str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4} @@ -6106,7 +6106,7 @@ sub_80A8BC4: @ 80A8BC4 lsrs r0, 24 movs r6, 0 strh r0, [r5, 0x8] - ldr r7, =gAnimationBankAttacker + ldr r7, =gAnimBankAttacker ldrb r0, [r7] bl GetBankSide lsls r0, 24 @@ -6283,7 +6283,7 @@ _080A8D58: ldr r0, =0x00002771 bl FreeSpritePaletteByTag adds r0, r5, 0 - bl move_anim_task_del + bl DestroyAnimVisualTask _080A8D6C: pop {r4,r5} pop {r0} @@ -6389,7 +6389,7 @@ _080A8E26: sub_80A8E30: @ 80A8E30 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, =gAnimationBankAttacker + ldr r4, =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_80A5C6C @@ -6465,7 +6465,7 @@ _080A8EC4: cmp r0, r1 bge _080A8EDC adds r0, r4, 0 - bl move_anim_8072740 + bl DestroyAnimSprite _080A8EDC: pop {r4,r5} pop {r0} @@ -6487,7 +6487,7 @@ sub_80A8EE4: @ 80A8EE4 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x36] - ldr r0, =gAnimationBankTarget + ldr r0, =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -6514,7 +6514,7 @@ _080A8F32: strh r0, [r4, 0x22] ldr r0, =sub_80A6EEC str r0, [r4, 0x1C] - ldr r1, =move_anim_8072740 + ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index b657ae179a..e979438405 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -6,7 +6,7 @@ gUnknown_082C8D64:: @ 82C8D64 .incbin "baserom.gba", 0x2c8d64, 0x8 -gUnknown_082C8D6C:: @ 82C8D6C +gBattleAnims_Moves:: @ 82C8D6C .incbin "baserom.gba", 0x2c8d6c, 0x590 gUnknown_082C92FC:: @ 82C92FC diff --git a/data/battle_anims.s b/data/battle_anims.s index 13e1bdc2fa..5cbdee7cfb 100644 --- a/data/battle_anims.s +++ b/data/battle_anims.s @@ -294,7 +294,7 @@ gUnknown_08524B3C:: @ 8524B3C .byte 0x00, 0x87, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00 .align 2 -gUnknown_08524B44:: @ 8524B44 +gBattleAnimPicTable:: @ 8524B44 obj_tiles 0x08c02538, 0x0200, 0x2710 obj_tiles 0x08c1c6e0, 0x0300, 0x2711 obj_tiles 0x08c20784, 0x0200, 0x2712 @@ -597,6 +597,8 @@ gUnknown_085253AC:: @ 85253AC obj_tiles 0x08c0a3ec, 0x1000, 0x282f obj_tiles 0x08c1bee4, 0x0100, 0x2830 + .align 2 +gBattleAnimPaletteTable:: @ 852544C obj_pal 0x08c028cc, 0x2710 obj_pal 0x08c1c794, 0x2711 obj_pal 0x08c20868, 0x2712 @@ -930,18 +932,18 @@ gUnknown_08525D54:: @ 8525D54 .4byte 0x08c25bec, 0x08d91074, 0x08c27324 .align 2 -gUnknown_08525E98:: @ 8525E98 - .4byte ma00_load_graphics - .4byte ma01_080728D0 - .4byte ma02_instanciate_template - .4byte sub_80A3ECC - .4byte ma04_wait_countdown - .4byte sub_80A3F88 - .4byte nullsub_6 - .4byte nullsub_7 - .4byte sub_80A3FC4 - .4byte ma09_play_sound - .4byte sub_80A41D8 +sScriptCmdTable:: @ 8525E98 + .4byte ScriptCmd_loadspritegfx + .4byte ScriptCmd_unloadspritegfx + .4byte ScriptCmd_createsprite + .4byte ScriptCmd_createvisualtask + .4byte ScriptCmd_delay + .4byte ScriptCmd_waitforvisualfinish + .4byte ScriptCmd_hang1 + .4byte ScriptCmd_hang2 + .4byte ScriptCmd_end + .4byte ScriptCmd_playse + .4byte ScriptCmd_monbg .4byte ma0B_0807324C .4byte ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument .4byte ma0D_reset_BLDCNT_and_BLDALPHA diff --git a/include/battle_anim.h b/include/battle_anim.h new file mode 100644 index 0000000000..8ba25f9c53 --- /dev/null +++ b/include/battle_anim.h @@ -0,0 +1,48 @@ +#ifndef GUARD_BATTLE_ANIM_H +#define GUARD_BATTLE_ANIM_H + +enum +{ + ANIM_BANK_ATTACKER, + ANIM_BANK_TARGET, + ANIM_BANK_ATK_PARTNER, + ANIM_BANK_DEF_PARTNER, +}; + +enum +{ + BG_ANIM_SCREEN_SIZE, + BG_ANIM_AREA_OVERFLOW_MODE, + BG_ANIM2, + BG_ANIM3, + BG_ANIM_PRIORITY, + BG_ANIM_5, + BG_ANIM_6 +}; + +struct UnknownAnimStruct2 +{ + void *unk0; + u16 *unk4; + u8 unk8; + u8 unk9; + u16 unkA; + u16 unkC; +}; + +void ClearBattleAnimationVars(void); +void DoMoveAnim(u16 move); +void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); +void DestroyAnimSprite(struct Sprite *sprite); +void DestroyAnimVisualTask(u8 taskId); +void DestroyAnimSoundTask(u8 taskId); +bool8 IsAnimBankSpriteVisible(u8 bank); +void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); + +bool8 IsContest(void); + +// battle_anim_80FE840.s +void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); +void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7); + +#endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_interface.h b/include/battle_interface.h index cecc7bd1fe..9c5b56bc8b 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -24,5 +24,6 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); +void sub_8072A88(u8 arg0); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/contest.h b/include/contest.h index 5c473bd2c0..7635e7358a 100644 --- a/include/contest.h +++ b/include/contest.h @@ -1,7 +1,8 @@ #ifndef GUARD_CONTEST_H #define GUARD_CONTEST_H -struct ContestStruct_02039E00 { +struct ContestStruct_02039E00 +{ u16 unk_00; u8 unk_02[11]; u8 unk_0d[8]; @@ -11,8 +12,29 @@ struct ContestStruct_02039E00 { extern struct ContestStruct_02039E00 gUnknown_02039E00[4]; extern u8 gUnknown_02039F24; -extern EWRAM_DATA u16 gScriptContestCategory; -extern EWRAM_DATA u8 gUnknown_02039F2E; -extern EWRAM_DATA u8 gUnknown_02039F30; +extern u16 gScriptContestCategory; +extern u8 gUnknown_02039F2E; +extern u8 gUnknown_02039F30; + +struct ContestStruct_field_18 +{ + // unknown size + u16 field_0; +}; + +struct ContestResources +{ + void *field_0; + void *field_4; + void *field_8; + void *field_C; + void *field_10; + void *field_14; + struct ContestStruct_field_18 *field_18; +}; + +extern struct ContestResources *gContestResources; + +bool8 IsSpeciesNotUnown(u16 species); #endif //GUARD_CONTEST_H diff --git a/include/decompress.h b/include/decompress.h index 6c925f7308..c3a7718934 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -8,7 +8,7 @@ void LZDecompressVram(const void *src, void *dest); u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src); void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); -bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src); +bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src); void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); diff --git a/include/sprite.h b/include/sprite.h index a9377165e4..5313140795 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -251,7 +251,7 @@ void BuildOamBuffer(void); u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); -u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); void DestroySprite(struct Sprite *sprite); void ResetOamRange(u8 a, u8 b); void LoadOam(void); diff --git a/ld_script.txt b/ld_script.txt index 04e394b5c7..f560479475 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -113,6 +113,7 @@ SECTIONS { src/tileset_anims.o(.text); src/palette.o(.text); src/sound.o(.text); + src/battle_anim.o(.text); asm/battle_anim.o(.text); asm/rom_80A5C6C.o(.text); src/task.o(.text); diff --git a/src/battle_anim.c b/src/battle_anim.c new file mode 100644 index 0000000000..6c316157f4 --- /dev/null +++ b/src/battle_anim.c @@ -0,0 +1,650 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "sprite.h" +#include "contest.h" +#include "m4a.h" +#include "pokemon.h" +#include "battle_interface.h" +#include "task.h" +#include "decompress.h" +#include "sound.h" +#include "dma3.h" +#include "bg.h" +#include "gpu_regs.h" +#include "palette.h" + +// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. +#define GET_TRUE_SPRITE_INDEX(i) ((i - 10000)) +#define SCRIPT_READ_32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) +#define SCRIPT_READ_32_(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define SCRIPT_READ_16_(ptr) ((ptr)[0] + ((ptr)[1] << 8)) + +#define ANIM_SPRITE_INDEX_COUNT 8 +#define ANIM_ARGS_COUNT 8 + +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; + +EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL; +EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL; +EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; +EWRAM_DATA s8 gAnimFramesToWait = 0; +EWRAM_DATA bool8 gAnimScriptActive = FALSE; +EWRAM_DATA u8 gAnimVisualTaskCount = 0; +EWRAM_DATA u8 gAnimSoundTaskCount = 0; +EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; +EWRAM_DATA u32 gAnimMoveDmg = 0; +EWRAM_DATA u16 gAnimMovePower = 0; +EWRAM_DATA u16 gAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT] = {0}; +EWRAM_DATA u8 gAnimFriendship = 0; +EWRAM_DATA u16 gWeatherMoveAnim = 0; +EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0}; +EWRAM_DATA u16 gSoundAnimFramesToWait = 0; +EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; +EWRAM_DATA u8 gUnknown_02038432 = 0; +EWRAM_DATA u8 gUnknown_02038433 = 0; +EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. +EWRAM_DATA u8 gAnimBankAttacker = 0; +EWRAM_DATA u8 gAnimBankTarget = 0; +EWRAM_DATA u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT] = {0}; +EWRAM_DATA u8 gUnknown_02038440 = 0; + +extern void (* const sScriptCmdTable[])(void); +extern const u16 gUnknown_082C8D64[]; +extern const u8 * const gBattleAnims_Moves[]; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; + +extern void sub_80A8278(void); // rom_80A5C6C.s +extern void sub_80A6B30(struct UnknownAnimStruct2*); // rom_80A5C6C.s +extern void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); // rom_80A5C6C.s +extern u8 sub_80A82E4(u8 bank); // rom_80A5C6C.s +extern u8 sub_80A5C6C(u8 bank, u8 attributeId); // rom_80A5C6C.s +extern bool8 AnimBankSpriteExists(u8 bank); // rom_80A5C6C.s + +// this file's functions +void RunAnimScriptCommand(void); +void task_pA_ma0A_obj_to_bg_pal(u8 taskId); +void sub_80A46A0(void); + +void ClearBattleAnimationVars(void) +{ + s32 i; + + gAnimFramesToWait = 0; + gAnimScriptActive = FALSE; + gAnimVisualTaskCount = 0; + gAnimSoundTaskCount = 0; + gAnimDisableStructPtr = NULL; + gAnimMoveDmg = 0; + gAnimMovePower = 0; + gAnimFriendship = 0; + + // clear index array. + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + gAnimSpriteIndexArray[i] |= 0xFFFF; + + // clear anim args. + for (i = 0; i < ANIM_ARGS_COUNT; i++) + gBattleAnimArgs[i] = 0; + + gMonAnimTaskIdArray[0] = 0xFF; + gMonAnimTaskIdArray[1] = 0xFF; + gUnknown_02038432 = 0; + gUnknown_02038433 = 0; + gAnimMoveIndex = 0; + gAnimBankAttacker = 0; + gAnimBankTarget = 0; + gUnknown_02038440 = 0; +} + +void DoMoveAnim(u16 move) +{ + gAnimBankAttacker = gBankAttacker; + gAnimBankTarget = gBankTarget; + DoBattleAnim(gBattleAnims_Moves, move, TRUE); +} + +void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim) +{ + s32 i; + + if (!IsContest()) + { + sub_80A8278(); + sub_8072A88(0); + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + if (GetBankSide(i) != 0) + gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES); + else + gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES); + } + } + else + { + for (i = 0; i < 4; i++) + gAnimSpeciesByBanks[i] = gContestResources->field_18->field_0; + } + + if (!isMoveAnim) + gAnimMoveIndex = 0; + else + gAnimMoveIndex = tableId; + + for (i = 0; i < ANIM_ARGS_COUNT; i++) + gBattleAnimArgs[i] = 0; + + gMonAnimTaskIdArray[0] = 0xFF; + gMonAnimTaskIdArray[1] = 0xFF; + gBattleAnimScriptPtr = animsTable[tableId]; + gAnimScriptActive = TRUE; + gAnimFramesToWait = 0; + gAnimScriptCallback = RunAnimScriptCommand; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + gAnimSpriteIndexArray[i] |= 0xFFFF; + + if (isMoveAnim) + { + for (i = 0; gUnknown_082C8D64[i] != 0xFFFF; i++) + { + if (tableId == gUnknown_082C8D64[i]) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); + break; + } + } + } + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + gBattle_WIN1H = 0; + gBattle_WIN1V = 0; +} + +void DestroyAnimSprite(struct Sprite *sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + gAnimVisualTaskCount--; +} + +void DestroyAnimVisualTask(u8 taskId) +{ + DestroyTask(taskId); + gAnimVisualTaskCount--; +} + +void DestroyAnimSoundTask(u8 taskId) +{ + DestroyTask(taskId); + gAnimSoundTaskCount--; +} + +/*static*/ void AddSpriteIndex(u16 index) +{ + s32 i; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + { + if (gAnimSpriteIndexArray[i] == 0xFFFF) + { + gAnimSpriteIndexArray[i] = index; + return; + } + } +} + +/*static*/ void ClearSpriteIndex(u16 index) +{ + s32 i; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + { + if (gAnimSpriteIndexArray[i] == index) + { + gAnimSpriteIndexArray[i] |= 0xFFFF; + return; + } + } +} + +/*static*/ void WaitAnimFrameCount(void) +{ + if (gAnimFramesToWait <= 0) + { + gAnimScriptCallback = RunAnimScriptCommand; + gAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait--; + } +} + +/*static*/ void RunAnimScriptCommand(void) +{ + do + { + sScriptCmdTable[gBattleAnimScriptPtr[0]](); + } while (gAnimFramesToWait == 0 && gAnimScriptActive); +} + +/*static*/ void ScriptCmd_loadspritegfx(void) +{ + u16 index; + + gBattleAnimScriptPtr++; + index = SCRIPT_READ_16(gBattleAnimScriptPtr); + LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]); + LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); + gBattleAnimScriptPtr += 2; + AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); + gAnimFramesToWait = 1; + gAnimScriptCallback = WaitAnimFrameCount; +} + +/*static*/ void ScriptCmd_unloadspritegfx(void) +{ + u16 index; + + gBattleAnimScriptPtr++; + index = SCRIPT_READ_16(gBattleAnimScriptPtr); + FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); + gBattleAnimScriptPtr += 2; + ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); +} + +/*static*/ void ScriptCmd_createsprite(void) +{ + s32 i; + const struct SpriteTemplate *template; + u8 argVar; + u8 argsCount; + s16 subpriority; + + gBattleAnimScriptPtr++; + template = (const struct SpriteTemplate *)(SCRIPT_READ_32_(gBattleAnimScriptPtr)); + gBattleAnimScriptPtr += 4; + + argVar = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + + argsCount = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + for (i = 0; i < argsCount; i++) + { + gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 2; + } + + if (argVar & 0x80) + { + argVar ^= 0x80; + if (argVar >= 0x40) + argVar -= 0x40; + else + argVar *= -1; + + subpriority = sub_80A82E4(gAnimBankTarget) + (s8)(argVar); + } + else + { + if (argVar >= 0x40) + argVar -= 0x40; + else + argVar *= -1; + + subpriority = sub_80A82E4(gAnimBankAttacker) + (s8)(argVar); + } + + if (subpriority < 3) + subpriority = 3; + + CreateSpriteAndAnimate(template, sub_80A5C6C(gAnimBankTarget, 2), sub_80A5C6C(gAnimBankTarget, 3), subpriority); + gAnimVisualTaskCount++; +} + +/*static*/ void ScriptCmd_createvisualtask(void) +{ + TaskFunc taskFunc; + u8 taskPriority; + u8 taskId; + u8 numArgs; + s32 i; + + gBattleAnimScriptPtr++; + + taskFunc = (TaskFunc)SCRIPT_READ_32_(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 4; + + taskPriority = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + + numArgs = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + + for (i = 0; i < numArgs; i++) + { + gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 2; + } + + taskId = CreateTask(taskFunc, taskPriority); + taskFunc(taskId); + gAnimVisualTaskCount++; +} + +/*static*/ void ScriptCmd_delay(void) +{ + gBattleAnimScriptPtr++; + gAnimFramesToWait = gBattleAnimScriptPtr[0]; + if (gAnimFramesToWait == 0) + gAnimFramesToWait = -1; + gBattleAnimScriptPtr++; + gAnimScriptCallback = WaitAnimFrameCount; +} + +// wait for visual tasks to finish. +/*static*/ void ScriptCmd_waitforvisualfinish(void) +{ + if (gAnimVisualTaskCount == 0) + { + gBattleAnimScriptPtr++; + gAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait = 1; + } +} + +/*static*/ void ScriptCmd_hang1(void) +{ +} + +/*static*/ void ScriptCmd_hang2(void) +{ +} + +/*static*/ void ScriptCmd_end(void) +{ + s32 i; + bool32 continuousAnim = FALSE; + + // keep waiting as long as there is animations to be done. + if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 + || gMonAnimTaskIdArray[0] != 0xFF || gMonAnimTaskIdArray[1] != 0xFF) + { + gSoundAnimFramesToWait = 0; + gAnimFramesToWait = 1; + return; + } + + // finish the sound effects. + if (IsSEPlaying()) + { + if (++gSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect. + { + gAnimFramesToWait = 1; + return; + } + else + { + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + } + } + + // the SE has halted, so set the SE Frame Counter to 0 and continue. + gSoundAnimFramesToWait = 0; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + { + if (gAnimSpriteIndexArray[i] != 0xFFFF) + { + FreeSpriteTilesByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); + gAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator. + } + } + + if (!continuousAnim) // may have been used for debug? + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + if (!IsContest()) + { + sub_80A8278(); + sub_8072A88(1); + } + gAnimScriptActive = FALSE; + } +} + +/*static*/ void ScriptCmd_playse(void) +{ + gBattleAnimScriptPtr++; + PlaySE(SCRIPT_READ_16(gBattleAnimScriptPtr)); + gBattleAnimScriptPtr += 2; +} + +#define t1_MONBG_BANK 0 +#define t1_MON_IN_BG2 1 +#define t1_CREATE_ANOTHER_TASK 2 +#define t1_IS_SECONDMON_BG 3 + +#define t2_BANK_SPRITE_ID 0 +#define t2_MON_IN_BG2 5 +#define t2_MONBG_BANK 6 + +/*static*/ void sub_80A40F4(u8 taskId) +{ + u8 newTaskId; + + s16 *selfData = gTasks[taskId].data; + u8 bankSpriteId = gBankSpriteIds[selfData[t1_MONBG_BANK]]; + gSprites[bankSpriteId].invisible = 1; + + if (!selfData[t1_CREATE_ANOTHER_TASK]) + { + DestroyAnimVisualTask(taskId); + return; + } + + newTaskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[newTaskId].data[t2_BANK_SPRITE_ID] = bankSpriteId; + gTasks[newTaskId].data[1] = gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x; + gTasks[newTaskId].data[2] = gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y; + + if (!selfData[t1_MON_IN_BG2]) + { + gTasks[newTaskId].data[3] = gBattle_BG1_X; + gTasks[newTaskId].data[4] = gBattle_BG1_Y; + } + else + { + gTasks[newTaskId].data[3] = gBattle_BG2_X; + gTasks[newTaskId].data[4] = gBattle_BG2_Y; + } + + gTasks[newTaskId].data[t2_MON_IN_BG2] = selfData[t1_MON_IN_BG2]; + gTasks[newTaskId].data[t2_MONBG_BANK] = selfData[t1_MONBG_BANK]; + gMonAnimTaskIdArray[selfData[t1_IS_SECONDMON_BG]] = newTaskId; + DestroyAnimVisualTask(taskId); +} + +/*static*/ void ScriptCmd_monbg(void) +{ + bool8 toBG_2; + u8 taskId; + u8 bank; + u8 animBank; + + gBattleAnimScriptPtr++; + + animBank = gBattleAnimScriptPtr[0]; + if (animBank & ANIM_BANK_TARGET) + bank = gAnimBankTarget; + else + bank = gAnimBankAttacker; + + if (IsAnimBankSpriteVisible(bank)) + { + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + sub_80A438C(bank, toBG_2, FALSE); + taskId = CreateTask(sub_80A40F4, 10); + gAnimVisualTaskCount++; + gTasks[taskId].data[t1_MONBG_BANK] = bank; + gTasks[taskId].data[t1_MON_IN_BG2] = toBG_2; + gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE; + gTasks[taskId].data[t1_IS_SECONDMON_BG] = 0; + + } + + bank ^= BIT_MON; + if (IsAnimBankSpriteVisible(bank)) + { + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + sub_80A438C(bank, toBG_2, FALSE); + taskId = CreateTask(sub_80A40F4, 10); + gAnimVisualTaskCount++; + gTasks[taskId].data[0] = bank; + gTasks[taskId].data[1] = toBG_2; + gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE; + gTasks[taskId].data[t1_IS_SECONDMON_BG] = 1; + } + + gBattleAnimScriptPtr++; + gAnimFramesToWait = 1; + gAnimScriptCallback = WaitAnimFrameCount; +} + +bool8 IsAnimBankSpriteVisible(u8 bank) +{ + if (IsContest()) + { + if (bank == gAnimBankAttacker) + return TRUE; + else + return FALSE; + } + if (!AnimBankSpriteExists(bank)) + return FALSE; + if (IsContest()) + return TRUE; // this line wont ever be reached. + if (!gBattleSpritesDataPtr->bankData[bank].invisible || !gSprites[gBankSpriteIds[bank]].invisible) + return TRUE; + + return FALSE; +} + +void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible) +{ + struct UnknownAnimStruct2 unknownStruct; + u8 bankSpriteId; + + if (!toBG_2) + { + u8 bankIdentity; + + if (IsContest() == TRUE) + { + RequestDma3Fill(0, (void*)(VRAM + 0x8000), 0x2000, 1); + RequestDma3Fill(0xFF, (void*)(VRAM + 0xF000), 0x1000, 0); + } + else + { + RequestDma3Fill(0, (void*)(VRAM + 0x4000), 0x2000, 1); + RequestDma3Fill(0xFF, (void*)(VRAM + 0xe000), 0x1000, 0); + } + + sub_80A6B30(&unknownStruct); + CpuFill16(0, unknownStruct.unk0, 0x1000); + CpuFill16(0xFF, unknownStruct.unk4, 0x800); + + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0); + + bankSpriteId = gBankSpriteIds[bank]; + + gBattle_BG1_X = -(gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x) + 0x20; + if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->field_0)) + gBattle_BG1_X--; + + gBattle_BG1_Y = -(gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y) + 0x20; + if (setSpriteInvisible) + gSprites[gBankSpriteIds[bank]].invisible = 1; + + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + + LoadPalette(&gPlttBufferUnfaded[0x100 + bank * 16], unknownStruct.unk8 * 16, 0x20); + CpuCopy32(&gPlttBufferUnfaded[0x100 + bank * 16], (void*)(BG_PLTT + unknownStruct.unk8 * 32), 0x20); + + if (IsContest()) + bankIdentity = 0; + else + bankIdentity = GetBankIdentity(bank); + + sub_8118FBC(1, 0, 0, bankIdentity, unknownStruct.unk8, unknownStruct.unk0, unknownStruct.unk4, unknownStruct.unkA); + + if (IsContest()) + sub_80A46A0(); + } + else + { + RequestDma3Fill(0, (void*)(VRAM + 0x6000), 0x2000, 1); + RequestDma3Fill(0, (void*)(VRAM + 0xF000), 0x1000, 1); + sub_80A6B90(&unknownStruct, 2); + CpuFill16(0, unknownStruct.unk0 + 0x1000, 0x1000); + CpuFill16(0, unknownStruct.unk4 + 0x400, 0x800); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1); + SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0); + + bankSpriteId = gBankSpriteIds[bank]; + + gBattle_BG2_X = -(gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x) + 0x20; + gBattle_BG2_Y = -(gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y) + 0x20; + + if (setSpriteInvisible) + gSprites[gBankSpriteIds[bank]].invisible = 1; + + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + + LoadPalette(&gPlttBufferUnfaded[0x100 + bank * 16], 0x90, 0x20); + CpuCopy32(&gPlttBufferUnfaded[0x100 + bank * 16], (void*)(BG_PLTT + 0x120), 0x20); + + sub_8118FBC(2, 0, 0, GetBankIdentity(bank), unknownStruct.unk8, unknownStruct.unk0 + 0x1000, unknownStruct.unk4 + 0x400, unknownStruct.unkA); + } +} + diff --git a/src/decompress.c b/src/decompress.c index 2863ff1f54..9210799ec5 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -465,7 +465,7 @@ u32 sub_8034974(void* ptr) return (ptr_[3] << 16) | (ptr_[2] << 8) | (ptr_[1]); } -bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src) +bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src) { struct SpriteSheet dest; void* buffer; diff --git a/src/sprite.c b/src/sprite.c index 17b0f181a7..daa019019c 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -594,7 +594,7 @@ u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, return index; } -u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) { u8 i; diff --git a/sym_ewram.txt b/sym_ewram.txt index 8ce7ce8df7..71865e103e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -713,77 +713,9 @@ gUnknown_02037622: @ 2037622 .include "src/tileset_anims.o" .include "src/palette.o" .include "src/sound.o" - - .align 0x2 + .include "src/battle_anim.o" -gBattleAnimScriptPtr: @ 20383F0 - .space 0x4 - -gBattleAnimScriptRetAddr: @ 20383F4 - .space 0x4 - -gAnimScriptCallback: @ 20383F8 - .space 0x4 - -gAnimFramesToWait: @ 20383FC - .space 0x1 - -gAnimScriptActive: @ 20383FD - .space 0x1 - -gAnimVisualTaskCount: @ 20383FE - .space 0x1 - -gAnimSoundTaskCount: @ 20383FF - .space 0x1 - -gDisableStructMoveAnim: @ 2038400 - .space 0x4 - -gMoveDmgMoveAnim: @ 2038404 - .space 0x4 - -gMovePowerMoveAnim: @ 2038408 - .space 0x2 - -gAnimSpriteIndexArray: @ 203840A - .space 0x10 - -gHappinessMoveAnim: @ 203841A - .space 0x2 - -gWeatherMoveAnim: @ 203841C - .space 0x2 - -gBattleAnimArgs: @ 203841E - .space 0x10 - -gSoundAnimFramesToWait: @ 203842E - .space 0x2 - -gUnknown_02038430: @ 2038430 - .space 0x2 - -gUnknown_02038432: @ 2038432 - .space 0x1 - -gUnknown_02038433: @ 2038433 - .space 0x1 - -gAnimMoveIndex: @ 2038434 - .space 0x2 - -gAnimationBankAttacker: @ 2038436 - .space 0x1 - -gAnimationBankTarget: @ 2038437 - .space 0x1 - -gUnknown_02038438: @ 2038438 - .space 0x8 - -gUnknown_02038440: @ 2038440 - .space 0x4 +.align 2 gUnknown_02038444: @ 2038444 .space 0x10 @@ -1058,7 +990,7 @@ gUnknown_02039F30: @ 2039F30 gUnknown_02039F31: @ 2039F31 .space 0x3 -gUnknown_02039F34: @ 2039F34 +gContestResources: @ 2039F34 .space 0x4 gUnknown_02039F38: @ 2039F38 From 7cf9693551ebf79212878c08245e13337d43ad52 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 14:26:25 -0400 Subject: [PATCH 147/182] Decompile special pointers --- data/event_scripts.s | 3 +- data/specials.inc | 529 +++++++++++++++++++++++++++++++++++++++++++ src/egg_hatch.c | 2 +- src/safari_zone.c | 2 +- 4 files changed, 532 insertions(+), 4 deletions(-) create mode 100644 data/specials.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index 0f6ea494e1..ad1216b914 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -12,8 +12,7 @@ gScriptCmdTableEnd:: @ 81DBA08 gSpecialVars:: @ 81DBA0C .incbin "baserom.gba", 0x1dba0c, 0x58 -gSpecials:: @ 81DBA64 - .incbin "baserom.gba", 0x1dba64, 0x83c + .include "data/specials.inc" gStdScripts:: @ 81DC2A0 .incbin "baserom.gba", 0x1dc2a0, 0x2c diff --git a/data/specials.inc b/data/specials.inc new file mode 100644 index 0000000000..d34d6b6f47 --- /dev/null +++ b/data/specials.inc @@ -0,0 +1,529 @@ +gSpecials:: @ 81DBA64 + .4byte sp000_heal_pokemon + .4byte sub_809D2BC + .4byte sub_80AF948 + .4byte sub_80AF9F8 + .4byte sub_80B36EC + .4byte sub_80B371C + .4byte sub_80E8E18 + .4byte sub_80E8BC8 + .4byte sub_80E9068 + .4byte sub_80E9A90 + .4byte sub_80E9AC0 + .4byte sub_80E9744 + .4byte sub_80E9BDC + .4byte sub_80E9C2C + .4byte sub_80E9C74 + .4byte sub_80E9C88 + .4byte sub_80EA2E4 + .4byte sub_80EA354 + .4byte sub_80E933C + .4byte sub_8127E18 + .4byte sub_81297AC + .4byte sub_80E8C98 + .4byte sub_80E95D4 + .4byte sub_8129708 + .4byte sub_80E91F8 + .4byte sub_80EA30C + .4byte sub_80FA57C + .4byte sub_80E6BE8 + .4byte sub_80B2DA4 + .4byte sub_80B2E4C + .4byte sub_80B2E74 + .4byte sub_80B2EA8 + .4byte sub_80097E8 + .4byte sub_80B3968 + .4byte sub_80B3924 + .4byte nullsub_37 + .4byte sub_80B3254 + .4byte sub_80B2FD8 + .4byte sub_8138240 + .4byte SpawnLinkPartnerFieldObject + .4byte copy_player_party_to_sav1 + .4byte copy_player_party_from_sav1 + .4byte sub_80F9438 + .4byte sp02A_crash_sound + .4byte FieldObjectInteractionGetBerryTreeData + .4byte FieldObjectInteractionGetBerryName + .4byte FieldObjectInteractionGetBerryCountString + .4byte Bag_ChooseBerry + .4byte FieldObjectInteractionPlantBerryTree + .4byte FieldObjectInteractionPickBerryTree + .4byte FieldObjectInteractionRemoveBerryTree + .4byte FieldObjectInteractionWaterBerryTree + .4byte PlayerHasBerries + .4byte IsEnigmaBerryValid + .4byte sub_80B170C + .4byte sub_80B1A14 + .4byte special_trainer_unable_to_battle + .4byte check_trainer_flag + .4byte sub_80B45AC + .4byte SetUpTrainerEncounterMusic + .4byte sub_80B226C + .4byte sub_80B22A0 + .4byte sub_80B19EC + .4byte sub_80C7578 + .4byte sub_80F92F8 + .4byte TurnOffTVScreen + .4byte DoTVShow + .4byte DoPokeNews + .4byte special_0x44 + .4byte special_0x45 + .4byte InterviewBefore + .4byte InterviewAfter + .4byte sub_80EF8F8 + .4byte SetContestCategoryStringVarForInterview + .4byte special_0x4a + .4byte TV_IsScriptShowKindAlreadyInQueue + .4byte CheckForBigMovieOrEmergencyNewsOnTV + .4byte GetMomOrDadStringForTVMessage + .4byte ResetTVShowState + .4byte sub_80F831C + .4byte sub_80F84B0 + .4byte sub_80F8814 + .4byte sub_80F834C + .4byte sub_80F8390 + .4byte sub_80F8850 + .4byte sub_80F82B4 + .4byte sub_80F87D8 + .4byte sub_80F7F30 + .4byte sub_80F8970 + .4byte sub_80F8AFC + .4byte sub_80F82FC + .4byte sub_80F7F7C + .4byte sub_80F7FFC + .4byte sub_80F8D24 + .4byte sub_80F8C7C + .4byte sub_80B3000 + .4byte sub_809FF80 + .4byte sub_80FAFF8 + .4byte easy_chat_input_maybe + .4byte sub_811EECC + .4byte sub_81201DC + .4byte sub_81201F4 + .4byte sub_8120210 + .4byte sub_8120358 + .4byte sub_8120374 + .4byte sub_812038C + .4byte sub_8120340 + .4byte sub_8120B5C + .4byte sub_81203FC + .4byte sub_81203C4 + .4byte sub_81213B0 + .4byte sub_812139C + .4byte sub_8121388 + .4byte sub_81213D8 + .4byte sub_8121450 + .4byte sub_8121424 + .4byte sub_8133EC0 + .4byte sub_8133CD8 + .4byte sub_8133CF4 + .4byte sub_8133D2C + .4byte sub_8133D8C + .4byte sub_8133E38 + .4byte GetSeedotSizeRecordInfo + .4byte CompareSeedotSize + .4byte GetLotadSizeRecordInfo + .4byte CompareLotadSize + .4byte TV_PutNameRaterShowOnTheAirIfNicnkameChanged + .4byte TV_CopyNicknameToStringVar1AndEnsureTerminated + .4byte TV_CheckMonOTIDEqualsPlayerID + .4byte sub_8122998 + .4byte sub_81229C8 + .4byte sub_811EF6C + .4byte sub_8122A30 + .4byte sub_80D6EDC + .4byte CalculatePlayerPartyCount + .4byte sub_80C7008 + .4byte sub_80C70AC + .4byte sub_80F88E8 + .4byte sub_80F88DC + .4byte sub_80F8864 + .4byte sub_80F8940 + .4byte ShowContestWinner + .4byte sub_8138540 + .4byte sub_81384F0 + .4byte sub_8138AC0 + .4byte DrawWholeMapView + .4byte sub_8138AD0 + .4byte sub_8138750 + .4byte sub_81388E4 + .4byte sub_8138AA4 + .4byte sub_8138AF0 + .4byte sub_8138B10 + .4byte sub_8138B48 + .4byte sub_8138BC8 + .4byte sub_8138B8C + .4byte sub_814FC9C + .4byte sub_8085784 + .4byte Special_StartWallClock + .4byte Special_ViewWallClock + .4byte sub_80B1138 + .4byte sub_80B086C + .4byte ChangePokemonNickname + .4byte sub_81B94B0 + .4byte sub_8136EF4 + .4byte sub_807FA80 + .4byte sub_8142BC8 + .4byte sub_813BD60 + .4byte sub_813BCA8 + .4byte sub_813BDB4 + .4byte sub_813BA30 + .4byte sub_813BCE8 + .4byte sub_813BF60 + .4byte sub_813BA60 + .4byte sub_813BF7C + .4byte rock_smash_wild_pokemon_encounter + .4byte GabbyAndTyGetBattleNum + .4byte GabbyAndTyAfterInterview + .4byte GabbyAndTyBeforeInterview + .4byte DoTVShowInSearchOfTrainers + .4byte IsTVShowInSearchOfTrainersAiring + .4byte GabbyAndTyGetLastQuote + .4byte GabbyAndTyGetLastBattleTrivia + .4byte GabbyAndTySetScriptVarsToFieldObjectLocalIds + .4byte sub_8138B80 + .4byte sp0B5_daycare + .4byte sp0B6_daycare + .4byte sub_8070728 + .4byte sp0B8_daycare + .4byte sp0B9_daycare_relationship_comment + .4byte sub_8070C58 + .4byte daycare_send_selected_pokemon + .4byte sub_8071330 + .4byte sub_80712C0 + .4byte sub_806FF30 + .4byte sub_806FED8 + .4byte sub_806FDC4 + .4byte ScriptHatchMon + .4byte EggHatch + .4byte sub_8071614 + .4byte sub_813C4BC + .4byte IsEnoughForCostInVar0x8005 + .4byte SubtractMoneyFromVar0x8005 + .4byte sub_80F972C + .4byte sp0C8_whiteout_maybe + .4byte sub_80FBE90 + .4byte sub_80FBED0 + .4byte sub_8137F90 + .4byte sub_8137FB0 + .4byte EnterSafariMode + .4byte ExitSafariMode + .4byte GetPokeblockFeederInFront + .4byte sub_8135908 + .4byte sub_813793C + .4byte sub_8137988 + .4byte sub_8137A0C + .4byte sub_8137A4C + .4byte sub_8137C10 + .4byte sp0D9_ComputerRelated + .4byte sub_8138E20 + .4byte sub_8139994 + .4byte sub_8138EC0 + .4byte sub_8138FAC + .4byte sub_81B951C + .4byte sub_81B968C + .4byte sub_81B9770 + .4byte sub_81B9718 + .4byte sub_81B96D0 + .4byte sub_8160638 + .4byte sub_8137EFC + .4byte sub_8137D0C + .4byte sp0E3_walkrun_bitfield_interpretation + .4byte sub_8137E6C + .4byte sub_8137F44 + .4byte sub_8138C04 + .4byte sub_81A1780 + .4byte sub_8161F74 + .4byte sub_818E9AC + .4byte sub_8195960 + .4byte sub_8165360 + .4byte sub_8163AC4 + .4byte sub_81A5238 + .4byte sub_81A5E74 + .4byte sub_81A703C + .4byte sub_81A8E7C + .4byte StopMapMusic + .4byte sub_81B99B4 + .4byte sub_81B9B80 + .4byte sub_81B9D08 + .4byte sub_80F9490 + .4byte sub_81652B4 + .4byte sub_8139228 + .4byte sub_80F94E8 + .4byte sub_816AE58 + .4byte sub_816AE98 + .4byte sub_8138C94 + .4byte sub_807E73C + .4byte sub_807EA10 + .4byte sub_807F0E4 + .4byte sub_807E9D4 + .4byte sub_8138BDC + .4byte RetrieveLotteryNumber + .4byte PickLotteryCornerTicket + .4byte ShowBerryBlenderRecordWindow + .4byte sub_8138FEC + .4byte sub_8138FD4 + .4byte sp109_CreatePCMenu + .4byte sub_8137C28 + .4byte sub_8137CB4 + .4byte sub_8139004 + .4byte sub_8139030 + .4byte sub_813905C + .4byte sub_8139088 + .4byte sub_81390B4 + .4byte sub_80FB7A4 + .4byte DoSoftReset + .4byte sub_8137734 + .4byte sub_8139A78 + .4byte nullsub_55 + .4byte SpawnScriptFieldObject + .4byte RemoveScriptFieldObject + .4byte sub_81391D0 + .4byte sub_8139200 + .4byte CheckRelicanthWailord + .4byte ShouldDoBrailleStrengthEffectOld + .4byte sub_80B0534 + .4byte sub_80B058C + .4byte sub_81379F8 + .4byte sub_8139238 + .4byte sub_8139248 + .4byte player_get_direction_lower_nybble + .4byte sub_81392AC + .4byte sub_81392D4 + .4byte sub_81392F8 + .4byte sub_8139320 + .4byte sub_8139348 + .4byte sub_8139370 + .4byte sub_81393C8 + .4byte sub_8098574 + .4byte sub_809859C + .4byte InitRoamer + .4byte sub_81393FC + .4byte sub_81390E0 + .4byte sub_80AFC60 + .4byte sub_813946C + .4byte sub_81394D8 + .4byte sub_80E980C + .4byte sub_8139530 + .4byte DoSealedChamberShakingEffect1 + .4byte sub_8139B60 + .4byte sub_80FAC78 + .4byte sub_8139540 + .4byte sub_809E1C8 + .4byte sub_8139560 + .4byte sub_80B0A18 + .4byte sub_80B0934 + .4byte sub_80B0A74 + .4byte sub_80B16D8 + .4byte DoSealedChamberShakingEffect2 + .4byte sub_8139634 + .4byte sub_80AC81C + .4byte sp13E_warp_to_last_warp + .4byte sp13F_fall_to_last_warp + .4byte sub_80F8D28 + .4byte sub_80F8EB8 + .4byte sub_8162794 + .4byte sub_80B08EC + .4byte sub_8139648 + .4byte sub_8139668 + .4byte sub_80F8FA0 + .4byte sub_81396E0 + .4byte sub_81B98DC + .4byte nullsub_54 + .4byte sub_80E9B70 + .4byte copy_bags_and_unk_data_from_save_blocks + .4byte sub_80B05B4 + .4byte sub_8139754 + .4byte sub_813970C + .4byte sub_80C08E4 + .4byte sub_8139770 + .4byte sub_81397C4 + .4byte sub_81653CC + .4byte sub_80F9370 + .4byte sub_80F8FE8 + .4byte sub_81AFDD0 + .4byte sub_80EDCE8 + .4byte sub_80EE2CC + .4byte sub_80EE72C + .4byte sub_80EE7C0 + .4byte nullsub_55 + .4byte PutFanClubSpecialOnTheAir + .4byte sub_80EED10 + .4byte sub_80EED34 + .4byte sub_80EB1AC + .4byte sub_80EBE7C + .4byte sub_80EB300 + .4byte sub_80EB438 + .4byte sub_80EB368 + .4byte sub_80EB3D0 + .4byte sub_80EB290 + .4byte sub_80EB2C8 + .4byte sub_80EB56C + .4byte sub_80EB9E0 + .4byte sub_80EBB28 + .4byte sub_80EB498 + .4byte sub_818D9C0 + .4byte sub_818DAEC + .4byte sub_818DBE8 + .4byte sub_818DC2C + .4byte sub_818DC60 + .4byte sub_818DCC8 + .4byte sub_818DD14 + .4byte sub_818DD54 + .4byte sub_818DD78 + .4byte sub_818DE44 + .4byte sub_818DE5C + .4byte sub_818DEA0 + .4byte sub_818DEDC + .4byte sub_818E038 + .4byte sub_818E06C + .4byte sub_818E2D8 + .4byte sub_811A858 + .4byte sub_818E2FC + .4byte sub_818E308 + .4byte sub_818E358 + .4byte sub_818E37C + .4byte sub_818E298 + .4byte sub_818E39C + .4byte sub_818E3BC + .4byte sub_818E3E0 + .4byte sub_818E430 + .4byte sub_818E47C + .4byte sub_818E490 + .4byte sub_813986C + .4byte sub_818E4A4 + .4byte sub_818E510 + .4byte sub_818E538 + .4byte sub_818E274 + .4byte sub_818E3EC + .4byte sub_818E8E0 + .4byte sub_818E8B4 + .4byte sub_818E914 + .4byte sub_818E92C + .4byte sub_818E940 + .4byte sub_818E960 + .4byte sub_818E990 + .4byte PutLilycoveContestLadyShowOnTheAir + .4byte sub_813B880 + .4byte sub_81A085C + .4byte CheckIfMultipleTrainersWantBattle + .4byte AddMapNamePopUpWindowTask + .4byte AddMapNamePopUpWindowTask + .4byte sub_81BE994 + .4byte sub_81BE79C + .4byte sub_81BE7F4 + .4byte sub_81398C0 + .4byte sub_80093CC + .4byte BerryBlenderLinkBecomeLeader + .4byte BerryBlenderLinkJoinGroup + .4byte UnionRoomSpecial + .4byte sub_801A42C + .4byte sub_8016934 + .4byte sp182_move_string + .4byte sub_801DC20 + .4byte sub_81B8958 + .4byte sub_8018090 + .4byte sub_813990C + .4byte sub_801B27C + .4byte HasAtLeastOneBerry + .4byte sub_802C920 + .4byte sub_802E3C4 + .4byte sub_8027A5C + .4byte sub_8027AAC + .4byte sub_8139980 + .4byte sub_81399F4 + .4byte sub_8139D98 + .4byte sub_80F905C + .4byte sub_800B518 + .4byte sub_80F90DC + .4byte sub_80F910C + .4byte sub_80F9160 + .4byte sub_81A4AA0 + .4byte sub_81A4AE8 + .4byte sub_8139F20 + .4byte sub_80F9134 + .4byte sub_80F9154 + .4byte sub_80B3028 + .4byte sub_813A128 + .4byte sub_813A630 + .4byte sub_813A080 + .4byte sub_81C6A94 + .4byte sub_81C4F24 + .4byte sub_81B95E0 + .4byte sub_81B9620 + .4byte sub_813A76C + .4byte sub_813A7B8 + .4byte sub_813A958 + .4byte sub_813A8FC + .4byte sub_813A988 + .4byte sub_813A9D0 + .4byte sub_813A9A4 + .4byte sub_813AA04 + .4byte sub_813AA18 + .4byte sub_813AA44 + .4byte sub_80248B0 + .4byte sub_8024918 + .4byte sub_80246D4 + .4byte sub_802477C + .4byte sub_802488C + .4byte sub_813A820 + .4byte sub_813A854 + .4byte sub_813B7D8 + .4byte sub_81C72A4 + .4byte sp106_CreateStartMenu + .4byte sub_80C2E40 + .4byte sub_813AC7C + .4byte sub_813ADB8 + .4byte sub_813ADD4 + .4byte sub_81B892C + .4byte sub_813AEB4 + .4byte sub_813AF48 + .4byte sub_813AFC8 + .4byte sub_813B1D0 + .4byte DoScriptedWildBattle + .4byte sub_81BEB54 + .4byte sub_81BEB68 + .4byte sub_81BEB7C + .4byte ChangeBoxPokemonNickname + .4byte get_unknown_box_id + .4byte sub_813B21C + .4byte sub_81D1C20 + .4byte sub_8175280 + .4byte sub_813B2E4 + .4byte sub_813B374 + .4byte sub_813B490 + .4byte sub_80A08CC + .4byte sub_813B484 + .4byte sub_81AFDA0 + .4byte sub_813B4E0 + .4byte ShouldDoBrailleRegicePuzzle + .4byte EnableNationalPokedex + .4byte sub_80E2548 + .4byte sub_80E2878 + .4byte TurnOnTVScreen + .4byte sub_81D4A90 + .4byte sub_813B514 + .4byte sub_813B568 + .4byte sub_813B534 + .4byte sp194_trainer_tower + .4byte sub_813B7D8 + .4byte sub_813B80C + .4byte sub_81D4BEC + .4byte sub_80224D0 + .4byte sub_81D99BC + .4byte walda_maybe + .4byte sub_81D9AC4 + .4byte sub_8139ED0 + .4byte sub_813B968 + .4byte sub_80F8B94 + .4byte sub_813C904 + .4byte sub_80B4808 + .4byte sub_813B9A0 + .4byte sub_81B9918 + .4byte sub_80722E0 + .4byte sub_80B45D0 + .4byte sub_813C5A0 + .4byte sub_8139C10 + .4byte sub_80B3BC4 + diff --git a/src/egg_hatch.c b/src/egg_hatch.c index a1f187b858..589e8901d2 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -462,7 +462,7 @@ static void VBlankCB_EggHatch(void) TransferPlttBuffer(); } -static void EggHatch(void) +void EggHatch(void) { ScriptContext2_Enable(); CreateTask(Task_EggHatch, 10); diff --git a/src/safari_zone.c b/src/safari_zone.c index a1ec38920a..77c6bbd613 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -139,7 +139,7 @@ static void ClearAllPokeblockFeeders(void) memset(sPokeblockFeeders, 0, sizeof(sPokeblockFeeders)); } -static void GetPokeblockFeederInFront(void) +void GetPokeblockFeederInFront(void) { s16 x, y; u16 i; From 70eaf5d1bec20b9b965e4904cffad2a012a5d7ec Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 15:00:13 -0400 Subject: [PATCH 148/182] port def_special --- asm/macros/event.s | 4 +- data/specials.inc | 1064 ++++++++++++++++++++++---------------------- 2 files changed, 538 insertions(+), 530 deletions(-) diff --git a/asm/macros/event.s b/asm/macros/event.s index ee9c42c978..b5fefb925d 100644 --- a/asm/macros/event.s +++ b/asm/macros/event.s @@ -241,14 +241,14 @@ @ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers. .macro special function .byte 0x25 - .2byte \function + .2byte SPECIAL_\function .endm @ Calls a special function. That function's output (if any) will be written to the variable you specify. .macro specialval output, function .byte 0x26 .2byte \output - .2byte \function + .2byte SPECIAL_\function .endm @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). diff --git a/data/specials.inc b/data/specials.inc index d34d6b6f47..bb9a41ab71 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -1,529 +1,537 @@ -gSpecials:: @ 81DBA64 - .4byte sp000_heal_pokemon - .4byte sub_809D2BC - .4byte sub_80AF948 - .4byte sub_80AF9F8 - .4byte sub_80B36EC - .4byte sub_80B371C - .4byte sub_80E8E18 - .4byte sub_80E8BC8 - .4byte sub_80E9068 - .4byte sub_80E9A90 - .4byte sub_80E9AC0 - .4byte sub_80E9744 - .4byte sub_80E9BDC - .4byte sub_80E9C2C - .4byte sub_80E9C74 - .4byte sub_80E9C88 - .4byte sub_80EA2E4 - .4byte sub_80EA354 - .4byte sub_80E933C - .4byte sub_8127E18 - .4byte sub_81297AC - .4byte sub_80E8C98 - .4byte sub_80E95D4 - .4byte sub_8129708 - .4byte sub_80E91F8 - .4byte sub_80EA30C - .4byte sub_80FA57C - .4byte sub_80E6BE8 - .4byte sub_80B2DA4 - .4byte sub_80B2E4C - .4byte sub_80B2E74 - .4byte sub_80B2EA8 - .4byte sub_80097E8 - .4byte sub_80B3968 - .4byte sub_80B3924 - .4byte nullsub_37 - .4byte sub_80B3254 - .4byte sub_80B2FD8 - .4byte sub_8138240 - .4byte SpawnLinkPartnerFieldObject - .4byte copy_player_party_to_sav1 - .4byte copy_player_party_from_sav1 - .4byte sub_80F9438 - .4byte sp02A_crash_sound - .4byte FieldObjectInteractionGetBerryTreeData - .4byte FieldObjectInteractionGetBerryName - .4byte FieldObjectInteractionGetBerryCountString - .4byte Bag_ChooseBerry - .4byte FieldObjectInteractionPlantBerryTree - .4byte FieldObjectInteractionPickBerryTree - .4byte FieldObjectInteractionRemoveBerryTree - .4byte FieldObjectInteractionWaterBerryTree - .4byte PlayerHasBerries - .4byte IsEnigmaBerryValid - .4byte sub_80B170C - .4byte sub_80B1A14 - .4byte special_trainer_unable_to_battle - .4byte check_trainer_flag - .4byte sub_80B45AC - .4byte SetUpTrainerEncounterMusic - .4byte sub_80B226C - .4byte sub_80B22A0 - .4byte sub_80B19EC - .4byte sub_80C7578 - .4byte sub_80F92F8 - .4byte TurnOffTVScreen - .4byte DoTVShow - .4byte DoPokeNews - .4byte special_0x44 - .4byte special_0x45 - .4byte InterviewBefore - .4byte InterviewAfter - .4byte sub_80EF8F8 - .4byte SetContestCategoryStringVarForInterview - .4byte special_0x4a - .4byte TV_IsScriptShowKindAlreadyInQueue - .4byte CheckForBigMovieOrEmergencyNewsOnTV - .4byte GetMomOrDadStringForTVMessage - .4byte ResetTVShowState - .4byte sub_80F831C - .4byte sub_80F84B0 - .4byte sub_80F8814 - .4byte sub_80F834C - .4byte sub_80F8390 - .4byte sub_80F8850 - .4byte sub_80F82B4 - .4byte sub_80F87D8 - .4byte sub_80F7F30 - .4byte sub_80F8970 - .4byte sub_80F8AFC - .4byte sub_80F82FC - .4byte sub_80F7F7C - .4byte sub_80F7FFC - .4byte sub_80F8D24 - .4byte sub_80F8C7C - .4byte sub_80B3000 - .4byte sub_809FF80 - .4byte sub_80FAFF8 - .4byte easy_chat_input_maybe - .4byte sub_811EECC - .4byte sub_81201DC - .4byte sub_81201F4 - .4byte sub_8120210 - .4byte sub_8120358 - .4byte sub_8120374 - .4byte sub_812038C - .4byte sub_8120340 - .4byte sub_8120B5C - .4byte sub_81203FC - .4byte sub_81203C4 - .4byte sub_81213B0 - .4byte sub_812139C - .4byte sub_8121388 - .4byte sub_81213D8 - .4byte sub_8121450 - .4byte sub_8121424 - .4byte sub_8133EC0 - .4byte sub_8133CD8 - .4byte sub_8133CF4 - .4byte sub_8133D2C - .4byte sub_8133D8C - .4byte sub_8133E38 - .4byte GetSeedotSizeRecordInfo - .4byte CompareSeedotSize - .4byte GetLotadSizeRecordInfo - .4byte CompareLotadSize - .4byte TV_PutNameRaterShowOnTheAirIfNicnkameChanged - .4byte TV_CopyNicknameToStringVar1AndEnsureTerminated - .4byte TV_CheckMonOTIDEqualsPlayerID - .4byte sub_8122998 - .4byte sub_81229C8 - .4byte sub_811EF6C - .4byte sub_8122A30 - .4byte sub_80D6EDC - .4byte CalculatePlayerPartyCount - .4byte sub_80C7008 - .4byte sub_80C70AC - .4byte sub_80F88E8 - .4byte sub_80F88DC - .4byte sub_80F8864 - .4byte sub_80F8940 - .4byte ShowContestWinner - .4byte sub_8138540 - .4byte sub_81384F0 - .4byte sub_8138AC0 - .4byte DrawWholeMapView - .4byte sub_8138AD0 - .4byte sub_8138750 - .4byte sub_81388E4 - .4byte sub_8138AA4 - .4byte sub_8138AF0 - .4byte sub_8138B10 - .4byte sub_8138B48 - .4byte sub_8138BC8 - .4byte sub_8138B8C - .4byte sub_814FC9C - .4byte sub_8085784 - .4byte Special_StartWallClock - .4byte Special_ViewWallClock - .4byte sub_80B1138 - .4byte sub_80B086C - .4byte ChangePokemonNickname - .4byte sub_81B94B0 - .4byte sub_8136EF4 - .4byte sub_807FA80 - .4byte sub_8142BC8 - .4byte sub_813BD60 - .4byte sub_813BCA8 - .4byte sub_813BDB4 - .4byte sub_813BA30 - .4byte sub_813BCE8 - .4byte sub_813BF60 - .4byte sub_813BA60 - .4byte sub_813BF7C - .4byte rock_smash_wild_pokemon_encounter - .4byte GabbyAndTyGetBattleNum - .4byte GabbyAndTyAfterInterview - .4byte GabbyAndTyBeforeInterview - .4byte DoTVShowInSearchOfTrainers - .4byte IsTVShowInSearchOfTrainersAiring - .4byte GabbyAndTyGetLastQuote - .4byte GabbyAndTyGetLastBattleTrivia - .4byte GabbyAndTySetScriptVarsToFieldObjectLocalIds - .4byte sub_8138B80 - .4byte sp0B5_daycare - .4byte sp0B6_daycare - .4byte sub_8070728 - .4byte sp0B8_daycare - .4byte sp0B9_daycare_relationship_comment - .4byte sub_8070C58 - .4byte daycare_send_selected_pokemon - .4byte sub_8071330 - .4byte sub_80712C0 - .4byte sub_806FF30 - .4byte sub_806FED8 - .4byte sub_806FDC4 - .4byte ScriptHatchMon - .4byte EggHatch - .4byte sub_8071614 - .4byte sub_813C4BC - .4byte IsEnoughForCostInVar0x8005 - .4byte SubtractMoneyFromVar0x8005 - .4byte sub_80F972C - .4byte sp0C8_whiteout_maybe - .4byte sub_80FBE90 - .4byte sub_80FBED0 - .4byte sub_8137F90 - .4byte sub_8137FB0 - .4byte EnterSafariMode - .4byte ExitSafariMode - .4byte GetPokeblockFeederInFront - .4byte sub_8135908 - .4byte sub_813793C - .4byte sub_8137988 - .4byte sub_8137A0C - .4byte sub_8137A4C - .4byte sub_8137C10 - .4byte sp0D9_ComputerRelated - .4byte sub_8138E20 - .4byte sub_8139994 - .4byte sub_8138EC0 - .4byte sub_8138FAC - .4byte sub_81B951C - .4byte sub_81B968C - .4byte sub_81B9770 - .4byte sub_81B9718 - .4byte sub_81B96D0 - .4byte sub_8160638 - .4byte sub_8137EFC - .4byte sub_8137D0C - .4byte sp0E3_walkrun_bitfield_interpretation - .4byte sub_8137E6C - .4byte sub_8137F44 - .4byte sub_8138C04 - .4byte sub_81A1780 - .4byte sub_8161F74 - .4byte sub_818E9AC - .4byte sub_8195960 - .4byte sub_8165360 - .4byte sub_8163AC4 - .4byte sub_81A5238 - .4byte sub_81A5E74 - .4byte sub_81A703C - .4byte sub_81A8E7C - .4byte StopMapMusic - .4byte sub_81B99B4 - .4byte sub_81B9B80 - .4byte sub_81B9D08 - .4byte sub_80F9490 - .4byte sub_81652B4 - .4byte sub_8139228 - .4byte sub_80F94E8 - .4byte sub_816AE58 - .4byte sub_816AE98 - .4byte sub_8138C94 - .4byte sub_807E73C - .4byte sub_807EA10 - .4byte sub_807F0E4 - .4byte sub_807E9D4 - .4byte sub_8138BDC - .4byte RetrieveLotteryNumber - .4byte PickLotteryCornerTicket - .4byte ShowBerryBlenderRecordWindow - .4byte sub_8138FEC - .4byte sub_8138FD4 - .4byte sp109_CreatePCMenu - .4byte sub_8137C28 - .4byte sub_8137CB4 - .4byte sub_8139004 - .4byte sub_8139030 - .4byte sub_813905C - .4byte sub_8139088 - .4byte sub_81390B4 - .4byte sub_80FB7A4 - .4byte DoSoftReset - .4byte sub_8137734 - .4byte sub_8139A78 - .4byte nullsub_55 - .4byte SpawnScriptFieldObject - .4byte RemoveScriptFieldObject - .4byte sub_81391D0 - .4byte sub_8139200 - .4byte CheckRelicanthWailord - .4byte ShouldDoBrailleStrengthEffectOld - .4byte sub_80B0534 - .4byte sub_80B058C - .4byte sub_81379F8 - .4byte sub_8139238 - .4byte sub_8139248 - .4byte player_get_direction_lower_nybble - .4byte sub_81392AC - .4byte sub_81392D4 - .4byte sub_81392F8 - .4byte sub_8139320 - .4byte sub_8139348 - .4byte sub_8139370 - .4byte sub_81393C8 - .4byte sub_8098574 - .4byte sub_809859C - .4byte InitRoamer - .4byte sub_81393FC - .4byte sub_81390E0 - .4byte sub_80AFC60 - .4byte sub_813946C - .4byte sub_81394D8 - .4byte sub_80E980C - .4byte sub_8139530 - .4byte DoSealedChamberShakingEffect1 - .4byte sub_8139B60 - .4byte sub_80FAC78 - .4byte sub_8139540 - .4byte sub_809E1C8 - .4byte sub_8139560 - .4byte sub_80B0A18 - .4byte sub_80B0934 - .4byte sub_80B0A74 - .4byte sub_80B16D8 - .4byte DoSealedChamberShakingEffect2 - .4byte sub_8139634 - .4byte sub_80AC81C - .4byte sp13E_warp_to_last_warp - .4byte sp13F_fall_to_last_warp - .4byte sub_80F8D28 - .4byte sub_80F8EB8 - .4byte sub_8162794 - .4byte sub_80B08EC - .4byte sub_8139648 - .4byte sub_8139668 - .4byte sub_80F8FA0 - .4byte sub_81396E0 - .4byte sub_81B98DC - .4byte nullsub_54 - .4byte sub_80E9B70 - .4byte copy_bags_and_unk_data_from_save_blocks - .4byte sub_80B05B4 - .4byte sub_8139754 - .4byte sub_813970C - .4byte sub_80C08E4 - .4byte sub_8139770 - .4byte sub_81397C4 - .4byte sub_81653CC - .4byte sub_80F9370 - .4byte sub_80F8FE8 - .4byte sub_81AFDD0 - .4byte sub_80EDCE8 - .4byte sub_80EE2CC - .4byte sub_80EE72C - .4byte sub_80EE7C0 - .4byte nullsub_55 - .4byte PutFanClubSpecialOnTheAir - .4byte sub_80EED10 - .4byte sub_80EED34 - .4byte sub_80EB1AC - .4byte sub_80EBE7C - .4byte sub_80EB300 - .4byte sub_80EB438 - .4byte sub_80EB368 - .4byte sub_80EB3D0 - .4byte sub_80EB290 - .4byte sub_80EB2C8 - .4byte sub_80EB56C - .4byte sub_80EB9E0 - .4byte sub_80EBB28 - .4byte sub_80EB498 - .4byte sub_818D9C0 - .4byte sub_818DAEC - .4byte sub_818DBE8 - .4byte sub_818DC2C - .4byte sub_818DC60 - .4byte sub_818DCC8 - .4byte sub_818DD14 - .4byte sub_818DD54 - .4byte sub_818DD78 - .4byte sub_818DE44 - .4byte sub_818DE5C - .4byte sub_818DEA0 - .4byte sub_818DEDC - .4byte sub_818E038 - .4byte sub_818E06C - .4byte sub_818E2D8 - .4byte sub_811A858 - .4byte sub_818E2FC - .4byte sub_818E308 - .4byte sub_818E358 - .4byte sub_818E37C - .4byte sub_818E298 - .4byte sub_818E39C - .4byte sub_818E3BC - .4byte sub_818E3E0 - .4byte sub_818E430 - .4byte sub_818E47C - .4byte sub_818E490 - .4byte sub_813986C - .4byte sub_818E4A4 - .4byte sub_818E510 - .4byte sub_818E538 - .4byte sub_818E274 - .4byte sub_818E3EC - .4byte sub_818E8E0 - .4byte sub_818E8B4 - .4byte sub_818E914 - .4byte sub_818E92C - .4byte sub_818E940 - .4byte sub_818E960 - .4byte sub_818E990 - .4byte PutLilycoveContestLadyShowOnTheAir - .4byte sub_813B880 - .4byte sub_81A085C - .4byte CheckIfMultipleTrainersWantBattle - .4byte AddMapNamePopUpWindowTask - .4byte AddMapNamePopUpWindowTask - .4byte sub_81BE994 - .4byte sub_81BE79C - .4byte sub_81BE7F4 - .4byte sub_81398C0 - .4byte sub_80093CC - .4byte BerryBlenderLinkBecomeLeader - .4byte BerryBlenderLinkJoinGroup - .4byte UnionRoomSpecial - .4byte sub_801A42C - .4byte sub_8016934 - .4byte sp182_move_string - .4byte sub_801DC20 - .4byte sub_81B8958 - .4byte sub_8018090 - .4byte sub_813990C - .4byte sub_801B27C - .4byte HasAtLeastOneBerry - .4byte sub_802C920 - .4byte sub_802E3C4 - .4byte sub_8027A5C - .4byte sub_8027AAC - .4byte sub_8139980 - .4byte sub_81399F4 - .4byte sub_8139D98 - .4byte sub_80F905C - .4byte sub_800B518 - .4byte sub_80F90DC - .4byte sub_80F910C - .4byte sub_80F9160 - .4byte sub_81A4AA0 - .4byte sub_81A4AE8 - .4byte sub_8139F20 - .4byte sub_80F9134 - .4byte sub_80F9154 - .4byte sub_80B3028 - .4byte sub_813A128 - .4byte sub_813A630 - .4byte sub_813A080 - .4byte sub_81C6A94 - .4byte sub_81C4F24 - .4byte sub_81B95E0 - .4byte sub_81B9620 - .4byte sub_813A76C - .4byte sub_813A7B8 - .4byte sub_813A958 - .4byte sub_813A8FC - .4byte sub_813A988 - .4byte sub_813A9D0 - .4byte sub_813A9A4 - .4byte sub_813AA04 - .4byte sub_813AA18 - .4byte sub_813AA44 - .4byte sub_80248B0 - .4byte sub_8024918 - .4byte sub_80246D4 - .4byte sub_802477C - .4byte sub_802488C - .4byte sub_813A820 - .4byte sub_813A854 - .4byte sub_813B7D8 - .4byte sub_81C72A4 - .4byte sp106_CreateStartMenu - .4byte sub_80C2E40 - .4byte sub_813AC7C - .4byte sub_813ADB8 - .4byte sub_813ADD4 - .4byte sub_81B892C - .4byte sub_813AEB4 - .4byte sub_813AF48 - .4byte sub_813AFC8 - .4byte sub_813B1D0 - .4byte DoScriptedWildBattle - .4byte sub_81BEB54 - .4byte sub_81BEB68 - .4byte sub_81BEB7C - .4byte ChangeBoxPokemonNickname - .4byte get_unknown_box_id - .4byte sub_813B21C - .4byte sub_81D1C20 - .4byte sub_8175280 - .4byte sub_813B2E4 - .4byte sub_813B374 - .4byte sub_813B490 - .4byte sub_80A08CC - .4byte sub_813B484 - .4byte sub_81AFDA0 - .4byte sub_813B4E0 - .4byte ShouldDoBrailleRegicePuzzle - .4byte EnableNationalPokedex - .4byte sub_80E2548 - .4byte sub_80E2878 - .4byte TurnOnTVScreen - .4byte sub_81D4A90 - .4byte sub_813B514 - .4byte sub_813B568 - .4byte sub_813B534 - .4byte sp194_trainer_tower - .4byte sub_813B7D8 - .4byte sub_813B80C - .4byte sub_81D4BEC - .4byte sub_80224D0 - .4byte sub_81D99BC - .4byte walda_maybe - .4byte sub_81D9AC4 - .4byte sub_8139ED0 - .4byte sub_813B968 - .4byte sub_80F8B94 - .4byte sub_813C904 - .4byte sub_80B4808 - .4byte sub_813B9A0 - .4byte sub_81B9918 - .4byte sub_80722E0 - .4byte sub_80B45D0 - .4byte sub_813C5A0 - .4byte sub_8139C10 - .4byte sub_80B3BC4 +.macro def_special ptr +.set SPECIAL_\ptr, __special__ +.set __special__, __special__ + 1 + .4byte \ptr + .endm + +.set __special__, 0 + .align 2 +gSpecials:: @ 81DBA64 + def_special sp000_heal_pokemon + def_special sub_809D2BC + def_special sub_80AF948 + def_special sub_80AF9F8 + def_special sub_80B36EC + def_special sub_80B371C + def_special sub_80E8E18 + def_special sub_80E8BC8 + def_special sub_80E9068 + def_special sub_80E9A90 + def_special sub_80E9AC0 + def_special sub_80E9744 + def_special sub_80E9BDC + def_special sub_80E9C2C + def_special sub_80E9C74 + def_special sub_80E9C88 + def_special sub_80EA2E4 + def_special sub_80EA354 + def_special sub_80E933C + def_special sub_8127E18 + def_special sub_81297AC + def_special sub_80E8C98 + def_special sub_80E95D4 + def_special sub_8129708 + def_special sub_80E91F8 + def_special sub_80EA30C + def_special sub_80FA57C + def_special sub_80E6BE8 + def_special sub_80B2DA4 + def_special sub_80B2E4C + def_special sub_80B2E74 + def_special sub_80B2EA8 + def_special sub_80097E8 + def_special sub_80B3968 + def_special sub_80B3924 + def_special nullsub_37 + def_special sub_80B3254 + def_special sub_80B2FD8 + def_special sub_8138240 + def_special SpawnLinkPartnerFieldObject + def_special copy_player_party_to_sav1 + def_special copy_player_party_from_sav1 + def_special sub_80F9438 + def_special sp02A_crash_sound + def_special FieldObjectInteractionGetBerryTreeData + def_special FieldObjectInteractionGetBerryName + def_special FieldObjectInteractionGetBerryCountString + def_special Bag_ChooseBerry + def_special FieldObjectInteractionPlantBerryTree + def_special FieldObjectInteractionPickBerryTree + def_special FieldObjectInteractionRemoveBerryTree + def_special FieldObjectInteractionWaterBerryTree + def_special PlayerHasBerries + def_special IsEnigmaBerryValid + def_special sub_80B170C + def_special sub_80B1A14 + def_special special_trainer_unable_to_battle + def_special check_trainer_flag + def_special sub_80B45AC + def_special SetUpTrainerEncounterMusic + def_special sub_80B226C + def_special sub_80B22A0 + def_special sub_80B19EC + def_special sub_80C7578 + def_special sub_80F92F8 + def_special TurnOffTVScreen + def_special DoTVShow + def_special DoPokeNews + def_special special_0x44 + def_special special_0x45 + def_special InterviewBefore + def_special InterviewAfter + def_special sub_80EF8F8 + def_special SetContestCategoryStringVarForInterview + def_special special_0x4a + def_special TV_IsScriptShowKindAlreadyInQueue + def_special CheckForBigMovieOrEmergencyNewsOnTV + def_special GetMomOrDadStringForTVMessage + def_special ResetTVShowState + def_special sub_80F831C + def_special sub_80F84B0 + def_special sub_80F8814 + def_special sub_80F834C + def_special sub_80F8390 + def_special sub_80F8850 + def_special sub_80F82B4 + def_special sub_80F87D8 + def_special sub_80F7F30 + def_special sub_80F8970 + def_special sub_80F8AFC + def_special sub_80F82FC + def_special sub_80F7F7C + def_special sub_80F7FFC + def_special sub_80F8D24 + def_special sub_80F8C7C + def_special sub_80B3000 + def_special sub_809FF80 + def_special sub_80FAFF8 + def_special easy_chat_input_maybe + def_special sub_811EECC + def_special sub_81201DC + def_special sub_81201F4 + def_special sub_8120210 + def_special sub_8120358 + def_special sub_8120374 + def_special sub_812038C + def_special sub_8120340 + def_special sub_8120B5C + def_special sub_81203FC + def_special sub_81203C4 + def_special sub_81213B0 + def_special sub_812139C + def_special sub_8121388 + def_special sub_81213D8 + def_special sub_8121450 + def_special sub_8121424 + def_special sub_8133EC0 + def_special sub_8133CD8 + def_special sub_8133CF4 + def_special sub_8133D2C + def_special sub_8133D8C + def_special sub_8133E38 + def_special GetSeedotSizeRecordInfo + def_special CompareSeedotSize + def_special GetLotadSizeRecordInfo + def_special CompareLotadSize + def_special TV_PutNameRaterShowOnTheAirIfNicnkameChanged + def_special TV_CopyNicknameToStringVar1AndEnsureTerminated + def_special TV_CheckMonOTIDEqualsPlayerID + def_special sub_8122998 + def_special sub_81229C8 + def_special sub_811EF6C + def_special sub_8122A30 + def_special sub_80D6EDC + def_special CalculatePlayerPartyCount + def_special sub_80C7008 + def_special sub_80C70AC + def_special sub_80F88E8 + def_special sub_80F88DC + def_special sub_80F8864 + def_special sub_80F8940 + def_special ShowContestWinner + def_special sub_8138540 + def_special sub_81384F0 + def_special sub_8138AC0 + def_special DrawWholeMapView + def_special sub_8138AD0 + def_special sub_8138750 + def_special sub_81388E4 + def_special sub_8138AA4 + def_special sub_8138AF0 + def_special sub_8138B10 + def_special sub_8138B48 + def_special sub_8138BC8 + def_special sub_8138B8C + def_special sub_814FC9C + def_special sub_8085784 + def_special Special_StartWallClock + def_special Special_ViewWallClock + def_special sub_80B1138 + def_special sub_80B086C + def_special ChangePokemonNickname + def_special sub_81B94B0 + def_special sub_8136EF4 + def_special sub_807FA80 + def_special sub_8142BC8 + def_special sub_813BD60 + def_special sub_813BCA8 + def_special sub_813BDB4 + def_special sub_813BA30 + def_special sub_813BCE8 + def_special sub_813BF60 + def_special sub_813BA60 + def_special sub_813BF7C + def_special rock_smash_wild_pokemon_encounter + def_special GabbyAndTyGetBattleNum + def_special GabbyAndTyAfterInterview + def_special GabbyAndTyBeforeInterview + def_special DoTVShowInSearchOfTrainers + def_special IsTVShowInSearchOfTrainersAiring + def_special GabbyAndTyGetLastQuote + def_special GabbyAndTyGetLastBattleTrivia + def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds + def_special sub_8138B80 + def_special sp0B5_daycare + def_special sp0B6_daycare + def_special sub_8070728 + def_special sp0B8_daycare + def_special sp0B9_daycare_relationship_comment + def_special sub_8070C58 + def_special daycare_send_selected_pokemon + def_special sub_8071330 + def_special sub_80712C0 + def_special sub_806FF30 + def_special sub_806FED8 + def_special sub_806FDC4 + def_special ScriptHatchMon + def_special EggHatch + def_special sub_8071614 + def_special sub_813C4BC + def_special IsEnoughForCostInVar0x8005 + def_special SubtractMoneyFromVar0x8005 + def_special sub_80F972C + def_special sp0C8_whiteout_maybe + def_special sub_80FBE90 + def_special sub_80FBED0 + def_special sub_8137F90 + def_special sub_8137FB0 + def_special EnterSafariMode + def_special ExitSafariMode + def_special GetPokeblockFeederInFront + def_special sub_8135908 + def_special sub_813793C + def_special sub_8137988 + def_special sub_8137A0C + def_special sub_8137A4C + def_special sub_8137C10 + def_special sp0D9_ComputerRelated + def_special sub_8138E20 + def_special sub_8139994 + def_special sub_8138EC0 + def_special sub_8138FAC + def_special sub_81B951C + def_special sub_81B968C + def_special sub_81B9770 + def_special sub_81B9718 + def_special sub_81B96D0 + def_special sub_8160638 + def_special sub_8137EFC + def_special sub_8137D0C + def_special sp0E3_walkrun_bitfield_interpretation + def_special sub_8137E6C + def_special sub_8137F44 + def_special sub_8138C04 + def_special sub_81A1780 + def_special sub_8161F74 + def_special sub_818E9AC + def_special sub_8195960 + def_special sub_8165360 + def_special sub_8163AC4 + def_special sub_81A5238 + def_special sub_81A5E74 + def_special sub_81A703C + def_special sub_81A8E7C + def_special StopMapMusic + def_special sub_81B99B4 + def_special sub_81B9B80 + def_special sub_81B9D08 + def_special sub_80F9490 + def_special sub_81652B4 + def_special sub_8139228 + def_special sub_80F94E8 + def_special sub_816AE58 + def_special sub_816AE98 + def_special sub_8138C94 + def_special sub_807E73C + def_special sub_807EA10 + def_special sub_807F0E4 + def_special sub_807E9D4 + def_special sub_8138BDC + def_special RetrieveLotteryNumber + def_special PickLotteryCornerTicket + def_special ShowBerryBlenderRecordWindow + def_special sub_8138FEC + def_special sub_8138FD4 + def_special sp109_CreatePCMenu + def_special sub_8137C28 + def_special sub_8137CB4 + def_special sub_8139004 + def_special sub_8139030 + def_special sub_813905C + def_special sub_8139088 + def_special sub_81390B4 + def_special sub_80FB7A4 + def_special DoSoftReset + def_special sub_8137734 + def_special sub_8139A78 + def_special nullsub_55 + def_special SpawnScriptFieldObject + def_special RemoveScriptFieldObject + def_special sub_81391D0 + def_special sub_8139200 + def_special CheckRelicanthWailord + def_special ShouldDoBrailleStrengthEffectOld + def_special sub_80B0534 + def_special sub_80B058C + def_special sub_81379F8 + def_special sub_8139238 + def_special sub_8139248 + def_special player_get_direction_lower_nybble + def_special sub_81392AC + def_special sub_81392D4 + def_special sub_81392F8 + def_special sub_8139320 + def_special sub_8139348 + def_special sub_8139370 + def_special sub_81393C8 + def_special sub_8098574 + def_special sub_809859C + def_special InitRoamer + def_special sub_81393FC + def_special sub_81390E0 + def_special sub_80AFC60 + def_special sub_813946C + def_special sub_81394D8 + def_special sub_80E980C + def_special sub_8139530 + def_special DoSealedChamberShakingEffect1 + def_special sub_8139B60 + def_special sub_80FAC78 + def_special sub_8139540 + def_special sub_809E1C8 + def_special sub_8139560 + def_special sub_80B0A18 + def_special sub_80B0934 + def_special sub_80B0A74 + def_special sub_80B16D8 + def_special DoSealedChamberShakingEffect2 + def_special sub_8139634 + def_special sub_80AC81C + def_special sp13E_warp_to_last_warp + def_special sp13F_fall_to_last_warp + def_special sub_80F8D28 + def_special sub_80F8EB8 + def_special sub_8162794 + def_special sub_80B08EC + def_special sub_8139648 + def_special sub_8139668 + def_special sub_80F8FA0 + def_special sub_81396E0 + def_special sub_81B98DC + def_special nullsub_54 + def_special sub_80E9B70 + def_special copy_bags_and_unk_data_from_save_blocks + def_special sub_80B05B4 + def_special sub_8139754 + def_special sub_813970C + def_special sub_80C08E4 + def_special sub_8139770 + def_special sub_81397C4 + def_special sub_81653CC + def_special sub_80F9370 + def_special sub_80F8FE8 + def_special sub_81AFDD0 + def_special sub_80EDCE8 + def_special sub_80EE2CC + def_special sub_80EE72C + def_special sub_80EE7C0 + def_special nullsub_55 + def_special PutFanClubSpecialOnTheAir + def_special sub_80EED10 + def_special sub_80EED34 + def_special sub_80EB1AC + def_special sub_80EBE7C + def_special sub_80EB300 + def_special sub_80EB438 + def_special sub_80EB368 + def_special sub_80EB3D0 + def_special sub_80EB290 + def_special sub_80EB2C8 + def_special sub_80EB56C + def_special sub_80EB9E0 + def_special sub_80EBB28 + def_special sub_80EB498 + def_special sub_818D9C0 + def_special sub_818DAEC + def_special sub_818DBE8 + def_special sub_818DC2C + def_special sub_818DC60 + def_special sub_818DCC8 + def_special sub_818DD14 + def_special sub_818DD54 + def_special sub_818DD78 + def_special sub_818DE44 + def_special sub_818DE5C + def_special sub_818DEA0 + def_special sub_818DEDC + def_special sub_818E038 + def_special sub_818E06C + def_special sub_818E2D8 + def_special sub_811A858 + def_special sub_818E2FC + def_special sub_818E308 + def_special sub_818E358 + def_special sub_818E37C + def_special sub_818E298 + def_special sub_818E39C + def_special sub_818E3BC + def_special sub_818E3E0 + def_special sub_818E430 + def_special sub_818E47C + def_special sub_818E490 + def_special sub_813986C + def_special sub_818E4A4 + def_special sub_818E510 + def_special sub_818E538 + def_special sub_818E274 + def_special sub_818E3EC + def_special sub_818E8E0 + def_special sub_818E8B4 + def_special sub_818E914 + def_special sub_818E92C + def_special sub_818E940 + def_special sub_818E960 + def_special sub_818E990 + def_special PutLilycoveContestLadyShowOnTheAir + def_special sub_813B880 + def_special sub_81A085C + def_special CheckIfMultipleTrainersWantBattle + def_special AddMapNamePopUpWindowTask + def_special AddMapNamePopUpWindowTask + def_special sub_81BE994 + def_special sub_81BE79C + def_special sub_81BE7F4 + def_special sub_81398C0 + def_special sub_80093CC + def_special BerryBlenderLinkBecomeLeader + def_special BerryBlenderLinkJoinGroup + def_special UnionRoomSpecial + def_special sub_801A42C + def_special sub_8016934 + def_special sp182_move_string + def_special sub_801DC20 + def_special sub_81B8958 + def_special sub_8018090 + def_special sub_813990C + def_special sub_801B27C + def_special HasAtLeastOneBerry + def_special sub_802C920 + def_special sub_802E3C4 + def_special sub_8027A5C + def_special sub_8027AAC + def_special sub_8139980 + def_special sub_81399F4 + def_special sub_8139D98 + def_special sub_80F905C + def_special sub_800B518 + def_special sub_80F90DC + def_special sub_80F910C + def_special sub_80F9160 + def_special sub_81A4AA0 + def_special sub_81A4AE8 + def_special sub_8139F20 + def_special sub_80F9134 + def_special sub_80F9154 + def_special sub_80B3028 + def_special sub_813A128 + def_special sub_813A630 + def_special sub_813A080 + def_special sub_81C6A94 + def_special sub_81C4F24 + def_special sub_81B95E0 + def_special sub_81B9620 + def_special sub_813A76C + def_special sub_813A7B8 + def_special sub_813A958 + def_special sub_813A8FC + def_special sub_813A988 + def_special sub_813A9D0 + def_special sub_813A9A4 + def_special sub_813AA04 + def_special sub_813AA18 + def_special sub_813AA44 + def_special sub_80248B0 + def_special sub_8024918 + def_special sub_80246D4 + def_special sub_802477C + def_special sub_802488C + def_special sub_813A820 + def_special sub_813A854 + def_special sub_813B7D8 + def_special sub_81C72A4 + def_special sp106_CreateStartMenu + def_special sub_80C2E40 + def_special sub_813AC7C + def_special sub_813ADB8 + def_special sub_813ADD4 + def_special sub_81B892C + def_special sub_813AEB4 + def_special sub_813AF48 + def_special sub_813AFC8 + def_special sub_813B1D0 + def_special DoScriptedWildBattle + def_special sub_81BEB54 + def_special sub_81BEB68 + def_special sub_81BEB7C + def_special ChangeBoxPokemonNickname + def_special get_unknown_box_id + def_special sub_813B21C + def_special sub_81D1C20 + def_special sub_8175280 + def_special sub_813B2E4 + def_special sub_813B374 + def_special sub_813B490 + def_special sub_80A08CC + def_special sub_813B484 + def_special sub_81AFDA0 + def_special sub_813B4E0 + def_special ShouldDoBrailleRegicePuzzle + def_special EnableNationalPokedex + def_special sub_80E2548 + def_special sub_80E2878 + def_special TurnOnTVScreen + def_special sub_81D4A90 + def_special sub_813B514 + def_special sub_813B568 + def_special sub_813B534 + def_special sp194_trainer_tower + def_special sub_813B7D8 + def_special sub_813B80C + def_special sub_81D4BEC + def_special sub_80224D0 + def_special sub_81D99BC + def_special walda_maybe + def_special sub_81D9AC4 + def_special sub_8139ED0 + def_special sub_813B968 + def_special sub_80F8B94 + def_special sub_813C904 + def_special sub_80B4808 + def_special sub_813B9A0 + def_special sub_81B9918 + def_special sub_80722E0 + def_special sub_80B45D0 + def_special sub_813C5A0 + def_special sub_8139C10 + def_special sub_80B3BC4 From ebb2999c03e7f9291bf905d644ddc03991e4280e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 14 Oct 2017 23:37:44 +0200 Subject: [PATCH 149/182] more of battle anim done --- asm/battle_1.s | 8 +- asm/battle_anim.s | 1647 +-------------------- asm/battle_anim_80FE840.s | 34 +- asm/battle_anim_815A0D4.s | 18 +- asm/battle_anim_sound_tasks.s | 24 +- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 2 +- asm/battle_controller_player.s | 2 +- asm/battle_controller_player_partner.s | 2 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 2 +- asm/battle_controller_wally.s | 2 +- asm/contest.s | 12 +- data/battle_anims.s | 42 +- include/battle.h | 3 + include/battle_anim.h | 12 +- include/contest.h | 1 + src/battle_anim.c | 640 +++++++- 19 files changed, 736 insertions(+), 1721 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index 416fd87eca..d450df8843 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1424,8 +1424,8 @@ _0803575A: .pool thumb_func_end ApplyPlayerChosenFrameToBattleMenu - thumb_func_start load_battle_oval_graphics -load_battle_oval_graphics: @ 8035770 + thumb_func_start LoadFittingBackgroundForBattle +LoadFittingBackgroundForBattle: @ 8035770 push {r4,r5,lr} ldr r0, =gBattleTypeFlags ldr r1, [r0] @@ -1665,7 +1665,7 @@ _08035A8A: pop {r0} bx r0 .pool - thumb_func_end load_battle_oval_graphics + thumb_func_end LoadFittingBackgroundForBattle thumb_func_start LoadBattleTextboxAndBackground LoadBattleTextboxAndBackground: @ 8035AA4 @@ -1686,7 +1686,7 @@ LoadBattleTextboxAndBackground: @ 8035AA4 movs r2, 0x40 bl LoadCompressedPalette bl ApplyPlayerChosenFrameToBattleMenu - bl load_battle_oval_graphics + bl LoadFittingBackgroundForBattle pop {r0} bx r0 .pool diff --git a/asm/battle_anim.s b/asm/battle_anim.s index a35f322d42..a25ef98c66 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -5,1640 +5,7 @@ .text - - thumb_func_start sub_80A46A0 -sub_80A46A0: @ 80A46A0 - push {r4-r7,lr} - sub sp, 0x10 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x18] - ldrh r0, [r0] - bl IsSpeciesNotUnown - lsls r0, 24 - cmp r0, 0 - beq _080A4712 - mov r0, sp - bl sub_80A6B30 - ldr r6, [sp, 0x4] - movs r5, 0 - movs r0, 0x7 - mov r12, r0 - movs r7, 0 -_080A46C6: - movs r4, 0 - adds r3, r7, r6 - mov r1, r12 - lsls r0, r1, 1 - adds r2, r0, r6 -_080A46D0: - ldrh r1, [r3] - ldrh r0, [r2] - strh r0, [r3] - strh r1, [r2] - adds r3, 0x2 - subs r2, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _080A46D0 - movs r0, 0x20 - add r12, r0 - adds r7, 0x40 - adds r5, 0x1 - cmp r5, 0x7 - ble _080A46C6 - movs r5, 0 - movs r1, 0x80 - lsls r1, 3 - adds r3, r1, 0 -_080A46F6: - adds r2, r5, 0x1 - lsls r0, r5, 6 - adds r1, r0, r6 - movs r4, 0x7 -_080A46FE: - ldrh r0, [r1] - eors r0, r3 - strh r0, [r1] - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A46FE - adds r5, r2, 0 - cmp r5, 0x7 - ble _080A46F6 -_080A4712: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A46A0 - thumb_func_start sub_80A4720 -sub_80A4720: @ 80A4720 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - adds r6, r2, 0 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r3, 24 - movs r0, 0x40 - mov r12, r0 - cmp r3, 0 - bne _080A473C - movs r1, 0x20 - mov r12, r1 -_080A473C: - lsls r0, r5, 28 - lsrs r5, r0, 16 - movs r0, 0 - cmp r0, r12 - bge _080A476C - ldr r7, =0x00000fff -_080A4748: - adds r4, r0, 0x1 - lsls r0, 6 - mov r1, r8 - adds r3, r0, r1 - movs r2, 0x1F -_080A4752: - ldrh r1, [r3] - adds r0, r7, 0 - ands r0, r1 - orrs r0, r5 - adds r0, r6 - strh r0, [r3] - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080A4752 - adds r0, r4, 0 - cmp r0, r12 - blt _080A4748 -_080A476C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4720 - - thumb_func_start sub_80A477C -sub_80A477C: @ 80A477C - push {r4,lr} - sub sp, 0x10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, sp - bl sub_80A6B30 - cmp r4, 0 - beq _080A479C - bl IsContest - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080A47B8 -_080A479C: - movs r0, 0x1 - bl sub_80A6C68 - ldr r0, =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG1_Y - strh r1, [r0] - b _080A47C6 - .pool -_080A47B8: - movs r0, 0x2 - bl sub_80A6C68 - ldr r0, =gBattle_BG2_X - strh r4, [r0] - ldr r0, =gBattle_BG2_Y - strh r4, [r0] -_080A47C6: - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A477C - - thumb_func_start task_pA_ma0A_obj_to_bg_pal -@ void task_pA_ma0A_obj_to_bg_pal(int task_id) -task_pA_ma0A_obj_to_bg_pal: @ 80A47D8 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrb r4, [r5, 0x8] - ldrb r6, [r5, 0x14] - mov r0, sp - bl sub_80A6B30 - ldr r0, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x24] - ldrh r0, [r1, 0x20] - adds r2, r0 - ldrh r0, [r5, 0xA] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r2, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r2, r1 - ldrh r0, [r5, 0xC] - subs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x12 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A4870 - ldr r1, =gBattle_BG1_X - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r5, 0xE] - adds r0, r3 - strh r0, [r1] - ldr r1, =gBattle_BG1_Y - lsls r0, r2, 16 - asrs r0, 16 - ldrh r5, [r5, 0x10] - adds r0, r5 - strh r0, [r1] - lsls r0, r6, 5 - ldr r2, =gPlttBufferFaded + 0x200 - adds r0, r2 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 5 - ldr r3, =0xfffffe00 - adds r2, r3 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _080A4896 - .pool -_080A4870: - ldr r1, =gBattle_BG2_X - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r5, 0xE] - adds r0, r3 - strh r0, [r1] - ldr r1, =gBattle_BG2_Y - lsls r0, r2, 16 - asrs r0, 16 - ldrh r5, [r5, 0x10] - adds r0, r5 - strh r0, [r1] - lsls r0, r6, 5 - ldr r1, =gPlttBufferFaded + 0x200 - adds r0, r1 - subs r1, 0xE0 - ldr r2, =0x04000008 - bl CpuSet -_080A4896: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end task_pA_ma0A_obj_to_bg_pal - - thumb_func_start ma0B_0807324C -ma0B_0807324C: @ 80A48B0 - push {r4,r5,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r4, [r2, 0x1] - cmp r4, 0 - bne _080A48C8 - movs r4, 0x2 - b _080A48D2 - .pool -_080A48C8: - cmp r4, 0x1 - bne _080A48CE - movs r4, 0x3 -_080A48CE: - cmp r4, 0 - beq _080A48D6 -_080A48D2: - cmp r4, 0x2 - bne _080A48E0 -_080A48D6: - ldr r0, =gAnimBankAttacker - b _080A48E2 - .pool -_080A48E0: - ldr r0, =gAnimBankTarget -_080A48E2: - ldrb r5, [r0] - ldr r3, =gMonAnimTaskIdArray - ldrb r0, [r3] - cmp r0, 0xFF - beq _080A4908 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080A4908: - cmp r4, 0x1 - bls _080A4948 - ldrb r0, [r3, 0x1] - cmp r0, 0xFF - beq _080A4948 - ldr r3, =gSprites - ldr r2, =gBankSpriteIds - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _080A494A - .pool -_080A4948: - movs r4, 0 -_080A494A: - ldr r0, =sub_80A4980 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r5, [r1, 0xC] - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma0B_0807324C - - thumb_func_start sub_80A4980 -sub_80A4980: @ 80A4980 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080A4A0A - ldrb r0, [r1, 0xC] - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A49BC - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A49C4 -_080A49BC: - movs r4, 0 - b _080A49C6 - .pool -_080A49C4: - movs r4, 0x1 -_080A49C6: - ldr r6, =gMonAnimTaskIdArray - ldrb r0, [r6] - cmp r0, 0xFF - beq _080A49DE - adds r0, r4, 0 - bl sub_80A477C - ldrb r0, [r6] - bl DestroyTask - movs r0, 0xFF - strb r0, [r6] -_080A49DE: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - ble _080A4A04 - movs r0, 0x1 - eors r4, r0 - adds r0, r4, 0 - bl sub_80A477C - ldrb r0, [r6, 0x1] - bl DestroyTask - movs r0, 0xFF - strb r0, [r6, 0x1] -_080A4A04: - adds r0, r5, 0 - bl DestroyTask -_080A4A0A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4980 - - thumb_func_start sub_80A4A18 -sub_80A4A18: @ 80A4A18 - push {r4,r5,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r5, [r2, 0x1] - cmp r5, 0 - bne _080A4A30 - movs r5, 0x2 - b _080A4A3A - .pool -_080A4A30: - cmp r5, 0x1 - bne _080A4A36 - movs r5, 0x3 -_080A4A36: - cmp r5, 0 - beq _080A4A3E -_080A4A3A: - cmp r5, 0x2 - bne _080A4A48 -_080A4A3E: - ldr r0, =gAnimBankAttacker - b _080A4A4A - .pool -_080A4A48: - ldr r0, =gAnimBankTarget -_080A4A4A: - ldrb r4, [r0] - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4A8A - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4A76 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4A80 -_080A4A76: - movs r1, 0 - b _080A4A82 - .pool -_080A4A80: - movs r1, 0x1 -_080A4A82: - adds r0, r4, 0 - movs r2, 0 - bl sub_80A438C -_080A4A8A: - movs r0, 0x2 - eors r4, r0 - cmp r5, 0x1 - bls _080A4ACA - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4ACA - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4ABC - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4AC0 -_080A4ABC: - movs r1, 0 - b _080A4AC2 -_080A4AC0: - movs r1, 0x1 -_080A4AC2: - adds r0, r4, 0 - movs r2, 0 - bl sub_80A438C -_080A4ACA: - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4A18 - - thumb_func_start ma23_8073484 -ma23_8073484: @ 80A4ADC - push {r4-r6,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r5, [r2, 0x1] - cmp r5, 0 - bne _080A4AF4 - movs r5, 0x2 - b _080A4AFE - .pool -_080A4AF4: - cmp r5, 0x1 - bne _080A4AFA - movs r5, 0x3 -_080A4AFA: - cmp r5, 0 - beq _080A4B02 -_080A4AFE: - cmp r5, 0x2 - bne _080A4B0C -_080A4B02: - ldr r0, =gAnimBankAttacker - b _080A4B0E - .pool -_080A4B0C: - ldr r0, =gAnimBankTarget -_080A4B0E: - ldrb r6, [r0] - adds r0, r6, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4B38 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r6, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080A4B38: - cmp r5, 0x1 - bls _080A4B78 - movs r0, 0x2 - adds r4, r6, 0 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4B78 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _080A4B7A - .pool -_080A4B78: - movs r5, 0 -_080A4B7A: - ldr r0, =sub_80A4BB0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - strh r6, [r1, 0xC] - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ma23_8073484 - - thumb_func_start sub_80A4BB0 -sub_80A4BB0: @ 80A4BB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080A4C3E - ldrb r4, [r1, 0xC] - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4BEE - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4BF8 -_080A4BEE: - movs r5, 0 - b _080A4BFA - .pool -_080A4BF8: - movs r5, 0x1 -_080A4BFA: - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4C0C - adds r0, r5, 0 - bl sub_80A477C -_080A4C0C: - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - ble _080A4C38 - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4C38 - movs r0, 0x1 - eors r5, r0 - adds r0, r5, 0 - bl sub_80A477C -_080A4C38: - adds r0, r6, 0 - bl DestroyTask -_080A4C3E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4BB0 - - thumb_func_start ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument -ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument: @ 80A4C48 - push {r4,r5,lr} - ldr r2, =gBattleAnimScriptPtr - ldr r0, [r2] - adds r1, r0, 0x1 - str r1, [r2] - ldrb r5, [r0, 0x1] - adds r0, r1, 0x1 - str r0, [r2] - ldrb r4, [r1, 0x1] - lsls r4, 8 - adds r0, 0x1 - str r0, [r2] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - orrs r5, r4 - movs r0, 0x52 - adds r1, r5, 0 - bl SetGpuReg - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument - - thumb_func_start ma1E_set_BLDCNT -ma1E_set_BLDCNT: @ 80A4C80 - push {lr} - ldr r3, =gBattleAnimScriptPtr - ldr r0, [r3] - adds r2, r0, 0x1 - str r2, [r3] - ldrb r1, [r0, 0x1] - adds r0, r2, 0x1 - str r0, [r3] - ldrb r2, [r2, 0x1] - lsls r2, 8 - adds r0, 0x1 - str r0, [r3] - orrs r1, r2 - movs r0, 0x50 - bl SetGpuReg - pop {r0} - bx r0 - .pool - thumb_func_end ma1E_set_BLDCNT - - thumb_func_start ma0D_reset_BLDCNT_and_BLDALPHA -ma0D_reset_BLDCNT_and_BLDALPHA: @ 80A4CA8 - push {lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - .pool - thumb_func_end ma0D_reset_BLDCNT_and_BLDALPHA - - thumb_func_start ma0E_call -ma0E_call: @ 80A4CCC - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldr r2, =gBattleAnimScriptRetAddr - adds r0, r1, 0x5 - str r0, [r2] - ldrb r1, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma0E_call - - thumb_func_start sub_80A4D00 -sub_80A4D00: @ 80A4D00 - ldr r0, =gBattleAnimScriptPtr - ldr r1, =gBattleAnimScriptRetAddr - ldr r1, [r1] - str r1, [r0] - bx lr - .pool - thumb_func_end sub_80A4D00 - - thumb_func_start ma10_080736AC -ma10_080736AC: @ 80A4D14 - push {r4,r5,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r1, [r5] - adds r0, r1, 0x1 - str r0, [r5] - ldrb r2, [r1, 0x1] - adds r3, r0, 0x1 - str r3, [r5] - ldrb r4, [r0, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - orrs r4, r0 - adds r1, 0x4 - str r1, [r5] - ldr r0, =gBattleAnimArgs - lsls r2, 1 - adds r2, r0 - strh r4, [r2] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma10_080736AC - - thumb_func_start ma11_if_else -ma11_if_else: @ 80A4D48 - push {lr} - ldr r3, =gBattleAnimScriptPtr - ldr r2, [r3] - adds r0, r2, 0x1 - str r0, [r3] - ldr r0, =gUnknown_02038432 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4D62 - adds r0, r2, 0x5 - str r0, [r3] -_080A4D62: - ldr r2, [r3] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - pop {r0} - bx r0 - .pool - thumb_func_end ma11_if_else - - thumb_func_start ma12_cond_if -ma12_cond_if: @ 80A4D88 - push {r4,r5,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r4, [r5] - adds r2, r4, 0x1 - str r2, [r5] - ldrb r1, [r4, 0x1] - adds r3, r2, 0x1 - str r3, [r5] - ldr r0, =gUnknown_02038432 - ldrb r0, [r0] - cmp r1, r0 - bne _080A4DC0 - ldrb r1, [r2, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r5] - b _080A4DC4 - .pool -_080A4DC0: - adds r0, r4, 0x6 - str r0, [r5] -_080A4DC4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ma12_cond_if - - thumb_func_start ma13_goto -ma13_goto: @ 80A4DCC - ldr r3, =gBattleAnimScriptPtr - ldr r0, [r3] - adds r2, r0, 0x1 - str r2, [r3] - ldrb r1, [r0, 0x1] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - bx lr - .pool - thumb_func_end ma13_goto - - thumb_func_start IsContest -IsContest: @ 80A4DF0 - push {lr} - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080A4E10 - movs r0, 0 - b _080A4E12 - .pool -_080A4E10: - movs r0, 0x1 -_080A4E12: - pop {r1} - bx r1 - thumb_func_end IsContest - - thumb_func_start ma14_load_background -ma14_load_background: @ 80A4E18 - push {r4,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r2, [r1] - adds r0, r2, 0x1 - str r0, [r1] - ldrb r4, [r2, 0x1] - adds r0, 0x1 - str r0, [r1] - ldr r0, =task_p5_load_battle_screen_elements - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - ldr r1, =gUnknown_02038433 - movs r0, 0x1 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma14_load_background - - thumb_func_start sub_80A4E5C -sub_80A4E5C: @ 80A4E5C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r2, =gBattleAnimScriptPtr - ldr r1, [r2] - adds r0, r1, 0x1 - str r0, [r2] - ldrb r3, [r1, 0x1] - mov r8, r3 - ldrb r7, [r0, 0x1] - ldrb r6, [r0, 0x2] - adds r1, 0x4 - str r1, [r2] - ldr r0, =task_p5_load_battle_screen_elements - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4EA8 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x8] - b _080A4EDA - .pool -_080A4EA8: - ldr r0, =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A4ECC - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x8] - b _080A4EDA - .pool -_080A4ECC: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - mov r1, r8 - strh r1, [r0, 0x8] -_080A4EDA: - ldr r1, =gUnknown_02038433 - movs r0, 0x1 - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4E5C - - thumb_func_start task_p5_load_battle_screen_elements -task_p5_load_battle_screen_elements: @ 80A4EF4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r6, [r4, 0x1C] - movs r0, 0x1C - ldrsh r3, [r4, r0] - adds r7, r1, 0 - cmp r3, 0 - bne _080A4F2C - str r3, [sp] - movs r0, 0xE8 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginHardwarePaletteFade - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - b _080A4FBC - .pool -_080A4F2C: - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A4FBC - cmp r3, 0x1 - bne _080A4F50 - adds r0, r6, 0x1 - strh r0, [r4, 0x1C] - ldr r1, =gUnknown_02038433 - movs r0, 0x2 - strb r0, [r1] - b _080A4F94 - .pool -_080A4F50: - cmp r3, 0x2 - bne _080A4F94 - ldrh r0, [r4, 0x8] - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A4F68 - bl dp01t_11_3_message_for_player_only - b _080A4F6E -_080A4F68: - lsrs r0, r2, 16 - bl sub_80A4FC8 -_080A4F6E: - movs r0, 0x1 - str r0, [sp] - movs r0, 0xE8 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - adds r1, 0x1 - strh r1, [r0, 0x1C] - b _080A4FBC - .pool -_080A4F94: - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080A4FBC - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r7 - movs r1, 0x1C - ldrsh r0, [r0, r1] - cmp r0, 0x3 - bne _080A4FBC - adds r0, r5, 0 - bl DestroyTask - ldr r0, =gUnknown_02038433 - strb r4, [r0] -_080A4FBC: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end task_p5_load_battle_screen_elements - - thumb_func_start sub_80A4FC8 -sub_80A4FC8: @ 80A4FC8 - push {r4-r7,lr} - lsls r0, 16 - lsrs r7, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5050 - ldr r6, =gUnknown_08525D54 - lsls r4, r7, 1 - adds r4, r7 - lsls r4, 2 - adds r0, r6, 0 - adds r0, 0x8 - adds r0, r4, r0 - ldr r0, [r0] - ldr r5, =0x0201c000 - adds r1, r5, 0 - bl LZDecompressWram - bl sub_80A6D94 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - adds r1, r5, 0 - movs r3, 0 - bl sub_80A4720 - ldr r1, =0x0600d000 - ldr r0, =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, =0x84000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r4, r6 - ldr r0, [r0] - ldr r1, =0x06002000 - bl LZDecompressVram - adds r6, 0x4 - adds r4, r6 - ldr r4, [r4] - bl sub_80A6D94 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 20 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadCompressedPalette - b _080A507E - .pool -_080A5050: - ldr r5, =gUnknown_08525D54 - lsls r4, r7, 1 - adds r4, r7 - lsls r4, 2 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r4, r0 - ldr r0, [r0] - ldr r1, =0x0600d000 - bl LZDecompressVram - adds r0, r4, r5 - ldr r0, [r0] - ldr r1, =0x06008000 - bl LZDecompressVram - adds r5, 0x4 - adds r4, r5 - ldr r0, [r4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadCompressedPalette -_080A507E: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4FC8 - - thumb_func_start dp01t_11_3_message_for_player_only -dp01t_11_3_message_for_player_only: @ 80A5090 - push {lr} - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A50A2 - bl sub_80D7724 - b _080A50A6 -_080A50A2: - bl load_battle_oval_graphics -_080A50A6: - pop {r0} - bx r0 - thumb_func_end dp01t_11_3_message_for_player_only - - thumb_func_start ma15_load_battle_screen_elements -ma15_load_battle_screen_elements: @ 80A50AC - push {lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, =task_p5_load_battle_screen_elements - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, =0x0000ffff - strh r0, [r1, 0x8] - ldr r1, =gUnknown_02038433 - movs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end ma15_load_battle_screen_elements - - thumb_func_start ma16_wait_for_battle_screen_elements_s2 -ma16_wait_for_battle_screen_elements_s2: @ 80A50F0 - push {lr} - ldr r0, =gUnknown_02038433 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080A5114 - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, =gAnimFramesToWait - movs r0, 0 - b _080A5118 - .pool -_080A5114: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 -_080A5118: - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end ma16_wait_for_battle_screen_elements_s2 - - thumb_func_start sub_80A5124 -sub_80A5124: @ 80A5124 - push {lr} - ldr r0, =gUnknown_02038433 - ldrb r2, [r0] - cmp r2, 0 - bne _080A5148 - ldr r0, =gBattleAnimScriptPtr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, =gAnimFramesToWait - strb r2, [r0] - b _080A514E - .pool -_080A5148: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] -_080A514E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A5124 - - thumb_func_start ma18_load_background_probably -ma18_load_background_probably: @ 80A5158 - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r0, r1, 0x1 - str r0, [r4] - ldrb r0, [r1, 0x1] - bl sub_80A4FC8 - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma18_load_background_probably - - thumb_func_start BattleAnimGetPanControl -BattleAnimGetPanControl: @ 80A5178 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A51C0 - ldr r0, =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, =gAnimBankAttacker - ldrb r2, [r0] - ldr r1, [r1, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A51C0 - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - movs r4, 0xC0 - cmp r0, 0 - beq _080A5252 - movs r4, 0x3F - b _080A5252 - .pool -_080A51C0: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A51E8 - ldr r0, =gAnimBankAttacker - ldr r1, =gAnimBankTarget - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _080A524C - cmp r0, 0x2 - bne _080A524C - cmp r4, 0x3F - beq _080A525E - b _080A524C - .pool -_080A51E8: - ldr r0, =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A5226 - ldr r0, =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A5252 - lsls r0, r4, 24 - asrs r1, r0, 24 - cmp r1, 0x3F - bne _080A5218 - movs r4, 0xC0 - b _080A5252 - .pool -_080A5218: - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - beq _080A5252 - negs r0, r1 - lsls r0, 24 - b _080A5250 -_080A5226: - ldr r0, =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A524C - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x40 - negs r1, r1 - cmp r0, r1 - bne _080A5252 - movs r4, 0x3F - b _080A5252 - .pool -_080A524C: - lsls r0, r4, 24 - negs r0, r0 -_080A5250: - lsrs r4, r0, 24 -_080A5252: - lsls r0, r4, 24 - asrs r0, 24 - cmp r0, 0x3F - ble _080A525E - movs r4, 0x3F - b _080A526C -_080A525E: - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x40 - negs r1, r1 - cmp r0, r1 - bge _080A526C - movs r4, 0xC0 -_080A526C: - lsls r0, r4, 24 - asrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BattleAnimGetPanControl - - thumb_func_start sub_80A5278 -sub_80A5278: @ 80A5278 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A52C0 - ldr r0, =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, =gAnimBankAttacker - ldrb r2, [r0] - ldr r1, [r1, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A52C0 - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - movs r4, 0xC0 - cmp r0, 0 - beq _080A52DE - movs r4, 0x3F - b _080A52DE - .pool -_080A52C0: - ldr r0, =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A52D8 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A52DE -_080A52D8: - lsls r0, r4, 24 - negs r0, r0 - lsrs r4, r0, 24 -_080A52DE: - lsls r0, r4, 24 - asrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A5278 - - thumb_func_start sub_80A52EC -sub_80A52EC: @ 80A52EC - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - asrs r2, r0, 16 - cmp r2, 0x3F - ble _080A52FC - movs r1, 0x3F - b _080A5306 -_080A52FC: - movs r0, 0x40 - negs r0, r0 - cmp r2, r0 - bge _080A5306 - ldr r1, =0x0000ffc0 -_080A5306: - lsls r0, r1, 16 - asrs r0, 16 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A52EC - - thumb_func_start sub_80A5314 -sub_80A5314: @ 80A5314 - push {lr} - lsls r2, 16 - lsrs r2, 16 - adds r3, r2, 0 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - cmp r0, r1 - bge _080A5332 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A5342 - b _080A5340 -_080A5332: - cmp r0, r1 - ble _080A5348 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A5340 - negs r0, r0 -_080A5340: - negs r0, r0 -_080A5342: - lsls r0, 16 - lsrs r0, 16 - b _080A534A -_080A5348: - movs r0, 0 -_080A534A: - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80A5314 - - thumb_func_start ma19_08073BC8 -ma19_08073BC8: @ 80A5354 - push {r4,r5,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r0, [r5] - adds r1, r0, 0x1 - str r1, [r5] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - adds r0, r4, 0 - bl PlaySE12WithPanning - ldr r0, [r5] - adds r0, 0x3 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma19_08073BC8 - - thumb_func_start ma1A_8073C00 -ma1A_8073C00: @ 80A538C - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r0, r1, 0x1 - str r0, [r4] - movs r0, 0x1 - ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl - lsls r0, 24 - asrs r0, 24 - bl SE12PanpotControl - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma1A_8073C00 thumb_func_start ma1B_8073C2C ma1B_8073C2C: @ 80A53B8 @@ -1665,14 +32,14 @@ ma1B_8073C2C: @ 80A53B8 ldrb r7, [r1, 0x5] movs r0, 0x2 ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning mov r8, r0 lsls r5, 24 asrs r5, 24 @@ -1898,14 +265,14 @@ sub_80A559C: @ 80A559C ldrb r7, [r1, 0x5] movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -1914,7 +281,7 @@ sub_80A559C: @ 80A559C asrs r1, 24 mov r8, r1 mov r0, r8 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1980,7 +347,7 @@ ma1C_8073ED0: @ 80A565C mov r9, r2 movs r0, 0x2 ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -2085,7 +452,7 @@ ma1D_08073FB4: @ 80A5740 mov r8, r0 movs r0, 0x2 ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 318f8061ce..1556523e20 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -2640,7 +2640,7 @@ _080FFD56: cmp r0, 0 bne _080FFD8A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -2658,7 +2658,7 @@ _080FFD8A: str r0, [r4, 0x1C] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -5778,7 +5778,7 @@ _08101604: adds r0, r1 strh r0, [r5, 0x38] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -5975,7 +5975,7 @@ _081017A4: movs r2, 0x4 bl LoadPalette movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -7213,7 +7213,7 @@ sub_810217C: @ 810217C strh r5, [r4, 0x34] strh r5, [r4, 0x36] subs r0, 0x42 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x38] @@ -10604,7 +10604,7 @@ _08103C90: strh r0, [r4, 0xA] movs r0, 0x3F negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -11235,7 +11235,7 @@ sub_810421C: @ 810421C push {r4,lr} adds r4, r0, 0 movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -12986,7 +12986,7 @@ sub_810501C: @ 810501C adds r0, 0x2 strh r0, [r4, 0x38] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x3A] @@ -25228,12 +25228,12 @@ _0810B2DC: movs r0, 0xC strh r0, [r5, 0x1E] subs r0, 0x4C - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x20] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x22] @@ -29951,7 +29951,7 @@ sub_810D984: @ 810D984 strh r0, [r5, 0x34] ldrh r0, [r1, 0x4] strh r0, [r5, 0x36] - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn ldrb r6, [r0] ldrb r0, [r4] bl GetBankSide @@ -35110,7 +35110,7 @@ _081102B8: beq _08110360 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -36713,13 +36713,13 @@ _0811101E: strh r4, [r6, 0x16] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 asrs r4, 8 lsrs r4, 16 movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 strh r4, [r6, 0x22] asrs r0, 24 @@ -43629,7 +43629,7 @@ sub_8114960: @ 8114960 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, =gUnknown_02038432 + ldr r2, =gAnimMoveTurn ldrb r0, [r2] cmp r0, 0x1 bhi _08114974 @@ -48614,7 +48614,7 @@ _08117280: bne _081172CC movs r0, 0x40 negs r0, r0 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -48625,7 +48625,7 @@ _08117280: _081172CC: movs r0, 0x40 negs r0, r0 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 55c7037cdd..45f207eb9c 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -1349,7 +1349,7 @@ sub_815AB5C: @ 815AB5C bne _0815ABBA movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -2004,7 +2004,7 @@ _0815B0BC: lsrs r4, r0, 24 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -3551,7 +3551,7 @@ _0815BD8E: strh r0, [r1, 0x8] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10271,7 +10271,7 @@ _0815F3CE: bne _0815F482 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10341,7 +10341,7 @@ _0815F460: bne _0815F482 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10431,7 +10431,7 @@ _0815F520: cmp r0, 0 blt _0815F61A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10460,7 +10460,7 @@ _0815F544: cmp r1, 0x7F ble _0815F61A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10502,7 +10502,7 @@ _0815F5B4: cmp r0, 0x8 ble _0815F61A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -11557,7 +11557,7 @@ _0815FE92: cmp r1, r0 bne _0815FF2C movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s index 27b7a80138..817e64b076 100644 --- a/asm/battle_anim_sound_tasks.s +++ b/asm/battle_anim_sound_tasks.s @@ -22,12 +22,12 @@ sub_8158B30: @ 8158B30 strh r0, [r6, 0xA] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r4, 24 asrs r4, 24 @@ -128,7 +128,7 @@ sub_8158C04: @ 8158C04 movs r0, 0 strh r0, [r4, 0x1C] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 ldrh r0, [r4, 0xA] lsls r1, 24 @@ -175,14 +175,14 @@ mas_80DCF38: @ 8158C58 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r5, 0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r4, 24 asrs r4, 24 @@ -307,7 +307,7 @@ sub_8158D8C: @ 8158D8C movs r4, 0 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 lsrs r6, r0, 24 bl IsContest @@ -432,7 +432,7 @@ sub_8158E9C: @ 8158E9C movs r4, 0 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 lsrs r5, r0, 24 bl IsContest @@ -691,7 +691,7 @@ sub_81590B8: @ 81590B8 strh r1, [r0, 0x1C] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 lsrs r5, r0, 24 bl IsContest @@ -849,7 +849,7 @@ sub_8159210: @ 8159210 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -874,7 +874,7 @@ sub_8159244: @ 8159244 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -906,14 +906,14 @@ sub_8159278: @ 8159278 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r5, 0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r4, 24 asrs r4, 24 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 85794d9e8a..ddc506b8cf 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -4721,7 +4721,7 @@ _08066D32: ldrb r0, [r0] lsls r0, 8 orrs r6, r0 - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn mov r8, r0 mov r0, r12 adds r0, 0x3 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 954abc7790..acbc40a76b 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4030,7 +4030,7 @@ _0814D2CE: ldrb r0, [r0] lsls r0, 8 orrs r6, r0 - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn mov r8, r0 mov r0, r12 adds r0, 0x3 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index c32ba8938b..aef7dd7ec8 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -4871,7 +4871,7 @@ _08061C8A: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index a4dcf0a529..aaf4ec9bac 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -8134,7 +8134,7 @@ _0805BCBE: ldrb r0, [r0] lsls r0, 8 orrs r6, r0 - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn mov r8, r0 mov r0, r12 adds r0, 0x3 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 8da3eac546..90ceaf291f 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4652,7 +4652,7 @@ _081BD7A2: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index b52aafcea3..bdfe7e721f 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4408,7 +4408,7 @@ _08188BE6: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 6b2710b8e5..9a1c7b9f97 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4508,7 +4508,7 @@ _0818C192: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 2a45ccb3ef..cf059a5baa 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3316,7 +3316,7 @@ sub_816A144: @ 816A144 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/contest.s b/asm/contest.s index 51dc801765..480a5a6644 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -76,8 +76,8 @@ sub_80D7678: @ 80D7678 .pool thumb_func_end sub_80D7678 - thumb_func_start sub_80D7724 -sub_80D7724: @ 80D7724 + thumb_func_start LoadContestBgAfterMoveAnim +LoadContestBgAfterMoveAnim: @ 80D7724 push {r4,r5,lr} ldr r0, =gUnknown_08C17AB0 movs r1, 0xC0 @@ -119,7 +119,7 @@ _080D775E: pop {r0} bx r0 .pool - thumb_func_end sub_80D7724 + thumb_func_end LoadContestBgAfterMoveAnim thumb_func_start sub_80D779C sub_80D779C: @ 80D779C @@ -13662,7 +13662,7 @@ _080DE8FA: cmp r0, 0x7 bne _080DE99C _080DE910: - ldr r1, =gUnknown_02038432 + ldr r1, =gAnimMoveTurn movs r0, 0 b _080DE9A0 .pool @@ -13715,12 +13715,12 @@ _080DE978: bne _080DE99C movs r0, 0x2 strb r0, [r2] - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn strb r1, [r0] b _080DE9A2 .pool _080DE99C: - ldr r1, =gUnknown_02038432 + ldr r1, =gAnimMoveTurn movs r0, 0x1 _080DE9A0: strb r0, [r1] diff --git a/data/battle_anims.s b/data/battle_anims.s index 5cbdee7cfb..39d5df0063 100644 --- a/data/battle_anims.s +++ b/data/battle_anims.s @@ -902,7 +902,7 @@ gUnknown_08525CB4:: @ 8525CB4 obj_pal 0x08c1bf5c, 0x2830 .align 2 -gUnknown_08525D54:: @ 8525D54 +gBattleAnimBackgroundTable:: @ 8525D54 .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c .4byte 0x08d90074, 0x08d90d3c, 0x08d90d58 @@ -944,33 +944,33 @@ sScriptCmdTable:: @ 8525E98 .4byte ScriptCmd_end .4byte ScriptCmd_playse .4byte ScriptCmd_monbg - .4byte ma0B_0807324C - .4byte ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument - .4byte ma0D_reset_BLDCNT_and_BLDALPHA - .4byte ma0E_call - .4byte sub_80A4D00 - .4byte ma10_080736AC - .4byte ma11_if_else - .4byte ma12_cond_if - .4byte ma13_goto - .4byte ma14_load_background - .4byte ma15_load_battle_screen_elements - .4byte ma16_wait_for_battle_screen_elements_s2 - .4byte sub_80A5124 - .4byte ma18_load_background_probably - .4byte ma19_08073BC8 - .4byte ma1A_8073C00 + .4byte ScriptCmd_clearmonbg + .4byte ScriptCmd_setalpha + .4byte ScriptCmd_blendoff + .4byte ScriptCmd_call + .4byte ScriptCmd_return + .4byte ScriptCmd_setarg + .4byte ScriptCmd_choosetwoturnanim + .4byte ScriptCmd_jumpifmoveturn + .4byte ScriptCmd_jump + .4byte ScriptCmd_fadetobg + .4byte ScriptCmd_restorebg + .4byte ScriptCmd_waitbgfadeout + .4byte ScriptCmd_waitbgfadein + .4byte ScriptCmd_changebg + .4byte ScriptCmd_playsewithpan + .4byte ScriptCmd_setpan .4byte ma1B_8073C2C .4byte ma1C_8073ED0 .4byte ma1D_08073FB4 - .4byte ma1E_set_BLDCNT + .4byte ScriptCmd_setbldcnt .4byte sub_80A57F8 .4byte ma20_wait_for_something .4byte ma21_08074164 - .4byte sub_80A4A18 - .4byte ma23_8073484 + .4byte ScriptCmd_monbg_22 + .4byte ScriptCmd_clearmonbg_23 .4byte sub_80A5944 - .4byte sub_80A4E5C + .4byte ScriptCmd_fadetobgfromset .4byte sub_80A5508 .4byte sub_80A559C .4byte sub_80A5984 diff --git a/include/battle.h b/include/battle.h index f00b7f9abf..a9243182ee 100644 --- a/include/battle.h +++ b/include/battle.h @@ -826,6 +826,7 @@ void LoadBattleTextboxAndBackground(void); void LoadBattleEntryBackground(void); void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); +void LoadFittingBackgroundForBattle(void); void task00_0800F6FC(u8 taskId); // battle_5 @@ -890,6 +891,8 @@ struct BattleHealthboxInfo u8 flag_x1 : 1; u8 flag_x2 : 1; u8 flag_x4 : 1; + u8 flag_x8 : 1; + u8 flag_x10 : 1; u8 field_1; u8 field_2; u8 field_3; diff --git a/include/battle_anim.h b/include/battle_anim.h index 8ba25f9c53..86eb20aec9 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -30,6 +30,13 @@ struct UnknownAnimStruct2 u16 unkC; }; +struct BattleAnimBackground +{ + void *image; + void *palette; + void *tilemap; +}; + void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -38,8 +45,11 @@ void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); bool8 IsAnimBankSpriteVisible(u8 bank); void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); - bool8 IsContest(void); +s8 BattleAnimAdjustPanning(s8 pan); +s8 BattleAnimAdjustPanning2(s8 pan); +s16 sub_80A52EC(s16 a); +s16 sub_80A5314(s16 a, s16 b, s16 c); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); diff --git a/include/contest.h b/include/contest.h index 7635e7358a..7dcde7da2b 100644 --- a/include/contest.h +++ b/include/contest.h @@ -36,5 +36,6 @@ struct ContestResources extern struct ContestResources *gContestResources; bool8 IsSpeciesNotUnown(u16 species); +void LoadContestBgAfterMoveAnim(void); #endif //GUARD_CONTEST_H diff --git a/src/battle_anim.c b/src/battle_anim.c index 6c316157f4..7a2b7902ca 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -13,13 +13,18 @@ #include "bg.h" #include "gpu_regs.h" #include "palette.h" +#include "main.h" // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) ((i - 10000)) + #define SCRIPT_READ_32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) -#define SCRIPT_READ_32_(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) #define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define SCRIPT_READ_PTR(ptr) ((const u8*)(SCRIPT_READ_32(ptr))) + #define SCRIPT_READ_16_(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define SCRIPT_READ_32_(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define SCRIPT_READ_PTR_(ptr) ((const u8*)(SCRIPT_READ_32_(ptr))) #define ANIM_SPRITE_INDEX_COUNT 8 #define ANIM_ARGS_COUNT 8 @@ -56,7 +61,7 @@ EWRAM_DATA u16 gWeatherMoveAnim = 0; EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0}; EWRAM_DATA u16 gSoundAnimFramesToWait = 0; EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; -EWRAM_DATA u8 gUnknown_02038432 = 0; +EWRAM_DATA u8 gAnimMoveTurn = 0; EWRAM_DATA u8 gUnknown_02038433 = 0; EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. EWRAM_DATA u8 gAnimBankAttacker = 0; @@ -69,6 +74,7 @@ extern const u16 gUnknown_082C8D64[]; extern const u8 * const gBattleAnims_Moves[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; extern void sub_80A8278(void); // rom_80A5C6C.s extern void sub_80A6B30(struct UnknownAnimStruct2*); // rom_80A5C6C.s @@ -76,11 +82,18 @@ extern void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); // rom_80A5C6C.s extern u8 sub_80A82E4(u8 bank); // rom_80A5C6C.s extern u8 sub_80A5C6C(u8 bank, u8 attributeId); // rom_80A5C6C.s extern bool8 AnimBankSpriteExists(u8 bank); // rom_80A5C6C.s +extern void sub_80A6C68(u8 arg0); // rom_80A5C6C.s +extern u8 sub_80A6D94(void); // this file's functions void RunAnimScriptCommand(void); void task_pA_ma0A_obj_to_bg_pal(u8 taskId); void sub_80A46A0(void); +void sub_80A4980(u8 taskId); +void sub_80A4BB0(u8 taskId); +void Task_FadeToBg(u8 taskId); +void LoadDefaultBg(void); +void LoadMoveBg(u16 bgId); void ClearBattleAnimationVars(void) { @@ -105,7 +118,7 @@ void ClearBattleAnimationVars(void) gMonAnimTaskIdArray[0] = 0xFF; gMonAnimTaskIdArray[1] = 0xFF; - gUnknown_02038432 = 0; + gAnimMoveTurn = 0; gUnknown_02038433 = 0; gAnimMoveIndex = 0; gAnimBankAttacker = 0; @@ -648,3 +661,624 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible) } } +/*static*/ void sub_80A46A0(void) +{ + s32 i, j; + struct UnknownAnimStruct2 unknownStruct; + u16 *ptr; + + if (IsSpeciesNotUnown(gContestResources->field_18->field_0)) + { + sub_80A6B30(&unknownStruct); + ptr = unknownStruct.unk4; + for (i = 0; i < 8; i++) + { + for (j = 0; j < 4; j++) + { + u16 temp = ptr[j + i * 32]; + + ptr[j + i * 32] = ptr[7 - j + i * 32]; + ptr[7 - j + i * 32] = temp; + } + } + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + ptr[j + i * 32] ^= 0x400; + } + } +} + +void sub_80A4720(u16 a, u16 *b, u32 c, u8 d) +{ + s32 i, j; + s32 var; + + if (d == 0) + var = 32; + else + var = 64; + a <<= 12; + for (i = 0; i < var; i++) + { + for (j = 0; j < 32; j++) + b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c; + } +} + +void sub_80A477C(bool8 to_BG2) +{ + struct UnknownAnimStruct2 unknownStruct; + sub_80A6B30(&unknownStruct); + + if (!to_BG2 || IsContest()) + { + sub_80A6C68(1); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + else + { + sub_80A6C68(2); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + } +} + +/*static*/ void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +{ + u8 r4; + u8 r6; + s16 r3; + s16 r2; + struct UnknownAnimStruct2 unknownStruct; + + r4 = gTasks[taskId].data[0]; + r6 = gTasks[taskId].data[6]; + sub_80A6B30(&unknownStruct); + r3 = gTasks[taskId].data[1] - (gSprites[r4].pos1.x + gSprites[r4].pos2.x); + r2 = gTasks[taskId].data[2] - (gSprites[r4].pos1.y + gSprites[r4].pos2.y); + + if (gTasks[taskId].data[5] == 0) + { + u16 *src; + u16 *dst; + + gBattle_BG1_X = r3 + gTasks[taskId].data[3]; + gBattle_BG1_Y = r2 + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + r6 * 16; + dst = gPlttBufferFaded + 0x100 + unknownStruct.unk8 * 16 - 256; + CpuCopy32(src, dst, 0x20); + } + else + { + u16 *src; + u16 *dst; + + gBattle_BG2_X = r3 + gTasks[taskId].data[3]; + gBattle_BG2_Y = r2 + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + r6 * 16; + dst = gPlttBufferFaded + 0x100 - 112; + CpuCopy32(src, dst, 0x20); + } +} + +/*static*/ void ScriptCmd_clearmonbg(void) +{ + u8 animBankId; + u8 bank; + u8 taskId; + + gBattleAnimScriptPtr++; + animBankId = gBattleAnimScriptPtr[0]; + + if (animBankId == ANIM_BANK_ATTACKER) + animBankId = ANIM_BANK_ATK_PARTNER; + else if (animBankId == ANIM_BANK_TARGET) + animBankId = ANIM_BANK_DEF_PARTNER; + + if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (gMonAnimTaskIdArray[0] != 0xFF) + gSprites[gBankSpriteIds[bank]].invisible = 0; + if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF) + gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0; + else + animBankId = 0; + + taskId = CreateTask(sub_80A4980, 5); + gTasks[taskId].data[0] = animBankId; + gTasks[taskId].data[2] = bank; + + gBattleAnimScriptPtr++; +} + +/*static*/ void sub_80A4980(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + u8 to_BG2; + u8 identity = GetBankIdentity(gTasks[taskId].data[2]); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + to_BG2 = FALSE; + else + to_BG2 = TRUE; + + if (gMonAnimTaskIdArray[0] != 0xFF) + { + sub_80A477C(to_BG2); + DestroyTask(gMonAnimTaskIdArray[0]); + gMonAnimTaskIdArray[0] = 0xFF; + } + if (gTasks[taskId].data[0] > 1) + { + sub_80A477C(to_BG2 ^ 1); + DestroyTask(gMonAnimTaskIdArray[1]); + gMonAnimTaskIdArray[1] = 0xFF; + } + DestroyTask(taskId); + } +} + +/*static*/ void ScriptCmd_monbg_22(void) +{ + bool8 toBG_2; + u8 bank; + u8 animBankId; + + gBattleAnimScriptPtr++; + + animBankId = gBattleAnimScriptPtr[0]; + + if (animBankId == ANIM_BANK_ATTACKER) + animBankId = ANIM_BANK_ATK_PARTNER; + else if (animBankId == ANIM_BANK_TARGET) + animBankId = ANIM_BANK_DEF_PARTNER; + + if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (IsAnimBankSpriteVisible(bank)) + { + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + sub_80A438C(bank, toBG_2, FALSE); + } + + bank ^= BIT_MON; + if (animBankId > 1 && IsAnimBankSpriteVisible(bank)) + { + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + sub_80A438C(bank, toBG_2, FALSE); + } + + gBattleAnimScriptPtr++; +} + +/*static*/ void ScriptCmd_clearmonbg_23(void) +{ + u8 animBankId; + u8 bank; + u8 taskId; + + gBattleAnimScriptPtr++; + animBankId = gBattleAnimScriptPtr[0]; + + if (animBankId == ANIM_BANK_ATTACKER) + animBankId = ANIM_BANK_ATK_PARTNER; + else if (animBankId == ANIM_BANK_TARGET) + animBankId = ANIM_BANK_DEF_PARTNER; + + if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (IsAnimBankSpriteVisible(bank)) + gSprites[gBankSpriteIds[bank]].invisible = 0; + if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON)) + gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0; + else + animBankId = 0; + + taskId = CreateTask(sub_80A4BB0, 5); + gTasks[taskId].data[0] = animBankId; + gTasks[taskId].data[2] = bank; + + gBattleAnimScriptPtr++; +} + +/*static*/ void sub_80A4BB0(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + bool8 toBG_2; + u8 bank = gTasks[taskId].data[2]; + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + if (IsAnimBankSpriteVisible(bank)) + sub_80A477C(toBG_2); + if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON)) + sub_80A477C(toBG_2 ^ 1); + + DestroyTask(taskId); + } +} + +#undef t1_MONBG_BANK +#undef t1_MON_IN_BG2 +#undef t1_CREATE_ANOTHER_TASK +#undef t1_IS_SECONDMON_BG + +#undef t2_BANK_SPRITE_ID +#undef t2_MON_IN_BG2 +#undef t2_MONBG_BANK + +/*static*/ void ScriptCmd_setalpha(void) +{ + u16 half1, half2; + + gBattleAnimScriptPtr++; + half1 = *(gBattleAnimScriptPtr++); + half2 = *(gBattleAnimScriptPtr++) << 8; + SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40); + SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2); +} + +/*static*/ void ScriptCmd_setbldcnt(void) +{ + u16 half1, half2; + + gBattleAnimScriptPtr++; + half1 = *(gBattleAnimScriptPtr++); + half2 = *(gBattleAnimScriptPtr++) << 8; + SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2); +} + +/*static*/ void ScriptCmd_blendoff(void) +{ + gBattleAnimScriptPtr++; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); +} + +/*static*/ void ScriptCmd_call(void) +{ + gBattleAnimScriptPtr++; + gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4; + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); +} + +/*static*/ void ScriptCmd_return(void) +{ + gBattleAnimScriptPtr = gBattleAnimScriptRetAddr; +} + +/*static*/ void ScriptCmd_setarg(void) +{ + const u8 *addr = gBattleAnimScriptPtr; + u16 value; + u8 argId; + + gBattleAnimScriptPtr++; + argId = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + value = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = addr + 4; + gBattleAnimArgs[argId] = value; +} + +/*static*/ void ScriptCmd_choosetwoturnanim(void) +{ + gBattleAnimScriptPtr++; + if (gAnimMoveTurn & 1) + gBattleAnimScriptPtr += 4; + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); +} + +/*static*/ void ScriptCmd_jumpifmoveturn(void) +{ + u8 toCheck; + gBattleAnimScriptPtr++; + toCheck = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + + if (toCheck == gAnimMoveTurn) + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); + else + gBattleAnimScriptPtr += 4; +} + +/*static*/ void ScriptCmd_jump(void) +{ + gBattleAnimScriptPtr++; + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); +} + +// Uses of this function that rely on a TRUE return are expecting inBattle to not be ticked as defined in contest behavior. As a result, if misused, this function cannot reliably discern between field and contest status and could result in undefined behavior. +bool8 IsContest(void) +{ + if (!gMain.inBattle) + return TRUE; + else + return FALSE; +} + +#define tBackgroundId data[0] +#define tState data[10] + +/*static*/ void ScriptCmd_fadetobg(void) +{ + u8 backgroundId; + u8 taskId; + + gBattleAnimScriptPtr++; + backgroundId = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + taskId = CreateTask(Task_FadeToBg, 5); + gTasks[taskId].tBackgroundId = backgroundId; + gUnknown_02038433 = 1; +} + +/*static*/ void ScriptCmd_fadetobgfromset(void) +{ + u8 bg1, bg2, bg3; + u8 taskId; + + gBattleAnimScriptPtr++; + bg1 = gBattleAnimScriptPtr[0]; + bg2 = gBattleAnimScriptPtr[1]; + bg3 = gBattleAnimScriptPtr[2]; + gBattleAnimScriptPtr += 3; + taskId = CreateTask(Task_FadeToBg, 5); + + if (IsContest()) + gTasks[taskId].tBackgroundId = bg3; + else if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + gTasks[taskId].tBackgroundId = bg2; + else + gTasks[taskId].tBackgroundId = bg1; + + gUnknown_02038433 = 1; +} + +/*static*/ void Task_FadeToBg(u8 taskId) +{ + if (gTasks[taskId].tState == 0) + { + BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0); + gTasks[taskId].tState++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].tState == 1) + { + gTasks[taskId].tState++; + gUnknown_02038433 = 2; + } + else if (gTasks[taskId].tState == 2) + { + s16 bgId = (u16)gTasks[taskId].tBackgroundId; + + if (bgId == -1) + LoadDefaultBg(); + else + LoadMoveBg(bgId); + + BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1); + gTasks[taskId].tState++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].tState == 3) + { + DestroyTask(taskId); + gUnknown_02038433 = 0; + } +} + +extern u8 gDecompressionBuffer[]; + +/*static*/ void LoadMoveBg(u16 bgId) +{ + if (IsContest()) + { + void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; + void *dmaSrc; + void *dmaDest; + + LZDecompressWram(tilemap, gDecompressionBuffer); + sub_80A4720(sub_80A6D94(), (void*)(gDecompressionBuffer), 0x100, 0); + dmaSrc = gDecompressionBuffer; + dmaDest = (void *)(VRAM + 0xD000); + DmaCopy32(3, dmaSrc, dmaDest, 0x800); + LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80A6D94() * 16, 32); + } + else + { + LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000)); + LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000)); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32); + } +} + +/*static*/ void LoadDefaultBg(void) +{ + if (IsContest()) + LoadContestBgAfterMoveAnim(); + else + LoadFittingBackgroundForBattle(); +} + +/*static*/ void ScriptCmd_restorebg(void) +{ + u8 taskId; + + gBattleAnimScriptPtr++; + taskId = CreateTask(Task_FadeToBg, 5); + gTasks[taskId].data[0] = 0xFFFF; + gUnknown_02038433 = 1; +} + +/*static*/ void ScriptCmd_waitbgfadeout(void) +{ + if (gUnknown_02038433 == 2) + { + gBattleAnimScriptPtr++; + gAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait = 1; + } +} + +/*static*/ void ScriptCmd_waitbgfadein(void) +{ + if (gUnknown_02038433 == 0) + { + gBattleAnimScriptPtr++; + gAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait = 1; + } +} + +/*static*/ void ScriptCmd_changebg(void) +{ + gBattleAnimScriptPtr++; + LoadMoveBg(gBattleAnimScriptPtr[0]); + gBattleAnimScriptPtr++; +} + +s8 BattleAnimAdjustPanning(s8 pan) +{ + if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + pan = 63; + else + pan = -64; + } + else if (IsContest()) + { + if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != 63) + pan *= -1; + } + else if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) + { + if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + { + if (pan == 63) + pan = -64; + else if (pan != -64) + pan *= -1; + } + } + else if (GetBankSide(gAnimBankTarget) == SIDE_OPPONENT) + { + if (pan == -64) + pan = 63; + } + else + { + pan *= -1; + } + + if (pan > 63) + pan = 63; + else if (pan < -64) + pan = -64; + + return pan; +} + +s8 BattleAnimAdjustPanning2(s8 pan) +{ + if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + pan = 63; + else + pan = -64; + } + else + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER || IsContest()) + pan = -pan; + } + return pan; +} + +s16 sub_80A52EC(s16 a) +{ + s16 var = a; + + if (var > 63) + var = 63; + else if (var < -64) + var = -64; + + return var; +} + +s16 sub_80A5314(s16 a, s16 b, s16 c) +{ + u16 var; + + if (a < b) + var = ((c < 0) ? -c : c); + else if (a > b) + var = -((c < 0) ? -c : c); + else + var = 0; + + return var; +} + +/*static*/ void ScriptCmd_playsewithpan(void) +{ + u16 songId; + s8 pan; + + gBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(gBattleAnimScriptPtr); + pan = gBattleAnimScriptPtr[2]; + PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan)); + gBattleAnimScriptPtr += 3; +} + +/*static*/ void ScriptCmd_setpan(void) +{ + s8 pan; + + gBattleAnimScriptPtr++; + pan = gBattleAnimScriptPtr[0]; + SE12PanpotControl(BattleAnimAdjustPanning(pan)); + gBattleAnimScriptPtr++; +} From dd0f19476c3a15514e3d08855cee3266fdbdf2ed Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 15 Oct 2017 23:21:59 +0200 Subject: [PATCH 150/182] battle anim file is decompiled --- asm/battle_anim.s | 1065 --------------------------------- asm/battle_anim_80A9C70.s | 4 +- asm/battle_anim_80FE840.s | 38 +- asm/battle_anim_815A0D4.s | 10 +- asm/battle_anim_8170478.s | 10 +- asm/battle_anim_sound_tasks.s | 6 +- asm/intro.s | 4 +- asm/rom_80A5C6C.s | 8 +- data/battle_anims.s | 126 ---- data/rom_8525F58.s | 57 ++ include/battle_anim.h | 20 +- ld_script.txt | 3 +- src/battle_anim.c | 1018 ++++++++++++++++++++++++------- 13 files changed, 911 insertions(+), 1458 deletions(-) delete mode 100644 asm/battle_anim.s create mode 100644 data/rom_8525F58.s diff --git a/asm/battle_anim.s b/asm/battle_anim.s deleted file mode 100644 index a25ef98c66..0000000000 --- a/asm/battle_anim.s +++ /dev/null @@ -1,1065 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - thumb_func_start ma1B_8073C2C -ma1B_8073C2C: @ 80A53B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleAnimScriptPtr - mov r10, r0 - ldr r0, [r0] - adds r1, r0, 0x1 - mov r2, r10 - str r1, [r2] - ldrb r0, [r0, 0x1] - mov r9, r0 - ldrb r0, [r1, 0x1] - lsls r0, 8 - mov r2, r9 - orrs r2, r0 - mov r9, r2 - ldrb r4, [r1, 0x3] - ldrb r6, [r1, 0x4] - ldrb r7, [r1, 0x5] - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl BattleAnimAdjustPanning - mov r8, r0 - lsls r5, 24 - asrs r5, 24 - mov r0, r8 - lsls r0, 24 - asrs r0, 24 - mov r8, r0 - lsls r6, 24 - asrs r6, 24 - adds r0, r5, 0 - mov r1, r8 - adds r2, r6, 0 - bl sub_80A5314 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =c3_08073CEC - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - mov r2, r8 - strh r2, [r1, 0xA] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xC] - strh r7, [r1, 0xE] - strh r5, [r1, 0x10] - mov r0, r9 - adds r1, r5, 0 - bl PlaySE12WithPanning - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r1, r10 - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ma1B_8073C2C - - thumb_func_start c3_08073CEC -c3_08073CEC: @ 80A5478 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x18] - adds r1, r0, 0x1 - strh r1, [r2, 0x18] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xE - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080A54FC - strh r7, [r2, 0x18] - ldrh r6, [r2, 0x8] - ldrh r3, [r2, 0xA] - movs r4, 0x10 - ldrsh r0, [r2, r4] - movs r4, 0xC - ldrsh r1, [r2, r4] - adds r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - strh r4, [r2, 0x10] - cmp r1, 0 - bne _080A54C0 - lsls r2, r3, 16 - b _080A54E4 - .pool -_080A54C0: - lsls r1, r6, 16 - lsls r0, r3, 16 - asrs r3, r0, 16 - adds r2, r0, 0 - cmp r1, r2 - bge _080A54D6 - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r3 - blt _080A54E0 - b _080A54E4 -_080A54D6: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r3 - bgt _080A54E0 - movs r7, 0x1 -_080A54E0: - cmp r7, 0 - beq _080A54F4 -_080A54E4: - lsrs r4, r2, 16 - adds r0, r5, 0 - bl DestroyTask - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080A54F4: - lsls r0, r4, 24 - asrs r0, 24 - bl SE12PanpotControl -_080A54FC: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end c3_08073CEC - - thumb_func_start sub_80A5508 -sub_80A5508: @ 80A5508 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldr r0, =gBattleAnimScriptPtr - mov r9, r0 - ldr r0, [r0] - adds r1, r0, 0x1 - mov r2, r9 - str r1, [r2] - ldrb r0, [r0, 0x1] - mov r8, r0 - ldrb r0, [r1, 0x1] - lsls r0, 8 - mov r2, r8 - orrs r2, r0 - mov r8, r2 - ldrb r4, [r1, 0x2] - ldrb r5, [r1, 0x3] - ldrb r6, [r1, 0x4] - ldrb r1, [r1, 0x5] - mov r10, r1 - ldr r0, =c3_08073CEC - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0x8] - lsls r5, 24 - asrs r5, 24 - strh r5, [r1, 0xA] - lsls r6, 24 - asrs r6, 24 - strh r6, [r1, 0xC] - mov r0, r10 - strh r0, [r1, 0xE] - strh r4, [r1, 0x10] - mov r0, r8 - adds r1, r4, 0 - bl PlaySE12WithPanning - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r1, r9 - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A5508 - - thumb_func_start sub_80A559C -sub_80A559C: @ 80A559C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleAnimScriptPtr - mov r10, r0 - ldr r0, [r0] - adds r1, r0, 0x1 - mov r2, r10 - str r1, [r2] - ldrb r0, [r0, 0x1] - mov r9, r0 - ldrb r0, [r1, 0x1] - lsls r0, 8 - mov r2, r9 - orrs r2, r0 - mov r9, r2 - ldrb r4, [r1, 0x3] - ldrb r0, [r1, 0x4] - mov r8, r0 - ldrb r7, [r1, 0x5] - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning2 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl BattleAnimAdjustPanning2 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - mov r0, r8 - bl BattleAnimAdjustPanning2 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =c3_08073CEC - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r6, 24 - asrs r6, 24 - strh r6, [r1, 0x8] - lsls r5, 24 - asrs r5, 24 - strh r5, [r1, 0xA] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xC] - strh r7, [r1, 0xE] - strh r6, [r1, 0x10] - mov r0, r9 - adds r1, r6, 0 - bl PlaySE12WithPanning - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r2, r10 - ldr r0, [r2] - adds r0, 0x6 - str r0, [r2] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A559C - - thumb_func_start ma1C_8073ED0 -ma1C_8073ED0: @ 80A565C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r6, =gBattleAnimScriptPtr - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r5, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r5, r0 - ldrb r0, [r1, 0x3] - mov r8, r0 - ldrb r2, [r1, 0x4] - mov r9, r2 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =sub_80A56E4 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xA] - mov r2, r8 - strh r2, [r1, 0xC] - mov r2, r9 - strh r2, [r1, 0xE] - mov r2, r8 - strh r2, [r1, 0x18] - ldr r1, [r1] - bl _call_via_r1 - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5 - str r0, [r6] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ma1C_8073ED0 - - thumb_func_start sub_80A56E4 -sub_80A56E4: @ 80A56E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x18] - adds r1, r0, 0x1 - strh r1, [r2, 0x18] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xC - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080A5732 - movs r0, 0 - strh r0, [r2, 0x18] - ldrh r0, [r2, 0x8] - ldrb r1, [r2, 0xA] - ldrh r4, [r2, 0xE] - subs r4, 0x1 - strh r4, [r2, 0xE] - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - asrs r1, 24 - bl PlaySE12WithPanning - cmp r4, 0 - bne _080A5732 - adds r0, r5, 0 - bl DestroyTask - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080A5732: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A56E4 - - thumb_func_start ma1D_08073FB4 -ma1D_08073FB4: @ 80A5740 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r6, =gBattleAnimScriptPtr - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r5, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r5, r0 - ldrb r0, [r1, 0x3] - mov r8, r0 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =sub_80A57B4 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xA] - mov r0, r8 - strh r0, [r1, 0xC] - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - str r0, [r6] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ma1D_08073FB4 - - thumb_func_start sub_80A57B4 -sub_80A57B4: @ 80A57B4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0xC] - subs r1, r0, 0x1 - strh r1, [r2, 0xC] - lsls r0, 16 - cmp r0, 0 - bgt _080A57E8 - ldrh r0, [r2, 0x8] - movs r1, 0xA - ldrsb r1, [r2, r1] - bl PlaySE12WithPanning - adds r0, r4, 0 - bl DestroyTask - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080A57E8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A57B4 - - thumb_func_start sub_80A57F8 -sub_80A57F8: @ 80A57F8 - push {r4-r6,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r6, r2, r0 - adds r0, r1, 0x5 - str r0, [r4] - ldrb r0, [r1, 0x5] - adds r1, 0x6 - str r1, [r4] - cmp r0, 0 - beq _080A5842 - adds r5, r4, 0 - ldr r4, =gBattleAnimArgs - adds r3, r0, 0 -_080A582A: - ldr r2, [r5] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r4] - adds r2, 0x2 - str r2, [r5] - adds r4, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080A582A -_080A5842: - adds r0, r6, 0 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r6 - ldr r1, =gAnimSoundTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A57F8 - - thumb_func_start ma20_wait_for_something -ma20_wait_for_something: @ 80A586C - push {r4,r5,lr} - ldr r0, =gAnimSoundTaskCount - ldrb r5, [r0] - cmp r5, 0 - bne _080A58B4 - bl IsSEPlaying - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080A58CC - ldr r4, =gSoundAnimFramesToWait - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bls _080A58BA - ldr r0, =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, =gMPlay_SE2 - bl m4aMPlayStop - strh r5, [r4] - b _080A58DE - .pool -_080A58B4: - ldr r1, =gSoundAnimFramesToWait - movs r0, 0 - strh r0, [r1] -_080A58BA: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] - b _080A58DE - .pool -_080A58CC: - ldr r0, =gSoundAnimFramesToWait - movs r2, 0 - strh r1, [r0] - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, =gAnimFramesToWait - strb r2, [r0] -_080A58DE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma20_wait_for_something - - thumb_func_start ma21_08074164 -ma21_08074164: @ 80A58F0 - push {r4-r6,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r4, [r5] - adds r3, r4, 0x1 - str r3, [r5] - ldrb r2, [r4, 0x1] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r0, =gBattleAnimArgs - lsls r2, 1 - adds r2, r0 - lsls r1, 16 - asrs r1, 16 - movs r6, 0 - ldrsh r0, [r2, r6] - cmp r1, r0 - bne _080A5938 - ldrb r1, [r3, 0x3] - ldrb r0, [r3, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 24 - adds r1, r0 - str r1, [r5] - b _080A593E - .pool -_080A5938: - adds r0, r4, 0 - adds r0, 0x8 - str r0, [r5] -_080A593E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end ma21_08074164 - - thumb_func_start sub_80A5944 -sub_80A5944: @ 80A5944 - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5978 - ldr r2, [r4] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r4] - b _080A597E - .pool -_080A5978: - ldr r0, [r4] - adds r0, 0x4 - str r0, [r4] -_080A597E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5944 - - thumb_func_start sub_80A5984 -sub_80A5984: @ 80A5984 - push {r4,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r1, [r0] - ldrb r2, [r1, 0x1] - adds r1, 0x2 - str r1, [r0] - cmp r2, 0 - beq _080A59A0 - ldr r0, =gAnimBankTarget - b _080A59A2 - .pool -_080A59A0: - ldr r0, =gAnimBankAttacker -_080A59A2: - ldrb r0, [r0] - bl GetBankIdentity - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A59D2 - cmp r4, 0 - beq _080A59BE - cmp r4, 0x3 - bne _080A59D2 -_080A59BE: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute -_080A59D2: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A5984 - - thumb_func_start sub_80A59DC -sub_80A59DC: @ 80A59DC - push {lr} - ldr r0, =gBattleAnimScriptPtr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A5A04 - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute -_080A5A04: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A59DC - - thumb_func_start sub_80A5A0C -sub_80A5A0C: @ 80A5A0C - push {r4-r7,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - ldrb r6, [r0, 0x1] - adds r0, 0x2 - str r0, [r1] - ldr r7, =gAnimBankAttacker - ldrb r0, [r7] - bl GetBankSide - adds r4, r0, 0 - ldr r5, =gAnimBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _080A5A78 - cmp r6, 0 - beq _080A5A48 - ldrb r0, [r5] - b _080A5A4A - .pool -_080A5A48: - ldrb r0, [r7] -_080A5A4A: - bl GetBankIdentity - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A5A78 - cmp r4, 0 - beq _080A5A64 - cmp r4, 0x3 - bne _080A5A78 -_080A5A64: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute -_080A5A78: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A5A0C - - thumb_func_start ma2B_make_side_invisible -ma2B_make_side_invisible: @ 80A5A80 - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080A5AA8 - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080A5AA8: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma2B_make_side_invisible - - thumb_func_start ma2C_make_side_visible -ma2C_make_side_visible: @ 80A5ABC - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080A5AE6 - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080A5AE6: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma2C_make_side_visible - - thumb_func_start sub_80A5AFC -sub_80A5AFC: @ 80A5AFC - push {r4-r7,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - ldrb r7, [r0, 0x1] - adds r0, 0x2 - str r0, [r1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A5BA6 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080A5BA6 - ldr r6, =gAnimBankAttacker - ldrb r0, [r6] - bl GetBankSide - adds r4, r0, 0 - ldr r5, =gAnimBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080A5BA6 - cmp r7, 0 - bne _080A5B54 - ldrb r0, [r6] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - b _080A5B60 - .pool -_080A5B54: - ldrb r0, [r5] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 -_080A5B60: - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080A5BA6 - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r2, r0, r1 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - cmp r4, 0x2 - bne _080A5B90 - ldrb r0, [r2, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r2, 0x5] -_080A5B90: - cmp r4, 0x1 - bne _080A5BA0 - movs r0, 0 - bl sub_80A477C - b _080A5BA6 - .pool -_080A5BA0: - movs r0, 0x1 - bl sub_80A477C -_080A5BA6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A5AFC - - thumb_func_start sub_80A5BAC -sub_80A5BAC: @ 80A5BAC - push {r4-r7,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - ldrb r7, [r0, 0x1] - adds r0, 0x2 - str r0, [r1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A5C38 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080A5C38 - ldr r6, =gAnimBankAttacker - ldrb r0, [r6] - bl GetBankSide - adds r4, r0, 0 - ldr r5, =gAnimBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080A5C38 - cmp r7, 0 - bne _080A5C04 - ldrb r0, [r6] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - b _080A5C10 - .pool -_080A5C04: - ldrb r0, [r5] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 -_080A5C10: - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080A5C38 - cmp r4, 0x2 - bne _080A5C38 - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x5] -_080A5C38: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A5BAC - - thumb_func_start ma2F_stop_music -ma2F_stop_music: @ 80A5C44 - push {lr} - ldr r0, =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, =gMPlay_SE2 - bl m4aMPlayStop - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end ma2F_stop_music - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s index 0559ceab23..9b2939673f 100644 --- a/asm/battle_anim_80A9C70.s +++ b/asm/battle_anim_80A9C70.s @@ -26,9 +26,9 @@ sub_80A9C70: @ 80A9C70 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r0, =gUnknown_08524F84 + ldr r0, =gBattleAnimPicTable + 0x440 bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_0852588C + ldr r0, =gBattleAnimPaletteTable + 0x440 bl LoadCompressedObjectPaletteUsingHeap ldr r1, =gTasks mov r2, r8 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 1556523e20..9e6aae62fb 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -732,7 +732,7 @@ _080FEE36: _080FEE3E: ldr r0, =gAnimBankTarget ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -8335,7 +8335,7 @@ _08102A9A: str r0, [r6] ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -8376,7 +8376,7 @@ sub_8102AE0: @ 8102AE0 bne _08102B32 ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -12777,7 +12777,7 @@ sub_8104E74: @ 8104E74 bl sub_80A861C strh r0, [r5, 0x26] ldrb r0, [r4] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -33069,7 +33069,7 @@ _0810F22E: lsrs r4, r0, 24 adds r7, r4, 0 adds r0, r4, 0 - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -33445,7 +33445,7 @@ sub_810F524: @ 810F524 lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -34592,7 +34592,7 @@ _0810FE86: _0810FE92: ldr r0, =gAnimBankTarget ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -38512,7 +38512,7 @@ sub_8111E78: @ 8111E78 adds r5, r0, r1 ldr r0, =gAnimBankTarget ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x26 @@ -38866,7 +38866,7 @@ sub_8112170: @ 8112170 adds r4, r0, r1 ldr r0, =gAnimBankTarget ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x26 @@ -41108,7 +41108,7 @@ sub_81133E8: @ 81133E8 adds r4, r1, r0 ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -41480,7 +41480,7 @@ sub_81136E8: @ 81136E8 movs r0, 0x52 bl SetGpuReg adds r0, r4, 0 - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -41663,7 +41663,7 @@ sub_8113888: @ 8113888 bl SetGpuReg ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -42098,7 +42098,7 @@ _08113C1E: strh r0, [r5, 0x18] ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0xE] @@ -42417,7 +42417,7 @@ _08113EBC: _08113EF8: ldr r0, =gAnimBankTarget ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0xE] @@ -43016,7 +43016,7 @@ sub_81143C0: @ 81143C0 mov r10, r0 ldr r6, =gAnimBankAttacker ldrb r0, [r6] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -43093,7 +43093,7 @@ sub_8114470: @ 8114470 lsrs r6, r0, 24 ldr r4, =gAnimBankAttacker ldrb r0, [r4] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -44098,7 +44098,7 @@ _08114D3C: strh r0, [r4, 0x1C] ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1E] @@ -44291,7 +44291,7 @@ sub_8114EB4: @ 8114EB4 strh r4, [r1, 0x26] ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -44444,7 +44444,7 @@ _08115018: strh r0, [r4, 0x1C] ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1E] diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 45f207eb9c..69835bf4e3 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -1629,7 +1629,7 @@ _0815ADDE: lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r7, r0, 24 adds r0, r6, 0 @@ -2935,7 +2935,7 @@ _0815B81C: bl SetGpuReg ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3211,7 +3211,7 @@ _0815BA82: bl SetGpuReg ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -6123,7 +6123,7 @@ _0815D2B4: lsrs r0, 24 strh r0, [r4, 0x26] adds r0, r5, 0 - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -6218,7 +6218,7 @@ sub_815D398: @ 815D398 ldr r1, =gTasks adds r6, r0, r1 ldrb r0, [r6, 0x12] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index 1e90e60c75..d2a7cbd631 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -4951,7 +4951,7 @@ _08172DC0: _08172DC6: ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -5134,9 +5134,9 @@ _08172F4E: lsrs r0, 16 cmp r0, r7 bne _08172F6E - ldr r0, =gUnknown_0852528C + ldr r0, =gBattleAnimPicTable + 0x748 bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_08525B94 + ldr r0, =gBattleAnimPaletteTable + 0x748 bl LoadCompressedObjectPaletteUsingHeap _08172F6E: ldr r5, =sub_8172FEC @@ -5533,9 +5533,9 @@ sub_81732B0: @ 81732B0 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, =gUnknown_085253AC + ldr r0, =gBattleAnimPicTable + 0x868 bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_08525CB4 + ldr r0, =gBattleAnimPaletteTable + 0x868 bl LoadCompressedObjectPaletteUsingHeap ldr r0, =0x0000281d bl IndexOfSpritePaletteTag diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s index 817e64b076..4bfd7ae682 100644 --- a/asm/battle_anim_sound_tasks.s +++ b/asm/battle_anim_sound_tasks.s @@ -36,7 +36,7 @@ sub_8158B30: @ 8158B30 adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x2 - bl sub_80A5314 + bl CalculatePanIncrement strh r4, [r6, 0xC] strh r5, [r6, 0xE] lsls r0, 24 @@ -193,7 +193,7 @@ mas_80DCF38: @ 8158C58 adds r0, r4, 0 adds r1, r5, 0 adds r2, r6, 0 - bl sub_80A5314 + bl CalculatePanIncrement ldr r2, =gTasks mov r3, r8 lsls r1, r3, 2 @@ -924,7 +924,7 @@ sub_8159278: @ 8159278 adds r0, r4, 0 adds r1, r5, 0 adds r2, r6, 0 - bl sub_80A5314 + bl CalculatePanIncrement ldr r2, =gTasks mov r3, r8 lsls r1, r3, 2 diff --git a/asm/intro.s b/asm/intro.s index cd8f7c2d87..32b52ed06e 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -1958,9 +1958,9 @@ task_intro_13: @ 816DD28 ldr r0, =gUnknown_08D8A818 ldr r1, =0x0600e000 bl LZDecompressVram - ldr r0, =gUnknown_08524D14 + ldr r0, =gBattleAnimPicTable + 0x1D0 bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_0852561C + ldr r0, =gBattleAnimPaletteTable + 0x1D0 bl LoadCompressedObjectPaletteUsingHeap ldr r0, =gUnknown_08D85CD0 ldr r1, =gPlttBufferUnfaded diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index a4d786159e..325c4a4594 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -2063,7 +2063,7 @@ sub_80A6BFC: @ 80A6BFC _080A6C30: ldr r0, =gAnimBankAttacker ldrb r0, [r0] - bl GetBankIdentity_permutated + bl sub_80A8364 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x1 @@ -5083,8 +5083,8 @@ _080A835C: bx r1 thumb_func_end sub_80A8328 - thumb_func_start GetBankIdentity_permutated -GetBankIdentity_permutated: @ 80A8364 + thumb_func_start sub_80A8364 +sub_80A8364: @ 80A8364 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -5109,7 +5109,7 @@ _080A838C: pop {r4} pop {r1} bx r1 - thumb_func_end GetBankIdentity_permutated + thumb_func_end sub_80A8364 thumb_func_start sub_80A8394 sub_80A8394: @ 80A8394 diff --git a/data/battle_anims.s b/data/battle_anims.s index 39d5df0063..082a86fa1a 100644 --- a/data/battle_anims.s +++ b/data/battle_anims.s @@ -353,9 +353,6 @@ gBattleAnimPicTable:: @ 8524B44 obj_tiles 0x08c0a8bc, 0x0200, 0x2747 obj_tiles 0x08c0a3ec, 0x1000, 0x2748 obj_tiles 0x08c0a980, 0x0180, 0x2749 - - .align 2 -gUnknown_08524D14:: @ 8524D14 obj_tiles 0x08c0aa2c, 0x0c00, 0x274a obj_tiles 0x08c0aebc, 0x0100, 0x274b obj_tiles 0x08c0af38, 0x0040, 0x274c @@ -434,9 +431,6 @@ gUnknown_08524D14:: @ 8524D14 obj_tiles 0x08c14b78, 0x0100, 0x2795 obj_tiles 0x08c14c1c, 0x0200, 0x2796 obj_tiles 0x08c1a3a0, 0x0200, 0x2797 - - .align 2 -gUnknown_08524F84:: @ 8524F84 obj_tiles 0x08c1a540, 0x0020, 0x2798 obj_tiles 0x08c1a58c, 0x0a00, 0x2799 obj_tiles 0x08c1ab40, 0x0800, 0x279a @@ -534,9 +528,6 @@ gUnknown_08524F84:: @ 8524F84 obj_tiles 0x08c258b8, 0x0800, 0x27f6 obj_tiles 0x08c28394, 0x0380, 0x27f7 obj_tiles 0x08c27e34, 0x0800, 0x27f8 - - .align 2 -gUnknown_0852528C:: @ 852528C obj_tiles 0x08c28564, 0x00c0, 0x27f9 obj_tiles 0x08c28610, 0x0800, 0x27fa obj_tiles 0x08c28880, 0x0060, 0x27fb @@ -573,9 +564,6 @@ gUnknown_0852528C:: @ 852528C obj_tiles 0x08d93b9c, 0x0080, 0x281a obj_tiles 0x08c2407c, 0x0800, 0x281b obj_tiles 0x08d8ea54, 0x0020, 0x281c - - .align 2 -gUnknown_085253AC:: @ 85253AC obj_tiles 0x08d8ef2c, 0x0080, 0x281d obj_tiles 0x08dba378, 0x0400, 0x281e obj_tiles 0x08dba4b8, 0x0080, 0x281f @@ -657,9 +645,6 @@ gBattleAnimPaletteTable:: @ 852544C obj_pal 0x08c09fd8, 0x2747 obj_pal 0x08c0a894, 0x2748 obj_pal 0x08c0aa08, 0x2749 - - .align 2 -gUnknown_0852561C:: @ 852561C obj_pal 0x08c0ae94, 0x274a obj_pal 0x08c0af1c, 0x274b obj_pal 0x08c0af60, 0x274c @@ -738,9 +723,6 @@ gUnknown_0852561C:: @ 852561C obj_pal 0x08c14bf4, 0x2795 obj_pal 0x08c14bf4, 0x2796 obj_pal 0x08c1a478, 0x2797 - - .align 2 -gUnknown_0852588C:: @ 852588C obj_pal 0x08c1a564, 0x2798 obj_pal 0x08c1a478, 0x2799 obj_pal 0x08c1a478, 0x279a @@ -838,9 +820,6 @@ gUnknown_0852588C:: @ 852588C obj_pal 0x08c25890, 0x27f6 obj_pal 0x08c2836c, 0x27f7 obj_pal 0x08c2836c, 0x27f8 - - .align 2 -gUnknown_08525B94:: @ 8525B94 obj_pal 0x08c285e8, 0x27f9 obj_pal 0x08c287d0, 0x27fa obj_pal 0x08c288d0, 0x27fb @@ -877,9 +856,6 @@ gUnknown_08525B94:: @ 8525B94 obj_pal 0x08d93bdc, 0x281a obj_pal 0x08d93bf4, 0x281b obj_pal 0x08d93c0c, 0x281c - - .align 2 -gUnknown_08525CB4:: @ 8525CB4 obj_pal 0x08d8ef80, 0x281d obj_pal 0x08dba35c, 0x281e obj_pal 0x08dba4a0, 0x281f @@ -930,105 +906,3 @@ gBattleAnimBackgroundTable:: @ 8525D54 .4byte 0x08c25bec, 0x08d91074, 0x08c26958 .4byte 0x08c25bec, 0x08d91074, 0x08c26e54 .4byte 0x08c25bec, 0x08d91074, 0x08c27324 - - .align 2 -sScriptCmdTable:: @ 8525E98 - .4byte ScriptCmd_loadspritegfx - .4byte ScriptCmd_unloadspritegfx - .4byte ScriptCmd_createsprite - .4byte ScriptCmd_createvisualtask - .4byte ScriptCmd_delay - .4byte ScriptCmd_waitforvisualfinish - .4byte ScriptCmd_hang1 - .4byte ScriptCmd_hang2 - .4byte ScriptCmd_end - .4byte ScriptCmd_playse - .4byte ScriptCmd_monbg - .4byte ScriptCmd_clearmonbg - .4byte ScriptCmd_setalpha - .4byte ScriptCmd_blendoff - .4byte ScriptCmd_call - .4byte ScriptCmd_return - .4byte ScriptCmd_setarg - .4byte ScriptCmd_choosetwoturnanim - .4byte ScriptCmd_jumpifmoveturn - .4byte ScriptCmd_jump - .4byte ScriptCmd_fadetobg - .4byte ScriptCmd_restorebg - .4byte ScriptCmd_waitbgfadeout - .4byte ScriptCmd_waitbgfadein - .4byte ScriptCmd_changebg - .4byte ScriptCmd_playsewithpan - .4byte ScriptCmd_setpan - .4byte ma1B_8073C2C - .4byte ma1C_8073ED0 - .4byte ma1D_08073FB4 - .4byte ScriptCmd_setbldcnt - .4byte sub_80A57F8 - .4byte ma20_wait_for_something - .4byte ma21_08074164 - .4byte ScriptCmd_monbg_22 - .4byte ScriptCmd_clearmonbg_23 - .4byte sub_80A5944 - .4byte ScriptCmd_fadetobgfromset - .4byte sub_80A5508 - .4byte sub_80A559C - .4byte sub_80A5984 - .4byte sub_80A59DC - .4byte sub_80A5A0C - .4byte ma2B_make_side_invisible - .4byte ma2C_make_side_visible - .4byte sub_80A5AFC - .4byte sub_80A5BAC - .4byte ma2F_stop_music - - .align 2 -gUnknown_08525F58:: @ 8525F58 - .byte 0x48, 0x50, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00 - .byte 0x30, 0x28, 0x00, 0x00, 0x70, 0x50, 0x00, 0x00 - .byte 0x20, 0x50, 0x00, 0x00, 0xc8, 0x28, 0x00, 0x00 - .byte 0x5a, 0x58, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00 - - .align 2 -gCastformFrontSpriteCoords:: @ 8525F78 - .byte 0x44, 0x11, 0x00, 0x00, 0x66, 0x09, 0x00, 0x00 - .byte 0x46, 0x09, 0x00, 0x00, 0x86, 0x08, 0x00, 0x00 - - .align 2 -gUnknown_08525F88:: @ 8525F88 - .byte 0x0d, 0x0e, 0x0d, 0x0d - - .align 2 -gUnknown_08525F8C:: @ 8525F8C - .byte 0x00, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_08525F90:: @ 8525F90 - spr_template 0xd755, 0xd755, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 0xd756, 0xd756, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_08525FC0:: @ 8525FC0 - obj_tiles gMiscBlank_Gfx, 0x0800, 0xd755 - obj_tiles gMiscBlank_Gfx, 0x0800, 0xd756 - - .align 2 -@ the mother of all baserom includes - .incbin "baserom.gba", 0x525fd0, 0x18f60 - - .align 2 -gUnknown_0853EF30:: @ 853EF30 - .byte 0xf0, 0xf0, 0x0c, 0x80, 0xf0, 0x30, 0x0d, 0x84, 0x30, 0xf0, 0x0e, 0x86, 0x30, 0x30, 0x08, 0x88 - - .align 2 -gUnknown_0853EF40:: @ 853EF40 - .4byte 0x00000004, gUnknown_0853EF30 - - .align 2 -gUnknown_0853EF48:: @ 853EF48 - spr_template 0x271a, 0x271a, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0853EF60:: @ 853EF60 - spr_template 0x2798, 0x2798, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9E44 - diff --git a/data/rom_8525F58.s b/data/rom_8525F58.s new file mode 100644 index 0000000000..1cee7112ac --- /dev/null +++ b/data/rom_8525F58.s @@ -0,0 +1,57 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 + + +gUnknown_08525F58:: @ 8525F58 + .byte 0x48, 0x50, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00 + .byte 0x30, 0x28, 0x00, 0x00, 0x70, 0x50, 0x00, 0x00 + .byte 0x20, 0x50, 0x00, 0x00, 0xc8, 0x28, 0x00, 0x00 + .byte 0x5a, 0x58, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00 + + .align 2 +gCastformFrontSpriteCoords:: @ 8525F78 + .byte 0x44, 0x11, 0x00, 0x00, 0x66, 0x09, 0x00, 0x00 + .byte 0x46, 0x09, 0x00, 0x00, 0x86, 0x08, 0x00, 0x00 + + .align 2 +gUnknown_08525F88:: @ 8525F88 + .byte 0x0d, 0x0e, 0x0d, 0x0d + + .align 2 +gUnknown_08525F8C:: @ 8525F8C + .byte 0x00, 0x00, 0x00, 0x00 + + .align 2 +gUnknown_08525F90:: @ 8525F90 + spr_template 0xd755, 0xd755, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xd756, 0xd756, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + + .align 2 +gUnknown_08525FC0:: @ 8525FC0 + obj_tiles gMiscBlank_Gfx, 0x0800, 0xd755 + obj_tiles gMiscBlank_Gfx, 0x0800, 0xd756 + + .align 2 +@ the mother of all baserom includes + .incbin "baserom.gba", 0x525fd0, 0x18f60 + + .align 2 +gUnknown_0853EF30:: @ 853EF30 + .byte 0xf0, 0xf0, 0x0c, 0x80, 0xf0, 0x30, 0x0d, 0x84, 0x30, 0xf0, 0x0e, 0x86, 0x30, 0x30, 0x08, 0x88 + + .align 2 +gUnknown_0853EF40:: @ 853EF40 + .4byte 0x00000004, gUnknown_0853EF30 + + .align 2 +gUnknown_0853EF48:: @ 853EF48 + spr_template 0x271a, 0x271a, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + + .align 2 +gUnknown_0853EF60:: @ 853EF60 + spr_template 0x2798, 0x2798, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9E44 + diff --git a/include/battle_anim.h b/include/battle_anim.h index 86eb20aec9..3345d7de3c 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -37,6 +37,24 @@ struct BattleAnimBackground void *tilemap; }; +#define ANIM_ARGS_COUNT 8 + +extern void (*gAnimScriptCallback)(void); +extern bool8 gAnimScriptActive; +extern u8 gAnimVisualTaskCount; +extern u8 gAnimSoundTaskCount; +extern struct DisableStruct *gAnimDisableStructPtr; +extern u32 gAnimMoveDmg; +extern u16 gAnimMovePower; +extern u8 gAnimFriendship; +extern u16 gWeatherMoveAnim; +extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; +extern u8 gAnimMoveTurn; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02038440; + void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -49,7 +67,7 @@ bool8 IsContest(void); s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 sub_80A52EC(s16 a); -s16 sub_80A5314(s16 a, s16 b, s16 c); +s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); diff --git a/ld_script.txt b/ld_script.txt index f560479475..a227d9510c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -114,7 +114,6 @@ SECTIONS { src/palette.o(.text); src/sound.o(.text); src/battle_anim.o(.text); - asm/battle_anim.o(.text); asm/rom_80A5C6C.o(.text); src/task.o(.text); src/reshow_battle_screen.o(.text); @@ -364,6 +363,8 @@ SECTIONS { src/palette.o(.rodata); data/fanfares.o(.rodata); data/battle_anims.o(.rodata); + src/battle_anim.o(.rodata); + data/rom_8525F58.o(.rodata); data/title_screen.o(.rodata); data/field_screen.o(.rodata); data/battle_setup.o(.rodata); diff --git a/src/battle_anim.c b/src/battle_anim.c index 7a2b7902ca..13b74a84aa 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -18,16 +18,11 @@ // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) ((i - 10000)) -#define SCRIPT_READ_32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) #define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define SCRIPT_READ_32(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) #define SCRIPT_READ_PTR(ptr) ((const u8*)(SCRIPT_READ_32(ptr))) -#define SCRIPT_READ_16_(ptr) ((ptr)[0] + ((ptr)[1] << 8)) -#define SCRIPT_READ_32_(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) -#define SCRIPT_READ_PTR_(ptr) ((const u8*)(SCRIPT_READ_32_(ptr))) - #define ANIM_SPRITE_INDEX_COUNT 8 -#define ANIM_ARGS_COUNT 8 extern u8 gBankAttacker; extern u8 gBankTarget; @@ -44,32 +39,8 @@ extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT]; extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; +extern u8 gDecompressionBuffer[]; -EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL; -EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL; -EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; -EWRAM_DATA s8 gAnimFramesToWait = 0; -EWRAM_DATA bool8 gAnimScriptActive = FALSE; -EWRAM_DATA u8 gAnimVisualTaskCount = 0; -EWRAM_DATA u8 gAnimSoundTaskCount = 0; -EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; -EWRAM_DATA u32 gAnimMoveDmg = 0; -EWRAM_DATA u16 gAnimMovePower = 0; -EWRAM_DATA u16 gAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT] = {0}; -EWRAM_DATA u8 gAnimFriendship = 0; -EWRAM_DATA u16 gWeatherMoveAnim = 0; -EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0}; -EWRAM_DATA u16 gSoundAnimFramesToWait = 0; -EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; -EWRAM_DATA u8 gAnimMoveTurn = 0; -EWRAM_DATA u8 gUnknown_02038433 = 0; -EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. -EWRAM_DATA u8 gAnimBankAttacker = 0; -EWRAM_DATA u8 gAnimBankTarget = 0; -EWRAM_DATA u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT] = {0}; -EWRAM_DATA u8 gUnknown_02038440 = 0; - -extern void (* const sScriptCmdTable[])(void); extern const u16 gUnknown_082C8D64[]; extern const u8 * const gBattleAnims_Moves[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; @@ -83,17 +54,150 @@ extern u8 sub_80A82E4(u8 bank); // rom_80A5C6C.s extern u8 sub_80A5C6C(u8 bank, u8 attributeId); // rom_80A5C6C.s extern bool8 AnimBankSpriteExists(u8 bank); // rom_80A5C6C.s extern void sub_80A6C68(u8 arg0); // rom_80A5C6C.s +extern u8 GetAnimBankSpriteId(u8 wantedBank); // rom_80A5C6C.s extern u8 sub_80A6D94(void); +extern u8 sub_80A8364(u8); +extern bool8 IsDoubleBattle(void); // this file's functions -void RunAnimScriptCommand(void); -void task_pA_ma0A_obj_to_bg_pal(u8 taskId); -void sub_80A46A0(void); -void sub_80A4980(u8 taskId); -void sub_80A4BB0(u8 taskId); -void Task_FadeToBg(u8 taskId); -void LoadDefaultBg(void); -void LoadMoveBg(u16 bgId); +static void ScriptCmd_loadspritegfx(void); +static void ScriptCmd_unloadspritegfx(void); +static void ScriptCmd_createsprite(void); +static void ScriptCmd_createvisualtask(void); +static void ScriptCmd_delay(void); +static void ScriptCmd_waitforvisualfinish(void); +static void ScriptCmd_hang1(void); +static void ScriptCmd_hang2(void); +static void ScriptCmd_end(void); +static void ScriptCmd_playse(void); +static void ScriptCmd_monbg(void); +static void ScriptCmd_clearmonbg(void); +static void ScriptCmd_setalpha(void); +static void ScriptCmd_blendoff(void); +static void ScriptCmd_call(void); +static void ScriptCmd_return(void); +static void ScriptCmd_setarg(void); +static void ScriptCmd_choosetwoturnanim(void); +static void ScriptCmd_jumpifmoveturn(void); +static void ScriptCmd_jump(void); +static void ScriptCmd_fadetobg(void); +static void ScriptCmd_restorebg(void); +static void ScriptCmd_waitbgfadeout(void); +static void ScriptCmd_waitbgfadein(void); +static void ScriptCmd_changebg(void); +static void ScriptCmd_playsewithpan(void); +static void ScriptCmd_setpan(void); +static void ScriptCmd_panse_1B(void); +static void ScriptCmd_loopsewithpan(void); +static void ScriptCmd_waitplaysewithpan(void); +static void ScriptCmd_setbldcnt(void); +static void ScriptCmd_createsoundtask(void); +static void ScriptCmd_waitsound(void); +static void ScriptCmd_jumpargeq(void); +static void ScriptCmd_monbg_22(void); +static void ScriptCmd_clearmonbg_23(void); +static void ScriptCmd_jumpifcontest(void); +static void ScriptCmd_fadetobgfromset(void); +static void ScriptCmd_panse_26(void); +static void ScriptCmd_panse_27(void); +static void ScriptCmd_monbgprio_28(void); +static void ScriptCmd_monbgprio_29(void); +static void ScriptCmd_monbgprio_2A(void); +static void ScriptCmd_invisible(void); +static void ScriptCmd_visible(void); +static void ScriptCmd_doublebattle_2D(void); +static void ScriptCmd_doublebattle_2E(void); +static void ScriptCmd_stopsound(void); + +static void RunAnimScriptCommand(void); +static void task_pA_ma0A_obj_to_bg_pal(u8 taskId); +static void sub_80A46A0(void); +static void sub_80A4980(u8 taskId); +static void sub_80A4BB0(u8 taskId); +static void Task_FadeToBg(u8 taskId); +static void Task_PanFromInitialToTarget(u8 taskId); +static void Task_LoopAndPlaySE(u8 taskId); +static void Task_WaitAndPlaySE(u8 taskId); +static void LoadDefaultBg(void); +static void LoadMoveBg(u16 bgId); + +// ewram +EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL; +EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL; +EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; +EWRAM_DATA static s8 gAnimFramesToWait = 0; +EWRAM_DATA bool8 gAnimScriptActive = FALSE; +EWRAM_DATA u8 gAnimVisualTaskCount = 0; +EWRAM_DATA u8 gAnimSoundTaskCount = 0; +EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; +EWRAM_DATA u32 gAnimMoveDmg = 0; +EWRAM_DATA u16 gAnimMovePower = 0; +EWRAM_DATA static u16 sAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT] = {0}; +EWRAM_DATA u8 gAnimFriendship = 0; +EWRAM_DATA u16 gWeatherMoveAnim = 0; +EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0}; +EWRAM_DATA static u16 sSoundAnimFramesToWait = 0; +EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0}; +EWRAM_DATA u8 gAnimMoveTurn = 0; +EWRAM_DATA static u8 sAnimBackgroundFadeState = 0; +EWRAM_DATA static u16 sAnimMoveIndex = 0; // set but unused. +EWRAM_DATA u8 gAnimBankAttacker = 0; +EWRAM_DATA u8 gAnimBankTarget = 0; +EWRAM_DATA u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT] = {0}; +EWRAM_DATA u8 gUnknown_02038440 = 0; + +// const rom data +static void (* const sScriptCmdTable[])(void) = +{ + ScriptCmd_loadspritegfx, + ScriptCmd_unloadspritegfx, + ScriptCmd_createsprite, + ScriptCmd_createvisualtask, + ScriptCmd_delay, + ScriptCmd_waitforvisualfinish, + ScriptCmd_hang1, + ScriptCmd_hang2, + ScriptCmd_end, + ScriptCmd_playse, + ScriptCmd_monbg, + ScriptCmd_clearmonbg, + ScriptCmd_setalpha, + ScriptCmd_blendoff, + ScriptCmd_call, + ScriptCmd_return, + ScriptCmd_setarg, + ScriptCmd_choosetwoturnanim, + ScriptCmd_jumpifmoveturn, + ScriptCmd_jump, + ScriptCmd_fadetobg, + ScriptCmd_restorebg, + ScriptCmd_waitbgfadeout, + ScriptCmd_waitbgfadein, + ScriptCmd_changebg, + ScriptCmd_playsewithpan, + ScriptCmd_setpan, + ScriptCmd_panse_1B, + ScriptCmd_loopsewithpan, + ScriptCmd_waitplaysewithpan, + ScriptCmd_setbldcnt, + ScriptCmd_createsoundtask, + ScriptCmd_waitsound, + ScriptCmd_jumpargeq, + ScriptCmd_monbg_22, + ScriptCmd_clearmonbg_23, + ScriptCmd_jumpifcontest, + ScriptCmd_fadetobgfromset, + ScriptCmd_panse_26, + ScriptCmd_panse_27, + ScriptCmd_monbgprio_28, + ScriptCmd_monbgprio_29, + ScriptCmd_monbgprio_2A, + ScriptCmd_invisible, + ScriptCmd_visible, + ScriptCmd_doublebattle_2D, + ScriptCmd_doublebattle_2E, + ScriptCmd_stopsound +}; void ClearBattleAnimationVars(void) { @@ -110,17 +214,17 @@ void ClearBattleAnimationVars(void) // clear index array. for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - gAnimSpriteIndexArray[i] |= 0xFFFF; + sAnimSpriteIndexArray[i] |= 0xFFFF; // clear anim args. for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; - gMonAnimTaskIdArray[0] = 0xFF; - gMonAnimTaskIdArray[1] = 0xFF; + sMonAnimTaskIdArray[0] = 0xFF; + sMonAnimTaskIdArray[1] = 0xFF; gAnimMoveTurn = 0; - gUnknown_02038433 = 0; - gAnimMoveIndex = 0; + sAnimBackgroundFadeState = 0; + sAnimMoveIndex = 0; gAnimBankAttacker = 0; gAnimBankTarget = 0; gUnknown_02038440 = 0; @@ -156,22 +260,22 @@ void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim) } if (!isMoveAnim) - gAnimMoveIndex = 0; + sAnimMoveIndex = 0; else - gAnimMoveIndex = tableId; + sAnimMoveIndex = tableId; for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; - gMonAnimTaskIdArray[0] = 0xFF; - gMonAnimTaskIdArray[1] = 0xFF; - gBattleAnimScriptPtr = animsTable[tableId]; + sMonAnimTaskIdArray[0] = 0xFF; + sMonAnimTaskIdArray[1] = 0xFF; + sBattleAnimScriptPtr = animsTable[tableId]; gAnimScriptActive = TRUE; gAnimFramesToWait = 0; gAnimScriptCallback = RunAnimScriptCommand; for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - gAnimSpriteIndexArray[i] |= 0xFFFF; + sAnimSpriteIndexArray[i] |= 0xFFFF; if (isMoveAnim) { @@ -210,35 +314,35 @@ void DestroyAnimSoundTask(u8 taskId) gAnimSoundTaskCount--; } -/*static*/ void AddSpriteIndex(u16 index) +static void AddSpriteIndex(u16 index) { s32 i; for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) { - if (gAnimSpriteIndexArray[i] == 0xFFFF) + if (sAnimSpriteIndexArray[i] == 0xFFFF) { - gAnimSpriteIndexArray[i] = index; + sAnimSpriteIndexArray[i] = index; return; } } } -/*static*/ void ClearSpriteIndex(u16 index) +static void ClearSpriteIndex(u16 index) { s32 i; for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) { - if (gAnimSpriteIndexArray[i] == index) + if (sAnimSpriteIndexArray[i] == index) { - gAnimSpriteIndexArray[i] |= 0xFFFF; + sAnimSpriteIndexArray[i] |= 0xFFFF; return; } } } -/*static*/ void WaitAnimFrameCount(void) +static void WaitAnimFrameCount(void) { if (gAnimFramesToWait <= 0) { @@ -251,41 +355,41 @@ void DestroyAnimSoundTask(u8 taskId) } } -/*static*/ void RunAnimScriptCommand(void) +static void RunAnimScriptCommand(void) { do { - sScriptCmdTable[gBattleAnimScriptPtr[0]](); + sScriptCmdTable[sBattleAnimScriptPtr[0]](); } while (gAnimFramesToWait == 0 && gAnimScriptActive); } -/*static*/ void ScriptCmd_loadspritegfx(void) +static void ScriptCmd_loadspritegfx(void) { u16 index; - gBattleAnimScriptPtr++; - index = SCRIPT_READ_16(gBattleAnimScriptPtr); + sBattleAnimScriptPtr++; + index = SCRIPT_READ_16(sBattleAnimScriptPtr); LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]); LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); - gBattleAnimScriptPtr += 2; + sBattleAnimScriptPtr += 2; AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); gAnimFramesToWait = 1; gAnimScriptCallback = WaitAnimFrameCount; } -/*static*/ void ScriptCmd_unloadspritegfx(void) +static void ScriptCmd_unloadspritegfx(void) { u16 index; - gBattleAnimScriptPtr++; - index = SCRIPT_READ_16(gBattleAnimScriptPtr); + sBattleAnimScriptPtr++; + index = SCRIPT_READ_16(sBattleAnimScriptPtr); FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); - gBattleAnimScriptPtr += 2; + sBattleAnimScriptPtr += 2; ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); } -/*static*/ void ScriptCmd_createsprite(void) +static void ScriptCmd_createsprite(void) { s32 i; const struct SpriteTemplate *template; @@ -293,19 +397,19 @@ void DestroyAnimSoundTask(u8 taskId) u8 argsCount; s16 subpriority; - gBattleAnimScriptPtr++; - template = (const struct SpriteTemplate *)(SCRIPT_READ_32_(gBattleAnimScriptPtr)); - gBattleAnimScriptPtr += 4; + sBattleAnimScriptPtr++; + template = (const struct SpriteTemplate *)(SCRIPT_READ_32(sBattleAnimScriptPtr)); + sBattleAnimScriptPtr += 4; - argVar = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; + argVar = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; - argsCount = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; + argsCount = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; for (i = 0; i < argsCount; i++) { - gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); - gBattleAnimScriptPtr += 2; + gBattleAnimArgs[i] = SCRIPT_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; } if (argVar & 0x80) @@ -335,7 +439,7 @@ void DestroyAnimSoundTask(u8 taskId) gAnimVisualTaskCount++; } -/*static*/ void ScriptCmd_createvisualtask(void) +static void ScriptCmd_createvisualtask(void) { TaskFunc taskFunc; u8 taskPriority; @@ -343,21 +447,21 @@ void DestroyAnimSoundTask(u8 taskId) u8 numArgs; s32 i; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; - taskFunc = (TaskFunc)SCRIPT_READ_32_(gBattleAnimScriptPtr); - gBattleAnimScriptPtr += 4; + taskFunc = (TaskFunc)SCRIPT_READ_32(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 4; - taskPriority = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; + taskPriority = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; - numArgs = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; + numArgs = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; for (i = 0; i < numArgs; i++) { - gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); - gBattleAnimScriptPtr += 2; + gBattleAnimArgs[i] = SCRIPT_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; } taskId = CreateTask(taskFunc, taskPriority); @@ -365,22 +469,22 @@ void DestroyAnimSoundTask(u8 taskId) gAnimVisualTaskCount++; } -/*static*/ void ScriptCmd_delay(void) +static void ScriptCmd_delay(void) { - gBattleAnimScriptPtr++; - gAnimFramesToWait = gBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + gAnimFramesToWait = sBattleAnimScriptPtr[0]; if (gAnimFramesToWait == 0) gAnimFramesToWait = -1; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; gAnimScriptCallback = WaitAnimFrameCount; } // wait for visual tasks to finish. -/*static*/ void ScriptCmd_waitforvisualfinish(void) +static void ScriptCmd_waitforvisualfinish(void) { if (gAnimVisualTaskCount == 0) { - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; gAnimFramesToWait = 0; } else @@ -389,24 +493,24 @@ void DestroyAnimSoundTask(u8 taskId) } } -/*static*/ void ScriptCmd_hang1(void) +static void ScriptCmd_hang1(void) { } -/*static*/ void ScriptCmd_hang2(void) +static void ScriptCmd_hang2(void) { } -/*static*/ void ScriptCmd_end(void) +static void ScriptCmd_end(void) { s32 i; bool32 continuousAnim = FALSE; // keep waiting as long as there is animations to be done. if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 - || gMonAnimTaskIdArray[0] != 0xFF || gMonAnimTaskIdArray[1] != 0xFF) + || sMonAnimTaskIdArray[0] != 0xFF || sMonAnimTaskIdArray[1] != 0xFF) { - gSoundAnimFramesToWait = 0; + sSoundAnimFramesToWait = 0; gAnimFramesToWait = 1; return; } @@ -414,7 +518,7 @@ void DestroyAnimSoundTask(u8 taskId) // finish the sound effects. if (IsSEPlaying()) { - if (++gSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect. + if (++sSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect. { gAnimFramesToWait = 1; return; @@ -427,15 +531,15 @@ void DestroyAnimSoundTask(u8 taskId) } // the SE has halted, so set the SE Frame Counter to 0 and continue. - gSoundAnimFramesToWait = 0; + sSoundAnimFramesToWait = 0; for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) { - if (gAnimSpriteIndexArray[i] != 0xFFFF) + if (sAnimSpriteIndexArray[i] != 0xFFFF) { - FreeSpriteTilesByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); - FreeSpritePaletteByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); - gAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator. + FreeSpriteTilesByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag); + sAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator. } } @@ -451,11 +555,11 @@ void DestroyAnimSoundTask(u8 taskId) } } -/*static*/ void ScriptCmd_playse(void) +static void ScriptCmd_playse(void) { - gBattleAnimScriptPtr++; - PlaySE(SCRIPT_READ_16(gBattleAnimScriptPtr)); - gBattleAnimScriptPtr += 2; + sBattleAnimScriptPtr++; + PlaySE(SCRIPT_READ_16(sBattleAnimScriptPtr)); + sBattleAnimScriptPtr += 2; } #define t1_MONBG_BANK 0 @@ -467,7 +571,7 @@ void DestroyAnimSoundTask(u8 taskId) #define t2_MON_IN_BG2 5 #define t2_MONBG_BANK 6 -/*static*/ void sub_80A40F4(u8 taskId) +static void sub_80A40F4(u8 taskId) { u8 newTaskId; @@ -499,20 +603,20 @@ void DestroyAnimSoundTask(u8 taskId) gTasks[newTaskId].data[t2_MON_IN_BG2] = selfData[t1_MON_IN_BG2]; gTasks[newTaskId].data[t2_MONBG_BANK] = selfData[t1_MONBG_BANK]; - gMonAnimTaskIdArray[selfData[t1_IS_SECONDMON_BG]] = newTaskId; + sMonAnimTaskIdArray[selfData[t1_IS_SECONDMON_BG]] = newTaskId; DestroyAnimVisualTask(taskId); } -/*static*/ void ScriptCmd_monbg(void) +static void ScriptCmd_monbg(void) { bool8 toBG_2; u8 taskId; u8 bank; u8 animBank; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; - animBank = gBattleAnimScriptPtr[0]; + animBank = sBattleAnimScriptPtr[0]; if (animBank & ANIM_BANK_TARGET) bank = gAnimBankTarget; else @@ -554,7 +658,7 @@ void DestroyAnimSoundTask(u8 taskId) gTasks[taskId].data[t1_IS_SECONDMON_BG] = 1; } - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; gAnimFramesToWait = 1; gAnimScriptCallback = WaitAnimFrameCount; } @@ -661,7 +765,7 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible) } } -/*static*/ void sub_80A46A0(void) +static void sub_80A46A0(void) { s32 i, j; struct UnknownAnimStruct2 unknownStruct; @@ -725,7 +829,7 @@ void sub_80A477C(bool8 to_BG2) } } -/*static*/ void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) { u8 r4; u8 r6; @@ -763,14 +867,14 @@ void sub_80A477C(bool8 to_BG2) } } -/*static*/ void ScriptCmd_clearmonbg(void) +static void ScriptCmd_clearmonbg(void) { u8 animBankId; u8 bank; u8 taskId; - gBattleAnimScriptPtr++; - animBankId = gBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + animBankId = sBattleAnimScriptPtr[0]; if (animBankId == ANIM_BANK_ATTACKER) animBankId = ANIM_BANK_ATK_PARTNER; @@ -782,9 +886,9 @@ void sub_80A477C(bool8 to_BG2) else bank = gAnimBankTarget; - if (gMonAnimTaskIdArray[0] != 0xFF) + if (sMonAnimTaskIdArray[0] != 0xFF) gSprites[gBankSpriteIds[bank]].invisible = 0; - if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF) + if (animBankId > 1 && sMonAnimTaskIdArray[1] != 0xFF) gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0; else animBankId = 0; @@ -793,10 +897,10 @@ void sub_80A477C(bool8 to_BG2) gTasks[taskId].data[0] = animBankId; gTasks[taskId].data[2] = bank; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; } -/*static*/ void sub_80A4980(u8 taskId) +static void sub_80A4980(u8 taskId) { gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] != 1) @@ -808,31 +912,31 @@ void sub_80A477C(bool8 to_BG2) else to_BG2 = TRUE; - if (gMonAnimTaskIdArray[0] != 0xFF) + if (sMonAnimTaskIdArray[0] != 0xFF) { sub_80A477C(to_BG2); - DestroyTask(gMonAnimTaskIdArray[0]); - gMonAnimTaskIdArray[0] = 0xFF; + DestroyTask(sMonAnimTaskIdArray[0]); + sMonAnimTaskIdArray[0] = 0xFF; } if (gTasks[taskId].data[0] > 1) { sub_80A477C(to_BG2 ^ 1); - DestroyTask(gMonAnimTaskIdArray[1]); - gMonAnimTaskIdArray[1] = 0xFF; + DestroyTask(sMonAnimTaskIdArray[1]); + sMonAnimTaskIdArray[1] = 0xFF; } DestroyTask(taskId); } } -/*static*/ void ScriptCmd_monbg_22(void) +static void ScriptCmd_monbg_22(void) { bool8 toBG_2; u8 bank; u8 animBankId; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; - animBankId = gBattleAnimScriptPtr[0]; + animBankId = sBattleAnimScriptPtr[0]; if (animBankId == ANIM_BANK_ATTACKER) animBankId = ANIM_BANK_ATK_PARTNER; @@ -867,17 +971,17 @@ void sub_80A477C(bool8 to_BG2) sub_80A438C(bank, toBG_2, FALSE); } - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; } -/*static*/ void ScriptCmd_clearmonbg_23(void) +static void ScriptCmd_clearmonbg_23(void) { u8 animBankId; u8 bank; u8 taskId; - gBattleAnimScriptPtr++; - animBankId = gBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + animBankId = sBattleAnimScriptPtr[0]; if (animBankId == ANIM_BANK_ATTACKER) animBankId = ANIM_BANK_ATK_PARTNER; @@ -900,10 +1004,10 @@ void sub_80A477C(bool8 to_BG2) gTasks[taskId].data[0] = animBankId; gTasks[taskId].data[2] = bank; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; } -/*static*/ void sub_80A4BB0(u8 taskId) +static void sub_80A4BB0(u8 taskId) { gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] != 1) @@ -934,85 +1038,85 @@ void sub_80A477C(bool8 to_BG2) #undef t2_MON_IN_BG2 #undef t2_MONBG_BANK -/*static*/ void ScriptCmd_setalpha(void) +static void ScriptCmd_setalpha(void) { u16 half1, half2; - gBattleAnimScriptPtr++; - half1 = *(gBattleAnimScriptPtr++); - half2 = *(gBattleAnimScriptPtr++) << 8; + sBattleAnimScriptPtr++; + half1 = *(sBattleAnimScriptPtr++); + half2 = *(sBattleAnimScriptPtr++) << 8; SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40); SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2); } -/*static*/ void ScriptCmd_setbldcnt(void) +static void ScriptCmd_setbldcnt(void) { u16 half1, half2; - gBattleAnimScriptPtr++; - half1 = *(gBattleAnimScriptPtr++); - half2 = *(gBattleAnimScriptPtr++) << 8; + sBattleAnimScriptPtr++; + half1 = *(sBattleAnimScriptPtr++); + half2 = *(sBattleAnimScriptPtr++) << 8; SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2); } -/*static*/ void ScriptCmd_blendoff(void) +static void ScriptCmd_blendoff(void) { - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); } -/*static*/ void ScriptCmd_call(void) +static void ScriptCmd_call(void) { - gBattleAnimScriptPtr++; - gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4; - gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); + sBattleAnimScriptPtr++; + sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4; + sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr); } -/*static*/ void ScriptCmd_return(void) +static void ScriptCmd_return(void) { - gBattleAnimScriptPtr = gBattleAnimScriptRetAddr; + sBattleAnimScriptPtr = sBattleAnimScriptRetAddr; } -/*static*/ void ScriptCmd_setarg(void) +static void ScriptCmd_setarg(void) { - const u8 *addr = gBattleAnimScriptPtr; + const u8 *addr = sBattleAnimScriptPtr; u16 value; u8 argId; - gBattleAnimScriptPtr++; - argId = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; - value = SCRIPT_READ_16(gBattleAnimScriptPtr); - gBattleAnimScriptPtr = addr + 4; + sBattleAnimScriptPtr++; + argId = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + value = SCRIPT_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr = addr + 4; gBattleAnimArgs[argId] = value; } -/*static*/ void ScriptCmd_choosetwoturnanim(void) +static void ScriptCmd_choosetwoturnanim(void) { - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; if (gAnimMoveTurn & 1) - gBattleAnimScriptPtr += 4; - gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); + sBattleAnimScriptPtr += 4; + sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr); } -/*static*/ void ScriptCmd_jumpifmoveturn(void) +static void ScriptCmd_jumpifmoveturn(void) { u8 toCheck; - gBattleAnimScriptPtr++; - toCheck = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; + toCheck = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; if (toCheck == gAnimMoveTurn) - gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); + sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr); else - gBattleAnimScriptPtr += 4; + sBattleAnimScriptPtr += 4; } -/*static*/ void ScriptCmd_jump(void) +static void ScriptCmd_jump(void) { - gBattleAnimScriptPtr++; - gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); + sBattleAnimScriptPtr++; + sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr); } // Uses of this function that rely on a TRUE return are expecting inBattle to not be ticked as defined in contest behavior. As a result, if misused, this function cannot reliably discern between field and contest status and could result in undefined behavior. @@ -1027,29 +1131,29 @@ bool8 IsContest(void) #define tBackgroundId data[0] #define tState data[10] -/*static*/ void ScriptCmd_fadetobg(void) +static void ScriptCmd_fadetobg(void) { u8 backgroundId; u8 taskId; - gBattleAnimScriptPtr++; - backgroundId = gBattleAnimScriptPtr[0]; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; + backgroundId = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; taskId = CreateTask(Task_FadeToBg, 5); gTasks[taskId].tBackgroundId = backgroundId; - gUnknown_02038433 = 1; + sAnimBackgroundFadeState = 1; } -/*static*/ void ScriptCmd_fadetobgfromset(void) +static void ScriptCmd_fadetobgfromset(void) { u8 bg1, bg2, bg3; u8 taskId; - gBattleAnimScriptPtr++; - bg1 = gBattleAnimScriptPtr[0]; - bg2 = gBattleAnimScriptPtr[1]; - bg3 = gBattleAnimScriptPtr[2]; - gBattleAnimScriptPtr += 3; + sBattleAnimScriptPtr++; + bg1 = sBattleAnimScriptPtr[0]; + bg2 = sBattleAnimScriptPtr[1]; + bg3 = sBattleAnimScriptPtr[2]; + sBattleAnimScriptPtr += 3; taskId = CreateTask(Task_FadeToBg, 5); if (IsContest()) @@ -1059,10 +1163,10 @@ bool8 IsContest(void) else gTasks[taskId].tBackgroundId = bg1; - gUnknown_02038433 = 1; + sAnimBackgroundFadeState = 1; } -/*static*/ void Task_FadeToBg(u8 taskId) +static void Task_FadeToBg(u8 taskId) { if (gTasks[taskId].tState == 0) { @@ -1075,11 +1179,11 @@ bool8 IsContest(void) if (gTasks[taskId].tState == 1) { gTasks[taskId].tState++; - gUnknown_02038433 = 2; + sAnimBackgroundFadeState = 2; } else if (gTasks[taskId].tState == 2) { - s16 bgId = (u16)gTasks[taskId].tBackgroundId; + s16 bgId = gTasks[taskId].tBackgroundId; if (bgId == -1) LoadDefaultBg(); @@ -1095,17 +1199,15 @@ bool8 IsContest(void) if (gTasks[taskId].tState == 3) { DestroyTask(taskId); - gUnknown_02038433 = 0; + sAnimBackgroundFadeState = 0; } } -extern u8 gDecompressionBuffer[]; - -/*static*/ void LoadMoveBg(u16 bgId) +static void LoadMoveBg(u16 bgId) { if (IsContest()) { - void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; + const void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; void *dmaSrc; void *dmaDest; @@ -1125,7 +1227,7 @@ extern u8 gDecompressionBuffer[]; } } -/*static*/ void LoadDefaultBg(void) +static void LoadDefaultBg(void) { if (IsContest()) LoadContestBgAfterMoveAnim(); @@ -1133,21 +1235,24 @@ extern u8 gDecompressionBuffer[]; LoadFittingBackgroundForBattle(); } -/*static*/ void ScriptCmd_restorebg(void) +static void ScriptCmd_restorebg(void) { u8 taskId; - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; taskId = CreateTask(Task_FadeToBg, 5); - gTasks[taskId].data[0] = 0xFFFF; - gUnknown_02038433 = 1; + gTasks[taskId].tBackgroundId = -1; + sAnimBackgroundFadeState = 1; } -/*static*/ void ScriptCmd_waitbgfadeout(void) +#undef tBackgroundId +#undef tState + +static void ScriptCmd_waitbgfadeout(void) { - if (gUnknown_02038433 == 2) + if (sAnimBackgroundFadeState == 2) { - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; gAnimFramesToWait = 0; } else @@ -1156,11 +1261,11 @@ extern u8 gDecompressionBuffer[]; } } -/*static*/ void ScriptCmd_waitbgfadein(void) +static void ScriptCmd_waitbgfadein(void) { - if (gUnknown_02038433 == 0) + if (sAnimBackgroundFadeState == 0) { - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; gAnimFramesToWait = 0; } else @@ -1169,11 +1274,11 @@ extern u8 gDecompressionBuffer[]; } } -/*static*/ void ScriptCmd_changebg(void) +static void ScriptCmd_changebg(void) { - gBattleAnimScriptPtr++; - LoadMoveBg(gBattleAnimScriptPtr[0]); - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; + LoadMoveBg(sBattleAnimScriptPtr[0]); + sBattleAnimScriptPtr++; } s8 BattleAnimAdjustPanning(s8 pan) @@ -1247,38 +1352,501 @@ s16 sub_80A52EC(s16 a) return var; } -s16 sub_80A5314(s16 a, s16 b, s16 c) +s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan) { - u16 var; + s16 ret; - if (a < b) - var = ((c < 0) ? -c : c); - else if (a > b) - var = -((c < 0) ? -c : c); + if (sourcePan < targetPan) + ret = ((incrementPan < 0) ? -incrementPan : incrementPan); + else if (sourcePan > targetPan) + ret = -((incrementPan < 0) ? -incrementPan : incrementPan); else - var = 0; + ret = 0; - return var; + return ret; } -/*static*/ void ScriptCmd_playsewithpan(void) +static void ScriptCmd_playsewithpan(void) { u16 songId; s8 pan; - gBattleAnimScriptPtr++; - songId = SCRIPT_READ_16(gBattleAnimScriptPtr); - pan = gBattleAnimScriptPtr[2]; + sBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(sBattleAnimScriptPtr); + pan = sBattleAnimScriptPtr[2]; PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan)); - gBattleAnimScriptPtr += 3; + sBattleAnimScriptPtr += 3; } -/*static*/ void ScriptCmd_setpan(void) +static void ScriptCmd_setpan(void) { s8 pan; - gBattleAnimScriptPtr++; - pan = gBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + pan = sBattleAnimScriptPtr[0]; SE12PanpotControl(BattleAnimAdjustPanning(pan)); - gBattleAnimScriptPtr++; + sBattleAnimScriptPtr++; +} + +#define tInitialPan data[0] +#define tTargetPan data[1] +#define tIncrementPan data[2] +#define tFramesToWait data[3] +#define tCurrentPan data[4] +#define tFrameCounter data[8] + +static void ScriptCmd_panse_1B(void) +{ + u16 songNum; + s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songNum = SCRIPT_READ_16(sBattleAnimScriptPtr); + currentPanArg = sBattleAnimScriptPtr[2]; + incrementPan = sBattleAnimScriptPtr[3]; + incrementPanArg = sBattleAnimScriptPtr[4]; + framesToWait = sBattleAnimScriptPtr[5]; + + currentPan = BattleAnimAdjustPanning(currentPanArg); + targetPan = BattleAnimAdjustPanning(incrementPan); + incrementPan = CalculatePanIncrement(currentPan, targetPan, incrementPanArg); + taskId = CreateTask(Task_PanFromInitialToTarget, 1); + gTasks[taskId].tInitialPan = currentPan; + gTasks[taskId].tTargetPan = targetPan; + gTasks[taskId].tIncrementPan = incrementPan; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tCurrentPan = currentPan; + + PlaySE12WithPanning(songNum, currentPan); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 6; +} + +void Task_PanFromInitialToTarget(u8 taskId) +{ + bool32 destroyTask = FALSE; + if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait) + { + s16 pan; + s16 initialPanning, targetPanning, currentPan, incrementPan; + + gTasks[taskId].tFrameCounter = 0; + initialPanning = gTasks[taskId].tInitialPan; + targetPanning = gTasks[taskId].tTargetPan; + currentPan = gTasks[taskId].tCurrentPan; + incrementPan = gTasks[taskId].tIncrementPan; + pan = currentPan + incrementPan; + gTasks[taskId].tCurrentPan = pan; + + if (incrementPan == 0) // If we're not incrementing, just cancel the task immediately + { + destroyTask = TRUE; + } + else if (initialPanning < targetPanning) // Panning increasing + { + if (pan >= targetPanning) // Target reached + destroyTask = TRUE; + } + else // Panning decreasing + { + if (pan <= targetPanning) // Target reached + destroyTask = TRUE; + } + + if (destroyTask) + { + pan = targetPanning; + DestroyTask(taskId); + gAnimSoundTaskCount--; + } + + SE12PanpotControl(pan); + } +} + +static void ScriptCmd_panse_26(void) +{ + u16 songId; + s8 currentPan, targetPan, incrementPan; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(sBattleAnimScriptPtr); + currentPan = sBattleAnimScriptPtr[2]; + targetPan = sBattleAnimScriptPtr[3]; + incrementPan = sBattleAnimScriptPtr[4]; + framesToWait = sBattleAnimScriptPtr[5]; + + taskId = CreateTask(Task_PanFromInitialToTarget, 1); + gTasks[taskId].tInitialPan = currentPan; + gTasks[taskId].tTargetPan = targetPan; + gTasks[taskId].tIncrementPan = incrementPan; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tCurrentPan = currentPan; + + PlaySE12WithPanning(songId, currentPan); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 6; +} + +static void ScriptCmd_panse_27(void) +{ + u16 songId; + s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(sBattleAnimScriptPtr); + currentPanArg = sBattleAnimScriptPtr[2]; + targetPanArg = sBattleAnimScriptPtr[3]; + incrementPanArg = sBattleAnimScriptPtr[4]; + framesToWait = sBattleAnimScriptPtr[5]; + + currentPan = BattleAnimAdjustPanning2(currentPanArg); + targetPan = BattleAnimAdjustPanning2(targetPanArg); + incrementPan = BattleAnimAdjustPanning2(incrementPanArg); + + taskId = CreateTask(Task_PanFromInitialToTarget, 1); + gTasks[taskId].tInitialPan = currentPan; + gTasks[taskId].tTargetPan = targetPan; + gTasks[taskId].tIncrementPan = incrementPan; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tCurrentPan = currentPan; + + PlaySE12WithPanning(songId, currentPan); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 6; +} + +#undef tInitialPan +#undef tTargetPan +#undef tIncrementPan +#undef tFramesToWait +#undef tCurrentPan +#undef tFrameCounter + +#define tSongId data[0] +#define tPanning data[1] +#define tFramesToWait data[2] +#define tNumberOfPlays data[3] +#define tFrameCounter data[8] + +static void ScriptCmd_loopsewithpan(void) +{ + u16 songId; + s8 panningArg, panning; + u8 framesToWait, numberOfPlays; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(sBattleAnimScriptPtr); + panningArg = sBattleAnimScriptPtr[2]; + framesToWait = sBattleAnimScriptPtr[3]; + numberOfPlays = sBattleAnimScriptPtr[4]; + panning = BattleAnimAdjustPanning(panningArg); + + taskId = CreateTask(Task_LoopAndPlaySE, 1); + gTasks[taskId].tSongId = songId; + gTasks[taskId].tPanning = panning; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tNumberOfPlays = numberOfPlays; + gTasks[taskId].tFrameCounter = framesToWait; + gTasks[taskId].func(taskId); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 5; +} + +static void Task_LoopAndPlaySE(u8 taskId) +{ + if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait) + { + u16 songId; + s8 panning; + u8 numberOfPlays; + + gTasks[taskId].tFrameCounter = 0; + songId = gTasks[taskId].tSongId; + panning = gTasks[taskId].tPanning; + numberOfPlays = --gTasks[taskId].tNumberOfPlays; + PlaySE12WithPanning(songId, panning); + if (numberOfPlays == 0) + { + DestroyTask(taskId); + gAnimSoundTaskCount--; + } + } +} + +#undef tSongId +#undef tPanning +#undef tFramesToWait +#undef tNumberOfPlays +#undef tFrameCounter + +#define tSongId data[0] +#define tPanning data[1] +#define tFramesToWait data[2] + +static void ScriptCmd_waitplaysewithpan(void) +{ + u16 songId; + s8 panningArg, panning; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(sBattleAnimScriptPtr); + panningArg = sBattleAnimScriptPtr[2]; + framesToWait = sBattleAnimScriptPtr[3]; + panning = BattleAnimAdjustPanning(panningArg); + + taskId = CreateTask(Task_WaitAndPlaySE, 1); + gTasks[taskId].tSongId = songId; + gTasks[taskId].tPanning = panning; + gTasks[taskId].tFramesToWait = framesToWait; + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 4; +} + +static void Task_WaitAndPlaySE(u8 taskId) +{ + if (gTasks[taskId].tFramesToWait-- <= 0) + { + PlaySE12WithPanning(gTasks[taskId].tSongId, gTasks[taskId].tPanning); + DestroyTask(taskId); + gAnimSoundTaskCount--; + } +} + +#undef tSongId +#undef tPanning +#undef tFramesToWait + +static void ScriptCmd_createsoundtask(void) +{ + TaskFunc func; + u8 numArgs, taskId; + s32 i; + + sBattleAnimScriptPtr++; + func = (TaskFunc)SCRIPT_READ_32(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 4; + numArgs = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + for (i = 0; i < numArgs; i++) + { + gBattleAnimArgs[i] = SCRIPT_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; + } + taskId = CreateTask(func, 1); + func(taskId); + gAnimSoundTaskCount++; +} + +static void ScriptCmd_waitsound(void) +{ + if (gAnimSoundTaskCount != 0) + { + sSoundAnimFramesToWait = 0; + gAnimFramesToWait = 1; + } + else if (IsSEPlaying()) + { + if (++sSoundAnimFramesToWait > 90) + { + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + sSoundAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait = 1; + } + } + else + { + sSoundAnimFramesToWait = 0; + sBattleAnimScriptPtr++; + gAnimFramesToWait = 0; + } +} + +static void ScriptCmd_jumpargeq(void) +{ + u8 argId; + s16 valueToCheck; + + sBattleAnimScriptPtr++; + argId = sBattleAnimScriptPtr[0]; + valueToCheck = SCRIPT_READ_16(sBattleAnimScriptPtr + 1); + + if (valueToCheck == gBattleAnimArgs[argId]) + sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr + 3); + else + sBattleAnimScriptPtr += 7; +} + +static void ScriptCmd_jumpifcontest(void) +{ + sBattleAnimScriptPtr++; + if (IsContest()) + sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr); + else + sBattleAnimScriptPtr += 4; +} + +static void ScriptCmd_monbgprio_28(void) +{ + u8 wantedBank; + u8 bank; + u8 bankIdentity; + + wantedBank = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + + if (wantedBank != ANIM_BANK_ATTACKER) + bank = gAnimBankTarget; + else + bank = gAnimBankAttacker; + + bankIdentity = GetBankIdentity(bank); + if (!IsContest() && (bankIdentity == IDENTITY_PLAYER_MON1 || bankIdentity == IDENTITY_OPPONENT_MON2)) + { + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + } +} + +static void ScriptCmd_monbgprio_29(void) +{ + sBattleAnimScriptPtr++; + if (!IsContest()) + { + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + } +} + +static void ScriptCmd_monbgprio_2A(void) +{ + u8 wantedBank; + u8 bankIdentity; + u8 bank; + + wantedBank = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + if (GetBankSide(gAnimBankAttacker) != GetBankSide(gAnimBankTarget)) + { + if (wantedBank != ANIM_BANK_ATTACKER) + bank = gAnimBankTarget; + else + bank = gAnimBankAttacker; + + bankIdentity = GetBankIdentity(bank); + if (!IsContest() && (bankIdentity == IDENTITY_PLAYER_MON1 || bankIdentity == IDENTITY_OPPONENT_MON2)) + { + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + } + } +} + +static void ScriptCmd_invisible(void) +{ + u8 spriteId; + + spriteId = GetAnimBankSpriteId(sBattleAnimScriptPtr[1]); + if (spriteId != 0xFF) + gSprites[spriteId].invisible = 1; + + sBattleAnimScriptPtr += 2; +} + +static void ScriptCmd_visible(void) +{ + u8 spriteId; + + spriteId = GetAnimBankSpriteId(sBattleAnimScriptPtr[1]); + if (spriteId != 0xFF) + gSprites[spriteId].invisible = 0; + + sBattleAnimScriptPtr += 2; +} + +static void ScriptCmd_doublebattle_2D(void) +{ + u8 wantedBank; + u8 r4; + u8 spriteId; + + wantedBank = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + if (!IsContest() && IsDoubleBattle() + && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)) + { + if (wantedBank == ANIM_BANK_ATTACKER) + { + r4 = sub_80A8364(gAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); + } + else + { + r4 = sub_80A8364(gAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); + } + if (spriteId != 0xFF) + { + gSprites[spriteId].invisible = FALSE; + if (r4 == 2) + gSprites[spriteId].oam.priority = 3; + + if (r4 == 1) + sub_80A477C(FALSE); + else + sub_80A477C(TRUE); + } + } +} + +static void ScriptCmd_doublebattle_2E(void) +{ + u8 wantedBank; + u8 r4; + u8 spriteId; + + wantedBank = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + if (!IsContest() && IsDoubleBattle() + && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)) + { + if (wantedBank == ANIM_BANK_ATTACKER) + { + r4 = sub_80A8364(gAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); + } + else + { + r4 = sub_80A8364(gAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); + } + + if (spriteId != 0xFF && r4 == 2) + gSprites[spriteId].oam.priority = 2; + } +} + +static void ScriptCmd_stopsound(void) +{ + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + sBattleAnimScriptPtr++; } From 4b45282dd37266cc7d263a6fd4a5223f8e92b5be Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 16 Oct 2017 18:12:27 +0200 Subject: [PATCH 151/182] start working on battle interface --- asm/battle_7.s | 16 +- asm/battle_anim_80FE840.s | 10 +- asm/battle_controller_linkopponent.s | 4 +- asm/battle_controller_linkpartner.s | 4 +- asm/battle_controller_opponent.s | 4 +- asm/battle_controller_player.s | 6 +- asm/battle_controller_player_partner.s | 6 +- asm/battle_controller_recorded_opponent.s | 4 +- asm/battle_controller_recorded_player.s | 4 +- asm/battle_controller_wally.s | 4 +- asm/battle_interface.s | 839 +--------------------- asm/contest.s | 2 +- asm/rom3.s | 26 +- asm/rom_80A5C6C.s | 8 +- data/battle_interface.s | 41 -- data/graphics.s | 2 +- include/battle.h | 10 + include/gba/types.h | 14 +- ld_script.txt | 2 + src/battle_interface.c | 615 ++++++++++++++++ sym_ewram.txt | 2 +- 21 files changed, 706 insertions(+), 917 deletions(-) create mode 100644 src/battle_interface.c diff --git a/asm/battle_7.s b/asm/battle_7.s index 36a0bf282e..568a0d6465 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -1801,7 +1801,7 @@ _0805E056: movs r4, 0 cmp r4, r5 bcs _0805E076 - ldr r7, =gBanksBySide + ldr r7, =gBanksByIdentity ldr r6, =gUnknown_0832C108 _0805E060: adds r0, r4, r7 @@ -1874,14 +1874,14 @@ _0805E0F0: _0805E100: cmp r4, 0x4 bne _0805E110 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0] b _0805E198 .pool _0805E110: cmp r4, 0x5 bne _0805E1AC - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x1] b _0805E198 .pool @@ -1916,28 +1916,28 @@ _0805E150: _0805E160: cmp r4, 0x6 bne _0805E170 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0] b _0805E198 .pool _0805E170: cmp r4, 0x7 bne _0805E180 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x1] b _0805E198 .pool _0805E180: cmp r4, 0x8 bne _0805E190 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x2] b _0805E198 .pool _0805E190: cmp r5, 0x9 bne _0805E1AC - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r0, [r0, 0x3] _0805E198: lsls r0, 3 @@ -2038,7 +2038,7 @@ _0805E252: _0805E260: ldrb r0, [r4] bl SetBankHealthboxSpritePos - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 4ecdcbf680..eacc71eba8 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -10676,7 +10676,7 @@ _08103D54: strh r0, [r3, 0x4] b _08103DB6 _08103D5C: - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity ldr r0, =gAnimationBankTarget ldrb r0, [r0] adds r0, r1 @@ -27474,7 +27474,7 @@ sub_810C560: @ 810C560 lsls r0, 8 strh r0, [r5, 0x3C] _0810C594: - ldr r3, =gBanksBySide + ldr r3, =gBanksByIdentity ldrb r0, [r7] adds r0, r3 ldrb r1, [r0] @@ -27699,7 +27699,7 @@ _0810C736: lsls r0, 24 cmp r0, 0 bne _0810C78C - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity ldrb r0, [r6] adds r0, r1 ldrb r1, [r0] @@ -27843,7 +27843,7 @@ _0810C85A: lsls r0, 24 cmp r0, 0 bne _0810C8B4 - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity ldr r0, =gAnimationBankTarget ldrb r0, [r0] adds r0, r1 @@ -28771,7 +28771,7 @@ _0810D000: negs r0, r0 lsrs r4, r0, 16 _0810D012: - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity add r0, r8 ldrb r1, [r0] adds r0, r7, 0 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index bf350a8bc3..afa388d3b0 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5171,7 +5171,7 @@ sub_80670A0: @ 80670A0 ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0806715A .pool _08067130: @@ -5193,7 +5193,7 @@ _08067130: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct _0806715A: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index b26943cf5c..9c0e44d43b 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4480,7 +4480,7 @@ sub_814D63C: @ 814D63C ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0814D6F6 .pool _0814D6CC: @@ -4502,7 +4502,7 @@ _0814D6CC: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct _0814D6F6: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 424e4159df..5e5a790ddc 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5621,7 +5621,7 @@ sub_8062294: @ 8062294 ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0806234E .pool _08062324: @@ -5643,7 +5643,7 @@ _08062324: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct _0806234E: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 047c62f6b7..80796fa589 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -3557,7 +3557,7 @@ sub_8059330: @ 8059330 negs r0, r0 str r0, [sp] mov r0, r10 - bl sub_807294C + bl SetBattleBarStruct movs r0, 0x21 bl PlaySE ldr r0, =sub_8059400 @@ -8992,7 +8992,7 @@ _0805C44A: ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0805C4F2 .pool _0805C4B4: @@ -9016,7 +9016,7 @@ _0805C4B4: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct mov r2, r9 ldrb r0, [r2] adds r0, r4 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 35ee3a733f..7c7b4939c4 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -789,7 +789,7 @@ sub_81BB414: @ 81BB414 negs r0, r0 str r0, [sp] mov r0, r10 - bl sub_807294C + bl SetBattleBarStruct movs r0, 0x21 bl PlaySE ldr r0, =sub_81BB4E4 @@ -5209,7 +5209,7 @@ sub_81BDC10: @ 81BDC10 ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _081BDCCA .pool _081BDCA0: @@ -5231,7 +5231,7 @@ _081BDCA0: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct _081BDCCA: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 562b55d4d2..701c1d11ca 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4910,7 +4910,7 @@ sub_8188FD0: @ 8188FD0 ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0818908A .pool _08189060: @@ -4932,7 +4932,7 @@ _08189060: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct _0818908A: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index f7dfc0fedf..0bc8c23929 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -5054,7 +5054,7 @@ sub_818C5E8: @ 818C5E8 ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0818C6B2 .pool _0818C678: @@ -5076,7 +5076,7 @@ _0818C678: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct mov r1, r9 ldrb r0, [r1] adds r0, r4 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index de17547a11..8bf630188f 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3883,7 +3883,7 @@ sub_816A5D4: @ 816A5D4 ldrb r1, [r1] str r7, [sp] mov r2, r8 - bl sub_807294C + bl SetBattleBarStruct b _0816A69E .pool _0816A664: @@ -3905,7 +3905,7 @@ _0816A664: ldrb r1, [r1] str r7, [sp] movs r3, 0 - bl sub_807294C + bl SetBattleBarStruct mov r1, r9 ldrb r0, [r1] adds r0, r4 diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 1f1185032e..d1762c93a2 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -5,803 +5,6 @@ .text - thumb_func_start sub_8072304 -sub_8072304: @ 8072304 - movs r0, 0x9 - bx lr - thumb_func_end sub_8072304 - - thumb_func_start sub_8072308 -sub_8072308: @ 8072308 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - movs r3, 0 - movs r2, 0 -_08072324: - lsls r0, r3, 24 - asrs r0, 24 - mov r3, sp - adds r1, r3, r0 - strb r2, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _08072324 - movs r3, 0x3 - movs r0, 0x1 - negs r0, r0 - mov r9, r0 - mov r8, sp -_08072344: - lsls r0, r5, 16 - asrs r6, r0, 16 - cmp r6, 0 - ble _08072372 - lsls r4, r3, 24 - asrs r4, 24 - mov r1, sp - adds r5, r1, r4 - adds r0, r6, 0 - movs r1, 0xA - bl __modsi3 - strb r0, [r5] - adds r0, r6, 0 - movs r1, 0xA - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - subs r4, 0x1 - lsls r4, 24 - lsrs r3, r4, 24 - b _08072344 -_08072372: - lsls r1, r3, 24 - asrs r0, r1, 24 - cmp r0, r9 - ble _08072396 - movs r4, 0xFF - movs r3, 0x1 - negs r3, r3 -_08072380: - asrs r2, r1, 24 - mov r5, sp - adds r1, r5, r2 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - subs r2, 0x1 - lsls r1, r2, 24 - asrs r0, r1, 24 - cmp r0, r3 - bgt _08072380 -_08072396: - mov r1, r8 - ldrb r0, [r1, 0x3] - cmp r0, 0xFF - bne _080723A2 - movs r0, 0 - strb r0, [r1, 0x3] -_080723A2: - mov r2, r10 - cmp r2, 0 - bne _08072432 - movs r3, 0 - movs r1, 0 - movs r6, 0xFC - lsls r6, 8 - movs r5, 0x1E - mov r12, r5 -_080723B4: - lsls r1, 24 - asrs r2, r1, 24 - mov r0, sp - adds r5, r0, r2 - ldrb r0, [r5] - mov r8, r1 - cmp r0, 0xFF - bne _080723EA - lsls r1, r2, 1 - adds r1, r7 - ldrh r2, [r1] - adds r0, r6, 0 - ands r0, r2 - mov r2, r12 - orrs r0, r2 - strh r0, [r1] - lsls r3, 24 - asrs r1, r3, 23 - adds r1, r7 - adds r1, 0x40 - ldrh r2, [r1] - adds r0, r6, 0 - ands r0, r2 - mov r5, r12 - orrs r0, r5 - strh r0, [r1] - b _0807241A -_080723EA: - lsls r2, 1 - adds r2, r7 - ldrh r0, [r2] - adds r1, r6, 0 - ands r1, r0 - ldrb r0, [r5] - adds r0, 0x14 - orrs r1, r0 - strh r1, [r2] - lsls r4, r3, 24 - asrs r3, r4, 24 - lsls r2, r3, 1 - adds r2, r7 - adds r2, 0x40 - ldrh r0, [r2] - adds r1, r6, 0 - ands r1, r0 - mov r5, sp - adds r0, r5, r3 - ldrb r0, [r0] - adds r0, 0x34 - orrs r1, r0 - strh r1, [r2] - adds r3, r4, 0 -_0807241A: - movs r0, 0x80 - lsls r0, 17 - add r0, r8 - lsrs r1, r0, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r3, r2 - lsrs r3, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080723B4 - b _08072496 -_08072432: - movs r3, 0 - movs r4, 0xFC - lsls r4, 8 - movs r6, 0x1E -_0807243A: - lsls r1, r3, 24 - asrs r2, r1, 24 - mov r3, sp - adds r5, r3, r2 - ldrb r0, [r5] - adds r3, r1, 0 - cmp r0, 0xFF - bne _08072466 - lsls r1, r2, 1 - adds r1, r7 - ldrh r2, [r1] - adds r0, r4, 0 - ands r0, r2 - orrs r0, r6 - strh r0, [r1] - adds r1, 0x40 - ldrh r2, [r1] - adds r0, r4, 0 - ands r0, r2 - orrs r0, r6 - strh r0, [r1] - b _08072488 -_08072466: - lsls r2, 1 - adds r2, r7 - ldrh r0, [r2] - adds r1, r4, 0 - ands r1, r0 - ldrb r0, [r5] - adds r0, 0x14 - orrs r1, r0 - strh r1, [r2] - adds r2, 0x40 - ldrh r0, [r2] - adds r1, r4, 0 - ands r1, r0 - ldrb r0, [r5] - adds r0, 0x34 - orrs r1, r0 - strh r1, [r2] -_08072488: - movs r5, 0x80 - lsls r5, 17 - adds r0, r3, r5 - lsrs r3, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _0807243A -_08072496: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8072308 - - thumb_func_start sub_80724A8 -sub_80724A8: @ 80724A8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - movs r1, 0x1E - strh r1, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - adds r1, r5, 0 - movs r2, 0 - bl sub_8072308 - lsls r4, 16 - asrs r4, 16 - adds r5, 0xA - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_8072308 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80724A8 - - thumb_func_start CreateBankHealthboxSprites -CreateBankHealthboxSprites: @ 80724DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r0, 0 - str r0, [sp] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _080725F0 - mov r0, r10 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08072574 - ldr r4, =gUnknown_0832C140 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x1] - movs r3, 0x3F - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1, 0x1] - lsls r2, r7, 4 - adds r2, r7 - lsls r2, 2 - adds r2, r4 - ldrb r0, [r2, 0x1] - ands r3, r0 - strb r3, [r2, 0x1] - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x40 - ldr r4, =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - b _080725BA - .pool -_08072574: - ldr r4, =gUnknown_0832C170 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gSprites - lsls r2, r7, 4 - adds r2, r7 - lsls r2, 2 - adds r2, r0 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r5, =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - movs r0, 0x2 - str r0, [sp] -_080725BA: - ldr r2, =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r2 - strh r7, [r0, 0x6] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r1, r0, r2 - strh r6, [r1, 0x38] - adds r2, 0x1C - adds r0, r2 - ldr r1, =sub_8072924 - str r1, [r0] - b _08072718 - .pool -_080725F0: - mov r0, r10 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08072694 - mov r0, r10 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 25 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldr r4, =gUnknown_0832C140 - adds r0, r4 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r10 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 25 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x6] - lsls r2, r7, 4 - adds r2, r7 - lsls r2, 2 - adds r3, r2, r4 - strh r6, [r3, 0x38] - ldrh r1, [r3, 0x4] - mov r8, r1 - mov r5, r8 - lsls r1, r5, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r5, =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - mov r5, r8 - ands r0, r5 - orrs r0, r1 - strh r0, [r3, 0x4] - adds r4, 0x1C - adds r2, r4 - ldr r0, =sub_8072924 - str r0, [r2] - movs r0, 0x1 - b _08072716 - .pool -_08072694: - mov r0, r10 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 25 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldr r4, =gUnknown_0832C170 - adds r0, r4 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r10 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 25 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x6] - lsls r2, r7, 4 - adds r2, r7 - lsls r2, 2 - adds r3, r2, r4 - strh r6, [r3, 0x38] - ldrh r1, [r3, 0x4] - mov r8, r1 - mov r5, r8 - lsls r1, r5, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r5, =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - mov r5, r8 - ands r0, r5 - orrs r0, r1 - strh r0, [r3, 0x4] - adds r4, 0x1C - adds r2, r4 - ldr r0, =sub_8072924 - str r0, [r2] - movs r0, 0x2 -_08072716: - str r0, [sp] -_08072718: - ldr r0, =gBanksBySide - add r0, r10 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldr r1, =gUnknown_0832C1C0 - adds r0, r1 - movs r1, 0x8C - movs r2, 0x3C - movs r3, 0 - bl CreateSpriteAtEnd - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r1, =gSprites - mov r8, r1 - add r4, r8 - mov r0, r10 - bl GetBankSide - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 21 - ldr r0, =gUnknown_0832C28C - adds r1, r0 - adds r0, r4, 0 - bl SetSubspriteTables - adds r2, r4, 0 - adds r2, 0x42 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r2, 0x4 - mov r9, r2 - mov r1, r9 - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0x1 - bl sub_80728A4 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000010 - bl CpuSet - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - add r0, r8 - strh r5, [r0, 0x38] - mov r2, r10 - strh r2, [r0, 0x3A] - adds r0, 0x3E - ldrb r1, [r0] - mov r5, r9 - orrs r1, r5 - strb r1, [r0] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r8 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r5 - strb r1, [r0] - strh r6, [r4, 0x38] - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x3A] - adds r4, 0x3E - ldrb r0, [r4] - orrs r0, r5 - strb r0, [r4] - adds r0, r6, 0 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end CreateBankHealthboxSprites - - thumb_func_start CreateSafariPlayerHealthboxSprites -CreateSafariPlayerHealthboxSprites: @ 8072804 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, =gUnknown_0832C1A0 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSprite - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x1 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSprites - mov r9, r1 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - add r4, r9 - ldrb r3, [r4, 0x1] - movs r2, 0x3F - adds r1, r2, 0 - ands r1, r3 - strb r1, [r4, 0x1] - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - mov r7, r9 - adds r5, r3, r7 - ldrb r1, [r5, 0x1] - ands r2, r1 - strb r2, [r5, 0x1] - ldrh r1, [r5, 0x4] - mov r8, r1 - mov r7, r8 - lsls r2, r7, 22 - lsrs r2, 22 - adds r2, 0x40 - ldr r7, =0x000003ff - adds r1, r7, 0 - ands r2, r1 - ldr r1, =0xfffffc00 - mov r7, r8 - ands r1, r7 - orrs r1, r2 - strh r1, [r5, 0x4] - strh r0, [r4, 0x6] - strh r6, [r5, 0x38] - movs r0, 0x1C - add r9, r0 - add r3, r9 - ldr r0, =sub_8072924 - str r0, [r3] - adds r0, r6, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end CreateSafariPlayerHealthboxSprites - - thumb_func_start sub_80728A4 -sub_80728A4: @ 80728A4 - lsls r0, 24 - lsrs r0, 19 - ldr r1, =gUnknown_08C11BDC - adds r0, r1 - bx lr - .pool - thumb_func_end sub_80728A4 - - thumb_func_start sub_80728B4 -sub_80728B4: @ 80728B4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080728E4 - cmp r0, 0x1 - bgt _080728F8 - cmp r0, 0 - bne _080728F8 - ldr r2, =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x20] - adds r0, 0x10 - b _08072906 - .pool -_080728E4: - ldr r2, =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x20] - adds r0, 0x10 - b _08072906 - .pool -_080728F8: - ldr r2, =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x20] - adds r0, 0x8 -_08072906: - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x22] - strh r0, [r4, 0x22] - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - strh r1, [r4, 0x24] - ldrh r0, [r0, 0x26] - strh r0, [r4, 0x26] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80728B4 - - thumb_func_start sub_8072924 -sub_8072924: @ 8072924 - ldrh r1, [r0, 0x38] - lsls r1, 24 - lsrs r1, 24 - ldr r3, =gSprites - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r2, 0x20] - adds r1, 0x40 - strh r1, [r0, 0x20] - ldrh r1, [r2, 0x22] - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x24] - strh r1, [r0, 0x24] - ldrh r1, [r2, 0x26] - strh r1, [r0, 0x26] - bx lr - .pool - thumb_func_end sub_8072924 - - thumb_func_start sub_807294C -sub_807294C: @ 807294C - push {r4-r7,lr} - ldr r7, [sp, 0x14] - lsls r0, 24 - lsrs r0, 24 - ldr r6, =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, [r4, 0xC] - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 2 - adds r5, r4, r5 - strb r1, [r5] - ldr r0, [r6] - ldr r0, [r0, 0xC] - adds r4, r0 - str r2, [r4, 0x4] - str r3, [r4, 0x8] - str r7, [r4, 0xC] - ldr r0, =0xffff8000 - str r0, [r4, 0x10] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807294C - thumb_func_start SetHealthboxSpriteInvisible SetHealthboxSpriteInvisible: @ 8072984 push {r4,lr} @@ -1448,7 +651,7 @@ _08072E5E: ldr r0, [sp, 0x28] bl sub_807512C movs r0, 0x74 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr ldrh r1, [r7, 0x4] lsls r1, 22 lsrs r1, 17 @@ -1647,7 +850,7 @@ _08073084: cmp r0, 0 bne _080730B8 movs r0, 0x74 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr ldr r2, =gSprites mov r3, r9 lsls r1, r3, 4 @@ -1778,7 +981,7 @@ _080731A4: _080731A8: movs r0, 0x2B _080731AA: - bl sub_80728A4 + bl GetHealthboxElementGfxPtr lsls r1, r5, 6 adds r1, r6, r1 ldr r2, =0x04000008 @@ -2109,7 +1312,7 @@ _08073468: movs r2, 0x5 bl UpdateHealthboxAttribute movs r0, 0x75 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr ldrb r2, [r6] lsls r1, r2, 4 adds r1, r2 @@ -3932,7 +3135,7 @@ sub_8074310: @ 8074310 cmp r7, 0 beq _080743C4 movs r0, 0x46 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr lsls r1, r4, 4 adds r1, r4 lsls r1, 2 @@ -4047,7 +3250,7 @@ _08074484: bl sub_80746A8 lsls r0, 24 lsrs r0, 24 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr adds r6, r0, 0 movs r0, 0x2 b _080745B8 @@ -4062,7 +3265,7 @@ _080744AC: bl sub_80746A8 lsls r0, 24 lsrs r0, 24 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr adds r6, r0, 0 movs r0, 0 b _080745B8 @@ -4076,7 +3279,7 @@ _080744CA: bl sub_80746A8 lsls r0, 24 lsrs r0, 24 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr adds r6, r0, 0 movs r0, 0x4 b _080745B8 @@ -4090,7 +3293,7 @@ _080744E8: bl sub_80746A8 lsls r0, 24 lsrs r0, 24 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr adds r6, r0, 0 movs r0, 0x3 b _080745B8 @@ -4104,13 +3307,13 @@ _08074506: bl sub_80746A8 lsls r0, 24 lsrs r0, 24 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr adds r6, r0, 0 movs r0, 0x1 b _080745B8 _08074524: movs r0, 0x27 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr adds r6, r0, 0 movs r4, 0 mov r2, r9 @@ -4150,7 +3353,7 @@ _08074542: cmp r0, 0 bne _08074598 movs r0, 0x1 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr ldr r2, =gSprites mov r3, r10 lsls r1, r3, 4 @@ -4233,7 +3436,7 @@ _08074626: cmp r0, 0 bne _08074672 movs r0, 0 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr mov r3, r10 lsls r4, r3, 4 add r4, r10 @@ -4248,7 +3451,7 @@ _08074626: adds r2, r5, 0 bl CpuSet movs r0, 0x41 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr ldrh r1, [r4, 0x4] lsls r1, 22 lsrs r1, 17 @@ -4574,7 +3777,7 @@ _08074914: mov r0, r9 adds r1, r6, 0 adds r2, r4, 0 - bl sub_807294C + bl SetBattleBarStruct mov r0, r9 adds r1, r6, 0 movs r2, 0 @@ -4636,7 +3839,7 @@ _0807495E: str r0, [sp] mov r0, r9 adds r1, r6, 0 - bl sub_807294C + bl SetBattleBarStruct mov r0, r9 adds r1, r6, 0 movs r2, 0x1 @@ -4710,7 +3913,7 @@ _08074A3C: mov r0, r9 adds r1, r6, 0 adds r2, r4, 0 - bl sub_807294C + bl SetBattleBarStruct mov r0, r9 adds r1, r6, 0 movs r2, 0 @@ -4941,7 +4144,7 @@ _08074BFA: cmp r5, 0x1 bhi _08074C5C mov r0, r9 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr mov r1, sp adds r1, r5 adds r1, 0x8 @@ -4966,7 +4169,7 @@ _08074BFA: .pool _08074C5C: mov r0, r9 - bl sub_80728A4 + bl GetHealthboxElementGfxPtr mov r1, sp adds r1, r5 adds r1, 0x8 @@ -5048,7 +4251,7 @@ _08074D02: cmp r5, 0x3 bhi _08074D5C movs r0, 0xC - bl sub_80728A4 + bl GetHealthboxElementGfxPtr mov r1, sp adds r1, r5 adds r1, 0x8 @@ -5079,7 +4282,7 @@ _08074D02: .pool _08074D5C: movs r0, 0xC - bl sub_80728A4 + bl GetHealthboxElementGfxPtr mov r1, sp adds r1, r5 adds r1, 0x8 diff --git a/asm/contest.s b/asm/contest.s index eebe557e5d..b56e4b3cc1 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1048,7 +1048,7 @@ _080D8004: bl sub_80DC594 bl sub_80DC5E8 bl sub_80DC7EC - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r4, [r1] movs r0, 0x1 strb r0, [r1, 0x1] diff --git a/asm/rom3.s b/asm/rom3.s index 0159a453aa..5d38ae06d3 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -51,7 +51,7 @@ SetUpBattleVarsAndBirchZigzagoon: @ 803269C movs r2, 0 ldr r5, =gMoveSelectionCursor ldr r4, =nullsub_21 - ldr r3, =gBanksBySide + ldr r3, =gBanksByIdentity _080326B8: lsls r0, r1, 2 adds r0, r7 @@ -232,7 +232,7 @@ b_setup_bx: @ 8032824 ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand str r0, [r2] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity movs r0, 0 strb r0, [r1] b _0803287E @@ -241,7 +241,7 @@ _08032874: ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand str r0, [r2] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r4, [r1] _0803287E: ldr r3, =SetBankFuncToOpponentBufferRunCommand @@ -313,7 +313,7 @@ _08032930: _08032934: str r0, [r1] mov r10, r1 - ldr r4, =gBanksBySide + ldr r4, =gBanksByIdentity movs r0, 0 mov r9, r0 mov r1, r9 @@ -386,7 +386,7 @@ _080329E0: ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand str r0, [r2] - ldr r4, =gBanksBySide + ldr r4, =gBanksByIdentity strb r5, [r4] ldr r6, =SetBankFuncToOpponentBufferRunCommand str r6, [r2, 0x4] @@ -756,7 +756,7 @@ b_setup_bx_link: @ 8032CC0 ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand str r0, [r2] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r3, [r1] ldr r0, =SetBankFuncToLinkOpponentBufferRunCommand str r0, [r2, 0x4] @@ -769,7 +769,7 @@ _08032D1C: ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r4, [r1, 0x1] ldr r0, =SetBankFuncToLinkOpponentBufferRunCommand str r0, [r2] @@ -794,7 +794,7 @@ _08032D48: ldr r2, =gBattleBankFunc ldr r4, =SetBankFuncToPlayerBufferRunCommand str r4, [r2] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity movs r0, 0 strb r0, [r1] ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand @@ -812,7 +812,7 @@ _08032D98: ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r3, [r1, 0x1] ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand str r3, [r2] @@ -845,7 +845,7 @@ _08032DD0: ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToPlayerBufferRunCommand str r0, [r2] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity movs r0, 0 strb r0, [r1] ldr r3, =SetBankFuncToOpponentBufferRunCommand @@ -858,7 +858,7 @@ _08032E1C: ldr r2, =gBattleBankFunc ldr r0, =SetBankFuncToLinkPartnerBufferRunCommand str r0, [r2] - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity strb r3, [r1] ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand str r3, [r2, 0x4] @@ -911,7 +911,7 @@ _08032EA4: mov r10, r0 ldr r1, =gLinkPlayers mov r12, r1 - ldr r7, =gBanksBySide + ldr r7, =gBanksByIdentity mov r8, r0 ldr r6, =gBattlePartyID movs r4, 0 @@ -1144,7 +1144,7 @@ _08033074: movs r0, 0x1 add r0, r8 mov r10, r0 - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity add r0, r8 mov r9, r0 mov r0, r8 diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s index 0e328358b7..132b18c06b 100644 --- a/asm/rom_80A5C6C.s +++ b/asm/rom_80A5C6C.s @@ -1810,7 +1810,7 @@ _080A6A04: GetBankSide: @ 80A6A30 lsls r0, 24 lsrs r0, 24 - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity adds r0, r1 ldrb r1, [r0] movs r0, 0x1 @@ -1823,7 +1823,7 @@ GetBankSide: @ 80A6A30 GetBankIdentity: @ 80A6A44 lsls r0, 24 lsrs r0, 24 - ldr r1, =gBanksBySide + ldr r1, =gBanksByIdentity adds r0, r1 ldrb r0, [r0] bx lr @@ -1840,7 +1840,7 @@ GetBankByIdentity: @ 80A6A54 ldrb r2, [r0] cmp r1, r2 bcs _080A6A7E - ldr r4, =gBanksBySide + ldr r4, =gBanksByIdentity ldrb r0, [r4] cmp r0, r3 beq _080A6A7E @@ -1883,7 +1883,7 @@ sub_80A6A90: @ 80A6A90 b _080A6B18 .pool _080A6ABC: - ldr r0, =gBanksBySide + ldr r0, =gBanksByIdentity adds r0, r4, r0 ldrb r0, [r0] cmp r0, 0xFF diff --git a/data/battle_interface.s b/data/battle_interface.s index 766f34752e..d000a27ea5 100644 --- a/data/battle_interface.s +++ b/data/battle_interface.s @@ -4,48 +4,7 @@ .section .rodata .align 2, 0 -gUnknown_0832C138:: @ 832C138 - .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 - .align 2 -gUnknown_0832C140:: @ 832C140 - spr_template 0xd6ff, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0832C158:: @ 832C158 - spr_template 0xd700, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0832C170:: @ 832C170 - spr_template 0xd701, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0832C188:: @ 832C188 - spr_template 0xd702, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0832C1A0:: @ 832C1A0 - spr_template 0xd70b, 0xd6ff, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0832C1B8:: @ 832C1B8 - .byte 0x00, 0x40, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00 - - .align 2 -gUnknown_0832C1C0:: @ 832C1C0 - spr_template 0xd704, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 - - .align 2 -gUnknown_0832C1D8:: @ 832C1D8 - spr_template 0xd705, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 - - .align 2 -gUnknown_0832C1F0:: @ 832C1F0 - spr_template 0xd706, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 - - .align 2 -gUnknown_0832C208:: @ 832C208 - spr_template 0xd707, 0xd704, gUnknown_0832C1B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80728B4 .align 2 gUnknown_0832C220:: @ 832C220 diff --git a/data/graphics.s b/data/graphics.s index e1b76565ac..4e08adf449 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -39,7 +39,7 @@ gBattleInterface_BallDisplayPal:: @ 8C11BBC .incbin "graphics/battle_interface/ball_display.gbapal" .align 2 -gUnknown_08C11BDC:: @ 8C11BDC +gHealthboxElementsGfxTable:: @ 8C11BDC .incbin "baserom.gba", 0xc11bdc, 0x840 .align 2 diff --git a/include/battle.h b/include/battle.h index f00b7f9abf..548eb8de10 100644 --- a/include/battle.h +++ b/include/battle.h @@ -903,11 +903,21 @@ struct BattleHealthboxInfo u8 field_B; }; +struct BattleBarInfo +{ + u8 healthboxSpriteId; + u32 maxValue; + u32 currentValue; + bool32 isDoubleBattle; + s32 field_10; +}; + struct BattleSpriteData { struct BattleSpriteInfo *bankData; struct BattleHealthboxInfo *healthBoxesData; struct BattleAnimationInfo *animationData; + struct BattleBarInfo *battleBars; }; extern struct BattleSpriteData *gBattleSpritesDataPtr; diff --git a/include/gba/types.h b/include/gba/types.h index fd8a20a4c2..e9a3800238 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -39,18 +39,18 @@ struct PlttData struct OamData { /*0x00*/ u32 y:8; - /*0x01*/ u32 affineMode:2; - u32 objMode:2; - u32 mosaic:1; - u32 bpp:1; - u32 shape:2; + /*0x01*/ u32 affineMode:2; // 0x1, 0x2 -> 0x4 + u32 objMode:2; // 0x4, 0x8 -> 0xC + u32 mosaic:1; // 0x10 + u32 bpp:1; // 0x20 + u32 shape:2; // 0x40, 0x80 -> 0xC0 /*0x02*/ u32 x:9; u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode u32 size:2; - /*0x04*/ u16 tileNum:10; - u16 priority:2; + /*0x04*/ u16 tileNum:10; // 0x33F + u16 priority:2; // 0x400, 0x800 -> 0xC00 u16 paletteNum:4; /*0x06*/ u16 affineParam; }; diff --git a/ld_script.txt b/ld_script.txt index 04e394b5c7..4c3c7d4b29 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -79,6 +79,7 @@ SECTIONS { src/blend_palette.o(.text); asm/daycare.o(.text); src/egg_hatch.o(.text); + src/battle_interface.o(.text); asm/battle_interface.o(.text); asm/smokescreen.o(.text); asm/pokeball.o(.text); @@ -339,6 +340,7 @@ SECTIONS { data/daycare.o(.rodata); src/egg_hatch.o(.rodata); data/battle_7.o(.rodata); + src/battle_interface.o(.rodata); data/battle_interface.o(.rodata); data/pokeball.o(.rodata); data/trade.o(.rodata); diff --git a/src/battle_interface.c b/src/battle_interface.c new file mode 100644 index 0000000000..4f0c6cfd0a --- /dev/null +++ b/src/battle_interface.c @@ -0,0 +1,615 @@ +#include "global.h" +#include "battle.h" +#include "pokemon.h" +#include "battle_interface.h" +#include "sprite.h" + +extern bool8 IsDoubleBattle(void); +extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; + +// this file's functions +void sub_8072924(struct Sprite *sprite); +void sub_80728B4(struct Sprite *sprite); +const u32 *GetHealthboxElementGfxPtr(u8 elementId); + +// const rom data +const struct OamData gUnknown_0832C138 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +extern const struct SubspriteTable gUnknown_0832C28C[2]; + +static const struct SpriteTemplate gUnknown_0832C140[2] = +{ + { + .tileTag = 0xD6FF, + .paletteTag = 0xD6FF, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + }, + { + .tileTag = 0xd700, + .paletteTag = 0xD6FF, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + } +}; + +static const struct SpriteTemplate gUnknown_0832C170[2] = +{ + { + .tileTag = 0xd701, + .paletteTag = 0xD6FF, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + }, + { + .tileTag = 0xd702, + .paletteTag = 0xD6FF, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + } +}; + +static const struct SpriteTemplate gUnknown_0832C1A0 = +{ + .tileTag = 0xd70b, + .paletteTag = 0xd6ff, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct OamData gUnknown_0832C1B8 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteTemplate gUnknown_0832C1C0[4] = +{ + { + .tileTag = 0xd704, + .paletteTag = 0xd704, + .oam = &gUnknown_0832C1B8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80728B4 + }, + { + .tileTag = 0xd705, + .paletteTag = 0xd704, + .oam = &gUnknown_0832C1B8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80728B4 + }, + { + .tileTag = 0xd706, + .paletteTag = 0xd704, + .oam = &gUnknown_0832C1B8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80728B4 + }, + { + .tileTag = 0xd707, + .paletteTag = 0xd704, + .oam = &gUnknown_0832C1B8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80728B4 + } +}; + +u8 sub_8072304(void) +{ + return 9; +} + +#ifdef NONMATCHING +void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) +{ + s8 i, j; + s8 array[4]; + + for (i = 0; i < 4; i++) + array[i] = 0; + + i = 3; + while (1) + { + if (arg0 < 0) + break; + + array[i] = arg0 % 10; + arg0 /= 10; + i--; + } + + for (j = i; j > -1; j--) + { + array[j] = -1; + } + + if (array[3] == -1) + array[3] = 0; + + if (arg2 == 0) + { + for (i = 0; i < 4; i++) + { + if (array[i] == -1) + { + arg1[i] &= 0xFC00; + arg1[i] |= 0x1E; + + arg1[i + 0x20] &= 0xFC00; + arg1[i + 0x20] |= 0x1E; + } + else + { + arg1[i] &= 0xFC00; + arg1[i] |= array[i] + 0x14; + + arg1[i + 0x20] &= 0xFC00; + arg1[i + 0x20] |= array[i] + 0x34; + } + } + } + else + { + for (i = 0; i < 4; i++) + { + if (array[i] == -1) + { + arg1[i] &= 0xFC00; + arg1[i] |= 0x1E; + + arg1[i + 0x20] &= 0xFC00; + arg1[i + 0x20] |= 0x1E; + } + else + { + arg1[i] &= 0xFC00; + arg1[i] |= array[i] + 0x14; + + arg1[i + 0x20] &= 0xFC00; + arg1[i + 0x20] |= array[i] + 0x34; + } + } + } +} + +#else +__attribute__((naked)) +void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + adds r7, r1, 0\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + mov r10, r2\n\ + movs r3, 0\n\ + movs r2, 0\n\ +_08072324:\n\ + lsls r0, r3, 24\n\ + asrs r0, 24\n\ + mov r3, sp\n\ + adds r1, r3, r0\n\ + strb r2, [r1]\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3\n\ + ble _08072324\n\ + movs r3, 0x3\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + mov r9, r0\n\ + mov r8, sp\n\ +_08072344:\n\ + lsls r0, r5, 16\n\ + asrs r6, r0, 16\n\ + cmp r6, 0\n\ + ble _08072372\n\ + lsls r4, r3, 24\n\ + asrs r4, 24\n\ + mov r1, sp\n\ + adds r5, r1, r4\n\ + adds r0, r6, 0\n\ + movs r1, 0xA\n\ + bl __modsi3\n\ + strb r0, [r5]\n\ + adds r0, r6, 0\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + subs r4, 0x1\n\ + lsls r4, 24\n\ + lsrs r3, r4, 24\n\ + b _08072344\n\ +_08072372:\n\ + lsls r1, r3, 24\n\ + asrs r0, r1, 24\n\ + cmp r0, r9\n\ + ble _08072396\n\ + movs r4, 0xFF\n\ + movs r3, 0x1\n\ + negs r3, r3\n\ +_08072380:\n\ + asrs r2, r1, 24\n\ + mov r5, sp\n\ + adds r1, r5, r2\n\ + ldrb r0, [r1]\n\ + orrs r0, r4\n\ + strb r0, [r1]\n\ + subs r2, 0x1\n\ + lsls r1, r2, 24\n\ + asrs r0, r1, 24\n\ + cmp r0, r3\n\ + bgt _08072380\n\ +_08072396:\n\ + mov r1, r8\n\ + ldrb r0, [r1, 0x3]\n\ + cmp r0, 0xFF\n\ + bne _080723A2\n\ + movs r0, 0\n\ + strb r0, [r1, 0x3]\n\ +_080723A2:\n\ + mov r2, r10\n\ + cmp r2, 0\n\ + bne _08072432\n\ + movs r3, 0\n\ + movs r1, 0\n\ + movs r6, 0xFC\n\ + lsls r6, 8\n\ + movs r5, 0x1E\n\ + mov r12, r5\n\ +_080723B4:\n\ + lsls r1, 24\n\ + asrs r2, r1, 24\n\ + mov r0, sp\n\ + adds r5, r0, r2\n\ + ldrb r0, [r5]\n\ + mov r8, r1\n\ + cmp r0, 0xFF\n\ + bne _080723EA\n\ + lsls r1, r2, 1\n\ + adds r1, r7\n\ + ldrh r2, [r1]\n\ + adds r0, r6, 0\n\ + ands r0, r2\n\ + mov r2, r12\n\ + orrs r0, r2\n\ + strh r0, [r1]\n\ + lsls r3, 24\n\ + asrs r1, r3, 23\n\ + adds r1, r7\n\ + adds r1, 0x40\n\ + ldrh r2, [r1]\n\ + adds r0, r6, 0\n\ + ands r0, r2\n\ + mov r5, r12\n\ + orrs r0, r5\n\ + strh r0, [r1]\n\ + b _0807241A\n\ +_080723EA:\n\ + lsls r2, 1\n\ + adds r2, r7\n\ + ldrh r0, [r2]\n\ + adds r1, r6, 0\n\ + ands r1, r0\n\ + ldrb r0, [r5]\n\ + adds r0, 0x14\n\ + orrs r1, r0\n\ + strh r1, [r2]\n\ + lsls r4, r3, 24\n\ + asrs r3, r4, 24\n\ + lsls r2, r3, 1\n\ + adds r2, r7\n\ + adds r2, 0x40\n\ + ldrh r0, [r2]\n\ + adds r1, r6, 0\n\ + ands r1, r0\n\ + mov r5, sp\n\ + adds r0, r5, r3\n\ + ldrb r0, [r0]\n\ + adds r0, 0x34\n\ + orrs r1, r0\n\ + strh r1, [r2]\n\ + adds r3, r4, 0\n\ +_0807241A:\n\ + movs r0, 0x80\n\ + lsls r0, 17\n\ + add r0, r8\n\ + lsrs r1, r0, 24\n\ + movs r2, 0x80\n\ + lsls r2, 17\n\ + adds r0, r3, r2\n\ + lsrs r3, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3\n\ + ble _080723B4\n\ + b _08072496\n\ +_08072432:\n\ + movs r3, 0\n\ + movs r4, 0xFC\n\ + lsls r4, 8\n\ + movs r6, 0x1E\n\ +_0807243A:\n\ + lsls r1, r3, 24\n\ + asrs r2, r1, 24\n\ + mov r3, sp\n\ + adds r5, r3, r2\n\ + ldrb r0, [r5]\n\ + adds r3, r1, 0\n\ + cmp r0, 0xFF\n\ + bne _08072466\n\ + lsls r1, r2, 1\n\ + adds r1, r7\n\ + ldrh r2, [r1]\n\ + adds r0, r4, 0\n\ + ands r0, r2\n\ + orrs r0, r6\n\ + strh r0, [r1]\n\ + adds r1, 0x40\n\ + ldrh r2, [r1]\n\ + adds r0, r4, 0\n\ + ands r0, r2\n\ + orrs r0, r6\n\ + strh r0, [r1]\n\ + b _08072488\n\ +_08072466:\n\ + lsls r2, 1\n\ + adds r2, r7\n\ + ldrh r0, [r2]\n\ + adds r1, r4, 0\n\ + ands r1, r0\n\ + ldrb r0, [r5]\n\ + adds r0, 0x14\n\ + orrs r1, r0\n\ + strh r1, [r2]\n\ + adds r2, 0x40\n\ + ldrh r0, [r2]\n\ + adds r1, r4, 0\n\ + ands r1, r0\n\ + ldrb r0, [r5]\n\ + adds r0, 0x34\n\ + orrs r1, r0\n\ + strh r1, [r2]\n\ +_08072488:\n\ + movs r5, 0x80\n\ + lsls r5, 17\n\ + adds r0, r3, r5\n\ + lsrs r3, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3\n\ + ble _0807243A\n\ +_08072496:\n\ + add sp, 0x4\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\ + .syntax divided"); +} + +#endif // NONMATCHING + +void sub_80724A8(s16 arg0, s16 arg1, u16 *arg2) +{ + arg2[4] = 0x1E; + sub_8072308(arg1, arg2, 0); + sub_8072308(arg0, arg2 + 5, 1); +} + +u8 CreateBankHealthboxSprites(u8 bank) +{ + s16 data6 = 0; + u8 healthboxSpriteId_1, healthboxSpriteId_2; + u8 unkSpriteId; + struct Sprite *unkSpritePtr; + + if (!IsDoubleBattle()) + { + if (GetBankSide(bank) == SIDE_PLAYER) + { + healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C140[0], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C140[0], 240, 160, 1); + + gSprites[healthboxSpriteId_1].oam.shape = 0; + + gSprites[healthboxSpriteId_2].oam.shape = 0; + gSprites[healthboxSpriteId_2].oam.tileNum += 64; + } + else + { + healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C170[0], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C170[0], 240, 160, 1); + + gSprites[healthboxSpriteId_2].oam.tileNum += 32; + + data6 = 2; + } + gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2; + gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1; + gSprites[healthboxSpriteId_2].callback = sub_8072924; + } + else + { + if (GetBankSide(bank) == SIDE_PLAYER) + { + healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C140[GetBankIdentity(bank) / 2], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C140[GetBankIdentity(bank) / 2], 240, 160, 1); + + gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2; + + gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1; + gSprites[healthboxSpriteId_2].oam.tileNum += 32; + gSprites[healthboxSpriteId_2].callback = sub_8072924; + + data6 = 1; + } + else + { + healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C170[GetBankIdentity(bank) / 2], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C170[GetBankIdentity(bank) / 2], 240, 160, 1); + + gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2; + + gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1; + gSprites[healthboxSpriteId_2].oam.tileNum += 32; + gSprites[healthboxSpriteId_2].callback = sub_8072924; + + data6 = 2; + } + } + + unkSpriteId = CreateSpriteAtEnd(&gUnknown_0832C1C0[gBanksByIdentity[bank]], 140, 60, 0); + unkSpritePtr = &gSprites[unkSpriteId]; + SetSubspriteTables(unkSpritePtr, &gUnknown_0832C28C[GetBankSide(bank)]); + unkSpritePtr->subspriteMode = 2; + unkSpritePtr->oam.priority = 1; + + CpuCopy32(GetHealthboxElementGfxPtr(1), (void*)(OBJ_VRAM0 + unkSpritePtr->oam.tileNum * 32), 64); + + gSprites[healthboxSpriteId_1].data5 = unkSpriteId; + gSprites[healthboxSpriteId_1].data6 = bank; + gSprites[healthboxSpriteId_1].invisible = 1; + + gSprites[healthboxSpriteId_2].invisible = 1; + + unkSpritePtr->data5 = healthboxSpriteId_1; + unkSpritePtr->data6 = data6; + unkSpritePtr->invisible = 1; + + return healthboxSpriteId_1; +} + +u8 CreateSafariPlayerHealthboxSprites(void) +{ + u8 healthboxSpriteId_1, healthboxSpriteId_2; + + healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C1A0, 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C1A0, 240, 160, 1); + + gSprites[healthboxSpriteId_1].oam.shape = 0; + gSprites[healthboxSpriteId_2].oam.shape = 0; + + gSprites[healthboxSpriteId_2].oam.tileNum += 64; + + gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2; + gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1; + + gSprites[healthboxSpriteId_2].callback = sub_8072924; + + return healthboxSpriteId_1; +} + +extern const u32 gHealthboxElementsGfxTable[][8]; + +const u32 *GetHealthboxElementGfxPtr(u8 elementId) +{ + return gHealthboxElementsGfxTable[elementId]; +} + +void sub_80728B4(struct Sprite *sprite) +{ + u8 var = sprite->data5; + + switch (sprite->data6) + { + case 0: + sprite->pos1.x = gSprites[var].pos1.x + 16; + sprite->pos1.y = gSprites[var].pos1.y; + break; + case 1: + sprite->pos1.x = gSprites[var].pos1.x + 16; + sprite->pos1.y = gSprites[var].pos1.y; + break; + case 2: + default: + sprite->pos1.x = gSprites[var].pos1.x + 8; + sprite->pos1.y = gSprites[var].pos1.y; + break; + } + + sprite->pos2.x = gSprites[var].pos2.x; + sprite->pos2.y = gSprites[var].pos2.y; +} + +void sub_8072924(struct Sprite *sprite) +{ + u8 otherSpriteId = sprite->data5; + + sprite->pos1.x = gSprites[otherSpriteId].pos1.x + 64; + sprite->pos1.y = gSprites[otherSpriteId].pos1.y; + + sprite->pos2.x = gSprites[otherSpriteId].pos2.x; + sprite->pos2.y = gSprites[otherSpriteId].pos2.y; +} + +void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, u32 maxVal, u32 currVal, bool32 isDoubleBattle) +{ + gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId = healthboxSpriteId; + gBattleSpritesDataPtr->battleBars[bank].maxValue = maxVal; + gBattleSpritesDataPtr->battleBars[bank].currentValue = currVal; + gBattleSpritesDataPtr->battleBars[bank].isDoubleBattle = isDoubleBattle; + gBattleSpritesDataPtr->battleBars[bank].field_10 = -32768; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 8ce7ce8df7..ad08a112bb 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -282,7 +282,7 @@ gNoOfAllBanks: @ 202406C gBattlePartyID: @ 202406E .space 0x8 -gBanksBySide: @ 2024076 +gBanksByIdentity: @ 2024076 .space 0x4 gActionsByTurnOrder: @ 202407A From 0ffc5652fd746816a763e4e0ec83c08f2f53222c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 18 Oct 2017 00:00:46 +0200 Subject: [PATCH 152/182] hp printing in healthboxes done I hope --- asm/battle_anim.s | 4 +- asm/battle_anim_8170478.s | 6 +- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 2 +- asm/battle_controller_player.s | 4 +- asm/battle_controller_player_partner.s | 2 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 4 +- asm/battle_controller_wally.s | 4 +- asm/battle_interface.s | 910 +--------------------- include/battle.h | 2 + src/battle_interface.c | 309 ++++++++ 13 files changed, 346 insertions(+), 907 deletions(-) diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 5ce9c4cf94..effd6024ef 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -129,7 +129,7 @@ move_something: @ 80A3A48 bne _080A3AE8 bl sub_80A8278 movs r0, 0 - bl sub_8072A88 + bl UpdateOamPriorityInAllHealthboxes movs r4, 0 mov r0, r8 lsls r0, 2 @@ -852,7 +852,7 @@ _080A406E: bne _080A409C bl sub_80A8278 movs r0, 0x1 - bl sub_8072A88 + bl UpdateOamPriorityInAllHealthboxes _080A409C: ldr r0, =gAnimScriptActive mov r1, r8 diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index dd992a8cd3..9c59120e93 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -2379,7 +2379,7 @@ _0817185A: movs r1, 0 strb r1, [r0] movs r0, 0x1 - bl sub_8072A88 + bl UpdateOamPriorityInAllHealthboxes bl m4aMPlayAllStop ldr r0, =0x00000213 bl PlaySE @@ -2879,7 +2879,7 @@ _08171C24: ldr r0, =gDoingBattleAnim strb r6, [r0] movs r0, 0x1 - bl sub_8072A88 + bl UpdateOamPriorityInAllHealthboxes _08171C8A: pop {r4-r7} pop {r0} @@ -2974,7 +2974,7 @@ _08171D3E: movs r0, 0 strb r0, [r1] movs r0, 0x1 - bl sub_8072A88 + bl UpdateOamPriorityInAllHealthboxes _08171D52: pop {r4} pop {r0} diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index afa388d3b0..cda07f31f1 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -985,7 +985,7 @@ sub_8064BC0: @ 8064BC0 adds r0, r5 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _08064C0C .pool _08064C08: diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 9c0e44d43b..071f667872 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -509,7 +509,7 @@ bx_t4_healthbar_update: @ 814B2D0 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _0814B332 .pool _0814B318: diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 5e5a790ddc..82f705e01d 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -1079,7 +1079,7 @@ sub_805FA70: @ 805FA70 adds r0, r5 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _0805FABC .pool _0805FAB8: diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 80796fa589..653746f547 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -3278,7 +3278,7 @@ bx_t1_healthbar_update: @ 8059130 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _08059192 .pool _08059178: @@ -9023,7 +9023,7 @@ _0805C4B4: ldrb r0, [r0] movs r1, 0 movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox _0805C4F2: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 7c7b4939c4..4231b01679 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -510,7 +510,7 @@ bx_t3_healthbar_update: @ 81BB214 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _081BB276 .pool _081BB25C: diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 701c1d11ca..8c0f52ffa8 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -966,7 +966,7 @@ sub_8186D04: @ 8186D04 adds r0, r5 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _08186D50 .pool _08186D4C: diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 0bc8c23929..2b71e13ba5 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -885,7 +885,7 @@ sub_818A0A4: @ 818A0A4 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _0818A106 .pool _0818A0EC: @@ -5083,7 +5083,7 @@ _0818C678: ldrb r0, [r0] movs r1, 0 movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox _0818C6B2: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 8bf630188f..ddceb87e6c 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -676,7 +676,7 @@ sub_8168934: @ 8168934 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox b _08168996 .pool _0816897C: @@ -3912,7 +3912,7 @@ _0816A664: ldrb r0, [r0] movs r1, 0 movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox _0816A69E: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank diff --git a/asm/battle_interface.s b/asm/battle_interface.s index d1762c93a2..e0a766a5d6 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -5,879 +5,7 @@ .text - thumb_func_start SetHealthboxSpriteInvisible -SetHealthboxSpriteInvisible: @ 8072984 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - adds r1, r2, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1] - movs r0, 0x38 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - ldrh r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end SetHealthboxSpriteInvisible - thumb_func_start SetHealthboxSpriteVisible -SetHealthboxSpriteVisible: @ 80729D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - adds r4, r2, 0 - adds r4, 0x3E - ldrb r1, [r4] - movs r3, 0x5 - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - movs r0, 0x38 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r4, [r0] - adds r1, r3, 0 - ands r1, r4 - strb r1, [r0] - ldrh r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end SetHealthboxSpriteVisible - - thumb_func_start sub_8072A24 -sub_8072A24: @ 8072A24 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r3, r4 - strh r1, [r3, 0x20] - strh r2, [r3, 0x22] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8072A24 - - thumb_func_start sub_8072A44 -sub_8072A44: @ 8072A44 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r5 - ldrh r1, [r4, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - movs r0, 0x38 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - adds r0, r4, 0 - bl DestroySprite - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8072A44 - - thumb_func_start nullsub_30 -nullsub_30: @ 8072A84 - bx lr - thumb_func_end nullsub_30 - - thumb_func_start sub_8072A88 -sub_8072A88: @ 8072A88 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - ldr r1, =gNoOfAllBanks - mov r8, r1 - ldrb r2, [r1] - cmp r6, r2 - bge _08072B00 - ldr r1, =gSprites - mov r12, r1 - movs r1, 0x3 - ands r0, r1 - lsls r5, r0, 2 - movs r7, 0xD - negs r7, r7 - ldr r2, =gHealthBoxesIds - mov r9, r2 -_08072AB2: - mov r1, r9 - adds r0, r6, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - ldrb r4, [r1, 0x6] - ldrh r3, [r1, 0x38] - lsls r3, 24 - lsrs r3, 24 - ldrb r2, [r1, 0x5] - adds r0, r7, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1, 0x5] - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - add r1, r12 - ldrb r2, [r1, 0x5] - adds r0, r7, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1, 0x5] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - add r1, r12 - ldrb r2, [r1, 0x5] - adds r0, r7, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1, 0x5] - adds r6, 0x1 - mov r2, r8 - ldrb r2, [r2] - cmp r6, r2 - blt _08072AB2 -_08072B00: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8072A88 - - thumb_func_start SetBankHealthboxSpritePos -SetBankHealthboxSpritePos: @ 8072B18 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - movs r4, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08072B44 - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08072B3E - movs r5, 0x2C - movs r4, 0x1E - b _08072B7C -_08072B3E: - movs r5, 0x9E - movs r4, 0x58 - b _08072B7C -_08072B44: - adds r0, r6, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08072B72 - cmp r0, 0x1 - bgt _08072B5C - cmp r0, 0 - beq _08072B66 - b _08072B7C -_08072B5C: - cmp r0, 0x2 - beq _08072B6C - cmp r0, 0x3 - beq _08072B78 - b _08072B7C -_08072B66: - movs r5, 0x9F - movs r4, 0x4C - b _08072B7C -_08072B6C: - movs r5, 0xAB - movs r4, 0x65 - b _08072B7C -_08072B72: - movs r5, 0x2C - movs r4, 0x13 - b _08072B7C -_08072B78: - movs r5, 0x20 - movs r4, 0x2C -_08072B7C: - ldr r0, =gHealthBoxesIds - adds r0, r6, r0 - ldrb r0, [r0] - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8072A24 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end SetBankHealthboxSpritePos - - thumb_func_start healthbar_draw_level -healthbar_draw_level: @ 8072B94 - push {r4,r5,lr} - sub sp, 0x18 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - add r2, sp, 0x4 - movs r0, 0xF9 - strb r0, [r2] - movs r0, 0x5 - strb r0, [r2, 0x1] - mov r0, sp - adds r0, 0x6 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r1, r0, 0 - subs r1, 0x2 - add r0, sp, 0x4 - subs r1, r0 - movs r0, 0x3 - subs r0, r1 - lsls r1, r0, 2 - adds r1, r0 - add r0, sp, 0x14 - str r0, [sp] - add r0, sp, 0x4 - movs r2, 0x3 - movs r3, 0x2 - bl write_to_rbox - adds r5, r0, 0 - ldr r0, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r4, r0, 17 - ldrh r0, [r1, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08072C18 - bl IsDoubleBattle - lsls r0, 24 - ldr r2, =0x06010420 - adds r1, r4, r2 - cmp r0, 0 - bne _08072C1C - ldr r0, =0x06010820 - adds r1, r4, r0 - b _08072C1C - .pool -_08072C18: - ldr r2, =0x06010400 - adds r1, r4, r2 -_08072C1C: - adds r0, r1, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_8075198 - ldr r0, [sp, 0x14] - bl sub_807512C - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end healthbar_draw_level - - thumb_func_start heathbar_draw_hp -heathbar_draw_hp: @ 8072C38 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08072D10 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08072D10 - ldrh r0, [r4, 0x4] - lsls r0, 22 - lsrs r5, r0, 17 - mov r0, r8 - cmp r0, 0 - beq _08072CB8 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - add r0, sp, 0x4 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - add r0, sp, 0x24 - str r0, [sp] - add r0, sp, 0x4 - movs r1, 0 - movs r2, 0x5 - movs r3, 0x2 - bl write_to_rbox - adds r4, r0, 0 - ldr r1, =0x06010b40 - adds r0, r5, r1 - adds r1, r4, 0 - b _08072CF8 - .pool -_08072CB8: - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - add r0, sp, 0x4 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - add r1, sp, 0x4 - movs r0, 0xBA - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - add r0, sp, 0x24 - str r0, [sp] - adds r0, r1, 0 - movs r1, 0x4 - movs r2, 0x5 - movs r3, 0x2 - bl write_to_rbox - adds r4, r0, 0 - ldr r1, =0x060103e0 - adds r0, r5, r1 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8075170 - ldr r2, =0x06010b00 - adds r0, r5, r2 - adds r1, r4, 0 - adds r1, 0x20 -_08072CF8: - movs r2, 0x2 - bl sub_8075170 - ldr r0, [sp, 0x24] - bl sub_807512C - b _08072DEA - .pool -_08072D10: - ldr r1, =gUnknown_0832C3C4 - add r0, sp, 0x4 - movs r2, 0x14 - bl memcpy - ldr r1, =gSprites - lsls r4, r7, 4 - adds r0, r4, r7 - lsls r0, 2 - adds r6, r0, r1 - ldrh r0, [r6, 0x3A] - lsls r0, 24 - lsrs r5, r0, 24 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - mov r10, r4 - cmp r0, 0x1 - beq _08072D46 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08072D60 -_08072D46: - mov r0, r9 - lsls r1, r0, 16 - asrs r1, 16 - adds r0, r7, 0 - mov r2, r8 - bl sub_8072E0C - b _08072DEA - .pool -_08072D60: - ldrh r0, [r6, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08072D7C - movs r6, 0x59 - mov r1, r8 - cmp r1, 0 - bne _08072D86 - movs r6, 0x1D - b _08072D86 -_08072D7C: - movs r6, 0x30 - mov r2, r8 - cmp r2, 0 - bne _08072D86 - movs r6, 0x14 -_08072D86: - mov r0, sp - adds r0, 0xA - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r1, 0xBA - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x9 - add r2, sp, 0x4 - bl RenderTextFont9 - movs r4, 0 - ldr r1, =gSprites - mov r2, r10 - adds r0, r2, r7 - lsls r0, 2 - adds r5, r0, r1 -_08072DB8: - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r1, 0xBA - lsls r1, 1 - adds r0, r1 - lsls r1, r4, 6 - adds r1, 0x20 - ldr r0, [r0] - adds r0, r1 - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r1, r6 - adds r1, r4 - lsls r1, 5 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _08072DB8 -_08072DEA: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end heathbar_draw_hp - - thumb_func_start sub_8072E0C -sub_8072E0C: @ 8072E0C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 16 - lsrs r4, r1, 16 - mov r10, r4 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r5, =gSprites - lsls r0, 4 - add r0, r9 - lsls r0, 2 - adds r7, r0, r5 - ldrh r0, [r7, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08072F28 - ldr r0, =gBattleSpritesDataPtr - ldr r1, [r0] - movs r2, 0x3A - ldrsh r0, [r7, r2] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08072E5E - b _080730B8 -_08072E5E: - movs r3, 0x38 - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x4] - lsls r0, 22 - lsrs r5, r0, 17 - ldr r0, =0x06010000 - adds r6, r5, r0 - mov r0, r8 - cmp r0, 0 - beq _08072EDC - lsls r1, r4, 16 - asrs r1, 16 - add r0, sp, 0x4 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - add r0, sp, 0x28 - str r0, [sp] - add r0, sp, 0x4 - movs r1, 0 - movs r2, 0x5 - movs r3, 0 - bl write_to_rbox - adds r4, r0, 0 - ldr r1, =0x060100c0 - adds r0, r5, r1 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_8075170 - ldr r0, [sp, 0x28] - bl sub_807512C - movs r0, 0x74 - bl GetHealthboxElementGfxPtr - ldrh r1, [r7, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r2, =0x06010680 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _080730B8 - .pool -_08072EDC: - lsls r1, r4, 16 - asrs r1, 16 - add r0, sp, 0x4 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - add r1, sp, 0x4 - movs r0, 0xBA - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - add r0, sp, 0x28 - str r0, [sp] - adds r0, r1, 0 - movs r1, 0x4 - movs r2, 0x5 - movs r3, 0 - bl write_to_rbox - adds r4, r0, 0 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x3 - bl sub_807513C - ldr r3, =0x06010060 - adds r0, r5, r3 - adds r1, r4, 0 - movs r2, 0x3 - bl sub_8075170 - ldr r0, [sp, 0x28] - bl sub_807512C - b _080730B8 - .pool -_08072F28: - ldr r1, =gUnknown_0832C3D8 - add r0, sp, 0x4 - movs r2, 0x14 - bl memcpy - ldrh r0, [r7, 0x3A] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x2C] - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - ldr r2, [sp, 0x2C] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08072F52 - b _080730B8 -_08072F52: - movs r6, 0x4 - mov r3, r8 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - ands r6, r0 - ldrh r0, [r7, 0x38] - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, sp - adds r0, 0xA - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r3, r8 - cmp r3, 0 - bne _08072F82 - ldr r1, =gText_Slash - bl StringCopy -_08072F82: - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r1, 0xBA - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x9 - add r2, sp, 0x4 - bl RenderTextFont9 - adds r4, r6, 0 - adds r0, r4, 0x3 - cmp r4, r0 - bge _08073024 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r5, r0, r5 -_08072FA6: - cmp r4, 0x2 - bhi _08072FF0 - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r2, 0xBA - lsls r2, 1 - adds r0, r2 - subs r1, r4, r6 - lsls r1, 6 - adds r1, 0x20 - ldr r0, [r0] - adds r0, r1 - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r4, 0x1 - adds r1, r4 - lsls r1, 5 - ldr r3, =0x06010000 - adds r1, r3 - ldr r2, =0x04000008 - bl CpuSet - b _0807301A - .pool -_08072FF0: - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r1, 0xBA - lsls r1, 1 - adds r0, r1 - subs r1, r4, r6 - lsls r1, 6 - adds r1, 0x20 - ldr r0, [r0] - adds r0, r1 - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r1, r4, r1 - lsls r1, 5 - ldr r2, =0x06010020 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - adds r4, 0x1 -_0807301A: - lsls r0, r4, 24 - lsrs r4, r0, 24 - adds r0, r6, 0x3 - cmp r4, r0 - blt _08072FA6 -_08073024: - mov r3, r8 - cmp r3, 0 - bne _08073084 - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r1, 0xBA - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - adds r0, 0xE0 - ldr r1, =gSprites - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - adds r4, r1 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - adds r1, 0x80 - ldr r5, =0x06010000 - adds r1, r5 - ldr r2, =0x04000008 - bl CpuSet - mov r2, r8 - str r2, [sp, 0x24] - add r0, sp, 0x24 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - adds r1, r5 - ldr r2, =0x05000008 - bl CpuSet - b _080730B8 - .pool -_08073084: - ldr r0, [sp, 0x2C] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080730B8 - movs r0, 0x74 - bl GetHealthboxElementGfxPtr - ldr r2, =gSprites - mov r3, r9 - lsls r1, r3, 4 - add r1, r9 - lsls r1, 2 - adds r1, r2 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 17 - movs r2, 0xD0 - lsls r2, 3 - adds r1, r2 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet -_080730B8: - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8072E0C thumb_func_start sub_80730D4 sub_80730D4: @ 80730D4 @@ -1290,7 +418,7 @@ _080733DE: asrs r1, 16 adds r0, r4, 0 movs r2, 0 - bl sub_8072E0C + bl UpdateHpTextInHealthboxInDoubles ldrb r4, [r6] mov r2, r8 ldrh r0, [r2] @@ -1382,7 +510,7 @@ _080734DC: asrs r1, 16 adds r0, r4, 0 movs r2, 0 - bl sub_8072E0C + bl UpdateHpTextInHealthboxInDoubles ldrb r4, [r6] mov r2, r8 ldrh r0, [r2] @@ -1398,7 +526,7 @@ _08073536: asrs r1, 16 adds r0, r4, 0 movs r2, 0x1 - bl sub_8072E0C + bl UpdateHpTextInHealthboxInDoubles b _08073592 .pool _0807355C: @@ -3023,7 +2151,7 @@ _08074272: movs r1, 0 movs r2, 0x3 movs r3, 0x2 - bl write_to_rbox + bl AddTextPrinterAndCreateWindowOnHealthbox adds r6, r0, 0 ldr r0, =gSprites lsls r1, r7, 4 @@ -3069,7 +2197,7 @@ _080742F0: bl sub_8075198 _080742FC: ldr r0, [sp, 0x10] - bl sub_807512C + bl RemoveWindow_ add sp, 0x14 pop {r4-r7} pop {r0} @@ -3584,7 +2712,7 @@ sub_8074770: @ 8074770 movs r1, 0 movs r2, 0x3 movs r3, 0x2 - bl write_to_rbox + bl AddTextPrinterAndCreateWindowOnHealthbox adds r5, r0, 0 ldr r1, =gSprites lsls r0, r4, 4 @@ -3607,7 +2735,7 @@ sub_8074770: @ 8074770 movs r2, 0x2 bl sub_8075198 ldr r0, [sp, 0x4] - bl sub_807512C + bl RemoveWindow_ add sp, 0x8 pop {r4,r5} pop {r0} @@ -3640,7 +2768,7 @@ sub_80747D8: @ 80747D8 add r0, sp, 0x4 movs r2, 0x3 movs r3, 0x2 - bl write_to_rbox + bl AddTextPrinterAndCreateWindowOnHealthbox adds r5, r0, 0 ldr r1, =gSprites lsls r0, r4, 4 @@ -3663,7 +2791,7 @@ sub_80747D8: @ 80747D8 movs r2, 0x4 bl sub_80751E4 ldr r0, [sp, 0x14] - bl sub_807512C + bl RemoveWindow_ add sp, 0x18 pop {r4,r5} pop {r0} @@ -3728,7 +2856,7 @@ _080748C0: lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 - bl healthbar_draw_level + bl UpdateLvlInHealthbox _080748D4: cmp r7, 0x1 bhi _080748EE @@ -3740,7 +2868,7 @@ _080748D4: asrs r1, 16 adds r0, r6, 0 movs r2, 0 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox _080748EE: cmp r7, 0x2 beq _080748F6 @@ -3755,7 +2883,7 @@ _080748F6: asrs r1, 16 adds r0, r6, 0 movs r2, 0x1 - bl heathbar_draw_hp + bl UpdateHpTextInHealthbox _0807490C: cmp r7, 0x5 beq _08074914 @@ -3891,7 +3019,7 @@ _08074A20: lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 - bl healthbar_draw_level + bl UpdateLvlInHealthbox _08074A34: cmp r7, 0x5 beq _08074A3C @@ -4734,8 +3862,8 @@ _0807508E: bx r1 thumb_func_end sub_8075060 - thumb_func_start write_to_rbox -write_to_rbox: @ 8075094 + thumb_func_start AddTextPrinterAndCreateWindowOnHealthbox +AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4807,17 +3935,17 @@ write_to_rbox: @ 8075094 pop {r1} bx r1 .pool - thumb_func_end write_to_rbox + thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox - thumb_func_start sub_807512C -sub_807512C: @ 807512C + thumb_func_start RemoveWindow_ +RemoveWindow_: @ 807512C push {lr} lsls r0, 24 lsrs r0, 24 bl RemoveWindow pop {r0} bx r0 - thumb_func_end sub_807512C + thumb_func_end RemoveWindow_ thumb_func_start sub_807513C sub_807513C: @ 807513C diff --git a/include/battle.h b/include/battle.h index 548eb8de10..948111d43e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -931,6 +931,8 @@ struct MonSpritesGfx void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon void* sprites[4]; struct SpriteTemplate templates[4]; + u8 field_74[0x100]; + u8 *fontPixels; }; extern struct BattleSpritesGfx* gMonSpritesGfx; diff --git a/src/battle_interface.c b/src/battle_interface.c index 4f0c6cfd0a..e8ab8e478b 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -3,6 +3,9 @@ #include "pokemon.h" #include "battle_interface.h" #include "sprite.h" +#include "window.h" +#include "string_util.h" +#include "text.h" extern bool8 IsDoubleBattle(void); extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; @@ -11,6 +14,12 @@ extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; void sub_8072924(struct Sprite *sprite); void sub_80728B4(struct Sprite *sprite); const u32 *GetHealthboxElementGfxPtr(u8 elementId); +u32 AddTextPrinterAndCreateWindowOnHealthbox(u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); +void sub_8075198(void *objVram, u32 windowTileData, u32 arg2); +void RemoveWindow_(u32 windowId); +void sub_8075170(void *dest, u32 arg1, u32 arg2); +void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +void sub_807513C(void *dest, u32 arg1, u32 arg2); // const rom data const struct OamData gUnknown_0832C138 = @@ -144,6 +153,9 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = } }; +extern const u8 gUnknown_0832C3C4[0x14]; +extern const u8 gUnknown_0832C3D8[0x14]; + u8 sub_8072304(void) { return 9; @@ -613,3 +625,300 @@ void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, u32 maxVal, u32 currVal, gBattleSpritesDataPtr->battleBars[bank].isDoubleBattle = isDoubleBattle; gBattleSpritesDataPtr->battleBars[bank].field_10 = -32768; } + +void SetHealthboxSpriteInvisible(u8 healthboxSpriteId) +{ + gSprites[healthboxSpriteId].invisible = 1; + gSprites[gSprites[healthboxSpriteId].data5].invisible = 1; + gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 1; +} + +void SetHealthboxSpriteVisible(u8 healthboxSpriteId) +{ + gSprites[healthboxSpriteId].invisible = 0; + gSprites[gSprites[healthboxSpriteId].data5].invisible = 0; + gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 0; +} + +static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) +{ + gSprites[spriteId].pos1.x = x; + gSprites[spriteId].pos1.y = y; +} + +void DestoryHealthboxSprite(u8 healthboxSpriteId) +{ + DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]); + DestroySprite(&gSprites[gSprites[healthboxSpriteId].data5]); + DestroySprite(&gSprites[healthboxSpriteId]); +} + +void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly) +{ + +} + +extern u8 gNoOfAllBanks; +extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; + +void UpdateOamPriorityInAllHealthboxes(u8 priority) +{ + s32 i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + u8 healthboxSpriteId_1 = gHealthBoxesIds[i]; + u8 healthboxSpriteId_2 = gSprites[gHealthBoxesIds[i]].oam.affineParam; + u8 healthboxSpriteId_3 = gSprites[gHealthBoxesIds[i]].data5; + + gSprites[healthboxSpriteId_1].oam.priority = priority; + gSprites[healthboxSpriteId_2].oam.priority = priority; + gSprites[healthboxSpriteId_3].oam.priority = priority; + } +} + +void SetBankHealthboxSpritePos(u8 bank) +{ + s16 x = 0, y = 0; + + if (!IsDoubleBattle()) + { + if (GetBankSide(bank) != SIDE_PLAYER) + x = 44, y = 30; + else + x = 158, y = 88; + } + else + { + switch (GetBankIdentity(bank)) + { + case IDENTITY_PLAYER_MON1: + x = 159, y = 76; + break; + case IDENTITY_PLAYER_MON2: + x = 171, y = 101; + break; + case IDENTITY_OPPONENT_MON1: + x = 44, y = 19; + break; + case IDENTITY_OPPONENT_MON2: + x = 32, y = 44; + break; + } + } + + UpdateSpritePos(gHealthBoxesIds[bank], x, y); +} + +void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) +{ + u32 windowId, windowTileData, spriteTileNum; + u8 text[16]; + u32 xPos, var1; + void *objVram; + + text[0] = 0xF9; + text[1] = 5; + + xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); + // Alright, that part was unmatchable. It's basically doing: + // xPos = 5 * (3 - (u32)(&text[2])); + xPos--; + xPos--; + xPos -= ((u32)(text)); + var1 = (3 - xPos); + xPos = 4 * var1; + xPos += var1; + + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId); + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + + if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER) + { + objVram = (void*)(OBJ_VRAM0); + if (!IsDoubleBattle()) + objVram += spriteTileNum + 0x820; + else + objVram += spriteTileNum + 0x420; + } + else + { + objVram = (void*)(OBJ_VRAM0); + objVram += spriteTileNum + 0x400; + } + sub_8075198(objVram, windowTileData, 3); + RemoveWindow_(windowId); +} + +void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) +{ + u32 windowId, windowTileData, spriteTileNum; + u8 text[32]; + void *objVram; + + if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER && !IsDoubleBattle()) + { + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + if (maxOrCurrent) // singles, max + { + ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 2, &windowId); + objVram = (void*)(OBJ_VRAM0); + objVram += spriteTileNum + 0xB40; + sub_8075170(objVram, windowTileData, 2); + RemoveWindow_(windowId); + } + else // singles, current + { + ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + text[3] = CHAR_SLASH; + text[4] = EOS; + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 2, &windowId); + objVram = (void*)(OBJ_VRAM0); + objVram += spriteTileNum + 0x3E0; + sub_8075170(objVram, windowTileData, 1); + objVram = (void*)(OBJ_VRAM0); + objVram += spriteTileNum + 0xB00; + sub_8075170(objVram, windowTileData + 0x20, 2); + RemoveWindow_(windowId); + } + + } + else + { + u8 bank; + + memcpy(text, gUnknown_0832C3C4, sizeof(gUnknown_0832C3C4)); + bank = gSprites[healthboxSpriteId].data6; + if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT) + { + UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent); + } + else + { + u32 var; + u8 i; + + if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER) + { + if (!maxOrCurrent) + var = 29; + else + var = 89; + } + else + { + if (!maxOrCurrent) + var = 20; + else + var = 48; + } + + ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text); + + for (i = 0; i < 3; i++) + { + CpuCopy32(&gMonSpritesGfxPtr->fontPixels[i * 64 + 32], + (void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)), + 0x20); + } + } + } +} + +extern const u8 gText_Slash[]; + +void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) +{ + u32 windowId, windowTileData, spriteTileNum; + u8 text[32]; + void *objVram; + + if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER) + { + if (gBattleSpritesDataPtr->bankData[gSprites[healthboxSpriteId].data6].hpNumbersNoBars) // don't print text if only bars are visible + { + spriteTileNum = gSprites[gSprites[healthboxSpriteId].data5].oam.tileNum * 32; + objVram = (void*)(OBJ_VRAM0) + spriteTileNum; + + if (maxOrCurrent) // doubles, max hp + { + ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId); + sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2); + RemoveWindow_(windowId); + CpuCopy32(GetHealthboxElementGfxPtr(0x74), + (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32), + 0x20); + } + else + { + ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + text[3] = CHAR_SLASH; + text[4] = EOS; + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId); + sub_807513C(objVram, 0, 3); + sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3); + RemoveWindow_(windowId); + } + } + } + else + { + u8 bank; + + memcpy(text, gUnknown_0832C3D8, sizeof(gUnknown_0832C3D8)); + bank = gSprites[healthboxSpriteId].data6; + + if (gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) // don't print text if only bars are visible + { + u8 var = 4; + u8 r7; + u8 *txtPtr; + u8 i; + + if (!maxOrCurrent) + var = 0; + + r7 = gSprites[healthboxSpriteId].data5; + txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + if (!maxOrCurrent) + StringCopy(txtPtr, gText_Slash); + RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text); + + for (i = var; i < var + 3; i++) + { + if (i < 3) + { + CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32], + (void*)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)), + 0x20); + } + else + { + CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32], + (void*)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)), + 0x20); + } + } + + if (!maxOrCurrent) + { + CpuCopy32(&gMonSpritesGfxPtr->fontPixels[224], + (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)), + 0x20); + CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20); + } + else + { + if (GetBankSide(bank) == SIDE_PLAYER) // impossible to reach part, because the bank is from the opponent's side + { + CpuCopy32(GetHealthboxElementGfxPtr(0x74), + (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32), + 0x20); + } + } + } + } +} From 6e56211f40d7a191afd91bcf41d63178e26b5199 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 18 Oct 2017 21:42:00 +0200 Subject: [PATCH 153/182] more of battle interface done --- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 2 +- asm/battle_controller_player.s | 4 +- asm/battle_controller_player_partner.s | 2 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 2 +- asm/battle_controller_wally.s | 2 +- asm/battle_interface.s | 2211 +-------------------- include/battle.h | 13 + include/decompress.h | 2 +- src/battle_interface.c | 674 ++++++- 12 files changed, 697 insertions(+), 2221 deletions(-) diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index cda07f31f1..2c52c2b16b 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5954,7 +5954,7 @@ _080677B4: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 071f667872..a97dae84cd 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -5349,7 +5349,7 @@ _0814DE08: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 82f705e01d..cad8d0f567 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -6409,7 +6409,7 @@ _080629B4: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 653746f547..ff3dd459c5 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -403,7 +403,7 @@ _080577DC: ands r0, r2 cmp r0, 0 beq _080577E8 - bl sub_8073314 + bl SwapHpBarsWithHpText _080577E8: pop {r4-r7} pop {r0} @@ -10038,7 +10038,7 @@ _0805CDA4: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 4231b01679..dba618f014 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -6082,7 +6082,7 @@ _081BE404: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 8c0f52ffa8..fa6b8f5114 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -5693,7 +5693,7 @@ _081896E4: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 2b71e13ba5..8e3db1ffbd 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -5878,7 +5878,7 @@ _0818CD60: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index ddceb87e6c..9ca0c6bf26 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -4645,7 +4645,7 @@ _0816ACA8: subs r3, 0x2 adds r4, r3 ldrb r3, [r4] - bl sub_80735DC + bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 diff --git a/asm/battle_interface.s b/asm/battle_interface.s index e0a766a5d6..6f91c86b60 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -7,2203 +7,6 @@ - thumb_func_start sub_80730D4 -sub_80730D4: @ 80730D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - ldr r1, =gUnknown_0832C3C4 - mov r0, sp - movs r2, 0x14 - bl memcpy - ldr r1, =gSprites - ldr r2, [sp, 0x14] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankIdentity - ldr r1, =gMonSpritesGfxPtr - ldr r2, [r1] - movs r3, 0xBA - lsls r3, 1 - adds r2, r3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 7 - movs r0, 0xA4 - lsls r0, 3 - adds r1, r0 - ldr r0, [r2] - adds r6, r0, r1 - movs r1, 0x5 - mov r8, r1 - adds r0, r4, 0 - bl GetNature - lsls r0, 24 - mov r4, sp - adds r4, 0x6 - ldr r1, =gNatureNamePointers - lsrs r0, 22 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - adds r0, r6, 0 - movs r1, 0x9 - mov r2, sp - bl RenderTextFont9 - movs r7, 0x6 - movs r5, 0 - mov r2, sp - adds r2, 0x9 - str r2, [sp, 0x1C] -_08073158: - mov r3, sp - adds r0, r3, r7 - ldrb r1, [r0] - adds r0, r1, 0 - subs r0, 0x37 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _08073176 - adds r0, r1, 0 - adds r0, 0x79 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0807318C -_08073176: - movs r0, 0x2C - b _080731AA - .pool -_0807318C: - adds r0, r1, 0 - subs r0, 0x4B - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _080731A4 - adds r0, r1, 0 - adds r0, 0x65 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080731A8 -_080731A4: - movs r0, 0x2D - b _080731AA -_080731A8: - movs r0, 0x2B -_080731AA: - bl GetHealthboxElementGfxPtr - lsls r1, r5, 6 - adds r1, r6, r1 - ldr r2, =0x04000008 - bl CpuSet - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, 0x1 - cmp r5, r8 - bcc _08073158 - movs r7, 0x1 - ldr r0, [sp, 0x14] - lsls r0, 4 - str r0, [sp, 0x18] - movs r1, 0x1 - add r1, r8 - mov r9, r1 - cmp r7, r9 - bge _08073236 - ldr r1, =gSprites - ldr r2, =0x04000008 - mov r10, r2 - ldr r3, [sp, 0x14] - adds r0, r3 - lsls r0, 2 - adds r0, r1 - mov r8, r0 -_080731E6: - mov r1, r8 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 22 - adds r5, r7, 0 - cmp r7, 0 - bge _080731F6 - adds r5, r7, 0x7 -_080731F6: - asrs r5, 3 - lsls r4, r5, 3 - subs r4, r7, r4 - adds r0, r4 - lsls r5, 6 - adds r0, r5 - lsls r0, 5 - ldr r2, =0x06010000 - adds r1, r0, r2 - adds r0, r6, 0 - mov r2, r10 - bl CpuSet - adds r6, 0x20 - mov r3, r8 - ldrh r0, [r3, 0x4] - lsls r0, 22 - lsrs r0, 22 - adds r4, 0x8 - adds r0, r4 - adds r0, r5 - lsls r0, 5 - ldr r2, =0x06010000 - adds r1, r0, r2 - adds r0, r6, 0 - mov r2, r10 - bl CpuSet - adds r6, 0x20 - adds r7, 0x1 - cmp r7, r9 - blt _080731E6 -_08073236: - ldr r6, =gSprites - ldr r3, [sp, 0x18] - ldr r1, [sp, 0x14] - adds r0, r3, r1 - lsls r0, 2 - adds r0, r6 - ldrh r4, [r0, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, 0x7C - ldrb r1, [r0] - mov r0, sp - adds r0, 0x6 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r5] - adds r0, 0x7B - ldrb r1, [r0] - ldr r0, [sp, 0x1C] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r1, sp - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0xBA - strb r0, [r1, 0x8] - ldr r5, =gMonSpritesGfxPtr - ldr r0, [r5] - movs r2, 0xBA - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x9 - mov r2, sp - bl RenderTextFont9 - movs r7, 0 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r6, r0, r6 - movs r4, 0x20 -_08073296: - cmp r7, 0x1 - bgt _080732D4 - ldr r0, [r5] - movs r3, 0xBA - lsls r3, 1 - adds r0, r3 - ldr r0, [r0] - adds r0, r4 - ldrh r1, [r6, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r2, r7, 0x2 - adds r1, r2 - lsls r1, 5 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _080732F4 - .pool -_080732D4: - ldr r0, [r5] - movs r3, 0xBA - lsls r3, 1 - adds r0, r3 - ldr r0, [r0] - adds r0, r4 - ldrh r1, [r6, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r1, r7, r1 - lsls r1, 5 - ldr r2, =0x060100c0 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet -_080732F4: - adds r4, 0x40 - adds r7, 0x1 - cmp r7, 0x4 - ble _08073296 - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80730D4 - - thumb_func_start sub_8073314 -sub_8073314: @ 8073314 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r9, r0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r9, r0 - blt _0807332E - b _080735BA -_0807332E: - ldr r1, =gSprites - mov r10, r1 - ldr r2, =gBattlePartyID - mov r8, r2 -_08073336: - ldr r0, =gHealthBoxesIds - mov r1, r9 - adds r6, r1, r0 - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r1, r10 - adds r1, 0x1C - adds r0, r1 - ldr r1, [r0] - ldr r0, =SpriteCallbackDummy - cmp r1, r0 - beq _08073354 - b _080735A8 -_08073354: - mov r2, r9 - lsls r0, r2, 24 - lsrs r7, r0, 24 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807336A - b _080735A8 -_0807336A: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08073382 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08073382 - b _080735A8 -_08073382: - ldr r5, =gBattleSpritesDataPtr - ldr r0, [r5] - ldr r3, [r0] - mov r0, r9 - lsls r4, r0, 2 - adds r3, r4, r3 - ldr r0, [r3] - lsls r0, 27 - lsrs r0, 31 - movs r2, 0x1 - eors r2, r0 - lsls r2, 4 - mov r12, r2 - ldrb r0, [r3] - movs r2, 0x11 - negs r2, r2 - adds r1, r2, 0 - ands r0, r1 - mov r1, r12 - orrs r0, r1 - strb r0, [r3] - ldr r0, [r5] - ldr r0, [r0] - adds r4, r0 - ldr r0, [r4] - lsls r0, 27 - lsrs r4, r0, 31 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080734B0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _080733D0 - b _080735A8 -_080733D0: - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x80 - ands r2, r0 - cmp r2, 0 - beq _080733DE - b _080735A8 -_080733DE: - cmp r4, 0x1 - bne _08073468 - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r0, [r0, 0x38] - lsls r0, 24 - lsrs r1, r0, 24 - str r2, [sp] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r1, [r0, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r2, =0x06010000 - adds r1, r2 - mov r0, sp - ldr r2, =0x05000040 - bl CpuSet - ldrb r4, [r6] - mov r1, r8 - ldrh r0, [r1] - movs r2, 0x64 - muls r0, r2 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl UpdateHpTextInHealthboxInDoubles - ldrb r4, [r6] - mov r2, r8 - ldrh r0, [r2] - movs r1, 0x64 - muls r0, r1 - ldr r2, =gPlayerParty - b _08073536 - .pool -_08073468: - ldrb r0, [r6] - bl draw_status_ailment_maybe - ldrb r0, [r6] - mov r2, r8 - ldrh r1, [r2] - movs r2, 0x64 - muls r1, r2 - ldr r2, =gPlayerParty - adds r1, r2 - movs r2, 0x5 - bl UpdateHealthboxAttribute - movs r0, 0x75 - bl GetHealthboxElementGfxPtr - ldrb r2, [r6] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r10 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r2, =0x06010680 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _08073592 - .pool -_080734B0: - cmp r4, 0x1 - bne _0807355C - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x80 - ands r2, r0 - cmp r2, 0 - beq _080734DC - ldrb r0, [r6] - mov r2, r8 - ldrh r1, [r2] - movs r2, 0x64 - muls r1, r2 - ldr r2, =gEnemyParty - adds r1, r2 - bl sub_80730D4 - b _08073592 - .pool -_080734DC: - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r0, [r0, 0x38] - lsls r0, 24 - lsrs r1, r0, 24 - str r2, [sp] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r1, [r0, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r0, =0x06010000 - adds r1, r0 - mov r0, sp - ldr r2, =0x05000040 - bl CpuSet - ldrb r4, [r6] - mov r1, r8 - ldrh r0, [r1] - movs r2, 0x64 - muls r0, r2 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl UpdateHpTextInHealthboxInDoubles - ldrb r4, [r6] - mov r2, r8 - ldrh r0, [r2] - movs r1, 0x64 - muls r0, r1 - ldr r2, =gEnemyParty -_08073536: - adds r0, r2 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - movs r2, 0x1 - bl UpdateHpTextInHealthboxInDoubles - b _08073592 - .pool -_0807355C: - ldrb r0, [r6] - bl draw_status_ailment_maybe - ldrb r0, [r6] - mov r2, r8 - ldrh r1, [r2] - movs r5, 0x64 - muls r1, r5 - ldr r4, =gEnemyParty - adds r1, r4 - movs r2, 0x5 - bl UpdateHealthboxAttribute - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08073592 - ldrb r0, [r6] - mov r2, r8 - ldrh r1, [r2] - muls r1, r5 - adds r1, r4 - movs r2, 0x4 - bl UpdateHealthboxAttribute -_08073592: - ldr r0, =gHealthBoxesIds - add r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r1, [r0, 0x3C] - movs r2, 0x1 - eors r1, r2 - strh r1, [r0, 0x3C] -_080735A8: - movs r0, 0x2 - add r8, r0 - movs r1, 0x1 - add r9, r1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r9, r0 - bge _080735BA - b _08073336 -_080735BA: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8073314 - - thumb_func_start sub_80735DC -sub_80735DC: @ 80735DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r1, [sp, 0xC] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r2, 24 - lsrs r2, 24 - adds r4, r2, 0 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x10] - cmp r4, 0 - beq _0807360C - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0807365C -_0807360C: - ldr r0, [sp, 0x8] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08073630 - movs r0, 0 - mov r9, r0 - movs r5, 0x88 - movs r4, 0x60 - movs r1, 0x64 - mov r10, r1 - ldr r2, =0x0000fffb - mov r8, r2 - b _0807366C - .pool -_08073630: - movs r3, 0x1 - mov r9, r3 - cmp r4, 0 - beq _08073642 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08073648 -_08073642: - movs r5, 0x68 - movs r4, 0x28 - b _0807364C -_08073648: - movs r5, 0x68 - movs r4, 0x10 -_0807364C: - ldr r6, =0x0000ff9c - mov r10, r6 - movs r0, 0x5 - mov r8, r0 - b _0807366C - .pool -_0807365C: - movs r1, 0x1 - mov r9, r1 - movs r5, 0x68 - movs r4, 0x28 - ldr r2, =0x0000ff9c - mov r10, r2 - movs r3, 0x5 - mov r8, r3 -_0807366C: - ldr r0, =gUnknown_0832C334 - bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_0832C34C - bl LoadSpriteSheet - ldr r0, =gUnknown_0832C33C - bl LoadSpritePalette - ldr r0, =gUnknown_0832C344 - bl LoadSpritePalette - mov r0, r9 - lsls r6, r0, 1 - adds r0, r6, r0 - lsls r0, 3 - ldr r1, =gUnknown_0832C364 - adds r0, r1 - lsls r5, 16 - asrs r1, r5, 16 - lsls r4, 16 - asrs r2, r4, 16 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - lsls r0, 4 - ldr r1, [sp, 0x14] - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r7, r0, r1 - ldr r1, =gUnknown_0832C2C4 - adds r0, r7, 0 - bl SetSubspriteTables - mov r2, r10 - strh r2, [r7, 0x24] - mov r3, r8 - strh r3, [r7, 0x2E] - str r5, [sp, 0x1C] - str r4, [sp, 0x20] - mov r5, r9 - cmp r5, 0 - beq _08073700 - ldrh r0, [r7, 0x20] - subs r0, 0x60 - strh r0, [r7, 0x20] - ldrb r1, [r7, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r7, 0x3] - b _08073706 - .pool -_08073700: - ldrh r0, [r7, 0x20] - adds r0, 0x60 - strh r0, [r7, 0x20] -_08073706: - movs r0, 0 - mov r8, r0 - ldr r1, =gSprites - mov r10, r1 - mov r7, sp - mov r2, r9 - adds r0, r6, r2 - lsls r0, 3 - str r0, [sp, 0x18] - movs r6, 0xA - movs r5, 0 -_0807371C: - ldr r0, =gUnknown_0832C394 - ldr r3, [sp, 0x20] - ldr r1, =0xfffc0000 - adds r2, r3, r1 - ldr r3, [sp, 0x18] - adds r0, r3, r0 - ldr r3, [sp, 0x1C] - asrs r1, r3, 16 - asrs r2, 16 - movs r3, 0x9 - bl CreateSpriteAtEnd - strb r0, [r7] - ldr r0, [sp, 0x10] - cmp r0, 0 - bne _0807374C - ldrb r0, [r7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r2, =gSprites + 0x1C - adds r1, r2 - ldr r0, =sub_80741C8 - str r0, [r1] -_0807374C: - ldr r4, =gSprites - mov r3, r9 - cmp r3, 0 - bne _0807376E - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - strh r3, [r0, 0x24] - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - mov r1, r9 - strh r1, [r0, 0x26] -_0807376E: - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - mov r2, sp - ldrh r2, [r2, 0x14] - strh r2, [r0, 0x2E] - mov r3, r9 - cmp r3, 0 - bne _080737C8 - ldrb r0, [r7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x20] - adds r0, 0x18 - adds r0, r5 - strh r0, [r1, 0x20] - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r6, [r0, 0x30] - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x78 - b _0807380A - .pool -_080737C8: - ldrb r0, [r7] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldrh r3, [r2, 0x20] - subs r3, 0x18 - movs r1, 0x5 - mov r0, r8 - subs r1, r0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - subs r3, r0 - strh r3, [r2, 0x20] - ldrb r0, [r7] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - movs r1, 0x6 - mov r3, r8 - subs r1, r3 - lsls r0, r1, 3 - subs r0, r1 - adds r0, 0xA - strh r0, [r2, 0x30] - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, =0x0000ff88 -_0807380A: - strh r1, [r0, 0x24] - ldrb r1, [r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - mov r1, r9 - strh r1, [r0, 0x32] - adds r7, 0x1 - adds r6, 0x7 - adds r5, 0xA - movs r2, 0x1 - add r8, r2 - mov r3, r8 - cmp r3, 0x5 - bgt _0807382C - b _0807371C -_0807382C: - ldr r0, [sp, 0x8] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807383A - b _080739E8 -_0807383A: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x40 - ands r1, r2 - cmp r1, 0 - beq _080738F4 - ldr r5, =0x0000ffff - mov r10, r5 - ldr r6, =gSprites - ldr r0, =0x000003ff - adds r7, r0, 0 - ldr r1, =0xfffffc00 - mov r9, r1 - mov r4, sp - ldr r5, [sp, 0xC] - movs r2, 0x5 - mov r8, r2 -_0807385C: - ldrh r0, [r5] - cmp r0, r10 - bne _080738A8 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x1 - ands r1, r7 - mov r0, r9 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - strh r1, [r0, 0x3C] - b _080738E2 - .pool -_080738A8: - cmp r0, 0 - bne _080738C0 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x3 - b _080738D8 -_080738C0: - ldr r0, [r5, 0x4] - cmp r0, 0 - beq _080738E2 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x2 -_080738D8: - ands r1, r7 - mov r0, r9 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_080738E2: - adds r4, 0x1 - adds r5, 0x8 - movs r3, 0x1 - negs r3, r3 - add r8, r3 - mov r0, r8 - cmp r0, 0 - bge _0807385C - b _08073B9A -_080738F4: - movs r1, 0x5 - mov r10, r1 - movs r7, 0 - ldr r2, =gSprites - mov r8, r2 - ldr r3, =0x000003ff - mov r9, r3 - ldr r5, =0xfffffc00 - mov r12, r5 - ldr r6, [sp, 0xC] - mov r5, sp -_0807390A: - ldrh r0, [r6] - ldr r1, =0x0000ffff - cmp r0, r1 - bne _08073958 - mov r4, sp - add r4, r10 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x1 - mov r0, r9 - ands r1, r0 - mov r0, r12 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - strh r1, [r0, 0x3C] - subs r1, 0x2 - add r10, r1 - b _080739DE - .pool -_08073958: - cmp r0, 0 - bne _08073970 - ldrb r0, [r5] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x3 - b _080739D0 -_08073970: - ldr r1, =gBattleTypeFlags - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _080739B8 - ldr r0, =gBattleStruct - ldr r0, [r0] - movs r2, 0xA8 - lsls r2, 2 - adds r0, r2 - ldrb r1, [r0] - ldr r2, =gBitTable - lsls r0, r7, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080739B8 - ldrb r0, [r5] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x3 - b _080739D0 - .pool -_080739B8: - ldr r0, [r6, 0x4] - cmp r0, 0 - beq _080739DC - ldrb r0, [r5] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x2 -_080739D0: - mov r0, r9 - ands r1, r0 - mov r0, r12 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_080739DC: - adds r5, 0x1 -_080739DE: - adds r6, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0807390A - b _08073B9A -_080739E8: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r2, =0x00008040 - ands r1, r2 - cmp r1, 0 - beq _08073AA4 - ldr r1, =0x0000ffff - mov r10, r1 - ldr r6, =gSprites - ldr r2, =0x000003ff - adds r7, r2, 0 - ldr r3, =0xfffffc00 - mov r9, r3 - ldr r5, [sp, 0xC] - mov r4, sp - adds r4, 0x5 - movs r0, 0x5 - mov r8, r0 -_08073A0C: - ldrh r0, [r5] - cmp r0, r10 - bne _08073A58 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x1 - ands r1, r7 - mov r0, r9 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - strh r1, [r0, 0x3C] - b _08073A92 - .pool -_08073A58: - cmp r0, 0 - bne _08073A70 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x3 - b _08073A88 -_08073A70: - ldr r0, [r5, 0x4] - cmp r0, 0 - beq _08073A92 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x2 -_08073A88: - ands r1, r7 - mov r0, r9 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_08073A92: - subs r4, 0x1 - adds r5, 0x8 - movs r1, 0x1 - negs r1, r1 - add r8, r1 - mov r2, r8 - cmp r2, 0 - bge _08073A0C - b _08073B9A -_08073AA4: - movs r3, 0 - mov r8, r3 - movs r7, 0 - ldr r5, =gSprites - mov r9, r5 - ldr r6, =0x000003ff - mov r12, r6 - ldr r0, =0xfffffc00 - mov r10, r0 - ldr r6, [sp, 0xC] - mov r5, sp - adds r5, 0x5 -_08073ABC: - ldrh r0, [r6] - ldr r1, =0x0000ffff - cmp r0, r1 - bne _08073B08 - mov r4, sp - add r4, r8 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r9 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x1 - mov r0, r12 - ands r1, r0 - mov r0, r10 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - movs r1, 0x1 - strh r1, [r0, 0x3C] - add r8, r1 - b _08073B92 - .pool -_08073B08: - cmp r0, 0 - bne _08073B20 - ldrb r0, [r5] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r9 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x3 - b _08073B84 -_08073B20: - ldr r1, =gBattleTypeFlags - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _08073B6C - ldr r2, =gBattleStruct - ldr r0, [r2] - ldr r3, =0x000002a1 - adds r0, r3 - ldrb r1, [r0] - lsls r0, r7, 2 - ldr r2, =gBitTable - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08073B6C - ldrb r0, [r5] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r9 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x3 - b _08073B84 - .pool -_08073B6C: - ldr r0, [r6, 0x4] - cmp r0, 0 - beq _08073B90 - ldrb r0, [r5] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r9 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x2 -_08073B84: - mov r0, r12 - ands r1, r0 - mov r0, r10 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_08073B90: - subs r5, 0x1 -_08073B92: - adds r6, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _08073ABC -_08073B9A: - ldr r0, =TaskDummy - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, =gTasks - lsls r3, r4, 2 - adds r1, r3, r4 - lsls r1, 3 - adds r0, r1, r2 - mov r5, sp - ldrh r5, [r5, 0x8] - strh r5, [r0, 0x8] - mov r6, sp - ldrh r6, [r6, 0x14] - strh r6, [r0, 0xA] - movs r0, 0 - mov r8, r0 - adds r0, r2, 0 - adds r0, 0xE - adds r1, r0 -_08073BC6: - mov r0, sp - add r0, r8 - ldrb r0, [r0] - strh r0, [r1] - adds r1, 0x2 - movs r5, 0x1 - add r8, r5 - mov r6, r8 - cmp r6, 0x5 - ble _08073BC6 - adds r0, r3, r4 - lsls r0, 3 - adds r0, r2 - mov r1, sp - ldrh r1, [r1, 0x10] - strh r1, [r0, 0x1C] - ldr r2, [sp, 0x10] - cmp r2, 0 - beq _08073C0A - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, [r0, 0x8] - ldrb r2, [r3, 0x9] - lsls r1, r2, 27 - lsrs r1, 29 - adds r1, 0x1 - movs r0, 0x7 - ands r1, r0 - lsls r1, 2 - movs r0, 0x1D - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x9] -_08073C0A: - movs r0, 0x72 - movs r1, 0 - bl PlaySE12WithPanning - adds r0, r4, 0 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80735DC - - thumb_func_start sub_8073C30 -sub_8073C30: @ 8073C30 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, =gTasks - lsls r3, r0, 2 - adds r1, r3, r0 - lsls r1, 3 - adds r0, r1, r2 - ldrb r7, [r0, 0x1C] - ldrb r4, [r0, 0xA] - mov r10, r4 - ldrb r0, [r0, 0x8] - str r0, [sp, 0x8] - movs r5, 0 - str r3, [sp, 0xC] - adds r2, 0xE - adds r2, r1, r2 -_08073C5E: - mov r0, sp - adds r1, r0, r5 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x5 - ble _08073C5E - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - ldr r1, =gTasks - ldr r0, [sp, 0xC] - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x10 - strh r1, [r0, 0x26] - movs r5, 0 - mov r1, r10 - lsls r1, 4 - str r1, [sp, 0x10] - ldr r3, =gSprites - movs r6, 0xD - negs r6, r6 - mov r12, r3 - movs r4, 0x4 -_08073CA0: - mov r2, sp - adds r0, r2, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0x1] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r4 - strb r0, [r1, 0x1] - adds r5, 0x1 - cmp r5, 0x5 - ble _08073CA0 - ldr r2, [sp, 0x10] - add r2, r10 - lsls r2, 2 - add r2, r12 - ldrb r1, [r2, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x1] - cmp r7, 0 - bne _08073CDA - b _08073DE0 -_08073CDA: - movs r5, 0 - mov r6, r12 - mov r9, r5 - adds r3, r6, 0 - adds r3, 0x1C - mov r4, sp - movs r7, 0 -_08073CE8: - ldr r0, [sp, 0x8] - str r3, [sp, 0x14] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, [sp, 0x14] - cmp r2, 0 - beq _08073D4C - movs r0, 0x5 - subs r0, r5 - mov r1, sp - adds r2, r1, r0 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r7, [r0, 0x30] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r9 - strh r1, [r0, 0x34] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r9 - strh r1, [r0, 0x36] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, =sub_8074158 - str r1, [r0] - ldr r2, =gSprites - mov r12, r2 - b _08073D82 - .pool -_08073D4C: - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r7, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r2, [r0, 0x34] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r2, [r0, 0x36] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, =sub_8074158 - str r1, [r0] - ldr r0, =gSprites - mov r12, r0 -_08073D82: - adds r4, 0x1 - adds r7, 0x7 - adds r5, 0x1 - cmp r5, 0x5 - ble _08073CE8 - ldr r3, [sp, 0x10] - add r3, r10 - lsls r3, 2 - mov r1, r12 - adds r0, r3, r1 - movs r2, 0x2E - ldrsh r1, [r0, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - movs r2, 0 - strh r1, [r0, 0x2E] - strh r2, [r0, 0x30] - mov r1, r12 - adds r1, 0x1C - adds r3, r1 - ldr r1, =sub_8074090 - str r1, [r3] - ldr r1, =gUnknown_0832C2CC - bl SetSubspriteTables - ldr r1, =gTasks - ldr r0, [sp, 0xC] - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, =task_battle_throw_own_ball - str r1, [r0] - b _08073DEE - .pool -_08073DE0: - ldr r0, =gTasks - ldr r1, [sp, 0xC] - add r1, r8 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8073F98 - str r0, [r1] -_08073DEE: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8073C30 - - thumb_func_start task_battle_throw_own_ball -task_battle_throw_own_ball: @ 8073E08 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08073E48 - ldrh r0, [r4, 0x26] - subs r1, r0, 0x1 - strh r1, [r4, 0x26] - lsls r0, r1, 16 - cmp r0, 0 - blt _08073E54 - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08073E48: - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08073E54 - ldr r0, =sub_8073E64 - str r0, [r4] -_08073E54: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end task_battle_throw_own_ball - - thumb_func_start sub_8073E64 -sub_8073E64: @ 8073E64 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r7, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r3, r0, 3 - adds r4, r3, r7 - ldrb r2, [r4, 0x8] - ldrh r0, [r4, 0x26] - subs r0, 0x1 - strh r0, [r4, 0x26] - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _08073F54 - ldrb r5, [r4, 0xA] - movs r4, 0 - ldr r6, =gBattleSpritesDataPtr - adds r0, r7, 0 - adds r0, 0xE - adds r2, r3, r0 -_08073E96: - mov r0, sp - adds r1, r0, r4 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r4, 0x1 - cmp r4, 0x5 - ble _08073E96 - ldr r0, [r6] - ldr r3, [r0, 0x8] - ldrb r2, [r3, 0x9] - lsls r1, r2, 27 - lsrs r1, 29 - subs r1, 0x1 - movs r0, 0x7 - ands r1, r0 - lsls r1, 2 - movs r0, 0x1D - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x9] - ldr r0, [r6] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - movs r0, 0x1C - ands r0, r1 - cmp r0, 0 - bne _08073EFC - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - bl DestroySpriteAndFreeResources - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySpriteAndFreeResources - b _08073F32 - .pool -_08073EFC: - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r5, =gSprites - adds r4, r5 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl FreeSpriteOamMatrix - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_08073F32: - movs r4, 0x1 - ldr r5, =gSprites -_08073F36: - mov r1, sp - adds r0, r1, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - adds r4, 0x1 - cmp r4, 0x5 - ble _08073F36 - b _08073F8A - .pool -_08073F54: - movs r0, 0x3 - negs r0, r0 - cmp r1, r0 - bne _08073F8A - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyTask -_08073F8A: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8073E64 - - thumb_func_start sub_8073F98 -sub_8073F98: @ 8073F98 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r7, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r6, r0, 3 - adds r3, r6, r7 - ldrb r5, [r3, 0x8] - ldrh r0, [r3, 0x26] - subs r1, r0, 0x1 - strh r1, [r3, 0x26] - lsls r0, r1, 16 - asrs r2, r0, 16 - cmp r2, 0 - blt _08073FD4 - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - b _0807406A - .pool -_08073FD4: - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bne _08074034 - ldrb r3, [r3, 0xA] - movs r5, 0 - adds r0, r7, 0 - adds r0, 0xE - adds r2, r6, r0 -_08073FE6: - mov r0, sp - adds r1, r0, r5 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x5 - ble _08073FE6 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - bl DestroySpriteAndFreeResources - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySpriteAndFreeResources - movs r5, 0x1 -_08074016: - mov r1, sp - adds r0, r1, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - adds r5, 0x1 - cmp r5, 0x5 - ble _08074016 - b _0807406A - .pool -_08074034: - movs r0, 0x3 - negs r0, r0 - cmp r2, r0 - bne _0807406A - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyTask -_0807406A: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8073F98 - - thumb_func_start sub_8074078 -sub_8074078: @ 8074078 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x24] - movs r3, 0x24 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0807408C - ldrh r0, [r1, 0x2E] - adds r0, r2, r0 - strh r0, [r1, 0x24] -_0807408C: - pop {r0} - bx r0 - thumb_func_end sub_8074078 - - thumb_func_start sub_8074090 -sub_8074090: @ 8074090 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r1, r0, 0 - adds r1, 0x20 - strh r1, [r2, 0x30] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080740AE - lsls r0, r1, 16 - asrs r0, 20 - ldrh r1, [r2, 0x24] - adds r0, r1 - b _080740B6 -_080740AE: - lsls r1, 16 - asrs r1, 20 - ldrh r0, [r2, 0x24] - subs r0, r1 -_080740B6: - strh r0, [r2, 0x24] - ldrh r1, [r2, 0x30] - movs r0, 0xF - ands r0, r1 - strh r0, [r2, 0x30] - pop {r0} - bx r0 - thumb_func_end sub_8074090 - - thumb_func_start sub_80740C4 -sub_80740C4: @ 80740C4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080740D8 - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _0807414E -_080740D8: - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r3, r0, 24 - ldrh r2, [r4, 0x34] - adds r0, r2, 0 - adds r0, 0x38 - lsls r1, r0, 16 - lsrs r2, r1, 16 - ldr r0, =0x0000fff0 - ands r2, r0 - strh r2, [r4, 0x34] - cmp r3, 0 - beq _0807410C - lsrs r0, r1, 20 - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - ble _0807411C - movs r0, 0 - strh r0, [r4, 0x24] - b _0807411C - .pool -_0807410C: - lsrs r1, 20 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bge _0807411C - strh r3, [r4, 0x24] -_0807411C: - movs r2, 0x24 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0807414E - movs r1, 0x3F - cmp r3, 0 - beq _0807412C - movs r1, 0xC0 -_0807412C: - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08074140 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x74 - bl PlaySE2WithPanning - b _0807414A -_08074140: - lsls r1, 24 - asrs r1, 24 - movs r0, 0x73 - bl PlaySE1WithPanning -_0807414A: - ldr r0, =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0807414E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80740C4 - - thumb_func_start sub_8074158 -sub_8074158: @ 8074158 - push {r4,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x30] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _0807416C - subs r0, r1, 0x1 - strh r0, [r3, 0x30] - b _080741BC -_0807416C: - ldrh r0, [r3, 0x32] - lsls r0, 24 - ldrh r2, [r3, 0x34] - adds r1, r2, 0 - adds r1, 0x38 - lsls r4, r1, 16 - lsrs r2, r4, 16 - ldr r1, =0x0000fff0 - ands r2, r1 - strh r2, [r3, 0x34] - cmp r0, 0 - beq _08074190 - lsrs r0, r4, 20 - ldrh r1, [r3, 0x24] - adds r0, r1 - b _08074196 - .pool -_08074190: - lsrs r1, r4, 20 - ldrh r0, [r3, 0x24] - subs r0, r1 -_08074196: - strh r0, [r3, 0x24] - movs r2, 0x24 - ldrsh r0, [r3, r2] - movs r2, 0x20 - ldrsh r1, [r3, r2] - adds r0, r1 - adds r0, 0x8 - movs r1, 0x80 - lsls r1, 1 - cmp r0, r1 - bls _080741BC - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, =SpriteCallbackDummy - str r0, [r3, 0x1C] -_080741BC: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8074158 - - thumb_func_start sub_80741C8 -sub_80741C8: @ 80741C8 - ldrh r2, [r0, 0x2E] - lsls r2, 24 - lsrs r2, 24 - ldr r3, =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x24] - strh r2, [r0, 0x24] - ldrh r1, [r1, 0x26] - strh r1, [r0, 0x26] - bx lr - .pool - thumb_func_end sub_80741C8 - - thumb_func_start sub_80741E8 -sub_80741E8: @ 80741E8 - push {r4-r7,lr} - sub sp, 0x14 - adds r4, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, =gDisplayedStringBattle - ldr r1, =gText_HighlightDarkGrey - adds r0, r5, 0 - bl StringCopy - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - add r0, sp, 0x4 - bl StringGetEnd10 - adds r0, r5, 0 - add r1, sp, 0x4 - bl StringAppend - adds r5, r0, 0 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x1D - beq _08074236 - cmp r0, 0x20 - bne _0807424A -_08074236: - movs r0, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - add r0, sp, 0x4 - bl StringCompare - cmp r0, 0 - bne _0807424A - movs r6, 0x64 -_0807424A: - cmp r6, 0 - beq _08074268 - cmp r6, 0xFE - beq _08074270 - ldr r1, =gText_DynColor2 - b _08074272 - .pool -_08074268: - ldr r1, =gText_DynColor2Male - b _08074272 - .pool -_08074270: - ldr r1, =gText_DynColor1Female -_08074272: - adds r0, r5, 0 - bl StringCopy - ldr r0, =gDisplayedStringBattle - add r1, sp, 0x10 - str r1, [sp] - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl AddTextPrinterAndCreateWindowOnHealthbox - adds r6, r0, 0 - ldr r0, =gSprites - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r4, r0, 17 - ldrh r0, [r1, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080742F0 - ldr r1, =0x06010040 - adds r0, r4, r1 - adds r1, r6, 0 - movs r2, 0x6 - bl sub_8075198 - bl IsDoubleBattle - lsls r0, 24 - ldr r1, =0x06010400 - adds r5, r4, r1 - cmp r0, 0 - bne _080742C8 - ldr r0, =0x06010800 - adds r5, r4, r0 -_080742C8: - adds r1, r6, 0 - adds r1, 0xC0 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8075198 - b _080742FC - .pool -_080742F0: - ldr r1, =0x06010020 - adds r0, r4, r1 - adds r1, r6, 0 - movs r2, 0x7 - bl sub_8075198 -_080742FC: - ldr r0, [sp, 0x10] - bl RemoveWindow_ - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80741E8 thumb_func_start sub_8074310 sub_8074310: @ 8074310 @@ -2305,8 +108,8 @@ _080743E6: .pool thumb_func_end sub_8074310 - thumb_func_start draw_status_ailment_maybe -draw_status_ailment_maybe: @ 80743F8 + thumb_func_start UpdateStatusIconInHealthbox +UpdateStatusIconInHealthbox: @ 80743F8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2600,7 +403,7 @@ _0807467A: pop {r0} bx r0 .pool - thumb_func_end draw_status_ailment_maybe + thumb_func_end UpdateStatusIconInHealthbox thumb_func_start sub_80746A8 sub_80746A8: @ 80746A8 @@ -2981,7 +784,7 @@ _080749CE: _080749D6: adds r0, r6, 0 mov r1, r8 - bl sub_80741E8 + bl UpdateNickInHealthbox _080749DE: cmp r7, 0x9 beq _080749E6 @@ -2989,7 +792,7 @@ _080749DE: bne _080749EC _080749E6: adds r0, r6, 0 - bl draw_status_ailment_maybe + bl UpdateStatusIconInHealthbox _080749EC: cmp r7, 0xA bne _080749F6 @@ -3055,7 +858,7 @@ _08074A70: _08074A78: adds r0, r6, 0 mov r1, r8 - bl sub_80741E8 + bl UpdateNickInHealthbox _08074A80: cmp r7, 0x9 beq _08074A88 @@ -3063,7 +866,7 @@ _08074A80: bne _08074A8E _08074A88: adds r0, r6, 0 - bl draw_status_ailment_maybe + bl UpdateStatusIconInHealthbox _08074A8E: add sp, 0x4 pop {r3-r5} diff --git a/include/battle.h b/include/battle.h index 948111d43e..ae7fa3ce40 100644 --- a/include/battle.h +++ b/include/battle.h @@ -883,6 +883,19 @@ struct BattleSpriteInfo struct BattleAnimationInfo { u16 field; // to fill up later + u8 field_2; + u8 field_3; + u8 field_4; + u8 field_5; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9_x1 : 1; + u8 field_9_x2 : 1; + u8 field_9_x1C : 3; + u8 field_9_x20 : 1; + u8 field_9_x40 : 1; + u8 field_9_x80 : 1; }; struct BattleHealthboxInfo diff --git a/include/decompress.h b/include/decompress.h index 6c925f7308..c3a7718934 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -8,7 +8,7 @@ void LZDecompressVram(const void *src, void *dest); u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src); void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); -bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src); +bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src); void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); diff --git a/src/battle_interface.c b/src/battle_interface.c index e8ab8e478b..9080b39050 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -6,9 +6,24 @@ #include "window.h" #include "string_util.h" #include "text.h" +#include "battle_controllers.h" +#include "sound.h" +#include "songs.h" +#include "decompress.h" +#include "task.h" +#include "util.h" +#include "gpu_regs.h" +#include "battle_message.h" +#include "species.h" extern bool8 IsDoubleBattle(void); extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gNoOfAllBanks; +extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; + +extern const u8 * const gNatureNamePointers[]; +extern const u8 gText_Slash[]; // this file's functions void sub_8072924(struct Sprite *sprite); @@ -20,6 +35,13 @@ void RemoveWindow_(u32 windowId); void sub_8075170(void *dest, u32 arg1, u32 arg2); void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void sub_807513C(void *dest, u32 arg1, u32 arg2); +void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); +void sub_80741C8(struct Sprite *sprite); +void sub_8073E08(u8 taskId); +void sub_8073F98(u8 taskId); +void sub_8073E64(u8 taskId); +void sub_8074158(struct Sprite *sprite); +void sub_8074090(struct Sprite *sprite); // const rom data const struct OamData gUnknown_0832C138 = @@ -155,6 +177,15 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = extern const u8 gUnknown_0832C3C4[0x14]; extern const u8 gUnknown_0832C3D8[0x14]; +extern const u32 gHealthboxElementsGfxTable[][8]; +extern const struct CompressedSpriteSheet gUnknown_0832C334; +extern const struct SpriteSheet gUnknown_0832C34C; +extern const struct SpritePalette gUnknown_0832C33C; +extern const struct SpritePalette gUnknown_0832C344; +extern const struct SpriteTemplate gUnknown_0832C364[2]; +extern const struct SpriteTemplate gUnknown_0832C394[2]; +extern const struct SubspriteTable gUnknown_0832C2C4; +extern const struct SubspriteTable gUnknown_0832C2CC; u8 sub_8072304(void) { @@ -574,8 +605,6 @@ u8 CreateSafariPlayerHealthboxSprites(void) return healthboxSpriteId_1; } -extern const u32 gHealthboxElementsGfxTable[][8]; - const u32 *GetHealthboxElementGfxPtr(u8 elementId) { return gHealthboxElementsGfxTable[elementId]; @@ -658,9 +687,6 @@ void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly) } -extern u8 gNoOfAllBanks; -extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; - void UpdateOamPriorityInAllHealthboxes(u8 priority) { s32 i; @@ -827,8 +853,6 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) } } -extern const u8 gText_Slash[]; - void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) { u32 windowId, windowTileData, spriteTileNum; @@ -922,3 +946,639 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC } } } + +void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) +{ + u8 text[20]; + s32 j, var2; + u8 *fontPixels; + u8 i, var, nature, healthboxSpriteId_2; + + memcpy(text, gUnknown_0832C3C4, sizeof(gUnknown_0832C3C4)); + fontPixels = &gMonSpritesGfxPtr->fontPixels[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data6) * 384)]; + var = 5; + nature = GetNature(mon); + StringCopy(text + 6, gNatureNamePointers[nature]); + RenderTextFont9(fontPixels, 9, text); + + for (j = 6, i = 0; i < var; i++, j++) + { + u8 elementId; + + if ((text[j] >= 55 && text[j] <= 74) || (text[j] >= 135 && text[j] <= 154)) + elementId = 44; + else if ((text[j] >= 75 && text[j] <= 79) || (text[j] >= 155 && text[j] <= 159)) + elementId = 45; + else + elementId = 43; + + CpuCopy32(GetHealthboxElementGfxPtr(elementId), fontPixels + (i * 64), 0x20); + } + + for (j = 1; j < var + 1; j++) + { + var2 = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32; + CpuCopy32(fontPixels, (void*)(OBJ_VRAM0) + (var2), 0x20); + fontPixels += 0x20; + + var2 = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32; + CpuCopy32(fontPixels, (void*)(OBJ_VRAM0) + (var2), 0x20); + fontPixels += 0x20; + } + + healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5; + ConvertIntToDecimalStringN(text + 6, gBattleStruct->field_7C, STR_CONV_MODE_RIGHT_ALIGN, 2); + ConvertIntToDecimalStringN(text + 9, gBattleStruct->field_7B, STR_CONV_MODE_RIGHT_ALIGN, 2); + text[5] = CHAR_SPACE; + text[8] = CHAR_SLASH; + RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text); + + j = healthboxSpriteId_2; // needed to match for some reason + for (j = 0; j < 5; j++) + { + if (j <= 1) + { + CpuCopy32(&gMonSpritesGfxPtr->fontPixels[0x40 * j + 0x20], + (void*)(OBJ_VRAM0) + (gSprites[healthboxSpriteId_2].oam.tileNum + 2 + j) * 32, + 32); + } + else + { + CpuCopy32(&gMonSpritesGfxPtr->fontPixels[0x40 * j + 0x20], + (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthboxSpriteId_2].oam.tileNum) * 32, + 32); + } + } +} + +void SwapHpBarsWithHpText(void) +{ + s32 i; + u8 spriteId; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gSprites[gHealthBoxesIds[i]].callback == SpriteCallbackDummy + && GetBankSide(i) != SIDE_OPPONENT + && (IsDoubleBattle() || GetBankSide(i) != SIDE_PLAYER)) + { + bool8 noBars; + + gBattleSpritesDataPtr->bankData[i].hpNumbersNoBars ^= 1; + noBars = gBattleSpritesDataPtr->bankData[i].hpNumbersNoBars; + if (GetBankSide(i) == SIDE_PLAYER) + { + if (!IsDoubleBattle()) + continue; + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + continue; + + if (noBars == TRUE) // bars to text + { + spriteId = gSprites[gHealthBoxesIds[i]].data5; + + CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), 0); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); + } + else // text to bars + { + UpdateStatusIconInHealthbox(gHealthBoxesIds[i]); + UpdateHealthboxAttribute(gHealthBoxesIds[i], &gPlayerParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR); + CpuCopy32(GetHealthboxElementGfxPtr(0x75), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthBoxesIds[i]].oam.tileNum * 32), 32); + } + } + else + { + if (noBars == TRUE) // bars to text + { + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + { + sub_80730D4(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]]); + } + else + { + spriteId = gSprites[gHealthBoxesIds[i]].data5; + + CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), 0); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); + } + } + else // text to bars + { + UpdateStatusIconInHealthbox(gHealthBoxesIds[i]); + UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR); + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_NICK); + } + } + gSprites[gHealthBoxesIds[i]].data7 ^= 1; + } + } +} + +u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart) +{ + bool8 isOpponent; + s16 bar_X, bar_Y, bar_pos2_X, bar_data0; + s32 i, j, var; + u8 barSpriteId; + u8 ballIconSpritesIds[6]; + u8 taskId; + + if (!arg2 || GetBankIdentity(bank) != IDENTITY_OPPONENT_MON2) + { + if (GetBankSide(bank) == SIDE_PLAYER) + { + isOpponent = FALSE; + bar_X = 136, bar_Y = 96; + bar_pos2_X = 100; + bar_data0 = -5; + } + else + { + isOpponent = TRUE; + + if (!arg2 || !IsDoubleBattle()) + bar_X = 104, bar_Y = 40; + else + bar_X = 104, bar_Y = 16; + + bar_pos2_X = -100; + bar_data0 = 5; + } + } + else + { + isOpponent = TRUE; + bar_X = 104, bar_Y = 40; + bar_pos2_X = -100; + bar_data0 = 5; + } + + LoadCompressedObjectPicUsingHeap(&gUnknown_0832C334); + LoadSpriteSheet(&gUnknown_0832C34C); + LoadSpritePalette(&gUnknown_0832C33C); + LoadSpritePalette(&gUnknown_0832C344); + + barSpriteId = CreateSprite(&gUnknown_0832C364[isOpponent], bar_X, bar_Y, 10); + SetSubspriteTables(&gSprites[barSpriteId], &gUnknown_0832C2C4); + gSprites[barSpriteId].pos2.x = bar_pos2_X; + gSprites[barSpriteId].data0 = bar_data0; + + if (isOpponent) + { + gSprites[barSpriteId].pos1.x -= 96; + gSprites[barSpriteId].oam.matrixNum = 8; + } + else + { + gSprites[barSpriteId].pos1.x += 96; + } + + for (i = 0; i < 6; i++) + { + ballIconSpritesIds[i] = CreateSpriteAtEnd(&gUnknown_0832C394[isOpponent], bar_X, bar_Y - 4, 9); + + if (!isBattleStart) + gSprites[ballIconSpritesIds[i]].callback = sub_80741C8; + + if (!isOpponent) + { + gSprites[ballIconSpritesIds[i]].pos2.x = 0; + gSprites[ballIconSpritesIds[i]].pos2.y = 0; + } + + gSprites[ballIconSpritesIds[i]].data0 = barSpriteId; + + if (!isOpponent) + { + gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24; + gSprites[ballIconSpritesIds[i]].data1 = i * 7 + 10; + gSprites[ballIconSpritesIds[i]].pos2.x = 120; + } + else + { + gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24; + gSprites[ballIconSpritesIds[i]].data1 = (6 - i) * 7 + 10; + gSprites[ballIconSpritesIds[i]].pos2.x = -120; + } + + gSprites[ballIconSpritesIds[i]].data2 = isOpponent; + } + + if (GetBankSide(bank) == SIDE_PLAYER) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + for (i = 0; i < 6; i++) + { + if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[i]].data7 = 1; + } + else if (partyInfo[i].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 3; + } + else if (partyInfo[i].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 2; + } + } + } + else + { + for (i = 0, var = 5, j = 0; j < 6; j++) + { + if (partyInfo[j].hp == 0xFFFF) // empty slot or an egg + { + gSprites[ballIconSpritesIds[var]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[var]].data7 = 1; + var--; + continue; + } + else if (partyInfo[j].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 3; + } + else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_2A0 & gBitTable[j]) // hmm...? + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 3; + } + else if (partyInfo[j].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 2; + } + i++; + } + } + } + else + { + if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS)) + { + for (var = 5, i = 0; i < 6; i++) + { + if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg + { + gSprites[ballIconSpritesIds[var]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[var]].data7 = 1; + } + else if (partyInfo[i].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[var]].oam.tileNum += 3; + } + else if (partyInfo[i].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[var]].oam.tileNum += 2; + } + var--; + } + } + else + { + for (var = 0, i = 0, j = 0; j < 6; j++) + { + if (partyInfo[j].hp == 0xFFFF) // empty slot or an egg + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[i]].data7 = 1; + i++; + continue; + } + else if (partyInfo[j].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 3; + } + else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_2A1 & gBitTable[j]) // hmm...? + { + gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 3; + } + else if (partyInfo[j].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 2; + } + var++; + } + } + } + + taskId = CreateTask(TaskDummy, 5); + gTasks[taskId].data[0] = bank; + gTasks[taskId].data[1] = barSpriteId; + + for (i = 0; i < 6; i++) + gTasks[taskId].data[3 + i] = ballIconSpritesIds[i]; + + gTasks[taskId].data[10] = isBattleStart; + + if (isBattleStart) + { + gBattleSpritesDataPtr->animationData->field_9_x1C++; + } + + PlaySE12WithPanning(SE_TB_START, 0); + return taskId; +} + +void sub_8073C30(u8 taskId) +{ + u8 sp[6]; + u8 r7; + u8 r10; + u8 bank; + s32 i; + + r7 = gTasks[taskId].data[10]; + r10 = gTasks[taskId].data[1]; + bank = gTasks[taskId].data[0]; + + for (i = 0; i < 6; i++) + sp[i] = gTasks[taskId].data[3 + i]; + + SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x10); + + gTasks[taskId].data[15] = 16; + + for (i = 0; i < 6; i++) + gSprites[sp[i]].oam.objMode = 1; + + gSprites[r10].oam.objMode = 1; + + if (r7 != 0) + { + for (i = 0; i < 6; i++) + { + if (GetBankSide(bank) != SIDE_PLAYER) + { + gSprites[sp[5 - i]].data1 = 7 * i; + gSprites[sp[5 - i]].data3 = 0; + gSprites[sp[5 - i]].data4 = 0; + gSprites[sp[5 - i]].callback = sub_8074158; + } + else + { + gSprites[sp[i]].data1 = 7 * i; + gSprites[sp[i]].data3 = 0; + gSprites[sp[i]].data4 = 0; + gSprites[sp[i]].callback = sub_8074158; + } + } + gSprites[r10].data0 /= 2; + gSprites[r10].data1 = 0; + gSprites[r10].callback = sub_8074090; + SetSubspriteTables(&gSprites[r10], &gUnknown_0832C2CC); + gTasks[taskId].func = sub_8073E08; + } + else + { + gTasks[taskId].func = sub_8073F98; + } +} + +void sub_8073E08(u8 taskId) +{ + u16 temp = gTasks[taskId].data[11]++; + + if (!(temp & 1)) + { + gTasks[taskId].data[15]--; + if (gTasks[taskId].data[15] < 0) + return; + + SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[15]) | ((16 - gTasks[taskId].data[15]) << 8)); + } + if (gTasks[taskId].data[15] == 0) + gTasks[taskId].func = sub_8073E64; +} + +void sub_8073E64(u8 taskId) +{ + u8 sp[6]; + s32 i; + + u8 bank = gTasks[taskId].data[0]; + gTasks[taskId].data[15]--; + if (gTasks[taskId].data[15] == -1) + { + u8 var = gTasks[taskId].data[1]; + + for (i = 0; i < 6; i++) + sp[i] = gTasks[taskId].data[3 + i]; + + gBattleSpritesDataPtr->animationData->field_9_x1C--; + if (!gBattleSpritesDataPtr->animationData->field_9_x1C) + { + DestroySpriteAndFreeResources(&gSprites[var]); + DestroySpriteAndFreeResources(&gSprites[sp[0]]); + } + else + { + FreeSpriteOamMatrix(&gSprites[var]); + DestroySprite(&gSprites[var]); + FreeSpriteOamMatrix(&gSprites[sp[0]]); + DestroySprite(&gSprites[sp[0]]); + } + + for (i = 1; i < 6; i++) + DestroySprite(&gSprites[sp[i]]); + } + else if (gTasks[taskId].data[15] == -3) + { + gBattleSpritesDataPtr->healthBoxesData[bank].flag_x1 = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyTask(taskId); + } +} + +void sub_8073F98(u8 taskId) +{ + u8 sp[6]; + s32 i; + + u8 bank = gTasks[taskId].data[0]; + gTasks[taskId].data[15]--; + if (gTasks[taskId].data[15] >= 0) + { + SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[15]) | ((16 - gTasks[taskId].data[15]) << 8)); + } + else if (gTasks[taskId].data[15] == -1) + { + u8 var = gTasks[taskId].data[1]; + + for (i = 0; i < 6; i++) + sp[i] = gTasks[taskId].data[3 + i]; + + DestroySpriteAndFreeResources(&gSprites[var]); + DestroySpriteAndFreeResources(&gSprites[sp[0]]); + + for (i = 1; i < 6; i++) + DestroySprite(&gSprites[sp[i]]); + } + else if (gTasks[taskId].data[15] == -3) + { + gBattleSpritesDataPtr->healthBoxesData[bank].flag_x1 = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyTask(taskId); + } +} + +void sub_8074078(struct Sprite *sprite) +{ + if (sprite->pos2.x != 0) + sprite->pos2.x += sprite->data0; +} + +void sub_8074090(struct Sprite *sprite) +{ + sprite->data1 += 32; + if (sprite->data0 > 0) + sprite->pos2.x += sprite->data1 >> 4; + else + sprite->pos2.x -= sprite->data1 >> 4; + sprite->data1 &= 0xF; +} + +void sub_80740C4(struct Sprite *sprite) +{ + u8 var1; + u16 var2; + s8 pan; + + if (sprite->data1 > 0) + { + sprite->data1--; + return; + } + var1 = sprite->data2; + var2 = sprite->data3; + var2 += 56; + sprite->data3 = var2 & 0xFFF0; + if (var1 != 0) + { + sprite->pos2.x += var2 >> 4; + if (sprite->pos2.x > 0) + sprite->pos2.x = 0; + } + else + { + sprite->pos2.x -= var2 >> 4; + if (sprite->pos2.x < 0) + sprite->pos2.x = 0; + } + if (sprite->pos2.x == 0) + { + pan = 63; + if (var1 != 0) + pan = -64; + if (sprite->data7 != 0) + PlaySE2WithPanning(SE_TB_KARA, pan); + else + PlaySE1WithPanning(SE_TB_KON, pan); + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_8074158(struct Sprite *sprite) +{ + u8 var1; + u16 var2; + + if (sprite->data1 > 0) + { + sprite->data1--; + return; + } + var1 = sprite->data2; + var2 = sprite->data3; + var2 += 56; + sprite->data3 = var2 & 0xFFF0; + if (var1 != 0) + sprite->pos2.x += var2 >> 4; + else + sprite->pos2.x -= var2 >> 4; + if (sprite->pos2.x + sprite->pos1.x > 248 + || sprite->pos2.x + sprite->pos1.x < -8) + { + sprite->invisible = TRUE; + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_80741C8(struct Sprite *sprite) +{ + u8 barSpriteId = sprite->data0; + + sprite->pos2.x = gSprites[barSpriteId].pos2.x; + sprite->pos2.y = gSprites[barSpriteId].pos2.y; +} + +extern const u8 gText_HighlightDarkGrey[]; +extern const u8 gText_DynColor2[]; +extern const u8 gText_DynColor2Male[]; +extern const u8 gText_DynColor1Female[]; +extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; + +void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + void *ptr; + const u8 *genderTxt; + u32 windowId, windowTileData, spriteTileNum; + u16 species; + u8 gender; + + StringCopy(gDisplayedStringBattle, gText_HighlightDarkGrey); + GetMonData(mon, MON_DATA_NICKNAME, nickname); + StringGetEnd10(nickname); + ptr = StringAppend(gDisplayedStringBattle, nickname); + + gender = GetMonGender(mon); + species = GetMonData(mon, MON_DATA_SPECIES); + + if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && StringCompare(nickname, gSpeciesNames[species]) == 0) + gender = 100; + + // AddTextPrinterAndCreateWindowOnHealthbox's arguments are the same in all 3 cases. + // It's possible they may have been different in early development phases. + switch (gender) + { + default: + StringCopy(ptr, gText_DynColor2); + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId); + break; + case MON_MALE: + StringCopy(ptr, gText_DynColor2Male); + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId); + break; + case MON_FEMALE: + StringCopy(ptr, gText_DynColor1Female); + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId); + break; + } + + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + + if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER) + { + sub_8075198((void*)(0x6010040 + spriteTileNum), windowTileData, 6); + ptr = (void*)(OBJ_VRAM0); + if (!IsDoubleBattle()) + ptr += spriteTileNum + 0x800; + else + ptr += spriteTileNum + 0x400; + sub_8075198(ptr, windowTileData + 0xC0, 1); + } + else + { + sub_8075198((void*)(0x6010020 + spriteTileNum), windowTileData, 7); + } + + RemoveWindow_(windowId); +} From 25a9c851cf421f83054687cdf17ea5b3ca9e746b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 18 Oct 2017 23:05:14 +0200 Subject: [PATCH 154/182] more of battle interface done again --- asm/battle_interface.s | 558 +--------------------------------------- data/battle_interface.s | 2 +- src/battle_interface.c | 211 ++++++++++++++- 3 files changed, 213 insertions(+), 558 deletions(-) diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 6f91c86b60..a0cf8fad3d 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -6,548 +6,8 @@ .text - - - thumb_func_start sub_8074310 -sub_8074310: @ 8074310 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _080743E6 - movs r0, 0x8 - ands r1, r0 - cmp r1, 0 - bne _080743E6 - ldr r6, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r5, r0, r6 - ldrh r0, [r5, 0x3A] - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080743E6 - ldr r1, =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080743E6 - ldrh r0, [r5, 0x38] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r7, 0 - beq _080743C4 - movs r0, 0x46 - bl GetHealthboxElementGfxPtr - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r6 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 17 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _080743E6 - .pool -_080743C4: - str r7, [sp] - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r0, 0x4] - lsls r1, 22 - lsrs r1, 17 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - ldr r0, =0x06010000 - adds r1, r0 - ldr r2, =0x05000008 - mov r0, sp - bl CpuSet -_080743E6: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8074310 - - thumb_func_start UpdateStatusIconInHealthbox -UpdateStatusIconInHealthbox: @ 80743F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, =gSprites - mov r2, r9 - lsls r1, r2, 4 - add r1, r9 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x3A] - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r0, [r1, 0x38] - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08074468 - ldr r1, =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x37 - bl GetMonData - adds r4, r0, 0 - bl IsDoubleBattle - lsls r0, 24 - movs r3, 0x12 - mov r8, r3 - cmp r0, 0 - bne _08074484 - movs r0, 0x1A - mov r8, r0 - b _08074484 - .pool -_08074468: - ldr r1, =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x37 - bl GetMonData - adds r4, r0, 0 - movs r1, 0x11 - mov r8, r1 -_08074484: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _080744AC - movs r0, 0x1B - adds r1, r7, 0 - bl sub_80746A8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealthboxElementGfxPtr - adds r6, r0, 0 - movs r0, 0x2 - b _080745B8 - .pool -_080744AC: - movs r0, 0x88 - ands r0, r4 - cmp r0, 0 - beq _080744CA - movs r0, 0x15 - adds r1, r7, 0 - bl sub_80746A8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealthboxElementGfxPtr - adds r6, r0, 0 - movs r0, 0 - b _080745B8 -_080744CA: - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _080744E8 - movs r0, 0x21 - adds r1, r7, 0 - bl sub_80746A8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealthboxElementGfxPtr - adds r6, r0, 0 - movs r0, 0x4 - b _080745B8 -_080744E8: - movs r0, 0x20 - ands r0, r4 - cmp r0, 0 - beq _08074506 - movs r0, 0x1E - adds r1, r7, 0 - bl sub_80746A8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealthboxElementGfxPtr - adds r6, r0, 0 - movs r0, 0x3 - b _080745B8 -_08074506: - movs r0, 0x40 - ands r0, r4 - cmp r0, 0 - beq _08074524 - movs r0, 0x18 - adds r1, r7, 0 - bl sub_80746A8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealthboxElementGfxPtr - adds r6, r0, 0 - movs r0, 0x1 - b _080745B8 -_08074524: - movs r0, 0x27 - bl GetHealthboxElementGfxPtr - adds r6, r0, 0 - movs r4, 0 - mov r2, r9 - lsls r0, r2, 4 - mov r3, r8 - lsls r3, 16 - mov r8, r3 - lsls r7, 2 - ldr r1, =gSprites - add r0, r9 - lsls r0, 2 - adds r5, r0, r1 -_08074542: - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - mov r2, r8 - asrs r0, r2, 16 - adds r1, r0 - adds r1, r4 - lsls r1, 5 - ldr r3, =0x06010000 - adds r1, r3 - adds r0, r6, 0 - ldr r2, =0x04000008 - bl CpuSet - adds r4, 0x1 - cmp r4, 0x2 - ble _08074542 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - adds r0, r7, r0 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08074598 - movs r0, 0x1 - bl GetHealthboxElementGfxPtr - ldr r2, =gSprites - mov r3, r10 - lsls r1, r3, 4 - add r1, r10 - lsls r1, 2 - adds r1, r2 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000010 - bl CpuSet -_08074598: - mov r0, r9 - movs r1, 0x1 - bl sub_8074310 - b _0807467A - .pool -_080745B8: - mov r1, r9 - lsls r5, r1, 4 - add r5, r9 - lsls r5, 2 - ldr r2, =gSprites - adds r5, r2 - ldrb r4, [r5, 0x5] - lsrs r4, 4 - lsls r4, 4 - adds r4, 0xC - adds r4, r7 - ldr r1, =gUnknown_0832C3EC - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - movs r3, 0x80 - lsls r3, 1 - adds r1, r4, r3 - movs r2, 0x2 - bl FillPalette - lsls r4, 1 - ldr r0, =gPlttBufferUnfaded + 0x200 - adds r0, r4, r0 - ldr r1, =0x05000200 - adds r4, r1 - adds r1, r4, 0 - movs r2, 0x1 - bl CpuSet - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - add r1, r8 - lsls r1, 5 - ldr r2, =0x06010000 - mov r8, r2 - add r1, r8 - ldr r2, =0x04000018 - adds r0, r6, 0 - bl CpuSet - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08074626 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08074672 -_08074626: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r7, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08074672 - movs r0, 0 - bl GetHealthboxElementGfxPtr - mov r3, r10 - lsls r4, r3, 4 - add r4, r10 - lsls r4, 2 - ldr r1, =gSprites - adds r4, r1 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - add r1, r8 - ldr r5, =0x04000008 - adds r2, r5, 0 - bl CpuSet - movs r0, 0x41 - bl GetHealthboxElementGfxPtr - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - adds r1, 0x20 - add r1, r8 - adds r2, r5, 0 - bl CpuSet -_08074672: - mov r0, r9 - movs r1, 0 - bl sub_8074310 -_0807467A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateStatusIconInHealthbox - - thumb_func_start sub_80746A8 -sub_80746A8: @ 80746A8 - push {lr} - lsls r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsrs r2, r0, 24 - adds r0, r2, 0 - subs r0, 0x15 - cmp r0, 0xC - bhi _08074768 - lsls r0, 2 - ldr r1, =_080746C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080746C8: - .4byte _080746FC - .4byte _08074768 - .4byte _08074768 - .4byte _08074712 - .4byte _08074768 - .4byte _08074768 - .4byte _08074728 - .4byte _08074768 - .4byte _08074768 - .4byte _0807473E - .4byte _08074768 - .4byte _08074768 - .4byte _08074754 -_080746FC: - movs r2, 0x15 - cmp r3, 0 - beq _08074768 - movs r2, 0x47 - cmp r3, 0x1 - beq _08074768 - movs r2, 0x65 - cmp r3, 0x2 - bne _08074768 - movs r2, 0x56 - b _08074768 -_08074712: - movs r2, 0x18 - cmp r3, 0 - beq _08074768 - movs r2, 0x4A - cmp r3, 0x1 - beq _08074768 - movs r2, 0x68 - cmp r3, 0x2 - bne _08074768 - movs r2, 0x59 - b _08074768 -_08074728: - movs r2, 0x1B - cmp r3, 0 - beq _08074768 - movs r2, 0x4D - cmp r3, 0x1 - beq _08074768 - movs r2, 0x6B - cmp r3, 0x2 - bne _08074768 - movs r2, 0x5C - b _08074768 -_0807473E: - movs r2, 0x1E - cmp r3, 0 - beq _08074768 - movs r2, 0x50 - cmp r3, 0x1 - beq _08074768 - movs r2, 0x6E - cmp r3, 0x2 - bne _08074768 - movs r2, 0x5F - b _08074768 -_08074754: - movs r2, 0x21 - cmp r3, 0 - beq _08074768 - movs r2, 0x53 - cmp r3, 0x1 - beq _08074768 - movs r2, 0x71 - cmp r3, 0x2 - bne _08074768 - movs r2, 0x62 -_08074768: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_80746A8 - - thumb_func_start sub_8074770 -sub_8074770: @ 8074770 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gText_SafariBalls - add r1, sp, 0x4 - str r1, [sp] - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl AddTextPrinterAndCreateWindowOnHealthbox - adds r5, r0, 0 - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r4, [r0, 0x4] - lsls r4, 22 - lsrs r4, 17 - ldr r1, =0x06010040 - adds r0, r4, r1 - adds r1, r5, 0 - movs r2, 0x6 - bl sub_8075198 - ldr r0, =0x06010800 - adds r4, r0 - adds r5, 0xC0 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_8075198 - ldr r0, [sp, 0x4] - bl RemoveWindow_ - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8074770 - - thumb_func_start sub_80747D8 -sub_80747D8: @ 80747D8 + thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox +UpdateLeftNoOfBallsTextOnHealthbox: @ 80747D8 push {r4,r5,lr} sub sp, 0x18 adds r4, r0, 0 @@ -594,13 +54,13 @@ sub_80747D8: @ 80747D8 movs r2, 0x4 bl sub_80751E4 ldr r0, [sp, 0x14] - bl RemoveWindow_ + bl RemoveWindowOnHealthbox add sp, 0x18 pop {r4,r5} pop {r0} bx r0 .pool - thumb_func_end sub_80747D8 + thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox thumb_func_start UpdateHealthboxAttribute UpdateHealthboxAttribute: @ 8074860 @@ -797,7 +257,7 @@ _080749EC: cmp r7, 0xA bne _080749F6 adds r0, r6, 0 - bl sub_8074770 + bl UpdateSafariBallsTextOnHealthbox _080749F6: adds r0, r7, 0 subs r0, 0xA @@ -806,7 +266,7 @@ _080749F6: cmp r0, 0x1 bhi _08074A8E adds r0, r6, 0 - bl sub_80747D8 + bl UpdateLeftNoOfBallsTextOnHealthbox b _08074A8E .pool _08074A18: @@ -1740,15 +1200,15 @@ AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094 .pool thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox - thumb_func_start RemoveWindow_ -RemoveWindow_: @ 807512C + thumb_func_start RemoveWindowOnHealthbox +RemoveWindowOnHealthbox: @ 807512C push {lr} lsls r0, 24 lsrs r0, 24 bl RemoveWindow pop {r0} bx r0 - thumb_func_end RemoveWindow_ + thumb_func_end RemoveWindowOnHealthbox thumb_func_start sub_807513C sub_807513C: @ 807513C diff --git a/data/battle_interface.s b/data/battle_interface.s index d000a27ea5..39f69ba5f8 100644 --- a/data/battle_interface.s +++ b/data/battle_interface.s @@ -130,7 +130,7 @@ gUnknown_0832C3D8:: @ 832C3D8 .byte 0x00, 0x00, 0x00, 0x00 .align 2 -gUnknown_0832C3EC:: @ 832C3EC +gBattleInterfaceStatusIcons_DynPals:: @ 832C3EC .byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72 .byte 0xdc, 0x29, 0x00, 0x00 diff --git a/src/battle_interface.c b/src/battle_interface.c index 9080b39050..bab2c51227 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -15,6 +15,10 @@ #include "gpu_regs.h" #include "battle_message.h" #include "species.h" +#include "pokedex.h" +#include "palette.h" +#include "international_string_util.h" +#include "safari_zone.h" extern bool8 IsDoubleBattle(void); extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; @@ -29,9 +33,9 @@ extern const u8 gText_Slash[]; void sub_8072924(struct Sprite *sprite); void sub_80728B4(struct Sprite *sprite); const u32 *GetHealthboxElementGfxPtr(u8 elementId); -u32 AddTextPrinterAndCreateWindowOnHealthbox(u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); +u32 AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); void sub_8075198(void *objVram, u32 windowTileData, u32 arg2); -void RemoveWindow_(u32 windowId); +void RemoveWindowOnHealthbox(u32 windowId); void sub_8075170(void *dest, u32 arg1, u32 arg2); void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void sub_807513C(void *dest, u32 arg1, u32 arg2); @@ -42,6 +46,7 @@ void sub_8073F98(u8 taskId); void sub_8073E64(u8 taskId); void sub_8074158(struct Sprite *sprite); void sub_8074090(struct Sprite *sprite); +u8 GetStatusIconForBankId(u8 statusElementId, u8 bank); // const rom data const struct OamData gUnknown_0832C138 = @@ -186,6 +191,7 @@ extern const struct SpriteTemplate gUnknown_0832C364[2]; extern const struct SpriteTemplate gUnknown_0832C394[2]; extern const struct SubspriteTable gUnknown_0832C2C4; extern const struct SubspriteTable gUnknown_0832C2CC; +extern const u16 gBattleInterfaceStatusIcons_DynPals[]; u8 sub_8072304(void) { @@ -773,7 +779,7 @@ void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) objVram += spriteTileNum + 0x400; } sub_8075198(objVram, windowTileData, 3); - RemoveWindow_(windowId); + RemoveWindowOnHealthbox(windowId); } void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) @@ -792,7 +798,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) objVram = (void*)(OBJ_VRAM0); objVram += spriteTileNum + 0xB40; sub_8075170(objVram, windowTileData, 2); - RemoveWindow_(windowId); + RemoveWindowOnHealthbox(windowId); } else // singles, current { @@ -806,7 +812,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) objVram = (void*)(OBJ_VRAM0); objVram += spriteTileNum + 0xB00; sub_8075170(objVram, windowTileData + 0x20, 2); - RemoveWindow_(windowId); + RemoveWindowOnHealthbox(windowId); } } @@ -871,7 +877,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId); sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2); - RemoveWindow_(windowId); + RemoveWindowOnHealthbox(windowId); CpuCopy32(GetHealthboxElementGfxPtr(0x74), (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32), 0x20); @@ -884,7 +890,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId); sub_807513C(objVram, 0, 3); sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3); - RemoveWindow_(windowId); + RemoveWindowOnHealthbox(windowId); } } } @@ -1580,5 +1586,194 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) sub_8075198((void*)(0x6010020 + spriteTileNum), windowTileData, 7); } - RemoveWindow_(windowId); + RemoveWindowOnHealthbox(windowId); +} + +void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) +{ + u8 bank, healthboxSpriteId_2; + + if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + return; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + return; + + bank = gSprites[healthboxSpriteId].data6; + if (GetBankSide(bank) == SIDE_PLAYER) + return; + if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT)) + return; + + healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5; + + if (noStatus) + CpuCopy32(GetHealthboxElementGfxPtr(0x46), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32); + else + CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32); +} + +void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) +{ + s32 i; + u8 bank, healthboxSpriteId_2; + u32 status, pltAdder; + const u32 *statusGfxPtr; + s16 tileNumAdder; + u8 statusPalId; + + bank = gSprites[healthboxSpriteId].data6; + healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5; + if (GetBankSide(bank) == SIDE_PLAYER) + { + status = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_STATUS); + if (!IsDoubleBattle()) + tileNumAdder = 0x1A; + else + tileNumAdder = 0x12; + } + else + { + status = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_STATUS); + tileNumAdder = 0x11; + } + + if (status & STATUS_SLEEP) + { + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1B, bank)); + statusPalId = 2; + } + else if (status & STATUS_PSN_ANY) + { + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x15, bank)); + statusPalId = 0; + } + else if (status & STATUS_BURN) + { + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x21, bank)); + statusPalId = 4; + } + else if (status & STATUS_FREEZE) + { + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1E, bank)); + statusPalId = 3; + } + else if (status & STATUS_PARALYSIS) + { + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x18, bank)); + statusPalId = 1; + } + else + { + statusGfxPtr = GetHealthboxElementGfxPtr(0x27); + + for (i = 0; i < 3; i++) + CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32); + + if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) + CpuCopy32(GetHealthboxElementGfxPtr(1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64); + + TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE); + return; + } + + pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16; + pltAdder += bank + 12; + + FillPalette(gBattleInterfaceStatusIcons_DynPals[statusPalId], pltAdder + 0x100, 2); + CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2); + CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96); + if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT) + { + if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) + { + CpuCopy32(GetHealthboxElementGfxPtr(0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(0x41), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32); + } + } + TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE); +} + +u8 GetStatusIconForBankId(u8 statusElementId, u8 bank) +{ + u8 ret = statusElementId; + + switch (statusElementId) + { + case 21: + if (bank == 0) + ret = 21; + else if (bank == 1) + ret = 71; + else if (bank == 2) + ret = 86; + else + ret = 101; + break; + case 24: + if (bank == 0) + ret = 24; + else if (bank == 1) + ret = 74; + else if (bank == 2) + ret = 89; + else + ret = 104; + break; + case 27: + if (bank == 0) + ret = 27; + else if (bank == 1) + ret = 77; + else if (bank == 2) + ret = 92; + else + ret = 107; + break; + case 30: + if (bank == 0) + ret = 30; + else if (bank == 1) + ret = 80; + else if (bank == 2) + ret = 95; + else + ret = 110; + break; + case 33: + if (bank == 0) + ret = 33; + else if (bank == 1) + ret = 83; + else if (bank == 2) + ret = 98; + else + ret = 113; + break; + } + return ret; +} + +extern const u8 gText_SafariBalls[]; +extern const u8 gText_SafariBallLeft[]; + +void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId) +{ + u32 windowId, windowTileData, spriteTileNum; + + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId); + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + sub_8075198((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6); + sub_8075198((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2); + RemoveWindowOnHealthbox(windowId); +} + +void UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId) +{ + u8 text[20]; + u8 *txtPtr; + u32 windowId, windowTileData, spriteTileNum; + + txtPtr = StringCopy(text, gText_SafariBallLeft); + ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2); + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, 1)); } From ee6bdc9068794652f929783e2ef326e542521327 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 18 Oct 2017 23:52:21 +0200 Subject: [PATCH 155/182] more battle interface --- asm/battle_7.s | 6 +- asm/battle_controller_linkopponent.s | 2 +- asm/battle_controller_linkpartner.s | 2 +- asm/battle_controller_opponent.s | 2 +- asm/battle_controller_player.s | 4 +- asm/battle_controller_player_partner.s | 4 +- asm/battle_controller_recorded_opponent.s | 2 +- asm/battle_controller_recorded_player.s | 2 +- asm/battle_controller_wally.s | 2 +- asm/battle_interface.s | 332 ---------------------- include/battle_interface.h | 4 +- src/battle_interface.c | 86 +++++- 12 files changed, 98 insertions(+), 350 deletions(-) diff --git a/asm/battle_7.s b/asm/battle_7.s index 568a0d6465..3e4574658b 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -1955,8 +1955,8 @@ _0805E1AE: bx r1 thumb_func_end BattleLoadAllHealthBoxesGfx - thumb_func_start load_gfxc_health_bar -load_gfxc_health_bar: @ 805E1B8 + thumb_func_start LoadBattleBarGfx +LoadBattleBarGfx: @ 805E1B8 push {lr} ldr r0, =gUnknown_08C093F0 ldr r1, =gMonSpritesGfxPtr @@ -1969,7 +1969,7 @@ load_gfxc_health_bar: @ 805E1B8 pop {r0} bx r0 .pool - thumb_func_end load_gfxc_health_bar + thumb_func_end LoadBattleBarGfx thumb_func_start BattleInitAllSprites BattleInitAllSprites: @ 805E1D8 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 2c52c2b16b..cf35aba940 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5124,7 +5124,7 @@ sub_80670A0: @ 80670A0 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index a97dae84cd..aec5630241 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4433,7 +4433,7 @@ sub_814D63C: @ 814D63C push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index cad8d0f567..a9900a2a27 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5574,7 +5574,7 @@ sub_8062294: @ 8062294 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index ff3dd459c5..d3a3964615 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -8936,7 +8936,7 @@ sub_805C410: @ 805C410 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 @@ -9067,7 +9067,7 @@ sub_805C528: @ 805C528 .pool _0805C560: movs r0, 0x1 - bl load_gfxc_health_bar + bl LoadBattleBarGfx adds r0, r4, 0 movs r1, 0xB bl GetMonData diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index dba618f014..f9ab56fdb3 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -5162,7 +5162,7 @@ sub_81BDC10: @ 81BDC10 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 @@ -5275,7 +5275,7 @@ sub_81BDD00: @ 81BDD00 .pool _081BDD38: movs r0, 0x1 - bl load_gfxc_health_bar + bl LoadBattleBarGfx adds r0, r4, 0 movs r1, 0xB bl GetMonData diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index fa6b8f5114..c37d50cd55 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4863,7 +4863,7 @@ sub_8188FD0: @ 8188FD0 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 8e3db1ffbd..4e388f8d56 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -5007,7 +5007,7 @@ sub_818C5E8: @ 818C5E8 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 9ca0c6bf26..9aabc856e7 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3836,7 +3836,7 @@ sub_816A5D4: @ 816A5D4 push {r6,r7} sub sp, 0x4 movs r0, 0 - bl load_gfxc_health_bar + bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 diff --git a/asm/battle_interface.s b/asm/battle_interface.s index a0cf8fad3d..5a4ca6bedf 100755 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -6,338 +6,6 @@ .text - thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox -UpdateLeftNoOfBallsTextOnHealthbox: @ 80747D8 - push {r4,r5,lr} - sub sp, 0x18 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gText_SafariBallLeft - add r0, sp, 0x4 - bl StringCopy - ldr r1, =gNumSafariBalls - ldrb r1, [r1] - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r0, 0 - add r1, sp, 0x4 - movs r2, 0x2F - bl GetStringRightAlignXOffset - adds r1, r0, 0 - add r0, sp, 0x14 - str r0, [sp] - add r0, sp, 0x4 - movs r2, 0x3 - movs r3, 0x2 - bl AddTextPrinterAndCreateWindowOnHealthbox - adds r5, r0, 0 - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r4, [r0, 0x4] - lsls r4, 22 - lsrs r4, 17 - ldr r1, =0x060102c0 - adds r0, r4, r1 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80751E4 - ldr r0, =0x06010a00 - adds r4, r0 - adds r5, 0x40 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80751E4 - ldr r0, [sp, 0x14] - bl RemoveWindowOnHealthbox - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox - - thumb_func_start UpdateHealthboxAttribute -UpdateHealthboxAttribute: @ 8074860 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r8, r1 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r1, =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x3A] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r7, 0 - bne _0807489C - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0807489C - mov r0, r9 - bl GetBankSide -_0807489C: - ldr r1, =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x3A] - lsls r0, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080748B8 - b _08074A18 -_080748B8: - cmp r7, 0x3 - beq _080748C0 - cmp r7, 0 - bne _080748D4 -_080748C0: - mov r0, r8 - movs r1, 0x38 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl UpdateLvlInHealthbox -_080748D4: - cmp r7, 0x1 - bhi _080748EE - mov r0, r8 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r6, 0 - movs r2, 0 - bl UpdateHpTextInHealthbox -_080748EE: - cmp r7, 0x2 - beq _080748F6 - cmp r7, 0 - bne _0807490C -_080748F6: - mov r0, r8 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r6, 0 - movs r2, 0x1 - bl UpdateHpTextInHealthbox -_0807490C: - cmp r7, 0x5 - beq _08074914 - cmp r7, 0 - bne _08074948 -_08074914: - movs r0, 0 - bl load_gfxc_health_bar - mov r0, r8 - movs r1, 0x3A - bl GetMonData - adds r4, r0, 0 - mov r0, r8 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - movs r0, 0 - str r0, [sp] - mov r0, r9 - adds r1, r6, 0 - adds r2, r4, 0 - bl SetBattleBarStruct - mov r0, r9 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl sub_8074AA0 -_08074948: - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0 - bne _080749CE - cmp r7, 0x6 - beq _0807495E - cmp r7, 0 - bne _080749CE -_0807495E: - movs r0, 0x3 - bl load_gfxc_health_bar - mov r0, r8 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, r8 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, r8 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r0, =gExperienceTables - mov r12, r0 - lsls r1, r4, 2 - ldr r2, =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - add r1, r12 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - add r4, r12 - ldr r2, [r4] - subs r2, r1 - mov r0, r10 - str r0, [sp] - mov r0, r9 - adds r1, r6, 0 - bl SetBattleBarStruct - mov r0, r9 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8074AA0 -_080749CE: - cmp r7, 0x4 - beq _080749D6 - cmp r7, 0 - bne _080749DE -_080749D6: - adds r0, r6, 0 - mov r1, r8 - bl UpdateNickInHealthbox -_080749DE: - cmp r7, 0x9 - beq _080749E6 - cmp r7, 0 - bne _080749EC -_080749E6: - adds r0, r6, 0 - bl UpdateStatusIconInHealthbox -_080749EC: - cmp r7, 0xA - bne _080749F6 - adds r0, r6, 0 - bl UpdateSafariBallsTextOnHealthbox -_080749F6: - adds r0, r7, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08074A8E - adds r0, r6, 0 - bl UpdateLeftNoOfBallsTextOnHealthbox - b _08074A8E - .pool -_08074A18: - cmp r7, 0x3 - beq _08074A20 - cmp r7, 0 - bne _08074A34 -_08074A20: - mov r0, r8 - movs r1, 0x38 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl UpdateLvlInHealthbox -_08074A34: - cmp r7, 0x5 - beq _08074A3C - cmp r7, 0 - bne _08074A70 -_08074A3C: - movs r0, 0 - bl load_gfxc_health_bar - mov r0, r8 - movs r1, 0x3A - bl GetMonData - adds r4, r0, 0 - mov r0, r8 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - movs r0, 0 - str r0, [sp] - mov r0, r9 - adds r1, r6, 0 - adds r2, r4, 0 - bl SetBattleBarStruct - mov r0, r9 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl sub_8074AA0 -_08074A70: - cmp r7, 0x4 - beq _08074A78 - cmp r7, 0 - bne _08074A80 -_08074A78: - adds r0, r6, 0 - mov r1, r8 - bl UpdateNickInHealthbox -_08074A80: - cmp r7, 0x9 - beq _08074A88 - cmp r7, 0 - bne _08074A8E -_08074A88: - adds r0, r6, 0 - bl UpdateStatusIconInHealthbox -_08074A8E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end UpdateHealthboxAttribute - thumb_func_start sub_8074AA0 sub_8074AA0: @ 8074AA0 push {r4-r7,lr} diff --git a/include/battle_interface.h b/include/battle_interface.h index cecc7bd1fe..93387cae0d 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -10,8 +10,8 @@ enum HEALTHBOX_NICK, HEALTHBOX_HEALTH_BAR, HEALTHBOX_EXP_BAR, - HEALTHBOX_7, - HEALTHBOX_8, + HEALTHBOX_UNUSED_7, + HEALTHBOX_UNUSED_8, HEALTHBOX_STATUS_ICON, HEALTHBOX_SAFARI_ALL_TEXT, HEALTHBOX_SAFARI_BALLS_TEXT diff --git a/src/battle_interface.c b/src/battle_interface.c index bab2c51227..27a82d49d2 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -35,6 +35,7 @@ void sub_80728B4(struct Sprite *sprite); const u32 *GetHealthboxElementGfxPtr(u8 elementId); u32 AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); void sub_8075198(void *objVram, u32 windowTileData, u32 arg2); +void sub_80751E4(void *objVram, u32 windowTileData, u32 arg2); void RemoveWindowOnHealthbox(u32 windowId); void sub_8075170(void *dest, u32 arg1, u32 arg2); void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); @@ -47,6 +48,7 @@ void sub_8073E64(u8 taskId); void sub_8074158(struct Sprite *sprite); void sub_8074090(struct Sprite *sprite); u8 GetStatusIconForBankId(u8 statusElementId, u8 bank); +void sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); // const rom data const struct OamData gUnknown_0832C138 = @@ -1767,13 +1769,91 @@ void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId) RemoveWindowOnHealthbox(windowId); } -void UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId) +void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId) { - u8 text[20]; + u8 text[16]; u8 *txtPtr; u32 windowId, windowTileData, spriteTileNum; txtPtr = StringCopy(text, gText_SafariBallLeft); ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2); - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, 1)); + + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, text, 0x2F), 3, 2, &windowId); + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + sub_80751E4((void*)(OBJ_VRAM0 + 0x2C0) + spriteTileNum, windowTileData, 2); + sub_80751E4((void*)(OBJ_VRAM0 + 0xA00) + spriteTileNum, windowTileData + 0x40, 4); + RemoveWindowOnHealthbox(windowId); +} + +extern void LoadBattleBarGfx(u8 arg0); + +void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId) +{ + u32 maxHp, currHp; + u8 bank = gSprites[healthboxSpriteId].data6; + + if (elementId == HEALTHBOX_ALL && !IsDoubleBattle()) + GetBankSide(bank); // pointless function call + + if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER) + { + u8 isDoubles; + + if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) + UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); + if (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL) + UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), 0); + if (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL) + UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), 1); + if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL) + { + LoadBattleBarGfx(0); + maxHp = GetMonData(mon, MON_DATA_MAX_HP); + currHp = GetMonData(mon, MON_DATA_HP); + SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, FALSE); + sub_8074AA0(bank, healthboxSpriteId, 0, 0); + } + isDoubles = IsDoubleBattle(); + if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL)) + { + u16 species; + u32 exp, currLevelExp, currExpBarValue, maxExpBarValue; + u8 level; + + LoadBattleBarGfx(3); + species = GetMonData(mon, MON_DATA_SPECIES); + level = GetMonData(mon, MON_DATA_LEVEL); + exp = GetMonData(mon, MON_DATA_EXP); + currLevelExp = gExperienceTables[gBaseStats[species].growthRate][level]; + currExpBarValue = exp - currLevelExp; + maxExpBarValue = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLevelExp; + SetBattleBarStruct(bank, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles); + sub_8074AA0(bank, healthboxSpriteId, 1, 0); + } + if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL) + UpdateNickInHealthbox(healthboxSpriteId, mon); + if (elementId == HEALTHBOX_STATUS_ICON || elementId == HEALTHBOX_ALL) + UpdateStatusIconInHealthbox(healthboxSpriteId); + if (elementId == HEALTHBOX_SAFARI_ALL_TEXT) + UpdateSafariBallsTextOnHealthbox(healthboxSpriteId); + if (elementId == HEALTHBOX_SAFARI_ALL_TEXT || elementId == HEALTHBOX_SAFARI_BALLS_TEXT) + UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId); + } + else + { + if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) + UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); + if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL) + { + LoadBattleBarGfx(0); + maxHp = GetMonData(mon, MON_DATA_MAX_HP); + currHp = GetMonData(mon, MON_DATA_HP); + SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, FALSE); + sub_8074AA0(bank, healthboxSpriteId, 0, 0); + } + if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL) + UpdateNickInHealthbox(healthboxSpriteId, mon); + if (elementId == HEALTHBOX_STATUS_ICON || elementId == HEALTHBOX_ALL) + UpdateStatusIconInHealthbox(healthboxSpriteId); + } } From 11f9a27640a9f921c6dc1858261d9a609a6599ca Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 18 Oct 2017 19:25:08 -0400 Subject: [PATCH 156/182] decompiled up to sub_81C3D54 --- asm/pokemon_summary_screen.s | 3095 ---------------------------------- src/pokemon_summary_screen.c | 1356 ++++++++++++++- 2 files changed, 1354 insertions(+), 3097 deletions(-) diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 7ca5f879a7..fd2518075e 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,3101 +5,6 @@ .text - thumb_func_start sub_81C22CC -sub_81C22CC: @ 81C22CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - adds r6, r1, 0 - adds r6, 0x70 - ldrb r1, [r6, 0x5] - mov r8, r0 - cmp r1, 0x63 - bhi _081C2340 - ldr r5, =gExperienceTables - adds r2, r1, 0 - adds r1, r2, 0x1 - lsls r1, 2 - ldr r4, =gBaseStats - ldrh r3, [r6] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r4 - ldrb r3, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r3 - adds r1, r0 - adds r1, r5 - lsls r2, 2 - adds r2, r0 - adds r2, r5 - ldr r1, [r1] - ldr r2, [r2] - subs r1, r2 - ldr r0, [r6, 0x10] - subs r4, r0, r2 - lsls r0, r4, 6 - bl __udivsi3 - adds r6, r0, 0 - movs r7, 0 - adds r0, r7, 0 - orrs r0, r6 - cmp r0, 0 - bne _081C2344 - cmp r4, 0 - beq _081C2344 - movs r6, 0x1 - movs r7, 0 - b _081C2344 - .pool -_081C2340: - movs r6, 0 - movs r7, 0 -_081C2344: - mov r1, r8 - ldr r0, [r1] - ldr r2, =0x00001d66 - adds r2, r0 - mov r9, r2 - movs r0, 0 - mov r12, r0 - ldr r1, =0x00002062 - mov r10, r1 -_081C2356: - cmp r7, 0 - bgt _081C2362 - cmp r7, 0 - bne _081C237C - cmp r6, 0x7 - bls _081C237C -_081C2362: - mov r2, r12 - lsls r0, r2, 1 - add r0, r9 - ldr r2, =0x0000206a - adds r1, r2, 0 - strh r1, [r0] - b _081C23B6 - .pool -_081C237C: - mov r1, r12 - lsls r0, r1, 1 - add r0, r9 - mov r8, r0 - adds r5, r7, 0 - adds r4, r6, 0 - cmp r7, 0 - bge _081C2394 - movs r4, 0x7 - movs r5, 0 - adds r4, r6 - adcs r5, r7 -_081C2394: - lsls r3, r5, 29 - lsrs r2, r4, 3 - adds r0, r3, 0 - orrs r0, r2 - asrs r1, r5, 3 - lsrs r5, r0, 29 - lsls r4, r1, 3 - adds r3, r5, 0 - orrs r3, r4 - lsls r2, r0, 3 - adds r1, r7, 0 - adds r0, r6, 0 - subs r0, r2 - sbcs r1, r3 - add r0, r10 - mov r2, r8 - strh r0, [r2] -_081C23B6: - movs r0, 0x8 - negs r0, r0 - asrs r1, r0, 31 - adds r6, r0 - adcs r7, r1 - cmp r7, 0 - bge _081C23C8 - movs r6, 0 - movs r7, 0 -_081C23C8: - mov r0, r12 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0x7 - bls _081C2356 - movs r0, 0x1 - bl GetBgTilemapBuffer - ldr r1, =gUnknown_0203CF1C - ldr r1, [r1] - ldr r2, =0x000010bc - adds r1, r2 - cmp r0, r1 - bne _081C23F8 - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - b _081C23FE - .pool -_081C23F8: - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram -_081C23FE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81C22CC - - thumb_func_start sub_81C240C -sub_81C240C: @ 81C240C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000038bc - adds r5, r0, r1 - cmp r3, 0 - beq _081C2510 - ldr r1, =gContestEffects - ldr r2, =gContestMoves - lsls r3, 3 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x1] - mov r9, r1 - mov r8, r2 - mov r10, r3 - cmp r4, 0xFF - beq _081C244C - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 -_081C244C: - movs r2, 0 - movs r6, 0x3 - movs r3, 0xF3 - lsls r3, 2 -_081C2454: - cmp r4, 0xFF - beq _081C2484 - cmp r2, r4 - bcs _081C2484 - lsrs r0, r2, 2 - adds r1, r2, 0 - ands r1, r6 - lsls r0, 5 - adds r0, r1 - lsls r0, 1 - adds r0, r5 - adds r0, r3 - ldr r7, =0x0000103a - b _081C2496 - .pool -_081C2484: - lsrs r0, r2, 2 - adds r1, r2, 0 - ands r1, r6 - lsls r0, 5 - adds r0, r1 - lsls r0, 1 - adds r0, r5 - adds r0, r3 - ldr r7, =0x00001039 -_081C2496: - adds r1, r7, 0 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _081C2454 - mov r0, r10 - add r0, r8 - ldrb r0, [r0] - lsls r0, 2 - add r0, r9 - ldrb r4, [r0, 0x2] - cmp r4, 0xFF - beq _081C24C0 - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 -_081C24C0: - movs r2, 0 - movs r6, 0x3 - ldr r3, =0x0000044c -_081C24C6: - cmp r4, 0xFF - beq _081C24F0 - cmp r2, r4 - bcs _081C24F0 - lsrs r0, r2, 2 - adds r1, r2, 0 - ands r1, r6 - lsls r0, 5 - adds r0, r1 - lsls r0, 1 - adds r0, r5 - adds r0, r3 - ldr r7, =0x0000103c - b _081C2502 - .pool -_081C24F0: - lsrs r0, r2, 2 - adds r1, r2, 0 - ands r1, r6 - lsls r0, 5 - adds r0, r1 - lsls r0, 1 - adds r0, r5 - adds r0, r3 - ldr r7, =0x0000103d -_081C2502: - adds r1, r7, 0 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _081C24C6 -_081C2510: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C240C - - thumb_func_start sub_81C2524 -sub_81C2524: @ 81C2524 - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0x74 - ldrb r0, [r0] - cmp r0, 0 - beq _081C2544 - movs r1, 0x80 - lsls r1, 9 - movs r0, 0x3 - movs r2, 0 - bl ChangeBgX - b _081C254E - .pool -_081C2544: - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX -_081C254E: - pop {r0} - bx r0 - thumb_func_end sub_81C2524 - - thumb_func_start sub_81C2554 -sub_81C2554: @ 81C2554 - push {r4,r5,lr} - ldr r0, =gUnknown_0861CC24 - bl InitWindows - bl DeactivateAllTextPrinters - movs r4, 0 -_081C2562: - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _081C2562 - movs r4, 0 - ldr r5, =gUnknown_0203CF1C - ldr r3, =0x000040cb - movs r2, 0xFF -_081C257C: - ldr r0, [r5] - adds r0, r3 - adds r0, r4 - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _081C257C - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2554 - - thumb_func_start sub_81C25A4 -sub_81C25A4: @ 81C25A4 - push {r4-r6,lr} - sub sp, 0x14 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - movs r6, 0 - str r6, [sp] - str r4, [sp, 0x4] - lsls r4, r5, 1 - adds r4, r5 - ldr r5, =gUnknown_0861CD2C - adds r4, r5 - str r4, [sp, 0x8] - str r6, [sp, 0xC] - str r1, [sp, 0x10] - movs r1, 0x1 - bl AddTextPrinterParametrized2 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C25A4 - - thumb_func_start sub_81C25E8 -sub_81C25E8: @ 81C25E8 - push {lr} - movs r0, 0x11 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x12 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x13 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0x74 - ldrb r0, [r0] - cmp r0, 0 - bne _081C2618 - bl sub_81C2628 - b _081C261C - .pool -_081C2618: - bl sub_81C2794 -_081C261C: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - pop {r0} - bx r0 - thumb_func_end sub_81C25E8 - - thumb_func_start sub_81C2628 -sub_81C2628: @ 81C2628 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - movs r1, 0xC - adds r1, r0 - mov r8, r1 - adds r7, r0, 0 - adds r7, 0x70 - ldrh r0, [r7] - bl SpeciesToPokedexNum - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =0x0000ffff - cmp r5, r0 - beq _081C26CE - ldr r6, =gStringVar1 - ldr r1, =gText_UnkCtrlF908Clear01 - adds r0, r6, 0 - bl StringCopy - ldr r4, =gStringVar2 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - bl IsMonShiny - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _081C26AC - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x11 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - movs r0, 0 - bl sub_81C228C - b _081C26C6 - .pool -_081C26AC: - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - str r0, [sp, 0x4] - movs r0, 0x11 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - movs r0, 0x1 - bl sub_81C228C -_081C26C6: - movs r0, 0x11 - bl PutWindowTilemap - b _081C26EE -_081C26CE: - movs r0, 0x11 - bl ClearWindowTilemap - mov r0, r8 - bl IsMonShiny - lsls r0, 24 - cmp r0, 0 - bne _081C26E8 - movs r0, 0 - bl sub_81C228C - b _081C26EE -_081C26E8: - movs r0, 0x1 - bl sub_81C228C -_081C26EE: - ldr r4, =gStringVar1 - ldr r1, =gText_LevelSymbol - adds r0, r4, 0 - bl StringCopy - ldr r5, =gStringVar2 - ldrb r1, [r7, 0x5] - adds r0, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - adds r1, r5, 0 - bl StringAppend - movs r6, 0 - str r6, [sp] - movs r5, 0x1 - str r5, [sp, 0x4] - movs r0, 0x13 - adds r1, r4, 0 - movs r2, 0x18 - movs r3, 0x11 - bl sub_81C25A4 - mov r0, r8 - adds r1, r4, 0 - bl GetMonNickname - str r6, [sp] - str r5, [sp, 0x4] - movs r0, 0x12 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - add r1, sp, 0x8 - movs r0, 0xBA - strb r0, [r1] - mov r0, sp - adds r0, 0x9 - ldrh r2, [r7, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringCopy - str r6, [sp] - str r5, [sp, 0x4] - movs r0, 0x13 - add r1, sp, 0x8 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldrh r1, [r7, 0x2] - mov r0, r8 - bl sub_81C27DC - movs r0, 0x12 - bl PutWindowTilemap - movs r0, 0x13 - bl PutWindowTilemap - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2628 - - thumb_func_start sub_81C2794 -sub_81C2794: @ 81C2794 - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0xC - ldr r4, =gStringVar1 - adds r1, r4, 0 - bl GetMonNickname - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x12 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - movs r0, 0x12 - bl PutWindowTilemap - movs r0, 0x11 - bl ClearWindowTilemap - movs r0, 0x13 - bl ClearWindowTilemap - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2794 - - thumb_func_start sub_81C27DC -sub_81C27DC: @ 81C27DC - push {lr} - sub sp, 0x8 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0x20 - beq _081C282C - cmp r1, 0x1D - beq _081C282C - bl GetMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _081C27FE - cmp r0, 0xFE - beq _081C2818 - b _081C282C -_081C27FE: - ldr r1, =gText_MaleSymbol - str r0, [sp] - movs r0, 0x3 - str r0, [sp, 0x4] - movs r0, 0x13 - movs r2, 0x39 - movs r3, 0x11 - bl sub_81C25A4 - b _081C282C - .pool -_081C2818: - ldr r1, =gText_FemaleSymbol - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - str r0, [sp, 0x4] - movs r0, 0x13 - movs r2, 0x39 - movs r3, 0x11 - bl sub_81C25A4 -_081C282C: - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C27DC - - thumb_func_start sub_81C2838 -sub_81C2838: @ 81C2838 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - ldr r3, =gUnknown_0861CDD3 - cmp r1, 0 - bne _081C284A - subs r3, 0x80 -_081C284A: - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x10 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - adds r1, r3, 0 - movs r3, 0 - bl BlitBitmapToWindow - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2838 - - thumb_func_start sub_81C286C -sub_81C286C: @ 81C286C - push {r4-r7,lr} - sub sp, 0x8 - ldr r1, =gText_PkmnInfo - movs r5, 0 - str r5, [sp] - movs r6, 0x1 - str r6, [sp, 0x4] - movs r0, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_PkmnSkills - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_BattleMoves - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0x2 - movs r2, 0x2 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_ContestMoves - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0x3 - movs r2, 0x2 - movs r3, 0x1 - bl sub_81C25A4 - ldr r7, =gText_Cancel2 - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x3E - bl GetStringRightAlignXOffset - adds r4, r0, 0 - adds r2, r4, 0 - subs r2, 0x10 - cmp r2, 0 - bge _081C28CC - movs r2, 0 -_081C28CC: - movs r0, 0x4 - movs r1, 0 - bl sub_81C2838 - lsls r2, r4, 24 - lsrs r2, 24 - str r5, [sp] - str r5, [sp, 0x4] - movs r0, 0x4 - adds r1, r7, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r7, =gText_Info - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x3E - bl GetStringRightAlignXOffset - adds r4, r0, 0 - adds r2, r4, 0 - subs r2, 0x10 - cmp r2, 0 - bge _081C28FE - movs r2, 0 -_081C28FE: - movs r0, 0x5 - movs r1, 0 - bl sub_81C2838 - lsls r2, r4, 24 - lsrs r2, 24 - str r5, [sp] - str r5, [sp, 0x4] - movs r0, 0x5 - adds r1, r7, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r7, =gText_Switch - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x3E - bl GetStringRightAlignXOffset - adds r4, r0, 0 - adds r2, r4, 0 - subs r2, 0x10 - cmp r2, 0 - bge _081C2930 - movs r2, 0 -_081C2930: - movs r0, 0x6 - movs r1, 0 - bl sub_81C2838 - lsls r2, r4, 24 - lsrs r2, 24 - str r5, [sp] - str r5, [sp, 0x4] - movs r0, 0x6 - adds r1, r7, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_RentalPkmn - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0x8 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_TypeSlash - str r5, [sp] - str r5, [sp, 0x4] - movs r0, 0x9 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r4, =gText_HP4 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x2A - bl GetStringCenterAlignXOffset - adds r0, 0x6 - lsls r2, r0, 24 - lsrs r2, 24 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xA - adds r1, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r4, =gText_Attack3 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x2A - bl GetStringCenterAlignXOffset - adds r0, 0x6 - lsls r2, r0, 24 - lsrs r2, 24 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xA - adds r1, r4, 0 - movs r3, 0x11 - bl sub_81C25A4 - ldr r4, =gText_Defense3 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x2A - bl GetStringCenterAlignXOffset - adds r0, 0x6 - lsls r2, r0, 24 - lsrs r2, 24 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xA - adds r1, r4, 0 - movs r3, 0x21 - bl sub_81C25A4 - ldr r4, =gText_SpAtk4 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x24 - bl GetStringCenterAlignXOffset - adds r0, 0x2 - lsls r2, r0, 24 - lsrs r2, 24 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xB - adds r1, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r4, =gText_SpDef4 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x24 - bl GetStringCenterAlignXOffset - adds r0, 0x2 - lsls r2, r0, 24 - lsrs r2, 24 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xB - adds r1, r4, 0 - movs r3, 0x11 - bl sub_81C25A4 - ldr r4, =gText_Speed2 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x24 - bl GetStringCenterAlignXOffset - adds r0, 0x2 - lsls r2, r0, 24 - lsrs r2, 24 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xB - adds r1, r4, 0 - movs r3, 0x21 - bl sub_81C25A4 - ldr r1, =gText_ExpPoints - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xC - movs r2, 0x6 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_NextLv - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xC - movs r2, 0x6 - movs r3, 0x11 - bl sub_81C25A4 - ldr r1, =gText_Status - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xD - movs r2, 0x2 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_Power - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xE - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_Accuracy2 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xE - movs r2, 0 - movs r3, 0x11 - bl sub_81C25A4 - ldr r1, =gText_Appeal - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xF - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_Jam - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0xF - movs r2, 0 - movs r3, 0x11 - bl sub_81C25A4 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C286C - - thumb_func_start sub_81C2AFC -sub_81C2AFC: @ 81C2AFC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - movs r0, 0 - bl ClearWindowTilemap - movs r0, 0x1 - bl ClearWindowTilemap - movs r0, 0x2 - bl ClearWindowTilemap - movs r0, 0x3 - bl ClearWindowTilemap - cmp r4, 0x1 - beq _081C2B66 - cmp r4, 0x1 - bgt _081C2B2A - cmp r4, 0 - beq _081C2B34 - b _081C2C06 -_081C2B2A: - cmp r5, 0x2 - beq _081C2B80 - cmp r5, 0x3 - beq _081C2BC4 - b _081C2C06 -_081C2B34: - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - bl sub_81A6BF4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C2B58 - bl sub_81B9E94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C2B5E -_081C2B58: - movs r0, 0x8 - bl PutWindowTilemap -_081C2B5E: - movs r0, 0x9 - bl PutWindowTilemap - b _081C2C06 -_081C2B66: - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0xA - bl PutWindowTilemap - movs r0, 0xB - bl PutWindowTilemap - movs r0, 0xC - bl PutWindowTilemap - b _081C2C06 -_081C2B80: - movs r0, 0x2 - bl PutWindowTilemap - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bc - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C2BBC - adds r2, 0x8 - adds r0, r1, r2 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - beq _081C2C06 - movs r0, 0xE - bl PutWindowTilemap - b _081C2C06 - .pool -_081C2BBC: - movs r0, 0x5 - bl PutWindowTilemap - b _081C2C06 -_081C2BC4: - movs r0, 0x3 - bl PutWindowTilemap - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bc - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C2C00 - adds r2, 0x8 - adds r0, r1, r2 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - beq _081C2C06 - movs r0, 0xF - bl PutWindowTilemap - b _081C2C06 - .pool -_081C2C00: - movs r0, 0x5 - bl PutWindowTilemap -_081C2C06: - movs r4, 0 - ldr r5, =gUnknown_0203CF1C -_081C2C0A: - ldr r0, [r5] - ldr r1, =0x000040cb - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _081C2C0A - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2AFC - - thumb_func_start sub_81C2C38 -sub_81C2C38: @ 81C2C38 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _081C2C84 - cmp r0, 0x1 - bgt _081C2C4E - cmp r0, 0 - beq _081C2C58 - b _081C2D0E -_081C2C4E: - cmp r1, 0x2 - beq _081C2C98 - cmp r1, 0x3 - beq _081C2CD4 - b _081C2D0E -_081C2C58: - movs r0, 0x4 - bl ClearWindowTilemap - bl sub_81A6BF4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C2C76 - bl sub_81B9E94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C2C7C -_081C2C76: - movs r0, 0x8 - bl ClearWindowTilemap -_081C2C7C: - movs r0, 0x9 - bl ClearWindowTilemap - b _081C2D0E -_081C2C84: - movs r0, 0xA - bl ClearWindowTilemap - movs r0, 0xB - bl ClearWindowTilemap - movs r0, 0xC - bl ClearWindowTilemap - b _081C2D0E -_081C2C98: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bc - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C2CCC - adds r2, 0x8 - adds r0, r1, r2 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - beq _081C2D0E - movs r0, 0xE - bl ClearWindowTilemap - b _081C2D0E - .pool -_081C2CCC: - movs r0, 0x5 - bl ClearWindowTilemap - b _081C2D0E -_081C2CD4: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bc - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C2D08 - adds r2, 0x8 - adds r0, r1, r2 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - beq _081C2D0E - movs r0, 0xF - bl ClearWindowTilemap - b _081C2D0E - .pool -_081C2D08: - movs r0, 0x5 - bl ClearWindowTilemap -_081C2D0E: - movs r4, 0 -_081C2D10: - adds r0, r4, 0 - bl sub_81C2D68 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _081C2D10 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C2C38 - - thumb_func_start sub_81C2D2C -sub_81C2D2C: @ 81C2D2C - push {r4,lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r2, r1, 24 - ldr r0, =gUnknown_0203CF1C - ldr r4, =0x000040cb - adds r1, r2, r4 - ldr r0, [r0] - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0xFF - bne _081C2D56 - lsls r0, r2, 3 - adds r0, r3, r0 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl FillWindowPixelBuffer -_081C2D56: - ldrb r0, [r4] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81C2D2C - - thumb_func_start sub_81C2D68 -sub_81C2D68: @ 81C2D68 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203CF1C - ldr r2, =0x000040cb - adds r0, r2 - ldr r1, [r1] - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _081C2D8C - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4] -_081C2D8C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2D68 - - thumb_func_start sub_81C2D9C -sub_81C2D9C: @ 81C2D9C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_081C2DA4: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040cb - adds r0, r1 - adds r1, r0, r4 - ldrb r0, [r1] - cmp r0, 0xFF - beq _081C2DBA - movs r1, 0 - bl FillWindowPixelBuffer -_081C2DBA: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _081C2DA4 - ldr r0, =gUnknown_0861CE54 - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2D9C - - thumb_func_start sub_81C2DE4 -sub_81C2DE4: @ 81C2DE4 - push {lr} - lsls r0, 24 - ldr r1, =gUnknown_0861CE64 - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x10 - bl CreateTask - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2DE4 - - thumb_func_start sub_81C2E00 -sub_81C2E00: @ 81C2E00 - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0x74 - ldrb r0, [r0] - cmp r0, 0 - beq _081C2E24 - bl sub_81C335C - bl sub_81C33CC - bl sub_81C3428 - bl sub_81C349C - b _081C2E3C - .pool -_081C2E24: - bl sub_81C2EC4 - bl sub_81C2F5C - bl sub_81C2FD8 - bl sub_81C302C - bl sub_81C307C - bl sub_81C3194 -_081C2E3C: - pop {r0} - bx r0 - thumb_func_end sub_81C2E00 - - thumb_func_start sub_81C2E40 -sub_81C2E40: @ 81C2E40 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldrh r0, [r4] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bhi _081C2EB8 - lsls r0, 2 - ldr r1, =_081C2E70 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C2E70: - .4byte _081C2E8C - .4byte _081C2E92 - .4byte _081C2E98 - .4byte _081C2E9E - .4byte _081C2EA4 - .4byte _081C2EAA - .4byte _081C2EB0 -_081C2E8C: - bl sub_81C2EC4 - b _081C2EB8 -_081C2E92: - bl sub_81C2F5C - b _081C2EB8 -_081C2E98: - bl sub_81C2FD8 - b _081C2EB8 -_081C2E9E: - bl sub_81C302C - b _081C2EB8 -_081C2EA4: - bl sub_81C307C - b _081C2EB8 -_081C2EAA: - bl sub_81C3194 - b _081C2EB8 -_081C2EB0: - adds r0, r2, 0 - bl DestroyTask - b _081C2EBE -_081C2EB8: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_081C2EBE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C2E40 - - thumb_func_start sub_81C2EC4 -sub_81C2EC4: @ 81C2EC4 - push {r4-r6,lr} - sub sp, 0x8 - bl sub_81A6BF4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C2F54 - bl sub_81B9E94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C2F54 - ldr r0, =gUnknown_0861CCCC - movs r1, 0 - bl sub_81C2D2C - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gText_OTSlash - movs r6, 0 - str r6, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - adds r2, r0, 0 - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xA2 - ldrb r0, [r0] - cmp r0, 0 - bne _081C2F40 - adds r1, 0xA6 - lsls r2, 24 - lsrs r2, 24 - str r6, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r3, 0x1 - bl sub_81C25A4 - b _081C2F54 - .pool -_081C2F40: - adds r1, 0xA6 - lsls r2, 24 - lsrs r2, 24 - str r6, [sp] - movs r0, 0x6 - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r3, 0x1 - bl sub_81C25A4 -_081C2F54: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81C2EC4 - - thumb_func_start sub_81C2F5C -sub_81C2F5C: @ 81C2F5C - push {r4,r5,lr} - sub sp, 0x8 - bl sub_81A6BF4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C2FC0 - bl sub_81B9E94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C2FC0 - ldr r5, =gStringVar1 - ldr r1, =gText_UnkCtrlF907F908 - adds r0, r5, 0 - bl StringCopy - ldr r1, =gUnknown_0203CF1C - ldr r1, [r1] - adds r1, 0xB8 - ldrh r1, [r1] - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0x38 - bl GetStringRightAlignXOffset - adds r4, r0, 0 - ldr r0, =gUnknown_0861CCCC - movs r1, 0x1 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 -_081C2FC0: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2F5C - - thumb_func_start sub_81C2FD8 -sub_81C2FD8: @ 81C2FD8 - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r0, [r0] - adds r1, 0x78 - ldrb r1, [r1] - bl GetAbilityBySpecies - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_0861CCCC - movs r1, 0x2 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - muls r1, r4 - ldr r2, =gAbilityNames - adds r1, r2 - movs r2, 0 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C2FD8 - - thumb_func_start sub_81C302C -sub_81C302C: @ 81C302C - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r0, [r0] - adds r1, 0x78 - ldrb r1, [r1] - bl GetAbilityBySpecies - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_0861CCCC - movs r1, 0x2 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gAbilityDescriptionPointers - lsls r4, 2 - adds r4, r1 - ldr r1, [r4] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r3, 0x11 - bl sub_81C25A4 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C302C - - thumb_func_start sub_81C307C -sub_81C307C: @ 81C307C - push {r4-r6,lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x70 - bl sub_81AFBF0 - ldr r1, =gUnknown_0861CE74 - movs r0, 0 - bl sub_81AFC0C - ldr r1, =gUnknown_0861CE7B - movs r0, 0x1 - bl sub_81AFC0C - bl sub_81C31C0 - bl sub_81A6BF4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C30C2 - bl sub_81B9E94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081C30C2 - bl sub_81C3304 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C30E0 -_081C30C2: - ldr r0, =gStringVar4 - ldr r1, =gText_XNature - bl sub_81AFC28 - b _081C3182 - .pool -_081C30E0: - movs r0, 0x20 - bl Alloc - adds r6, r0, 0 - movs r0, 0x20 - bl Alloc - adds r5, r0, 0 - adds r0, r6, 0 - bl sub_81C31F0 - ldrb r0, [r4, 0x9] - cmp r0, 0xD4 - bhi _081C310C - adds r1, r0, 0 - adds r0, r5, 0 - bl sub_8124610 - movs r0, 0x4 - adds r1, r5, 0 - bl sub_81AFC0C -_081C310C: - bl sub_81C3220 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C3148 - ldrb r0, [r4, 0xA] - cmp r0, 0 - bne _081C3134 - ldrb r0, [r4, 0x9] - ldr r1, =gText_XNatureHatchedAtYZ - cmp r0, 0xD4 - bls _081C3170 - ldr r1, =gText_XNatureHatchedSomewhereAt - b _081C3170 - .pool -_081C3134: - ldrb r0, [r4, 0x9] - ldr r1, =gText_XNatureMetAtYZ - cmp r0, 0xD4 - bls _081C3170 - ldr r1, =gText_XNatureMetSomewhereAt - b _081C3170 - .pool -_081C3148: - ldrb r0, [r4, 0x9] - cmp r0, 0xFF - bne _081C3158 - ldr r1, =gText_XNatureFatefulEncounter - b _081C3170 - .pool -_081C3158: - cmp r0, 0xFE - beq _081C316E - bl sub_81C32BC - lsls r0, 24 - cmp r0, 0 - beq _081C316E - ldrb r0, [r4, 0x9] - ldr r1, =gText_XNatureProbablyMetAt - cmp r0, 0xD4 - bls _081C3170 -_081C316E: - ldr r1, =gText_XNatureObtainedInTrade -_081C3170: - ldr r0, =gStringVar4 - bl sub_81AFC28 - adds r0, r6, 0 - bl Free - adds r0, r5, 0 - bl Free -_081C3182: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C307C - - thumb_func_start sub_81C3194 -sub_81C3194: @ 81C3194 - push {lr} - sub sp, 0x8 - ldr r0, =gUnknown_0861CCCC - movs r1, 0x3 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gStringVar4 - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3194 - - thumb_func_start sub_81C31C0 -sub_81C31C0: @ 81C31C0 - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =gNatureNamePointers - adds r0, 0xA3 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x2 - bl sub_81AFC0C - ldr r1, =gText_EmptyString5 - movs r0, 0x5 - bl sub_81AFC0C - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C31C0 - - thumb_func_start sub_81C31F0 -sub_81C31F0: @ 81C31F0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0x7A - ldrb r1, [r0] - cmp r1, 0 - bne _081C3202 - movs r1, 0x5 -_081C3202: - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r0, 0x3 - adds r1, r4, 0 - bl sub_81AFC0C - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C31F0 - - thumb_func_start sub_81C3220 -sub_81C3220: @ 81C3220 - push {r4-r6,lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r6, r0, 0 - adds r6, 0x70 - ldr r1, [r0] - ldr r0, =gEnemyParty - cmp r1, r0 - bne _081C326C - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldrh r4, [r0] - adds r0, r1, r2 - ldrb r5, [r0, 0x13] - ldr r0, =gStringVar1 - adds r2, 0x8 - adds r1, r2 - bl StringCopy - b _081C3282 - .pool -_081C326C: - bl sub_80F0020 - adds r4, r0, 0 - ldr r0, =0x0000ffff - ands r4, r0 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r5, [r1, 0x8] - ldr r0, =gStringVar1 - bl StringCopy -_081C3282: - adds r0, r6, 0 - adds r0, 0x32 - ldrb r0, [r0] - cmp r5, r0 - bne _081C32A4 - ldr r0, [r6, 0x48] - ldr r1, =0x0000ffff - ands r0, r1 - cmp r4, r0 - bne _081C32A4 - ldr r0, =gStringVar1 - adds r1, r6, 0 - adds r1, 0x36 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - beq _081C32B4 -_081C32A4: - movs r0, 0 - b _081C32B6 - .pool -_081C32B4: - movs r0, 0x1 -_081C32B6: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81C3220 - - thumb_func_start sub_81C32BC -sub_81C32BC: @ 81C32BC - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0x70 - ldrb r0, [r0, 0xB] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _081C32D8 - movs r0, 0 - b _081C32DA - .pool -_081C32D8: - movs r0, 0x1 -_081C32DA: - pop {r1} - bx r1 - thumb_func_end sub_81C32BC - - thumb_func_start sub_81C32E0 -sub_81C32E0: @ 81C32E0 - push {lr} - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r0, 0x70 - ldrb r0, [r0, 0xB] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bls _081C32FC - movs r0, 0 - b _081C32FE - .pool -_081C32FC: - movs r0, 0x1 -_081C32FE: - pop {r1} - bx r1 - thumb_func_end sub_81C32E0 - - thumb_func_start sub_81C3304 -sub_81C3304: @ 81C3304 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _081C3354 - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C3354 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040be - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081C333A - cmp r0, 0x4 - beq _081C333A - cmp r0, 0x5 - bne _081C3354 -_081C333A: - movs r0, 0x1 - b _081C3356 - .pool -_081C3354: - movs r0, 0 -_081C3356: - pop {r1} - bx r1 - thumb_func_end sub_81C3304 - - thumb_func_start sub_81C335C -sub_81C335C: @ 81C335C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - ldr r0, =gUnknown_0861CCCC - movs r1, 0 - bl sub_81C2D2C - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gText_OTSlash - mov r8, r0 - movs r0, 0x1 - mov r1, r8 - movs r2, 0 - bl GetStringWidth - adds r5, r0, 0 - movs r0, 0 - mov r9, r0 - str r0, [sp] - movs r6, 0x1 - str r6, [sp, 0x4] - adds r0, r4, 0 - mov r1, r8 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gText_FiveMarks - lsls r5, 24 - lsrs r5, 24 - mov r0, r9 - str r0, [sp] - str r6, [sp, 0x4] - adds r0, r4, 0 - adds r2, r5, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C335C - - thumb_func_start sub_81C33CC -sub_81C33CC: @ 81C33CC - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, =gStringVar1 - ldr r1, =gText_UnkCtrlF907F908 - adds r0, r5, 0 - bl StringCopy - ldr r1, =gText_FiveMarks - adds r0, r5, 0 - bl StringAppend - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0x38 - bl GetStringRightAlignXOffset - adds r4, r0, 0 - ldr r0, =gUnknown_0861CCCC - movs r1, 0x1 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C33CC - - thumb_func_start sub_81C3428 -sub_81C3428: @ 81C3428 - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x70 - adds r0, 0xA5 - ldrb r0, [r0] - cmp r0, 0x1 - bne _081C3448 - ldr r4, =gText_EggWillTakeALongTime - b _081C346C - .pool -_081C3448: - ldrh r0, [r1, 0x30] - cmp r0, 0x5 - bhi _081C3458 - ldr r4, =gText_EggAboutToHatch - b _081C346C - .pool -_081C3458: - cmp r0, 0xA - bhi _081C3464 - ldr r4, =gText_EggWillHatchSoon - b _081C346C - .pool -_081C3464: - ldr r4, =gText_EggWillTakeALongTime - cmp r0, 0x28 - bhi _081C346C - ldr r4, =gText_EggWillTakeSomeTime -_081C346C: - ldr r0, =gUnknown_0861CCCC - movs r1, 0x2 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3428 - - thumb_func_start sub_81C349C -sub_81C349C: @ 81C349C - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x70 - adds r0, 0xA5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081C3500 - ldrb r0, [r4, 0x9] - cmp r0, 0xFF - bne _081C34C4 - ldr r4, =gText_PeculiarEggNicePlace - b _081C3502 - .pool -_081C34C4: - bl sub_81C32BC - lsls r0, 24 - cmp r0, 0 - beq _081C34D8 - bl sub_81C3220 - lsls r0, 24 - cmp r0, 0 - bne _081C34E0 -_081C34D8: - ldr r4, =gText_PeculiarEggTrade - b _081C3502 - .pool -_081C34E0: - ldrb r0, [r4, 0x9] - cmp r0, 0xFD - bne _081C3500 - bl sub_81C32E0 - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gText_EggFromTraveler - cmp r0, 0x1 - bne _081C3502 - ldr r4, =gText_EggFromHotSprings - b _081C3502 - .pool -_081C3500: - ldr r4, =gText_OddEggFoundByCouple -_081C3502: - ldr r0, =gUnknown_0861CCCC - movs r1, 0x3 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C349C - - thumb_func_start sub_81C3530 -sub_81C3530: @ 81C3530 - push {lr} - bl sub_81C35E4 - bl sub_81C3690 - bl sub_81C3710 - bl sub_81C37D8 - bl sub_81C3808 - bl sub_81C3890 - bl sub_81C38C0 - pop {r0} - bx r0 - thumb_func_end sub_81C3530 - - thumb_func_start sub_81C3554 -sub_81C3554: @ 81C3554 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldrh r0, [r4] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bhi _081C35D6 - lsls r0, 2 - ldr r1, =_081C3584 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C3584: - .4byte _081C35A4 - .4byte _081C35AA - .4byte _081C35B0 - .4byte _081C35B6 - .4byte _081C35BC - .4byte _081C35C2 - .4byte _081C35C8 - .4byte _081C35CE -_081C35A4: - bl sub_81C35E4 - b _081C35D6 -_081C35AA: - bl sub_81C3690 - b _081C35D6 -_081C35B0: - bl sub_81C3710 - b _081C35D6 -_081C35B6: - bl sub_81C37D8 - b _081C35D6 -_081C35BC: - bl sub_81C3808 - b _081C35D6 -_081C35C2: - bl sub_81C3890 - b _081C35D6 -_081C35C8: - bl sub_81C38C0 - b _081C35D6 -_081C35CE: - adds r0, r2, 0 - bl DestroyTask - b _081C35DC -_081C35D6: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_081C35DC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C3554 - - thumb_func_start sub_81C35E4 -sub_81C35E4: @ 81C35E4 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0x9E - ldrh r0, [r0] - cmp r0, 0xAF - bne _081C3628 - bl sub_81B1250 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081C3628 - ldr r0, [r4] - ldr r1, =0x000040be - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081C3614 - cmp r0, 0x4 - beq _081C3614 - cmp r0, 0x5 - bne _081C3628 -_081C3614: - movs r0, 0xAF - bl ItemId_GetItem - adds r5, r0, 0 - b _081C3650 - .pool -_081C3628: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x9E - ldrh r0, [r1] - cmp r0, 0 - bne _081C3644 - ldr r5, =gText_None - b _081C3650 - .pool -_081C3644: - ldrh r0, [r1] - ldr r4, =gStringVar1 - adds r1, r4, 0 - bl CopyItemName - adds r5, r4, 0 -_081C3650: - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0x48 - bl GetStringCenterAlignXOffset - adds r4, r0, 0 - adds r4, 0x6 - ldr r0, =gUnknown_0861CCEC - movs r1, 0 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C35E4 - - thumb_func_start sub_81C3690 -sub_81C3690: @ 81C3690 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x76 - ldrb r0, [r1] - cmp r0, 0 - bne _081C36B0 - ldr r5, =gText_None - b _081C36C8 - .pool -_081C36B0: - ldr r0, =gStringVar1 - ldrb r1, [r1] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_RibbonsVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r5, r4, 0 -_081C36C8: - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0x46 - bl GetStringCenterAlignXOffset - adds r4, r0, 0 - adds r4, 0x6 - ldr r0, =gUnknown_0861CCEC - movs r1, 0x1 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3690 - - thumb_func_start sub_81C3710 -sub_81C3710: @ 81C3710 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - movs r0, 0x8 - bl Alloc - mov r9, r0 - movs r0, 0x8 - bl Alloc - mov r8, r0 - movs r0, 0x8 - bl Alloc - adds r6, r0, 0 - movs r0, 0x8 - bl Alloc - adds r5, r0, 0 - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0x90 - ldrh r1, [r0] - mov r0, r9 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - adds r0, 0x92 - ldrh r1, [r0] - mov r0, r8 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - adds r0, 0x94 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x1 - movs r3, 0x7 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - adds r0, 0x96 - ldrh r1, [r0] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x7 - bl ConvertIntToDecimalStringN - bl sub_81AFBF0 - movs r0, 0 - mov r1, r9 - bl sub_81AFC0C - movs r0, 0x1 - mov r1, r8 - bl sub_81AFC0C - movs r0, 0x2 - adds r1, r6, 0 - bl sub_81AFC0C - movs r0, 0x3 - adds r1, r5, 0 - bl sub_81AFC0C - ldr r0, =gStringVar4 - ldr r1, =gUnknown_0861CE82 - bl sub_81AFC28 - mov r0, r9 - bl Free - mov r0, r8 - bl Free - adds r0, r6, 0 - bl Free - adds r0, r5, 0 - bl Free - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3710 - - thumb_func_start sub_81C37D8 -sub_81C37D8: @ 81C37D8 - push {lr} - sub sp, 0x8 - ldr r0, =gUnknown_0861CCEC - movs r1, 0x2 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gStringVar4 - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x4 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C37D8 - - thumb_func_start sub_81C3808 -sub_81C3808: @ 81C3808 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, =gStringVar1 - mov r8, r0 - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - adds r0, 0x98 - ldrh r1, [r0] - mov r0, r8 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r6, =gStringVar2 - ldr r0, [r4] - adds r0, 0x9A - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r5, =gStringVar3 - ldr r0, [r4] - adds r0, 0x9C - ldrh r1, [r0] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - bl sub_81AFBF0 - movs r0, 0 - mov r1, r8 - bl sub_81AFC0C - movs r0, 0x1 - adds r1, r6, 0 - bl sub_81AFC0C - movs r0, 0x2 - adds r1, r5, 0 - bl sub_81AFC0C - ldr r0, =gStringVar4 - ldr r1, =gUnknown_0861CE8E - bl sub_81AFC28 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3808 - - thumb_func_start sub_81C3890 -sub_81C3890: @ 81C3890 - push {lr} - sub sp, 0x8 - ldr r0, =gUnknown_0861CCEC - movs r1, 0x3 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gStringVar4 - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x2 - movs r3, 0x1 - bl sub_81C25A4 - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3890 - - thumb_func_start sub_81C38C0 -sub_81C38C0: @ 81C38C0 - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - adds r5, r0, 0 - adds r5, 0x70 - ldr r0, =gUnknown_0861CCEC - movs r1, 0x4 - bl sub_81C2D2C - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, =gStringVar1 - ldr r1, [r5, 0x10] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x7 - bl ConvertIntToDecimalStringN - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x2A - bl GetStringRightAlignXOffset - adds r0, 0x2 - lsls r2, r0, 24 - lsrs r2, 24 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r6, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl sub_81C25A4 - ldrb r0, [r5, 0x5] - cmp r0, 0x63 - bhi _081C3948 - ldr r4, =gExperienceTables - adds r1, r0, 0 - adds r1, 0x1 - lsls r1, 2 - ldr r3, =gBaseStats - ldrh r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r4 - ldr r1, [r1] - ldr r0, [r5, 0x10] - subs r1, r0 - b _081C394A - .pool -_081C3948: - movs r1, 0 -_081C394A: - ldr r4, =gStringVar1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x2A - bl GetStringRightAlignXOffset - adds r0, 0x2 - lsls r2, r0, 24 - lsrs r2, 24 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r6, 0 - adds r1, r4, 0 - movs r3, 0x11 - bl sub_81C25A4 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C38C0 - - thumb_func_start sub_81C3984 -sub_81C3984: @ 81C3984 - push {r4,lr} - movs r0, 0 - bl sub_81C3B08 - movs r0, 0x1 - bl sub_81C3B08 - movs r0, 0x2 - bl sub_81C3B08 - movs r0, 0x3 - bl sub_81C3B08 - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r1, =0x000040bc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C39EA - bl sub_81C3F44 - ldr r1, [r4] - ldr r0, =0x000040c6 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0x4 - bne _081C39DC - ldr r0, =0x000040c4 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _081C39EA - bl sub_81C3E9C - b _081C39EA - .pool -_081C39DC: - ldrb r0, [r2] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r0, [r1] - bl sub_81C3E9C -_081C39EA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C3984 - - thumb_func_start sub_81C39F0 -sub_81C39F0: @ 81C39F0 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldrh r0, [r4] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bhi _081C3AFC - lsls r0, 2 - ldr r1, =_081C3A20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C3A20: - .4byte _081C3A40 - .4byte _081C3A48 - .4byte _081C3A50 - .4byte _081C3A58 - .4byte _081C3A60 - .4byte _081C3A7C - .4byte _081C3ABE - .4byte _081C3AF4 -_081C3A40: - movs r0, 0 - bl sub_81C3B08 - b _081C3AFC -_081C3A48: - movs r0, 0x1 - bl sub_81C3B08 - b _081C3AFC -_081C3A50: - movs r0, 0x2 - bl sub_81C3B08 - b _081C3AFC -_081C3A58: - movs r0, 0x3 - bl sub_81C3B08 - b _081C3AFC -_081C3A60: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040bc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C3AFC - bl sub_81C3F44 - b _081C3AFC - .pool -_081C3A7C: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bc - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C3AFC - ldr r0, =0x000040c6 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0x4 - bne _081C3AB0 - ldr r2, =0x000040c4 - adds r0, r1, r2 - ldrh r0, [r0] - strh r0, [r4, 0x2] - b _081C3AFC - .pool -_081C3AB0: - ldrb r0, [r2] - lsls r0, 1 - adds r1, 0x84 - adds r1, r0 - ldrh r0, [r1] - strh r0, [r4, 0x2] - b _081C3AFC -_081C3ABE: - ldr r0, =gUnknown_0203CF1C - ldr r1, [r0] - ldr r2, =0x000040bc - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C3AFC - adds r2, 0x8 - adds r0, r1, r2 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - beq _081C3AFC - ldrh r0, [r4, 0x2] - bl sub_81C3E9C - b _081C3AFC - .pool -_081C3AF4: - adds r0, r2, 0 - bl DestroyTask - b _081C3B02 -_081C3AFC: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_081C3B02: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C39F0 - - thumb_func_start sub_81C3B08 -sub_81C3B08: @ 81C3B08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - mov r10, r0 - ldr r4, =gUnknown_0861CD14 - adds r0, r4, 0 - movs r1, 0 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81C2D2C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r1, r7, 1 - mov r0, r10 - adds r0, 0x84 - adds r0, r1 - ldrh r5, [r0] - cmp r5, 0 - beq _081C3C00 - mov r0, r10 - adds r0, 0xA4 - ldrb r1, [r0] - adds r0, r5, 0 - adds r2, r7, 0 - bl CalculatePPWithBonus - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0xD - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gMoveNames - adds r1, r0 - lsls r0, r7, 4 - mov r9, r0 - mov r3, r9 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - mov r0, r8 - movs r2, 0 - bl sub_81C25A4 - ldr r0, =gStringVar1 - mov r8, r0 - mov r5, r10 - adds r5, 0x8C - adds r5, r7 - ldrb r1, [r5] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar2 - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - bl sub_81AFBF0 - movs r0, 0 - mov r1, r8 - bl sub_81AFC0C - movs r0, 0x1 - adds r1, r4, 0 - bl sub_81AFC0C - ldr r4, =gStringVar4 - ldr r1, =gUnknown_0861CE97 - adds r0, r4, 0 - bl sub_81AFC28 - adds r7, r4, 0 - ldrb r0, [r5] - adds r1, r6, 0 - bl sub_814FC20 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - adds r5, 0x9 - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x2C - bl GetStringRightAlignXOffset - mov r4, r9 - b _081C3C26 - .pool -_081C3C00: - ldr r1, =gText_OneDash - lsls r4, r7, 4 - adds r3, r4, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - mov r0, r8 - movs r2, 0 - bl sub_81C25A4 - ldr r7, =gText_TwoDashes - movs r5, 0xC - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x2C - bl GetStringCenterAlignXOffset -_081C3C26: - lsls r2, r0, 24 - lsrs r2, 24 - adds r3, r4, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - lsls r0, r5, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, [sp, 0x8] - adds r1, r7, 0 - bl sub_81C25A4 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3B08 - - thumb_func_start sub_81C3C5C -sub_81C3C5C: @ 81C3C5C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _081C3CFC - movs r0, 0x13 - str r0, [sp] - movs r0, 0x20 - str r0, [sp, 0x4] - movs r0, 0xE - movs r1, 0 - movs r2, 0x35 - movs r3, 0 - bl FillWindowPixelRect - ldr r2, =gBattleMoves - lsls r1, r5, 1 - adds r0, r1, r5 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x1] - adds r6, r1, 0 - cmp r0, 0x1 - bhi _081C3C9C - ldr r1, =gText_ThreeDashes - b _081C3CAC - .pool -_081C3C9C: - ldr r4, =gStringVar1 - ldrb r1, [r2, 0x1] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r1, r4, 0 -_081C3CAC: - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0xE - movs r2, 0x35 - movs r3, 0x1 - bl sub_81C25A4 - ldr r1, =gBattleMoves - adds r0, r6, r5 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _081C3CDC - ldr r1, =gText_ThreeDashes - b _081C3CEC - .pool -_081C3CDC: - ldr r4, =gStringVar1 - ldrb r1, [r1, 0x3] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r1, r4, 0 -_081C3CEC: - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0xE - movs r2, 0x35 - movs r3, 0x11 - bl sub_81C25A4 -_081C3CFC: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3C5C - - thumb_func_start sub_81C3D08 -sub_81C3D08: @ 81C3D08 - push {r4,lr} - movs r0, 0 - bl sub_81C3B08 - movs r0, 0x1 - bl sub_81C3B08 - movs r0, 0x2 - bl sub_81C3B08 - movs r0, 0x3 - bl sub_81C3B08 - ldr r4, =gUnknown_0203CF1C - ldr r0, [r4] - ldr r1, =0x000040bc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C3D40 - bl sub_81C3F44 - ldr r0, [r4] - ldr r1, =0x000040c6 - adds r0, r1 - ldrb r0, [r0] - bl sub_81C3E2C -_081C3D40: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C3D08 - - thumb_func_start sub_81C3D54 -sub_81C3D54: @ 81C3D54 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldrh r0, [r4] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bhi _081C3E20 - lsls r0, 2 - ldr r1, =_081C3D84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C3D84: - .4byte _081C3DA0 - .4byte _081C3DA8 - .4byte _081C3DB0 - .4byte _081C3DB8 - .4byte _081C3DC0 - .4byte _081C3DDC - .4byte _081C3E18 -_081C3DA0: - movs r0, 0 - bl sub_81C3B08 - b _081C3E20 -_081C3DA8: - movs r0, 0x1 - bl sub_81C3B08 - b _081C3E20 -_081C3DB0: - movs r0, 0x2 - bl sub_81C3B08 - b _081C3E20 -_081C3DB8: - movs r0, 0x3 - bl sub_81C3B08 - b _081C3E20 -_081C3DC0: - ldr r0, =gUnknown_0203CF1C - ldr r0, [r0] - ldr r1, =0x000040bc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C3E20 - bl sub_81C3F44 - b _081C3E20 - .pool -_081C3DDC: - ldr r0, =gUnknown_0203CF1C - ldr r2, [r0] - ldr r1, =0x000040bc - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _081C3E20 - adds r1, 0x8 - adds r0, r2, r1 - ldr r0, [r0] - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 11 - cmp r0, r1 - beq _081C3E20 - ldr r1, =0x000040c6 - adds r0, r2, r1 - ldrb r0, [r0] - bl sub_81C3E2C - b _081C3E20 - .pool -_081C3E18: - adds r0, r2, 0 - bl DestroyTask - b _081C3E26 -_081C3E20: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_081C3E26: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C3D54 - thumb_func_start sub_81C3E2C sub_81C3E2C: @ 81C3E2C push {r4,lr} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 4c748073e9..a44102b4b8 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2,18 +2,41 @@ #include "battle.h" #include "bg.h" #include "decompress.h" +#include "item.h" +#include "items.h" +#include "link.h" #include "m4a.h" #include "main.h" #include "malloc.h" +#include "moves.h" #include "palette.h" #include "pokemon.h" #include "songs.h" #include "sound.h" +#include "species.h" #include "sprite.h" #include "string_util.h" #include "task.h" +#include "text.h" #include "window.h" +struct contestMove +{ + u8 effect; + u8 type; + u8 comboID; + u8 combo[4]; +}; + +struct contestEffect +{ + u8 type; + u8 appeal; + u8 jam; +}; + + + extern struct unkSummaryStruct* gUnknown_0203CF1C; extern struct BgTemplate gUnknown_0861CBB4; extern u8 gUnknown_0203CF20; @@ -27,6 +50,21 @@ extern struct unkStruct_61CC04 gUnknown_0861CC10; extern struct unkStruct_61CC04 gUnknown_0861CBEC; extern struct unkStruct_61CC04 gUnknown_0861CBF8; extern u16 gUnknown_08DC3CD4[]; +extern struct contestMove gContestMoves[]; +extern struct contestEffect gContestEffects[]; +extern struct WindowTemplate gUnknown_0861CC24; +extern struct TextColor gUnknown_0861CD2C[]; +extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; +extern u8 gText_MaleSymbol[]; +extern u8 gText_FemaleSymbol[]; +extern u8 gUnknown_0861CDD3[]; +extern void (*const gUnknown_0861CE54[])(); +extern void (*const gUnknown_0861CE64[])(u8 taskId); +extern struct WindowTemplate gUnknown_0861CCCC; +extern u8 gUnknown_0861CE74[]; +extern u8 gUnknown_0861CE7B[]; +extern struct WindowTemplate gUnknown_0861CCEC; +extern struct WindowTemplate gUnknown_0861CD14; extern void sub_806F2AC(u8 a, u8 b); void sub_81C488C(u8 a); @@ -61,9 +99,81 @@ extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 extern u8 free_temp_tile_data_buffers_if_possible(); extern void sub_8069004(struct BoxPokemon* a, void* b); extern void sub_81C1E20(u8 taskId); +extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); +extern u16 SpeciesToPokedexNum(u16 species); +extern u8 gText_UnkCtrlF908Clear01[]; +extern u8 gText_LevelSymbol[]; +extern u8 gText_PkmnInfo[]; +extern u8 gText_PkmnSkills[]; +extern u8 gText_BattleMoves[]; +extern u8 gText_ContestMoves[]; +extern u8 gText_Cancel2[]; +extern u8 gText_Info[]; +extern u8 gText_Switch[]; +extern u8 gText_RentalPkmn[]; +extern u8 gText_TypeSlash[]; +extern u8 gText_HP4[]; +extern u8 gText_Attack3[]; +extern u8 gText_Defense3[]; +extern u8 gText_SpAtk4[]; +extern u8 gText_SpDef4[]; +extern u8 gText_Speed2[]; +extern u8 gText_ExpPoints[]; +extern u8 gText_NextLv[]; +extern u8 gText_Status[]; +extern u8 gText_Power[]; +extern u8 gText_Accuracy2[]; +extern u8 gText_Appeal[]; +extern u8 gText_Jam[]; +extern u8 gText_OTSlash[]; +extern u8 gText_UnkCtrlF907F908[]; +extern u8 gAbilityNames[][13]; +extern u8 *gAbilityDescriptionPointers[]; +extern u8 gText_XNature[]; +extern u8 gText_XNatureHatchedAtYZ[]; +extern u8 gText_XNatureHatchedSomewhereAt[]; +extern u8 gText_XNatureMetAtYZ[]; +extern u8 gText_XNatureMetSomewhereAt[]; +extern u8 gText_XNatureFatefulEncounter[]; +extern u8 gText_XNatureProbablyMetAt[]; +extern u8 gText_XNatureObtainedInTrade[]; +extern u8 *gNatureNamePointers[]; +extern u8 gText_EmptyString5[]; +extern u32 gBattleTypeFlags; +extern u8 gText_FiveMarks[]; +extern u8 gText_EggWillTakeALongTime[]; +extern u8 gText_EggAboutToHatch[]; +extern u8 gText_EggWillHatchSoon[]; +extern u8 gText_EggWillTakeSomeTime[]; +extern u8 gText_PeculiarEggNicePlace[]; +extern u8 gText_PeculiarEggTrade[]; +extern u8 gText_EggFromTraveler[]; +extern u8 gText_EggFromHotSprings[]; +extern u8 gText_OddEggFoundByCouple[]; +extern u8 gText_None[]; +extern u8 gText_RibbonsVar1[]; +extern u8 gUnknown_0861CE82[]; +extern u8 gUnknown_0861CE8E[]; +extern u8 gMoveNames[][13]; +extern u8 gText_OneDash[]; +extern u8 gText_TwoDashes[]; +extern u8 gText_ThreeDashes[]; +extern u8 gUnknown_0861CE97[]; +extern struct BattleMove gBattleMoves[]; extern u32 ChangeBgX(u8 bg, u32 value, u8 op); extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f); +extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str); +extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); +extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); +extern u8 sub_81A6BF4(); +extern u8 sub_81B9E94(); +extern void sub_81AFBF0(); +extern u8 sub_81AFC0C(u8 a, u8 *b); +extern void sub_81AFC28(u8 *a, u8 *b); +extern void sub_8124610(u8 *a, u8 b); +extern int sub_80F0020(); +extern u8 sub_814FC20(u8 a, u8 b); void sub_81BFAE4(void); void sub_81BFE24(); @@ -111,7 +221,7 @@ void sub_81C20F0(u8 taskId); bool8 sub_81C0A50(struct Pokemon* mon); void sub_81C49E0(); void sub_81C0E24(); -void sub_81C2C38(); +void sub_81C2C38(u8 a); void sub_81C0B8C(u8 taskId); void sub_81C0CC4(u8 taskId); void sub_81C2DE4(u8 a); @@ -144,6 +254,34 @@ u8 sub_81B6D14(u16 a); void sub_81C1940(u8 taskId); void sub_81C4154(); void sub_81C1F80(u8 taskId); +void sub_81C2628(); +void sub_81C2794(); +void sub_81C27DC(struct Pokemon *mon, u16 a); +void sub_81C2D68(u8 a); +void sub_81C335C(); +void sub_81C33CC(); +void sub_81C3428(); +void sub_81C349C(); +void sub_81C2EC4(); +void sub_81C2F5C(); +void sub_81C2FD8(); +void sub_81C302C(); +void sub_81C307C(); +void sub_81C3194(); +void sub_81C31C0(); +u8 sub_81C3304(); +void sub_81C31F0(u8 *a); +u8 sub_81C3220(); +u8 sub_81C32BC(); +void sub_81C35E4(); +void sub_81C3690(); +void sub_81C3710(); +void sub_81C37D8(); +void sub_81C3808(); +void sub_81C3890(); +void sub_81C38C0(); +void sub_81C3B08(u8 a); +void sub_81C3E2C(u8 a); void SetBgAttribute(u8 bg, u8 attributeId, u8 value); @@ -221,7 +359,8 @@ struct unkSummaryStruct u8 unk40C7; u8 unk40C8; u8 unk40C9; - u8 unk_filler2[0x9]; + u8 unk40CA; + u8 unk40CB[8]; u8 unk40D3; u8 unk40D4; u8 unk40D5; @@ -2326,4 +2465,1217 @@ void sub_81C228C(u8 a) else sub_8199C30(3, 1, 4, 8, 8, 5); schedule_bg_copy_tilemap_to_vram(3); +} + +void sub_81C22CC(struct Pokemon *unused) +{ + s64 r6r7; + struct pokeSummary *summary = &gUnknown_0203CF1C->summary; + u16 *r9; + u8 i; + + if (summary->level < MAX_MON_LEVEL) + { + u32 r1 = gExperienceTables[gBaseStats[summary->species].growthRate][summary->level + 1] - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; + u32 r4 = summary->exp - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; + + r6r7 = r4 * 64 / r1; + if (r6r7 == 0 && r4 != 0) + r6r7 = 1; + } + else + { + r6r7 = 0; + } + + r9 = &gUnknown_0203CF1C->unkTilemap1_1[0x255]; + for (i = 0; i < 8; i++) + { + if (r6r7 > 7) + r9[i] = 0x206A; + else + r9[i] = 0x2062 + (r6r7 % 8); + r6r7 -= 8; + if (r6r7 < 0) + r6r7 = 0; + } + + if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->unkTilemap1) + schedule_bg_copy_tilemap_to_vram(1); + else + schedule_bg_copy_tilemap_to_vram(2); +} + +void sub_81C240C(u16 move) +{ + u16* r5 = &gUnknown_0203CF1C->unkTilemap3_1[0]; + u8 i; + u8 r4; + if (move != MOVE_NONE) + { + r4 = gContestEffects[gContestMoves[move].effect].appeal; + if (r4 != 0xFF) + r4 /= 10; + for (i = 0;i < 8; i++) + { + if (r4 != 0xFF && i < r4) + { + r5[((i>>2)*32)+(i&3)+0x1E6] = 0x103A; + } + else + r5[((i>>2)*32)+(i&3)+0x1E6] = 0x1039; + } + r4 = gContestEffects[gContestMoves[move].effect].jam; + if (r4 != 0xFF) + r4 /= 10; + for (i = 0;i < 8; i++) + { + if (r4 != 0xFF && i < r4) + { + r5[((i>>2)*32)+(i&3)+0x226] = 0x103C; + } + else + r5[((i>>2)*32)+(i&3)+0x226] = 0x103D; + } + } +} + +void sub_81C2524() +{ + if (gUnknown_0203CF1C->summary.isEgg != 0) + ChangeBgX(3, 0x10000, 0); + else + ChangeBgX(3, 0, 0); +} + +void sub_81C2554() +{ + u8 i; + InitWindows(&gUnknown_0861CC24); + DeactivateAllTextPrinters(); + for (i = 0; i < 20; i++) + FillWindowPixelBuffer(i, 0); + for (i = 0; i < 8; i++) + gUnknown_0203CF1C->unk40CB[i] |= 0xFF; +} + +void sub_81C25A4(u8 a, u8 *b, u8 c, u8 d, u8 e, u8 f) +{ + AddTextPrinterParametrized2(a, 1, c, d, 0, e, &gUnknown_0861CD2C[f], 0, b); +} + +void sub_81C25E8() +{ + FillWindowPixelBuffer(17, 0); + FillWindowPixelBuffer(18, 0); + FillWindowPixelBuffer(19, 0); + if (gUnknown_0203CF1C->summary.isEgg == 0) + sub_81C2628(); + else + sub_81C2794(); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_81C2628() +{ + u8 strArray[16]; + struct Pokemon *mon = &gUnknown_0203CF1C->currentPoke; + struct pokeSummary *summary = &gUnknown_0203CF1C->summary; + u16 r5 = SpeciesToPokedexNum(summary->species); + if (r5 != 0xFFFF) + { + StringCopy(gStringVar1, &gText_UnkCtrlF908Clear01[0]); + ConvertIntToDecimalStringN(gStringVar2, r5, 2, 3); + StringAppend(gStringVar1, gStringVar2); + if (IsMonShiny(mon) == 0) + { + sub_81C25A4(17, gStringVar1, 0, 1, 0, 1); + sub_81C228C(0); + } + else + { + sub_81C25A4(17, gStringVar1, 0, 1, 0, 7); + sub_81C228C(1); + } + PutWindowTilemap(17); + } + else + { + ClearWindowTilemap(17); + if (IsMonShiny(mon) == 0) + sub_81C228C(0); + else + sub_81C228C(1); + } + StringCopy(gStringVar1, &gText_LevelSymbol[0]); + ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3); + StringAppend(gStringVar1, gStringVar2); + sub_81C25A4(19, gStringVar1, 0x18, 17, 0, 1); + GetMonNickname(mon, gStringVar1); + sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); + strArray[0] = CHAR_SLASH; + StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]); + sub_81C25A4(19, &strArray[0], 0, 1, 0, 1); + sub_81C27DC(mon, summary->species2); + PutWindowTilemap(18); + PutWindowTilemap(19); +} + +void sub_81C2794() +{ + GetMonNickname(&gUnknown_0203CF1C->currentPoke, gStringVar1); + sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); + PutWindowTilemap(18); + ClearWindowTilemap(17); + ClearWindowTilemap(19); +} + +void sub_81C27DC(struct Pokemon *mon, u16 a) +{ + if (a != SPECIES_NIDORAN_M && a != SPECIES_NIDORAN_F) + { + u8 gender = GetMonGender(mon); + switch (gender) + { + case 0: + sub_81C25A4(0x13, &gText_MaleSymbol[0], 0x39, 17, 0, 3); + break; + case 0xFE: + sub_81C25A4(0x13, &gText_FemaleSymbol[0], 0x39, 17, 0, 4); + break; + } + } +} + +void sub_81C2838(u8 a, u8 b, u32 c) +{ + BlitBitmapToWindow(a, (b) ? &gUnknown_0861CDD3[0] : &gUnknown_0861CDD3[0] - 0x80, c, 0, 16, 16); +} + +void sub_81C286C() +{ + int r4; + int r2; + int temp; + sub_81C25A4(0, gText_PkmnInfo, 2, 1, 0, 1); + sub_81C25A4(1, gText_PkmnSkills, 2, 1, 0, 1); + sub_81C25A4(2, gText_BattleMoves, 2, 1, 0, 1); + sub_81C25A4(3, gText_ContestMoves, 2, 1, 0, 1); + r4 = GetStringRightAlignXOffset(1, gText_Cancel2, 0x3E); + r2 = r4 - 16; + if (r2 < 0) + r2 = 0; + sub_81C2838(4, 0, r2); + sub_81C25A4(4, gText_Cancel2, r4, 1, 0, 0); + r4 = GetStringRightAlignXOffset(1, gText_Info, 0x3E); + r2 = r4 - 16; + if (r2 < 0) + r2 = 0; + sub_81C2838(5, 0, r2); + sub_81C25A4(5, gText_Info, r4, 1, 0, 0); + r4 = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); + r2 = r4 - 16; + if (r2 < 0) + r2 = 0; + sub_81C2838(6, 0, r2); + sub_81C25A4(6, gText_Switch, r4, 1, 0, 0); + sub_81C25A4(8, gText_RentalPkmn, 0, 1, 0, 1); + sub_81C25A4(9, gText_TypeSlash, 0, 1, 0, 0); + temp = 6; + temp += GetStringCenterAlignXOffset(1, gText_HP4, 42); + sub_81C25A4(10, gText_HP4, temp, 1, 0, 1); + temp = 6; + temp += GetStringCenterAlignXOffset(1, gText_Attack3, 42); + sub_81C25A4(10, gText_Attack3, temp, 17, 0, 1); + temp = 6; + temp += GetStringCenterAlignXOffset(1, gText_Defense3, 42); + sub_81C25A4(10, gText_Defense3, temp, 33, 0, 1); + temp = 2; + temp += GetStringCenterAlignXOffset(1, gText_SpAtk4, 36); + sub_81C25A4(11, gText_SpAtk4, temp, 1, 0, 1); + temp = 2; + temp += GetStringCenterAlignXOffset(1, gText_SpDef4, 36); + sub_81C25A4(11, gText_SpDef4, temp, 17, 0, 1); + temp = 2; + temp += GetStringCenterAlignXOffset(1, gText_Speed2, 36); + sub_81C25A4(11, gText_Speed2, temp, 33, 0, 1); + sub_81C25A4(12, gText_ExpPoints, 6, 1, 0, 1); + sub_81C25A4(12, gText_NextLv, 6, 17, 0, 1); + sub_81C25A4(13, gText_Status, 2, 1, 0, 1); + sub_81C25A4(14, gText_Power, 0, 1, 0, 1); + sub_81C25A4(14, gText_Accuracy2, 0, 17, 0, 1); + sub_81C25A4(15, gText_Appeal, 0, 1, 0, 1); + sub_81C25A4(15, gText_Jam, 0, 17, 0, 1); +} + +void sub_81C2AFC(u8 a) +{ + u8 i; + ClearWindowTilemap(0); + ClearWindowTilemap(1); + ClearWindowTilemap(2); + ClearWindowTilemap(3); + switch (a) + { + case 0: + PutWindowTilemap(0); + PutWindowTilemap(4); + if (sub_81A6BF4() == 1 || sub_81B9E94() == 1) + PutWindowTilemap(8); + PutWindowTilemap(9); + break; + case 1: + PutWindowTilemap(1); + PutWindowTilemap(10); + PutWindowTilemap(11); + PutWindowTilemap(12); + break; + case 2: + PutWindowTilemap(2); + if (gUnknown_0203CF1C->unk40BC == 3) + { + if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + PutWindowTilemap(14); + } + else + PutWindowTilemap(5); + break; + case 3: + PutWindowTilemap(3); + if (gUnknown_0203CF1C->unk40BC == 3) + { + if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + PutWindowTilemap(15); + } + else + PutWindowTilemap(5); + break; + } + for (i = 0; i < 8; i++) + { + PutWindowTilemap(gUnknown_0203CF1C->unk40CB[i]); + } + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_81C2C38(u8 a) +{ + u8 i; + switch (a) + { + case 0: + ClearWindowTilemap(4); + if (sub_81A6BF4() == 1 || sub_81B9E94() == 1) + ClearWindowTilemap(8); + ClearWindowTilemap(9); + break; + case 1: + ClearWindowTilemap(10); + ClearWindowTilemap(11); + ClearWindowTilemap(12); + break; + case 2: + if (gUnknown_0203CF1C->unk40BC == 3) + { + if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + ClearWindowTilemap(14); + } + else + ClearWindowTilemap(5); + break; + case 3: + if (gUnknown_0203CF1C->unk40BC == 3) + { + if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + ClearWindowTilemap(15); + } + else + ClearWindowTilemap(5); + break; + } + for (i = 0; i < 8; i++) + sub_81C2D68(i); + schedule_bg_copy_tilemap_to_vram(0); +} + + + +#ifdef NONMATCHING +u8 sub_81C2D2C(struct WindowTemplate *template, u8 a) +{ + u8 *r4 = gUnknown_0203CF1C->unk40CB; + if (r4[a] == 0xFF) + { + r4[a] = AddWindow(&template[a]); + FillWindowPixelBuffer(r4[a], 0); + } + return r4[a]; +} +#else +__attribute__((naked)) +u8 sub_81C2D2C(struct WindowTemplate *template, u8 a) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + adds r3, r0, 0\n\ + lsls r1, 24\n\ + lsrs r2, r1, 24\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r4, =0x000040cb\n\ + adds r1, r2, r4\n\ + ldr r0, [r0]\n\ + adds r4, r0, r1\n\ + ldrb r0, [r4]\n\ + cmp r0, 0xFF\n\ + bne _081C2D56\n\ + lsls r0, r2, 3\n\ + adds r0, r3, r0\n\ + bl AddWindow\n\ + strb r0, [r4]\n\ + ldrb r0, [r4]\n\ + movs r1, 0\n\ + bl FillWindowPixelBuffer\n\ +_081C2D56:\n\ + ldrb r0, [r4]\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .pool\n\ + .syntax divided\n"); +} +#endif + +#ifdef NONMATCHING +void sub_81C2D68(u8 a) +{ + u8 *r4 = gUnknown_0203CF1C->unk40CB; + if (r4[a] != 0xFF) + { + ClearWindowTilemap(r4[a]); + RemoveWindow(r4[a]); + r4[a] = 0xFF; + } +} +#else +__attribute__((naked)) +void sub_81C2D68(u8 a) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r1, =gUnknown_0203CF1C\n\ + ldr r2, =0x000040cb\n\ + adds r0, r2\n\ + ldr r1, [r1]\n\ + adds r4, r1, r0\n\ + ldrb r0, [r4]\n\ + cmp r0, 0xFF\n\ + beq _081C2D8C\n\ + bl ClearWindowTilemap\n\ + ldrb r0, [r4]\n\ + bl RemoveWindow\n\ + movs r0, 0xFF\n\ + strb r0, [r4]\n\ +_081C2D8C:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided\n"); +} +#endif + +void sub_81C2D9C(u8 a) +{ + u16 i; + for (i = 0; i < 8; i++) + { + if (gUnknown_0203CF1C->unk40CB[i] != 0xFF) + FillWindowPixelBuffer(gUnknown_0203CF1C->unk40CB[i], 0); + } + gUnknown_0861CE54[a](); +} + +void sub_81C2DE4(u8 a) +{ + CreateTask(gUnknown_0861CE64[a], 16); +} + +void sub_81C2E00() +{ + if (gUnknown_0203CF1C->summary.isEgg) + { + sub_81C335C(); + sub_81C33CC(); + sub_81C3428(); + sub_81C349C(); + } + else + { + sub_81C2EC4(); + sub_81C2F5C(); + sub_81C2FD8(); + sub_81C302C(); + sub_81C307C(); + sub_81C3194(); + } +} + +void sub_81C2E40(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 dataa = data[0] - 1; + switch (dataa) + { + case 0: + sub_81C2EC4(); + break; + case 1: + sub_81C2F5C(); + break; + case 2: + sub_81C2FD8(); + break; + case 3: + sub_81C302C(); + break; + case 4: + sub_81C307C(); + break; + case 5: + sub_81C3194(); + break; + case 6: + DestroyTask(taskId); + return; + } + data[0]++; +} + +void sub_81C2EC4() +{ + u8 r5; + int r2; + if (sub_81A6BF4() != 1 && sub_81B9E94() != 1) + { + r5 = sub_81C2D2C(&gUnknown_0861CCCC, 0); + sub_81C25A4(r5, gText_OTSlash, 0, 1, 0, 1); + r2 = GetStringWidth(1, gText_OTSlash, 0); + if (gUnknown_0203CF1C->summary.OTGender == 0) + sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 5); + else + sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 6); + } +} + +void sub_81C2F5C() +{ + int r4; + if (sub_81A6BF4() != 1 && sub_81B9E94() != 1) + { + ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5); + r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + } +} + +void sub_81C2FD8() +{ + u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altability); + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); +} + +void sub_81C302C() +{ + u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altability); + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); +} + +void sub_81C307C() +{ + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + u8 *text; + sub_81AFBF0(); + sub_81AFC0C(0, gUnknown_0861CE74); + sub_81AFC0C(1, gUnknown_0861CE7B); + sub_81C31C0(); + if (sub_81A6BF4() == 1 || sub_81B9E94() == 1 || sub_81C3304() == 1) + sub_81AFC28(gStringVar4, gText_XNature); + else + { + u8 *alloced1 = Alloc(32); + u8 *alloced2 = Alloc(32); + sub_81C31F0(alloced1); + if (sum->metLocation <= 0xD4) + { + sub_8124610(alloced2, sum->metLocation); + sub_81AFC0C(4, alloced2); + } + if (sub_81C3220() == 1) + { + if (sum->metLevel == 0) + text = (sum->metLocation > 0xD4) ? gText_XNatureHatchedSomewhereAt : gText_XNatureHatchedAtYZ; + else + text = (sum->metLocation > 0xD4) ? gText_XNatureMetSomewhereAt : gText_XNatureMetAtYZ; + } + else if (sum->metLocation == 0xFF) + text = gText_XNatureFatefulEncounter; + else if (sum->metLocation != 0xFE && sub_81C32BC()) + text = (sum->metLocation > 0xD4) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; + else + text = gText_XNatureObtainedInTrade; + sub_81AFC28(gStringVar4, text); + Free(alloced1); + Free(alloced2); + } +} + +void sub_81C3194() +{ + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); +} + +void sub_81C31C0() +{ + struct unkSummaryStruct *sumStruct = gUnknown_0203CF1C; + sub_81AFC0C(2, gNatureNamePointers[sumStruct->summary.nature]); + sub_81AFC0C(5, gText_EmptyString5); +} + +void sub_81C31F0(u8 *a) +{ + u8 level = gUnknown_0203CF1C->summary.metLevel; + if (level == 0) + level = 5; + ConvertIntToDecimalStringN(a, level, 0, 3); + sub_81AFC0C(3, a); +} + +u8 sub_81C3220() +{ + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + u32 r4; + u8 r5; + if (gUnknown_0203CF1C->unk0 == (union unkUnion *)&gEnemyParty) + { + u8 multiID = GetMultiplayerId()^1; + r4 = (u16)gLinkPlayers[multiID].trainerId; + r5 = gLinkPlayers[multiID].gender; + StringCopy(gStringVar1, gLinkPlayers[multiID].name); + } + else + { + r4 = sub_80F0020() & 0xFFFF; + r5 = gSaveBlock2Ptr->playerGender; + StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); + } + if (r5 != sum->OTGender || r4 != (sum->OTID & 0xFFFF) || StringCompareWithoutExtCtrlCodes(gStringVar1, sum->OTName)) + { + return 0; + } + return 1; +} + +u8 sub_81C32BC() +{ + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + u8 r0 = sum->metGame - 1; + if (r0 <= 4) + return 1; + return 0; +} + +u8 sub_81C32E0() +{ + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + u8 r0 = sum->metGame - 1; + if (r0 <= 2) + return 1; + return 0; +} + +u8 sub_81C3304() +{ + if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) + { + if (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5) + return 1; + } + return 0; +} + +#ifdef NONMATCHING +void sub_81C335C() +{ + u8 r4 = sub_81C2D2C(&gUnknown_0861CCCC, 0); + u32 r5 = GetStringWidth(1, gText_OTSlash, 0); + sub_81C25A4(r4, gText_OTSlash, 0, 1, 0, 1); + sub_81C25A4(r4, gText_FiveMarks, r5, 1, 0, 1); +} +#else +__attribute__((naked)) +void sub_81C335C() +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5,r6}\n\ + sub sp, 0x8\n\ + ldr r0, =gUnknown_0861CCCC\n\ + movs r1, 0\n\ + bl sub_81C2D2C\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r0, =gText_OTSlash\n\ + mov r8, r0\n\ + movs r0, 0x1\n\ + mov r1, r8\n\ + movs r2, 0\n\ + bl GetStringWidth\n\ + adds r5, r0, 0\n\ + movs r0, 0\n\ + mov r9, r0\n\ + str r0, [sp]\n\ + movs r6, 0x1\n\ + str r6, [sp, 0x4]\n\ + adds r0, r4, 0\n\ + mov r1, r8\n\ + movs r2, 0\n\ + movs r3, 0x1\n\ + bl sub_81C25A4\n\ + ldr r1, =gText_FiveMarks\n\ + lsls r5, 24\n\ + lsrs r5, 24\n\ + mov r0, r9\n\ + str r0, [sp]\n\ + str r6, [sp, 0x4]\n\ + adds r0, r4, 0\n\ + adds r2, r5, 0\n\ + movs r3, 0x1\n\ + bl sub_81C25A4\n\ + add sp, 0x8\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided\n"); +} +#endif + +void sub_81C33CC() +{ + int r4; + StringCopy(gStringVar1, gText_UnkCtrlF907F908); + StringAppend(gStringVar1, gText_FiveMarks); + r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); +} + +void sub_81C3428() +{ + u8 *text; + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + if (gUnknown_0203CF1C->summary.sanity == 1) + text = gText_EggWillTakeALongTime; + else if (sum->friendship <= 5) + text = gText_EggAboutToHatch; + else if (sum->friendship <= 10) + text = gText_EggWillHatchSoon; + else if (sum->friendship <= 40) + text = gText_EggWillTakeSomeTime; + else + text = gText_EggWillTakeALongTime; + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); +} + +void sub_81C349C() +{ + u8 *text; + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + if (gUnknown_0203CF1C->summary.sanity != 1) + { + if (sum->metLocation == 0xFF) + text = gText_PeculiarEggNicePlace; + else if (sub_81C32BC() == 0 || sub_81C3220() == 0) + text = gText_PeculiarEggTrade; + else if (sum->metLocation == 0xFD) + text = (sub_81C32E0() == 1) ? gText_EggFromHotSprings : gText_EggFromTraveler; + else + text = gText_OddEggFoundByCouple; + } + else + text = gText_OddEggFoundByCouple; + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); +} + +void sub_81C3530() +{ + sub_81C35E4(); + sub_81C3690(); + sub_81C3710(); + sub_81C37D8(); + sub_81C3808(); + sub_81C3890(); + sub_81C38C0(); +} + +void sub_81C3554(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 dataa = data[0] - 1; + switch (dataa) + { + case 0: + sub_81C35E4(); + break; + case 1: + sub_81C3690(); + break; + case 2: + sub_81C3710(); + break; + case 3: + sub_81C37D8(); + break; + case 4: + sub_81C3808(); + break; + case 5: + sub_81C3890(); + break; + case 6: + sub_81C38C0(); + break; + case 7: + DestroyTask(taskId); + return; + } + data[0]++; +} + +void sub_81C35E4() +{ + u8 *text; + int offset; + if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5)) + { + text = (u8*)ItemId_GetItem(ITEM_ENIGMA_BERRY); + } + else if (gUnknown_0203CF1C->summary.item == ITEM_NONE) + text = gText_None; + else + { + CopyItemName(gUnknown_0203CF1C->summary.item, gStringVar1); + text = gStringVar1; + } + offset = GetStringCenterAlignXOffset(1, text, 0x48) + 6; + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); +} + +void sub_81C3690() +{ + u8 *text; + int offset; + if (gUnknown_0203CF1C->summary.ribbons == 0) + text = gText_None; + else + { + ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.ribbons, 1, 2); + StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1); + text = gStringVar4; + } + offset = GetStringCenterAlignXOffset(1, text, 0x46) + 6; + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); +} + +void sub_81C3710() +{ + u8 *alloced1 = Alloc(8); + u8 *alloced2 = Alloc(8); + u8 *alloced3 = Alloc(8); + u8 *alloced4 = Alloc(8); + ConvertIntToDecimalStringN(alloced1, gUnknown_0203CF1C->summary.currentHP, 1, 3); + ConvertIntToDecimalStringN(alloced2, gUnknown_0203CF1C->summary.maxHP, 1, 3); + ConvertIntToDecimalStringN(alloced3, gUnknown_0203CF1C->summary.atk, 1, 7); + ConvertIntToDecimalStringN(alloced4, gUnknown_0203CF1C->summary.def, 1, 7); + sub_81AFBF0(); + sub_81AFC0C(0, alloced1); + sub_81AFC0C(1, alloced2); + sub_81AFC0C(2, alloced3); + sub_81AFC0C(3, alloced4); + sub_81AFC28(gStringVar4, gUnknown_0861CE82); + Free(alloced1); + Free(alloced2); + Free(alloced3); + Free(alloced4); +} + +void sub_81C37D8() +{ + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); +} + +void sub_81C3808() +{ + ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3); + ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3); + ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3); + sub_81AFBF0(); + sub_81AFC0C(0, gStringVar1); + sub_81AFC0C(1, gStringVar2); + sub_81AFC0C(2, gStringVar3); + sub_81AFC28(gStringVar4, gUnknown_0861CE8E); +} + +void sub_81C3890() +{ + sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); +} + +void sub_81C38C0() +{ + struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + u8 r6 = sub_81C2D2C(&gUnknown_0861CCEC, 4); + int offset; + u32 expToNextLevel; + ConvertIntToDecimalStringN(gStringVar1, sum->exp, 1, 7); + offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2; + sub_81C25A4(r6, gStringVar1, offset, 1, 0, 0); + if (sum->level < MAX_MON_LEVEL) + expToNextLevel = gExperienceTables[gBaseStats[sum->species].growthRate][sum->level + 1] - sum->exp; + else + expToNextLevel = 0; + ConvertIntToDecimalStringN(gStringVar1, expToNextLevel, 1, 6); + offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2; + sub_81C25A4(r6, gStringVar1, offset, 17, 0, 0); +} + +void sub_81C3984() +{ + sub_81C3B08(0); + sub_81C3B08(1); + sub_81C3B08(2); + sub_81C3B08(3); + if (gUnknown_0203CF1C->unk40BC == 3) + { + sub_81C3F44(); + if (gUnknown_0203CF1C->unk40C6 == 4) + { + if (gUnknown_0203CF1C->unk40C4 != 0) + sub_81C3E9C(gUnknown_0203CF1C->unk40C4); + } + else + sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); + } +} + +void sub_81C39F0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 dataa = data[0] - 1; + + switch (dataa) + { + case 0: + sub_81C3B08(0); + break; + case 1: + sub_81C3B08(1); + break; + case 2: + sub_81C3B08(2); + break; + case 3: + sub_81C3B08(3); + break; + case 4: + if (gUnknown_0203CF1C->unk40BC == 3) + sub_81C3F44(); + break; + case 5: + if (gUnknown_0203CF1C->unk40BC == 3) + { + if (gUnknown_0203CF1C->unk40C6 == 4) + data[1] = gUnknown_0203CF1C->unk40C4; + else + data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + } + break; + case 6: + if (gUnknown_0203CF1C->unk40BC == 3) + { + if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + sub_81C3E9C(data[1]); + } + break; + case 7: + DestroyTask(taskId); + return; + } + data[0]++; +} + +#ifdef NONMATCHING +void sub_81C3B08(u8 a) +{ + struct unkSummaryStruct *r10 = gUnknown_0203CF1C; + u8 r8 = sub_81C2D2C(&gUnknown_0861CD14, 0); + u8 sp = sub_81C2D2C(&gUnknown_0861CD14, 1); + u8 r6; + u8 r5; + u8 *text; + int offset; + u16 move; + if (r10->summary.moves[a] != 0) + { + move = r10->summary.moves[a]; + r6 = CalculatePPWithBonus(move, r10->summary.ppBonuses, a); + sub_81C25A4(r8, gMoveNames[move], 0, (a<<4) + 1, 0, 1); + ConvertIntToDecimalStringN(gStringVar1, r10->summary.pp[a], 1, 2); + ConvertIntToDecimalStringN(gStringVar2, r6, 1, 2); + sub_81AFBF0(); + sub_81AFC0C(0, gStringVar1); + sub_81AFC0C(1, gStringVar2); + sub_81AFC28(gStringVar4, gUnknown_0861CE97); + text = gStringVar4; + r5 = sub_814FC20(r10->summary.pp[a], r6) + 9; + offset = GetStringRightAlignXOffset(1, text, 0x2C); + } + else + { + sub_81C25A4(r8, gText_OneDash, 0, (a<<4) + 1, 0, 1); + text = gText_TwoDashes; + r5 = 12; + offset = GetStringCenterAlignXOffset(1, text, 0x2C); + } + sub_81C25A4(sp, text, offset, (a<<4), 0, r5); +} +#else +__attribute__((naked)) +void sub_81C3B08(u8 a) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r0, =gUnknown_0203CF1C\n\ + ldr r0, [r0]\n\ + mov r10, r0\n\ + ldr r4, =gUnknown_0861CD14\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + bl sub_81C2D2C\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl sub_81C2D2C\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x8]\n\ + lsls r1, r7, 1\n\ + mov r0, r10\n\ + adds r0, 0x84\n\ + adds r0, r1\n\ + ldrh r5, [r0]\n\ + cmp r5, 0\n\ + beq _081C3C00\n\ + mov r0, r10\n\ + adds r0, 0xA4\n\ + ldrb r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r2, r7, 0\n\ + bl CalculatePPWithBonus\n\ + adds r6, r0, 0\n\ + lsls r6, 24\n\ + lsrs r6, 24\n\ + movs r0, 0xD\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, =gMoveNames\n\ + adds r1, r0\n\ + lsls r0, r7, 4\n\ + mov r9, r0\n\ + mov r3, r9\n\ + adds r3, 0x1\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x1\n\ + str r0, [sp, 0x4]\n\ + mov r0, r8\n\ + movs r2, 0\n\ + bl sub_81C25A4\n\ + ldr r0, =gStringVar1\n\ + mov r8, r0\n\ + mov r5, r10\n\ + adds r5, 0x8C\n\ + adds r5, r7\n\ + ldrb r1, [r5]\n\ + movs r2, 0x1\n\ + movs r3, 0x2\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r4, =gStringVar2\n\ + adds r0, r4, 0\n\ + adds r1, r6, 0\n\ + movs r2, 0x1\n\ + movs r3, 0x2\n\ + bl ConvertIntToDecimalStringN\n\ + bl sub_81AFBF0\n\ + movs r0, 0\n\ + mov r1, r8\n\ + bl sub_81AFC0C\n\ + movs r0, 0x1\n\ + adds r1, r4, 0\n\ + bl sub_81AFC0C\n\ + ldr r4, =gStringVar4\n\ + ldr r1, =gUnknown_0861CE97\n\ + adds r0, r4, 0\n\ + bl sub_81AFC28\n\ + adds r7, r4, 0\n\ + ldrb r0, [r5]\n\ + adds r1, r6, 0\n\ + bl sub_814FC20\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r5, r0, 0\n\ + adds r5, 0x9\n\ + movs r0, 0x1\n\ + adds r1, r7, 0\n\ + movs r2, 0x2C\n\ + bl GetStringRightAlignXOffset\n\ + mov r4, r9\n\ + b _081C3C26\n\ + .pool\n\ +_081C3C00:\n\ + ldr r1, =gText_OneDash\n\ + lsls r4, r7, 4\n\ + adds r3, r4, 0x1\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + str r5, [sp]\n\ + movs r0, 0x1\n\ + str r0, [sp, 0x4]\n\ + mov r0, r8\n\ + movs r2, 0\n\ + bl sub_81C25A4\n\ + ldr r7, =gText_TwoDashes\n\ + movs r5, 0xC\n\ + movs r0, 0x1\n\ + adds r1, r7, 0\n\ + movs r2, 0x2C\n\ + bl GetStringCenterAlignXOffset\n\ +_081C3C26:\n\ + lsls r2, r0, 24\n\ + lsrs r2, 24\n\ + adds r3, r4, 0x1\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + lsls r0, r5, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + ldr r0, [sp, 0x8]\n\ + adds r1, r7, 0\n\ + bl sub_81C25A4\n\ + add sp, 0xC\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\ + .pool\n\ + .syntax divided\n"); +} +#endif + +void sub_81C3C5C(u16 move) +{ + u8 *text; + if (move != 0) + { + FillWindowPixelRect(14, 0, 0x35, 0, 0x13, 0x20); + if (gBattleMoves[move].power <= 1) + text = gText_ThreeDashes; + else + { + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, 1, 3); + text = gStringVar1; + } + sub_81C25A4(14, text, 0x35, 1, 0, 0); + if (gBattleMoves[move].accuracy == 0) + text = gText_ThreeDashes; + else + { + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, 1, 3); + text = gStringVar1; + } + sub_81C25A4(14, text, 0x35, 17, 0, 0); + } +} + +void sub_81C3D08() +{ + sub_81C3B08(0); + sub_81C3B08(1); + sub_81C3B08(2); + sub_81C3B08(3); + if (gUnknown_0203CF1C->unk40BC == 3) + { + sub_81C3F44(); + sub_81C3E2C(gUnknown_0203CF1C->unk40C6); + } +} + +void sub_81C3D54(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 dataa = data[0] - 1; + + switch (dataa) + { + case 0: + sub_81C3B08(0); + break; + case 1: + sub_81C3B08(1); + break; + case 2: + sub_81C3B08(2); + break; + case 3: + sub_81C3B08(3); + break; + case 4: + if (gUnknown_0203CF1C->unk40BC == 3) + sub_81C3F44(); + break; + case 5: + if (gUnknown_0203CF1C->unk40BC == 3) + { + if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + sub_81C3E2C(gUnknown_0203CF1C->unk40C6); + } + break; + case 6: + DestroyTask(taskId); + return; + } + data[0]++; } \ No newline at end of file From 79a947ed16f55b7fd045813d27659c087c211669 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 18 Oct 2017 19:52:33 -0400 Subject: [PATCH 157/182] git made me --- src/pokemon_summary_screen.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index a44102b4b8..c5b1970265 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -154,7 +154,6 @@ extern u8 gText_None[]; extern u8 gText_RibbonsVar1[]; extern u8 gUnknown_0861CE82[]; extern u8 gUnknown_0861CE8E[]; -extern u8 gMoveNames[][13]; extern u8 gText_OneDash[]; extern u8 gText_TwoDashes[]; extern u8 gText_ThreeDashes[]; From 7a515ea1f968e09213509e2d4c4547c7d8a35a9d Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 18 Oct 2017 20:05:26 -0400 Subject: [PATCH 158/182] fixed --- src/pokemon_summary_screen.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index c5b1970265..3e6342f36b 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -171,8 +171,8 @@ extern void sub_81AFBF0(); extern u8 sub_81AFC0C(u8 a, u8 *b); extern void sub_81AFC28(u8 *a, u8 *b); extern void sub_8124610(u8 *a, u8 b); -extern int sub_80F0020(); -extern u8 sub_814FC20(u8 a, u8 b); +extern int GetPlayerIDAsU32(); +extern u8 GetCurrentPpToMaxPpState(u8 a, u8 b); void sub_81BFAE4(void); void sub_81BFE24(); @@ -3065,7 +3065,7 @@ u8 sub_81C3220() } else { - r4 = sub_80F0020() & 0xFFFF; + r4 = GetPlayerIDAsU32() & 0xFFFF; r5 = gSaveBlock2Ptr->playerGender; StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); } @@ -3443,7 +3443,7 @@ void sub_81C3B08(u8 a) sub_81AFC0C(1, gStringVar2); sub_81AFC28(gStringVar4, gUnknown_0861CE97); text = gStringVar4; - r5 = sub_814FC20(r10->summary.pp[a], r6) + 9; + r5 = GetCurrentPpToMaxPpState(r10->summary.pp[a], r6) + 9; offset = GetStringRightAlignXOffset(1, text, 0x2C); } else @@ -3547,7 +3547,7 @@ void sub_81C3B08(u8 a) adds r7, r4, 0\n\ ldrb r0, [r5]\n\ adds r1, r6, 0\n\ - bl sub_814FC20\n\ + bl GetCurrentPpToMaxPpState\n\ lsls r0, 24\n\ lsrs r0, 24\n\ adds r5, r0, 0\n\ From 11bead31e90aca72f85352b684670a76a5aa7a16 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 19 Oct 2017 15:28:41 +0200 Subject: [PATCH 159/182] battle interface is done --- asm/battle_7.s | 6 +- asm/battle_interface.s | 996 ------------------------------------- asm/party_menu.s | 4 +- asm/trade.s | 4 +- data/battle_interface.s | 139 ------ include/battle.h | 6 +- include/battle_interface.h | 16 +- ld_script.txt | 2 - src/battle_interface.c | 820 ++++++++++++++++++++++++++---- 9 files changed, 749 insertions(+), 1244 deletions(-) delete mode 100755 asm/battle_interface.s delete mode 100644 data/battle_interface.s diff --git a/asm/battle_7.s b/asm/battle_7.s index 3e4574658b..5925058d25 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -2857,7 +2857,7 @@ sub_805E990: @ 805E990 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 - bl sub_8075060 + bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2997,7 +2997,7 @@ sub_805EAB4: @ 805EAB4 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 - bl sub_8075060 + bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 pop {r4,r5} @@ -3796,7 +3796,7 @@ sub_805F110: @ 805F110 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 - bl sub_8075060 + bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/battle_interface.s b/asm/battle_interface.s deleted file mode 100755 index 5a4ca6bedf..0000000000 --- a/asm/battle_interface.s +++ /dev/null @@ -1,996 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_8074AA0 -sub_8074AA0: @ 8074AA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - cmp r2, 0 - bne _08074AEC - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0xC] - mov r1, r8 - lsls r5, r1, 2 - adds r3, r5, r1 - lsls r3, 2 - adds r3, r0 - ldr r0, [r3, 0x4] - ldr r1, [r3, 0x8] - ldr r2, [r3, 0xC] - adds r3, 0x10 - movs r4, 0x6 - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - bl sub_8074DB8 - adds r4, r0, 0 - adds r7, r5, 0 - b _08074B48 - .pool -_08074AEC: - ldr r2, =gBattleSpritesDataPtr - mov r10, r2 - ldr r0, [r2] - ldr r2, [r0, 0xC] - mov r0, r8 - lsls r4, r0, 2 - adds r0, r4, r0 - lsls r6, r0, 2 - adds r2, r6, r2 - ldr r0, [r2, 0x8] - ldr r1, [r2, 0xC] - ldr r2, [r2, 0x4] - movs r3, 0x8 - bl sub_8074FE8 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r4, 0 - cmp r5, 0 - bne _08074B16 - movs r5, 0x1 -_08074B16: - mov r1, r10 - ldr r0, [r1] - ldr r0, [r0, 0xC] - adds r4, r6, r0 - ldr r6, [r4, 0xC] - adds r0, r6, 0 - adds r1, r5, 0 - bl __divsi3 - cmp r0, 0 - bge _08074B2E - negs r0, r0 -_08074B2E: - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [r4, 0x4] - ldr r1, [r4, 0x8] - adds r3, r4, 0 - adds r3, 0x10 - movs r2, 0x8 - str r2, [sp] - str r5, [sp, 0x4] - adds r2, r6, 0 - bl sub_8074DB8 - adds r4, r0, 0 -_08074B48: - mov r2, r9 - cmp r2, 0x1 - beq _08074B64 - cmp r2, 0 - bne _08074B6C - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - adds r0, r7, r0 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08074B6C -_08074B64: - mov r0, r8 - mov r1, r9 - bl sub_8074B9C -_08074B6C: - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _08074B86 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0xC] - mov r2, r8 - adds r0, r7, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - str r1, [r0, 0x10] -_08074B86: - adds r0, r4, 0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8074AA0 - - thumb_func_start sub_8074B9C -sub_8074B9C: @ 8074B9C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - beq _08074BB8 - cmp r1, 0x1 - beq _08074CA0 - b _08074D9E -_08074BB8: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0xC] - lsls r5, r6, 2 - adds r3, r5, r6 - lsls r3, 2 - adds r3, r0 - ldr r0, [r3, 0x4] - ldr r1, [r3, 0x8] - ldr r2, [r3, 0xC] - adds r3, 0x10 - add r4, sp, 0x8 - str r4, [sp] - movs r4, 0x6 - str r4, [sp, 0x4] - bl sub_8074E8C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - mov r9, r1 - adds r7, r5, 0 - cmp r0, 0x18 - bhi _08074BF4 - movs r2, 0x38 - mov r9, r2 - cmp r0, 0x9 - bls _08074BF4 - movs r4, 0x2F - mov r9, r4 -_08074BF4: - movs r5, 0 - ldr r0, =gSprites - mov r8, r0 -_08074BFA: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0xC] - adds r0, r7, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r0, [r0, 0x38] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r5, 0x1 - bhi _08074C5C - mov r0, r9 - bl GetHealthboxElementGfxPtr - mov r1, sp - adds r1, r5 - adds r1, 0x8 - ldrb r1, [r1] - lsls r1, 5 - adds r0, r1 - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - add r1, r8 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r2, r5, 0x2 - adds r1, r2 - lsls r1, 5 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _08074C8A - .pool -_08074C5C: - mov r0, r9 - bl GetHealthboxElementGfxPtr - mov r1, sp - adds r1, r5 - adds r1, 0x8 - ldrb r1, [r1] - lsls r1, 5 - adds r0, r1 - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - add r1, r8 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r1, r5, r1 - lsls r1, 5 - ldr r4, =0x06010040 - adds r1, r4 - ldr r2, =0x04000008 - bl CpuSet -_08074C8A: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08074BFA - b _08074D9E - .pool -_08074CA0: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0xC] - lsls r5, r6, 2 - adds r3, r5, r6 - lsls r3, 2 - adds r3, r0 - ldr r0, [r3, 0x4] - ldr r1, [r3, 0x8] - ldr r2, [r3, 0xC] - adds r3, 0x10 - add r4, sp, 0x8 - str r4, [sp] - movs r4, 0x8 - str r4, [sp, 0x4] - bl sub_8074E8C - ldr r1, =gBattlePartyID - lsls r0, r6, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - adds r7, r5, 0 - cmp r0, 0x64 - bne _08074CF8 - movs r5, 0 - movs r1, 0 -_08074CE6: - mov r0, sp - adds r0, r5 - adds r0, 0x8 - strb r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x7 - bls _08074CE6 -_08074CF8: - movs r5, 0 - ldr r0, =gSprites - mov r8, r0 - adds r0, r7, r6 - lsls r4, r0, 2 -_08074D02: - cmp r5, 0x3 - bhi _08074D5C - movs r0, 0xC - bl GetHealthboxElementGfxPtr - mov r1, sp - adds r1, r5 - adds r1, 0x8 - ldrb r1, [r1] - lsls r1, 5 - adds r0, r1 - ldr r1, =gBattleSpritesDataPtr - ldr r1, [r1] - ldr r1, [r1, 0xC] - adds r1, r4, r1 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r2, r5, 0 - adds r2, 0x24 - adds r1, r2 - lsls r1, 5 - ldr r2, =0x06010000 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _08074D94 - .pool -_08074D5C: - movs r0, 0xC - bl GetHealthboxElementGfxPtr - mov r1, sp - adds r1, r5 - adds r1, 0x8 - ldrb r1, [r1] - lsls r1, 5 - adds r0, r1 - ldr r1, =gBattleSpritesDataPtr - ldr r1, [r1] - ldr r1, [r1, 0xC] - adds r1, r4, r1 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r1, r5, r1 - lsls r1, 5 - ldr r2, =0x06010b80 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet -_08074D94: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x7 - bls _08074D02 -_08074D9E: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8074B9C - - thumb_func_start sub_8074DB8 -sub_8074DB8: @ 8074DB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r4, r1, 0 - mov r8, r2 - adds r5, r3, 0 - ldr r1, [sp, 0x18] - ldr r0, [sp, 0x1C] - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 27 - lsrs r2, r1, 24 - ldr r1, [r5] - ldr r0, =0xffff8000 - cmp r1, r0 - bne _08074DEA - cmp r7, r2 - bge _08074DE8 - lsls r0, r4, 8 - str r0, [r5] - b _08074DEA - .pool -_08074DE8: - str r4, [r5] -_08074DEA: - mov r0, r8 - subs r4, r0 - cmp r4, 0 - bge _08074DF6 - movs r4, 0 - b _08074DFC -_08074DF6: - cmp r4, r7 - ble _08074DFC - adds r4, r7, 0 -_08074DFC: - cmp r7, r2 - bge _08074E18 - ldr r0, [r5] - asrs r1, r0, 8 - adds r6, r0, 0 - cmp r4, r1 - bne _08074E24 - movs r0, 0xFF - ands r0, r6 - cmp r0, 0 - bne _08074E24 - movs r0, 0x1 - negs r0, r0 - b _08074E80 -_08074E18: - ldr r6, [r5] - cmp r4, r6 - bne _08074E24 - movs r0, 0x1 - negs r0, r0 - b _08074E80 -_08074E24: - cmp r7, r2 - bge _08074E5E - lsls r0, r7, 8 - adds r1, r2, 0 - bl __divsi3 - mov r1, r8 - cmp r1, 0 - bge _08074E42 - adds r0, r6, r0 - str r0, [r5] - asrs r2, r0, 8 - cmp r2, r4 - blt _08074E7E - b _08074E56 -_08074E42: - subs r0, r6, r0 - str r0, [r5] - asrs r2, r0, 8 - movs r1, 0xFF - ands r0, r1 - cmp r0, 0 - ble _08074E52 - adds r2, 0x1 -_08074E52: - cmp r2, r4 - bgt _08074E7E -_08074E56: - lsls r0, r4, 8 - str r0, [r5] - adds r2, r4, 0 - b _08074E7E -_08074E5E: - mov r0, r8 - cmp r0, 0 - bge _08074E70 - ldr r0, [r5] - adds r0, r3 - str r0, [r5] - cmp r0, r4 - ble _08074E7C - b _08074E7A -_08074E70: - ldr r0, [r5] - subs r0, r3 - str r0, [r5] - cmp r0, r4 - bge _08074E7C -_08074E7A: - str r4, [r5] -_08074E7C: - ldr r2, [r5] -_08074E7E: - adds r0, r2, 0 -_08074E80: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8074DB8 - - thumb_func_start sub_8074E8C -sub_8074E8C: @ 8074E8C - push {r4-r7,lr} - adds r4, r0, 0 - mov r12, r3 - ldr r7, [sp, 0x14] - ldr r0, [sp, 0x18] - lsls r0, 24 - lsrs r6, r0, 24 - subs r5, r1, r2 - cmp r5, 0 - bge _08074EA4 - movs r5, 0 - b _08074EAA -_08074EA4: - cmp r5, r4 - ble _08074EAA - adds r5, r4, 0 -_08074EAA: - lsls r0, r6, 27 - lsrs r3, r0, 24 - movs r1, 0 - cmp r1, r6 - bcs _08074EC4 - movs r2, 0 -_08074EB6: - adds r0, r7, r1 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcc _08074EB6 -_08074EC4: - cmp r4, r3 - bge _08074ED8 - mov r1, r12 - ldr r0, [r1] - muls r0, r3 - adds r1, r4, 0 - bl __divsi3 - asrs r0, 8 - b _08074EE4 -_08074ED8: - mov r1, r12 - ldr r0, [r1] - muls r0, r3 - adds r1, r4, 0 - bl __divsi3 -_08074EE4: - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - cmp r3, 0 - bne _08074EFA - cmp r5, 0 - ble _08074EFA - movs r0, 0x1 - strb r0, [r7] - movs r3, 0x1 - b _08074F1E -_08074EFA: - movs r1, 0 - movs r4, 0x8 -_08074EFE: - cmp r1, r6 - bcs _08074F1E - cmp r2, 0x7 - bls _08074F1A - adds r0, r7, r1 - strb r4, [r0] - adds r0, r2, 0 - subs r0, 0x8 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - b _08074EFE -_08074F1A: - adds r0, r7, r1 - strb r2, [r0] -_08074F1E: - adds r0, r3, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8074E8C - - thumb_func_start sub_8074F28 -sub_8074F28: @ 8074F28 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r5, r0, 0 - adds r6, r1, 0 - adds r4, r2, 0 - mov r8, r3 - ldr r0, [r5] - ldr r1, [r5, 0x4] - ldr r2, [r5, 0x8] - movs r3, 0x6 - str r3, [sp] - movs r3, 0x1 - str r3, [sp, 0x4] - adds r3, r6, 0 - bl sub_8074DB8 - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_8074F88 - ldr r0, [r5] - cmp r0, 0x2F - bgt _08074F68 - ldr r0, [r6] - lsls r0, 8 - lsrs r1, r0, 16 - b _08074F6A -_08074F68: - ldrh r1, [r6] -_08074F6A: - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r1, 16 - asrs r1, 16 - mov r2, r8 - bl sub_8072304 - lsls r0, r7, 16 - asrs r0, 16 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8074F28 - - thumb_func_start sub_8074F88 -sub_8074F88: @ 8074F88 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x1C - adds r5, r0, 0 - adds r3, r1, 0 - mov r8, r2 - ldr r0, [r5] - ldr r1, [r5, 0x4] - ldr r2, [r5, 0x8] - add r4, sp, 0x8 - str r4, [sp] - movs r4, 0x6 - str r4, [sp, 0x4] - bl sub_8074E8C - movs r3, 0 - add r7, sp, 0x10 - mov r12, r7 - ldrb r0, [r5, 0xC] - lsls r6, r0, 27 - ldr r4, [r5, 0x10] -_08074FB4: - lsls r2, r3, 1 - add r2, r12 - lsrs r1, r6, 15 - mov r0, sp - adds r0, r3 - adds r0, 0x8 - ldrb r0, [r0] - adds r0, r4, r0 - orrs r1, r0 - strh r1, [r2] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _08074FB4 - adds r0, r7, 0 - mov r1, r8 - movs r2, 0x6 - bl CpuSet - add sp, 0x1C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8074F88 - - thumb_func_start sub_8074FE8 -sub_8074FE8: @ 8074FE8 - push {r4-r7,lr} - adds r6, r2, 0 - lsls r3, 27 - lsrs r7, r3, 24 - subs r5, r0, r1 - cmp r5, 0 - bge _08074FFA - movs r5, 0 - b _08075000 -_08074FFA: - cmp r5, r6 - ble _08075000 - adds r5, r6, 0 -_08075000: - muls r0, r7 - adds r1, r6, 0 - bl __divsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - muls r0, r7 - adds r1, r6, 0 - bl __divsi3 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - subs r0, r4, r0 - cmp r0, 0 - bge _08075028 - negs r0, r0 -_08075028: - lsls r0, 24 - lsrs r0, 24 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8074FE8 - - thumb_func_start GetScaledHPFraction -GetScaledHPFraction: @ 8075034 - push {r4,lr} - lsls r2, 24 - lsrs r2, 24 - lsls r0, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - muls r0, r2 - lsls r1, 16 - asrs r1, 16 - bl __divsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08075058 - cmp r4, 0 - ble _08075058 - movs r0, 0x1 -_08075058: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetScaledHPFraction - - thumb_func_start sub_8075060 -sub_8075060: @ 8075060 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - cmp r0, r1 - bne _08075072 - movs r0, 0x4 - b _0807508E -_08075072: - movs r2, 0x30 - bl GetScaledHPFraction - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x3 - cmp r1, 0x18 - bhi _0807508E - movs r0, 0x2 - cmp r1, 0x9 - bhi _0807508E - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_0807508E: - pop {r1} - bx r1 - thumb_func_end sub_8075060 - - thumb_func_start AddTextPrinterAndCreateWindowOnHealthbox -AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - mov r10, r0 - mov r8, r1 - mov r9, r2 - adds r5, r3, 0 - ldr r7, [sp, 0x40] - ldr r0, =gUnknown_0832C3F8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - add r0, sp, 0x18 - bl AddWindow - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r6, r4, 24 - lsrs r6, 24 - lsls r1, r5, 4 - orrs r1, r5 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl FillWindowPixelBuffer - add r0, sp, 0x14 - movs r2, 0 - strb r5, [r0] - adds r1, r0, 0 - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0x3 - strb r0, [r1, 0x2] - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - str r2, [sp] - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - mov r0, r10 - str r0, [sp, 0x10] - adds r0, r6, 0 - movs r1, 0 - mov r2, r8 - mov r3, r9 - bl AddTextPrinterParametrized2 - str r4, [r7] - adds r0, r6, 0 - movs r1, 0x7 - bl GetWindowAttribute - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox - - thumb_func_start RemoveWindowOnHealthbox -RemoveWindowOnHealthbox: @ 807512C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl RemoveWindow - pop {r0} - bx r0 - thumb_func_end RemoveWindowOnHealthbox - - thumb_func_start sub_807513C -sub_807513C: @ 807513C - push {lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r1, r0, 8 - adds r0, r1 - lsls r1, r0, 16 - adds r0, r1 - str r0, [sp] - lsls r2, 3 - ldr r0, =0x001fffff - ands r2, r0 - movs r0, 0xA0 - lsls r0, 19 - orrs r2, r0 - mov r0, sp - adds r1, r3, 0 - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_807513C - - thumb_func_start sub_8075170 -sub_8075170: @ 8075170 - push {lr} - adds r3, r0, 0 - adds r0, r1, 0 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - lsls r2, 3 - ldr r1, =0x001fffff - ands r2, r1 - movs r1, 0x80 - lsls r1, 19 - orrs r2, r1 - adds r1, r3, 0 - bl CpuSet - pop {r0} - bx r0 - .pool - thumb_func_end sub_8075170 - - thumb_func_start sub_8075198 -sub_8075198: @ 8075198 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - movs r1, 0x80 - lsls r1, 1 - adds r0, r5, r1 - adds r1, r6, r1 - lsls r2, r4, 3 - ldr r3, =0x001fffff - ands r2, r3 - movs r3, 0x80 - lsls r3, 19 - orrs r2, r3 - bl CpuSet - cmp r4, 0 - ble _080751D4 -_080751BC: - adds r0, r5, 0 - adds r0, 0x14 - adds r1, r6, 0 - adds r1, 0x14 - ldr r2, =0x04000003 - bl CpuSet - adds r6, 0x20 - adds r5, 0x20 - subs r4, 0x1 - cmp r4, 0 - bne _080751BC -_080751D4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8075198 - - thumb_func_start sub_80751E4 -sub_80751E4: @ 80751E4 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - lsls r4, r2, 3 - ldr r0, =0x001fffff - ands r4, r0 - movs r0, 0x80 - lsls r0, 19 - orrs r4, r0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl CpuSet - movs r0, 0x80 - lsls r0, 1 - adds r5, r0 - adds r6, r0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl CpuSet - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80751E4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s index 50dc3c54e0..f2e681b9b4 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5441,7 +5441,7 @@ sub_81B2E64: @ 81B2E64 mov r2, r9 lsls r1, r2, 16 asrs r1, 16 - bl sub_8075060 + bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -10452,7 +10452,7 @@ sub_81B5A8C: @ 81B5A8C asrs r2, 16 adds r0, r1, 0 adds r1, r2, 0 - bl sub_8075060 + bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/trade.s b/asm/trade.s index 31c16195e6..e8b8977977 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -5954,7 +5954,7 @@ _0807A488: asrs r0, 16 lsls r1, 16 asrs r1, 16 - bl sub_8075060 + bl GetHPBarLevel ldr r1, [r7] adds r1, 0x5D adds r1, r6 @@ -5997,7 +5997,7 @@ _0807A4E8: asrs r0, 16 lsls r1, 16 asrs r1, 16 - bl sub_8075060 + bl GetHPBarLevel ldr r1, [r7] adds r1, 0x63 adds r1, r6 diff --git a/data/battle_interface.s b/data/battle_interface.s deleted file mode 100644 index 39f69ba5f8..0000000000 --- a/data/battle_interface.s +++ /dev/null @@ -1,139 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - - - - .align 2 -gUnknown_0832C220:: @ 832C220 - .byte 0xf0, 0x00, 0x0d, 0x40, 0x30, 0x00, 0x08, 0x42 - .byte 0xf0, 0x20, 0x05, 0x43, 0x10, 0x20, 0x45, 0x43 - .byte 0x30, 0x20, 0x85, 0x43 - - .align 2 -gUnknown_0832C234:: @ 832C234 - .byte 0xf0, 0x00, 0x0d, 0x44, 0x30, 0x00, 0x08, 0x46 - .byte 0xf0, 0x20, 0x05, 0x47, 0x10, 0x20, 0x45, 0x47 - .byte 0x30, 0x20, 0x85, 0x47 - - .align 2 -gUnknown_0832C248:: @ 832C248 - .byte 0xf0, 0x00, 0x0d, 0x40, 0x30, 0x00, 0x08, 0x42 - - .align 2 -gUnknown_0832C250:: @ 832C250 - .byte 0xf0, 0x00, 0x0d, 0x40, 0x30, 0x00, 0x08, 0x42 - - .align 2 -gUnknown_0832C258:: @ 832C258 - .byte 0xf0, 0x00, 0x05, 0x40, 0x10, 0x00, 0x45, 0x40 - - .align 2 -gUnknown_0832C260:: @ 832C260 - .byte 0xf0, 0x00, 0x05, 0x40, 0x10, 0x00, 0x45, 0x40 - .byte 0xe0, 0x00, 0x80, 0x40 - - .align 2 -gUnknown_0832C26C:: @ 832C26C - .4byte 0x00000005, gUnknown_0832C220 - .4byte 0x00000002, gUnknown_0832C248 - .4byte 0x00000005, gUnknown_0832C234 - .4byte 0x00000002, gUnknown_0832C250 - - .align 2 -gUnknown_0832C28C:: @ 832C28C - .4byte 0x00000002, gUnknown_0832C258 - .4byte 0x00000003, gUnknown_0832C260 - - .align 2 -gUnknown_0832C29C:: @ 832C29C - .byte 0xa0, 0x00, 0x05, 0x40, 0xc0, 0x00, 0x45, 0x40 - .byte 0xe0, 0x00, 0x85, 0x40, 0x00, 0x00, 0xc5, 0x40 - - .align 2 -gUnknown_0832C2AC:: @ 832C2AC - .byte 0xa0, 0x00, 0x05, 0x40, 0xc0, 0x00, 0x45, 0x40 - .byte 0xe0, 0x00, 0x85, 0x40, 0x00, 0x00, 0x85, 0x40 - .byte 0x20, 0x00, 0x85, 0x40, 0x40, 0x00, 0xc5, 0x40 - - .align 2 -gUnknown_0832C2C4:: @ 832C2C4 - .4byte 0x00000004, gUnknown_0832C29C - - .align 2 -gUnknown_0832C2CC:: @ 832C2CC - .4byte 0x00000006, gUnknown_0832C2AC - - .align 2 -gUnknown_0832C2D4:: @ 832C2D4 - .2byte 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222 - .2byte 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777 - - .2byte 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222 - .2byte 0x7777, 0x7777, 0x7777, 0x7717, 0x1777, 0x7177, 0x7777, 0x7771 - - .2byte 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222 - .2byte 0x7777, 0x7777, 0x7777, 0x7111, 0x7777, 0x7171, 0x7777, 0x7111 - - .align 2 -gUnknown_0832C334:: @ 832C334 - obj_tiles gBattleInterface_BallStatusBarGfx, 0x0200, 0xd70c - - .align 2 -gUnknown_0832C33C:: @ 832C33C - obj_pal gBattleInterface_BallStatusBarPal, 0xd710 - - .align 2 -gUnknown_0832C344:: @ 832C344 - obj_pal gBattleInterface_BallDisplayPal, 0xd712 - - .align 2 -gUnknown_0832C34C:: @ 832C34C - obj_tiles gBattleInterface_BallDisplayGfx, 0x0080, 0xd714 - - .align 2 -gUnknown_0832C354:: @ 832C354 - .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00 - - .align 2 -gUnknown_0832C35C:: @ 832C35C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00 - - .align 2 -gUnknown_0832C364:: @ 832C364 - spr_template 0xd70c, 0xd710, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8074078 - - .align 2 -gUnknown_0832C37C:: @ 832C37C - spr_template 0xd70c, 0xd710, gUnknown_0832C138, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8074078 - - .align 2 -gUnknown_0832C394:: @ 832C394 - spr_template 0xd714, 0xd712, gUnknown_0832C35C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80740C4 - - .align 2 -gUnknown_0832C3AC:: @ 832C3AC - spr_template 0xd714, 0xd712, gUnknown_0832C35C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80740C4 - - .align 2 -gUnknown_0832C3C4:: @ 832C3C4 - .byte 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x02, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_0832C3D8:: @ 832C3D8 - .byte 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .align 2 -gBattleInterfaceStatusIcons_DynPals:: @ 832C3EC - .byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72 - .byte 0xdc, 0x29, 0x00, 0x00 - - .align 2 -gUnknown_0832C3F8:: @ 832C3F8 - .byte 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00 diff --git a/include/battle.h b/include/battle.h index ae7fa3ce40..719db0fa31 100644 --- a/include/battle.h +++ b/include/battle.h @@ -919,9 +919,9 @@ struct BattleHealthboxInfo struct BattleBarInfo { u8 healthboxSpriteId; - u32 maxValue; - u32 currentValue; - bool32 isDoubleBattle; + s32 maxValue; + s32 currentValue; + s32 field_C; s32 field_10; }; diff --git a/include/battle_interface.h b/include/battle_interface.h index 93387cae0d..016a6e5c40 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -19,10 +19,20 @@ enum u8 CreateBankHealthboxSprites(u8 bank); u8 CreateSafariPlayerHealthboxSprites(void); -void SetBankHealthboxSpritePos(u8 bank); -void SetHealthboxSpriteVisible(u8 healthboxSpriteId); +void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); -void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); +void SetHealthboxSpriteVisible(u8 healthboxSpriteId); +void DestoryHealthboxSprite(u8 healthboxSpriteId); void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); +void UpdateOamPriorityInAllHealthboxes(u8 priority); +void SetBankHealthboxSpritePos(u8 bank); +void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +void SwapHpBarsWithHpText(void); +u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); +void sub_8073C30(u8 taskId); +void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); +s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); +u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); +u8 GetHPBarLevel(s16 hp, s16 maxhp); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/ld_script.txt b/ld_script.txt index b9dc6290e3..86bd92c7c5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -80,7 +80,6 @@ SECTIONS { asm/daycare.o(.text); src/egg_hatch.o(.text); src/battle_interface.o(.text); - asm/battle_interface.o(.text); asm/smokescreen.o(.text); asm/pokeball.o(.text); src/load_save.o(.text); @@ -342,7 +341,6 @@ SECTIONS { src/egg_hatch.o(.rodata); data/battle_7.o(.rodata); src/battle_interface.o(.rodata); - data/battle_interface.o(.rodata); data/pokeball.o(.rodata); data/trade.o(.rodata); data/berry_blender.o(.rodata); diff --git a/src/battle_interface.c b/src/battle_interface.c index 27a82d49d2..7d176a9af1 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1,12 +1,12 @@ #include "global.h" #include "battle.h" #include "pokemon.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "sprite.h" #include "window.h" #include "string_util.h" #include "text.h" -#include "battle_controllers.h" #include "sound.h" #include "songs.h" #include "decompress.h" @@ -20,6 +20,21 @@ #include "international_string_util.h" #include "safari_zone.h" +enum +{ + HEALTH_BAR, + EXP_BAR +}; + +struct TestingBar +{ + s32 maxValue; + s32 currValue; + s32 field_8; + u32 unkC_0:5; + u32 unk10; +}; + extern bool8 IsDoubleBattle(void); extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; @@ -27,31 +42,62 @@ extern u8 gNoOfAllBanks; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern const u8 * const gNatureNamePointers[]; +extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; + +// strings extern const u8 gText_Slash[]; +extern const u8 gText_HighlightDarkGrey[]; +extern const u8 gText_DynColor2[]; +extern const u8 gText_DynColor2Male[]; +extern const u8 gText_DynColor1Female[]; +extern const u8 gText_SafariBalls[]; +extern const u8 gText_SafariBallLeft[]; + +// graphics +extern const u8 gBattleInterface_BallStatusBarGfx[]; +extern const u8 gBattleInterface_BallDisplayGfx[]; +extern const u16 gBattleInterface_BallStatusBarPal[]; +extern const u16 gBattleInterface_BallDisplayPal[]; +extern const u8 gHealthboxElementsGfxTable[][32]; + +extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str); // menu.h +extern void LoadBattleBarGfx(u8 arg0); // this file's functions -void sub_8072924(struct Sprite *sprite); -void sub_80728B4(struct Sprite *sprite); -const u32 *GetHealthboxElementGfxPtr(u8 elementId); -u32 AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); -void sub_8075198(void *objVram, u32 windowTileData, u32 arg2); -void sub_80751E4(void *objVram, u32 windowTileData, u32 arg2); -void RemoveWindowOnHealthbox(u32 windowId); -void sub_8075170(void *dest, u32 arg1, u32 arg2); -void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); -void sub_807513C(void *dest, u32 arg1, u32 arg2); -void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); -void sub_80741C8(struct Sprite *sprite); -void sub_8073E08(u8 taskId); -void sub_8073F98(u8 taskId); -void sub_8073E64(u8 taskId); -void sub_8074158(struct Sprite *sprite); -void sub_8074090(struct Sprite *sprite); -u8 GetStatusIconForBankId(u8 statusElementId, u8 bank); -void sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); + +static const u8 *GetHealthboxElementGfxPtr(u8 elementId); +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); + +static void RemoveWindowOnHealthbox(u32 windowId); +static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); + +static void sub_8075198(void *dest, u8 *windowTileData, s32 arg2); +static void sub_80751E4(void *dest, u8 *windowTileData, u32 arg2); +static void sub_8075170(void *dest, u8 *windowTileData, u32 arg2); +static void sub_807513C(void *dest, u32 arg1, u32 arg2); + +static void sub_8073E08(u8 taskId); +static void sub_8073F98(u8 taskId); +static void sub_8073E64(u8 taskId); + +static void sub_8072924(struct Sprite *sprite); +static void sub_80728B4(struct Sprite *sprite); +static void sub_8074158(struct Sprite *sprite); +static void sub_8074090(struct Sprite *sprite); +static void sub_8074078(struct Sprite *sprite); +static void sub_80740C4(struct Sprite *sprite); +static void sub_80741C8(struct Sprite *sprite); + +static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank); +static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5); +static u8 GetScaledExpFraction(s32 currValue, s32 arg1, s32 maxValue, u8 scale); +static void sub_8074B9C(u8 bank, u8 whichBar); +static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4, u8 arg5); +static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2); // const rom data -const struct OamData gUnknown_0832C138 = +static const struct OamData gUnknown_0832C138 = { .y = 0, .affineMode = 0, @@ -68,8 +114,6 @@ const struct OamData gUnknown_0832C138 = .affineParam = 0, }; -extern const struct SubspriteTable gUnknown_0832C28C[2]; - static const struct SpriteTemplate gUnknown_0832C140[2] = { { @@ -125,7 +169,7 @@ static const struct SpriteTemplate gUnknown_0832C1A0 = .callback = SpriteCallbackDummy }; -const struct OamData gUnknown_0832C1B8 = +static const struct OamData gUnknown_0832C1B8 = { .y = 0, .affineMode = 0, @@ -182,26 +226,247 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = } }; -extern const u8 gUnknown_0832C3C4[0x14]; -extern const u8 gUnknown_0832C3D8[0x14]; -extern const u32 gHealthboxElementsGfxTable[][8]; -extern const struct CompressedSpriteSheet gUnknown_0832C334; -extern const struct SpriteSheet gUnknown_0832C34C; -extern const struct SpritePalette gUnknown_0832C33C; -extern const struct SpritePalette gUnknown_0832C344; -extern const struct SpriteTemplate gUnknown_0832C364[2]; -extern const struct SpriteTemplate gUnknown_0832C394[2]; -extern const struct SubspriteTable gUnknown_0832C2C4; -extern const struct SubspriteTable gUnknown_0832C2CC; -extern const u16 gBattleInterfaceStatusIcons_DynPals[]; +static const struct Subsprite gUnknown_0832C220[] = +{ + {240, 0, 1, 3, 0, 1}, + {48, 0, 0, 2, 32, 1}, + {240, 32, 1, 1, 48, 1}, + {16, 32, 1, 1, 52, 1}, + {48, 32, 1, 1, 56, 1} +}; -u8 sub_8072304(void) +static const struct Subsprite gUnknown_0832C234[] = +{ + {240, 0, 1, 3, 64, 1}, + {48, 0, 0, 2, 96, 1}, + {240, 32, 1, 1, 112, 1}, + {16, 32, 1, 1, 116, 1}, + {48, 32, 1, 1, 120, 1} +}; + +static const struct Subsprite gUnknown_0832C248[] = +{ + {240, 0, 1, 3, 0, 1}, + {48, 0, 0, 2, 32, 1} +}; + +static const struct Subsprite gUnknown_0832C250[] = +{ + {240, 0, 1, 3, 0, 1}, + {48, 0, 0, 2, 32, 1} +}; + +static const struct Subsprite gUnknown_0832C258[] = +{ + {240, 0, 1, 1, 0, 1}, + {16, 0, 1, 1, 4, 1} +}; + +static const struct Subsprite gUnknown_0832C260[] = +{ + {240, 0, 1, 1, 0, 1}, + {16, 0, 1, 1, 4, 1}, + {224, 0, 0, 0, 8, 1} +}; + +static const struct SubspriteTable gUnknown_0832C26C[] = +{ + {ARRAY_COUNT(gUnknown_0832C220), gUnknown_0832C220}, + {ARRAY_COUNT(gUnknown_0832C248), gUnknown_0832C248}, + {ARRAY_COUNT(gUnknown_0832C234), gUnknown_0832C234}, + {ARRAY_COUNT(gUnknown_0832C250), gUnknown_0832C250} +}; + +static const struct SubspriteTable gUnknown_0832C28C[] = +{ + {ARRAY_COUNT(gUnknown_0832C258), gUnknown_0832C258}, + {ARRAY_COUNT(gUnknown_0832C260), gUnknown_0832C260} +}; + +static const struct Subsprite gUnknown_0832C29C[] = +{ + {160, 0, 1, 1, 0, 1}, + {192, 0, 1, 1, 4, 1}, + {224, 0, 1, 1, 8, 1}, + {0, 0, 1, 1, 12, 1} +}; + +static const struct Subsprite gUnknown_0832C2AC[] = +{ + {160, 0, 1, 1, 0, 1}, + {192, 0, 1, 1, 4, 1}, + {224, 0, 1, 1, 8, 1}, + {0, 0, 1, 1, 8, 1}, + {32, 0, 1, 1, 8, 1}, + {64, 0, 1, 1, 12, 1} +}; + +static const struct SubspriteTable gUnknown_0832C2C4[] = +{ + {ARRAY_COUNT(gUnknown_0832C29C), gUnknown_0832C29C} +}; + +static const struct SubspriteTable gUnknown_0832C2CC[] = +{ + {ARRAY_COUNT(gUnknown_0832C2AC), gUnknown_0832C2AC} +}; + +// unused unknown data +static const u16 gUnknown_0832C2D4[] = +{ + 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222, + 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, + + 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222, + 0x7777, 0x7777, 0x7777, 0x7717, 0x1777, 0x7177, 0x7777, 0x7771, + + 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222, + 0x7777, 0x7777, 0x7777, 0x7111, 0x7777, 0x7171, 0x7777, 0x7111, +}; + +static const struct CompressedSpriteSheet gUnknown_0832C334 = +{ + gBattleInterface_BallStatusBarGfx, 0x200, 0xD70C +}; + +static const struct SpritePalette gUnknown_0832C33C = +{ + gBattleInterface_BallStatusBarPal, 0xD710 +}; + +static const struct SpritePalette gUnknown_0832C344 = +{ + gBattleInterface_BallDisplayPal, 0xD712 +}; + +static const struct SpriteSheet gUnknown_0832C34C = +{ + gBattleInterface_BallDisplayGfx, 0x80, 0xD714 +}; + +static const struct OamData gUnknown_0832C354 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct OamData gUnknown_0832C35C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteTemplate gUnknown_0832C364[2] = +{ + { + .tileTag = 0xd70c, + .paletteTag = 0xd710, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8074078 + }, + { + .tileTag = 0xd70c, + .paletteTag = 0xd710, + .oam = &gUnknown_0832C138, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8074078 + } +}; + +static const struct SpriteTemplate gUnknown_0832C394[2] = +{ + { + .tileTag = 0xd714, + .paletteTag = 0xd712, + .oam = &gUnknown_0832C35C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80740C4 + }, + { + .tileTag = 0xd714, + .paletteTag = 0xd712, + .oam = &gUnknown_0832C35C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80740C4 + } +}; + +// possibly text +static const u8 gUnknown_0832C3C4[] = +{ + 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; + +// possibly text +static const u8 gUnknown_0832C3D8[] = +{ + 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; + +enum +{ + PAL_STATUS_PSN, + PAL_STATUS_PAR, + PAL_STATUS_SLP, + PAL_STATUS_FRZ, + PAL_STATUS_BRN +}; + +static const u16 sStatusIconPalettes[] = +{ + 0x6198, // PAL_STATUS_PSN + 0xEF7, // PAL_STATUS_PAR + 0x4694, // PAL_STATUS_SLP + 0x72D1, // PAL_STATUS_FRZ + 0x29DC // PAL_STATUS_BRN +}; + +static const struct WindowTemplate sHealthboxWindowTemplate = {0, 0, 0, 8, 2, 0, 0}; // width = 8, height = 2 + +// code + +static s32 DummiedOutFunction(s16 unused1, s16 unused2, s32 unused3) { return 9; } #ifdef NONMATCHING -void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) +static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) { s8 i, j; s8 array[4]; @@ -276,7 +541,7 @@ void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) #else __attribute__((naked)) -void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) +static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -613,12 +878,12 @@ u8 CreateSafariPlayerHealthboxSprites(void) return healthboxSpriteId_1; } -const u32 *GetHealthboxElementGfxPtr(u8 elementId) +static const u8 *GetHealthboxElementGfxPtr(u8 elementId) { return gHealthboxElementsGfxTable[elementId]; } -void sub_80728B4(struct Sprite *sprite) +static void sub_80728B4(struct Sprite *sprite) { u8 var = sprite->data5; @@ -643,7 +908,7 @@ void sub_80728B4(struct Sprite *sprite) sprite->pos2.y = gSprites[var].pos2.y; } -void sub_8072924(struct Sprite *sprite) +static void sub_8072924(struct Sprite *sprite) { u8 otherSpriteId = sprite->data5; @@ -654,12 +919,12 @@ void sub_8072924(struct Sprite *sprite) sprite->pos2.y = gSprites[otherSpriteId].pos2.y; } -void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, u32 maxVal, u32 currVal, bool32 isDoubleBattle) +void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C) { gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId = healthboxSpriteId; gBattleSpritesDataPtr->battleBars[bank].maxValue = maxVal; gBattleSpritesDataPtr->battleBars[bank].currentValue = currVal; - gBattleSpritesDataPtr->battleBars[bank].isDoubleBattle = isDoubleBattle; + gBattleSpritesDataPtr->battleBars[bank].field_C = field_C; gBattleSpritesDataPtr->battleBars[bank].field_10 = -32768; } @@ -744,9 +1009,10 @@ void SetBankHealthboxSpritePos(u8 bank) UpdateSpritePos(gHealthBoxesIds[bank], x, y); } -void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) +static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) { - u32 windowId, windowTileData, spriteTileNum; + u32 windowId, spriteTileNum; + u8 *windowTileData; u8 text[16]; u32 xPos, var1; void *objVram; @@ -786,7 +1052,8 @@ void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) { - u32 windowId, windowTileData, spriteTileNum; + u32 windowId, spriteTileNum; + u8 *windowTileData; u8 text[32]; void *objVram; @@ -861,9 +1128,10 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) } } -void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) +static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) { - u32 windowId, windowTileData, spriteTileNum; + u32 windowId, spriteTileNum; + u8 *windowTileData; u8 text[32]; void *objVram; @@ -955,7 +1223,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC } } -void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) +static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) { u8 text[20]; s32 j, var2; @@ -1131,7 +1399,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar LoadSpritePalette(&gUnknown_0832C344); barSpriteId = CreateSprite(&gUnknown_0832C364[isOpponent], bar_X, bar_Y, 10); - SetSubspriteTables(&gSprites[barSpriteId], &gUnknown_0832C2C4); + SetSubspriteTables(&gSprites[barSpriteId], gUnknown_0832C2C4); gSprites[barSpriteId].pos2.x = bar_pos2_X; gSprites[barSpriteId].data0 = bar_data0; @@ -1339,7 +1607,7 @@ void sub_8073C30(u8 taskId) gSprites[r10].data0 /= 2; gSprites[r10].data1 = 0; gSprites[r10].callback = sub_8074090; - SetSubspriteTables(&gSprites[r10], &gUnknown_0832C2CC); + SetSubspriteTables(&gSprites[r10], gUnknown_0832C2CC); gTasks[taskId].func = sub_8073E08; } else @@ -1348,7 +1616,7 @@ void sub_8073C30(u8 taskId) } } -void sub_8073E08(u8 taskId) +static void sub_8073E08(u8 taskId) { u16 temp = gTasks[taskId].data[11]++; @@ -1364,7 +1632,7 @@ void sub_8073E08(u8 taskId) gTasks[taskId].func = sub_8073E64; } -void sub_8073E64(u8 taskId) +static void sub_8073E64(u8 taskId) { u8 sp[6]; s32 i; @@ -1404,7 +1672,7 @@ void sub_8073E64(u8 taskId) } } -void sub_8073F98(u8 taskId) +static void sub_8073F98(u8 taskId) { u8 sp[6]; s32 i; @@ -1437,13 +1705,13 @@ void sub_8073F98(u8 taskId) } } -void sub_8074078(struct Sprite *sprite) +static void sub_8074078(struct Sprite *sprite) { if (sprite->pos2.x != 0) sprite->pos2.x += sprite->data0; } -void sub_8074090(struct Sprite *sprite) +static void sub_8074090(struct Sprite *sprite) { sprite->data1 += 32; if (sprite->data0 > 0) @@ -1453,7 +1721,7 @@ void sub_8074090(struct Sprite *sprite) sprite->data1 &= 0xF; } -void sub_80740C4(struct Sprite *sprite) +static void sub_80740C4(struct Sprite *sprite) { u8 var1; u16 var2; @@ -1493,7 +1761,7 @@ void sub_80740C4(struct Sprite *sprite) } } -void sub_8074158(struct Sprite *sprite) +static void sub_8074158(struct Sprite *sprite) { u8 var1; u16 var2; @@ -1519,7 +1787,7 @@ void sub_8074158(struct Sprite *sprite) } } -void sub_80741C8(struct Sprite *sprite) +static void sub_80741C8(struct Sprite *sprite) { u8 barSpriteId = sprite->data0; @@ -1527,18 +1795,13 @@ void sub_80741C8(struct Sprite *sprite) sprite->pos2.y = gSprites[barSpriteId].pos2.y; } -extern const u8 gText_HighlightDarkGrey[]; -extern const u8 gText_DynColor2[]; -extern const u8 gText_DynColor2Male[]; -extern const u8 gText_DynColor1Female[]; -extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; - -void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) +static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) { u8 nickname[POKEMON_NAME_LENGTH + 1]; void *ptr; const u8 *genderTxt; - u32 windowId, windowTileData, spriteTileNum; + u32 windowId, spriteTileNum; + u8 *windowTileData; u16 species; u8 gender; @@ -1591,7 +1854,7 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) RemoveWindowOnHealthbox(windowId); } -void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) +static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) { u8 bank, healthboxSpriteId_2; @@ -1614,12 +1877,12 @@ void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32); } -void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) +static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) { s32 i; u8 bank, healthboxSpriteId_2; u32 status, pltAdder; - const u32 *statusGfxPtr; + const u8 *statusGfxPtr; s16 tileNumAdder; u8 statusPalId; @@ -1642,27 +1905,27 @@ void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) if (status & STATUS_SLEEP) { statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1B, bank)); - statusPalId = 2; + statusPalId = PAL_STATUS_SLP; } else if (status & STATUS_PSN_ANY) { statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x15, bank)); - statusPalId = 0; + statusPalId = PAL_STATUS_PSN; } else if (status & STATUS_BURN) { statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x21, bank)); - statusPalId = 4; + statusPalId = PAL_STATUS_BRN; } else if (status & STATUS_FREEZE) { statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1E, bank)); - statusPalId = 3; + statusPalId = PAL_STATUS_FRZ; } else if (status & STATUS_PARALYSIS) { statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x18, bank)); - statusPalId = 1; + statusPalId = PAL_STATUS_PAR; } else { @@ -1681,7 +1944,7 @@ void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16; pltAdder += bank + 12; - FillPalette(gBattleInterfaceStatusIcons_DynPals[statusPalId], pltAdder + 0x100, 2); + FillPalette(sStatusIconPalettes[statusPalId], pltAdder + 0x100, 2); CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2); CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96); if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT) @@ -1695,7 +1958,7 @@ void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE); } -u8 GetStatusIconForBankId(u8 statusElementId, u8 bank) +static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank) { u8 ret = statusElementId; @@ -1755,12 +2018,10 @@ u8 GetStatusIconForBankId(u8 statusElementId, u8 bank) return ret; } -extern const u8 gText_SafariBalls[]; -extern const u8 gText_SafariBallLeft[]; - -void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId) +static void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId) { - u32 windowId, windowTileData, spriteTileNum; + u32 windowId, spriteTileNum; + u8 *windowTileData; windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId); spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; @@ -1769,11 +2030,12 @@ void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId) RemoveWindowOnHealthbox(windowId); } -void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId) +static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId) { u8 text[16]; u8 *txtPtr; - u32 windowId, windowTileData, spriteTileNum; + u32 windowId, spriteTileNum; + u8 *windowTileData; txtPtr = StringCopy(text, gText_SafariBallLeft); ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2); @@ -1785,11 +2047,9 @@ void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId) RemoveWindowOnHealthbox(windowId); } -extern void LoadBattleBarGfx(u8 arg0); - void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId) { - u32 maxHp, currHp; + s32 maxHp, currHp; u8 bank = gSprites[healthboxSpriteId].data6; if (elementId == HEALTHBOX_ALL && !IsDoubleBattle()) @@ -1810,14 +2070,15 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem LoadBattleBarGfx(0); maxHp = GetMonData(mon, MON_DATA_MAX_HP); currHp = GetMonData(mon, MON_DATA_HP); - SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, FALSE); - sub_8074AA0(bank, healthboxSpriteId, 0, 0); + SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, 0); + sub_8074AA0(bank, healthboxSpriteId, HEALTH_BAR, 0); } isDoubles = IsDoubleBattle(); if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL)) { u16 species; - u32 exp, currLevelExp, currExpBarValue, maxExpBarValue; + u32 exp, currLevelExp; + s32 currExpBarValue, maxExpBarValue; u8 level; LoadBattleBarGfx(3); @@ -1828,7 +2089,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem currExpBarValue = exp - currLevelExp; maxExpBarValue = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLevelExp; SetBattleBarStruct(bank, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles); - sub_8074AA0(bank, healthboxSpriteId, 1, 0); + sub_8074AA0(bank, healthboxSpriteId, EXP_BAR, 0); } if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL) UpdateNickInHealthbox(healthboxSpriteId, mon); @@ -1848,8 +2109,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem LoadBattleBarGfx(0); maxHp = GetMonData(mon, MON_DATA_MAX_HP); currHp = GetMonData(mon, MON_DATA_HP); - SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, FALSE); - sub_8074AA0(bank, healthboxSpriteId, 0, 0); + SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, 0); + sub_8074AA0(bank, healthboxSpriteId, HEALTH_BAR, 0); } if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL) UpdateNickInHealthbox(healthboxSpriteId, mon); @@ -1857,3 +2118,374 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem UpdateStatusIconInHealthbox(healthboxSpriteId); } } + +s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3) +{ + s32 var; + + if (whichBar == HEALTH_BAR) // health bar + { + var = sub_8074DB8(gBattleSpritesDataPtr->battleBars[bank].maxValue, + gBattleSpritesDataPtr->battleBars[bank].currentValue, + gBattleSpritesDataPtr->battleBars[bank].field_C, + &gBattleSpritesDataPtr->battleBars[bank].field_10, + 6, 1); + } + else // exp bar + { + u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[bank].currentValue, + gBattleSpritesDataPtr->battleBars[bank].field_C, + gBattleSpritesDataPtr->battleBars[bank].maxValue, 8); + if (expFraction == 0) + expFraction = 1; + expFraction = abs(gBattleSpritesDataPtr->battleBars[bank].field_C / expFraction); + + var = sub_8074DB8(gBattleSpritesDataPtr->battleBars[bank].maxValue, + gBattleSpritesDataPtr->battleBars[bank].currentValue, + gBattleSpritesDataPtr->battleBars[bank].field_C, + &gBattleSpritesDataPtr->battleBars[bank].field_10, + 8, expFraction); + } + + if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)) + sub_8074B9C(bank, whichBar); + + if (var == -1) + gBattleSpritesDataPtr->battleBars[bank].field_10 = 0; + + return var; +} + +static void sub_8074B9C(u8 bank, u8 whichBar) +{ + u8 array[7]; + u8 subRet, level; + u8 barElementId; + u8 i; + + switch (whichBar) + { + case HEALTH_BAR: + subRet = sub_8074E8C(gBattleSpritesDataPtr->battleBars[bank].maxValue, + gBattleSpritesDataPtr->battleBars[bank].currentValue, + gBattleSpritesDataPtr->battleBars[bank].field_C, + &gBattleSpritesDataPtr->battleBars[bank].field_10, + array, 6); + barElementId = 3; + if (subRet <= 0x18) + { + barElementId = 0x38; + if (subRet > 9) + barElementId = 0x2F; + } + for (i = 0; i < 6; i++) + { + u8 healthboxSpriteId_2 = gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].data5; + if (i < 2) + CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32, + (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 2 + i) * 32), 32); + else + CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32, + (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthboxSpriteId_2].oam.tileNum) * 32), 32); + } + break; + case EXP_BAR: + sub_8074E8C(gBattleSpritesDataPtr->battleBars[bank].maxValue, + gBattleSpritesDataPtr->battleBars[bank].currentValue, + gBattleSpritesDataPtr->battleBars[bank].field_C, + &gBattleSpritesDataPtr->battleBars[bank].field_10, + array, 8); + level = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_LEVEL); + if (level == MAX_MON_LEVEL) + { + for (i = 0; i < 8; i++) + array[i] = 0; + } + for (i = 0; i < 8; i++) + { + if (i < 4) + CpuCopy32(GetHealthboxElementGfxPtr(0xC) + array[i] * 32, + (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32), 32); + else + CpuCopy32(GetHealthboxElementGfxPtr(0xC) + array[i] * 32, + (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].oam.tileNum) * 32), 32); + } + break; + } +} + +static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5) +{ + s32 r6; + s32 ret; + arg4 <<= 3; + + if (*arg3 == -32768) + { + if (maxValue < arg4) + *arg3 = currValue << 8; + else + *arg3 = currValue; + } + + currValue -= arg2; + if (currValue < 0) + currValue = 0; + else if (currValue > maxValue) + currValue = maxValue; + + if (maxValue < arg4) + { + s32 var = *arg3 >> 8; + + r6 = *arg3; + if (currValue == var && (r6 & 0xFF) == 0) + return -1; + } + else + { + r6 = *arg3; + if (currValue == r6) + return -1; + } + + if (maxValue < arg4) + { + s32 var = (maxValue << 8) / arg4; + + if (arg2 < 0) + { + *arg3 = r6 + var; + ret = *arg3 >> 8; + if (ret >= currValue) + { + *arg3 = currValue << 8; + ret = currValue; + } + } + else + { + *arg3 = r6 - var; + ret = *arg3 >> 8; + if ((*arg3 & 0xFF) > 0) + ret++; + if (ret <= currValue) + { + *arg3 = currValue << 8; + ret = currValue; + } + } + } + else + { + if (arg2 < 0) + { + *arg3 += arg5; + if (*arg3 > currValue) + *arg3 = currValue; + ret = *arg3; + } + else + { + *arg3 -= arg5; + if (*arg3 < currValue) + *arg3 = currValue; + ret = *arg3; + } + } + + return ret; +} + +static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4, u8 arg5) +{ + s32 r5 = currValue - arg2; + u8 ret; + u8 i; + u8 r2; + + if (r5 < 0) + r5 = 0; + else if (r5 > maxValue) + r5 = maxValue; + + ret = arg5 << 3; + + for (i = 0; i < arg5; i++) + arg4[i] = 0; + + if (maxValue < ret) + r2 = (*arg3 * ret / maxValue) >> 8; + else + r2 = *arg3 * ret / maxValue; + + ret = r2; + + if (ret == 0 && r5 > 0) + { + arg4[0] = 1; + ret = 1; + } + else + { + for (i = 0; i < arg5; i++) + { + if (r2 >= 8) + { + arg4[i] = 8; + } + else + { + arg4[i] = r2; + break; + } + r2 -= 8; + } + } + + return ret; +} + +static s16 sub_8074F28(struct TestingBar *barInfo, s32 *arg1, u16 *arg2, s32 arg3) +{ + s16 ret, var; + + ret = sub_8074DB8(barInfo->maxValue, + barInfo->currValue, + barInfo->field_8, + arg1, 6, 1); + sub_8074F88(barInfo, arg1, arg2); + + if (barInfo->maxValue < 0x30) + var = *arg1 >> 8; + else + var = *arg1; + + DummiedOutFunction(barInfo->maxValue, var, arg3); + + return ret; +} + +static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2) +{ + u8 sp8[6]; + u16 sp10[6]; + u8 i; + + sub_8074E8C(barInfo->maxValue, barInfo->currValue, + barInfo->field_8, arg1, sp8, 6); + + for (i = 0; i < 6; i++) + sp10[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + sp8[i]); + + CpuCopy16(sp10, arg2, sizeof(sp10)); +} + +static u8 GetScaledExpFraction(s32 currValue, s32 arg1, s32 maxValue, u8 scale) +{ + s32 r5, result; + s8 r4, r0; + + scale *= 8; + r5 = currValue - arg1; + + if (r5 < 0) + r5 = 0; + else if (r5 > maxValue) + r5 = maxValue; + + r4 = currValue * scale / maxValue; + r0 = r5 * scale / maxValue; + result = r4 - r0; + + return abs(result); +} + +u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale) +{ + u8 result = hp * scale / maxhp; + + if (result == 0 && hp > 0) + return 1; + + return result; +} + +u8 GetHPBarLevel(s16 hp, s16 maxhp) +{ + s32 result; + + if (hp == maxhp) + { + result = 4; + } + else + { + u8 fraction = GetScaledHPFraction(hp, maxhp, 48); + if (fraction > 24) + result = 3; + else if (fraction > 9) + result = 2; + else if (fraction > 0) + result = 1; + else + result = 0; + } + + return result; +} + +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId) +{ + u16 winId; + struct TextColor color; + struct WindowTemplate winTemplate = sHealthboxWindowTemplate; + + winId = AddWindow(&winTemplate); + FillWindowPixelBuffer(winId, (arg3 << 4) | (arg3)); + + color.fgColor = arg3; + color.bgColor = 1; + color.shadowColor = 3; + + AddTextPrinterParametrized2(winId, 0, x, y, 0, 0, &color, -1, str); + + *windowId = winId; + return (u8*)(GetWindowAttribute(winId, WINDOW_TILE_DATA)); +} + +static void RemoveWindowOnHealthbox(u32 windowId) +{ + RemoveWindow(windowId); +} + +static void sub_807513C(void *dest, u32 arg1, u32 arg2) +{ + CpuFill32(0x11111111 * arg1, dest, arg2 * 32); +} + +static void sub_8075170(void *dest, u8 *windowTileData, u32 arg2) +{ + CpuCopy32(windowTileData + 256, dest, arg2 * 32); +} + +static void sub_8075198(void *dest, u8 *windowTileData, s32 arg2) +{ + CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32); + + if (arg2 > 0) + { + do + { + CpuCopy32(windowTileData + 20, dest + 20, 12); + dest += 32, windowTileData+= 32; + arg2--; + } while (arg2 != 0); + } +} + +static void sub_80751E4(void *dest, u8 *windowTileData, u32 arg2) +{ + CpuCopy32(windowTileData, dest, arg2 * 32); + CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32); +} From 9ccc472b97b1a7f85703f813665cb4a30f7891b6 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 19 Oct 2017 18:25:48 +0200 Subject: [PATCH 160/182] label some functions --- asm/battle_7.s | 4 +- include/battle_interface.h | 16 +- src/battle_interface.c | 456 ++++++++++++++++++++++++------------- src/reshow_battle_screen.c | 4 +- 4 files changed, 322 insertions(+), 158 deletions(-) diff --git a/asm/battle_7.s b/asm/battle_7.s index 5925058d25..8a65dad35b 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -2048,7 +2048,7 @@ _0805E260: adds r0, r1, r0 ldrb r0, [r0] movs r1, 0 - bl nullsub_30 + bl DummyBattleInterfaceFunc b _0805E30E .pool _0805E288: @@ -2056,7 +2056,7 @@ _0805E288: adds r0, r1, r0 ldrb r0, [r0] movs r1, 0x1 - bl nullsub_30 + bl DummyBattleInterfaceFunc b _0805E30E .pool _0805E29C: diff --git a/include/battle_interface.h b/include/battle_interface.h index 016a6e5c40..dee8843747 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -1,6 +1,20 @@ #ifndef GUARD_BATTLE_INTERFACE_H #define GUARD_BATTLE_INTERFACE_H +#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF +#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700 +#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701 +#define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702 + +#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B + +#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C +#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714 + +#define TAG_HEALTHBOX_PAL 0xD6FF +#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710 +#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 + enum { HEALTHBOX_ALL, @@ -23,7 +37,7 @@ void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DestoryHealthboxSprite(u8 healthboxSpriteId); -void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); +void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority); void SetBankHealthboxSpritePos(u8 bank); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); diff --git a/src/battle_interface.c b/src/battle_interface.c index 7d176a9af1..a21e72bcff 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -26,6 +26,12 @@ enum EXP_BAR }; +enum +{ + HP_CURRENT, + HP_MAX +}; + struct TestingBar { s32 maxValue; @@ -35,7 +41,128 @@ struct TestingBar u32 unk10; }; -extern bool8 IsDoubleBattle(void); +enum +{ + HEALTHBOX_GFX_0, + HEALTHBOX_GFX_1, + HEALTHBOX_GFX_2, + HEALTHBOX_GFX_3, + HEALTHBOX_GFX_4, + HEALTHBOX_GFX_5, + HEALTHBOX_GFX_6, + HEALTHBOX_GFX_7, + HEALTHBOX_GFX_8, + HEALTHBOX_GFX_9, + HEALTHBOX_GFX_10, + HEALTHBOX_GFX_11, + HEALTHBOX_GFX_12, + HEALTHBOX_GFX_13, + HEALTHBOX_GFX_14, + HEALTHBOX_GFX_15, + HEALTHBOX_GFX_16, + HEALTHBOX_GFX_17, + HEALTHBOX_GFX_18, + HEALTHBOX_GFX_19, + HEALTHBOX_GFX_20, + HEALTHBOX_GFX_STATUS_PSN_BANK0, + HEALTHBOX_GFX_22, + HEALTHBOX_GFX_23, + HEALTHBOX_GFX_STATUS_PRZ_BANK0, + HEALTHBOX_GFX_25, + HEALTHBOX_GFX_26, + HEALTHBOX_GFX_STATUS_SLP_BANK0, + HEALTHBOX_GFX_28, + HEALTHBOX_GFX_29, + HEALTHBOX_GFX_STATUS_FRZ_BANK0, + HEALTHBOX_GFX_31, + HEALTHBOX_GFX_32, + HEALTHBOX_GFX_STATUS_BRN_BANK0, + HEALTHBOX_GFX_34, + HEALTHBOX_GFX_35, + HEALTHBOX_GFX_36, + HEALTHBOX_GFX_37, + HEALTHBOX_GFX_38, + HEALTHBOX_GFX_39, + HEALTHBOX_GFX_40, + HEALTHBOX_GFX_41, + HEALTHBOX_GFX_42, + HEALTHBOX_GFX_43, + HEALTHBOX_GFX_44, + HEALTHBOX_GFX_45, + HEALTHBOX_GFX_46, + HEALTHBOX_GFX_47, + HEALTHBOX_GFX_48, + HEALTHBOX_GFX_49, + HEALTHBOX_GFX_50, + HEALTHBOX_GFX_51, + HEALTHBOX_GFX_52, + HEALTHBOX_GFX_53, + HEALTHBOX_GFX_54, + HEALTHBOX_GFX_55, + HEALTHBOX_GFX_56, + HEALTHBOX_GFX_57, + HEALTHBOX_GFX_58, + HEALTHBOX_GFX_59, + HEALTHBOX_GFX_60, + HEALTHBOX_GFX_61, + HEALTHBOX_GFX_62, + HEALTHBOX_GFX_63, + HEALTHBOX_GFX_64, + HEALTHBOX_GFX_65, + HEALTHBOX_GFX_66, + HEALTHBOX_GFX_67, + HEALTHBOX_GFX_68, + HEALTHBOX_GFX_69, + HEALTHBOX_GFX_70, + HEALTHBOX_GFX_STATUS_PSN_BANK1, + HEALTHBOX_GFX_72, + HEALTHBOX_GFX_73, + HEALTHBOX_GFX_STATUS_PRZ_BANK1, + HEALTHBOX_GFX_75, + HEALTHBOX_GFX_76, + HEALTHBOX_GFX_STATUS_SLP_BANK1, + HEALTHBOX_GFX_78, + HEALTHBOX_GFX_79, + HEALTHBOX_GFX_STATUS_FRZ_BANK1, + HEALTHBOX_GFX_81, + HEALTHBOX_GFX_82, + HEALTHBOX_GFX_STATUS_BRN_BANK1, + HEALTHBOX_GFX_84, + HEALTHBOX_GFX_85, + HEALTHBOX_GFX_STATUS_PSN_BANK2, + HEALTHBOX_GFX_87, + HEALTHBOX_GFX_88, + HEALTHBOX_GFX_STATUS_PRZ_BANK2, + HEALTHBOX_GFX_90, + HEALTHBOX_GFX_91, + HEALTHBOX_GFX_STATUS_SLP_BANK2, + HEALTHBOX_GFX_93, + HEALTHBOX_GFX_94, + HEALTHBOX_GFX_STATUS_FRZ_BANK2, + HEALTHBOX_GFX_96, + HEALTHBOX_GFX_97, + HEALTHBOX_GFX_STATUS_BRN_BANK2, + HEALTHBOX_GFX_99, + HEALTHBOX_GFX_100, + HEALTHBOX_GFX_STATUS_PSN_BANK3, + HEALTHBOX_GFX_102, + HEALTHBOX_GFX_103, + HEALTHBOX_GFX_STATUS_PRZ_BANK3, + HEALTHBOX_GFX_105, + HEALTHBOX_GFX_106, + HEALTHBOX_GFX_STATUS_SLP_BANK3, + HEALTHBOX_GFX_108, + HEALTHBOX_GFX_109, + HEALTHBOX_GFX_STATUS_FRZ_BANK3, + HEALTHBOX_GFX_111, + HEALTHBOX_GFX_112, + HEALTHBOX_GFX_STATUS_BRN_BANK3, + HEALTHBOX_GFX_114, + HEALTHBOX_GFX_115, + HEALTHBOX_GFX_116, + HEALTHBOX_GFX_117, +}; + extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; extern u8 gNoOfAllBanks; @@ -60,6 +187,8 @@ extern const u16 gBattleInterface_BallStatusBarPal[]; extern const u16 gBattleInterface_BallDisplayPal[]; extern const u8 gHealthboxElementsGfxTable[][32]; +// functions +extern bool8 IsDoubleBattle(void); extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str); // menu.h extern void LoadBattleBarGfx(u8 arg0); @@ -85,9 +214,9 @@ static void sub_8072924(struct Sprite *sprite); static void sub_80728B4(struct Sprite *sprite); static void sub_8074158(struct Sprite *sprite); static void sub_8074090(struct Sprite *sprite); -static void sub_8074078(struct Sprite *sprite); -static void sub_80740C4(struct Sprite *sprite); -static void sub_80741C8(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBar(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite); static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank); static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5); @@ -114,11 +243,11 @@ static const struct OamData gUnknown_0832C138 = .affineParam = 0, }; -static const struct SpriteTemplate gUnknown_0832C140[2] = +static const struct SpriteTemplate sHealthboxPlayerSpriteTemplates[2] = { { - .tileTag = 0xD6FF, - .paletteTag = 0xD6FF, + .tileTag = TAG_HEALTHBOX_PLAYER1_TILE, + .paletteTag = TAG_HEALTHBOX_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, @@ -126,8 +255,8 @@ static const struct SpriteTemplate gUnknown_0832C140[2] = .callback = SpriteCallbackDummy }, { - .tileTag = 0xd700, - .paletteTag = 0xD6FF, + .tileTag = TAG_HEALTHBOX_PLAYER2_TILE, + .paletteTag = TAG_HEALTHBOX_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, @@ -136,11 +265,11 @@ static const struct SpriteTemplate gUnknown_0832C140[2] = } }; -static const struct SpriteTemplate gUnknown_0832C170[2] = +static const struct SpriteTemplate sHealthboxOpponentSpriteTemplates[2] = { { - .tileTag = 0xd701, - .paletteTag = 0xD6FF, + .tileTag = TAG_HEALTHBOX_OPPONENT1_TILE, + .paletteTag = TAG_HEALTHBOX_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, @@ -148,8 +277,8 @@ static const struct SpriteTemplate gUnknown_0832C170[2] = .callback = SpriteCallbackDummy }, { - .tileTag = 0xd702, - .paletteTag = 0xD6FF, + .tileTag = TAG_HEALTHBOX_OPPONENT2_TILE, + .paletteTag = TAG_HEALTHBOX_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, @@ -158,10 +287,10 @@ static const struct SpriteTemplate gUnknown_0832C170[2] = } }; -static const struct SpriteTemplate gUnknown_0832C1A0 = +static const struct SpriteTemplate sHealthboxSafariSpriteTemplate = { - .tileTag = 0xd70b, - .paletteTag = 0xd6ff, + .tileTag = TAG_HEALTHBOX_SAFARI_TILE, + .paletteTag = TAG_HEALTHBOX_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, @@ -226,7 +355,7 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = } }; -static const struct Subsprite gUnknown_0832C220[] = +static const struct Subsprite sUnknown_0832C220[] = { {240, 0, 1, 3, 0, 1}, {48, 0, 0, 2, 32, 1}, @@ -235,7 +364,7 @@ static const struct Subsprite gUnknown_0832C220[] = {48, 32, 1, 1, 56, 1} }; -static const struct Subsprite gUnknown_0832C234[] = +static const struct Subsprite sUnknown_0832C234[] = { {240, 0, 1, 3, 64, 1}, {48, 0, 0, 2, 96, 1}, @@ -244,46 +373,47 @@ static const struct Subsprite gUnknown_0832C234[] = {48, 32, 1, 1, 120, 1} }; -static const struct Subsprite gUnknown_0832C248[] = +static const struct Subsprite sUnknown_0832C248[] = { {240, 0, 1, 3, 0, 1}, {48, 0, 0, 2, 32, 1} }; -static const struct Subsprite gUnknown_0832C250[] = +static const struct Subsprite sUnknown_0832C250[] = { {240, 0, 1, 3, 0, 1}, {48, 0, 0, 2, 32, 1} }; -static const struct Subsprite gUnknown_0832C258[] = +static const struct Subsprite sUnknown_0832C258[] = { {240, 0, 1, 1, 0, 1}, {16, 0, 1, 1, 4, 1} }; -static const struct Subsprite gUnknown_0832C260[] = +static const struct Subsprite sUnknown_0832C260[] = { {240, 0, 1, 1, 0, 1}, {16, 0, 1, 1, 4, 1}, {224, 0, 0, 0, 8, 1} }; -static const struct SubspriteTable gUnknown_0832C26C[] = +// unused subsprite table +static const struct SubspriteTable sUnknown_0832C26C[] = { - {ARRAY_COUNT(gUnknown_0832C220), gUnknown_0832C220}, - {ARRAY_COUNT(gUnknown_0832C248), gUnknown_0832C248}, - {ARRAY_COUNT(gUnknown_0832C234), gUnknown_0832C234}, - {ARRAY_COUNT(gUnknown_0832C250), gUnknown_0832C250} + {ARRAY_COUNT(sUnknown_0832C220), sUnknown_0832C220}, + {ARRAY_COUNT(sUnknown_0832C248), sUnknown_0832C248}, + {ARRAY_COUNT(sUnknown_0832C234), sUnknown_0832C234}, + {ARRAY_COUNT(sUnknown_0832C250), sUnknown_0832C250} }; -static const struct SubspriteTable gUnknown_0832C28C[] = +static const struct SubspriteTable sUnknown_0832C28C[] = { - {ARRAY_COUNT(gUnknown_0832C258), gUnknown_0832C258}, - {ARRAY_COUNT(gUnknown_0832C260), gUnknown_0832C260} + {ARRAY_COUNT(sUnknown_0832C258), sUnknown_0832C258}, + {ARRAY_COUNT(sUnknown_0832C260), sUnknown_0832C260} }; -static const struct Subsprite gUnknown_0832C29C[] = +static const struct Subsprite sStatusSummaryBar_Subsprites_0[] = { {160, 0, 1, 1, 0, 1}, {192, 0, 1, 1, 4, 1}, @@ -301,9 +431,9 @@ static const struct Subsprite gUnknown_0832C2AC[] = {64, 0, 1, 1, 12, 1} }; -static const struct SubspriteTable gUnknown_0832C2C4[] = +static const struct SubspriteTable sStatusSummaryBar_SubspriteTable[] = { - {ARRAY_COUNT(gUnknown_0832C29C), gUnknown_0832C29C} + {ARRAY_COUNT(sStatusSummaryBar_Subsprites_0), sStatusSummaryBar_Subsprites_0} }; static const struct SubspriteTable gUnknown_0832C2CC[] = @@ -324,27 +454,28 @@ static const u16 gUnknown_0832C2D4[] = 0x7777, 0x7777, 0x7777, 0x7111, 0x7777, 0x7171, 0x7777, 0x7111, }; -static const struct CompressedSpriteSheet gUnknown_0832C334 = +static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheet = { - gBattleInterface_BallStatusBarGfx, 0x200, 0xD70C + gBattleInterface_BallStatusBarGfx, 0x200, TAG_STATUS_SUMMARY_BAR_TILE }; -static const struct SpritePalette gUnknown_0832C33C = +static const struct SpritePalette sStatusSummaryBarSpritePal = { - gBattleInterface_BallStatusBarPal, 0xD710 + gBattleInterface_BallStatusBarPal, TAG_STATUS_SUMMARY_BAR_PAL }; -static const struct SpritePalette gUnknown_0832C344 = +static const struct SpritePalette sStatusSummaryBallsSpritePal = { - gBattleInterface_BallDisplayPal, 0xD712 + gBattleInterface_BallDisplayPal, TAG_STATUS_SUMMARY_BALLS_PAL }; -static const struct SpriteSheet gUnknown_0832C34C = +static const struct SpriteSheet sStatusSummaryBallsSpriteSheet = { - gBattleInterface_BallDisplayGfx, 0x80, 0xD714 + gBattleInterface_BallDisplayGfx, 0x80, TAG_STATUS_SUMMARY_BALLS_TILE }; -static const struct OamData gUnknown_0832C354 = +// unused oam data +static const struct OamData sUnknown_0832C354 = { .y = 0, .affineMode = 0, @@ -361,7 +492,7 @@ static const struct OamData gUnknown_0832C354 = .affineParam = 0, }; -static const struct OamData gUnknown_0832C35C = +static const struct OamData sOamData_StatusSummayBalls = { .y = 0, .affineMode = 0, @@ -378,47 +509,47 @@ static const struct OamData gUnknown_0832C35C = .affineParam = 0, }; -static const struct SpriteTemplate gUnknown_0832C364[2] = +static const struct SpriteTemplate sStatusSummaryBarSpriteTemplates[2] = { { - .tileTag = 0xd70c, - .paletteTag = 0xd710, + .tileTag = TAG_STATUS_SUMMARY_BAR_TILE, + .paletteTag = TAG_STATUS_SUMMARY_BAR_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8074078 + .callback = SpriteCB_StatusSummaryBar }, { - .tileTag = 0xd70c, - .paletteTag = 0xd710, + .tileTag = TAG_STATUS_SUMMARY_BAR_TILE, + .paletteTag = TAG_STATUS_SUMMARY_BAR_PAL, .oam = &gUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8074078 + .callback = SpriteCB_StatusSummaryBar } }; -static const struct SpriteTemplate gUnknown_0832C394[2] = +static const struct SpriteTemplate sStatusSummaryBallsSpriteTemplates[2] = { { - .tileTag = 0xd714, - .paletteTag = 0xd712, - .oam = &gUnknown_0832C35C, + .tileTag = TAG_STATUS_SUMMARY_BALLS_TILE, + .paletteTag = TAG_STATUS_SUMMARY_BALLS_PAL, + .oam = &sOamData_StatusSummayBalls, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80740C4 + .callback = SpriteCB_StatusSummaryBallsOnBattleStart }, { - .tileTag = 0xd714, - .paletteTag = 0xd712, - .oam = &gUnknown_0832C35C, + .tileTag = TAG_STATUS_SUMMARY_BALLS_TILE, + .paletteTag = TAG_STATUS_SUMMARY_BALLS_PAL, + .oam = &sOamData_StatusSummayBalls, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80740C4 + .callback = SpriteCB_StatusSummaryBallsOnBattleStart } }; @@ -469,57 +600,66 @@ static s32 DummiedOutFunction(s16 unused1, s16 unused2, s32 unused3) static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) { s8 i, j; - s8 array[4]; + u8 array[4]; + u8 *arrayPtr; + s32 r9, vaaa; for (i = 0; i < 4; i++) array[i] = 0; i = 3; + r9 = -1; + arrayPtr = array; while (1) { - if (arg0 < 0) + if (arg0 > 0) + { + array[i] = arg0 % 10; + arg0 = arg0 / 10; + i--; + } + else + { break; - - array[i] = arg0 % 10; - arg0 /= 10; - i--; + } } - for (j = i; j > -1; j--) + for (; i > -1; i--) { - array[j] = -1; + array[i] = 0xFF; } - if (array[3] == -1) - array[3] = 0; + if (arrayPtr[3] == 0xFF) + arrayPtr[3] = 0; if (arg2 == 0) { - for (i = 0; i < 4; i++) + for (i = 0, j = 0; i < 4; i++) { - if (array[i] == -1) + if (array[j] == 0xFF) { - arg1[i] &= 0xFC00; - arg1[i] |= 0x1E; + arg1[j] &= 0xFC00; + arg1[j] |= 0x1E; arg1[i + 0x20] &= 0xFC00; arg1[i + 0x20] |= 0x1E; } else { - arg1[i] &= 0xFC00; - arg1[i] |= array[i] + 0x14; + arg1[j] &= 0xFC00; + arg1[j] |= array[j] + 0x14; arg1[i + 0x20] &= 0xFC00; arg1[i + 0x20] |= array[i] + 0x34; } + j++; } } else { for (i = 0; i < 4; i++) { - if (array[i] == -1) + if (array[i] == 0xFF) { arg1[i] &= 0xFC00; arg1[i] |= 0x1E; @@ -775,6 +915,11 @@ void sub_80724A8(s16 arg0, s16 arg1, u16 *arg2) sub_8072308(arg0, arg2 + 5, 1); } +// because the healthbox is too large to fit into one sprite, it is divided into two sprites +// healthboxSpriteId_1 or healthboxSpriteId refers to the 'main' healthbox +// healthboxSpriteId_2 refers to the other part +// there's also one other sprite that appears to be a black square? dont fully understand its role + u8 CreateBankHealthboxSprites(u8 bank) { s16 data6 = 0; @@ -786,8 +931,8 @@ u8 CreateBankHealthboxSprites(u8 bank) { if (GetBankSide(bank) == SIDE_PLAYER) { - healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C140[0], 240, 160, 1); - healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C140[0], 240, 160, 1); + healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1); gSprites[healthboxSpriteId_1].oam.shape = 0; @@ -796,8 +941,8 @@ u8 CreateBankHealthboxSprites(u8 bank) } else { - healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C170[0], 240, 160, 1); - healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C170[0], 240, 160, 1); + healthboxSpriteId_1 = CreateSprite(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1); gSprites[healthboxSpriteId_2].oam.tileNum += 32; @@ -811,8 +956,8 @@ u8 CreateBankHealthboxSprites(u8 bank) { if (GetBankSide(bank) == SIDE_PLAYER) { - healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C140[GetBankIdentity(bank) / 2], 240, 160, 1); - healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C140[GetBankIdentity(bank) / 2], 240, 160, 1); + healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1); gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2; @@ -824,8 +969,8 @@ u8 CreateBankHealthboxSprites(u8 bank) } else { - healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C170[GetBankIdentity(bank) / 2], 240, 160, 1); - healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C170[GetBankIdentity(bank) / 2], 240, 160, 1); + healthboxSpriteId_1 = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1); gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2; @@ -839,11 +984,11 @@ u8 CreateBankHealthboxSprites(u8 bank) unkSpriteId = CreateSpriteAtEnd(&gUnknown_0832C1C0[gBanksByIdentity[bank]], 140, 60, 0); unkSpritePtr = &gSprites[unkSpriteId]; - SetSubspriteTables(unkSpritePtr, &gUnknown_0832C28C[GetBankSide(bank)]); + SetSubspriteTables(unkSpritePtr, &sUnknown_0832C28C[GetBankSide(bank)]); unkSpritePtr->subspriteMode = 2; unkSpritePtr->oam.priority = 1; - CpuCopy32(GetHealthboxElementGfxPtr(1), (void*)(OBJ_VRAM0 + unkSpritePtr->oam.tileNum * 32), 64); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + unkSpritePtr->oam.tileNum * 32), 64); gSprites[healthboxSpriteId_1].data5 = unkSpriteId; gSprites[healthboxSpriteId_1].data6 = bank; @@ -862,8 +1007,8 @@ u8 CreateSafariPlayerHealthboxSprites(void) { u8 healthboxSpriteId_1, healthboxSpriteId_2; - healthboxSpriteId_1 = CreateSprite(&gUnknown_0832C1A0, 240, 160, 1); - healthboxSpriteId_2 = CreateSpriteAtEnd(&gUnknown_0832C1A0, 240, 160, 1); + healthboxSpriteId_1 = CreateSprite(&sHealthboxSafariSpriteTemplate, 240, 160, 1); + healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxSafariSpriteTemplate, 240, 160, 1); gSprites[healthboxSpriteId_1].oam.shape = 0; gSprites[healthboxSpriteId_2].oam.shape = 0; @@ -955,7 +1100,7 @@ void DestoryHealthboxSprite(u8 healthboxSpriteId) DestroySprite(&gSprites[healthboxSpriteId]); } -void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly) +void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly) { } @@ -1060,7 +1205,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER && !IsDoubleBattle()) { spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; - if (maxOrCurrent) // singles, max + if (maxOrCurrent != HP_CURRENT) // singles, max { ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 2, &windowId); @@ -1102,14 +1247,14 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER) { - if (!maxOrCurrent) + if (maxOrCurrent == HP_CURRENT) var = 29; else var = 89; } else { - if (!maxOrCurrent) + if (maxOrCurrent == HP_CURRENT) var = 20; else var = 48; @@ -1142,13 +1287,13 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 spriteTileNum = gSprites[gSprites[healthboxSpriteId].data5].oam.tileNum * 32; objVram = (void*)(OBJ_VRAM0) + spriteTileNum; - if (maxOrCurrent) // doubles, max hp + if (maxOrCurrent != HP_CURRENT) // doubles, max hp { ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId); sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2); RemoveWindowOnHealthbox(windowId); - CpuCopy32(GetHealthboxElementGfxPtr(0x74), + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116), (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32), 0x20); } @@ -1178,7 +1323,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 u8 *txtPtr; u8 i; - if (!maxOrCurrent) + if (maxOrCurrent == HP_CURRENT) var = 0; r7 = gSprites[healthboxSpriteId].data5; @@ -1203,7 +1348,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 } } - if (!maxOrCurrent) + if (maxOrCurrent == HP_CURRENT) { CpuCopy32(&gMonSpritesGfxPtr->fontPixels[224], (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)), @@ -1214,7 +1359,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 { if (GetBankSide(bank) == SIDE_PLAYER) // impossible to reach part, because the bank is from the opponent's side { - CpuCopy32(GetHealthboxElementGfxPtr(0x74), + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116), (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32), 0x20); } @@ -1314,14 +1459,14 @@ void SwapHpBarsWithHpText(void) spriteId = gSprites[gHealthBoxesIds[i]].data5; CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100); - UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), 0); - UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), HP_MAX); } else // text to bars { UpdateStatusIconInHealthbox(gHealthBoxesIds[i]); UpdateHealthboxAttribute(gHealthBoxesIds[i], &gPlayerParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR); - CpuCopy32(GetHealthboxElementGfxPtr(0x75), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthBoxesIds[i]].oam.tileNum * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthBoxesIds[i]].oam.tileNum * 32), 32); } } else @@ -1337,8 +1482,8 @@ void SwapHpBarsWithHpText(void) spriteId = gSprites[gHealthBoxesIds[i]].data5; CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100); - UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), 0); - UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT); + UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), HP_MAX); } } else // text to bars @@ -1393,13 +1538,13 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar bar_data0 = 5; } - LoadCompressedObjectPicUsingHeap(&gUnknown_0832C334); - LoadSpriteSheet(&gUnknown_0832C34C); - LoadSpritePalette(&gUnknown_0832C33C); - LoadSpritePalette(&gUnknown_0832C344); + LoadCompressedObjectPicUsingHeap(&sStatusSummaryBarSpriteSheet); + LoadSpriteSheet(&sStatusSummaryBallsSpriteSheet); + LoadSpritePalette(&sStatusSummaryBarSpritePal); + LoadSpritePalette(&sStatusSummaryBallsSpritePal); - barSpriteId = CreateSprite(&gUnknown_0832C364[isOpponent], bar_X, bar_Y, 10); - SetSubspriteTables(&gSprites[barSpriteId], gUnknown_0832C2C4); + barSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10); + SetSubspriteTables(&gSprites[barSpriteId], sStatusSummaryBar_SubspriteTable); gSprites[barSpriteId].pos2.x = bar_pos2_X; gSprites[barSpriteId].data0 = bar_data0; @@ -1415,10 +1560,10 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar for (i = 0; i < 6; i++) { - ballIconSpritesIds[i] = CreateSpriteAtEnd(&gUnknown_0832C394[isOpponent], bar_X, bar_Y - 4, 9); + ballIconSpritesIds[i] = CreateSpriteAtEnd(&sStatusSummaryBallsSpriteTemplates[isOpponent], bar_X, bar_Y - 4, 9); if (!isBattleStart) - gSprites[ballIconSpritesIds[i]].callback = sub_80741C8; + gSprites[ballIconSpritesIds[i]].callback = SpriteCB_StatusSummaryBallsOnSwitchout; if (!isOpponent) { @@ -1705,7 +1850,7 @@ static void sub_8073F98(u8 taskId) } } -static void sub_8074078(struct Sprite *sprite) +static void SpriteCB_StatusSummaryBar(struct Sprite *sprite) { if (sprite->pos2.x != 0) sprite->pos2.x += sprite->data0; @@ -1721,7 +1866,7 @@ static void sub_8074090(struct Sprite *sprite) sprite->data1 &= 0xF; } -static void sub_80740C4(struct Sprite *sprite) +static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite) { u8 var1; u16 var2; @@ -1732,10 +1877,12 @@ static void sub_80740C4(struct Sprite *sprite) sprite->data1--; return; } + var1 = sprite->data2; var2 = sprite->data3; var2 += 56; sprite->data3 = var2 & 0xFFF0; + if (var1 != 0) { sprite->pos2.x += var2 >> 4; @@ -1748,15 +1895,18 @@ static void sub_80740C4(struct Sprite *sprite) if (sprite->pos2.x < 0) sprite->pos2.x = 0; } + if (sprite->pos2.x == 0) { pan = 63; if (var1 != 0) pan = -64; + if (sprite->data7 != 0) PlaySE2WithPanning(SE_TB_KARA, pan); else PlaySE1WithPanning(SE_TB_KON, pan); + sprite->callback = SpriteCallbackDummy; } } @@ -1787,7 +1937,7 @@ static void sub_8074158(struct Sprite *sprite) } } -static void sub_80741C8(struct Sprite *sprite) +static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite) { u8 barSpriteId = sprite->data0; @@ -1872,7 +2022,7 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5; if (noStatus) - CpuCopy32(GetHealthboxElementGfxPtr(0x46), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32); else CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32); } @@ -1904,38 +2054,38 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) if (status & STATUS_SLEEP) { - statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1B, bank)); + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_SLP_BANK0, bank)); statusPalId = PAL_STATUS_SLP; } else if (status & STATUS_PSN_ANY) { - statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x15, bank)); + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_PSN_BANK0, bank)); statusPalId = PAL_STATUS_PSN; } else if (status & STATUS_BURN) { - statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x21, bank)); + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_BRN_BANK0, bank)); statusPalId = PAL_STATUS_BRN; } else if (status & STATUS_FREEZE) { - statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1E, bank)); + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_FRZ_BANK0, bank)); statusPalId = PAL_STATUS_FRZ; } else if (status & STATUS_PARALYSIS) { - statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x18, bank)); + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_PRZ_BANK0, bank)); statusPalId = PAL_STATUS_PAR; } else { - statusGfxPtr = GetHealthboxElementGfxPtr(0x27); + statusGfxPtr = GetHealthboxElementGfxPtr(HEALTHBOX_GFX_39); for (i = 0; i < 3; i++) CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32); if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) - CpuCopy32(GetHealthboxElementGfxPtr(1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64); TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE); return; @@ -1951,8 +2101,8 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) { if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) { - CpuCopy32(GetHealthboxElementGfxPtr(0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32); - CpuCopy32(GetHealthboxElementGfxPtr(0x41), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32); } } TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE); @@ -1964,55 +2114,55 @@ static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank) switch (statusElementId) { - case 21: + case HEALTHBOX_GFX_STATUS_PSN_BANK0: if (bank == 0) - ret = 21; + ret = HEALTHBOX_GFX_STATUS_PSN_BANK0; else if (bank == 1) - ret = 71; + ret = HEALTHBOX_GFX_STATUS_PSN_BANK1; else if (bank == 2) - ret = 86; + ret = HEALTHBOX_GFX_STATUS_PSN_BANK2; else - ret = 101; + ret = HEALTHBOX_GFX_STATUS_PSN_BANK3; break; - case 24: + case HEALTHBOX_GFX_STATUS_PRZ_BANK0: if (bank == 0) - ret = 24; + ret = HEALTHBOX_GFX_STATUS_PRZ_BANK0; else if (bank == 1) - ret = 74; + ret = HEALTHBOX_GFX_STATUS_PRZ_BANK1; else if (bank == 2) - ret = 89; + ret = HEALTHBOX_GFX_STATUS_PRZ_BANK2; else - ret = 104; + ret = HEALTHBOX_GFX_STATUS_PRZ_BANK3; break; - case 27: + case HEALTHBOX_GFX_STATUS_SLP_BANK0: if (bank == 0) - ret = 27; + ret = HEALTHBOX_GFX_STATUS_SLP_BANK0; else if (bank == 1) - ret = 77; + ret = HEALTHBOX_GFX_STATUS_SLP_BANK1; else if (bank == 2) - ret = 92; + ret = HEALTHBOX_GFX_STATUS_SLP_BANK2; else - ret = 107; + ret = HEALTHBOX_GFX_STATUS_SLP_BANK3; break; - case 30: + case HEALTHBOX_GFX_STATUS_FRZ_BANK0: if (bank == 0) - ret = 30; + ret = HEALTHBOX_GFX_STATUS_FRZ_BANK0; else if (bank == 1) - ret = 80; + ret = HEALTHBOX_GFX_STATUS_FRZ_BANK1; else if (bank == 2) - ret = 95; + ret = HEALTHBOX_GFX_STATUS_FRZ_BANK2; else - ret = 110; + ret = HEALTHBOX_GFX_STATUS_FRZ_BANK3; break; - case 33: + case HEALTHBOX_GFX_STATUS_BRN_BANK0: if (bank == 0) - ret = 33; + ret = HEALTHBOX_GFX_STATUS_BRN_BANK0; else if (bank == 1) - ret = 83; + ret = HEALTHBOX_GFX_STATUS_BRN_BANK1; else if (bank == 2) - ret = 98; + ret = HEALTHBOX_GFX_STATUS_BRN_BANK2; else - ret = 113; + ret = HEALTHBOX_GFX_STATUS_BRN_BANK3; break; } return ret; @@ -2062,9 +2212,9 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); if (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL) - UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), 0); + UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), HP_CURRENT); if (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL) - UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), 1); + UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), HP_MAX); if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL) { LoadBattleBarGfx(0); @@ -2204,10 +2354,10 @@ static void sub_8074B9C(u8 bank, u8 whichBar) for (i = 0; i < 8; i++) { if (i < 4) - CpuCopy32(GetHealthboxElementGfxPtr(0xC) + array[i] * 32, + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32, (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32), 32); else - CpuCopy32(GetHealthboxElementGfxPtr(0xC) + array[i] * 32, + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32, (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].oam.tileNum) * 32), 32); } break; diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 25c2ca6581..343ddb9c04 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -336,9 +336,9 @@ static void CreateHealthboxSprite(u8 bank) UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_ALL); if (GetBankIdentity(bank) == IDENTITY_OPPONENT_MON2 || GetBankIdentity(bank) == IDENTITY_PLAYER_MON2) - nullsub_30(gHealthBoxesIds[bank], TRUE); + DummyBattleInterfaceFunc(gHealthBoxesIds[bank], TRUE); else - nullsub_30(gHealthBoxesIds[bank], FALSE); + DummyBattleInterfaceFunc(gHealthBoxesIds[bank], FALSE); if (GetBankSide(bank) != SIDE_PLAYER) { From 36035518dcd36c915b8b8f3461881ea813933454 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 20 Oct 2017 00:01:17 +0200 Subject: [PATCH 161/182] review battle anim changes --- asm/battle_1.s | 8 +++---- include/battle.h | 2 +- include/battle_anim.h | 3 +++ include/gba/io_reg.h | 2 ++ src/battle_anim.c | 56 +++++++++++++++++++++---------------------- 5 files changed, 37 insertions(+), 34 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index d450df8843..9a981e222c 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1424,8 +1424,8 @@ _0803575A: .pool thumb_func_end ApplyPlayerChosenFrameToBattleMenu - thumb_func_start LoadFittingBackgroundForBattle -LoadFittingBackgroundForBattle: @ 8035770 + thumb_func_start DrawMainBattleBackground +DrawMainBattleBackground: @ 8035770 push {r4,r5,lr} ldr r0, =gBattleTypeFlags ldr r1, [r0] @@ -1665,7 +1665,7 @@ _08035A8A: pop {r0} bx r0 .pool - thumb_func_end LoadFittingBackgroundForBattle + thumb_func_end DrawMainBattleBackground thumb_func_start LoadBattleTextboxAndBackground LoadBattleTextboxAndBackground: @ 8035AA4 @@ -1686,7 +1686,7 @@ LoadBattleTextboxAndBackground: @ 8035AA4 movs r2, 0x40 bl LoadCompressedPalette bl ApplyPlayerChosenFrameToBattleMenu - bl LoadFittingBackgroundForBattle + bl DrawMainBattleBackground pop {r0} bx r0 .pool diff --git a/include/battle.h b/include/battle.h index a36fdec23c..a7a26e5ebe 100644 --- a/include/battle.h +++ b/include/battle.h @@ -830,7 +830,7 @@ void LoadBattleTextboxAndBackground(void); void LoadBattleEntryBackground(void); void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); -void LoadFittingBackgroundForBattle(void); +void DrawMainBattleBackground(void); void task00_0800F6FC(u8 taskId); // battle_5 diff --git a/include/battle_anim.h b/include/battle_anim.h index 3345d7de3c..f38572d19f 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -39,6 +39,9 @@ struct BattleAnimBackground #define ANIM_ARGS_COUNT 8 +#define PAN_ATTACKER_PLAYER -64 +#define PAN_ATTACKER_OPPONENT 63 + extern void (*gAnimScriptCallback)(void); extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 5234e5b6c2..f8c89fdbdd 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -521,6 +521,8 @@ #define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled #define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled +// BLDCNT + // SOUNDCNT_H #define SOUND_CGB_MIX_QUARTER 0x0000 #define SOUND_CGB_MIX_HALF 0x0001 diff --git a/src/battle_anim.c b/src/battle_anim.c index 13b74a84aa..8b858f34a7 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -831,26 +831,24 @@ void sub_80A477C(bool8 to_BG2) static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) { - u8 r4; - u8 r6; - s16 r3; - s16 r2; + u8 spriteId, palIndex; + s16 x, y; struct UnknownAnimStruct2 unknownStruct; - r4 = gTasks[taskId].data[0]; - r6 = gTasks[taskId].data[6]; + spriteId = gTasks[taskId].data[0]; + palIndex = gTasks[taskId].data[6]; sub_80A6B30(&unknownStruct); - r3 = gTasks[taskId].data[1] - (gSprites[r4].pos1.x + gSprites[r4].pos2.x); - r2 = gTasks[taskId].data[2] - (gSprites[r4].pos1.y + gSprites[r4].pos2.y); + x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x); + y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y); if (gTasks[taskId].data[5] == 0) { u16 *src; u16 *dst; - gBattle_BG1_X = r3 + gTasks[taskId].data[3]; - gBattle_BG1_Y = r2 + gTasks[taskId].data[4]; - src = gPlttBufferFaded + 0x100 + r6 * 16; + gBattle_BG1_X = x + gTasks[taskId].data[3]; + gBattle_BG1_Y = y + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + palIndex * 16; dst = gPlttBufferFaded + 0x100 + unknownStruct.unk8 * 16 - 256; CpuCopy32(src, dst, 0x20); } @@ -859,9 +857,9 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) u16 *src; u16 *dst; - gBattle_BG2_X = r3 + gTasks[taskId].data[3]; - gBattle_BG2_Y = r2 + gTasks[taskId].data[4]; - src = gPlttBufferFaded + 0x100 + r6 * 16; + gBattle_BG2_X = x + gTasks[taskId].data[3]; + gBattle_BG2_Y = y + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + palIndex * 16; dst = gPlttBufferFaded + 0x100 - 112; CpuCopy32(src, dst, 0x20); } @@ -1232,7 +1230,7 @@ static void LoadDefaultBg(void) if (IsContest()) LoadContestBgAfterMoveAnim(); else - LoadFittingBackgroundForBattle(); + DrawMainBattleBackground(); } static void ScriptCmd_restorebg(void) @@ -1286,39 +1284,39 @@ s8 BattleAnimAdjustPanning(s8 pan) if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) { if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) - pan = 63; + pan = PAN_ATTACKER_OPPONENT; else - pan = -64; + pan = PAN_ATTACKER_PLAYER; } else if (IsContest()) { - if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != 63) + if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != PAN_ATTACKER_OPPONENT) pan *= -1; } else if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) { if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) { - if (pan == 63) - pan = -64; - else if (pan != -64) + if (pan == PAN_ATTACKER_OPPONENT) + pan = PAN_ATTACKER_PLAYER; + else if (pan != PAN_ATTACKER_PLAYER) pan *= -1; } } else if (GetBankSide(gAnimBankTarget) == SIDE_OPPONENT) { - if (pan == -64) - pan = 63; + if (pan == PAN_ATTACKER_PLAYER) + pan = PAN_ATTACKER_OPPONENT; } else { pan *= -1; } - if (pan > 63) - pan = 63; - else if (pan < -64) - pan = -64; + if (pan > PAN_ATTACKER_OPPONENT) + pan = PAN_ATTACKER_OPPONENT; + else if (pan < PAN_ATTACKER_PLAYER) + pan = PAN_ATTACKER_PLAYER; return pan; } @@ -1328,9 +1326,9 @@ s8 BattleAnimAdjustPanning2(s8 pan) if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) { if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) - pan = 63; + pan = PAN_ATTACKER_OPPONENT; else - pan = -64; + pan = PAN_ATTACKER_PLAYER; } else { From cda5c5f925024acca194837007b9f88597ce4db8 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 20 Oct 2017 18:52:01 +0200 Subject: [PATCH 162/182] start working on walda phrase --- asm/pokemon_storage_system.s | 84 ++++---- asm/rayquaza_scene.s | 4 +- asm/walda_phrase.s | 375 ----------------------------------- data/specials.inc | 4 +- data/walda_phrase.s | 7 - include/global.h | 12 +- include/naming_screen.h | 2 +- include/new_game.h | 1 + ld_script.txt | 3 +- src/walda_phrase.c | 185 +++++++++++++++++ 10 files changed, 246 insertions(+), 431 deletions(-) delete mode 100644 data/walda_phrase.s create mode 100644 src/walda_phrase.c diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 298409e9c0..d1f7bd161f 100755 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1043,7 +1043,7 @@ _080C77C2: lsrs r5, r0, 16 cmp r5, 0xD bls _080C77C2 - bl sub_80D242C + bl ResetWaldaWallpaper pop {r4-r6} pop {r0} bx r0 @@ -7122,7 +7122,7 @@ sub_80CADD8: @ 80CADD8 bl sub_80CFF34 movs r0, 0x15 bl sub_80CFF34 - bl sub_80D2494 + bl IsWaldaWallpaperUnlocked cmp r0, 0 beq _080CAE04 movs r0, 0x16 @@ -10421,7 +10421,7 @@ _080CC888: b _080CC9DA .pool _080CC8C4: - bl sub_80D24A8 + bl GetWaldaWallpaperPatternId lsls r1, r0, 1 adds r1, r0 lsls r1, 2 @@ -10448,13 +10448,13 @@ _080CC8C4: adds r1, r4 movs r2, 0x20 bl CpuSet - bl sub_80D2510 + bl GetWaldaWallpaperColorsPtr ldr r1, [r7] ldr r2, =0x00000794 adds r1, r2 movs r2, 0x2 bl CpuSet - bl sub_80D2510 + bl GetWaldaWallpaperColorsPtr ldr r1, [r7] ldr r3, =0x000007b4 adds r1, r3 @@ -10500,7 +10500,7 @@ _080CC976: adds r1, r5 str r0, [r1] ldr r4, =gUnknown_0857B004 - bl sub_80D24DC + bl GetWaldaWallpaperIconId lsls r0, 2 adds r0, r4 ldr r0, [r0] @@ -21544,8 +21544,8 @@ _080D241E: bx r1 thumb_func_end sub_80D23A8 - thumb_func_start sub_80D242C -sub_80D242C: @ 80D242C + thumb_func_start ResetWaldaWallpaper +ResetWaldaWallpaper: @ 80D242C ldr r2, =gSaveBlock1Ptr ldr r0, [r2] ldr r1, =0x00003d84 @@ -21575,10 +21575,10 @@ sub_80D242C: @ 80D242C strb r0, [r1] bx lr .pool - thumb_func_end sub_80D242C + thumb_func_end ResetWaldaWallpaper - thumb_func_start sub_80D2480 -sub_80D2480: @ 80D2480 + thumb_func_start SetWaldaWallpaperLockedOrUnlocked +SetWaldaWallpaperLockedOrUnlocked: @ 80D2480 ldr r1, =gSaveBlock1Ptr ldr r1, [r1] ldr r2, =0x00003d86 @@ -21586,10 +21586,10 @@ sub_80D2480: @ 80D2480 strb r0, [r1] bx lr .pool - thumb_func_end sub_80D2480 + thumb_func_end SetWaldaWallpaperLockedOrUnlocked - thumb_func_start sub_80D2494 -sub_80D2494: @ 80D2494 + thumb_func_start IsWaldaWallpaperUnlocked +IsWaldaWallpaperUnlocked: @ 80D2494 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003d86 @@ -21597,10 +21597,10 @@ sub_80D2494: @ 80D2494 ldrb r0, [r0] bx lr .pool - thumb_func_end sub_80D2494 + thumb_func_end IsWaldaWallpaperUnlocked - thumb_func_start sub_80D24A8 -sub_80D24A8: @ 80D24A8 + thumb_func_start GetWaldaWallpaperPatternId +GetWaldaWallpaperPatternId: @ 80D24A8 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003d85 @@ -21608,10 +21608,10 @@ sub_80D24A8: @ 80D24A8 ldrb r0, [r0] bx lr .pool - thumb_func_end sub_80D24A8 + thumb_func_end GetWaldaWallpaperPatternId - thumb_func_start sub_80D24BC -sub_80D24BC: @ 80D24BC + thumb_func_start SetWaldaWallpaperPatternId +SetWaldaWallpaperPatternId: @ 80D24BC push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -21626,10 +21626,10 @@ _080D24D0: pop {r0} bx r0 .pool - thumb_func_end sub_80D24BC + thumb_func_end SetWaldaWallpaperPatternId - thumb_func_start sub_80D24DC -sub_80D24DC: @ 80D24DC + thumb_func_start GetWaldaWallpaperIconId +GetWaldaWallpaperIconId: @ 80D24DC ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003d84 @@ -21637,10 +21637,10 @@ sub_80D24DC: @ 80D24DC ldrb r0, [r0] bx lr .pool - thumb_func_end sub_80D24DC + thumb_func_end GetWaldaWallpaperIconId - thumb_func_start sub_80D24F0 -sub_80D24F0: @ 80D24F0 + thumb_func_start SetWaldaWallpaperIconId +SetWaldaWallpaperIconId: @ 80D24F0 push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -21655,20 +21655,20 @@ _080D2504: pop {r0} bx r0 .pool - thumb_func_end sub_80D24F0 + thumb_func_end SetWaldaWallpaperIconId - thumb_func_start sub_80D2510 -sub_80D2510: @ 80D2510 + thumb_func_start GetWaldaWallpaperColorsPtr +GetWaldaWallpaperColorsPtr: @ 80D2510 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003d70 adds r0, r1 bx lr .pool - thumb_func_end sub_80D2510 + thumb_func_end GetWaldaWallpaperColorsPtr - thumb_func_start sub_80D2524 -sub_80D2524: @ 80D2524 + thumb_func_start SetWaldaWallpaperColors +SetWaldaWallpaperColors: @ 80D2524 push {r4,lr} ldr r2, =gSaveBlock1Ptr ldr r2, [r2] @@ -21682,20 +21682,20 @@ sub_80D2524: @ 80D2524 pop {r0} bx r0 .pool - thumb_func_end sub_80D2524 + thumb_func_end SetWaldaWallpaperColors - thumb_func_start sub_80D2548 -sub_80D2548: @ 80D2548 + thumb_func_start GetWaldaPhrasePtr +GetWaldaPhrasePtr: @ 80D2548 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003d74 adds r0, r1 bx lr .pool - thumb_func_end sub_80D2548 + thumb_func_end GetWaldaPhrasePtr - thumb_func_start sub_80D255C -sub_80D255C: @ 80D255C + thumb_func_start SetWaldaPhrase +SetWaldaPhrase: @ 80D255C push {lr} adds r1, r0, 0 ldr r0, =gSaveBlock1Ptr @@ -21706,10 +21706,10 @@ sub_80D255C: @ 80D255C pop {r0} bx r0 .pool - thumb_func_end sub_80D255C + thumb_func_end SetWaldaPhrase - thumb_func_start sub_80D2578 -sub_80D2578: @ 80D2578 + thumb_func_start IsWaldaPhraseEmpty +IsWaldaPhraseEmpty: @ 80D2578 push {lr} movs r1, 0 ldr r0, =gSaveBlock1Ptr @@ -21725,7 +21725,7 @@ _080D258C: pop {r1} bx r1 .pool - thumb_func_end sub_80D2578 + thumb_func_end IsWaldaPhraseEmpty thumb_func_start sub_80D259C sub_80D259C: @ 80D259C diff --git a/asm/rayquaza_scene.s b/asm/rayquaza_scene.s index fdfd22979f..1649f01317 100755 --- a/asm/rayquaza_scene.s +++ b/asm/rayquaza_scene.s @@ -5971,11 +5971,11 @@ _081D99B4: thumb_func_start sub_81D99BC sub_81D99BC: @ 81D99BC push {r4,lr} - bl sub_80D2578 + bl IsWaldaPhraseEmpty cmp r0, 0 bne _081D99DC ldr r4, =gStringVar1 - bl sub_80D2548 + bl GetWaldaPhrasePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy diff --git a/asm/walda_phrase.s b/asm/walda_phrase.s index be754f3865..f6f55a6687 100755 --- a/asm/walda_phrase.s +++ b/asm/walda_phrase.s @@ -5,382 +5,7 @@ .text - thumb_func_start walda_maybe -walda_maybe: @ 81D99E4 - push {r4,lr} - sub sp, 0x8 - ldr r4, =gStringVar2 - bl sub_80D2548 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - str r0, [sp] - ldr r0, =sub_81D9A1C - str r0, [sp, 0x4] - movs r0, 0x4 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end walda_maybe - thumb_func_start sub_81D9A1C -sub_81D9A1C: @ 81D9A1C - push {r4,r5,lr} - ldr r4, =gSpecialVar_0x8004 - ldr r5, =gStringVar2 - adds r0, r5, 0 - bl sub_81D9A98 - strh r0, [r4] - ldrh r0, [r4] - cmp r0, 0x1 - beq _081D9A68 - cmp r0, 0x1 - bgt _081D9A44 - cmp r0, 0 - beq _081D9A62 - b _081D9A68 - .pool -_081D9A44: - cmp r0, 0x2 - bne _081D9A68 - bl sub_80D2578 - cmp r0, 0 - beq _081D9A5C - ldr r0, =gText_Peekaboo - bl sub_80D255C - b _081D9A68 - .pool -_081D9A5C: - movs r0, 0x1 - strh r0, [r4] - b _081D9A68 -_081D9A62: - adds r0, r5, 0 - bl sub_80D255C -_081D9A68: - ldr r4, =gStringVar1 - bl sub_80D2548 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, =gFieldCallback - ldr r0, =sub_80AF168 - str r0, [r1] - ldr r0, =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81D9A1C - - thumb_func_start sub_81D9A98 -sub_81D9A98: @ 81D9A98 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0xFF - bne _081D9AA6 - movs r0, 0x2 - b _081D9ABC -_081D9AA6: - bl sub_80D2548 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCompare - cmp r0, 0 - beq _081D9ABA - movs r0, 0 - b _081D9ABC -_081D9ABA: - movs r0, 0x1 -_081D9ABC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81D9A98 - - thumb_func_start sub_81D9AC4 -sub_81D9AC4: @ 81D9AC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xA - bl ReadUnalignedWord - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, =gScriptResult - mov r8, r0 - bl sub_80D2548 - mov r7, sp - adds r7, 0xA - add r6, sp, 0xC - mov r5, sp - adds r5, 0xD - str r4, [sp] - str r0, [sp, 0x4] - add r0, sp, 0x8 - adds r1, r7, 0 - adds r2, r6, 0 - adds r3, r5, 0 - bl sub_81D9B68 - mov r1, r8 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _081D9B1E - ldrb r0, [r5] - bl sub_80D24BC - ldrb r0, [r6] - bl sub_80D24F0 - add r0, sp, 0x8 - ldrh r0, [r0] - ldrh r1, [r7] - bl sub_80D2524 -_081D9B1E: - mov r1, r8 - ldrh r0, [r1] - bl sub_80D2480 - mov r1, r8 - ldrb r0, [r1] - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81D9AC4 - - thumb_func_start sub_81D9B40 -sub_81D9B40: @ 81D9B40 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r3, =gUnknown_0862AD14 -_081D9B4A: - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081D9B5C - lsls r0, r1, 24 - lsrs r0, 24 - b _081D9B64 - .pool -_081D9B5C: - adds r1, 0x1 - cmp r1, 0x1F - bls _081D9B4A - movs r0, 0x20 -_081D9B64: - pop {r1} - bx r1 - thumb_func_end sub_81D9B40 - - thumb_func_start sub_81D9B68 -sub_81D9B68: @ 81D9B68 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - mov r10, r0 - str r1, [sp, 0x20] - str r2, [sp, 0x24] - str r3, [sp, 0x28] - ldr r0, [sp, 0x4C] - ldr r5, [sp, 0x50] - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - adds r0, r5, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xF - bne _081D9C7E - movs r4, 0 - add r7, sp, 0x10 -_081D9B98: - adds r0, r5, r4 - ldrb r0, [r0] - bl sub_81D9B40 - adds r1, r7, r4 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x20 - beq _081D9C7E - adds r4, 0x1 - cmp r4, 0xE - ble _081D9B98 - movs r6, 0x3 - movs r5, 0 - movs r0, 0x5 - mov r8, r0 - movs r4, 0xD -_081D9BBC: - mov r1, r8 - str r1, [sp] - add r0, sp, 0x4 - adds r1, r7, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_81D9D5C - adds r6, 0x8 - adds r5, 0x5 - subs r4, 0x1 - cmp r4, 0 - bge _081D9BBC - movs r0, 0x2 - str r0, [sp] - add r0, sp, 0x4 - adds r1, r7, 0 - movs r2, 0x46 - movs r3, 0x73 - bl sub_81D9D5C - add r0, sp, 0x4 - movs r1, 0 - movs r2, 0x3 - bl sub_81D9DAC - adds r4, r0, 0 - adds r0, r7, 0 - movs r1, 0x75 - movs r2, 0x3 - bl sub_81D9DAC - cmp r4, r0 - bne _081D9C7E - add r0, sp, 0x4 - movs r1, 0x9 - movs r2, 0x15 - bl sub_81D9C90 - add r0, sp, 0x4 - ldrb r0, [r0, 0x8] - movs r2, 0xF - ands r2, r0 - add r0, sp, 0x4 - movs r1, 0x8 - bl sub_81D9C90 - add r0, sp, 0x4 - ldrb r2, [r0, 0x8] - lsrs r2, 4 - movs r1, 0x8 - bl sub_81D9CDC - add r0, sp, 0x4 - ldrb r2, [r0, 0x6] - adds r1, r0, 0 - ldrb r0, [r0] - ldrb r1, [r1, 0x2] - eors r0, r1 - add r1, sp, 0x4 - ldrb r4, [r1, 0x4] - eors r0, r4 - mov r3, r9 - lsrs r1, r3, 8 - eors r0, r1 - cmp r2, r0 - bne _081D9C7E - add r0, sp, 0x4 - ldrb r3, [r0, 0x7] - adds r2, r0, 0 - ldrb r1, [r0, 0x1] - ldrb r0, [r2, 0x3] - eors r1, r0 - adds r0, r2, 0 - ldrb r2, [r0, 0x5] - eors r1, r2 - movs r0, 0xFF - mov r5, r9 - ands r0, r5 - eors r1, r0 - cmp r3, r1 - bne _081D9C7E - add r0, sp, 0x4 - ldrh r0, [r0] - mov r1, r10 - strh r0, [r1] - mov r0, sp - adds r0, 0x6 - ldrh r0, [r0] - ldr r3, [sp, 0x20] - strh r0, [r3] - ldr r5, [sp, 0x24] - strb r4, [r5] - ldr r0, [sp, 0x28] - strb r2, [r0] - movs r0, 0x1 - b _081D9C80 -_081D9C7E: - movs r0, 0 -_081D9C80: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81D9B68 - - thumb_func_start sub_81D9C90 -sub_81D9C90: @ 81D9C90 - push {r4-r7,lr} - adds r7, r0, 0 - mov r12, r1 - subs r3, r2, 0x1 - cmp r2, 0 - beq _081D9CD6 -_081D9C9C: - ldrb r1, [r7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 31 - mov r2, r12 - subs r2, 0x1 - subs r5, r3, 0x1 - cmp r2, 0 - blt _081D9CCC - movs r6, 0x80 - adds r3, r2, r7 -_081D9CB4: - ldrb r1, [r3] - adds r0, r6, 0 - ands r0, r1 - lsls r0, 24 - lsls r1, 1 - orrs r4, r1 - strb r4, [r3] - lsrs r4, r0, 31 - subs r3, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _081D9CB4 -_081D9CCC: - adds r3, r5, 0 - movs r0, 0x1 - negs r0, r0 - cmp r3, r0 - bne _081D9C9C -_081D9CD6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81D9C90 thumb_func_start sub_81D9CDC sub_81D9CDC: @ 81D9CDC diff --git a/data/specials.inc b/data/specials.inc index bb9a41ab71..7818d48254 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -520,8 +520,8 @@ gSpecials:: @ 81DBA64 def_special sub_81D4BEC def_special sub_80224D0 def_special sub_81D99BC - def_special walda_maybe - def_special sub_81D9AC4 + def_special DoWaldaNamingScreen + def_special TryGetWallpaperWithWaldaPhrase def_special sub_8139ED0 def_special sub_813B968 def_special sub_80F8B94 diff --git a/data/walda_phrase.s b/data/walda_phrase.s deleted file mode 100644 index c168353b41..0000000000 --- a/data/walda_phrase.s +++ /dev/null @@ -1,7 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_0862AD14:: @ 862AD14 - .incbin "baserom.gba", 0x62ad14, 0x20 diff --git a/include/global.h b/include/global.h index 58a0d79dc0..d8547d9c37 100644 --- a/include/global.h +++ b/include/global.h @@ -500,6 +500,16 @@ typedef union // TODO u8 id; } LilycoveLady; +struct WaldaPhrase +{ + u16 field_0; + u16 field_2; + u8 text[16]; + u8 iconId; + u8 patternId; + bool8 patternUnlocked; +}; + struct SaveBlock1 { /*0x00*/ struct Coords16 pos; @@ -586,7 +596,7 @@ struct SaveBlock1 /*0x3B24*/ u8 seen2[52]; /*0x3B58*/ LilycoveLady lilycoveLady; /*0x3B88*/ u8 filler_3B88[0x1E8]; - /*0x3D70*/ u8 babyPhrase[24]; // TODO: convert to a struct + /*0x3D70*/ struct WaldaPhrase waldaPhrase; // sizeof: 0x3D88 }; diff --git a/include/naming_screen.h b/include/naming_screen.h index 55a8e75a31..3d69b834fb 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -5,7 +5,7 @@ #define NAMING_SCREEN_BOX 1 #define NAMING_SCREEN_CAUGHT_MON 2 #define NAMING_SCREEN_3 3 -#define NAMING_SCREEN_WANDA 4 +#define NAMING_SCREEN_WALDA 4 void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void)); diff --git a/include/new_game.h b/include/new_game.h index 060279c257..2088d1826e 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -2,6 +2,7 @@ #define GUARD_NEW_GAME_H void WriteUnalignedWord(u32 var, u8 *dataPtr); +u32 ReadUnalignedWord(u8* dataPtr); void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom); void InitPlayerTrainerId(void); void SetDefaultOptions(void); diff --git a/ld_script.txt b/ld_script.txt index 634ab34cc6..bfabd96bcd 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -257,6 +257,7 @@ SECTIONS { asm/pokemon_summary_screen.o(.text); asm/pokenav.o(.text); asm/rayquaza_scene.o(.text); + src/walda_phrase.o(.text); asm/walda_phrase.o(.text); asm/contest_link_81D9DE4.o(.text); asm/trainer_rematch.o(.text); @@ -466,7 +467,7 @@ SECTIONS { data/pokemon_summary_screen.o(.rodata); data/pokenav.o(.rodata); data/rayquaza_scene.o(.rodata); - data/walda_phrase.o(.rodata); + src/walda_phrase.o(.rodata); data/trainer_rematch.o(.rodata); data/unk_sprite_file.o(.rodata); data/unk_transition.o(.rodata); diff --git a/src/walda_phrase.c b/src/walda_phrase.c new file mode 100644 index 0000000000..1da2bddceb --- /dev/null +++ b/src/walda_phrase.c @@ -0,0 +1,185 @@ +#include "global.h" +#include "string_util.h" +#include "event_data.h" +#include "naming_screen.h" +#include "main.h" +#include "text.h" +#include "new_game.h" + +extern void (*gFieldCallback)(void); + +extern const u8 gText_Peekaboo[]; + +extern u8 *GetWaldaPhrasePtr(void); +extern bool32 IsWaldaPhraseEmpty(void); +extern void sub_80AF168(void); +extern void c2_exit_to_overworld_2_switch(void); +extern void SetWaldaPhrase(const u8 *src); +extern void SetWaldaWallpaperPatternId(u8 patternId); +extern void SetWaldaWallpaperIconId(u8 iconId); +extern void SetWaldaWallpaperColors(u16 backgroundColor, u16 foregroundColor); +extern void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked); + +// this file's functions +void CB2_HandleGivenWaldaPhrase(void); +u32 GetWaldaPhraseInputCase(u8 *inputPtr); +bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase); +void sub_81D9D5C(u8 *array, u8 *letterTableIds, s32 arg2, s32 arg3, s32 arg4); +s32 sub_81D9DAC(u8 *array, s32 arg1, s32 arg2); +void sub_81D9C90(u8 *array, s32 arg1, s32 arg2); +void sub_81D9CDC(u8 *array, s32 arg1, u8 arg2); + +// only consonants are allowed, no vowels, some lowercase letters are missing +static const u8 sWaldaLettersTable[] = +{ + CHAR_B, CHAR_C, CHAR_D, CHAR_F, CHAR_G, CHAR_H, CHAR_J, CHAR_K, CHAR_L, CHAR_M, CHAR_N, CHAR_P, CHAR_Q, CHAR_R, CHAR_S, CHAR_T, CHAR_V, CHAR_W, CHAR_Z, + CHAR_b, CHAR_c, CHAR_d, CHAR_f, CHAR_g, CHAR_h, CHAR_j, CHAR_k, CHAR_m, CHAR_n, CHAR_p, CHAR_q, CHAR_s +}; + +enum +{ + PHRASE_GIVEN_NEW, + PHRASE_NO_CHANGE, + PHRASE_FIRST_ATTEMPT +}; + +void DoWaldaNamingScreen(void) +{ + StringCopy(gStringVar2, GetWaldaPhrasePtr()); + DoNamingScreen(NAMING_SCREEN_WALDA, gStringVar2, 0, 0, 0, CB2_HandleGivenWaldaPhrase); +} + +void CB2_HandleGivenWaldaPhrase(void) +{ + gSpecialVar_0x8004 = GetWaldaPhraseInputCase(gStringVar2); + + switch (gSpecialVar_0x8004) + { + case PHRASE_FIRST_ATTEMPT: + if (IsWaldaPhraseEmpty()) + SetWaldaPhrase(gText_Peekaboo); + else + gSpecialVar_0x8004 = PHRASE_NO_CHANGE; + break; + case PHRASE_GIVEN_NEW: + SetWaldaPhrase(gStringVar2); + break; + case PHRASE_NO_CHANGE: + break; + } + + StringCopy(gStringVar1, GetWaldaPhrasePtr()); + gFieldCallback = sub_80AF168; + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +u32 GetWaldaPhraseInputCase(u8 *inputPtr) +{ + if (inputPtr[0] == EOS) + return PHRASE_FIRST_ATTEMPT; + if (StringCompare(inputPtr, GetWaldaPhrasePtr()) == 0) + return PHRASE_NO_CHANGE; + + return PHRASE_GIVEN_NEW; +} + +u16 TryGetWallpaperWithWaldaPhrase(void) +{ + u16 backgroundClr, foregroundClr; + u8 patternId, iconId; + u16 trainerId = ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId); + gScriptResult = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr()); + + if (gScriptResult) + { + SetWaldaWallpaperPatternId(patternId); + SetWaldaWallpaperIconId(iconId); + SetWaldaWallpaperColors(backgroundClr, foregroundClr); + } + + SetWaldaWallpaperLockedOrUnlocked(gScriptResult); + return (bool8)(gScriptResult); +} + +u8 GetLetterTableId(u8 letter) +{ + s32 i; + + for (i = 0; i < ARRAY_COUNT(sWaldaLettersTable); i++) + { + if (sWaldaLettersTable[i] == letter) + return i; + } + + return ARRAY_COUNT(sWaldaLettersTable); +} + +bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase) +{ + s32 i; + ALIGNED(2) u8 array[12]; + u8 charsByTableId[16]; + u16 *ptr; + + if (StringLength(phrase) != 15) + return FALSE; + + for (i = 0; i < 15; i++) + { + charsByTableId[i] = GetLetterTableId(phrase[i]); + if (charsByTableId[i] == ARRAY_COUNT(sWaldaLettersTable)) + return FALSE; + } + + for (i = 0; i < 14; i++) + { + sub_81D9D5C(array, charsByTableId, (5 * i), 3 + (8 * i), 5); + } + + sub_81D9D5C(array, charsByTableId, 70, 115, 2); + + if (sub_81D9DAC(array, 0, 3) != sub_81D9DAC(charsByTableId, 117, 3)) + return FALSE; + + sub_81D9C90(array, 9, 21); + sub_81D9C90(array, 8, array[8] & 0xF); + sub_81D9CDC(array, 8, array[8] >> 4); + + if (array[6] != (array[0] ^ array[2] ^ array[4] ^ (trainerId >> 8))) + return FALSE; + + if (array[7] != (array[1] ^ array[3] ^ array[5] ^ (trainerId & 0xFF))) + return FALSE; + + ptr = (u16*)(&array[0]); + *backgroundClr = *ptr; + + ptr = (u16*)(&array[2]); + *foregroundClr = *ptr; + + *iconId = array[4]; + *patternId = array[5]; + + return TRUE; +} + +void sub_81D9C90(u8 *array, s32 arg1, s32 arg2) +{ + s32 i, j; + u8 var1, var2; + + for (i = arg2 - 1; i != -1; i--) + { + var1 = (array[0] & 0x80) >> 7; + + var1++;var1--; // needed to match + + for (j = arg1 - 1; j >= 0; j--) + { + var2 = array[j] & 0x80; + array[j] <<= 1; + array[j] |= var1; + var1 = var2 >> 7; + } + } +} From ccd7e8b3b1d942b2e1289611639f4e9a188cdc20 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 20 Oct 2017 19:24:46 +0200 Subject: [PATCH 163/182] battle interface review changes --- graphics/battle_interface/unknown_32C2D4.png | Bin 0 -> 102 bytes include/battle_anim.h | 4 +- src/battle_anim.c | 28 +++---- src/battle_interface.c | 73 ++++++++----------- 4 files changed, 48 insertions(+), 57 deletions(-) create mode 100644 graphics/battle_interface/unknown_32C2D4.png diff --git a/graphics/battle_interface/unknown_32C2D4.png b/graphics/battle_interface/unknown_32C2D4.png new file mode 100644 index 0000000000000000000000000000000000000000..8672ac614f37a613bacec0ab2ca36614c424fc65 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^5healthBoxesData[gAnimBankAttacker].flag_x10) { if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) - pan = PAN_ATTACKER_OPPONENT; + pan = PAN_SIDE_OPPONENT; else - pan = PAN_ATTACKER_PLAYER; + pan = PAN_SIDE_PLAYER; } else if (IsContest()) { - if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != PAN_ATTACKER_OPPONENT) + if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != PAN_SIDE_OPPONENT) pan *= -1; } else if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) { if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) { - if (pan == PAN_ATTACKER_OPPONENT) - pan = PAN_ATTACKER_PLAYER; - else if (pan != PAN_ATTACKER_PLAYER) + if (pan == PAN_SIDE_OPPONENT) + pan = PAN_SIDE_PLAYER; + else if (pan != PAN_SIDE_PLAYER) pan *= -1; } } else if (GetBankSide(gAnimBankTarget) == SIDE_OPPONENT) { - if (pan == PAN_ATTACKER_PLAYER) - pan = PAN_ATTACKER_OPPONENT; + if (pan == PAN_SIDE_PLAYER) + pan = PAN_SIDE_OPPONENT; } else { pan *= -1; } - if (pan > PAN_ATTACKER_OPPONENT) - pan = PAN_ATTACKER_OPPONENT; - else if (pan < PAN_ATTACKER_PLAYER) - pan = PAN_ATTACKER_PLAYER; + if (pan > PAN_SIDE_OPPONENT) + pan = PAN_SIDE_OPPONENT; + else if (pan < PAN_SIDE_PLAYER) + pan = PAN_SIDE_PLAYER; return pan; } @@ -1326,9 +1326,9 @@ s8 BattleAnimAdjustPanning2(s8 pan) if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) { if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) - pan = PAN_ATTACKER_OPPONENT; + pan = PAN_SIDE_OPPONENT; else - pan = PAN_ATTACKER_PLAYER; + pan = PAN_SIDE_PLAYER; } else { diff --git a/src/battle_interface.c b/src/battle_interface.c index a21e72bcff..9241db1d96 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -19,6 +19,7 @@ #include "palette.h" #include "international_string_util.h" #include "safari_zone.h" +#include "battle_anim.h" enum { @@ -226,7 +227,7 @@ static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4 static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2); // const rom data -static const struct OamData gUnknown_0832C138 = +static const struct OamData sUnknown_0832C138 = { .y = 0, .affineMode = 0, @@ -248,7 +249,7 @@ static const struct SpriteTemplate sHealthboxPlayerSpriteTemplates[2] = { .tileTag = TAG_HEALTHBOX_PLAYER1_TILE, .paletteTag = TAG_HEALTHBOX_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -257,7 +258,7 @@ static const struct SpriteTemplate sHealthboxPlayerSpriteTemplates[2] = { .tileTag = TAG_HEALTHBOX_PLAYER2_TILE, .paletteTag = TAG_HEALTHBOX_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -270,7 +271,7 @@ static const struct SpriteTemplate sHealthboxOpponentSpriteTemplates[2] = { .tileTag = TAG_HEALTHBOX_OPPONENT1_TILE, .paletteTag = TAG_HEALTHBOX_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -279,7 +280,7 @@ static const struct SpriteTemplate sHealthboxOpponentSpriteTemplates[2] = { .tileTag = TAG_HEALTHBOX_OPPONENT2_TILE, .paletteTag = TAG_HEALTHBOX_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -291,14 +292,14 @@ static const struct SpriteTemplate sHealthboxSafariSpriteTemplate = { .tileTag = TAG_HEALTHBOX_SAFARI_TILE, .paletteTag = TAG_HEALTHBOX_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct OamData gUnknown_0832C1B8 = +static const struct OamData sUnknown_0832C1B8 = { .y = 0, .affineMode = 0, @@ -315,12 +316,12 @@ static const struct OamData gUnknown_0832C1B8 = .affineParam = 0, }; -static const struct SpriteTemplate gUnknown_0832C1C0[4] = +static const struct SpriteTemplate sUnknown_0832C1C0[4] = { { .tileTag = 0xd704, .paletteTag = 0xd704, - .oam = &gUnknown_0832C1B8, + .oam = &sUnknown_0832C1B8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -329,7 +330,7 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = { .tileTag = 0xd705, .paletteTag = 0xd704, - .oam = &gUnknown_0832C1B8, + .oam = &sUnknown_0832C1B8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -338,7 +339,7 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = { .tileTag = 0xd706, .paletteTag = 0xd704, - .oam = &gUnknown_0832C1B8, + .oam = &sUnknown_0832C1B8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -347,7 +348,7 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] = { .tileTag = 0xd707, .paletteTag = 0xd704, - .oam = &gUnknown_0832C1B8, + .oam = &sUnknown_0832C1B8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -421,7 +422,7 @@ static const struct Subsprite sStatusSummaryBar_Subsprites_0[] = {0, 0, 1, 1, 12, 1} }; -static const struct Subsprite gUnknown_0832C2AC[] = +static const struct Subsprite sUnknown_0832C2AC[] = { {160, 0, 1, 1, 0, 1}, {192, 0, 1, 1, 4, 1}, @@ -436,23 +437,13 @@ static const struct SubspriteTable sStatusSummaryBar_SubspriteTable[] = {ARRAY_COUNT(sStatusSummaryBar_Subsprites_0), sStatusSummaryBar_Subsprites_0} }; -static const struct SubspriteTable gUnknown_0832C2CC[] = +static const struct SubspriteTable sUnknown_0832C2CC[] = { - {ARRAY_COUNT(gUnknown_0832C2AC), gUnknown_0832C2AC} + {ARRAY_COUNT(sUnknown_0832C2AC), sUnknown_0832C2AC} }; -// unused unknown data -static const u16 gUnknown_0832C2D4[] = -{ - 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222, - 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, - - 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222, - 0x7777, 0x7777, 0x7777, 0x7717, 0x1777, 0x7177, 0x7777, 0x7771, - - 0x0000, 0x0000, 0x3333, 0x3333, 0x4444, 0x4444, 0x2222, 0x2222, - 0x7777, 0x7777, 0x7777, 0x7111, 0x7777, 0x7171, 0x7777, 0x7111, -}; +// unused unknown image +static const u8 sUnknown_0832C2D4[] = INCBIN_U8("graphics/battle_interface/unknown_32C2D4.4bpp"); static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheet = { @@ -492,7 +483,7 @@ static const struct OamData sUnknown_0832C354 = .affineParam = 0, }; -static const struct OamData sOamData_StatusSummayBalls = +static const struct OamData sOamData_StatusSummaryBalls = { .y = 0, .affineMode = 0, @@ -514,7 +505,7 @@ static const struct SpriteTemplate sStatusSummaryBarSpriteTemplates[2] = { .tileTag = TAG_STATUS_SUMMARY_BAR_TILE, .paletteTag = TAG_STATUS_SUMMARY_BAR_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -523,7 +514,7 @@ static const struct SpriteTemplate sStatusSummaryBarSpriteTemplates[2] = { .tileTag = TAG_STATUS_SUMMARY_BAR_TILE, .paletteTag = TAG_STATUS_SUMMARY_BAR_PAL, - .oam = &gUnknown_0832C138, + .oam = &sUnknown_0832C138, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -536,7 +527,7 @@ static const struct SpriteTemplate sStatusSummaryBallsSpriteTemplates[2] = { .tileTag = TAG_STATUS_SUMMARY_BALLS_TILE, .paletteTag = TAG_STATUS_SUMMARY_BALLS_PAL, - .oam = &sOamData_StatusSummayBalls, + .oam = &sOamData_StatusSummaryBalls, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -545,7 +536,7 @@ static const struct SpriteTemplate sStatusSummaryBallsSpriteTemplates[2] = { .tileTag = TAG_STATUS_SUMMARY_BALLS_TILE, .paletteTag = TAG_STATUS_SUMMARY_BALLS_PAL, - .oam = &sOamData_StatusSummayBalls, + .oam = &sOamData_StatusSummaryBalls, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -554,7 +545,7 @@ static const struct SpriteTemplate sStatusSummaryBallsSpriteTemplates[2] = }; // possibly text -static const u8 gUnknown_0832C3C4[] = +static const u8 sUnknown_0832C3C4[] = { 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -562,7 +553,7 @@ static const u8 gUnknown_0832C3C4[] = }; // possibly text -static const u8 gUnknown_0832C3D8[] = +static const u8 sUnknown_0832C3D8[] = { 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -982,7 +973,7 @@ u8 CreateBankHealthboxSprites(u8 bank) } } - unkSpriteId = CreateSpriteAtEnd(&gUnknown_0832C1C0[gBanksByIdentity[bank]], 140, 60, 0); + unkSpriteId = CreateSpriteAtEnd(&sUnknown_0832C1C0[gBanksByIdentity[bank]], 140, 60, 0); unkSpritePtr = &gSprites[unkSpriteId]; SetSubspriteTables(unkSpritePtr, &sUnknown_0832C28C[GetBankSide(bank)]); unkSpritePtr->subspriteMode = 2; @@ -1234,7 +1225,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) { u8 bank; - memcpy(text, gUnknown_0832C3C4, sizeof(gUnknown_0832C3C4)); + memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4)); bank = gSprites[healthboxSpriteId].data6; if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT) { @@ -1313,7 +1304,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 { u8 bank; - memcpy(text, gUnknown_0832C3D8, sizeof(gUnknown_0832C3D8)); + memcpy(text, sUnknown_0832C3D8, sizeof(sUnknown_0832C3D8)); bank = gSprites[healthboxSpriteId].data6; if (gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) // don't print text if only bars are visible @@ -1375,7 +1366,7 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) u8 *fontPixels; u8 i, var, nature, healthboxSpriteId_2; - memcpy(text, gUnknown_0832C3C4, sizeof(gUnknown_0832C3C4)); + memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4)); fontPixels = &gMonSpritesGfxPtr->fontPixels[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data6) * 384)]; var = 5; nature = GetNature(mon); @@ -1752,7 +1743,7 @@ void sub_8073C30(u8 taskId) gSprites[r10].data0 /= 2; gSprites[r10].data1 = 0; gSprites[r10].callback = sub_8074090; - SetSubspriteTables(&gSprites[r10], gUnknown_0832C2CC); + SetSubspriteTables(&gSprites[r10], sUnknown_0832C2CC); gTasks[taskId].func = sub_8073E08; } else @@ -1898,9 +1889,9 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite) if (sprite->pos2.x == 0) { - pan = 63; + pan = PAN_SIDE_OPPONENT; if (var1 != 0) - pan = -64; + pan = PAN_SIDE_PLAYER; if (sprite->data7 != 0) PlaySE2WithPanning(SE_TB_KARA, pan); From 8c85a273461557bde4b42630ba3a56701c8f4d81 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 20 Oct 2017 20:39:00 +0200 Subject: [PATCH 164/182] walda phrase is done --- asm/walda_phrase.s | 168 ----------------------------------------- include/walda_phrase.h | 7 ++ ld_script.txt | 1 - src/walda_phrase.c | 89 ++++++++++++++++++---- 4 files changed, 83 insertions(+), 182 deletions(-) delete mode 100755 asm/walda_phrase.s create mode 100644 include/walda_phrase.h diff --git a/asm/walda_phrase.s b/asm/walda_phrase.s deleted file mode 100755 index f6f55a6687..0000000000 --- a/asm/walda_phrase.s +++ /dev/null @@ -1,168 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - thumb_func_start sub_81D9CDC -sub_81D9CDC: @ 81D9CDC - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r3, r2, 24 - lsls r0, r3, 4 - orrs r3, r0 - lsls r0, r3, 24 - lsrs r3, r0, 24 - movs r4, 0 - cmp r4, r5 - bcs _081D9D04 -_081D9CF4: - adds r2, r6, r4 - ldrb r1, [r2] - adds r0, r3, 0 - eors r0, r1 - strb r0, [r2] - adds r4, 0x1 - cmp r4, r5 - bcc _081D9CF4 -_081D9D04: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81D9CDC - - thumb_func_start sub_81D9D0C -sub_81D9D0C: @ 81D9D0C - push {lr} - lsrs r3, r1, 3 - movs r2, 0x7 - ands r2, r1 - movs r1, 0x80 - asrs r1, r2 - adds r0, r3 - ldrb r0, [r0] - ands r0, r1 - cmp r0, 0 - beq _081D9D24 - movs r0, 0x1 -_081D9D24: - pop {r1} - bx r1 - thumb_func_end sub_81D9D0C - - thumb_func_start sub_81D9D28 -sub_81D9D28: @ 81D9D28 - lsrs r3, r1, 3 - movs r2, 0x7 - ands r2, r1 - movs r1, 0x80 - asrs r1, r2 - lsls r1, 24 - lsrs r1, 24 - adds r0, r3 - ldrb r2, [r0] - orrs r1, r2 - strb r1, [r0] - bx lr - thumb_func_end sub_81D9D28 - - thumb_func_start sub_81D9D40 -sub_81D9D40: @ 81D9D40 - lsrs r3, r1, 3 - movs r2, 0x7 - ands r2, r1 - movs r1, 0x80 - asrs r1, r2 - mvns r1, r1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r3 - ldrb r2, [r0] - ands r1, r2 - strb r1, [r0] - bx lr - thumb_func_end sub_81D9D40 - - thumb_func_start sub_81D9D5C -sub_81D9D5C: @ 81D9D5C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - mov r9, r1 - adds r1, r2, 0 - mov r8, r3 - ldr r7, [sp, 0x1C] - movs r5, 0 - cmp r5, r7 - bcs _081D9DA0 - adds r4, r1, 0 -_081D9D76: - mov r0, r8 - adds r1, r0, r5 - mov r0, r9 - bl sub_81D9D0C - lsls r0, 24 - cmp r0, 0 - beq _081D9D90 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_81D9D28 - b _081D9D98 -_081D9D90: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_81D9D40 -_081D9D98: - adds r4, 0x1 - adds r5, 0x1 - cmp r5, r7 - bcc _081D9D76 -_081D9DA0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81D9D5C - - thumb_func_start sub_81D9DAC -sub_81D9DAC: @ 81D9DAC - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - adds r6, r2, 0 - movs r4, 0 - movs r5, 0 - cmp r4, r6 - bcs _081D9DD6 -_081D9DC0: - lsls r4, 1 - adds r1, r7, r5 - mov r0, r8 - bl sub_81D9D0C - lsls r0, 24 - lsrs r0, 24 - orrs r4, r0 - adds r5, 0x1 - cmp r5, r6 - bcc _081D9DC0 -_081D9DD6: - adds r0, r4, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81D9DAC - - .align 2, 0 @ Don't pad with nop. diff --git a/include/walda_phrase.h b/include/walda_phrase.h new file mode 100644 index 0000000000..7a711a413c --- /dev/null +++ b/include/walda_phrase.h @@ -0,0 +1,7 @@ +#ifndef GUARD_WALDA_PHRASE_H +#define GUARD_WALDA_PHRASE_H + +void DoWaldaNamingScreen(void); +u16 TryGetWallpaperWithWaldaPhrase(void); + +#endif // GUARD_WALDA_PHRASE_H diff --git a/ld_script.txt b/ld_script.txt index bfabd96bcd..ca9432d94d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -258,7 +258,6 @@ SECTIONS { asm/pokenav.o(.text); asm/rayquaza_scene.o(.text); src/walda_phrase.o(.text); - asm/walda_phrase.o(.text); asm/contest_link_81D9DE4.o(.text); asm/trainer_rematch.o(.text); asm/unk_sprite_file.o(.text); diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 1da2bddceb..21f39f7843 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -1,4 +1,5 @@ #include "global.h" +#include "walda_phrase.h" #include "string_util.h" #include "event_data.h" #include "naming_screen.h" @@ -21,13 +22,13 @@ extern void SetWaldaWallpaperColors(u16 backgroundColor, u16 foregroundColor); extern void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked); // this file's functions -void CB2_HandleGivenWaldaPhrase(void); -u32 GetWaldaPhraseInputCase(u8 *inputPtr); -bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase); -void sub_81D9D5C(u8 *array, u8 *letterTableIds, s32 arg2, s32 arg3, s32 arg4); -s32 sub_81D9DAC(u8 *array, s32 arg1, s32 arg2); -void sub_81D9C90(u8 *array, s32 arg1, s32 arg2); -void sub_81D9CDC(u8 *array, s32 arg1, u8 arg2); +static void CB2_HandleGivenWaldaPhrase(void); +static u32 GetWaldaPhraseInputCase(u8 *inputPtr); +static bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase); +static void sub_81D9D5C(u8 *array, u8 *letterTableIds, u32 arg2, u32 arg3, u32 loopCount); +static u32 sub_81D9DAC(u8 *array, u32 arg1, u32 loopCount); +static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2); +static void sub_81D9CDC(u8 *array, u32 loopCount, u8 arg2); // only consonants are allowed, no vowels, some lowercase letters are missing static const u8 sWaldaLettersTable[] = @@ -49,7 +50,7 @@ void DoWaldaNamingScreen(void) DoNamingScreen(NAMING_SCREEN_WALDA, gStringVar2, 0, 0, 0, CB2_HandleGivenWaldaPhrase); } -void CB2_HandleGivenWaldaPhrase(void) +static void CB2_HandleGivenWaldaPhrase(void) { gSpecialVar_0x8004 = GetWaldaPhraseInputCase(gStringVar2); @@ -73,7 +74,7 @@ void CB2_HandleGivenWaldaPhrase(void) SetMainCallback2(c2_exit_to_overworld_2_switch); } -u32 GetWaldaPhraseInputCase(u8 *inputPtr) +static u32 GetWaldaPhraseInputCase(u8 *inputPtr) { if (inputPtr[0] == EOS) return PHRASE_FIRST_ATTEMPT; @@ -101,7 +102,7 @@ u16 TryGetWallpaperWithWaldaPhrase(void) return (bool8)(gScriptResult); } -u8 GetLetterTableId(u8 letter) +static u8 GetLetterTableId(u8 letter) { s32 i; @@ -114,7 +115,7 @@ u8 GetLetterTableId(u8 letter) return ARRAY_COUNT(sWaldaLettersTable); } -bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase) +static bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase) { s32 i; ALIGNED(2) u8 array[12]; @@ -163,7 +164,7 @@ bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, return TRUE; } -void sub_81D9C90(u8 *array, s32 arg1, s32 arg2) +static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2) { s32 i, j; u8 var1, var2; @@ -172,7 +173,7 @@ void sub_81D9C90(u8 *array, s32 arg1, s32 arg2) { var1 = (array[0] & 0x80) >> 7; - var1++;var1--; // needed to match + var1++; var1--; // needed to match for (j = arg1 - 1; j >= 0; j--) { @@ -183,3 +184,65 @@ void sub_81D9C90(u8 *array, s32 arg1, s32 arg2) } } } + +static void sub_81D9CDC(u8 *array, u32 loopCount, u8 arg2) +{ + u32 i; + + arg2 |= (arg2 << 4); + + for (i = 0; i < loopCount; i++) + { + array[i] ^= arg2; + } +} + +static bool8 sub_81D9D0C(u8 *array, u32 arg1) +{ + u32 arrayId = arg1 >> 3; + u32 bits = 0x80 >> (7 & arg1); + + return ((array[arrayId] & bits) != 0); +} + +static void sub_81D9D28(u8 *array, u32 arg1) +{ + u32 arrayId = arg1 >> 3; + u8 bits = 0x80 >> (7 & arg1); + + array[arrayId] |= bits; +} + +static void sub_81D9D40(u8 *array, u32 arg1) +{ + u32 arrayId = arg1 >> 3; + u8 bits = ~(0x80 >> (7 & arg1)); + + array[arrayId] &= bits; +} + +static void sub_81D9D5C(u8 *array, u8 *letterTableIds, u32 arg2, u32 arg3, u32 loopCount) +{ + u32 i; + + for (i = 0; i < loopCount; i++) + { + if (sub_81D9D0C(letterTableIds, arg3 + i)) + sub_81D9D28(array, arg2 + i); + else + sub_81D9D40(array, arg2 + i); + } +} + +static u32 sub_81D9DAC(u8 *array, u32 arg1, u32 loopCount) +{ + u32 ret, i; + + for (ret = 0, i = 0; i < loopCount; i++) + { + ret <<= 1; + ret |= sub_81D9D0C(array, arg1 + i); + } + + return ret; +} From 31e0b468c7f859e72e758f3f0fc1051ab887d9a5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 20 Oct 2017 20:46:26 +0200 Subject: [PATCH 165/182] move from raq scene to walda phrase --- asm/rayquaza_scene.s | 21 --------------------- data/specials.inc | 2 +- include/walda_phrase.h | 1 + src/walda_phrase.c | 9 +++++++++ 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/asm/rayquaza_scene.s b/asm/rayquaza_scene.s index 1649f01317..f9936f1cab 100755 --- a/asm/rayquaza_scene.s +++ b/asm/rayquaza_scene.s @@ -5968,26 +5968,5 @@ _081D99B4: bx r0 thumb_func_end sub_81D98B4 - thumb_func_start sub_81D99BC -sub_81D99BC: @ 81D99BC - push {r4,lr} - bl IsWaldaPhraseEmpty - cmp r0, 0 - bne _081D99DC - ldr r4, =gStringVar1 - bl GetWaldaPhrasePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0x1 - b _081D99DE - .pool -_081D99DC: - movs r0, 0 -_081D99DE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81D99BC .align 2, 0 @ Don't pad with nop. diff --git a/data/specials.inc b/data/specials.inc index 7818d48254..49f6b91a0f 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -519,7 +519,7 @@ gSpecials:: @ 81DBA64 def_special sub_813B80C def_special sub_81D4BEC def_special sub_80224D0 - def_special sub_81D99BC + def_special TryBufferWaldaPhrase def_special DoWaldaNamingScreen def_special TryGetWallpaperWithWaldaPhrase def_special sub_8139ED0 diff --git a/include/walda_phrase.h b/include/walda_phrase.h index 7a711a413c..3d77011235 100644 --- a/include/walda_phrase.h +++ b/include/walda_phrase.h @@ -1,6 +1,7 @@ #ifndef GUARD_WALDA_PHRASE_H #define GUARD_WALDA_PHRASE_H +u16 TryBufferWaldaPhrase(void); void DoWaldaNamingScreen(void); u16 TryGetWallpaperWithWaldaPhrase(void); diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 21f39f7843..7e06d1319a 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -44,6 +44,15 @@ enum PHRASE_FIRST_ATTEMPT }; +u16 TryBufferWaldaPhrase(void) +{ + if (IsWaldaPhraseEmpty()) + return FALSE; + + StringCopy(gStringVar1, GetWaldaPhrasePtr()); + return TRUE; +} + void DoWaldaNamingScreen(void) { StringCopy(gStringVar2, GetWaldaPhrasePtr()); From c63acde25054bf61a9fb955bbabd704b7521faec Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Fri, 20 Oct 2017 16:18:29 -0400 Subject: [PATCH 166/182] updating --- src/pokemon_summary_screen.c | 78 ++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 3e6342f36b..4ab36392d7 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -20,7 +20,7 @@ #include "text.h" #include "window.h" -struct contestMove +struct ContestMove { u8 effect; u8 type; @@ -28,7 +28,7 @@ struct contestMove u8 combo[4]; }; -struct contestEffect +struct ContestEffect { u8 type; u8 appeal; @@ -37,7 +37,7 @@ struct contestEffect -extern struct unkSummaryStruct* gUnknown_0203CF1C; +extern struct UnkSummaryStruct* gUnknown_0203CF1C; extern struct BgTemplate gUnknown_0861CBB4; extern u8 gUnknown_0203CF20; extern struct MusicPlayerInfo gMPlay_BGM; @@ -50,8 +50,8 @@ extern struct unkStruct_61CC04 gUnknown_0861CC10; extern struct unkStruct_61CC04 gUnknown_0861CBEC; extern struct unkStruct_61CC04 gUnknown_0861CBF8; extern u16 gUnknown_08DC3CD4[]; -extern struct contestMove gContestMoves[]; -extern struct contestEffect gContestEffects[]; +extern struct ContestMove gContestMoves[]; +extern struct ContestEffect gContestEffects[]; extern struct WindowTemplate gUnknown_0861CC24; extern struct TextColor gUnknown_0861CD2C[]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; @@ -289,14 +289,14 @@ u8 sub_81B1250(); union unkUnion { - struct Pokemon mons[6]; - struct BoxPokemon boxMons[6]; + struct Pokemon mon[6]; + struct BoxPokemon boxMon[6]; }; u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, u8 d); -struct pokeSummary +struct PokeSummary { u16 species; // 0x0 u16 species2; // 0x2 @@ -304,7 +304,7 @@ struct pokeSummary u8 level; // 0x5 u8 ribbons; // 0x6 u8 unk7; // 0x7 - u8 altability; // 0x8 + u8 altAbility; // 0x8 u8 metLocation; // 0x9 u8 metLevel; // 0xA u8 metGame; // 0xB @@ -330,13 +330,13 @@ struct pokeSummary u32 OTID; // 0x48 }; -struct unkSummaryStruct +struct UnkSummaryStruct { /*0x00*/ union unkUnion *unk0; /*0x04*/ void *unk4; /*0x08*/ void *unk8; /*0x0C*/ struct Pokemon currentPoke; - /*0x70*/ struct pokeSummary summary; + /*0x70*/ struct PokeSummary summary; u16 unkTilemap0[0x400]; u16 unkTilemap0_1[0x400]; u16 unkTilemap1[0x400]; @@ -583,8 +583,8 @@ void sub_81BFE24() schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); schedule_bg_copy_tilemap_to_vram(3); - SetGpuReg(0, 0x1040); - SetGpuReg(0x50, 0); + SetGpuReg(REG_OFFSET_DISPCNT, 0x1040); + SetGpuReg(REG_OFFSET_BLDCNT, 0); ShowBg(0); ShowBg(1); ShowBg(2); @@ -660,20 +660,20 @@ void sub_81C0098(struct Pokemon *poke) { if (gUnknown_0203CF1C->unk40BD == 0) { - struct Pokemon *pokeMons = gUnknown_0203CF1C->unk0->mons; - *poke = pokeMons[gUnknown_0203CF1C->unk40BE]; + struct Pokemon *partyMon = gUnknown_0203CF1C->unk0->mon; + *poke = partyMon[gUnknown_0203CF1C->unk40BE]; } else { - struct BoxPokemon *boxMons = gUnknown_0203CF1C->unk0->boxMons; - sub_8069004(&boxMons[gUnknown_0203CF1C->unk40BE], poke); + struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon; + sub_8069004(&boxMon[gUnknown_0203CF1C->unk40BE], poke); } } bool8 sub_81C00F0(struct Pokemon *a) { u32 i; - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; switch (gUnknown_0203CF1C->unk40F0) { case 0: @@ -681,7 +681,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->species2 = GetMonData(a, MON_DATA_SPECIES2); sum->exp = GetMonData(a, MON_DATA_EXP); sum->level = GetMonData(a, MON_DATA_LEVEL); - sum->altability = GetMonData(a, MON_DATA_ALT_ABILITY); + sum->altAbility = GetMonData(a, MON_DATA_ALT_ABILITY); sum->item = GetMonData(a, MON_DATA_HELD_ITEM); sum->pid = GetMonData(a, MON_DATA_PERSONALITY); sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1); @@ -968,7 +968,7 @@ void sub_81C0704(u8 taskId) s8 sub_81C08F8(s8 a) { - struct Pokemon *mons = gUnknown_0203CF1C->unk0->mons; + struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon; if (gUnknown_0203CF1C->unk40C0 == 0) { @@ -987,14 +987,14 @@ s8 sub_81C08F8(s8 a) index += a; if (index < 0 || index > gUnknown_0203CF1C->unk40BF) return -1; - } while (GetMonData(&mons[index], MON_DATA_IS_EGG) != 0); + } while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0); return index; } } s8 sub_81C09B4(s8 a) { - struct Pokemon *mons = gUnknown_0203CF1C->unk0->mons; + struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon; s8 r5 = 0; u8 i; @@ -1016,7 +1016,7 @@ s8 sub_81C09B4(s8 a) if (r5 < 0 || r5 >= 6) return -1; b = c[r5]; - if (sub_81C0A50(&mons[b]) == TRUE) + if (sub_81C0A50(&mon[b]) == TRUE) return b; } } @@ -1033,7 +1033,7 @@ bool8 sub_81C0A50(struct Pokemon* mon) void sub_81C0A8C(u8 taskId, s8 b) { - struct pokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; s16 *data = gTasks[taskId].data; if (summary->isEgg) @@ -1357,12 +1357,12 @@ void sub_81C13B0(u8 taskId, u8 b) { if (gUnknown_0203CF1C->unk40BD == 0) { - struct Pokemon *why = gUnknown_0203CF1C->unk0->mons; + struct Pokemon *why = gUnknown_0203CF1C->unk0->mon; sub_81C14BC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); } else { - struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMons; + struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMon; sub_81C15EC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); } sub_81C0098(&gUnknown_0203CF1C->currentPoke); @@ -2469,7 +2469,7 @@ void sub_81C228C(u8 a) void sub_81C22CC(struct Pokemon *unused) { s64 r6r7; - struct pokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; u16 *r9; u8 i; @@ -2579,7 +2579,7 @@ void sub_81C2628() { u8 strArray[16]; struct Pokemon *mon = &gUnknown_0203CF1C->currentPoke; - struct pokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; u16 r5 = SpeciesToPokedexNum(summary->species); if (r5 != 0xFFFF) { @@ -2981,19 +2981,19 @@ void sub_81C2F5C() void sub_81C2FD8() { - u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altability); + u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); } void sub_81C302C() { - u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altability); + u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); } void sub_81C307C() { - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 *text; sub_81AFBF0(); sub_81AFC0C(0, gUnknown_0861CE74); @@ -3037,7 +3037,7 @@ void sub_81C3194() void sub_81C31C0() { - struct unkSummaryStruct *sumStruct = gUnknown_0203CF1C; + struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C; sub_81AFC0C(2, gNatureNamePointers[sumStruct->summary.nature]); sub_81AFC0C(5, gText_EmptyString5); } @@ -3053,7 +3053,7 @@ void sub_81C31F0(u8 *a) u8 sub_81C3220() { - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u32 r4; u8 r5; if (gUnknown_0203CF1C->unk0 == (union unkUnion *)&gEnemyParty) @@ -3078,7 +3078,7 @@ u8 sub_81C3220() u8 sub_81C32BC() { - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r0 = sum->metGame - 1; if (r0 <= 4) return 1; @@ -3087,7 +3087,7 @@ u8 sub_81C32BC() u8 sub_81C32E0() { - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r0 = sum->metGame - 1; if (r0 <= 2) return 1; @@ -3179,7 +3179,7 @@ void sub_81C33CC() void sub_81C3428() { u8 *text; - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; if (gUnknown_0203CF1C->summary.sanity == 1) text = gText_EggWillTakeALongTime; else if (sum->friendship <= 5) @@ -3196,7 +3196,7 @@ void sub_81C3428() void sub_81C349C() { u8 *text; - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; if (gUnknown_0203CF1C->summary.sanity != 1) { if (sum->metLocation == 0xFF) @@ -3339,7 +3339,7 @@ void sub_81C3890() void sub_81C38C0() { - struct pokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r6 = sub_81C2D2C(&gUnknown_0861CCEC, 4); int offset; u32 expToNextLevel; @@ -3423,7 +3423,7 @@ void sub_81C39F0(u8 taskId) #ifdef NONMATCHING void sub_81C3B08(u8 a) { - struct unkSummaryStruct *r10 = gUnknown_0203CF1C; + struct UnkSummaryStruct *r10 = gUnknown_0203CF1C; u8 r8 = sub_81C2D2C(&gUnknown_0861CD14, 0); u8 sp = sub_81C2D2C(&gUnknown_0861CD14, 1); u8 r6; From 2a60aefed6d00d94adc7d1aa67871dc66f71f18a Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Fri, 20 Oct 2017 16:28:38 -0400 Subject: [PATCH 167/182] updating --- src/pokemon_summary_screen.c | 50 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 4ab36392d7..57f4340b85 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -203,7 +203,7 @@ void sub_81C240C(u16 a); void sub_81C2194(u16 *a, u16 b, u8 c); void sub_81C2074(u16 a, s16 b); void sub_81C2524(); -void sub_81C2228(struct Pokemon* poke); +void sub_81C2228(struct Pokemon* mon); void sub_81C0484(u8 taskId); void sub_81C4898(); void sub_806F47C(u8 a); @@ -287,14 +287,14 @@ void SetBgAttribute(u8 bg, u8 attributeId, u8 value); bool8 sub_81BFB10(); u8 sub_81B1250(); -union unkUnion +union UnkUnion { struct Pokemon mon[6]; struct BoxPokemon boxMon[6]; }; -u8 sub_80D214C(union unkUnion* a, u8 b, u8 c, u8 d); +u8 sub_80D214C(union UnkUnion* a, u8 b, u8 c, u8 d); struct PokeSummary { @@ -332,10 +332,10 @@ struct PokeSummary struct UnkSummaryStruct { - /*0x00*/ union unkUnion *unk0; + /*0x00*/ union UnkUnion *unk0; /*0x04*/ void *unk4; /*0x08*/ void *unk8; - /*0x0C*/ struct Pokemon currentPoke; + /*0x0C*/ struct Pokemon currentMon; /*0x70*/ struct PokeSummary summary; u16 unkTilemap0[0x400]; u16 unkTilemap0_1[0x400]; @@ -490,12 +490,12 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 9: - sub_81C0098(&gUnknown_0203CF1C->currentPoke); + sub_81C0098(&gUnknown_0203CF1C->currentMon); gUnknown_0203CF1C->unk40F0 = 0; gMain.state++; break; case 10: - if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) != 0) + if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) != 0) gMain.state++; break; case 11: @@ -525,7 +525,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 17: - gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &gUnknown_0203CF1C->unk40F0); + gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &gUnknown_0203CF1C->unk40F0); if (gUnknown_0203CF1C->unk40D3 != 0xFF) { gUnknown_0203CF1C->unk40F0 = 0; @@ -533,11 +533,11 @@ bool8 sub_81BFB10(void) } break; case 18: - sub_81C4984(&gUnknown_0203CF1C->currentPoke); + sub_81C4984(&gUnknown_0203CF1C->currentMon); gMain.state++; break; case 19: - sub_81C4A08(&gUnknown_0203CF1C->currentPoke); + sub_81C4A08(&gUnknown_0203CF1C->currentMon); gMain.state++; break; case 20: @@ -656,17 +656,17 @@ u8 sub_81BFEB0() return 0; } -void sub_81C0098(struct Pokemon *poke) +void sub_81C0098(struct Pokemon *mon) { if (gUnknown_0203CF1C->unk40BD == 0) { struct Pokemon *partyMon = gUnknown_0203CF1C->unk0->mon; - *poke = partyMon[gUnknown_0203CF1C->unk40BE]; + *mon = partyMon[gUnknown_0203CF1C->unk40BE]; } else { struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon; - sub_8069004(&boxMon[gUnknown_0203CF1C->unk40BE], poke); + sub_8069004(&boxMon[gUnknown_0203CF1C->unk40BE], mon); } } @@ -769,7 +769,7 @@ void sub_81C0348(void) PutWindowTilemap(0xD); } sub_81C2524(); - sub_81C2228(&gUnknown_0203CF1C->currentPoke); + sub_81C2228(&gUnknown_0203CF1C->currentMon); } void sub_81C0434() @@ -915,27 +915,27 @@ void sub_81C0704(u8 taskId) DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]); break; case 3: - sub_81C0098(&gUnknown_0203CF1C->currentPoke); + sub_81C0098(&gUnknown_0203CF1C->currentMon); gUnknown_0203CF1C->unk40F0 = 0; break; case 4: - if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) == FALSE) + if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) == FALSE) return; break; case 5: - sub_81C49E0(&gUnknown_0203CF1C->currentPoke); + sub_81C49E0(&gUnknown_0203CF1C->currentMon); break; case 6: - sub_81C4A08(&gUnknown_0203CF1C->currentPoke); + sub_81C4A08(&gUnknown_0203CF1C->currentMon); break; case 7: if (gUnknown_0203CF1C->summary.unk7) sub_81C2074(10, -2); - sub_81C2228(&gUnknown_0203CF1C->currentPoke); + sub_81C2228(&gUnknown_0203CF1C->currentMon); data[1] = 0; break; case 8: - gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &data[1]); + gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]); if (gUnknown_0203CF1C->unk40D3 == 0xFF) return; gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1; @@ -1149,7 +1149,7 @@ void sub_81C0D44(u8 taskId) void sub_81C0E24() { if (gUnknown_0203CF1C->unk40C0 == 1) - sub_81C22CC(&gUnknown_0203CF1C->currentPoke); + sub_81C22CC(&gUnknown_0203CF1C->currentMon); } void sub_81C0E48(u8 taskId) @@ -1365,7 +1365,7 @@ void sub_81C13B0(u8 taskId, u8 b) struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMon; sub_81C15EC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); } - sub_81C0098(&gUnknown_0203CF1C->currentPoke); + sub_81C0098(&gUnknown_0203CF1C->currentMon); sub_81C40A0(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); sub_81C4568(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); gUnknown_0203CF1C->unk40C6 = gUnknown_0203CF1C->unk40C7; @@ -2578,7 +2578,7 @@ void sub_81C25E8() void sub_81C2628() { u8 strArray[16]; - struct Pokemon *mon = &gUnknown_0203CF1C->currentPoke; + struct Pokemon *mon = &gUnknown_0203CF1C->currentMon; struct PokeSummary *summary = &gUnknown_0203CF1C->summary; u16 r5 = SpeciesToPokedexNum(summary->species); if (r5 != 0xFFFF) @@ -2622,7 +2622,7 @@ void sub_81C2628() void sub_81C2794() { - GetMonNickname(&gUnknown_0203CF1C->currentPoke, gStringVar1); + GetMonNickname(&gUnknown_0203CF1C->currentMon, gStringVar1); sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); PutWindowTilemap(18); ClearWindowTilemap(17); @@ -3056,7 +3056,7 @@ u8 sub_81C3220() struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u32 r4; u8 r5; - if (gUnknown_0203CF1C->unk0 == (union unkUnion *)&gEnemyParty) + if (gUnknown_0203CF1C->unk0 == (union UnkUnion *)&gEnemyParty) { u8 multiID = GetMultiplayerId()^1; r4 = (u16)gLinkPlayers[multiID].trainerId; From 77ef72f782e9d86d4b9e7eebaa9ca186570b5e61 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Fri, 20 Oct 2017 16:31:12 -0400 Subject: [PATCH 168/182] updating --- src/pokemon_summary_screen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 57f4340b85..05cd0b2d19 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -372,7 +372,7 @@ struct UnkSummaryStruct void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e) { u8 byte; - gUnknown_0203CF1C = AllocZeroed(0x40F8); + gUnknown_0203CF1C = AllocZeroed(sizeof(struct UnkSummaryStruct)); gUnknown_0203CF1C->unk40BC = a; gUnknown_0203CF1C->unk0 = b; gUnknown_0203CF1C->unk40BE = c; From ae53458622db5321f10092fe1585474813b0edcd Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 21 Oct 2017 00:44:17 -0400 Subject: [PATCH 169/182] decompile clear_save_data_screen. --- asm/clear_save_data_screen.s | 399 ---------------------------------- asm/title_screen.s | 2 +- data/clear_save_data_screen.s | 17 -- ld_script.txt | 4 +- src/clear_save_data_screen.c | 212 ++++++++++++++++++ 5 files changed, 215 insertions(+), 419 deletions(-) delete mode 100644 asm/clear_save_data_screen.s delete mode 100644 data/clear_save_data_screen.s create mode 100755 src/clear_save_data_screen.c diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s deleted file mode 100644 index 5efff250c9..0000000000 --- a/asm/clear_save_data_screen.s +++ /dev/null @@ -1,399 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start c2_clear_save_data_screen_2 -c2_clear_save_data_screen_2: @ 817ACC8 - push {lr} - bl sub_817AE00 - lsls r0, 24 - cmp r0, 0 - beq _0817ACDC - ldr r0, =sub_817ACE4 - movs r1, 0 - bl CreateTask -_0817ACDC: - pop {r0} - bx r0 - .pool - thumb_func_end c2_clear_save_data_screen_2 - - thumb_func_start sub_817ACE4 -sub_817ACE4: @ 817ACE4 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0xE - bl SetWindowBorderStyle - ldr r2, =gText_ClearAllSaveData - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r1, 0x1 - movs r3, 0 - bl PrintTextOnWindow - ldr r0, =gUnknown_085F06D8 - movs r1, 0x2 - movs r2, 0xE - movs r3, 0x1 - bl CreateYesNoMenu - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_817AD40 - str r1, [r0] - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817ACE4 - - thumb_func_start sub_817AD40 -sub_817AD40: @ 817AD40 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8198C58 - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - beq _0817AD68 - cmp r4, 0 - bgt _0817AD62 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _0817ADA0 - b _0817ADB2 -_0817AD62: - cmp r4, 0x1 - beq _0817ADA0 - b _0817ADB2 -_0817AD68: - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, =gText_ClearingData - movs r0, 0x1 - str r0, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0 - movs r1, 0x1 - movs r3, 0 - bl PrintTextOnWindow - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_817ADC0 - str r1, [r0] - b _0817ADB2 - .pool -_0817ADA0: - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl DestroyTask - ldr r0, =sub_817AFD4 - bl SetMainCallback2 -_0817ADB2: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817AD40 - - thumb_func_start sub_817ADC0 -sub_817ADC0: @ 817ADC0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ClearSaveData - adds r0, r4, 0 - bl DestroyTask - ldr r0, =sub_817AFD4 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817ADC0 - - thumb_func_start sub_817ADE4 -sub_817ADE4: @ 817ADE4 - push {lr} - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_817ADE4 - - thumb_func_start sub_817ADF4 -sub_817ADF4: @ 817ADF4 - push {lr} - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_817ADF4 - - thumb_func_start sub_817AE00 -sub_817AE00: @ 817AE00 - push {r4,lr} - sub sp, 0xC - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0817AE18 - cmp r0, 0x1 - bne _0817AE18 - b _0817AFA4 -_0817AE18: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - add r0, sp, 0x4 - movs r4, 0 - strh r4, [r0] - ldr r1, =0x040000d4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r2, [r0] - str r0, [r1] - ldr r0, =0x05000002 - str r0, [r1, 0x4] - ldr r0, =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - ldr r2, =gPlttBufferUnfaded - ldr r0, =0x00007fff - strh r0, [r2] - ldr r1, =gPlttBufferFaded - strh r0, [r1] - ldr r0, =0x00003945 - strh r0, [r2, 0x2] - strh r0, [r1, 0x2] - movs r1, 0 - ldr r3, =0x06000020 - ldr r0, =0x00001111 - adds r2, r0, 0 -_0817AED4: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _0817AED4 - movs r1, 0 - ldr r4, =0x0600f000 - movs r3, 0x1 - ldr r2, =0x000003ff -_0817AEEC: - lsls r0, r1, 1 - adds r0, r4 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bls _0817AEEC - bl ResetTasks - bl ResetSpriteData - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085F06C0 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - bl sub_817B02C - ldr r0, =0x0000ffff - str r0, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - bl EnableInterrupts - ldr r0, =sub_817ADF4 - bl SetVBlankCallback - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _0817AFC8 - .pool -_0817AFA4: - bl UpdatePaletteFade - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0817AFC8 - ldr r0, =sub_817ADE4 - bl SetMainCallback2 - movs r0, 0x1 - b _0817AFCA - .pool -_0817AFC8: - movs r0, 0 -_0817AFCA: - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_817AE00 - - thumb_func_start sub_817AFD4 -sub_817AFD4: @ 817AFD4 - push {r4,lr} - sub sp, 0x4 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _0817AFEA - cmp r0, 0x1 - beq _0817B008 -_0817AFEA: - ldr r0, =0x0000ffff - str r0, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x1 - strb r0, [r4] - b _0817B020 - .pool -_0817B008: - bl UpdatePaletteFade - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0817B020 - bl FreeAllWindowBuffers - bl DoSoftReset -_0817B020: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817AFD4 - - thumb_func_start sub_817B02C -sub_817B02C: @ 817B02C - push {lr} - ldr r0, =gUnknown_085F06C8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0xE0 - bl sub_80987D4 - ldr r0, =gUnknown_0860F074 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - pop {r0} - bx r0 - .pool - thumb_func_end sub_817B02C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/title_screen.s b/asm/title_screen.s index 961b142101..bc9401fb6a 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -1228,7 +1228,7 @@ c2_clear_save_data_screen_1: @ 80AAEF0 lsls r0, 24 cmp r0, 0 bne _080AAF02 - ldr r0, =c2_clear_save_data_screen_2 + ldr r0, =CB2_InitClearSaveDataScreen bl SetMainCallback2 _080AAF02: pop {r0} diff --git a/data/clear_save_data_screen.s b/data/clear_save_data_screen.s deleted file mode 100644 index 3abf9bf6d3..0000000000 --- a/data/clear_save_data_screen.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_085F06C0:: @ 85F06C0 - .4byte 0x000001f0, 0x000011e3 - - .align 2 -gUnknown_085F06C8:: @ 85F06C8 - window_template 0x00, 0x03, 0x0f, 0x1a, 0x04, 0x0f, 0x000b - window_template_terminator - - .align 2 -gUnknown_085F06D8:: @ 85F06D8 - window_template 0x00, 0x03, 0x02, 0x05, 0x04, 0x0f, 0x0073 diff --git a/ld_script.txt b/ld_script.txt index 163d72e256..096d3cf857 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -223,7 +223,7 @@ SECTIONS { src/save_failed_screen.o(.text); src/braille_puzzles.o(.text); asm/pokeblock_feed.o(.text); - asm/clear_save_data_screen.o(.text); + src/clear_save_data_screen.o(.text); asm/intro_credits_graphics.o(.text); asm/evolution_graphics.o(.text); asm/bard_music.o(.text); @@ -440,7 +440,7 @@ SECTIONS { src/save_failed_screen.o(.rodata); data/braille_puzzles.o(.rodata); data/pokeblock_feed.o(.rodata); - data/clear_save_data_screen.o(.rodata); + src/clear_save_data_screen.o(.rodata); data/intro_credits_graphics.o(.rodata); data/evolution_graphics.o(.rodata); data/bard_music.o(.rodata); diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c new file mode 100755 index 0000000000..4e3b129926 --- /dev/null +++ b/src/clear_save_data_screen.c @@ -0,0 +1,212 @@ +#include "global.h" +#include "task.h" +#include "menu.h" +#include "text.h" +#include "sound.h" +#include "main.h" +#include "save.h" +#include "palette.h" +#include "gpu_regs.h" +#include "bg.h" +#include "text_window.h" +#include "songs.h" + +extern void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); // menu.s +extern s8 sub_8198C58(void); // menu.s + +extern u8 gText_ClearAllSaveData[]; +extern u8 gText_ClearingData[]; + +extern u16 gUnknown_0860F074[]; + +static void Task_DoClearSaveDataScreenYesNo(u8); +static void Task_ClearSaveDataScreenYesNoChoice(u8); +static void Task_ClearSaveData(u8); +static bool8 SetupClearSaveDataScreen(void); +static void CB2_FadeAndDoReset(void); +static void InitClearSaveDataScreenWindows(void); + +static const struct BgTemplate sClearSaveBgTemplates[2] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, +}; + +static const struct WindowTemplate sClearSaveTextWindow[] = +{ + { + .priority = 0, + .tilemapLeft = 3, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 11, + }, + DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sClearSaveYesNo[] = +{ + { + .priority = 0, + .tilemapLeft = 3, + .tilemapTop = 2, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 115, + } +}; + +void CB2_InitClearSaveDataScreen(void) +{ + if(SetupClearSaveDataScreen()) + CreateTask(Task_DoClearSaveDataScreenYesNo, 0); +} + +static void Task_DoClearSaveDataScreenYesNo(u8 taskId) +{ + SetWindowBorderStyle(0, 0, 2, 14); + PrintTextOnWindow(0, 1, gText_ClearAllSaveData, 0, 1, 0, 0); + CreateYesNoMenu(sClearSaveYesNo, 2, 14, 1); + gTasks[taskId].func = Task_ClearSaveDataScreenYesNoChoice; +} + +static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId) +{ + switch(sub_8198C58()) + { + case 0: + FillWindowPixelBuffer(0, 17); + PrintTextOnWindow(0, 1, gText_ClearingData, 0, 1, 0, 0); + gTasks[taskId].func = Task_ClearSaveData; + break; + case 1: + case -1: + PlaySE(SE_SELECT); + DestroyTask(taskId); + SetMainCallback2(CB2_FadeAndDoReset); + } +} + +static void Task_ClearSaveData(u8 taskId) +{ + ClearSaveData(); + DestroyTask(taskId); + SetMainCallback2(CB2_FadeAndDoReset); +} + +static void MainCB(void) +{ + RunTasks(); + UpdatePaletteFade(); +} + +static void VBlankCB(void) +{ + TransferPlttBuffer(); +} + +static bool8 SetupClearSaveDataScreen(void) +{ + u16 i; + + switch(gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_WIN0H, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_WIN0V, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_WININ, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_WINOUT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDALPHA, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0); + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + ResetPaletteFade(); + gPlttBufferUnfaded[0] = 0x7fff; + gPlttBufferFaded[0] = 0x7fff; + gPlttBufferUnfaded[1] = 0x3945; + gPlttBufferFaded[1] = 0x3945; + for (i = 0; i < 0x10; i++) + ((u16 *)(VRAM + 0x20))[i] = 0x1111; + + for (i = 0; i < 0x400; i++) + ((u16 *)(VRAM + 0xF000))[i] = 0x0001; + ResetTasks(); + ResetSpriteData(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sClearSaveBgTemplates, ARRAY_COUNT(sClearSaveBgTemplates)); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ShowBg(0); + ShowBg(3); + SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0); + InitClearSaveDataScreenWindows(); + BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, 0xFFFF); + EnableInterrupts(1); + SetVBlankCallback(VBlankCB); + gMain.state = 1; + break; + case 1: + UpdatePaletteFade(); + if(!gPaletteFade.active) + { + SetMainCallback2(MainCB); + return TRUE; + } + } + return FALSE; +} + +static void CB2_FadeAndDoReset(void) +{ + switch(gMain.state) + { + case 0: + default: + BeginNormalPaletteFade(0x0000FFFF, 0, 0, 0x10, 0xFFFF); + gMain.state = 1; + break; + case 1: + UpdatePaletteFade(); + if(!gPaletteFade.active) + { + FreeAllWindowBuffers(); + DoSoftReset(); + } + } +} + +static void InitClearSaveDataScreenWindows(void) +{ + InitWindows(sClearSaveTextWindow); + DeactivateAllTextPrinters(); + FillWindowPixelBuffer(0, 0); + sub_80987D4(0, 0, 2, 224); + LoadPalette(gUnknown_0860F074, 0xF0, 0x20); +} From fd464a546c3c6b975430085cfd506eea3d8f674f Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Sat, 21 Oct 2017 14:11:32 -0400 Subject: [PATCH 170/182] updating --- src/pokemon_summary_screen.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 05cd0b2d19..7a7b6604e2 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -281,6 +281,7 @@ void sub_81C3890(); void sub_81C38C0(); void sub_81C3B08(u8 a); void sub_81C3E2C(u8 a); +void sub_81C4D18(); void SetBgAttribute(u8 bg, u8 attributeId, u8 value); @@ -1233,8 +1234,6 @@ bool8 sub_81C1040(void) return FALSE; } -void sub_81C4D18(); - void sub_81C1070(s16 *a, s8 b, u8 *c) { s8 i; From 482b42a295a80952cea75a8176183692b8e8d120 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sat, 21 Oct 2017 13:42:31 -0600 Subject: [PATCH 171/182] Split librfu into separate C files in its own directory, rfu_initializeAPI matching except for register differences --- include/librfu.h | 108 +++++++++++++++++++++++++++++++ ld_script.txt | 4 +- src/librfu_intr.c | 4 ++ src/librfu_rfu.c | 109 +++++++++++++++++++++++++++++++ src/{librfu.c => librfu_stwi.c} | 111 ++------------------------------ 5 files changed, 229 insertions(+), 107 deletions(-) create mode 100644 include/librfu.h create mode 100644 src/librfu_intr.c create mode 100644 src/librfu_rfu.c rename src/{librfu.c => librfu_stwi.c} (89%) diff --git a/include/librfu.h b/include/librfu.h new file mode 100644 index 0000000000..dbc8a41a62 --- /dev/null +++ b/include/librfu.h @@ -0,0 +1,108 @@ +#include "main.h" + +enum +{ + RFU_RESET = 0x10, + RFU_LINK_STATUS, + RFU_VERSION_STATUS, + RFU_SYSTEM_STATUS, + RFU_SLOT_STATUS, + RFU_CONFIG_STATUS, + RFU_GAME_CONFIG, + RFU_SYSTEM_CONFIG, + RFU_UNK18, + RFU_SC_START, + RFU_SC_POLLING, + RFU_SC_END, + RFU_SP_START, + RFU_SP_POLLING, + RFU_SP_END, + RFU_CP_START, + RFU_CP_POLLING, + RFU_CP_END, + RFU_UNK22, + RFU_UNK23, + RFU_DATA_TX, + RFU_DATA_TX_AND_CHANGE, + RFU_DATA_RX, + RFU_MS_CHANGE, + RFU_DATA_READY_AND_CHANGE, + RFU_DISCONNECTED_AND_CHANGE, + RFU_UNK2A, + RFU_UNK2B, + RFU_UNK2C, + RFU_UNK2D, + RFU_UNK2E, + RFU_UNK2F, + RFU_DISCONNECT, + RFU_TEST_MODE, + RFU_CPR_START, + RFU_CPR_POLLING, + RFU_CPR_END, + RFU_UNK35, + RFU_UNK36, + RFU_RESUME_RETRANSMIT_AND_CHANGE, + RFU_UNK38, + RFU_UNK39, + RFU_UNK3A, + RFU_UNK3B, + RFU_UNK3C, + RFU_STOP_MODE, //3D +}; + +struct RfuPacket8 +{ + u8 data[0x74]; +}; + +struct RfuPacket32 +{ + u32 command; + u32 data[0x1C]; +}; + +union RfuPacket +{ + struct RfuPacket32 rfuPacket32; + struct RfuPacket8 rfuPacket8; +}; + +struct RfuStruct +{ + vs32 unk_0; + u8 txParams; + u8 unk_5; + u8 activeCommand; + u8 unk_7; + u8 unk_8; + u8 unk_9; + u8 timerSelect; + u8 unk_b; + int timerState; + vu8 timerActive; + u8 unk_11; + vu16 unk_12; + vu8 msMode; + u8 unk_15; + u8 unk_16; + u8 unk_17; + void (*callbackM)(); + void (*callbackS)(); + u32 callbackID; + union RfuPacket *txPacket; + union RfuPacket *rxPacket; + vu8 unk_2c; + u8 padding[3]; +}; + +struct RfuIntrStruct +{ + u8 rxPacketAlloc[0x74]; + u8 txPacketAlloc[0x74]; + u8 block1[0x960]; + u8 block2[0x30]; +}; + +extern struct RfuStruct *gRfuState; + +void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); diff --git a/ld_script.txt b/ld_script.txt index 450e9125f8..2b30d306ba 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -244,8 +244,10 @@ SECTIONS { src/agb_flash_1m.o(.text); src/agb_flash_mx.o(.text); src/siirtc.o(.text); - src/librfu.o(.text); + src/librfu_stwi.o(.text); + src/librfu_intr.o(.text); asm/librfu_intr.o(.text); + src/librfu_rfu.o(.text); asm/librfu.o(.text); asm/libagbsyscall.o(.text); tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); diff --git a/src/librfu_intr.c b/src/librfu_intr.c new file mode 100644 index 0000000000..bdf8b072a6 --- /dev/null +++ b/src/librfu_intr.c @@ -0,0 +1,4 @@ +#include "global.h" +#include "main.h" + +//TODO: decompile asm/librfu_intr.s to here diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c new file mode 100644 index 0000000000..cf3fe12ad4 --- /dev/null +++ b/src/librfu_rfu.c @@ -0,0 +1,109 @@ +#include "global.h" +#include "main.h" + +#include "librfu.h" + +struct RfuUnk1 +{ + u8 unk_0[0x14]; + u32 unk_14; + u32 unk_18; + struct RfuIntrStruct unk_1c; +}; + +struct RfuUnk2 +{ + u8 unk_0[0x68]; + u32 unk_68; + u32 unk_6c; + u8 unk_70[0x70]; +}; + +struct RfuUnk3 +{ + u32 unk_0; + u32 unk_4; + u8 unk_8[0xD4]; + u32 unk_dc; +}; + +extern u32 *gUnknown_03007890; +extern u32 *gUnknown_03007894; +extern struct RfuUnk3* gUnknown_03007898; +extern struct RfuUnk2* gUnknown_03007880[4]; +extern struct RfuUnk1* gUnknown_03007870[4]; +extern void* sub_82E53F4; +extern void rfu_STC_clearAPIVariables(void); + +// Nonmatching, only register differences +/*u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam) +{ + u16 i; + u16 *v13; + u16 *v12; + u16 num; + + if (((u32)unk0 & 0xF000000) == 0x2000000 && copyInterruptToRam) + { + return 2; + } + + if ((u32)unk0 & 3) + return 2; + + // Nintendo pls, just use a ternary for once + if (copyInterruptToRam) + { + // An assert/debug print may have existed before, ie + // printf("%s %u < %u", "somefile.c:12345", unk1, num) + // to push this into r3? + num = 0xe64; + if (unk1 < num) + return 1; + } + + if (copyInterruptToRam == FALSE) + { + num = 0x504; // same as above, this should be r3 not r0 + if (unk1 < num) + return 1; + } + gUnknown_03007890 = unk0; + gUnknown_03007894 = unk0 + (0xB4 / sizeof(u32)); + gUnknown_03007898 = (struct RfuUnk3*)(unk0 + (0xDC / sizeof(u32))); + gUnknown_03007880[0] = (struct RfuUnk2*)(unk0 + (0x1BC / sizeof(u32))); + gUnknown_03007870[0] = (struct RfuUnk1*)(unk0 + (0x37C / sizeof(u32))); + + for (i = 1; i < 4; i++, num) + { + gUnknown_03007880[i] = (struct RfuUnk2*)&gUnknown_03007880[i-1]->unk_70; + gUnknown_03007870[i] = (struct RfuUnk1*)&gUnknown_03007870[i-1]->unk_1c; + } + + gUnknown_03007898->unk_dc = (u32)&gUnknown_03007870[3]->unk_1c; + STWI_init_all(&gUnknown_03007870[3]->unk_1c, interrupt, copyInterruptToRam); + rfu_STC_clearAPIVariables(); + + for (i = 0; i < 4; i++) + { + gUnknown_03007880[i]->unk_68 = 0; + gUnknown_03007880[i]->unk_6c = 0; + gUnknown_03007870[i]->unk_14 = 0; + gUnknown_03007870[i]->unk_18 = 0; + } + + // Not matching, register differences + v12 = (u16*)((u32)&sub_82E53F4 & ~1); + v13 = (u16*)gUnknown_03007898->unk_8; + + for (i = 47; i != 0xFFFF; i--) + { + *v13 = *v12; + ++v12; + ++v13; + } + + gUnknown_03007898->unk_4 = (u32)(&gUnknown_03007898->unk_8[1]); + + return 0; +}*/ diff --git a/src/librfu.c b/src/librfu_stwi.c similarity index 89% rename from src/librfu.c rename to src/librfu_stwi.c index e647b91787..21d38bb38a 100644 --- a/src/librfu.c +++ b/src/librfu_stwi.c @@ -1,111 +1,10 @@ #include "global.h" -#include "main.h" - -enum -{ - RFU_RESET = 0x10, - RFU_LINK_STATUS, - RFU_VERSION_STATUS, - RFU_SYSTEM_STATUS, - RFU_SLOT_STATUS, - RFU_CONFIG_STATUS, - RFU_GAME_CONFIG, - RFU_SYSTEM_CONFIG, - RFU_UNK18, - RFU_SC_START, - RFU_SC_POLLING, - RFU_SC_END, - RFU_SP_START, - RFU_SP_POLLING, - RFU_SP_END, - RFU_CP_START, - RFU_CP_POLLING, - RFU_CP_END, - RFU_UNK22, - RFU_UNK23, - RFU_DATA_TX, - RFU_DATA_TX_AND_CHANGE, - RFU_DATA_RX, - RFU_MS_CHANGE, - RFU_DATA_READY_AND_CHANGE, - RFU_DISCONNECTED_AND_CHANGE, - RFU_UNK2A, - RFU_UNK2B, - RFU_UNK2C, - RFU_UNK2D, - RFU_UNK2E, - RFU_UNK2F, - RFU_DISCONNECT, - RFU_TEST_MODE, - RFU_CPR_START, - RFU_CPR_POLLING, - RFU_CPR_END, - RFU_UNK35, - RFU_UNK36, - RFU_RESUME_RETRANSMIT_AND_CHANGE, - RFU_UNK38, - RFU_UNK39, - RFU_UNK3A, - RFU_UNK3B, - RFU_UNK3C, - RFU_STOP_MODE, //3D -}; - -struct RfuPacket8 -{ - u8 data[0x74]; -}; - -struct RfuPacket32 -{ - u32 command; - u32 data[0x1C]; -}; - -union RfuPacket -{ - struct RfuPacket32 rfuPacket32; - struct RfuPacket8 rfuPacket8; -}; - -struct RfuStruct -{ - vs32 unk_0; - u8 txParams; - u8 unk_5; - u8 activeCommand; - u8 unk_7; - u8 unk_8; - u8 unk_9; - u8 timerSelect; - u8 unk_b; - int timerState; - vu8 timerActive; - u8 unk_11; - vu16 unk_12; - vu8 msMode; - u8 unk_15; - u8 unk_16; - u8 unk_17; - void (*callbackM)(); - void (*callbackS)(); - u32 callbackID; - union RfuPacket *txPacket; - union RfuPacket *rxPacket; - vu8 unk_2c; - u8 padding[3]; -}; - -struct RfuIntrStruct -{ - u8 rxPacketAlloc[0x74]; - u8 txPacketAlloc[0x74]; - u8 block1[0x960]; - u8 block2[0x30]; -}; +#include "librfu.h" extern IntrFunc IntrSIO32(void); -extern struct RfuStruct *gRfuState; + +extern void STWI_stop_timer(void); + void STWI_init_Callback_M(void); void STWI_init_Callback_S(void); void STWI_set_Callback_M(void * callback); @@ -114,7 +13,7 @@ u16 STWI_init(u8 request); int STWI_start_Command(void); void STWI_intr_timer(void); void STWI_set_timer(u8 unk); -extern void STWI_stop_timer(void); + int STWI_restart_Command(void); int STWI_reset_ClockCounter(void); From a43d6d4a53717d26480872ed5e0c1e806170091a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 21 Oct 2017 23:20:50 -0400 Subject: [PATCH 172/182] review changes --- include/menu.h | 2 ++ src/clear_save_data_screen.c | 27 ++++++++++++--------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/include/menu.h b/include/menu.h index 480ffd1cef..48dd391585 100644 --- a/include/menu.h +++ b/include/menu.h @@ -23,5 +23,7 @@ void reset_temp_tile_data_buffers(void); int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd +void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); // menu.s +s8 sub_8198C58(void); // menu.s #endif // GUARD_MENU_H diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 4e3b129926..3192e0e116 100755 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -11,9 +11,6 @@ #include "text_window.h" #include "songs.h" -extern void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); // menu.s -extern s8 sub_8198C58(void); // menu.s - extern u8 gText_ClearAllSaveData[]; extern u8 gText_ClearingData[]; @@ -134,17 +131,17 @@ static bool8 SetupClearSaveDataScreen(void) default: SetVBlankCallback(NULL); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_WIN0H, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_WIN0V, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_WININ, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_WINOUT, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BLDALPHA, DISPCNT_MODE_0); - SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); DmaFill32(3, 0, (void *)OAM, OAM_SIZE); DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); @@ -165,7 +162,7 @@ static bool8 SetupClearSaveDataScreen(void) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); ShowBg(0); ShowBg(3); - SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); InitClearSaveDataScreenWindows(); BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, 0xFFFF); EnableInterrupts(1); From 29fb6d8d1e4dcf406bcfc6c60741bca63cd62014 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 21 Oct 2017 23:23:03 -0400 Subject: [PATCH 173/182] whoops --- include/menu.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/menu.h b/include/menu.h index 48dd391585..ce653274ce 100644 --- a/include/menu.h +++ b/include/menu.h @@ -23,7 +23,7 @@ void reset_temp_tile_data_buffers(void); int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd -void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); // menu.s -s8 sub_8198C58(void); // menu.s +void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); +s8 sub_8198C58(void); #endif // GUARD_MENU_H From 52d368a29a1680e0c0df1bb24d6979204fe2c518 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Sun, 22 Oct 2017 15:01:34 -0400 Subject: [PATCH 174/182] all done --- src/pokemon_summary_screen.c | 40 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 7a7b6604e2..724e345a46 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -45,10 +45,10 @@ extern s8 gUnknown_0861CC1C[]; extern u8 gUnknown_08329D22[]; extern u8 gUnknown_0203CF21; extern u16 gSpecialVar_0x8005; -extern struct unkStruct_61CC04 gUnknown_0861CC04; -extern struct unkStruct_61CC04 gUnknown_0861CC10; -extern struct unkStruct_61CC04 gUnknown_0861CBEC; -extern struct unkStruct_61CC04 gUnknown_0861CBF8; +extern struct UnkStruct_61CC04 gUnknown_0861CC04; +extern struct UnkStruct_61CC04 gUnknown_0861CC10; +extern struct UnkStruct_61CC04 gUnknown_0861CBEC; +extern struct UnkStruct_61CC04 gUnknown_0861CBF8; extern u16 gUnknown_08DC3CD4[]; extern struct ContestMove gContestMoves[]; extern struct ContestEffect gContestEffects[]; @@ -1862,12 +1862,12 @@ void sub_81C174C(u8 taskId) } } -u8 sub_81C18A8() +bool8 sub_81C18A8() { if (gUnknown_0203CF1C->unk40C6 == 4 || gUnknown_0203CF1C->unk40C4 == 0 || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]) != 1) - return 1; + return TRUE; else - return 0; + return FALSE; } void sub_81C18F4(u8 taskId) @@ -2017,7 +2017,7 @@ void sub_81C1BA0() Free(alloced); } -struct unkStruct_61CC04 +struct UnkStruct_61CC04 { u8 *ptr; u8 field_4; @@ -2029,7 +2029,7 @@ struct unkStruct_61CC04 }; #ifdef NONMATCHING -void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d) +void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d) { u8 *alloced = Alloc(a->field_6 * (a->field_7 << 1)); CpuFill16(a->field_4, alloced, a->field_7*a->field_6); @@ -2060,7 +2060,7 @@ void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d) } #else __attribute__((naked)) -void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d) +void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -2645,7 +2645,7 @@ void sub_81C27DC(struct Pokemon *mon, u16 a) } } -void sub_81C2838(u8 a, u8 b, u32 c) +void sub_81C2838(u8 a, bool8 b, u32 c) { BlitBitmapToWindow(a, (b) ? &gUnknown_0861CDD3[0] : &gUnknown_0861CDD3[0] - 0x80, c, 0, 16, 16); } @@ -3075,32 +3075,32 @@ u8 sub_81C3220() return 1; } -u8 sub_81C32BC() +bool8 sub_81C32BC() { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r0 = sum->metGame - 1; if (r0 <= 4) - return 1; - return 0; + return TRUE; + return FALSE; } -u8 sub_81C32E0() +bool8 sub_81C32E0() { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r0 = sum->metGame - 1; if (r0 <= 2) - return 1; - return 0; + return TRUE; + return FALSE; } -u8 sub_81C3304() +bool8 sub_81C3304() { if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) { if (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5) - return 1; + return TRUE; } - return 0; + return FALSE; } #ifdef NONMATCHING From 72dcfeddd7a47eda5e397066d91f2f18024363dd Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Sun, 22 Oct 2017 15:12:48 -0400 Subject: [PATCH 175/182] all done(I hope) --- src/pokemon_summary_screen.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 724e345a46..b2f18090b4 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -247,7 +247,7 @@ void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); void sub_81C40A0(u8 a, u8 b); void sub_81C4568(u8 a, u8 b); void sub_81C174C(u8 taskId); -u8 sub_81C18A8(); +bool8 sub_81C18A8(); void sub_81C18F4(u8 a); u8 sub_81B6D14(u16 a); void sub_81C1940(u8 taskId); @@ -268,10 +268,10 @@ void sub_81C302C(); void sub_81C307C(); void sub_81C3194(); void sub_81C31C0(); -u8 sub_81C3304(); +bool8 sub_81C3304(); void sub_81C31F0(u8 *a); u8 sub_81C3220(); -u8 sub_81C32BC(); +bool8 sub_81C32BC(); void sub_81C35E4(); void sub_81C3690(); void sub_81C3710(); @@ -1835,7 +1835,7 @@ void sub_81C174C(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - if (sub_81C18A8() == 1) + if (sub_81C18A8() == TRUE) { sub_81C48F0(); PlaySE(SE_SELECT); @@ -2998,7 +2998,7 @@ void sub_81C307C() sub_81AFC0C(0, gUnknown_0861CE74); sub_81AFC0C(1, gUnknown_0861CE7B); sub_81C31C0(); - if (sub_81A6BF4() == 1 || sub_81B9E94() == 1 || sub_81C3304() == 1) + if (sub_81A6BF4() == 1 || sub_81B9E94() == 1 || sub_81C3304() == TRUE) sub_81AFC28(gStringVar4, gText_XNature); else { @@ -3203,7 +3203,7 @@ void sub_81C349C() else if (sub_81C32BC() == 0 || sub_81C3220() == 0) text = gText_PeculiarEggTrade; else if (sum->metLocation == 0xFD) - text = (sub_81C32E0() == 1) ? gText_EggFromHotSprings : gText_EggFromTraveler; + text = (sub_81C32E0() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; else text = gText_OddEggFoundByCouple; } From c042e5148b9fa3a51a4010922c3f9cd6ba11b51e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 22 Oct 2017 18:55:07 -0400 Subject: [PATCH 176/182] Decoration + decoration_inventory (#89) * SetDecorationInventoriesPointers * ClearDecorationInventories * CheckHasDecoration * DecorationAdd * DecorationCheckSpace * DecorationRemove * sub_8161A38 * CountDecorations; Funcion renaming * Disassemble decoration data structs, tilemaps, and descriptions * sub_8126968 * sub_81269D4 * through sub_8126A88 * through sub_8126B2C * sub_8126B80 * sub_8126C08 * sub_8126C48 * sub_8126CA4 * sub_8126D10 * sub_8126E44 * sub_8126E8C * sub_8126F68 * sub_8127058 * sub_8127088 * sub_81270E8 * through sub_8127208 * through sub_8127268 * sub_8127284 * through sub_81272F8 * sub_8127330 * through sub_8127480 * sub_81274A0 * sub_8127500; makefile now tells scaninc to scan headers * Actual real fix to mapfile being in build/emerald instead of wd * through sub_812759C * through sub_812764C * through sub_8127744 * through sub_81277BC * sub_81277E8 * sub_8127814 * through sub_81279C4 * through sub_8127ACC * sub_8127B04 * sub_8127B54 * sub_8127B90 * sub_8127D38 * sub_8127E18 * sub_8127F68 * sub_8128060 * ConfigureCameraObjectForPlacingDecoration * SetUpPlacingDecorationPlayerAvatar * sub_812826C * through sub_8128414 * through sub_81284F4 * sub_812853C * sub_8128950 * through sub_8128AAC * through sub_8128BBC * c1_overworld_prev_quest * sub_8128C64 * sub_8128CD4 * sub_8128D10 * sub_8128DB4 * through sub_8128E18 * through sub_8129068 * sub_8129088 * through sub_81291E8 * sub_812925C * sub_81292D0 * sub_81292E8 * gpu_pal_decompress_alloc_tag_and_upload * AddDecorationIconObjectFromIconTable * GetDecorationIconPicOrPalette * AddDecorationIconObjectFromFieldObject * AddDecorationIconObject * through sub_8129708 * sub_81297F8 * sub_81298EC * SetUpPuttingAwayDecorationPlayerAvatar * sub_8129ABC * sub_8129B34 * sub_8129BCC * through sub_8129C74 * through sub_8129D8C * sub_8129E0C * sub_8129E74 * sub_8129F20 * sub_8129FC8 * sub_812A040 * nonmatching sub_812A0E8 * through sub_812A22C * sub_812A25C * sub_812A2C4 * through sub_812A39C * Remaining fns in decoration.s * Decompile decoration headers * Decompile all remaining decoration data that had already been disassembled * Disassemble two data objects * Suggest structure of list menu template * decompile through decoration list menu template * Disassemble decoration icon graphics table * Rip icon gfx * Decompile deco icon table * Decompile more data related to drawing decorations * Decompile gUnknown_085A7250 structs * Decompile two sprite templates * Decompile remaining data in decoration.s * Decompile decoration ewram * deco -> decor --- Makefile | 4 +- asm/decoration.s | 7167 ----------------- asm/decoration_inventory.s | 459 -- asm/secret_base.s | 2 +- asm/trader.s | 4 +- data/cute_sketch.s | 2 +- data/decoration.s | 86 - data/graphics.s | 5 +- .../decorations/decoration_graphics.inc | 252 + graphics/decorations/decor_attract_mat.pal | 19 + graphics/decorations/decor_attract_mat.png | Bin 0 -> 307 bytes graphics/decorations/decor_big_plant.pal | 19 + graphics/decorations/decor_big_plant.png | Bin 0 -> 310 bytes graphics/decorations/decor_blastoise_doll.pal | 19 + graphics/decorations/decor_blastoise_doll.png | Bin 0 -> 371 bytes graphics/decorations/decor_blue_brick.pal | 19 + graphics/decorations/decor_blue_brick.png | Bin 0 -> 226 bytes graphics/decorations/decor_blue_tent.pal | 19 + graphics/decorations/decor_blue_tent.png | Bin 0 -> 321 bytes graphics/decorations/decor_breakable_door.pal | 19 + graphics/decorations/decor_breakable_door.png | Bin 0 -> 274 bytes graphics/decorations/decor_brick_desk.pal | 19 + graphics/decorations/decor_brick_desk.png | Bin 0 -> 270 bytes graphics/decorations/decor_camp_desk.pal | 19 + graphics/decorations/decor_camp_desk.png | Bin 0 -> 265 bytes graphics/decorations/decor_charizard_doll.pal | 19 + graphics/decorations/decor_charizard_doll.png | Bin 0 -> 349 bytes graphics/decorations/decor_colorful_plant.pal | 19 + graphics/decorations/decor_colorful_plant.png | Bin 0 -> 371 bytes graphics/decorations/decor_comfort_desk.pal | 19 + graphics/decorations/decor_comfort_desk.png | Bin 0 -> 320 bytes graphics/decorations/decor_fire_blast_mat.pal | 19 + graphics/decorations/decor_fire_blast_mat.png | Bin 0 -> 287 bytes graphics/decorations/decor_fissure_mat.pal | 19 + graphics/decorations/decor_fissure_mat.png | Bin 0 -> 290 bytes graphics/decorations/decor_glass_ornament.pal | 19 + graphics/decorations/decor_glass_ornament.png | Bin 0 -> 292 bytes graphics/decorations/decor_gorgeous_plant.pal | 19 + graphics/decorations/decor_gorgeous_plant.png | Bin 0 -> 332 bytes graphics/decorations/decor_hard_desk.pal | 19 + graphics/decorations/decor_hard_desk.png | Bin 0 -> 325 bytes graphics/decorations/decor_heavy_desk.pal | 19 + graphics/decorations/decor_heavy_desk.png | Bin 0 -> 268 bytes graphics/decorations/decor_lapras_doll.pal | 19 + graphics/decorations/decor_lapras_doll.png | Bin 0 -> 349 bytes .../decorations/decor_powder_snow_mat.pal | 19 + .../decorations/decor_powder_snow_mat.png | Bin 0 -> 302 bytes graphics/decorations/decor_pretty_desk.pal | 19 + graphics/decorations/decor_pretty_desk.png | Bin 0 -> 296 bytes graphics/decorations/decor_pretty_flowers.pal | 19 + graphics/decorations/decor_pretty_flowers.png | Bin 0 -> 318 bytes graphics/decorations/decor_ragged_desk.pal | 19 + graphics/decorations/decor_ragged_desk.png | Bin 0 -> 257 bytes graphics/decorations/decor_red_brick.pal | 19 + graphics/decorations/decor_red_brick.png | Bin 0 -> 226 bytes graphics/decorations/decor_red_plant.pal | 19 + graphics/decorations/decor_red_plant.png | Bin 0 -> 300 bytes graphics/decorations/decor_red_tent.pal | 19 + graphics/decorations/decor_red_tent.png | Bin 0 -> 317 bytes graphics/decorations/decor_regice_doll.pal | 19 + graphics/decorations/decor_regice_doll.png | Bin 0 -> 346 bytes graphics/decorations/decor_regirock_doll.pal | 19 + graphics/decorations/decor_regirock_doll.png | Bin 0 -> 331 bytes graphics/decorations/decor_registeel_doll.pal | 19 + graphics/decorations/decor_registeel_doll.png | Bin 0 -> 351 bytes graphics/decorations/decor_rhydon_doll.pal | 19 + graphics/decorations/decor_rhydon_doll.png | Bin 0 -> 367 bytes graphics/decorations/decor_sand_ornament.pal | 19 + graphics/decorations/decor_sand_ornament.png | Bin 0 -> 286 bytes graphics/decorations/decor_slide.pal | 19 + graphics/decorations/decor_slide.png | Bin 0 -> 293 bytes graphics/decorations/decor_snorlax_doll.pal | 19 + graphics/decorations/decor_snorlax_doll.png | Bin 0 -> 337 bytes graphics/decorations/decor_solid_board.pal | 19 + graphics/decorations/decor_solid_board.png | Bin 0 -> 221 bytes graphics/decorations/decor_spikes_mat.pal | 19 + graphics/decorations/decor_spikes_mat.png | Bin 0 -> 302 bytes graphics/decorations/decor_stand.pal | 19 + graphics/decorations/decor_stand.png | Bin 0 -> 264 bytes graphics/decorations/decor_surf_mat.pal | 19 + graphics/decorations/decor_surf_mat.png | Bin 0 -> 298 bytes graphics/decorations/decor_thunder_mat.pal | 19 + graphics/decorations/decor_thunder_mat.png | Bin 0 -> 315 bytes graphics/decorations/decor_tire.pal | 19 + graphics/decorations/decor_tire.png | Bin 0 -> 303 bytes graphics/decorations/decor_tropical_plant.pal | 19 + graphics/decorations/decor_tropical_plant.png | Bin 0 -> 307 bytes graphics/decorations/decor_venusaur_doll.pal | 19 + graphics/decorations/decor_venusaur_doll.png | Bin 0 -> 393 bytes graphics/decorations/decor_wailmer_doll.pal | 19 + graphics/decorations/decor_wailmer_doll.png | Bin 0 -> 320 bytes graphics/decorations/decor_yellow_brick.pal | 19 + graphics/decorations/decor_yellow_brick.png | Bin 0 -> 226 bytes graphics/misc/decoration_unk_85a7358.png | Bin 0 -> 87 bytes include/data/decoration/description.h | 581 ++ include/data/decoration/header.h | 1100 +++ include/data/decoration/icon.h | 132 + include/data/decoration/tilemaps.h | 239 + include/data/decoration/tiles.h | 646 ++ include/decoration.h | 53 + include/decoration_inventory.h | 10 + include/event_scripts.h | 4 + include/field_map_obj.h | 1 + include/field_screen.h | 12 + include/fieldmap.h | 3 + include/graphics.h | 95 + include/international_string_util.h | 8 +- include/item_icon.h | 17 + include/list_menu.h | 54 + include/map_object_constants.h | 239 + include/menu.h | 17 +- include/menu_helpers.h | 9 + include/menu_indicators.h | 12 + include/new_menu_helpers.h | 7 + include/overworld.h | 4 + include/player_pc.h | 12 + include/secret_base.h | 1 + include/strings.h | 34 + include/tilesets.h | 13 + include/trader.h | 11 + include/tv.h | 1 + ld_script.txt | 6 +- src/decoration.c | 2793 +++++++ src/decoration_inventory.c | 189 + src/international_string_util.c | 8 +- src/start_menu.c | 2 +- src/tv.c | 2 +- sym_ewram.txt | 68 +- 128 files changed, 7359 insertions(+), 7803 deletions(-) delete mode 100644 asm/decoration.s delete mode 100644 asm/decoration_inventory.s delete mode 100644 data/decoration.s create mode 100644 data/graphics/decorations/decoration_graphics.inc create mode 100644 graphics/decorations/decor_attract_mat.pal create mode 100644 graphics/decorations/decor_attract_mat.png create mode 100644 graphics/decorations/decor_big_plant.pal create mode 100644 graphics/decorations/decor_big_plant.png create mode 100644 graphics/decorations/decor_blastoise_doll.pal create mode 100644 graphics/decorations/decor_blastoise_doll.png create mode 100644 graphics/decorations/decor_blue_brick.pal create mode 100644 graphics/decorations/decor_blue_brick.png create mode 100644 graphics/decorations/decor_blue_tent.pal create mode 100644 graphics/decorations/decor_blue_tent.png create mode 100644 graphics/decorations/decor_breakable_door.pal create mode 100644 graphics/decorations/decor_breakable_door.png create mode 100644 graphics/decorations/decor_brick_desk.pal create mode 100644 graphics/decorations/decor_brick_desk.png create mode 100644 graphics/decorations/decor_camp_desk.pal create mode 100644 graphics/decorations/decor_camp_desk.png create mode 100644 graphics/decorations/decor_charizard_doll.pal create mode 100644 graphics/decorations/decor_charizard_doll.png create mode 100644 graphics/decorations/decor_colorful_plant.pal create mode 100644 graphics/decorations/decor_colorful_plant.png create mode 100644 graphics/decorations/decor_comfort_desk.pal create mode 100644 graphics/decorations/decor_comfort_desk.png create mode 100644 graphics/decorations/decor_fire_blast_mat.pal create mode 100644 graphics/decorations/decor_fire_blast_mat.png create mode 100644 graphics/decorations/decor_fissure_mat.pal create mode 100644 graphics/decorations/decor_fissure_mat.png create mode 100644 graphics/decorations/decor_glass_ornament.pal create mode 100644 graphics/decorations/decor_glass_ornament.png create mode 100644 graphics/decorations/decor_gorgeous_plant.pal create mode 100644 graphics/decorations/decor_gorgeous_plant.png create mode 100644 graphics/decorations/decor_hard_desk.pal create mode 100644 graphics/decorations/decor_hard_desk.png create mode 100644 graphics/decorations/decor_heavy_desk.pal create mode 100644 graphics/decorations/decor_heavy_desk.png create mode 100644 graphics/decorations/decor_lapras_doll.pal create mode 100644 graphics/decorations/decor_lapras_doll.png create mode 100644 graphics/decorations/decor_powder_snow_mat.pal create mode 100644 graphics/decorations/decor_powder_snow_mat.png create mode 100644 graphics/decorations/decor_pretty_desk.pal create mode 100644 graphics/decorations/decor_pretty_desk.png create mode 100644 graphics/decorations/decor_pretty_flowers.pal create mode 100644 graphics/decorations/decor_pretty_flowers.png create mode 100644 graphics/decorations/decor_ragged_desk.pal create mode 100644 graphics/decorations/decor_ragged_desk.png create mode 100644 graphics/decorations/decor_red_brick.pal create mode 100644 graphics/decorations/decor_red_brick.png create mode 100644 graphics/decorations/decor_red_plant.pal create mode 100644 graphics/decorations/decor_red_plant.png create mode 100644 graphics/decorations/decor_red_tent.pal create mode 100644 graphics/decorations/decor_red_tent.png create mode 100644 graphics/decorations/decor_regice_doll.pal create mode 100644 graphics/decorations/decor_regice_doll.png create mode 100644 graphics/decorations/decor_regirock_doll.pal create mode 100644 graphics/decorations/decor_regirock_doll.png create mode 100644 graphics/decorations/decor_registeel_doll.pal create mode 100644 graphics/decorations/decor_registeel_doll.png create mode 100644 graphics/decorations/decor_rhydon_doll.pal create mode 100644 graphics/decorations/decor_rhydon_doll.png create mode 100644 graphics/decorations/decor_sand_ornament.pal create mode 100644 graphics/decorations/decor_sand_ornament.png create mode 100644 graphics/decorations/decor_slide.pal create mode 100644 graphics/decorations/decor_slide.png create mode 100644 graphics/decorations/decor_snorlax_doll.pal create mode 100644 graphics/decorations/decor_snorlax_doll.png create mode 100644 graphics/decorations/decor_solid_board.pal create mode 100644 graphics/decorations/decor_solid_board.png create mode 100644 graphics/decorations/decor_spikes_mat.pal create mode 100644 graphics/decorations/decor_spikes_mat.png create mode 100644 graphics/decorations/decor_stand.pal create mode 100644 graphics/decorations/decor_stand.png create mode 100644 graphics/decorations/decor_surf_mat.pal create mode 100644 graphics/decorations/decor_surf_mat.png create mode 100644 graphics/decorations/decor_thunder_mat.pal create mode 100644 graphics/decorations/decor_thunder_mat.png create mode 100644 graphics/decorations/decor_tire.pal create mode 100644 graphics/decorations/decor_tire.png create mode 100644 graphics/decorations/decor_tropical_plant.pal create mode 100644 graphics/decorations/decor_tropical_plant.png create mode 100644 graphics/decorations/decor_venusaur_doll.pal create mode 100644 graphics/decorations/decor_venusaur_doll.png create mode 100644 graphics/decorations/decor_wailmer_doll.pal create mode 100644 graphics/decorations/decor_wailmer_doll.png create mode 100644 graphics/decorations/decor_yellow_brick.pal create mode 100644 graphics/decorations/decor_yellow_brick.png create mode 100644 graphics/misc/decoration_unk_85a7358.png create mode 100644 include/data/decoration/description.h create mode 100644 include/data/decoration/header.h create mode 100644 include/data/decoration/icon.h create mode 100644 include/data/decoration/tilemaps.h create mode 100644 include/data/decoration/tiles.h create mode 100644 include/field_screen.h create mode 100644 include/graphics.h create mode 100644 include/item_icon.h create mode 100644 include/list_menu.h create mode 100644 include/map_object_constants.h create mode 100644 include/menu_indicators.h create mode 100644 include/player_pc.h create mode 100644 include/tilesets.h create mode 100644 include/trader.h create mode 100644 src/decoration.c create mode 100644 src/decoration_inventory.c diff --git a/Makefile b/Makefile index ca8348f68b..4a1f943529 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef LD := $(DEVKITARM)/bin/arm-none-eabi-ld -LDFLAGS = -Map $(MAP) +LDFLAGS = -Map ../../$(MAP) OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy @@ -102,7 +102,7 @@ $(C_BUILDDIR)/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc $(C_BUILDDIR)/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc ifeq ($(NODEP),) -$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) $(C_SUBDIR)/$*.c) +$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c) else $(C_BUILDDIR)/%.o: c_dep := endif diff --git a/asm/decoration.s b/asm/decoration.s deleted file mode 100644 index 0798e3165c..0000000000 --- a/asm/decoration.s +++ /dev/null @@ -1,7167 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8126968 -sub_8126968: @ 8126968 - push {lr} - ldr r3, =gUnknown_0203A173 - ldrb r0, [r3] - cmp r0, 0x7 - bhi _0812697E - ldr r2, =gUnknown_0203A14C - ldr r1, =gDecorationInventories - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] -_0812697E: - ldr r2, =gUnknown_0203A17C - ldrb r0, [r2, 0x9] - cmp r0, 0 - bne _08126996 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x00001aae - adds r1, r0, r3 - str r1, [r2] - ldr r1, =0x00001abe - adds r0, r1 - str r0, [r2, 0x4] -_08126996: - ldrb r0, [r2, 0x9] - cmp r0, 0x1 - bne _081269AC - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x0000271c - adds r1, r0, r3 - str r1, [r2] - ldr r1, =0x00002728 - adds r0, r1 - str r0, [r2, 0x4] -_081269AC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126968 - - thumb_func_start sub_81269D4 -sub_81269D4: @ 81269D4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, =gUnknown_0203A188 - adds r4, r1, r0 - cmp r1, 0 - bne _08126A28 - ldr r0, =gUnknown_085A6B90 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, =gUnknown_085A6B48 - movs r1, 0x4 - bl GetMaxWidthInMenuTable - lsls r0, 24 - ldr r2, =0x00ffffff - ldr r1, [sp] - ands r1, r2 - orrs r1, r0 - str r1, [sp] - lsrs r0, r1, 24 - cmp r0, 0x12 - bls _08126A14 - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x90 - lsls r1, 21 - orrs r0, r1 - str r0, [sp] -_08126A14: - mov r0, sp - b _08126A2E - .pool -_08126A28: - lsls r0, r1, 3 - ldr r1, =gUnknown_085A6B90 - adds r0, r1 -_08126A2E: - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r2, 0x85 - lsls r2, 2 - movs r1, 0 - movs r3, 0xE - bl SetWindowBorderStyle - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - ldrb r0, [r4] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81269D4 - - thumb_func_start sub_8126A58 -sub_8126A58: @ 8126A58 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_0203A188 - adds r4, r0 - ldrb r0, [r4] - movs r1, 0 - bl sub_8198070 - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126A58 - - thumb_func_start sub_8126A88 -sub_8126A88: @ 8126A88 - push {r4,lr} - movs r0, 0 - bl sub_81269D4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r2, =gUnknown_085A6B48 - adds r0, r4, 0 - movs r1, 0x4 - bl PrintMenuTable - ldr r0, =gUnknown_0203A150 - ldrb r2, [r0] - adds r0, r4, 0 - movs r1, 0x4 - bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126A88 - - thumb_func_start sub_8126ABC -sub_8126ABC: @ 8126ABC - push {lr} - ldr r1, =gUnknown_0203A150 - movs r0, 0 - strb r0, [r1] - bl ScriptContext2_Enable - bl sub_8126A88 - bl sub_8126C08 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126ABC - - thumb_func_start sub_8126AD8 -sub_8126AD8: @ 8126AD8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8126ABC - ldr r2, =gUnknown_0203A17C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x00001aae - adds r1, r0, r3 - str r1, [r2] - ldr r1, =0x00001abe - adds r0, r1 - str r0, [r2, 0x4] - movs r1, 0 - movs r0, 0x10 - strb r0, [r2, 0x8] - strb r1, [r2, 0x9] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8126B80 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126AD8 - - thumb_func_start sub_8126B2C -sub_8126B2C: @ 8126B2C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8126ABC - ldr r2, =gUnknown_0203A17C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x0000271c - adds r1, r0, r3 - str r1, [r2] - ldr r1, =0x00002728 - adds r0, r1 - str r0, [r2, 0x4] - movs r0, 0xC - strb r0, [r2, 0x8] - movs r0, 0x1 - strb r0, [r2, 0x9] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8126B80 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126B2C - - thumb_func_start sub_8126B80 -sub_8126B80: @ 8126B80 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08126C00 - bl GetMenuCursorPos - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInput - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _08126BD8 - adds r0, 0x1 - cmp r1, r0 - beq _08126BF4 - movs r0, 0x5 - bl PlaySE - ldr r1, =gUnknown_085A6B48 - ldr r0, =gUnknown_0203A150 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - b _08126C00 - .pool -_08126BD8: - bl GetMenuCursorPos - ldr r1, =gUnknown_0203A150 - strb r0, [r1] - lsls r0, r4, 24 - asrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _08126C00 - bl sub_8126C08 - b _08126C00 - .pool -_08126BF4: - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl sub_8126D6C -_08126C00: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8126B80 - - thumb_func_start sub_8126C08 -sub_8126C08: @ 8126C08 - push {lr} - sub sp, 0x10 - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, =gUnknown_085A6B68 - ldr r0, =gUnknown_0203A150 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x1 - movs r3, 0 - bl AddTextPrinterParametrized - add sp, 0x10 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126C08 - - thumb_func_start sub_8126C48 -sub_8126C48: @ 8126C48 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8161B10 - lsls r0, 24 - cmp r0, 0 - bne _08126C7C - ldr r4, =gStringVar4 - ldr r1, =gText_NoDecorations - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8126DA4 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _08126C96 - .pool -_08126C7C: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x1E] - ldr r0, =gUnknown_0203A173 - strb r2, [r0] - adds r0, r5, 0 - bl sub_8126DCC -_08126C96: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126C48 - - thumb_func_start sub_8126CA4 -sub_8126CA4: @ 8126CA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_81299AC - lsls r0, 24 - cmp r0, 0 - bne _08126CD8 - ldr r4, =gStringVar4 - ldr r1, =gText_NoDecorationsInUse - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8126DA4 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _08126D00 - .pool -_08126CD8: - movs r0, 0 - bl sub_8126A58 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, =sub_8129ABC - str r1, [r0] -_08126D00: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126CA4 - - thumb_func_start sub_8126D10 -sub_8126D10: @ 8126D10 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8161B10 - lsls r0, 24 - cmp r0, 0 - bne _08126D44 - ldr r4, =gStringVar4 - ldr r1, =gText_NoDecorations - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8126DA4 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _08126D5E - .pool -_08126D44: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strh r1, [r0, 0x1E] - ldr r0, =gUnknown_0203A173 - strb r2, [r0] - adds r0, r5, 0 - bl sub_8126DCC -_08126D5E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126D10 - - thumb_func_start sub_8126D6C -sub_8126D6C: @ 8126D6C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl sub_8126A58 - ldr r0, =gUnknown_0203A17C - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _08126D98 - ldr r0, =gUnknown_0823B4E8 - bl ScriptContext1_SetupScript - adds r0, r4, 0 - bl DestroyTask - b _08126D9E - .pool -_08126D98: - adds r0, r4, 0 - bl sub_816B060 -_08126D9E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8126D6C - - thumb_func_start sub_8126DA4 -sub_8126DA4: @ 8126DA4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8126C08 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8126B80 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126DA4 - - thumb_func_start sub_8126DCC -sub_8126DCC: @ 8126DCC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_085A6BB0 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - movs r1, 0 - bl sub_8197434 - movs r0, 0 - bl sub_8126A58 - adds r0, r4, 0 - bl sub_8126DFC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126DCC - - thumb_func_start sub_8126DFC -sub_8126DFC: @ 8126DFC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - bl sub_81269D4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_8126E8C - ldr r0, =gUnknown_0203A173 - ldrb r2, [r0] - adds r0, r4, 0 - movs r1, 0x9 - bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8127088 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126DFC - - thumb_func_start sub_8126E44 -sub_8126E44: @ 8126E44 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, =gUnknown_0203A188 - ldrb r0, [r5, 0x1] - movs r1, 0x11 - bl FillWindowPixelBuffer - adds r0, r4, 0 - bl sub_8126E8C - ldrb r0, [r5, 0x1] - ldr r1, =gUnknown_0203A173 - ldrb r2, [r1] - movs r1, 0x9 - bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8127088 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126E44 - - thumb_func_start sub_8126E8C -sub_8126E8C: @ 8126E8C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r1, r0, r1 - ldr r0, =gUnknown_0203A188 - ldrb r5, [r0, 0x1] - ldr r0, =gUnknown_0203A17C - ldrb r0, [r0, 0x9] - movs r2, 0 - mov r8, r2 - cmp r0, 0x1 - bne _08126EC0 - movs r2, 0x16 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08126EC0 - movs r0, 0x1 - mov r8, r0 -_08126EC0: - movs r4, 0 - lsls r2, r6, 2 - mov r9, r2 - movs r7, 0xFF -_08126EC8: - mov r0, r8 - cmp r0, 0x1 - bne _08126EF8 - cmp r4, 0x6 - beq _08126EF8 - cmp r4, 0x7 - beq _08126EF8 - lsls r3, r4, 28 - lsrs r3, 24 - str r0, [sp] - str r7, [sp, 0x4] - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x8 - bl sub_8126F68 - b _08126F0C - .pool -_08126EF8: - lsls r3, r4, 28 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - str r7, [sp, 0x4] - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x8 - bl sub_8126F68 -_08126F0C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08126EC8 - ldr r0, =gTasks - mov r2, r9 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r2, 0x1E - ldrsh r0, [r1, r2] - ldr r2, =gText_Cancel - cmp r0, 0x2 - bne _08126F2C - ldr r2, =gText_Exit -_08126F2C: - lsls r0, r4, 4 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x1 - movs r3, 0x8 - bl PrintTextOnWindow - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126E8C - - thumb_func_start sub_8126F68 -sub_8126F68: @ 8126F68 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - ldr r4, [sp, 0x38] - ldr r6, [sp, 0x3C] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0xC] - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r5, r3, 24 - lsls r4, 24 - lsrs r1, r4, 24 - lsls r6, 24 - lsrs r6, 24 - mov r9, r6 - movs r0, 0x60 - str r0, [sp, 0x14] - cmp r7, 0x8 - bne _08126FA2 - movs r2, 0x68 - str r2, [sp, 0x14] -_08126FA2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gStringVar4 - adds r0, r4, 0 - bl sub_8127058 - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - adds r6, r0, r4 - ldr r1, =gUnknown_085A6B28 - mov r2, r8 - lsls r0, r2, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - str r5, [sp] - mov r0, r9 - str r0, [sp, 0x4] - movs r2, 0 - mov r10, r2 - str r2, [sp, 0x8] - ldr r0, [sp, 0xC] - movs r1, 0x1 - adds r2, r4, 0 - adds r3, r7, 0 - bl PrintTextOnWindow - mov r0, r8 - bl sub_8161AD0 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r6, r0, 0 - movs r0, 0xBA - strb r0, [r6] - adds r6, 0x1 - ldr r1, =gDecorationInventories - mov r2, r8 - lsls r0, r2, 3 - adds r0, r1 - ldrb r1, [r0, 0x4] - adds r0, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r0, 0x1 - adds r1, r4, 0 - ldr r2, [sp, 0x14] - bl GetStringRightAlignXOffset - lsls r0, 24 - lsrs r7, r0, 24 - str r5, [sp] - mov r0, r9 - str r0, [sp, 0x4] - mov r2, r10 - str r2, [sp, 0x8] - ldr r0, [sp, 0xC] - movs r1, 0x1 - adds r2, r4, 0 - adds r3, r7, 0 - bl PrintTextOnWindow - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8126F68 - - thumb_func_start sub_8127058 -sub_8127058: @ 8127058 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - ldr r1, =gText_Color161Shadow161 - bl StringCopy - cmp r4, 0x1 - bne _08127078 - movs r0, 0x4 - strb r0, [r5, 0x2] - movs r0, 0x5 - b _0812707E - .pool -_08127078: - movs r0, 0x2 - strb r0, [r5, 0x2] - movs r0, 0x3 -_0812707E: - strb r0, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8127058 - - thumb_func_start sub_8127088 -sub_8127088: @ 8127088 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081270DE - bl ProcessMenuInput - lsls r0, 24 - lsrs r4, r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081270C0 - cmp r1, r0 - bgt _081270BC - subs r0, 0x1 - cmp r1, r0 - beq _081270DE - b _081270CE - .pool -_081270BC: - cmp r1, 0x8 - bne _081270CE -_081270C0: - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl sub_812719C - b _081270DE -_081270CE: - movs r0, 0x5 - bl PlaySE - ldr r0, =gUnknown_0203A173 - strb r4, [r0] - adds r0, r5, 0 - bl sub_81270E8 -_081270DE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127088 - - thumb_func_start sub_81270E8 -sub_81270E8: @ 81270E8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gUnknown_0203A173 - ldrb r0, [r4] - bl sub_8161AD0 - ldr r1, =gUnknown_0203A151 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - beq _08127154 - ldrb r0, [r4] - bl sub_8161A38 - ldr r2, =gUnknown_0203A14C - ldr r1, =gDecorationInventories - ldrb r0, [r4] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - adds r0, r5, 0 - bl sub_81279B4 - ldr r0, =gUnknown_0203A170 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_0203A16E - strh r1, [r0] - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8127620 - str r1, [r0] - b _0812716E - .pool -_08127154: - movs r0, 0x1 - bl sub_8126A58 - ldr r4, =gStringVar4 - ldr r1, =gText_NoDecorations - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8127180 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_0812716E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81270E8 - - thumb_func_start sub_8127180 -sub_8127180: @ 8127180 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - adds r0, r4, 0 - bl sub_8126DFC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127180 - - thumb_func_start sub_812719C -sub_812719C: @ 812719C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1E - ldrsh r0, [r0, r1] - cmp r0, 0x2 - beq _081271C0 - adds r0, r2, 0 - bl sub_81271CC - b _081271C6 - .pool -_081271C0: - adds r0, r2, 0 - bl sub_8127268 -_081271C6: - pop {r0} - bx r0 - thumb_func_end sub_812719C - - thumb_func_start sub_81271CC -sub_81271CC: @ 81271CC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_8126A58 - bl sub_8126A88 - movs r0, 0 - movs r1, 0 - bl sub_81973C4 - bl sub_8126C08 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8126B80 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81271CC - - thumb_func_start sub_8127208 -sub_8127208: @ 8127208 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_085A6BB0 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - movs r1, 0 - bl sub_8197434 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x2 - strh r1, [r0, 0x1E] - ldr r0, =gUnknown_0203A173 - strb r2, [r0] - adds r0, r4, 0 - bl sub_8126DFC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127208 - - thumb_func_start sub_8127250 -sub_8127250: @ 8127250 - push {lr} - lsls r1, 24 - ldr r2, =gUnknown_085A6B28 - lsrs r1, 22 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127250 - - thumb_func_start sub_8127268 -sub_8127268: @ 8127268 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_8126A58 - adds r0, r4, 0 - bl sub_8133E1C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127268 - - thumb_func_start sub_8127284 -sub_8127284: @ 8127284 - push {lr} - ldr r3, =gUnknown_0203A18C - ldr r2, [r3] - ldr r0, =gUnknown_0203A151 - ldrb r0, [r0] - adds r0, 0x1 - movs r1, 0xA4 - lsls r1, 3 - adds r2, r1 - strb r0, [r2] - ldr r0, [r3] - adds r1, r0, r1 - ldrb r1, [r1] - cmp r1, 0x8 - bls _081272B8 - ldr r2, =0x00000521 - adds r1, r0, r2 - movs r0, 0x8 - strb r0, [r1] - b _081272BE - .pool -_081272B8: - ldr r2, =0x00000521 - adds r0, r2 - strb r1, [r0] -_081272BE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127284 - - thumb_func_start sub_81272C8 -sub_81272C8: @ 81272C8 - push {r4,lr} - ldr r0, =gUnknown_0203A170 - ldr r1, =gUnknown_0203A16E - ldr r2, =gUnknown_0203A18C - ldr r3, [r2] - ldr r4, =0x00000521 - adds r2, r3, r4 - ldrb r2, [r2] - subs r4, 0x1 - adds r3, r4 - ldrb r3, [r3] - bl sub_812225C - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81272C8 - - thumb_func_start sub_81272F8 -sub_81272F8: @ 81272F8 - push {r4,lr} - sub sp, 0x4 - ldr r0, =gUnknown_0203A170 - ldr r1, =gUnknown_0203A16E - ldr r2, =gUnknown_0203A18C - ldr r3, [r2] - ldr r4, =0x00000521 - adds r2, r3, r4 - ldrb r2, [r2] - subs r4, 0x1 - adds r3, r4 - ldrb r3, [r3] - movs r4, 0x8 - str r4, [sp] - bl sub_8122298 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81272F8 - - thumb_func_start sub_8127330 -sub_8127330: @ 8127330 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r1, r0 - ldr r0, =gUnknown_0203A173 - ldrb r0, [r0] - subs r0, 0x6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08127378 - ldr r0, =gUnknown_0203A17C - ldrb r0, [r0, 0x9] - cmp r0, 0x1 - bne _08127378 - movs r2, 0x16 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08127378 - ldr r0, =gStringVar1 - movs r1, 0x1 - bl sub_8127058 - b _08127380 - .pool -_08127378: - ldr r0, =gStringVar1 - movs r1, 0 - bl sub_8127058 -_08127380: - movs r6, 0 - ldr r1, =gUnknown_0203A18C - ldr r0, [r1] - movs r3, 0xA4 - lsls r3, 3 - adds r0, r3 - ldrb r0, [r0] - subs r0, 0x1 - cmp r6, r0 - bge _081273D6 - adds r5, r1, 0 -_08127396: - lsls r4, r6, 1 - adds r4, r6 - lsls r4, 3 - movs r0, 0xA4 - lsls r0, 1 - adds r4, r0 - ldr r0, [r5] - adds r0, r4 - ldr r1, =gUnknown_0203A14C - ldr r1, [r1] - adds r1, r6 - ldrb r1, [r1] - bl sub_8127454 - ldr r1, [r5] - lsls r2, r6, 3 - adds r0, r1, r2 - adds r4, r1, r4 - str r4, [r0] - adds r0, r1, 0x4 - adds r0, r2 - str r6, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - movs r2, 0xA4 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - subs r0, 0x1 - cmp r6, r0 - blt _08127396 -_081273D6: - ldr r5, =gUnknown_0203A18C - lsls r4, r6, 1 - adds r4, r6 - lsls r4, 3 - movs r3, 0xA4 - lsls r3, 1 - adds r4, r3 - ldr r0, [r5] - adds r0, r4 - ldr r1, =gText_Cancel - bl StringCopy - ldr r0, [r5] - lsls r2, r6, 3 - adds r1, r0, r2 - adds r4, r0, r4 - str r4, [r1] - adds r0, 0x4 - adds r0, r2 - movs r1, 0x2 - negs r1, r1 - str r1, [r0] - ldr r2, =gUnknown_03006310 - adds r1, r2, 0 - ldr r0, =gUnknown_085A6BD0 - ldm r0!, {r3,r4,r6} - stm r1!, {r3,r4,r6} - ldm r0!, {r3,r4,r6} - stm r1!, {r3,r4,r6} - ldr r0, =gUnknown_0203A188 - ldrb r0, [r0, 0x1] - strb r0, [r2, 0x10] - ldr r0, [r5] - movs r4, 0xA4 - lsls r4, 3 - adds r1, r0, r4 - ldrb r1, [r1] - strh r1, [r2, 0xC] - str r0, [r2] - ldr r6, =0x00000521 - adds r0, r6 - ldrb r0, [r0] - strh r0, [r2, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127330 - - thumb_func_start sub_8127454 -sub_8127454: @ 8127454 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 16 - lsrs r4, 16 - ldr r1, =gStringVar1 - bl StringCopy - lsls r4, 5 - ldr r0, =gDecorations + 1 - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127454 - - thumb_func_start sub_8127480 -sub_8127480: @ 8127480 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _08127492 - movs r0, 0x5 - bl PlaySE -_08127492: - adds r0, r4, 0 - bl sub_8127744 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127480 - - thumb_func_start sub_81274A0 -sub_81274A0: @ 81274A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - mov r8, r6 - lsls r2, 24 - lsrs r5, r2, 24 - adds r7, r5, 0 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _081274F6 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_81277BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081274DC - adds r3, r5, 0x2 - adds r0, r6, 0 - movs r1, 0x18 - movs r2, 0x5C - bl blit_move_info_icon - b _081274F6 -_081274DC: - adds r0, r4, 0 - bl sub_81277E8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081274F6 - adds r3, r7, 0x2 - mov r0, r8 - movs r1, 0x19 - movs r2, 0x5C - bl blit_move_info_icon -_081274F6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81274A0 - - thumb_func_start sub_8127500 -sub_8127500: @ 8127500 - push {r4,lr} - sub sp, 0x10 - ldr r4, =gUnknown_0203A18C - ldr r1, [r4] - ldr r2, =0x00000522 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08127540 - subs r2, 0x2 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - subs r0, r1 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - ldr r0, =gUnknown_0203A170 - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0x3C - movs r2, 0xC - movs r3, 0x94 - bl AddScrollIndicatorArrowPairParametrized - ldr r1, [r4] - ldr r2, =0x00000522 - adds r1, r2 - strb r0, [r1] -_08127540: - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127500 - - thumb_func_start sub_8127554 -sub_8127554: @ 8127554 - push {r4,lr} - ldr r4, =gUnknown_0203A18C - ldr r0, [r4] - ldr r2, =0x00000522 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xFF - beq _08127572 - bl RemoveScrollIndicatorArrowPair - ldr r0, [r4] - ldr r1, =0x00000522 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] -_08127572: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127554 - - thumb_func_start sub_8127580 -sub_8127580: @ 8127580 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_81269D4 - adds r0, r4, 0 - bl sub_812759C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127580 - - thumb_func_start sub_812759C -sub_812759C: @ 812759C - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - ldr r0, =gTasks + 0x8 - adds r5, r0 - movs r0, 0x3 - bl sub_81269D4 - ldr r0, =gUnknown_0203A173 - ldrb r0, [r0] - bl sub_8127718 - ldr r6, =gUnknown_0203A18C - ldr r0, =0x00000524 - bl AllocZeroed - str r0, [r6] - ldr r1, =0x00000522 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - bl sub_8127284 - bl sub_81272C8 - bl sub_81272F8 - adds r0, r4, 0 - bl sub_8127330 - ldr r0, =gUnknown_03006310 - ldr r1, =gUnknown_0203A170 - ldrh r1, [r1] - ldr r2, =gUnknown_0203A16E - ldrh r2, [r2] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x1A] - bl sub_8127500 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812759C - - thumb_func_start sub_8127620 -sub_8127620: @ 8127620 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_812759C - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_812764C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127620 - - thumb_func_start sub_812764C -sub_812764C: @ 812764C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r5, r0, r1 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08127700 - ldrb r0, [r5, 0x1A] - bl ListMenuHandleInput - adds r4, r0, 0 - ldrb r0, [r5, 0x1A] - ldr r7, =gUnknown_0203A170 - ldr r1, =gUnknown_0203A16E - mov r8, r1 - adds r1, r7, 0 - mov r2, r8 - bl get_coro_args_x18_x1A - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _081276A4 - adds r0, 0x1 - cmp r4, r0 - bne _081276C4 - b _08127700 - .pool -_081276A4: - movs r0, 0x5 - bl PlaySE - ldr r0, =gUnknown_085A6B78 - movs r2, 0x16 - ldrsh r1, [r5, r2] - lsls r1, 3 - adds r0, 0x4 - adds r1, r0 - ldr r1, [r1] - adds r0, r6, 0 - bl _call_via_r1 - b _08127700 - .pool -_081276C4: - movs r0, 0x5 - bl PlaySE - ldr r0, =gUnknown_0203A172 - strb r4, [r0] - bl sub_8127554 - ldrb r0, [r5, 0x1A] - adds r1, r7, 0 - mov r2, r8 - bl sub_81AE6C8 - movs r0, 0x1 - bl sub_8126A58 - bl sub_81277A8 - ldr r0, =gUnknown_0203A18C - ldr r0, [r0] - bl Free - ldr r1, =gUnknown_085A6B78 - movs r2, 0x16 - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 -_08127700: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812764C - - thumb_func_start sub_8127718 -sub_8127718: @ 8127718 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - bl sub_81269D4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl sub_8126F68 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127718 - - thumb_func_start sub_8127744 -sub_8127744: @ 8127744 - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, =gUnknown_0203A188 - ldrb r5, [r0, 0x3] - adds r0, r5, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gUnknown_0203A151 - ldrb r0, [r0] - cmp r4, r0 - bcc _08127770 - ldr r2, =gText_GoBackPrevMenu - b _08127782 - .pool -_08127770: - ldr r1, =gDecorations - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - lsls r0, 5 - adds r1, 0x18 - adds r0, r1 - ldr r2, [r0] -_08127782: - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x1 - movs r3, 0 - bl PrintTextOnWindow - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127744 - - thumb_func_start sub_81277A8 -sub_81277A8: @ 81277A8 - push {lr} - movs r0, 0x3 - bl sub_8126A58 - movs r0, 0x2 - bl sub_8126A58 - pop {r0} - bx r0 - thumb_func_end sub_81277A8 - - thumb_func_start sub_81277BC -sub_81277BC: @ 81277BC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r3, =gUnknown_0203A152 -_081277C6: - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081277D8 - movs r0, 0x1 - b _081277E4 - .pool -_081277D8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _081277C6 - movs r0, 0 -_081277E4: - pop {r1} - bx r1 - thumb_func_end sub_81277BC - - thumb_func_start sub_81277E8 -sub_81277E8: @ 81277E8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r3, =gUnknown_0203A162 -_081277F2: - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _08127804 - movs r0, 0x1 - b _08127810 - .pool -_08127804: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xB - bls _081277F2 - movs r0, 0 -_08127810: - pop {r1} - bx r1 - thumb_func_end sub_81277E8 - - thumb_func_start sub_8127814 -sub_8127814: @ 8127814 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r0, =gUnknown_0203A152 - movs r1, 0 - movs r2, 0x10 - bl memset - ldr r0, =gUnknown_0203A162 - movs r1, 0 - movs r2, 0xC - bl memset - movs r6, 0 - ldr r0, =gSaveBlock1Ptr - mov r10, r0 - ldr r1, =0x00001aae - mov r9, r1 - ldr r3, =gUnknown_0203A173 - mov r8, r3 -_08127842: - mov r1, r10 - ldr r0, [r1] - add r0, r9 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _081278E2 - movs r2, 0 - mov r3, r8 - ldrb r0, [r3] - lsls r0, 3 - ldr r1, =gDecorationInventories - adds r0, r1 - ldrb r0, [r0, 0x4] - cmp r2, r0 - bcs _081278E2 - ldr r7, =gUnknown_0203A152 - adds r3, r1, 0 - mov r12, r3 -_08127868: - ldr r0, =gUnknown_0203A14C - ldr r1, [r0] - adds r1, r2 - mov r3, r10 - ldr r0, [r3] - add r0, r9 - adds r0, r6 - ldrb r1, [r1] - adds r4, r2, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bne _081278D0 - movs r1, 0 - cmp r1, r5 - bcs _081278A2 - ldrb r0, [r7] - cmp r0, r4 - beq _081278A2 - ldr r3, =gUnknown_0203A152 - adds r2, r4, 0 -_08127890: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r5 - bcs _081278A2 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _08127890 -_081278A2: - cmp r1, r5 - bne _081278D0 - adds r0, r5, r7 - strb r4, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - b _081278E2 - .pool -_081278D0: - lsls r0, r4, 16 - lsrs r2, r0, 16 - mov r1, r8 - ldrb r0, [r1] - lsls r0, 3 - add r0, r12 - ldrb r0, [r0, 0x4] - cmp r2, r0 - bcc _08127868 -_081278E2: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0xF - bls _08127842 - movs r5, 0 - movs r6, 0 - ldr r3, =gDecorationInventories - mov r8, r3 -_081278F4: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x0000271c - adds r0, r1 - adds r0, r6 - ldrb r0, [r0] - adds r7, r6, 0x1 - cmp r0, 0 - beq _0812799A - movs r2, 0 - b _0812798C - .pool -_08127918: - ldr r0, =gUnknown_0203A14C - ldr r1, [r0] - adds r1, r2 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x0000271c - adds r0, r3 - adds r0, r6 - ldrb r1, [r1] - adds r4, r2, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bne _08127988 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_81277BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08127988 - movs r1, 0 - cmp r1, r5 - bcs _08127966 - ldr r2, =gUnknown_0203A162 - ldrb r0, [r2] - cmp r0, r4 - beq _08127966 - adds r3, r2, 0 - adds r2, r4, 0 -_08127954: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r5 - bcs _08127966 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _08127954 -_08127966: - cmp r1, r5 - bne _08127988 - ldr r0, =gUnknown_0203A162 - adds r0, r5, r0 - strb r4, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - b _0812799A - .pool -_08127988: - lsls r0, r4, 16 - lsrs r2, r0, 16 -_0812798C: - ldr r0, =gUnknown_0203A173 - ldrb r0, [r0] - lsls r0, 3 - add r0, r8 - ldrb r0, [r0, 0x4] - cmp r2, r0 - bcc _08127918 -_0812799A: - lsls r0, r7, 16 - lsrs r6, r0, 16 - cmp r6, 0xB - bls _081278F4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127814 - - thumb_func_start sub_81279B4 -sub_81279B4: @ 81279B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8127814 - pop {r0} - bx r0 - thumb_func_end sub_81279B4 - - thumb_func_start sub_81279C4 -sub_81279C4: @ 81279C4 - push {r4,lr} - movs r2, 0 - ldr r0, =gUnknown_0203A170 - ldrh r0, [r0] - ldr r1, =gUnknown_0203A16E - ldrh r1, [r1] - adds r0, r1 - adds r1, r0, 0x1 - ldr r4, =gUnknown_0203A152 - ldr r3, =gUnknown_0203A162 -_081279D8: - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, r1 - beq _081279EC - cmp r2, 0xB - bhi _08127A00 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, r1 - bne _08127A00 -_081279EC: - movs r0, 0 - b _08127A0C - .pool -_08127A00: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _081279D8 - movs r0, 0x1 -_08127A0C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81279C4 - - thumb_func_start sub_8127A14 -sub_8127A14: @ 8127A14 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_81269D4 - adds r0, r4, 0 - bl sub_8127620 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127A14 - - thumb_func_start sub_8127A30 -sub_8127A30: @ 8127A30 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8127A14 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127A30 - - thumb_func_start sub_8127A5C -sub_8127A5C: @ 8127A5C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08127A82 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - movs r0, 0x1 - bl sub_81269D4 - adds r0, r4, 0 - bl sub_8127620 -_08127A82: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127A5C - - thumb_func_start sub_8127A8C -sub_8127A8C: @ 8127A8C - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, =gTasks + 0x8 - adds r4, r0 - bl sub_8127554 - bl sub_81277A8 - ldrb r0, [r4, 0x1A] - movs r1, 0 - movs r2, 0 - bl sub_81AE6C8 - ldr r0, =gUnknown_0203A18C - ldr r0, [r0] - bl Free - adds r0, r5, 0 - bl sub_8126E44 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127A8C - - thumb_func_start sub_8127ACC -sub_8127ACC: @ 8127ACC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r4, r2, r3 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldrh r0, [r1] - strh r0, [r4, 0xE] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x10] - adds r3, 0x8 - adds r2, r3 - adds r1, r2, 0x2 - adds r0, r2, 0 - bl PlayerGetDestCoords - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127ACC - - thumb_func_start sub_8127B04 -sub_8127B04: @ 8127B04 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl DrawWholeMapView - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - ldr r3, =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r3 - movs r3, 0xE - ldrsb r3, [r4, r3] - ldrb r4, [r4, 0x10] - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - bl Overworld_SetWarpDestination - bl warp_in - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127B04 - - thumb_func_start sub_8127B54 -sub_8127B54: @ 8127B54 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, =0x0000ffff - cmp r2, 0x22 - beq _08127B7C - cmp r2, 0x26 - bne _08127B86 - ldr r0, =gUnknown_085A72E4 - adds r0, r1, r0 - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 16 - b _08127B86 - .pool -_08127B7C: - ldr r0, =gUnknown_085A72EC - adds r0, r1, r0 - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 16 -_08127B86: - pop {r1} - bx r1 - .pool - thumb_func_end sub_8127B54 - - thumb_func_start sub_8127B90 -sub_8127B90: @ 8127B90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r4, [sp, 0x54] - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x4] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x8] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r4, 16 - lsrs r4, 16 - str r4, [sp, 0x10] - movs r2, 0 - lsls r0, r3, 16 - cmp r2, r3 - bcc _08127BC6 - b _08127D28 -_08127BC6: - ldr r1, [sp, 0x8] - str r1, [sp, 0x28] - str r0, [sp, 0x2C] -_08127BCC: - ldr r3, [sp, 0x4] - ldr r4, [sp, 0xC] - subs r1, r3, r4 - lsls r0, r2, 16 - asrs r0, 16 - adds r0, 0x1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x14] - movs r0, 0 - mov r10, r0 - adds r1, r2, 0x1 - str r1, [sp, 0x30] - ldr r3, [sp, 0x28] - cmp r10, r3 - bcc _08127BF0 - b _08127D18 -_08127BF0: - ldr r4, [sp, 0x10] - lsls r4, 5 - str r4, [sp, 0x18] - ldr r0, =gUnknown_085A5C24 - adds r0, r4, r0 - str r0, [sp, 0x1C] - ldr r0, =gDecorations - adds r0, r4, r0 - str r0, [sp, 0x24] - ldr r3, [sp, 0x8] - adds r1, r2, 0 - muls r1, r3 - str r1, [sp, 0x20] -_08127C0A: - ldr r0, [sp] - add r0, r10 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, [sp, 0x20] - add r1, r10 - ldr r4, [sp, 0x1C] - ldr r0, [r4] - lsls r1, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - lsls r4, r0, 16 - lsls r0, r4, 8 - lsrs r0, 24 - bl MetatileBehavior_IsMB_B9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08127C50 - ldr r3, [sp, 0x24] - ldrb r0, [r3, 0x11] - cmp r0, 0x1 - beq _08127C60 - lsrs r0, r4, 28 - cmp r0, 0 - beq _08127C60 -_08127C50: - movs r4, 0xC0 - lsls r4, 4 - mov r8, r4 - b _08127C64 - .pool -_08127C60: - movs r0, 0 - mov r8, r0 -_08127C64: - ldr r1, [sp, 0x24] - ldrb r0, [r1, 0x11] - lsls r7, r5, 16 - ldr r2, [sp, 0x14] - lsls r2, 16 - mov r9, r2 - cmp r0, 0x3 - beq _08127C8E - asrs r0, r7, 16 - asrs r1, r2, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsMB_B7 - lsls r0, 24 - lsrs r0, 24 - movs r6, 0x1 - cmp r0, 0x1 - beq _08127C90 -_08127C8E: - movs r6, 0 -_08127C90: - ldr r3, [sp, 0x18] - ldr r4, =gDecorations - adds r0, r3, r4 - ldrb r0, [r0] - ldr r4, [sp, 0x20] - add r4, r10 - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_8127B54 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =0x0000ffff - cmp r5, r0 - beq _08127CE0 - asrs r0, r7, 16 - mov r2, r9 - asrs r1, r2, 16 - ldr r3, [sp, 0x1C] - ldr r2, [r3] - lsls r3, r4, 1 - adds r3, r2 - movs r4, 0x80 - lsls r4, 2 - adds r2, r4, 0 - orrs r6, r2 - ldrh r3, [r3] - adds r2, r6, r3 - mov r3, r8 - orrs r3, r2 - orrs r3, r5 - lsls r2, r3, 16 - lsrs r2, 16 - bl MapGridSetMetatileEntryAt - b _08127D06 - .pool -_08127CE0: - asrs r0, r7, 16 - mov r2, r9 - asrs r1, r2, 16 - ldr r3, [sp, 0x1C] - ldr r2, [r3] - lsls r3, r4, 1 - adds r3, r2 - movs r4, 0x80 - lsls r4, 2 - adds r2, r4, 0 - orrs r6, r2 - ldrh r3, [r3] - adds r2, r6, r3 - mov r3, r8 - orrs r3, r2 - lsls r2, r3, 16 - lsrs r2, 16 - bl MapGridSetMetatileIdAt -_08127D06: - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - ldr r4, [sp, 0x28] - cmp r10, r4 - bcs _08127D18 - b _08127C0A -_08127D18: - ldr r1, [sp, 0x30] - lsls r0, r1, 16 - lsrs r2, r0, 16 - ldr r3, [sp, 0x2C] - lsrs r0, r3, 16 - cmp r2, r0 - bcs _08127D28 - b _08127BCC -_08127D28: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8127B90 - - thumb_func_start sub_8127D38 -sub_8127D38: @ 8127D38 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gDecorations - lsls r0, r2, 5 - adds r0, r1 - ldrb r0, [r0, 0x12] - cmp r0, 0x9 - bhi _08127E10 - lsls r0, 2 - ldr r1, =_08127D68 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08127D68: - .4byte _08127D90 - .4byte _08127D9A - .4byte _08127DA4 - .4byte _08127DB4 - .4byte _08127DBE - .4byte _08127DC8 - .4byte _08127DD8 - .4byte _08127DE2 - .4byte _08127DF2 - .4byte _08127E02 -_08127D90: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 - b _08127DAC -_08127D9A: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - b _08127DAC -_08127DA4: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 -_08127DAC: - movs r3, 0x1 - bl sub_8127B90 - b _08127E10 -_08127DB4: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x4 - b _08127DD0 -_08127DBE: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - b _08127DD0 -_08127DC8: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 -_08127DD0: - movs r3, 0x2 - bl sub_8127B90 - b _08127E10 -_08127DD8: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 - b _08127DFA -_08127DE2: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x4 - bl sub_8127B90 - b _08127E10 -_08127DF2: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 -_08127DFA: - movs r3, 0x3 - bl sub_8127B90 - b _08127E10 -_08127E02: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_8127B90 -_08127E10: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127D38 - - thumb_func_start sub_8127E18 -sub_8127E18: @ 8127E18 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r6, 0 - ldr r7, =gMapHeader - ldr r0, =gSpecialVar_0x8005 - mov r8, r0 - ldr r1, =gSpecialVar_0x8006 - mov r10, r1 - ldr r2, =gSaveBlock1Ptr - mov r9, r2 -_08127E34: - adds r5, r6, 0 - adds r5, 0xAE - adds r4, r5, 0 - adds r0, r4, 0 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08127F1C - adds r0, r4, 0 - bl FlagClear - movs r2, 0 - ldr r0, [r7, 0x4] - ldrb r4, [r0] - cmp r2, r4 - bcs _08127E82 - ldr r0, [r0, 0x4] - ldrh r0, [r0, 0x14] - cmp r0, r5 - beq _08127E82 - ldr r0, =gMapHeader - ldr r3, [r0, 0x4] - ldrb r6, [r3] - adds r4, r5, 0 -_08127E68: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r6 - bcs _08127E82 - ldr r0, [r3, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - cmp r0, r4 - bne _08127E68 -_08127E82: - ldr r0, [r7, 0x4] - ldr r1, [r0, 0x4] - lsls r4, r2, 1 - adds r4, r2 - lsls r4, 3 - adds r1, r4, r1 - ldr r5, =0x00003f20 - adds r0, r5, 0 - ldrb r1, [r1, 0x1] - adds r0, r1 - ldr r1, =gUnknown_0203A190 - ldr r1, [r1] - ldr r1, [r1, 0x1C] - ldrh r1, [r1] - bl VarSet - ldr r0, [r7, 0x4] - ldr r0, [r0, 0x4] - adds r4, r0 - ldrb r0, [r4] - mov r6, r8 - strh r0, [r6] - ldr r1, =gUnknown_0203AA34 - ldrh r1, [r1] - mov r2, r10 - strh r1, [r2] - ldr r1, =gUnknown_0203AA36 - ldrh r1, [r1] - ldr r4, =gSpecialVar_0x8007 - strh r1, [r4] - mov r5, r9 - ldr r2, [r5] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl show_sprite - ldrb r0, [r6] - ldr r2, [r5] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - mov r6, r10 - movs r4, 0 - ldrsh r3, [r6, r4] - ldr r5, =gSpecialVar_0x8007 - movs r6, 0 - ldrsh r4, [r5, r6] - str r4, [sp] - bl sub_808EBA8 - mov r1, r8 - ldrb r0, [r1] - mov r4, r9 - ldr r2, [r4] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl sub_808F254 - b _08127F26 - .pool -_08127F1C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xD - bls _08127E34 -_08127F26: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8127E18 - - thumb_func_start sub_8127F38 -sub_8127F38: @ 8127F38 - push {lr} - movs r1, 0 - ldr r0, =gUnknown_0203A17C - ldrb r2, [r0, 0x8] - cmp r1, r2 - bcs _08127F62 - ldr r3, [r0] -_08127F46: - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08127F58 - movs r0, 0x1 - b _08127F64 - .pool -_08127F58: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bcc _08127F46 -_08127F62: - movs r0, 0 -_08127F64: - pop {r1} - bx r1 - thumb_func_end sub_8127F38 - - thumb_func_start sub_8127F68 -sub_8127F68: @ 8127F68 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gUnknown_0203A17C - ldrb r0, [r0, 0x9] - cmp r0, 0x1 - bne _08127FAC - ldr r0, =gUnknown_0203A173 - ldrb r0, [r0] - cmp r0, 0x6 - beq _08127FAC - cmp r0, 0x7 - beq _08127FAC - ldr r4, =gStringVar4 - ldr r1, =gText_CantPlaceInRoom - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8127A5C - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _0812804C - .pool -_08127FAC: - bl sub_81279C4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08128038 - bl sub_8127F38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08127FE8 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, =sub_8128060 - str r1, [r0] - b _0812804C - .pool -_08127FE8: - ldr r0, =gStringVar1 - ldr r4, =gUnknown_0203A17C - ldrb r1, [r4, 0x8] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _08128018 - ldr r0, =gStringVar4 - ldr r1, =gText_NoMoreDecorations - bl StringExpandPlaceholders - b _08128020 - .pool -_08128018: - ldr r0, =gStringVar4 - ldr r1, =gText_NoMoreDecorations2 - bl StringExpandPlaceholders -_08128020: - ldr r1, =gStringVar4 - ldr r2, =sub_8127A5C - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _0812804C - .pool -_08128038: - ldr r4, =gStringVar4 - ldr r1, =gText_InUseAlready - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8127A5C - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_0812804C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8127F68 - - thumb_func_start sub_8128060 -sub_8128060: @ 8128060 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0x1 - beq _081280AC - cmp r0, 0x1 - bgt _08128088 - cmp r0, 0 - beq _0812808E - b _08128112 - .pool -_08128088: - cmp r0, 0x2 - beq _081280FC - b _08128112 -_0812808E: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08128112 - adds r0, r6, 0 - bl sub_8127ACC - movs r0, 0x1 - strh r0, [r7, 0xC] - b _08128112 - .pool -_081280AC: - ldr r4, =gPaletteFade - ldrb r0, [r4, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x8] - ldr r5, =gUnknown_0203A190 - ldr r0, =gUnknown_0203A172 - ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl ConfigureCameraObjectForPlacingDecoration - adds r0, r6, 0 - bl sub_812826C - adds r0, r6, 0 - adds r1, r5, 0 - bl SetUpPlacingDecorationPlayerAvatar - bl pal_fill_black - ldrb r1, [r4, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x8] - movs r0, 0x2 - strh r0, [r7, 0xC] - b _08128112 - .pool -_081280FC: - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08128112 - movs r0, 0 - strh r0, [r7, 0x20] - adds r0, r6, 0 - bl sub_8128FD8 -_08128112: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8128060 - - thumb_func_start ConfigureCameraObjectForPlacingDecoration -ConfigureCameraObjectForPlacingDecoration: @ 8128118 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, =gUnknown_0203AA38 - ldr r4, =gSprites - ldr r5, =gUnknown_03005DD0 - ldr r2, [r5, 0x4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x2E] - strb r0, [r3] - adds r0, r6, 0 - bl gpu_pal_decompress_alloc_tag_and_upload - lsls r0, 24 - lsrs r0, 24 - str r0, [r5, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r0, [r5, 0x4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, =sub_81292D0 - str r1, [r0] - adds r2, r4 - ldr r3, =gUnknown_085A7250 - ldr r0, [r6] - ldrb r0, [r0, 0x12] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - strh r0, [r2, 0x20] - ldr r0, [r5, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r0, [r6] - ldrb r0, [r0, 0x12] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x3] - strh r0, [r1, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ConfigureCameraObjectForPlacingDecoration - - thumb_func_start SetUpPlacingDecorationPlayerAvatar -SetUpPlacingDecorationPlayerAvatar: @ 81281A8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - ldrb r2, [r2, 0x12] - ldr r3, =gUnknown_085A7250 - ldr r0, [r1] - ldrb r4, [r0, 0x12] - lsls r1, r4, 2 - adds r1, r3 - lsls r0, r2, 4 - ldrb r1, [r1, 0x2] - adds r0, r1 - subs r2, 0x1 - lsls r2, 3 - subs r0, r2 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r4, 0x2 - beq _081281E2 - cmp r4, 0x8 - beq _081281E2 - cmp r4, 0x9 - bne _081281EA -_081281E2: - adds r0, r2, 0 - subs r0, 0x8 - lsls r0, 24 - lsrs r2, r0, 24 -_081281EA: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _0812820C - ldr r1, =SpriteCallbackDummy - str r0, [sp] - movs r0, 0xC1 - b _08128214 - .pool -_0812820C: - ldr r1, =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - movs r0, 0xC2 -_08128214: - movs r3, 0x48 - bl AddPseudoFieldObject - ldr r1, =gUnknown_0203AA39 - strb r0, [r1] - ldr r3, =gSprites - ldr r0, =gUnknown_0203AA39 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r4, =gUnknown_0203AA38 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - bl DestroySprite - ldr r0, =gUnknown_03005DD0 - ldr r0, [r0, 0x4] - strb r0, [r4] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end SetUpPlacingDecorationPlayerAvatar - - thumb_func_start sub_812826C -sub_812826C: @ 812826C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, =gDecorations - ldr r0, =gUnknown_0203A172 - ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r2 - ldrb r0, [r0, 0x12] - cmp r0, 0x9 - bls _0812828C - b _081283B2 -_0812828C: - lsls r0, 2 - ldr r1, =_081282A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081282A8: - .4byte _081282D0 - .4byte _081282E4 - .4byte _081282FC - .4byte _08128314 - .4byte _08128328 - .4byte _0812833C - .4byte _08128350 - .4byte _08128370 - .4byte _08128388 - .4byte _081283A0 -_081282D0: - ldr r0, =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _08128394 - .pool -_081282E4: - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x12] - movs r1, 0x1 - b _081283B0 - .pool -_081282FC: - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 - strh r1, [r0, 0x12] - movs r1, 0x1 - b _081283B0 - .pool -_08128314: - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x4 - b _081283AC - .pool -_08128328: - ldr r0, =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x2 - b _08128394 - .pool -_0812833C: - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - b _081283AC - .pool -_08128350: - ldr r0, =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x12] - movs r0, 0x3 - strh r0, [r1, 0x14] - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - b _081283B2 - .pool -_08128370: - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x12] - movs r1, 0x4 - b _081283B0 - .pool -_08128388: - ldr r0, =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x3 -_08128394: - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - b _081283B2 - .pool -_081283A0: - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 -_081283AC: - strh r1, [r0, 0x12] - movs r1, 0x2 -_081283B0: - strh r1, [r0, 0x14] -_081283B2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_812826C - - thumb_func_start sub_81283BC -sub_81283BC: @ 81283BC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - ldr r3, =gSprites - ldr r0, =gUnknown_0203AA38 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r2, 0x1 - strh r2, [r0, 0x3C] - ldr r0, =gUnknown_0203AA39 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x3C] - bl sub_8128DE0 - adds r0, r4, 0 - bl sub_8128950 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81283BC - - thumb_func_start sub_8128414 -sub_8128414: @ 8128414 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - ldr r3, =gSprites - ldr r0, =gUnknown_0203AA38 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r2, 0x1 - strh r2, [r0, 0x3C] - ldr r0, =gUnknown_0203AA39 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x3C] - bl sub_8128DE0 - ldr r5, =gStringVar4 - ldr r1, =gText_CancelDecorating - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8128B80 - adds r0, r4, 0 - adds r1, r5, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128414 - - thumb_func_start sub_8128484 -sub_8128484: @ 8128484 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - bl MetatileBehavior_IsMB_B3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812849E - cmp r4, 0 - beq _081284A2 -_0812849E: - movs r0, 0 - b _081284A4 -_081284A2: - movs r0, 0x1 -_081284A4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8128484 - - thumb_func_start sub_81284AC -sub_81284AC: @ 81284AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r4, r2, 16 - lsls r3, 16 - lsrs r5, r3, 16 - lsls r1, 16 - asrs r1, 16 - ldr r3, =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - movs r3, 0xE - ldrsh r0, [r2, r3] - adds r0, 0x7 - cmp r1, r0 - bne _081284EC - lsls r1, r4, 16 - asrs r1, 16 - movs r3, 0x10 - ldrsh r0, [r2, r3] - adds r0, 0x7 - cmp r1, r0 - bne _081284EC - cmp r5, 0 - beq _081284EC - movs r0, 0 - b _081284EE - .pool -_081284EC: - movs r0, 0x1 -_081284EE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81284AC - - thumb_func_start sub_81284F4 -sub_81284F4: @ 81284F4 - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsMB_B3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08128534 - ldrb r0, [r5] - cmp r0, 0x21 - bne _08128522 - adds r0, r4, 0 - bl MetatileBehavior_IsMB_C2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08128530 -_08128522: - lsls r0, r6, 24 - lsrs r0, 24 - bl MetatileBehavior_IsNormal - lsls r0, 24 - cmp r0, 0 - beq _08128534 -_08128530: - movs r0, 0x1 - b _08128536 -_08128534: - movs r0, 0 -_08128536: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81284F4 - - thumb_func_start sub_812853C -sub_812853C: @ 812853C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r1, [sp] - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r1, =gTasks - lsls r0, 2 - add r0, r10 - lsls r0, 3 - adds r0, r1 - ldrb r2, [r0, 0x14] - str r2, [sp, 0x4] - ldrb r0, [r0, 0x12] - str r0, [sp, 0x8] - ldr r3, [sp] - ldrb r0, [r3, 0x11] - adds r2, r1, 0 - cmp r0, 0x4 - bls _0812856E - b _0812893C -_0812856E: - lsls r0, 2 - ldr r1, =_08128580 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08128580: - .4byte _08128594 - .4byte _08128594 - .4byte _08128680 - .4byte _08128834 - .4byte _081288B8 -_08128594: - movs r6, 0 - ldr r0, [sp, 0x4] - cmp r6, r0 - bcc _0812859E - b _0812893C -_0812859E: - mov r1, r10 - lsls r1, 2 - str r1, [sp, 0x1C] -_081285A4: - mov r2, r10 - lsls r0, r2, 2 - add r0, r10 - lsls r0, 3 - ldr r3, =gTasks - adds r0, r3 - ldrh r0, [r0, 0xA] - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - adds r6, 0x1 - str r6, [sp, 0x14] - ldr r0, [sp, 0x8] - cmp r7, r0 - bcs _0812866E - mov r1, r9 - lsls r1, 16 - str r1, [sp, 0xC] - asrs r1, 16 - mov r9, r1 -_081285D0: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - ldr r2, =gTasks - adds r0, r2 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - mov r8, r0 - asrs r6, r0, 16 - adds r0, r6, 0 - mov r1, r9 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp, 0x4] - ldr r1, [sp, 0x14] - subs r0, r3, r1 - ldr r2, [sp, 0x8] - adds r1, r0, 0 - muls r1, r2 - adds r1, r7 - ldr r3, [sp] - ldr r0, [r3, 0x1C] - lsls r1, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - movs r3, 0xF0 - lsls r3, 8 - adds r1, r3, 0 - adds r5, r1, 0 - ands r5, r0 - adds r0, r4, 0 - ldr r1, [sp] - bl sub_81284F4 - lsls r0, 24 - cmp r0, 0 - bne _08128632 - b _0812890C -_08128632: - mov r0, r10 - adds r1, r6, 0 - mov r2, r9 - adds r3, r5, 0 - bl sub_81284AC - lsls r0, 24 - cmp r0, 0 - bne _08128646 - b _0812890C -_08128646: - mov r1, r8 - lsrs r0, r1, 16 - ldr r2, [sp, 0xC] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08128662 - cmp r4, 0x10 - beq _08128662 - b _0812890C -_08128662: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _081285D0 -_0812866E: - ldr r1, [sp, 0x14] - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r2, [sp, 0x4] - cmp r6, r2 - bcc _081285A4 - b _0812893C - .pool -_08128680: - movs r6, 0 - mov r3, r10 - lsls r3, 2 - str r3, [sp, 0x1C] - ldr r0, [sp, 0x4] - subs r0, 0x1 - str r0, [sp, 0x18] - cmp r6, r0 - bge _0812876C - adds r0, r3, 0 - add r0, r10 - lsls r0, 3 - str r0, [sp, 0x10] -_0812869A: - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldrh r0, [r0, 0xA] - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - adds r6, 0x1 - str r6, [sp, 0x14] - ldr r3, [sp, 0x8] - cmp r7, r3 - bcs _08128760 - lsls r0, 16 - str r0, [sp, 0x20] -_081286B8: - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - mov r8, r0 - asrs r6, r0, 16 - mov r2, r9 - lsls r1, r2, 16 - adds r0, r6, 0 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp, 0x4] - ldr r1, [sp, 0x14] - subs r0, r3, r1 - ldr r2, [sp, 0x8] - adds r1, r0, 0 - muls r1, r2 - adds r1, r7 - ldr r3, [sp] - ldr r0, [r3, 0x1C] - lsls r1, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - movs r3, 0xF0 - lsls r3, 8 - adds r1, r3, 0 - adds r5, r1, 0 - ands r5, r0 - adds r0, r4, 0 - bl MetatileBehavior_IsNormal - lsls r0, 24 - cmp r0, 0 - bne _08128724 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8128484 - lsls r0, 24 - cmp r0, 0 - bne _08128724 - b _0812890C -_08128724: - mov r0, r10 - adds r1, r6, 0 - ldr r3, [sp, 0x20] - asrs r2, r3, 16 - adds r3, r5, 0 - bl sub_81284AC - lsls r0, 24 - cmp r0, 0 - bne _0812873A - b _0812890C -_0812873A: - mov r1, r8 - lsrs r0, r1, 16 - ldr r2, [sp, 0x20] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _08128752 - b _0812890C -_08128752: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, =gTasks - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _081286B8 -_08128760: - ldr r1, [sp, 0x14] - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - cmp r6, r3 - blt _0812869A -_0812876C: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - ldr r1, [sp, 0x4] - subs r0, r1 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _0812878C - b _0812893C -_0812878C: - lsls r0, 16 - str r0, [sp, 0x20] -_08128790: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - ldr r1, =gTasks - adds r0, r1 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - mov r8, r0 - asrs r6, r0, 16 - mov r2, r9 - lsls r1, r2, 16 - adds r0, r6, 0 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp] - ldr r0, [r3, 0x1C] - lsls r1, r7, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - movs r3, 0xF0 - lsls r3, 8 - adds r1, r3, 0 - adds r5, r1, 0 - ands r5, r0 - adds r0, r4, 0 - bl MetatileBehavior_IsNormal - lsls r0, 24 - cmp r0, 0 - bne _081287F2 - adds r0, r4, 0 - bl MetatileBehavior_IsMB_B7 - lsls r0, 24 - cmp r0, 0 - bne _081287F2 - b _0812890C -_081287F2: - mov r0, r10 - adds r1, r6, 0 - ldr r3, [sp, 0x20] - asrs r2, r3, 16 - adds r3, r5, 0 - bl sub_81284AC - lsls r0, 24 - cmp r0, 0 - bne _08128808 - b _0812890C -_08128808: - mov r1, r8 - lsrs r0, r1, 16 - ldr r2, [sp, 0x20] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08128822 - cmp r4, 0x10 - bne _0812890C -_08128822: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _08128790 - b _0812893C - .pool -_08128834: - movs r6, 0 - ldr r0, [sp, 0x4] - cmp r6, r0 - bcc _0812883E - b _0812893C -_0812883E: - mov r1, r10 - lsls r0, r1, 2 - add r0, r10 - lsls r1, r0, 3 - ldr r2, =gTasks - adds r0, r1, r2 - ldrh r0, [r0, 0xA] - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcs _081288A4 - adds r0, r2, 0 - adds r1, r0 - mov r8, r1 - mov r1, r9 - lsls r0, r1, 16 - asrs r5, r0, 16 -_08128868: - mov r2, r8 - ldrh r0, [r2, 0x8] - adds r0, r7 - lsls r0, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsMB_B7 - lsls r0, 24 - cmp r0, 0 - beq _0812890C - adds r0, r4, 0 - adds r1, r5, 0x1 - bl MapGridGetMetatileIdAt - movs r1, 0xA3 - lsls r1, 2 - cmp r0, r1 - beq _0812890C - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _08128868 -_081288A4: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x4] - cmp r6, r0 - bcc _0812883E - b _0812893C - .pool -_081288B8: - mov r3, r10 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - mov r9, r0 - movs r7, 0 - str r1, [sp, 0x1C] - ldr r0, [sp, 0x8] - cmp r7, r0 - bcs _0812893C - adds r6, r2, 0 - mov r1, r9 - lsls r1, 16 - str r1, [sp, 0x20] -_081288D8: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp] - ldrb r0, [r3, 0x12] - cmp r0, 0x5 - bne _08128910 -_08128900: - adds r0, r4, 0 - bl MetatileBehavior_IsMB_C3 - lsls r0, 24 - cmp r0, 0 - bne _0812891C -_0812890C: - movs r0, 0 - b _0812893E -_08128910: - adds r0, r4, 0 - bl MetatileBehavior_IsMB_B5 - lsls r0, 24 - cmp r0, 0 - beq _08128900 -_0812891C: - adds r0, r5, 0 - ldr r2, [sp, 0x20] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - bne _0812890C - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _081288D8 -_0812893C: - movs r0, 0x1 -_0812893E: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_812853C - - thumb_func_start sub_8128950 -sub_8128950: @ 8128950 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gUnknown_0203A172 - ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r1, 5 - ldr r0, =gDecorations - adds r1, r0 - adds r0, r5, 0 - bl sub_812853C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081289A4 - ldr r4, =gStringVar4 - ldr r1, =gText_PlaceItHere - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_81289D0 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _081289BE - .pool -_081289A4: - movs r0, 0x20 - bl PlaySE - ldr r4, =gStringVar4 - ldr r1, =gText_CantBePlacedHere - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8129020 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_081289BE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128950 - - thumb_func_start sub_81289D0 -sub_81289D0: @ 81289D0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8197930 - ldr r1, =gUnknown_085A72C4 - adds r0, r4, 0 - bl sub_8121F68 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81289D0 - - thumb_func_start sub_81289F0 -sub_81289F0: @ 81289F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - adds r0, r4, 0 - bl sub_8128AAC - ldr r2, =gDecorations - ldr r0, =gUnknown_0203A172 - ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r1 - ldrb r3, [r0] - lsls r0, r3, 5 - adds r0, r2 - ldrb r0, [r0, 0x11] - cmp r0, 0x4 - beq _08128A44 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - ldrh r1, [r1, 0xA] - adds r2, r3, 0 - bl sub_8127D38 - b _08128A64 - .pool -_08128A44: - ldr r2, =gUnknown_0203AA34 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - subs r0, 0x7 - strh r0, [r2] - ldr r2, =gUnknown_0203AA36 - ldrh r0, [r1, 0xA] - subs r0, 0x7 - strh r0, [r2] - ldr r0, =gUnknown_08275D1F - bl ScriptContext1_SetupScript -_08128A64: - ldr r2, =gSprites - ldr r0, =gUnknown_0203AA38 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - adds r1, 0x2 - strh r1, [r0, 0x22] - ldr r0, =gMapHeader - ldrb r0, [r0, 0x14] - cmp r0, 0x56 - bne _08128A84 - bl sub_80EE104 -_08128A84: - adds r0, r4, 0 - bl sub_8128BBC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81289F0 - - thumb_func_start sub_8128AAC -sub_8128AAC: @ 8128AAC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r3, 0 - ldr r0, =gUnknown_0203A17C - ldrb r1, [r0, 0x8] - adds r5, r0, 0 - cmp r3, r1 - bcs _08128AD2 - ldr r4, [r5] -_08128AC0: - adds r2, r4, r3 - ldrb r0, [r2] - cmp r0, 0 - beq _08128AF0 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r1 - bcc _08128AC0 -_08128AD2: - ldrb r0, [r5, 0x9] - cmp r0, 0 - bne _08128B3C - movs r3, 0 - ldr r0, =gUnknown_0203A152 - ldrb r1, [r0] - adds r2, r0, 0 - cmp r1, 0 - bne _08128B28 - b _08128B48 - .pool -_08128AF0: - ldr r0, =gUnknown_0203A172 - ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, [r5, 0x4] - adds r2, r3 - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x8] - subs r0, 0x7 - lsls r0, 4 - ldrb r1, [r1, 0xA] - subs r1, 0x7 - adds r0, r1 - strb r0, [r2] - b _08128AD2 - .pool -_08128B28: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0xF - bhi _08128B76 - adds r1, r3, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08128B28 - b _08128B6E -_08128B3C: - movs r3, 0 - ldr r0, =gUnknown_0203A162 - ldrb r1, [r0] - adds r2, r0, 0 - cmp r1, 0 - bne _08128B5C -_08128B48: - ldr r0, =gUnknown_0203A172 - ldrb r0, [r0] - adds r0, 0x1 - strb r0, [r2] - b _08128B76 - .pool -_08128B5C: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0xB - bhi _08128B76 - adds r1, r3, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08128B5C -_08128B6E: - ldr r0, =gUnknown_0203A172 - ldrb r0, [r0] - adds r0, 0x1 - strb r0, [r1] -_08128B76: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128AAC - - thumb_func_start sub_8128B80 -sub_8128B80: @ 8128B80 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8197930 - ldr r1, =gUnknown_085A72CC - adds r0, r4, 0 - bl sub_8121F68 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128B80 - - thumb_func_start sub_8128BA0 -sub_8128BA0: @ 8128BA0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - adds r0, r4, 0 - bl sub_8128BBC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8128BA0 - - thumb_func_start sub_8128BBC -sub_8128BBC: @ 8128BBC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, =c1_overworld_prev_quest - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128BBC - - thumb_func_start c1_overworld_prev_quest -c1_overworld_prev_quest: @ 8128BEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08128C10 - cmp r0, 0x1 - beq _08128C30 - b _08128C4C - .pool -_08128C10: - bl ScriptContext2_Enable - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08128C4C - adds r0, r4, 0 - bl sub_8127B04 - movs r0, 0x1 - strh r0, [r5, 0xC] - b _08128C4C - .pool -_08128C30: - bl sub_812A3C8 - ldr r0, =0x00000be5 - bl FreeSpritePaletteByTag - ldr r1, =gFieldCallback - ldr r0, =sub_8128CD4 - str r0, [r1] - ldr r0, =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08128C4C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end c1_overworld_prev_quest - - thumb_func_start sub_8128C64 -sub_8128C64: @ 8128C64 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, =gTasks + 0x8 - adds r4, r5, r6 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08128C9C - cmp r0, 0x1 - bgt _08128C8C - cmp r0, 0 - beq _08128C96 - b _08128CCA - .pool -_08128C8C: - cmp r0, 0x2 - beq _08128CA8 - cmp r0, 0x3 - beq _08128CB4 - b _08128CCA -_08128C96: - bl sub_80E9578 - b _08128CAC -_08128C9C: - ldr r0, =gUnknown_08275D0C - bl ScriptContext1_SetupScript - b _08128CAC - .pool -_08128CA8: - bl ScriptContext2_Enable -_08128CAC: - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - b _08128CCA -_08128CB4: - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08128CCA - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, =sub_812764C - str r1, [r0] -_08128CCA: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128C64 - - thumb_func_start sub_8128CD4 -sub_8128CD4: @ 8128CD4 - push {r4,lr} - bl ScriptContext2_Enable - bl pal_fill_black - ldr r0, =sub_8128C64 - movs r1, 0x8 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8127580 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128CD4 - - thumb_func_start sub_8128D10 -sub_8128D10: @ 8128D10 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r2, r1, r0 - ldr r0, =gUnknown_0203AA3A - ldrb r1, [r0] - adds r3, r0, 0 - cmp r1, 0x1 - bne _08128D48 - movs r1, 0x2 - ldrsh r0, [r2, r1] - movs r4, 0xC - ldrsh r1, [r2, r4] - subs r0, r1 - subs r0, 0x6 - cmp r0, 0 - bge _08128D48 - ldrh r0, [r2, 0x2] - adds r0, 0x1 - b _08128D62 - .pool -_08128D48: - ldrb r0, [r3] - cmp r0, 0x2 - bne _08128D6C - movs r0, 0x2 - ldrsh r1, [r2, r0] - subs r1, 0x7 - ldr r0, =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x4] - cmp r1, r0 - blt _08128D6C - ldrh r0, [r2, 0x2] - subs r0, 0x1 -_08128D62: - strh r0, [r2, 0x2] - movs r0, 0 - b _08128DAE - .pool -_08128D6C: - ldrb r0, [r3] - cmp r0, 0x3 - bne _08128D82 - movs r1, 0 - ldrsh r0, [r2, r1] - subs r0, 0x7 - cmp r0, 0 - bge _08128D82 - ldrh r0, [r2] - adds r0, 0x1 - b _08128DA2 -_08128D82: - ldrb r0, [r3] - cmp r0, 0x4 - bne _08128DAC - movs r3, 0 - ldrsh r1, [r2, r3] - movs r4, 0xA - ldrsh r0, [r2, r4] - adds r1, r0 - subs r1, 0x8 - ldr r0, =gMapHeader - ldr r0, [r0] - ldr r0, [r0] - cmp r1, r0 - blt _08128DAC - ldrh r0, [r2] - subs r0, 0x1 -_08128DA2: - strh r0, [r2] - movs r0, 0 - b _08128DAE - .pool -_08128DAC: - movs r0, 0x1 -_08128DAE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8128D10 - - thumb_func_start sub_8128DB4 -sub_8128DB4: @ 8128DB4 - push {lr} - ldr r0, =gMain - ldrh r0, [r0, 0x2C] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - beq _08128DD8 - cmp r1, 0x80 - beq _08128DD8 - cmp r1, 0x20 - beq _08128DD8 - cmp r1, 0x10 - beq _08128DD8 - movs r0, 0 - b _08128DDA - .pool -_08128DD8: - movs r0, 0x1 -_08128DDA: - pop {r1} - bx r1 - thumb_func_end sub_8128DB4 - - thumb_func_start sub_8128DE0 -sub_8128DE0: @ 8128DE0 - push {r4,lr} - ldr r1, =gUnknown_0203AA3A - movs r0, 0 - strb r0, [r1] - ldr r4, =gSprites - ldr r3, =gUnknown_0203AA38 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0 - strh r2, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x34] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128DE0 - - thumb_func_start sub_8128E18 -sub_8128E18: @ 8128E18 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r2, r0, 24 - mov r8, r2 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - ldr r5, =gSprites - ldr r3, =gUnknown_0203AA38 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x36 - ldrsh r6, [r0, r1] - cmp r6, 0 - beq _08128E46 - b _08128F66 -_08128E46: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08128E68 - ldr r0, =gUnknown_085A72D4 - movs r3, 0x18 - ldrsh r1, [r4, r3] - lsls r1, 3 - b _08128E76 - .pool -_08128E68: - cmp r0, 0x2 - bne _08128E88 - ldr r0, =gUnknown_085A72D4 - movs r3, 0x18 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r0, 0x4 -_08128E76: - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - b _08128FBA - .pool -_08128E88: - ldr r2, =gMain - ldrh r1, [r2, 0x2C] - movs r7, 0xF0 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0x40 - bne _08128EBC - ldr r1, =gUnknown_0203AA3A - movs r0, 0x1 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, =0x0000fffe - strh r1, [r0, 0x34] - ldrh r0, [r4, 0x2] - subs r0, 0x1 - strh r0, [r4, 0x2] -_08128EBC: - ldrh r1, [r2, 0x2C] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0x80 - bne _08128EEC - ldr r1, =gUnknown_0203AA3A - movs r0, 0x2 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x2 - strh r1, [r0, 0x34] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] -_08128EEC: - ldrh r1, [r2, 0x2C] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0x20 - bne _08128F1C - ldr r1, =gUnknown_0203AA3A - movs r0, 0x3 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, =0x0000fffe - strh r1, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x34] - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] -_08128F1C: - ldrh r1, [r2, 0x2C] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0x10 - bne _08128F4C - ldr r1, =gUnknown_0203AA3A - movs r0, 0x4 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x2 - strh r1, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x34] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_08128F4C: - bl sub_8128DB4 - lsls r0, 24 - cmp r0, 0 - beq _08128F62 - mov r0, r8 - bl sub_8128D10 - lsls r0, 24 - cmp r0, 0 - bne _08128F66 -_08128F62: - bl sub_8128DE0 -_08128F66: - ldr r0, =gUnknown_0203AA3A - ldrb r0, [r0] - cmp r0, 0 - beq _08128F94 - ldr r3, =gSprites - ldr r2, =gUnknown_0203AA38 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x36] - adds r1, 0x1 - strh r1, [r0, 0x36] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x36] - movs r0, 0x7 - ands r0, r2 - strh r0, [r1, 0x36] -_08128F94: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08128FBA - ldr r3, =gMain - ldrh r1, [r3, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08128FAC - strh r2, [r4, 0x14] -_08128FAC: - ldrh r1, [r3, 0x2E] - movs r2, 0x2 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08128FBA - strh r2, [r4, 0x14] -_08128FBA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128E18 - - thumb_func_start sub_8128FD8 -sub_8128FD8: @ 8128FD8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x1 - bl sub_8197434 - ldr r2, =gSprites - ldr r0, =gUnknown_0203AA38 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0 - strh r2, [r0, 0x3C] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x1C] - ldr r1, =sub_8128E18 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8128FD8 - - thumb_func_start sub_8129020 -sub_8129020: @ 8129020 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0812903A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08129040 -_0812903A: - adds r0, r2, 0 - bl sub_8128FD8 -_08129040: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129020 - - thumb_func_start sub_8129048 -sub_8129048: @ 8129048 - push {lr} - sub sp, 0x4 - adds r1, r0, 0 - mov r2, sp - movs r0, 0 - strh r0, [r2] - ldr r2, =0x01000452 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129048 - - thumb_func_start sub_8129068 -sub_8129068: @ 8129068 - push {lr} - adds r2, r0, 0 - lsls r1, 16 - ldr r0, =gTilesetPointer_SecretBase - ldr r0, [r0] - lsrs r1, 11 - ldr r0, [r0, 0x8] - adds r0, r1 - adds r1, r2, 0 - movs r2, 0x8 - bl CpuFastSet - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129068 - - thumb_func_start sub_8129088 -sub_8129088: @ 8129088 - push {r4-r7,lr} - sub sp, 0x20 - adds r7, r0, 0 - lsls r1, 16 - lsrs r2, r1, 16 - lsrs r4, r1, 26 - adds r5, r4, 0 - cmp r2, 0 - beq _0812909E - ldr r0, =0x000003ff - ands r2, r0 -_0812909E: - ldr r0, =gTilesetPointer_SecretBase - ldr r0, [r0] - lsls r1, r2, 5 - ldr r0, [r0, 0x4] - adds r0, r1 - mov r1, sp - movs r2, 0x8 - bl CpuFastSet - cmp r4, 0x1 - beq _081290DE - cmp r4, 0x1 - bgt _081290C8 - cmp r4, 0 - beq _081290D2 - b _0812919A - .pool -_081290C8: - cmp r5, 0x2 - beq _0812913E - cmp r5, 0x3 - beq _08129176 - b _0812919A -_081290D2: - mov r0, sp - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - b _0812919A -_081290DE: - movs r5, 0 - movs r6, 0xF -_081290E2: - lsls r4, r5, 2 - adds r4, r7 - adds r5, 0x1 - lsls r3, r5, 2 - subs r0, r3, 0x1 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4] - subs r0, r3, 0x2 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4, 0x1] - subs r0, r3, 0x3 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4, 0x2] - subs r3, 0x4 - mov r1, sp - adds r0, r1, r3 - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4, 0x3] - lsls r5, 16 - lsrs r5, 16 - cmp r5, 0x7 - bls _081290E2 - b _0812919A -_0812913E: - movs r5, 0 - movs r3, 0x7 -_08129142: - lsls r2, r5, 2 - adds r2, r7 - subs r1, r3, r5 - lsls r1, 2 - mov r4, sp - adds r0, r4, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r1, 0x1 - add r0, sp - ldrb r0, [r0] - strb r0, [r2, 0x1] - adds r0, r1, 0x2 - add r0, sp - ldrb r0, [r0] - strb r0, [r2, 0x2] - adds r1, 0x3 - adds r0, r4, r1 - ldrb r0, [r0] - strb r0, [r2, 0x3] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _08129142 - b _0812919A -_08129176: - movs r5, 0 - movs r4, 0x1F - movs r6, 0xF -_0812917C: - adds r3, r7, r5 - subs r0, r4, r5 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r3] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1F - bls _0812917C -_0812919A: - add sp, 0x20 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8129088 - - thumb_func_start sub_81291A4 -sub_81291A4: @ 81291A4 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 -_081291AA: - lsls r0, r4, 5 - adds r0, 0x84 - adds r0, r5, r0 - lsls r2, r4, 1 - adds r1, r5, 0x4 - adds r1, r2 - ldrh r1, [r1] - bl sub_8129088 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3F - bls _081291AA - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81291A4 - - thumb_func_start sub_81291CC -sub_81291CC: @ 81291CC - lsls r0, 16 - ldr r1, =gTilesetPointer_SecretBaseRedCave - ldr r1, [r1] - ldr r1, [r1, 0xC] - lsrs r0, 15 - adds r0, r1 - ldrh r1, [r0] - ldr r0, =0x00000fff - ands r0, r1 - bx lr - .pool - thumb_func_end sub_81291CC - - thumb_func_start sub_81291E8 -sub_81291E8: @ 81291E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x12] - movs r6, 0 - ldr r1, =gUnknown_085A71B0 - lsls r5, r0, 4 - adds r0, r5, r1 - ldrb r0, [r0, 0xC] - cmp r6, r0 - bcs _0812924C - adds r7, r1, 0 -_08129204: - mov r4, r8 - ldm r4!, {r1} - adds r0, r7, 0x4 - adds r0, r5, r0 - ldr r0, [r0] - adds r0, r6 - ldrb r0, [r0] - ldr r1, [r1, 0x1C] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - adds r1, r7, 0 - adds r1, 0x8 - adds r1, r5, r1 - ldr r1, [r1] - adds r1, r6 - lsls r0, 3 - ldrb r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl sub_81291CC - adds r2, r5, r7 - ldr r1, [r2] - adds r1, r6 - ldrb r1, [r1] - lsls r1, 1 - adds r4, r1 - strh r0, [r4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r2, [r2, 0xC] - cmp r6, r2 - bcc _08129204 -_0812924C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81291E8 - - thumb_func_start sub_812925C -sub_812925C: @ 812925C - push {r4,r5,lr} - lsls r0, 24 - ldr r3, =gUnknown_0203AA3C - movs r1, 0 - strb r1, [r3] - ldrb r2, [r3, 0x1] - subs r1, 0x4 - ands r1, r2 - movs r5, 0xD - negs r5, r5 - ands r1, r5 - movs r2, 0x11 - negs r2, r2 - ands r1, r2 - subs r2, 0x10 - ands r1, r2 - strb r1, [r3, 0x1] - ldr r1, =gUnknown_085A7250 - lsrs r0, 22 - adds r0, r1 - ldrb r1, [r0] - movs r4, 0x3F - lsls r1, 6 - strb r1, [r3, 0x1] - ldrh r2, [r3, 0x2] - ldr r1, =0xfffffe00 - ands r1, r2 - strh r1, [r3, 0x2] - ldrb r2, [r3, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - strb r1, [r3, 0x3] - ldrb r0, [r0, 0x1] - lsls r0, 6 - ands r4, r1 - orrs r4, r0 - strb r4, [r3, 0x3] - ldrh r1, [r3, 0x4] - ldr r0, =0xfffffc00 - ands r0, r1 - strh r0, [r3, 0x4] - ldrb r0, [r3, 0x5] - ands r5, r0 - movs r0, 0xF - ands r5, r0 - strb r5, [r3, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812925C - - thumb_func_start sub_81292D0 -sub_81292D0: @ 81292D0 - movs r1, 0 - strh r1, [r0, 0x32] - strh r1, [r0, 0x34] - strh r1, [r0, 0x36] - strh r1, [r0, 0x38] - strh r1, [r0, 0x3A] - strh r1, [r0, 0x3C] - ldr r1, =sub_81292E8 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_81292D0 - - thumb_func_start sub_81292E8 -sub_81292E8: @ 81292E8 - push {lr} - adds r2, r0, 0 - movs r1, 0x3C - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _08129322 - movs r1, 0x3A - ldrsh r0, [r2, r1] - cmp r0, 0xE - bgt _0812930A - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - b _08129314 -_0812930A: - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 -_08129314: - strb r0, [r3] - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - strh r0, [r2, 0x3A] - b _0812932E -_08129322: - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_0812932E: - pop {r0} - bx r0 - thumb_func_end sub_81292E8 - - thumb_func_start gpu_pal_decompress_alloc_tag_and_upload -gpu_pal_decompress_alloc_tag_and_upload: @ 8129334 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl sub_8129048 - lsls r4, 5 - ldr r0, =gDecorations - adds r4, r0 - str r4, [r5] - ldrb r0, [r4, 0x11] - cmp r0, 0x4 - beq _081293B4 - ldr r0, =0x00000be5 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl sub_81291E8 - ldr r0, [r5] - ldrb r0, [r0, 0x12] - bl sub_812925C - adds r0, r5, 0 - bl sub_81291A4 - ldr r1, =0x00000884 - adds r0, r5, r1 - ldr r1, =gTilesetPointer_SecretBaseRedCave - ldr r2, [r1] - ldr r1, [r5] - ldr r1, [r1, 0x1C] - ldrh r1, [r1] - ldr r2, [r2, 0xC] - lsls r1, 4 - adds r1, r2 - ldrh r1, [r1, 0xE] - lsrs r1, 12 - bl sub_8129068 - ldr r0, =gUnknown_085A72BC - bl LoadSpritePalette - ldr r0, =gUnknown_085A728C - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - b _081293C6 - .pool -_081293B4: - ldr r0, [r4, 0x1C] - ldrh r0, [r0] - ldr r1, =SpriteCallbackDummy - movs r2, 0x1 - str r2, [sp] - movs r2, 0 - movs r3, 0 - bl AddPseudoFieldObject -_081293C6: - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end gpu_pal_decompress_alloc_tag_and_upload - - thumb_func_start AddDecorationIconObjectFromIconTable -@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decorationId) -AddDecorationIconObjectFromIconTable: @ 81293D8 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r5, r2, 24 - bl AllocItemIconTemporaryBuffers - lsls r0, 24 - cmp r0, 0 - beq _08129490 - adds r0, r5, 0 - movs r1, 0 - bl GetDecorationIconPicOrPalette - ldr r4, =gUnknown_0203CEBC - ldr r1, [r4] - bl LZDecompressWram - ldr r0, [r4] - ldr r4, =gUnknown_0203CEC0 - ldr r1, [r4] - bl CopyItemIconPicTo4x4Buffer - ldr r0, [r4] - str r0, [sp] - ldr r4, =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r4 - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - lsls r2, r7, 16 - ldr r1, =0x0000ffff - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - adds r0, r5, 0 - movs r1, 0x1 - bl GetDecorationIconPicOrPalette - str r0, [sp, 0x8] - add r0, sp, 0x8 - ldr r1, [r0, 0x4] - ands r1, r4 - orrs r1, r6 - str r1, [r0, 0x4] - bl LoadCompressedObjectPalette - movs r0, 0x18 - bl Alloc - adds r5, r0, 0 - adds r1, r5, 0 - ldr r0, =gUnknown_08614FF4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - strh r7, [r5] - strh r6, [r5, 0x2] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl FreeItemIconTemporaryBuffers - adds r0, r5, 0 - bl Free - adds r0, r4, 0 - b _08129492 - .pool -_08129490: - movs r0, 0x40 -_08129492: - add sp, 0x10 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end AddDecorationIconObjectFromIconTable - - thumb_func_start GetDecorationIconPicOrPalette -@ u32 GetDecorationIconPicOrPalette(u16 decorationId, u8 which) -GetDecorationIconPicOrPalette: @ 812949C - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r3, 0x78 - bls _081294AC - movs r3, 0 -_081294AC: - ldr r2, =gUnknown_085A6BE8 - lsls r0, 2 - lsls r1, r3, 3 - adds r0, r1 - adds r0, r2 - ldr r0, [r0] - pop {r1} - bx r1 - .pool - thumb_func_end GetDecorationIconPicOrPalette - - thumb_func_start AddDecorationIconObjectFromFieldObject -@ u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decorationId) -AddDecorationIconObjectFromFieldObject: @ 81294C0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r4, r2, 0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r4, 24 - lsrs r4, 24 - ldr r6, =gUnknown_0203A190 - adds r0, r6, 0 - bl sub_8129048 - lsls r4, 5 - ldr r0, =gDecorations - adds r4, r0 - str r4, [r6] - ldrb r0, [r4, 0x11] - cmp r0, 0x4 - beq _081295A4 - adds r0, r6, 0 - bl sub_81291E8 - ldr r0, [r6] - ldrb r0, [r0, 0x12] - bl sub_812925C - adds r0, r6, 0 - bl sub_81291A4 - ldr r0, =0x00000884 - adds r5, r6, r0 - ldr r0, =gTilesetPointer_SecretBaseRedCave - ldr r1, [r0] - ldr r0, [r6] - ldr r0, [r0, 0x1C] - ldrh r0, [r0] - ldr r1, [r1, 0xC] - lsls r0, 4 - adds r0, r1 - ldrh r1, [r0, 0xE] - lsrs r1, 12 - adds r0, r5, 0 - bl sub_8129068 - adds r0, r6, 0 - adds r0, 0x84 - str r0, [sp, 0x4] - ldr r1, =gUnknown_085A72F4 - ldr r0, [r6] - ldrb r0, [r0, 0x12] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 21 - ldr r4, =0xffff0000 - mov r2, r8 - lsls r1, r2, 16 - lsrs r0, 16 - orrs r0, r1 - str r0, [sp, 0x8] - add r0, sp, 0x4 - bl LoadSpriteSheet - str r5, [sp, 0xC] - add r0, sp, 0xC - ldr r1, [r0, 0x4] - ands r1, r4 - orrs r1, r7 - str r1, [r0, 0x4] - bl LoadSpritePalette - movs r0, 0x18 - bl Alloc - adds r4, r0, 0 - adds r1, r4, 0 - ldr r0, =gUnknown_085A72A4 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - mov r3, r8 - strh r3, [r4] - strh r7, [r4, 0x2] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - bl Free - b _081295BA - .pool -_081295A4: - ldr r0, [r4, 0x1C] - ldrh r0, [r0] - ldr r1, =SpriteCallbackDummy - movs r2, 0x1 - str r2, [sp] - movs r2, 0 - movs r3, 0 - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r5, r0, 24 -_081295BA: - adds r0, r5, 0 - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AddDecorationIconObjectFromFieldObject - - thumb_func_start AddDecorationIconObject -@ u8 AddDecorationIconObject(u8 decorationId, u16 x, u16 y, u8 priority, u16 tilesTag, u16 paletteTag) -AddDecorationIconObject: @ 81295CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - lsls r0, 24 - lsrs r6, r0, 24 - mov r12, r6 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - mov r9, r8 - lsls r2, 16 - lsrs r7, r2, 16 - mov r10, r7 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp] - lsls r4, 16 - lsrs r4, 16 - adds r3, r4, 0 - lsls r5, 16 - lsrs r5, 16 - adds r2, r5, 0 - cmp r6, 0x78 - bls _08129634 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl AddDecorationIconObjectFromIconTable - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _08129696 - ldr r2, =gSprites - lsls r3, r4, 4 - adds r1, r3, r4 - lsls r1, 2 - adds r1, r2 - mov r5, r8 - lsls r0, r5, 16 - asrs r0, 16 - adds r0, 0x4 - strh r0, [r1, 0x24] - lsls r0, r7, 16 - b _081296B2 - .pool -_08129634: - ldr r0, =gUnknown_085A6BE8 - lsls r1, r6, 3 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _08129684 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl AddDecorationIconObjectFromFieldObject - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _08129696 - ldr r1, =gSprites - lsls r2, r4, 4 - adds r0, r2, r4 - lsls r0, 2 - adds r5, r0, r1 - mov r0, r8 - strh r0, [r5, 0x24] - adds r0, r6, 0 - subs r0, 0x2A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08129680 - lsls r0, r7, 16 - asrs r0, 16 - subs r0, 0x4 - strh r0, [r5, 0x26] - b _081296BC - .pool -_08129680: - strh r7, [r5, 0x26] - b _081296BC -_08129684: - adds r0, r3, 0 - adds r1, r2, 0 - mov r2, r12 - bl AddDecorationIconObjectFromIconTable - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - bne _0812969A -_08129696: - movs r0, 0x40 - b _081296D8 -_0812969A: - ldr r2, =gSprites - lsls r3, r4, 4 - adds r1, r3, r4 - lsls r1, 2 - adds r1, r2 - mov r5, r9 - lsls r0, r5, 16 - asrs r0, 16 - adds r0, 0x4 - strh r0, [r1, 0x24] - mov r5, r10 - lsls r0, r5, 16 -_081296B2: - asrs r0, 16 - adds r0, 0x4 - strh r0, [r1, 0x26] - adds r1, r2, 0 - adds r2, r3, 0 -_081296BC: - adds r2, r4 - lsls r2, 2 - adds r2, r1 - movs r0, 0x3 - ldr r1, [sp] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - adds r0, r4, 0 -_081296D8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AddDecorationIconObject - - thumb_func_start sub_81296EC -sub_81296EC: @ 81296EC - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gUnknown_0203A17C - ldr r1, [r3] - adds r1, r0 - movs r2, 0 - strb r2, [r1] - ldr r1, [r3, 0x4] - adds r1, r0 - strb r2, [r1] - bx lr - .pool - thumb_func_end sub_81296EC - - thumb_func_start sub_8129708 -sub_8129708: @ 8129708 - push {r4-r6,lr} - ldr r6, =gSpecialVar_0x8005 - movs r0, 0 - strh r0, [r6] - ldr r2, =gScriptResult - strh r0, [r2] - ldr r4, =gSpecialVar_0x8004 - ldr r1, =gUnknown_0203AAC4 - ldrh r0, [r4] - ldrb r1, [r1] - cmp r0, r1 - bne _08129744 - movs r0, 0x1 - strh r0, [r2] - b _08129796 - .pool -_08129738: - ldr r1, =gSpecialVar_0x8006 - ldrb r0, [r2] - strh r0, [r1] - b _08129796 - .pool -_08129744: - ldr r3, =gDecorations - ldr r2, =gUnknown_0203A17C - ldr r1, =gUnknown_0203AA44 - ldrh r0, [r4] - lsls r0, 3 - adds r4, r0, r1 - ldrb r1, [r4] - ldr r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r3 - ldrb r0, [r0, 0x11] - cmp r0, 0x4 - bne _08129796 - ldrh r0, [r4, 0x4] - strh r0, [r6] - ldrb r0, [r4] - bl sub_81296EC - movs r1, 0 - ldr r0, =gMapHeader - ldr r0, [r0, 0x4] - ldrb r2, [r0] - cmp r1, r2 - bcs _08129796 - ldr r5, [r0, 0x4] - ldrh r4, [r6] - adds r3, r2, 0 -_0812977E: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, r0, r5 - ldrh r0, [r2, 0x14] - cmp r0, r4 - beq _08129738 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r3 - bcc _0812977E -_08129796: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129708 - - thumb_func_start sub_81297AC -sub_81297AC: @ 81297AC - push {r4-r6,lr} - movs r2, 0 - ldr r0, =gMapHeader - ldr r0, [r0, 0x4] - ldrb r1, [r0] - cmp r2, r1 - bcs _081297F0 - adds r3, r0, 0 - ldr r5, [r3, 0x4] - ldr r0, =gSpecialVar_0x8004 - ldrh r4, [r0] - ldr r6, =gSpecialVar_0x8005 -_081297C4: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r5 - ldrh r0, [r1, 0x14] - cmp r0, r4 - bne _081297E4 - ldrb r0, [r1] - strh r0, [r6] - b _081297F0 - .pool -_081297E4: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r3] - cmp r2, r0 - bcc _081297C4 -_081297F0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81297AC - - thumb_func_start sub_81297F8 -sub_81297F8: @ 81297F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r6, 0 - b _081298BE -_08129808: - ldr r3, =gUnknown_0203AA44 - lsls r5, r6, 3 - adds r4, r5, r3 - ldrb r1, [r4] - ldr r2, =gUnknown_0203A17C - ldr r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 5 - ldr r7, =gDecorations - adds r0, r7 - ldrb r2, [r0, 0x11] - ldr r7, =gUnknown_0203A17C - ldr r0, [r7, 0x4] - adds r0, r1 - ldrb r0, [r0] - lsrs r1, r0, 4 - mov r8, r1 - movs r7, 0xF - adds r1, r7, 0 - ands r1, r0 - str r1, [sp] - adds r7, r5, 0 - adds r6, 0x1 - str r6, [sp, 0x4] - cmp r2, 0x4 - beq _081298B8 - movs r6, 0 - ldrb r4, [r4, 0x2] - cmp r6, r4 - bcs _081298AE -_08129846: - movs r4, 0 - adds r0, r5, r3 - adds r2, r6, 0x1 - mov r10, r2 - ldrb r0, [r0, 0x1] - cmp r4, r0 - bcs _0812989C - ldr r3, =gUnknown_0203AA44 - adds r3, r7 - mov r9, r3 - subs r5, r6, 0x7 - str r5, [sp, 0x8] -_0812985E: - adds r0, r4, 0x7 - add r0, r8 - ldr r1, =gMapHeader - ldr r3, [r1] - ldr r1, [sp] - subs r2, r1, r6 - ldr r1, [r3] - muls r2, r1 - mov r5, r8 - adds r1, r5, r4 - adds r1, r2 - ldr r2, [r3, 0xC] - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - movs r3, 0xC0 - lsls r3, 6 - adds r2, r3, 0 - orrs r2, r1 - ldr r5, [sp] - ldr r3, [sp, 0x8] - subs r1, r5, r3 - bl MapGridSetMetatileEntryAt - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - mov r5, r9 - ldrb r5, [r5, 0x1] - cmp r4, r5 - bcc _0812985E -_0812989C: - mov r1, r10 - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r3, =gUnknown_0203AA44 - adds r5, r7, 0 - adds r0, r7, r3 - ldrb r0, [r0, 0x2] - cmp r6, r0 - bcc _08129846 -_081298AE: - ldr r2, =gUnknown_0203AA44 - adds r0, r7, r2 - ldrb r0, [r0] - bl sub_81296EC -_081298B8: - ldr r3, [sp, 0x4] - lsls r0, r3, 24 - lsrs r6, r0, 24 -_081298BE: - ldr r0, =gUnknown_0203AAC4 - ldrb r0, [r0] - cmp r6, r0 - bcc _08129808 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81297F8 - - thumb_func_start sub_81298EC -sub_81298EC: @ 81298EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08129928 - cmp r0, 0x1 - bgt _08129914 - cmp r0, 0 - beq _0812991E - b _08129994 - .pool -_08129914: - cmp r0, 0x2 - beq _08129954 - cmp r0, 0x3 - beq _08129968 - b _08129994 -_0812991E: - bl sub_81297F8 - movs r0, 0x1 - strh r0, [r4, 0xC] - b _08129994 -_08129928: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08129994 - bl DrawWholeMapView - ldr r0, =gUnknown_08275D2E - bl ScriptContext1_SetupScript - movs r0, 0 - movs r1, 0x1 - bl sub_8197434 - movs r0, 0x2 - strh r0, [r4, 0xC] - b _08129994 - .pool -_08129954: - bl ScriptContext2_Enable - adds r0, r5, 0 - bl sub_8127814 - bl pal_fill_black - movs r0, 0x3 - strh r0, [r4, 0xC] - b _08129994 -_08129968: - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08129994 - ldr r4, =gStringVar4 - ldr r1, =gText_DecorationReturnedToPC - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8129D64 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - ldr r0, =gMapHeader - ldrb r0, [r0, 0x14] - cmp r0, 0x56 - bne _08129994 - bl sub_80EE104 -_08129994: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81298EC - - thumb_func_start sub_81299AC -sub_81299AC: @ 81299AC - push {lr} - movs r1, 0 - ldr r0, =gUnknown_0203A17C - ldrb r2, [r0, 0x8] - cmp r1, r2 - bcs _081299D6 - ldr r3, [r0] -_081299BA: - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _081299CC - movs r0, 0x1 - b _081299D8 - .pool -_081299CC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bcc _081299BA -_081299D6: - movs r0, 0 -_081299D8: - pop {r1} - bx r1 - thumb_func_end sub_81299AC - - thumb_func_start SetUpPuttingAwayDecorationPlayerAvatar -SetUpPuttingAwayDecorationPlayerAvatar: @ 81299DC - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - bl player_get_direction_lower_nybble - ldr r3, =gUnknown_0203AA38 - ldr r2, =gSprites - ldr r4, =gUnknown_03005DD0 - ldr r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strb r0, [r3] - bl sub_812A39C - ldr r0, =gUnknown_085A7404 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - str r0, [r4, 0x4] - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08129A3C - ldr r1, =SpriteCallbackDummy - str r0, [sp] - movs r0, 0xC1 - b _08129A44 - .pool -_08129A3C: - ldr r1, =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - movs r0, 0xC2 -_08129A44: - movs r2, 0x88 - movs r3, 0x48 - bl AddPseudoFieldObject - ldr r1, =gUnknown_0203AA39 - strb r0, [r1] - ldr r6, =gSprites - ldr r0, =gUnknown_0203AA39 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - movs r4, 0xD - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - movs r2, 0x4 - mov r8, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r5, =gUnknown_0203AA38 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r0, =gUnknown_03005DD0 - ldr r0, [r0, 0x4] - strb r0, [r5] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x5] - ands r4, r1 - mov r1, r8 - orrs r4, r1 - strb r4, [r0, 0x5] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end SetUpPuttingAwayDecorationPlayerAvatar - - thumb_func_start sub_8129ABC -sub_8129ABC: @ 8129ABC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08129B0C - cmp r0, 0x1 - bgt _08129AE4 - cmp r0, 0 - beq _08129AEA - b _08129B2E - .pool -_08129AE4: - cmp r0, 0x2 - beq _08129B1A - b _08129B2E -_08129AEA: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08129B2E - adds r0, r5, 0 - bl sub_8127ACC - movs r0, 0x1 - strh r0, [r4, 0x4] - strh r0, [r4, 0xC] - strh r0, [r4, 0xA] - b _08129B2E - .pool -_08129B0C: - bl SetUpPuttingAwayDecorationPlayerAvatar - bl pal_fill_black - movs r0, 0x2 - strh r0, [r4, 0x4] - b _08129B2E -_08129B1A: - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08129B2E - strh r0, [r4, 0x18] - adds r0, r5, 0 - bl sub_8129B34 -_08129B2E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8129ABC - - thumb_func_start sub_8129B34 -sub_8129B34: @ 8129B34 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0 - movs r1, 0x1 - bl sub_8197434 - ldr r4, =gSprites - ldr r3, =gUnknown_0203AA38 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0 - strh r6, [r0, 0x3C] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, =sub_812A36C - str r1, [r0] - ldr r2, =gUnknown_0203AA39 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x88 - strh r1, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x48 - strh r1, [r0, 0x22] - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x1C] - ldr r1, =sub_8128E18 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129B34 - - thumb_func_start sub_8129BCC -sub_8129BCC: @ 8129BCC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - bl sub_8128DE0 - adds r0, r4, 0 - bl sub_8129C74 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129BCC - - thumb_func_start sub_8129BF8 -sub_8129BF8: @ 8129BF8 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - bl sub_8128DE0 - ldr r3, =gSprites - ldr r5, =gUnknown_0203AA38 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, =SpriteCallbackDummy - str r1, [r0] - ldr r5, =gStringVar4 - ldr r1, =gText_StopPuttingAwayDecorations - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r2, =sub_812A1F0 - adds r0, r4, 0 - adds r1, r5, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129BF8 - - thumb_func_start sub_8129C74 -sub_8129C74: @ 8129C74 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_812A0E8 - ldr r0, =gUnknown_0203AAC4 - ldrb r0, [r0] - cmp r0, 0 - beq _08129CA8 - ldr r4, =gStringVar4 - ldr r1, =gText_ReturnDecorationToPC - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_812A1A0 - b _08129D14 - .pool -_08129CA8: - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSecretBasePC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08129CDE - adds r0, r4, 0 - bl MetatileBehavior_IsMB_C5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08129D3C -_08129CDE: - ldr r3, =gSprites - ldr r4, =gUnknown_0203AA38 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, =SpriteCallbackDummy - str r1, [r0] - ldr r4, =gStringVar4 - ldr r1, =gText_StopPuttingAwayDecorations - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_812A1F0 -_08129D14: - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _08129D50 - .pool -_08129D3C: - ldr r4, =gStringVar4 - ldr r1, =gText_NoDecorationHere - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8129D64 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_08129D50: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129C74 - - thumb_func_start sub_8129D64 -sub_8129D64: @ 8129D64 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08129D7E - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08129D84 -_08129D7E: - adds r0, r2, 0 - bl sub_8129B34 -_08129D84: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129D64 - - thumb_func_start sub_8129D8C -sub_8129D8C: @ 8129D8C - push {lr} - adds r2, r1, 0 - lsls r0, 24 - ldr r1, =gDecorations - lsrs r0, 19 - adds r0, r1 - ldrb r1, [r0, 0x12] - cmp r1, 0 - bne _08129DA8 - movs r0, 0x1 - strb r0, [r2, 0x1] - b _08129E06 - .pool -_08129DA8: - cmp r1, 0x1 - bne _08129DB4 - movs r0, 0x2 - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - b _08129E08 -_08129DB4: - cmp r1, 0x2 - bne _08129DC0 - movs r0, 0x3 - strb r0, [r2, 0x1] - movs r0, 0x1 - b _08129E06 -_08129DC0: - cmp r1, 0x3 - bne _08129DC8 - movs r0, 0x4 - b _08129E02 -_08129DC8: - cmp r1, 0x4 - bne _08129DD2 - movs r0, 0x2 - strb r0, [r2, 0x1] - b _08129E06 -_08129DD2: - cmp r1, 0x5 - bne _08129DDA - movs r0, 0x1 - b _08129E02 -_08129DDA: - cmp r1, 0x6 - bne _08129DE6 - movs r0, 0x1 - strb r0, [r2, 0x1] - movs r0, 0x3 - b _08129E06 -_08129DE6: - cmp r1, 0x7 - bne _08129DF2 - movs r0, 0x2 - strb r0, [r2, 0x1] - movs r0, 0x4 - b _08129E06 -_08129DF2: - cmp r1, 0x8 - bne _08129DFC - movs r0, 0x3 - strb r0, [r2, 0x1] - b _08129E06 -_08129DFC: - cmp r1, 0x9 - bne _08129E08 - movs r0, 0x3 -_08129E02: - strb r0, [r2, 0x1] - movs r0, 0x2 -_08129E06: - strb r0, [r2, 0x2] -_08129E08: - pop {r0} - bx r0 - thumb_func_end sub_8129D8C - - thumb_func_start sub_8129E0C -sub_8129E0C: @ 8129E0C - push {r4-r6,lr} - lsls r0, 24 - lsls r1, 24 - ldr r5, =gSprites - ldr r6, =gUnknown_0203AA38 - ldrb r3, [r6] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r5 - adds r2, 0x3E - ldrb r3, [r2] - movs r4, 0x4 - orrs r3, r4 - strb r3, [r2] - ldrb r3, [r6] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r3, r5, 0 - adds r3, 0x1C - adds r2, r3 - ldr r3, =SpriteCallbackDummy - str r3, [r2] - ldr r4, =gUnknown_0203AA39 - ldrb r3, [r4] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r5 - lsrs r0, 20 - adds r0, 0x88 - strh r0, [r2, 0x20] - ldrb r2, [r4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - lsrs r1, 20 - adds r1, 0x48 - strh r1, [r0, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8129E0C - - thumb_func_start sub_8129E74 -sub_8129E74: @ 8129E74 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - ldrb r0, [r2, 0x8] - subs r0, 0x7 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r2, 0xA] - subs r0, 0x7 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, =gUnknown_0203A17C - ldr r0, [r2, 0x4] - adds r0, r1 - ldrb r0, [r0] - lsrs r5, r0, 4 - movs r6, 0xF - ands r6, r0 - mov r0, r9 - ldrb r4, [r0, 0x2] - ldr r0, [r2] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x29 - bne _08129ED4 - adds r0, r5, 0x7 - adds r1, r6, 0x7 - bl MapGridGetMetatileIdAt - movs r1, 0xA3 - lsls r1, 2 - cmp r0, r1 - bne _08129ED4 - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08129ED4: - cmp r7, r5 - bcc _08129F10 - mov r0, r9 - ldrb r2, [r0, 0x1] - adds r0, r5, r2 - cmp r7, r0 - bge _08129F10 - subs r0, r6, r4 - cmp r8, r0 - ble _08129F10 - cmp r8, r6 - bhi _08129F10 - subs r0, r7, r5 - adds r0, 0x1 - subs r0, r2, r0 - lsls r0, 24 - lsrs r0, 24 - mov r2, r8 - subs r1, r6, r2 - lsls r1, 24 - lsrs r1, 24 - bl sub_8129E0C - movs r0, 0x1 - b _08129F12 - .pool -_08129F10: - movs r0, 0 -_08129F12: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8129E74 - - thumb_func_start sub_8129F20 -sub_8129F20: @ 8129F20 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, =gUnknown_0203A17C - ldr r3, =gUnknown_0203AA44 - ldr r0, =gUnknown_0203AAC4 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r3 - ldrb r1, [r0] - ldr r0, [r2, 0x4] - adds r0, r1 - ldrb r0, [r0] - lsrs r1, r0, 4 - mov r8, r1 - movs r6, 0xF - ands r6, r0 - movs r4, 0 - ldr r7, =gSaveBlock1Ptr - mov r9, r3 -_08129F4A: - ldr r1, [r7] - lsls r0, r4, 1 - adds r0, r4 - lsls r5, r0, 3 - adds r1, r5 - ldr r2, =0x00000c74 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r8 - bne _08129FB0 - ldr r2, =0x00000c76 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r6 - bne _08129FB0 - ldr r2, =0x00000c84 - adds r0, r1, r2 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08129FB0 - ldr r0, =gUnknown_0203AAC4 - ldrb r1, [r0] - lsls r1, 3 - add r1, r9 - ldr r0, [r7] - adds r0, r5 - ldr r2, =0x00000c84 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1, 0x4] - b _08129FBA - .pool -_08129FB0: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3F - bls _08129F4A -_08129FBA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8129F20 - - thumb_func_start sub_8129FC8 -sub_8129FC8: @ 8129FC8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - b _0812A02A -_08129FD2: - ldr r0, [r0] - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _0812A024 - ldr r0, =gDecorations - ldrb r2, [r1] - lsls r1, r2, 5 - adds r1, r0 - ldrb r0, [r1, 0x11] - cmp r0, 0x4 - bne _0812A024 - ldr r5, =gUnknown_0203AA44 - adds r0, r2, 0 - adds r1, r5, 0 - bl sub_8129D8C - lsls r1, r6, 24 - lsrs r1, 24 - adds r0, r7, 0 - adds r2, r5, 0 - bl sub_8129E74 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _0812A024 - strb r6, [r5] - bl sub_8129F20 - ldr r0, =gUnknown_0203AAC4 - strb r4, [r0] - movs r0, 0x1 - b _0812A034 - .pool -_0812A024: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_0812A02A: - ldr r0, =gUnknown_0203A17C - ldrb r1, [r0, 0x8] - cmp r6, r1 - bcc _08129FD2 - movs r0, 0 -_0812A034: - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8129FC8 - - thumb_func_start sub_812A040 -sub_812A040: @ 812A040 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - movs r4, 0 - ldr r7, =gUnknown_0203A17C - ldrb r0, [r7, 0x8] - cmp r4, r0 - bcs _0812A0C6 - adds r6, r7, 0 - ldr r5, =gUnknown_0203AAC4 -_0812A072: - ldr r0, [r6] - adds r0, r4 - ldrb r1, [r0] - ldr r0, [r6, 0x4] - adds r0, r4 - ldrb r0, [r0] - lsrs r3, r0, 4 - movs r2, 0xF - ands r2, r0 - cmp r1, 0 - beq _0812A0BA - ldr r0, =gDecorations - lsls r1, 5 - adds r1, r0 - ldrb r0, [r1, 0x11] - cmp r0, 0x4 - bne _0812A0BA - ldr r0, [sp] - cmp r0, r3 - bhi _0812A0BA - cmp r10, r2 - bhi _0812A0BA - cmp r9, r3 - bcc _0812A0BA - cmp r8, r2 - bcc _0812A0BA - ldr r0, =gUnknown_0203AA44 - ldrb r1, [r5] - lsls r1, 3 - adds r1, r0 - strb r4, [r1] - bl sub_8129F20 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_0812A0BA: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r7, 0x8] - cmp r4, r0 - bcc _0812A072 -_0812A0C6: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A040 - - thumb_func_start sub_812A0E8 -sub_812A0E8: @ 812A0E8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, =gUnknown_0203AAC4 - movs r0, 0 - strb r0, [r4] - adds r0, r6, 0 - bl sub_8129FC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0812A18C - movs r5, 0 - ldr r0, =gUnknown_0203A17C - ldrb r1, [r0, 0x8] - cmp r5, r1 - bcs _0812A15A - adds r7, r4, 0 -_0812A10E: - ldr r0, [r0] - adds r0, r5 - ldrb r1, [r0] - cmp r1, 0 - beq _0812A14C - ldr r4, =gUnknown_0203AA44 - adds r0, r1, 0 - adds r1, r4, 0 - bl sub_8129D8C - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8129E74 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812A14C - strb r5, [r4] - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _0812A15A - .pool -_0812A14C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gUnknown_0203A17C - ldrb r1, [r0, 0x8] - cmp r5, r1 - bcc _0812A10E -_0812A15A: - ldr r0, =gUnknown_0203AAC4 - ldrb r0, [r0] - cmp r0, 0 - beq _0812A18C - ldr r0, =gUnknown_0203A17C - ldr r2, =gUnknown_0203AA44 - ldrb r1, [r2] - ldr r0, [r0, 0x4] - adds r0, r1 - ldrb r1, [r0] - lsrs r0, r1, 4 - movs r3, 0xF - ands r3, r1 - ldrb r1, [r2, 0x2] - subs r1, r3, r1 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r2, 0x1] - adds r2, r0 - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - bl sub_812A040 -_0812A18C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A0E8 - - thumb_func_start sub_812A1A0 -sub_812A1A0: @ 812A1A0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8197930 - ldr r1, =gUnknown_085A7348 - adds r0, r4, 0 - bl sub_8121F68 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A1A0 - - thumb_func_start sub_812A1C0 -sub_812A1C0: @ 812A1C0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, =sub_81298EC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A1C0 - - thumb_func_start sub_812A1F0 -sub_812A1F0: @ 812A1F0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8197930 - ldr r1, =gUnknown_085A7350 - adds r0, r4, 0 - bl sub_8121F68 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A1F0 - - thumb_func_start sub_812A210 -sub_812A210: @ 812A210 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - adds r0, r4, 0 - bl sub_812A22C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_812A210 - - thumb_func_start sub_812A22C -sub_812A22C: @ 812A22C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, =sub_812A25C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A22C - - thumb_func_start sub_812A25C -sub_812A25C: @ 812A25C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0812A280 - cmp r0, 0x1 - beq _0812A29C - b _0812A2B2 - .pool -_0812A280: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812A2B2 - adds r0, r4, 0 - bl sub_8127B04 - movs r0, 0x1 - strh r0, [r5, 0xC] - b _0812A2B2 - .pool -_0812A29C: - bl sub_812A3C8 - ldr r0, =gFieldCallback - ldr r1, =sub_812A334 - str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0812A2B2: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A25C - - thumb_func_start sub_812A2C4 -sub_812A2C4: @ 812A2C4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, =gTasks + 0x8 - adds r4, r5, r6 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0812A2FC - cmp r0, 0x1 - bgt _0812A2EC - cmp r0, 0 - beq _0812A2F6 - b _0812A32A - .pool -_0812A2EC: - cmp r0, 0x2 - beq _0812A308 - cmp r0, 0x3 - beq _0812A314 - b _0812A32A -_0812A2F6: - bl sub_80E9578 - b _0812A30C -_0812A2FC: - ldr r0, =gUnknown_08275D0C - bl ScriptContext1_SetupScript - b _0812A30C - .pool -_0812A308: - bl ScriptContext2_Enable -_0812A30C: - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - b _0812A32A -_0812A314: - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812A32A - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, =sub_8126B80 - str r1, [r0] -_0812A32A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A2C4 - - thumb_func_start sub_812A334 -sub_812A334: @ 812A334 - push {lr} - bl pal_fill_black - movs r0, 0 - movs r1, 0x1 - bl sub_81973C4 - bl sub_8126ABC - ldr r0, =sub_812A2C4 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0xC] - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A334 - - thumb_func_start sub_812A36C -sub_812A36C: @ 812A36C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - strh r0, [r2, 0x2E] - cmp r0, 0xF - ble _0812A38C - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0812A398 -_0812A38C: - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_0812A398: - pop {r0} - bx r0 - thumb_func_end sub_812A36C - - thumb_func_start sub_812A39C -sub_812A39C: @ 812A39C - push {lr} - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _0812A3B8 - ldr r0, =gUnknown_085A73D8 - bl LoadSpritePalette - b _0812A3BE - .pool -_0812A3B8: - ldr r0, =gUnknown_085A73E0 - bl LoadSpritePalette -_0812A3BE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A39C - - thumb_func_start sub_812A3C8 -sub_812A3C8: @ 812A3C8 - push {lr} - movs r0, 0x8 - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - thumb_func_end sub_812A3C8 - - thumb_func_start sub_812A3D4 -sub_812A3D4: @ 812A3D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_81279C4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812A430 - ldr r0, =gStringVar1 - ldr r1, =gUnknown_0203A172 - ldrb r2, [r1] - ldr r1, =gUnknown_0203A14C - ldr r1, [r1] - adds r1, r2 - ldrb r1, [r1] - lsls r1, 5 - ldr r2, =gDecorations + 1 - adds r1, r2 - bl StringCopy - ldr r4, =gStringVar4 - ldr r1, =gText_DecorationWillBeDiscarded - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_812A458 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _0812A444 - .pool -_0812A430: - ldr r4, =gStringVar4 - ldr r1, =gText_CantThrowAwayInUse - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8127A5C - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_0812A444: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A3D4 - - thumb_func_start sub_812A458 -sub_812A458: @ 812A458 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8197930 - ldr r1, =gUnknown_085A741C - adds r0, r4, 0 - bl sub_8121F68 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A458 - - thumb_func_start sub_812A478 -sub_812A478: @ 812A478 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_0203A172 - ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C - ldr r0, [r0] - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r5, =gUnknown_0203A173 - ldrb r0, [r5] - bl sub_8161AD0 - ldr r1, =gUnknown_0203A151 - strb r0, [r1] - ldrb r0, [r5] - bl sub_8161A38 - adds r0, r4, 0 - bl sub_8127814 - ldr r5, =gStringVar4 - ldr r1, =gText_DecorationThrownAway - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r2, =sub_8127A5C - adds r0, r4, 0 - adds r1, r5, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812A478 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/decoration_inventory.s b/asm/decoration_inventory.s deleted file mode 100644 index 7a909f5853..0000000000 --- a/asm/decoration_inventory.s +++ /dev/null @@ -1,459 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SetDecorationInventoriesPointers -SetDecorationInventoriesPointers: @ 81617F4 - push {r4,lr} - ldr r0, =gDecorationInventories - mov r12, r0 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, =0x00002734 - adds r0, r1, r2 - mov r4, r12 - str r0, [r4] - movs r3, 0xA - strb r3, [r4, 0x4] - adds r2, 0xA - adds r0, r1, r2 - str r0, [r4, 0x8] - strb r3, [r4, 0xC] - ldr r4, =0x00002748 - adds r0, r1, r4 - mov r2, r12 - str r0, [r2, 0x10] - strb r3, [r2, 0x14] - adds r4, 0xA - adds r0, r1, r4 - str r0, [r2, 0x18] - movs r2, 0x1E - mov r0, r12 - strb r2, [r0, 0x1C] - adds r4, 0x1E - adds r0, r1, r4 - mov r4, r12 - str r0, [r4, 0x20] - mov r0, r12 - adds r0, 0x24 - strb r2, [r0] - ldr r2, =0x0000278e - adds r0, r1, r2 - str r0, [r4, 0x28] - mov r0, r12 - adds r0, 0x2C - strb r3, [r0] - ldr r4, =0x00002798 - adds r0, r1, r4 - mov r2, r12 - str r0, [r2, 0x30] - adds r2, 0x34 - movs r0, 0x28 - strb r0, [r2] - adds r4, 0x28 - adds r1, r4 - mov r0, r12 - str r1, [r0, 0x38] - adds r0, 0x3C - strb r3, [r0] - bl sub_8126968 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end SetDecorationInventoriesPointers - - thumb_func_start ClearDecorationInventory -ClearDecorationInventory: @ 8161880 - push {r4,r5,lr} - lsls r0, 24 - movs r3, 0 - ldr r1, =gDecorationInventories - lsrs r2, r0, 21 - adds r0, r2, r1 - ldrb r0, [r0, 0x4] - cmp r3, r0 - bcs _081618AA - adds r5, r1, 0 - movs r4, 0 -_08161896: - adds r0, r2, r5 - ldr r1, [r0] - adds r1, r3 - strb r4, [r1] - adds r1, r3, 0x1 - lsls r1, 24 - lsrs r3, r1, 24 - ldrb r0, [r0, 0x4] - cmp r3, r0 - bcc _08161896 -_081618AA: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ClearDecorationInventory - - thumb_func_start ClearDecorationInventories -ClearDecorationInventories: @ 81618B4 - push {r4,lr} - movs r4, 0 -_081618B8: - adds r0, r4, 0 - bl ClearDecorationInventory - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _081618B8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end ClearDecorationInventories - - thumb_func_start sub_81618D0 -sub_81618D0: @ 81618D0 - push {r4,lr} - lsls r0, 24 - movs r2, 0 - ldr r1, =gDecorationInventories - lsrs r0, 21 - adds r0, r1 - movs r1, 0x4 - ldrsb r1, [r0, r1] - cmp r2, r1 - bge _0816190C - adds r4, r0, 0 - adds r3, r1, 0 -_081618E8: - lsls r0, r2, 24 - asrs r1, r0, 24 - ldr r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08161900 - adds r0, r1, 0 - b _08161910 - .pool -_08161900: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, r3 - blt _081618E8 -_0816190C: - movs r0, 0x1 - negs r0, r0 -_08161910: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81618D0 - - thumb_func_start CheckHasDecoration -CheckHasDecoration: @ 8161918 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, =gDecorations - lsls r0, r3, 5 - adds r0, r1 - ldrb r0, [r0, 0x13] - movs r2, 0 - ldr r1, =gDecorationInventories - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x4] - cmp r2, r1 - bcs _08161956 - ldr r4, [r0] -_08161936: - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, r3 - bne _0816194C - movs r0, 0x1 - b _08161958 - .pool -_0816194C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r1 - bcc _08161936 -_08161956: - movs r0, 0 -_08161958: - pop {r4} - pop {r1} - bx r1 - thumb_func_end CheckHasDecoration - - thumb_func_start DecorationAdd -DecorationAdd: @ 8161960 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r4, 0 - beq _081619A0 - ldr r1, =gDecorations - lsls r0, r4, 5 - adds r0, r1 - ldrb r5, [r0, 0x13] - adds r0, r5, 0 - bl sub_81618D0 - lsls r0, 24 - asrs r2, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _081619A0 - ldr r0, =gDecorationInventories - lsls r1, r5, 3 - adds r1, r0 - ldr r0, [r1] - adds r0, r2 - strb r4, [r0] - movs r0, 0x1 - b _081619A2 - .pool -_081619A0: - movs r0, 0 -_081619A2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end DecorationAdd - - thumb_func_start DecorationCheckSpace -DecorationCheckSpace: @ 81619A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _081619D4 - ldr r1, =gDecorations - lsls r0, 5 - adds r0, r1 - ldrb r0, [r0, 0x13] - bl sub_81618D0 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _081619D4 - movs r0, 0x1 - b _081619D6 - .pool -_081619D4: - movs r0, 0 -_081619D6: - pop {r1} - bx r1 - thumb_func_end DecorationCheckSpace - - thumb_func_start DecorationRemove -DecorationRemove: @ 81619DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - cmp r5, 0 - bne _081619F8 - b _08161A26 -_081619EA: - movs r0, 0 - strb r0, [r1] - adds r0, r6, 0 - bl sub_8161A38 - movs r0, 0x1 - b _08161A28 -_081619F8: - ldr r2, =gDecorationInventories - ldr r1, =gDecorations - lsls r0, r5, 5 - adds r0, r1 - ldrb r4, [r0, 0x13] - lsls r0, r4, 3 - adds r0, r2 - ldrb r1, [r0, 0x4] - cmp r3, r1 - bcs _08161A26 - adds r6, r4, 0 - adds r4, r0, 0 - adds r2, r1, 0 -_08161A12: - ldr r0, [r4] - adds r1, r0, r3 - ldrb r0, [r1] - cmp r0, r5 - beq _081619EA - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r2 - bcc _08161A12 -_08161A26: - movs r0, 0 -_08161A28: - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end DecorationRemove - - thumb_func_start sub_8161A38 -sub_8161A38: @ 8161A38 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - movs r6, 0 - ldr r2, =gDecorationInventories - lsrs r0, 21 - adds r1, r0, r2 - ldrb r3, [r1, 0x4] - cmp r6, r3 - bcs _08161ABC - adds r7, r0, 0 - mov r10, r1 - mov r0, r10 - str r0, [sp] -_08161A5C: - adds r1, r6, 0x1 - lsls r0, r1, 24 - lsrs r3, r0, 24 - adds r2, r7, 0 - mov r12, r1 - mov r1, r10 - ldrb r1, [r1, 0x4] - cmp r3, r1 - bcs _08161AAE - ldr r0, =gDecorationInventories - mov r9, r0 - adds r1, r0, 0 - mov r8, r1 -_08161A76: - mov r0, r9 - adds r5, r2, r0 - ldr r1, [r5] - adds r0, r1, r3 - ldrb r4, [r0] - adds r2, r4, 0 - cmp r2, 0 - beq _08161A9C - adds r0, r1, r6 - ldrb r1, [r0] - cmp r1, 0 - beq _08161A92 - cmp r1, r2 - bls _08161A9C -_08161A92: - ldrb r1, [r0] - strb r4, [r0] - ldr r0, [r5] - adds r0, r3 - strb r1, [r0] -_08161A9C: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r2, r7, 0 - mov r1, r8 - adds r0, r2, r1 - ldrb r0, [r0, 0x4] - cmp r3, r0 - bcc _08161A76 -_08161AAE: - mov r3, r12 - lsls r0, r3, 24 - lsrs r6, r0, 24 - ldr r0, [sp] - ldrb r0, [r0, 0x4] - cmp r6, r0 - bcc _08161A5C -_08161ABC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8161A38 - - thumb_func_start sub_8161AD0 -sub_8161AD0: @ 8161AD0 - push {r4,r5,lr} - lsls r0, 24 - movs r4, 0 - movs r3, 0 - ldr r2, =gDecorationInventories - lsrs r1, r0, 21 - adds r0, r1, r2 - ldrb r0, [r0, 0x4] - cmp r4, r0 - bcs _08161B04 - adds r5, r2, 0 -_08161AE6: - adds r2, r1, r5 - ldr r0, [r2] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _08161AF8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08161AF8: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r2, [r2, 0x4] - cmp r3, r2 - bcc _08161AE6 -_08161B04: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8161AD0 - - thumb_func_start sub_8161B10 -sub_8161B10: @ 8161B10 - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_08161B16: - adds r0, r4, 0 - bl sub_8161AD0 - adds r0, r5, r0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08161B16 - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8161B10 - - .align 2, 0 @ Don't pad with nop. - \ No newline at end of file diff --git a/asm/secret_base.s b/asm/secret_base.s index d433f5df26..69cfff5121 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -1192,7 +1192,7 @@ _080E9462: mov r3, r10 ldrb r1, [r3] lsls r1, 5 - ldr r2, =gUnknown_085A5C24 + ldr r2, =gDecorations + 0x1c adds r1, r2 ldr r1, [r1] ldrh r1, [r1] diff --git a/asm/trader.s b/asm/trader.s index 8c21648fcb..8e4bce3849 100644 --- a/asm/trader.s +++ b/asm/trader.s @@ -351,7 +351,7 @@ sub_8133CF4: @ 8133CF4 ldr r5, =gScriptResult _08133CFA: adds r0, r4, 0 - bl sub_8161AD0 + bl CountDecorationCategoryN lsls r0, 24 cmp r0, 0 beq _08133D10 @@ -395,7 +395,7 @@ sub_8133D2C: @ 8133D2C cmp r1, r0 beq _08133D72 adds r0, r1, 0 - bl sub_81618D0 + bl GetFirstEmptyDecorSlot lsls r0, 24 asrs r0, 24 movs r1, 0x1 diff --git a/data/cute_sketch.s b/data/cute_sketch.s index ebdf1e39d8..8a8ee14811 100644 --- a/data/cute_sketch.s +++ b/data/cute_sketch.s @@ -5,4 +5,4 @@ .align 2, 0 gUnknown_085A1F94:: @ 85A1F94 - .incbin "baserom.gba", 0x5a1f94, 0x3c74 + .incbin "baserom.gba", 0x5a1f94, 0x2580 diff --git a/data/decoration.s b/data/decoration.s deleted file mode 100644 index de4478f8d2..0000000000 --- a/data/decoration.s +++ /dev/null @@ -1,86 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gDecorations:: @ 85A5C08 - .incbin "baserom.gba", 0x5a5c08, 0x1c - -gUnknown_085A5C24:: @ 85A5C24 - .incbin "baserom.gba", 0x5a5c24, 0xf04 - -gUnknown_085A6B28:: @ 85A6B28 - .incbin "baserom.gba", 0x5a6b28, 0x20 - -gUnknown_085A6B48:: @ 85A6B48 - .incbin "baserom.gba", 0x5a6b48, 0x20 - -gUnknown_085A6B68:: @ 85A6B68 - .incbin "baserom.gba", 0x5a6b68, 0x10 - -gUnknown_085A6B78:: @ 85A6B78 - .incbin "baserom.gba", 0x5a6b78, 0x18 - -gUnknown_085A6B90:: @ 85A6B90 - .incbin "baserom.gba", 0x5a6b90, 0x20 - -gUnknown_085A6BB0:: @ 85A6BB0 - .incbin "baserom.gba", 0x5a6bb0, 0x20 - -gUnknown_085A6BD0:: @ 85A6BD0 - .incbin "baserom.gba", 0x5a6bd0, 0x18 - -gUnknown_085A6BE8:: @ 85A6BE8 - .incbin "baserom.gba", 0x5a6be8, 0x5c8 - -gUnknown_085A71B0:: @ 85A71B0 - .incbin "baserom.gba", 0x5a71b0, 0xa0 - -gUnknown_085A7250:: @ 85A7250 - .incbin "baserom.gba", 0x5a7250, 0x3c - -gUnknown_085A728C:: @ 85A728C - .incbin "baserom.gba", 0x5a728c, 0x18 - -gUnknown_085A72A4:: @ 85A72A4 - .incbin "baserom.gba", 0x5a72a4, 0x18 - -gUnknown_085A72BC:: @ 85A72BC - .incbin "baserom.gba", 0x5a72bc, 0x8 - -gUnknown_085A72C4:: @ 85A72C4 - .incbin "baserom.gba", 0x5a72c4, 0x8 - -gUnknown_085A72CC:: @ 85A72CC - .incbin "baserom.gba", 0x5a72cc, 0x8 - -gUnknown_085A72D4:: @ 85A72D4 - .incbin "baserom.gba", 0x5a72d4, 0x10 - -gUnknown_085A72E4:: @ 85A72E4 - .incbin "baserom.gba", 0x5a72e4, 0x8 - -gUnknown_085A72EC:: @ 85A72EC - .incbin "baserom.gba", 0x5a72ec, 0x8 - -gUnknown_085A72F4:: @ 85A72F4 - .incbin "baserom.gba", 0x5a72f4, 0x54 - -gUnknown_085A7348:: @ 85A7348 - .incbin "baserom.gba", 0x5a7348, 0x8 - -gUnknown_085A7350:: @ 85A7350 - .incbin "baserom.gba", 0x5a7350, 0x88 - -gUnknown_085A73D8:: @ 85A73D8 - .incbin "baserom.gba", 0x5a73d8, 0x8 - -gUnknown_085A73E0:: @ 85A73E0 - .incbin "baserom.gba", 0x5a73e0, 0x24 - -gUnknown_085A7404:: @ 85A7404 - .incbin "baserom.gba", 0x5a7404, 0x18 - -gUnknown_085A741C:: @ 85A741C - .incbin "baserom.gba", 0x5a741c, 0x8 diff --git a/data/graphics.s b/data/graphics.s index bf0e3173b0..e89177a1de 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -881,7 +881,10 @@ gUnknown_08DAAFEC:: @ 8DAAFEC .include "data/graphics/items/item_graphics.inc" @ 8DB7AA0 - .incbin "baserom.gba", 0xdb7aa0, 0x2a78 + .include "data/graphics/decorations/decoration_graphics.inc" + +@ 8DBA14C + .incbin "baserom.gba", 0xdba14c, 0x3cc gUnknown_08DBA518:: @ 8DBA518 .incbin "baserom.gba", 0xdba518, 0x80 diff --git a/data/graphics/decorations/decoration_graphics.inc b/data/graphics/decorations/decoration_graphics.inc new file mode 100644 index 0000000000..c7ea9be70f --- /dev/null +++ b/data/graphics/decorations/decoration_graphics.inc @@ -0,0 +1,252 @@ +gUnknown_08DB7AA0:: + .incbin "graphics/decorations/decor_heavy_desk.4bpp.lz" + +gUnknown_08DB7B34:: + .incbin "graphics/decorations/decor_heavy_desk.gbapal.lz" + +gUnknown_08DB7B5C:: + .incbin "graphics/decorations/decor_ragged_desk.4bpp.lz" + +gUnknown_08DB7BEC:: + .incbin "graphics/decorations/decor_ragged_desk.gbapal.lz" + +gUnknown_08DB7C08:: + .incbin "graphics/decorations/decor_comfort_desk.4bpp.lz" + +gUnknown_08DB7CE8:: + .incbin "graphics/decorations/decor_comfort_desk.gbapal.lz" + +gUnknown_08DB7D08:: + .incbin "graphics/decorations/decor_pretty_desk.4bpp.lz" + +gUnknown_08DB7DCC:: + .incbin "graphics/decorations/decor_pretty_desk.gbapal.lz" + +gUnknown_08DB7DF4:: + .incbin "graphics/decorations/decor_brick_desk.4bpp.lz" + +gUnknown_08DB7EA0:: + .incbin "graphics/decorations/decor_brick_desk.gbapal.lz" + +gUnknown_08DB7EC4:: + .incbin "graphics/decorations/decor_camp_desk.4bpp.lz" + +gUnknown_08DB7F60:: + .incbin "graphics/decorations/decor_camp_desk.gbapal.lz" + +gUnknown_08DB7F7C:: + .incbin "graphics/decorations/decor_hard_desk.4bpp.lz" + +gUnknown_08DB8070:: + .incbin "graphics/decorations/decor_hard_desk.gbapal.lz" + +gUnknown_08DB808C:: + .incbin "graphics/decorations/decor_red_plant.4bpp.lz" + +gUnknown_08DB8138:: + .incbin "graphics/decorations/decor_red_plant.gbapal.lz" + +gUnknown_08DB8160:: + .incbin "graphics/decorations/decor_tropical_plant.4bpp.lz" + +gUnknown_08DB8218:: + .incbin "graphics/decorations/decor_tropical_plant.gbapal.lz" + +gUnknown_08DB823C:: + .incbin "graphics/decorations/decor_pretty_flowers.4bpp.lz" + +gUnknown_08DB8300:: + .incbin "graphics/decorations/decor_pretty_flowers.gbapal.lz" + +gUnknown_08DB8328:: + .incbin "graphics/decorations/decor_colorful_plant.4bpp.lz" + +gUnknown_08DB8430:: + .incbin "graphics/decorations/decor_colorful_plant.gbapal.lz" + +gUnknown_08DB8458:: + .incbin "graphics/decorations/decor_big_plant.4bpp.lz" + +gUnknown_08DB8528:: + .incbin "graphics/decorations/decor_big_plant.gbapal.lz" + +gUnknown_08DB854C:: + .incbin "graphics/decorations/decor_gorgeous_plant.4bpp.lz" + +gUnknown_08DB862C:: + .incbin "graphics/decorations/decor_gorgeous_plant.gbapal.lz" + +gUnknown_08DB8654:: + .incbin "graphics/decorations/decor_red_brick.4bpp.lz" + +gUnknown_08DB86C4:: + .incbin "graphics/decorations/decor_red_brick.gbapal.lz" + +gUnknown_08DB86E0:: + .incbin "graphics/decorations/decor_yellow_brick.4bpp.lz" + +gUnknown_08DB8750:: + .incbin "graphics/decorations/decor_yellow_brick.gbapal.lz" + +gUnknown_08DB876C:: + .incbin "graphics/decorations/decor_blue_brick.4bpp.lz" + +gUnknown_08DB87DC:: + .incbin "graphics/decorations/decor_blue_brick.gbapal.lz" + +gUnknown_08DB87F8:: + .incbin "graphics/decorations/decor_red_tent.4bpp.lz" + +gUnknown_08DB88D8:: + .incbin "graphics/decorations/decor_red_tent.gbapal.lz" + +gUnknown_08DB8900:: + .incbin "graphics/decorations/decor_blue_tent.4bpp.lz" + +gUnknown_08DB89E0:: + .incbin "graphics/decorations/decor_blue_tent.gbapal.lz" + +gUnknown_08DB8A08:: + .incbin "graphics/decorations/decor_solid_board.4bpp.lz" + +gUnknown_08DB8A68:: + .incbin "graphics/decorations/decor_solid_board.gbapal.lz" + +gUnknown_08DB8A84:: + .incbin "graphics/decorations/decor_slide.4bpp.lz" + +gUnknown_08DB8B40:: + .incbin "graphics/decorations/decor_slide.gbapal.lz" + +gUnknown_08DB8B68:: + .incbin "graphics/decorations/decor_tire.4bpp.lz" + +gUnknown_08DB8C40:: + .incbin "graphics/decorations/decor_tire.gbapal.lz" + +gUnknown_08DB8C5C:: + .incbin "graphics/decorations/decor_stand.4bpp.lz" + +gUnknown_08DB8CF4:: + .incbin "graphics/decorations/decor_stand.gbapal.lz" + +gUnknown_08DB8D18:: + .incbin "graphics/decorations/decor_breakable_door.4bpp.lz" + +gUnknown_08DB8DB0:: + .incbin "graphics/decorations/decor_breakable_door.gbapal.lz" + +gUnknown_08DB8DD4:: + .incbin "graphics/decorations/decor_sand_ornament.4bpp.lz" + +gUnknown_08DB8E80:: + .incbin "graphics/decorations/decor_sand_ornament.gbapal.lz" + +gUnknown_08DB8EA0:: + .incbin "graphics/decorations/decor_glass_ornament.4bpp.lz" + +gUnknown_08DB8F58:: + .incbin "graphics/decorations/decor_glass_ornament.gbapal.lz" + +gUnknown_08DB8F7C:: + .incbin "graphics/decorations/decor_surf_mat.4bpp.lz" + +gUnknown_08DB9038:: + .incbin "graphics/decorations/decor_surf_mat.gbapal.lz" + +gUnknown_08DB9058:: + .incbin "graphics/decorations/decor_thunder_mat.4bpp.lz" + +gUnknown_08DB9130:: + .incbin "graphics/decorations/decor_thunder_mat.gbapal.lz" + +gUnknown_08DB9154:: + .incbin "graphics/decorations/decor_fire_blast_mat.4bpp.lz" + +gUnknown_08DB9218:: + .incbin "graphics/decorations/decor_fire_blast_mat.gbapal.lz" + +gUnknown_08DB9234:: + .incbin "graphics/decorations/decor_powder_snow_mat.4bpp.lz" + +gUnknown_08DB92FC:: + .incbin "graphics/decorations/decor_powder_snow_mat.gbapal.lz" + +gUnknown_08DB931C:: + .incbin "graphics/decorations/decor_attract_mat.4bpp.lz" + +gUnknown_08DB93E8:: + .incbin "graphics/decorations/decor_attract_mat.gbapal.lz" + +gUnknown_08DB940C:: + .incbin "graphics/decorations/decor_fissure_mat.4bpp.lz" + +gUnknown_08DB94CC:: + .incbin "graphics/decorations/decor_fissure_mat.gbapal.lz" + +gUnknown_08DB94E8:: + .incbin "graphics/decorations/decor_spikes_mat.4bpp.lz" + +gUnknown_08DB95AC:: + .incbin "graphics/decorations/decor_spikes_mat.gbapal.lz" + +gUnknown_08DB95D0:: + .incbin "graphics/decorations/decor_snorlax_doll.4bpp.lz" + +gUnknown_08DB96C4:: + .incbin "graphics/decorations/decor_snorlax_doll.gbapal.lz" + +gUnknown_08DB96EC:: + .incbin "graphics/decorations/decor_rhydon_doll.4bpp.lz" + +gUnknown_08DB97F4:: + .incbin "graphics/decorations/decor_rhydon_doll.gbapal.lz" + +gUnknown_08DB981C:: + .incbin "graphics/decorations/decor_lapras_doll.4bpp.lz" + +gUnknown_08DB9908:: + .incbin "graphics/decorations/decor_lapras_doll.gbapal.lz" + +gUnknown_08DB9930:: + .incbin "graphics/decorations/decor_venusaur_doll.4bpp.lz" + +gUnknown_08DB9A54:: + .incbin "graphics/decorations/decor_venusaur_doll.gbapal.lz" + +gUnknown_08DB9A7C:: + .incbin "graphics/decorations/decor_charizard_doll.4bpp.lz" + +gUnknown_08DB9B7C:: + .incbin "graphics/decorations/decor_charizard_doll.gbapal.lz" + +gUnknown_08DB9BA4:: + .incbin "graphics/decorations/decor_blastoise_doll.4bpp.lz" + +gUnknown_08DB9CB0:: + .incbin "graphics/decorations/decor_blastoise_doll.gbapal.lz" + +gUnknown_08DB9CD8:: + .incbin "graphics/decorations/decor_wailmer_doll.4bpp.lz" + +gUnknown_08DB9DAC:: + .incbin "graphics/decorations/decor_wailmer_doll.gbapal.lz" + +gUnknown_08DB9DD4:: + .incbin "graphics/decorations/decor_regice_doll.4bpp.lz" + +gUnknown_08DB9EE4:: + .incbin "graphics/decorations/decor_regice_doll.gbapal.lz" + +gUnknown_08DB9F08:: + .incbin "graphics/decorations/decor_regirock_doll.4bpp.lz" + +gUnknown_08DB9FFC:: + .incbin "graphics/decorations/decor_regirock_doll.gbapal.lz" + +gUnknown_08DBA020:: + .incbin "graphics/decorations/decor_registeel_doll.4bpp.lz" + +gUnknown_08DBA12C:: + .incbin "graphics/decorations/decor_registeel_doll.gbapal.lz" + diff --git a/graphics/decorations/decor_attract_mat.pal b/graphics/decorations/decor_attract_mat.pal new file mode 100644 index 0000000000..6f188b725f --- /dev/null +++ b/graphics/decorations/decor_attract_mat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +255 230 222 +255 197 197 +246 156 156 +213 115 172 +197 189 131 +246 148 205 +123 82 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_attract_mat.png b/graphics/decorations/decor_attract_mat.png new file mode 100644 index 0000000000000000000000000000000000000000..16528d9f393ad2658efd5f61b6796e524b731885 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxQ3E?)^V{ z^xK>{SBuvi-P`-VpAIN&13a-`TY$KkHrw zyF5J-Q2DmYc6*4G-_GmD{;Vj|k~rhmbIUh7>A2?is4B*1at*&GZ+twZI$UYf#GsB!VDxWD_33tQU(D&A+AYBlMD?FfxNxXvZ~j3 zMRhw`CTU*XlC`Bfs5{9p$Wj3)g$#TOX2%2hj3q&S!3+-1ZlnP@TRdGHLnNk__Sy0s zGT>>A&%40m*pY2w-f=RHGu_>*irsD7Ay$Q)oD0E8pN&OMP5yMU?`=A>{iaW6+#Yx| zsT9nyH`R=i*I}CI{^4Nrt!Vm=E>>aFRSI%_g7a=m8t zQ|I+)@t6|m<&|)eTXQN?dT#scznc#2%4wW;bl%l@lXLvehy1(vlJ)FwHRGdu`W{yt s&Xg##xL$Q&(>2?kt!K;QjgQ*fGCU2|kiBqV2_wjJp00i_>zopr0C^U30ssI2 literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_blastoise_doll.pal b/graphics/decorations/decor_blastoise_doll.pal new file mode 100644 index 0000000000..a4ad56936e --- /dev/null +++ b/graphics/decorations/decor_blastoise_doll.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +197 222 255 +131 189 255 +90 139 213 +57 90 131 +213 156 90 +230 189 131 +156 131 90 +98 82 41 +139 90 74 +0 0 0 +0 0 0 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_blastoise_doll.png b/graphics/decorations/decor_blastoise_doll.png new file mode 100644 index 0000000000000000000000000000000000000000..00c55f229e4b92e8f120c578cb39af78c3fe081b GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FkKX&=y!U@p z_f^ZN=Bsm}p6zX((;Sr)q}d(i1yl$D-@bhVGFp{6YJe1DNswPKgTu2MX+X|LPZ!4! ziK(F%_WB(*kZ65q&dfY}u1VmjfKEm6hL~$!s(lf^&8Mgau^AaC7`pb{JakP#(RBNS z-Ao5-KkV!bv6wXfq}{i4iN&d#ffuKU+EeqH({^)qwgv;)_kXa`N!e$)9Ta$-h2+Xt~vCuT-EBm~ch zuzqxN>2G$^o&c{7nef{C!sfn*w`8VF2$Q#1F7bNG>fm*mPwMaL|5{^}s%aV{1PU2X LS3j3^P6B!VDxWD_33tQU(D&A+AYBlMD?F=WO{F)cnjc zX|IH1b5>TCmzNh%9xD)=|2Z8f!B`UH7tG-B>_!@pli=y%7$Pw>Il+OgN5P3hoRPK3 z;lKhG79O`_Zf+hr290bi1%f|xn1l~0II-NVFsbfsY&giuQ4rmdxt^m#pj|krz)-M4 y!oYz?S5sfJT|hHaGgH9OfRT^+k6g=5Hbw?lX^~4OUHD#uT;%EM=d#Wzp$Py>;yDBW literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_blue_tent.pal b/graphics/decorations/decor_blue_tent.pal new file mode 100644 index 0000000000..e38cb56af6 --- /dev/null +++ b/graphics/decorations/decor_blue_tent.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +148 172 255 +115 139 238 +65 90 189 +49 57 123 +0 0 0 +197 205 230 +164 164 164 +131 131 131 +90 82 74 +0 0 0 +0 0 0 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_blue_tent.png b/graphics/decorations/decor_blue_tent.png new file mode 100644 index 0000000000000000000000000000000000000000..575b352410675d85ddb97ad49f62c1765868765e GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Fr>yy3-2Kim zYOkSXHBjd0*=I|ZENO0TjtcSuav|W`w{Jj(V*ddhAjMb`IGe(rTTq4?z1wTruT=9k<*mVPO7;qp?UFYXWYd{k%l z+Ny1`PgB13tftFo!iRXz_-~BsgM%L|Ij0y3@~5Y( KpUXO@geCw*tbV%y literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_breakable_door.pal b/graphics/decorations/decor_breakable_door.pal new file mode 100644 index 0000000000..85ece26dc6 --- /dev/null +++ b/graphics/decorations/decor_breakable_door.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +139 189 255 +106 156 213 +213 189 115 +156 131 41 +123 98 8 +90 74 57 +189 164 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +246 246 246 +197 197 197 diff --git a/graphics/decorations/decor_breakable_door.png b/graphics/decorations/decor_breakable_door.png new file mode 100644 index 0000000000000000000000000000000000000000..01ba82d28a09d169f52be1765db7262dfc46372e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxPa$|Fh;? zy}Gw}PP1lp5=WGm<=!P;Kyf(u_U+rzqeodpM0J5ej3q&S!3+-1ZlnP@6FglULnNl= zp5M#cV!*?iu>L{Y<+Be(BNT<+nhGjkIPAG)%FPd2mzF90aA$kk((ONS(sb;TM zXw&=_yTDuF!utDv`t?n7+rlNaD&ysm>Ip5cwLxz8 MboFyt=akR{06ej44*&oF literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_brick_desk.pal b/graphics/decorations/decor_brick_desk.pal new file mode 100644 index 0000000000..16b581470d --- /dev/null +++ b/graphics/decorations/decor_brick_desk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +255 180 82 +230 139 49 +189 90 16 +0 0 0 +0 0 0 +0 0 0 +197 197 197 +148 148 156 +106 106 98 +74 74 74 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_brick_desk.png b/graphics/decorations/decor_brick_desk.png new file mode 100644 index 0000000000000000000000000000000000000000..829e453497ddbd2e0b7d9ad95c5380ef81c1e4d6 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxQ1)f}V97 z?u`-vvLWE;(W6tQ%*o11^78V6i7`aT1nmWK7)yfuf*Bm1-ADs+dOTemLnNlw_U{&K zG2n5zZrLasFX?h_YCwbVt)?Ta0Sp@_Ydg5!je1smhCzDI$G&U77?$r6U{E)nSX}FC zy~_pyqa+&l$~Dr>%?Mo2bsviD8Z@0>)*mnAQyYO`njxgN@xNA D;RRo; literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_camp_desk.pal b/graphics/decorations/decor_camp_desk.pal new file mode 100644 index 0000000000..0ac362c8ad --- /dev/null +++ b/graphics/decorations/decor_camp_desk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +205 189 123 +172 156 90 +148 131 65 +123 98 32 +82 57 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_camp_desk.png b/graphics/decorations/decor_camp_desk.png new file mode 100644 index 0000000000000000000000000000000000000000..b40429229a2b1b6377837b0d8b768d397c482166 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?F&+e^WGbd_F zvtxCVLXf2wUQtVc^uvO%NQJ6w(>ke&0>5rddTAM;vJ`mPm zU0fD-Uz%g*-o{@i8uoESZ?69Nx>d4KJhdfmLgBpAYIeV-%wu2hg-dtw*Vxc>o;2c0gB_YLuFAYU2y(lptDnm{r-UW|$MIYF literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_charizard_doll.pal b/graphics/decorations/decor_charizard_doll.pal new file mode 100644 index 0000000000..3e3e6bb790 --- /dev/null +++ b/graphics/decorations/decor_charizard_doll.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +238 172 98 +255 205 74 +222 156 41 +115 74 24 +164 98 24 +0 0 0 +230 82 65 +180 49 32 +0 0 0 +0 0 0 +0 0 0 +246 246 246 +255 238 197 diff --git a/graphics/decorations/decor_charizard_doll.png b/graphics/decorations/decor_charizard_doll.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc3dfcef7b512e93dd7104f91e717dbfdd76a82 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxLHXlK!9d zx;IC&*h^wbk_1rXS&-uvLj@oM0=|9w_W#{cUuBu+Kt5whkY6x^!?PP{K+bJX7sn8Z zsk!G3vzQG9STC$k%g!}ivYB7;1ZT=p6Xt(LI}ErdhAiPe(!SAJTyswJ(i4n4mJV)Z zK0y%++EtdUmwfQAz)U^agK3J!{^j>7J+!z20}b4oRr{s*6XI5AQhgG~4v>4eOs~&rDM44}aA?_FC7@UWi|D&m);bGEz+n?Ew#?i~mbP0l+XkKQxJx= literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_colorful_plant.pal b/graphics/decorations/decor_colorful_plant.pal new file mode 100644 index 0000000000..996b183d25 --- /dev/null +++ b/graphics/decorations/decor_colorful_plant.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +205 180 115 +180 139 98 +131 90 57 +156 222 90 +139 189 139 +98 148 98 +41 90 57 +106 189 255 +255 123 172 +255 213 74 +0 0 0 +238 238 238 +0 0 0 diff --git a/graphics/decorations/decor_colorful_plant.png b/graphics/decorations/decor_colorful_plant.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0efecc7461945f36207b1333691ed8fcecfb2e GIT binary patch literal 371 zcmV-(0gV2MP)>w2NYcS~;BFT8q7lVw7SjS~+UH|Nnce|J6zW008dp?f?J)fCl?%00001 zbW%=J06^y0W&i*H@kvBMR2Y?AkTGt;FcgM=k8F-qxo{3nPzi3p1+uh4Oe}R;x-iAw zUl(x!rdS)Jm{my!sOB!VDxWD_33tQU(D&A+AYBlMD?Fx7_RQ-rF73 z9ib~XgS6>JD)YH|^Wt~$(69C-{ Bd-4DP literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_fire_blast_mat.pal b/graphics/decorations/decor_fire_blast_mat.pal new file mode 100644 index 0000000000..ea2301df2f --- /dev/null +++ b/graphics/decorations/decor_fire_blast_mat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +255 180 82 +238 148 41 +213 98 24 +139 65 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_fire_blast_mat.png b/graphics/decorations/decor_fire_blast_mat.png new file mode 100644 index 0000000000000000000000000000000000000000..510675ee62365ac87e8c4f3e242318fc9a7b7db5 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxQ1)g5FKh zyqYA@?WhUl;sSG*m(~I07)yfuf*Bm1-ADs+=6bp~hDb~eop6x1#ej#!m;J*7smSF` zFxop*lcM!$XacMIElwgbFB zxmP=EZVFk}zg95arT>+^n{7mKB=ccu7nSH$&5U=}R!T(|vNPKpKVW_7Mpv|Opqv0Z zb4Api%VBpCRm>y#;%Dx6b1M>d-e+{(e#W`hiFZ;e?Vi2=$=t9(BTghVbUnyNp00i_ I>zopr01)G1-2eap literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_fissure_mat.pal b/graphics/decorations/decor_fissure_mat.pal new file mode 100644 index 0000000000..d2a4efb6d1 --- /dev/null +++ b/graphics/decorations/decor_fissure_mat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +205 189 131 +189 172 106 +156 139 74 +123 106 41 +98 74 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_fissure_mat.png b/graphics/decorations/decor_fissure_mat.png new file mode 100644 index 0000000000000000000000000000000000000000..6de66ef9d6b8a03746a29b989a64a1f5e75294d7 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?F&+cvByC!Q+ zw^wzRW|EfzP!bpL{oR}llw&Lj@(X5gcy=QV$XVd&;us<^HFUy3-a`gFuJ!tJRvux= zi%<|_ez1dC#C6W;#=qeQe!Au+Yx-~8FY=nz;=1~|0A}-U?~@0%XOt}ZUn3J9@|{)f zk-^z*iPNebi{|_FujTb_j%WUrGb4Fc@R#YY+72#ZGb!zm41VW3iDk2$%w)H!2IFOS zUjJi@6Y^emrxD2BEqSqb+HC!^yBA$l^oXDJnZIw5;N6U!Z=TiuW%zMSts*PH`!>i^ Mp00i_>zopr08^%Ed;kCd literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_glass_ornament.pal b/graphics/decorations/decor_glass_ornament.pal new file mode 100644 index 0000000000..1027a95013 --- /dev/null +++ b/graphics/decorations/decor_glass_ornament.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +0 0 0 +189 230 255 +156 197 255 +115 164 238 +82 139 189 +57 98 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +238 246 246 +0 0 0 diff --git a/graphics/decorations/decor_glass_ornament.png b/graphics/decorations/decor_glass_ornament.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc895eb9f0b622bdd5f0bf63de4ba3f4b279dca GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Ffjl7C`|SUm zqyLMSybJ2yYnjvx5rmWPzI_9-BPO5Q52P4Ng8YIR9G=}s19BF5x;TbNOwH{-$aTm- zz-764KkpTOA+ri$uDe%Ow>MpvOIpVz_Isi2cj-I1B^O^g+~YfGi%Tw-}D$wh9 z&c|Fv?b8e!^A9zNTMF+VbbVABktrd%WLy1S(fX?CyW2za0uAI1e@Fxbp3Ydot5Evn zXl0+QMXOzTjA**+T8o+5_TAHd9JJffblO{UX`G;{ooSFKi&&~f;JxT$@1(aL+-p5w Whf#g1yiRN>$Tyy@elF{r5}E)d=VuWB literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_gorgeous_plant.pal b/graphics/decorations/decor_gorgeous_plant.pal new file mode 100644 index 0000000000..782b82eef6 --- /dev/null +++ b/graphics/decorations/decor_gorgeous_plant.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +180 222 139 +139 180 139 +90 139 106 +49 82 41 +0 0 0 +148 115 82 +115 82 24 +0 0 0 +230 230 230 +164 164 164 +106 106 106 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_gorgeous_plant.png b/graphics/decorations/decor_gorgeous_plant.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8639c65719314c01888a632ea76484553f2fbc GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Fx7_RQ-qIb_ zon;uL36z;q98?@60c1RT_H4(f%)3^gO_b^{s^5Ear3)wrewzGN{PkVH1Yu=q#OXoO8TJy57D)LRmE04Q;+{=6G1lH(r zYK9+*k)0;AFrqOs({}qeagN6pJUaZdMYnGCs;ktVa#rzj%$ok)rg!!oS{1cKtaM4G z%hlUCmX|&;Wu2dDare_hsfS5=$LD@1+`j+0`;)o%FTd>e7muE(`&W8dbY1*oBc6W@ XH~ck^{j)2d1@f$?tDnm{r-UW|7@LZd literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_hard_desk.pal b/graphics/decorations/decor_hard_desk.pal new file mode 100644 index 0000000000..7aa8154ab5 --- /dev/null +++ b/graphics/decorations/decor_hard_desk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +197 197 197 +156 156 156 +115 115 115 +98 98 98 +74 74 74 +139 139 139 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_hard_desk.png b/graphics/decorations/decor_hard_desk.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0c7feeacea2b5796fb4adb9e3876d9c0625b8f GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Fj~+cbXU?4B z;^L&FBrh+o?(S}&JXUab=}ZTp1Y=2%UoeBivm0qZ&S6g%#}J9BvHb`6nhXS7+MDO8 zy4fvod2ggz!yvIH?RKKHKQfk(p*W$&1CKguDVrQ zR_H$8q-I+alc#(~TaaJWrrxz^;ZQ54B!VDxWD_33tQU(D&A+AYBlMD?Fw`@5&Wy+kW zsHp#2f}V979*yFN(gdlmuC8`;bj->s2C^X_)A{FnAd9gi$S;_|;n|HeAg9aI#W6%; zYI4E>CJ9znR!NE8=}Q?qj~?Uc(K~kR#uP)2rYlPs8Ji6S95`fNu}ECn)Wa&#v(}+y zV>bhHvRHs&7*mewjiRMX7ka2AD<7EF&crxjw-19g<0he;%8V&O7w%oYeOgi?rHq?t z?@L_<<%W08%ugK{J}T4&#O-x&a4h)lxIi(QC4psGA;Yl-?TNyl>p=fS?83{ F1OPY{SLXl# literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_lapras_doll.pal b/graphics/decorations/decor_lapras_doll.pal new file mode 100644 index 0000000000..c7d2fe61a5 --- /dev/null +++ b/graphics/decorations/decor_lapras_doll.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +189 230 255 +115 180 246 +74 139 189 +32 90 139 +0 0 0 +0 0 0 +246 197 131 +222 156 98 +197 156 123 +106 74 41 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_lapras_doll.png b/graphics/decorations/decor_lapras_doll.png new file mode 100644 index 0000000000000000000000000000000000000000..517553a4a9fdda370ac01ffc620164080ff1fddb GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxNxX{ugig z=GDDdA*vh51%hu!oA1p@Iy$F1%S#i){q_w=a$SlA>18Yl@(X5gcy=QV$hqz5;us<^ zHMD@~o&f)4a4g-3V!PC{xWt~$(695!GlzadH literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_powder_snow_mat.pal b/graphics/decorations/decor_powder_snow_mat.pal new file mode 100644 index 0000000000..9f365a3da9 --- /dev/null +++ b/graphics/decorations/decor_powder_snow_mat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +238 238 246 +180 205 255 +131 164 205 +197 222 255 +213 238 255 +98 131 172 +148 180 222 +49 82 123 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_powder_snow_mat.png b/graphics/decorations/decor_powder_snow_mat.png new file mode 100644 index 0000000000000000000000000000000000000000..82dbbfa668a651dde56af7e89fa09088815347ef GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?F-@W^`vM*W2R1?m|Ik97-hf9gGe%iRas`{8IcBrA< zuq$Vtx^Td=*zKo`d_5VyB&{uF;`i8)&hd^v%AWzV2T7EA8_i k{#DgkPuluZf6bDA&HJKL%lW@uX*zopr0M34Sr2qf` literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_pretty_desk.pal b/graphics/decorations/decor_pretty_desk.pal new file mode 100644 index 0000000000..7681a17cc1 --- /dev/null +++ b/graphics/decorations/decor_pretty_desk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +189 222 255 +156 197 255 +0 0 0 +131 164 246 +49 82 123 +0 0 0 +0 0 0 +0 0 0 +180 180 180 +131 131 131 +90 90 90 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_pretty_desk.png b/graphics/decorations/decor_pretty_desk.png new file mode 100644 index 0000000000000000000000000000000000000000..5be05ebcbfb8e625a5b9a0f97281a7265f12b91e GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxNx<{?9r3 zAINB4^35=)8pwcvEnBuUH#bK`MSc7B4JfieqnaN`F_r}R1v5B2yO9RuEc0}643U_c zJHe2T$&iP|oWEnr>xZIlQ!+c&JrQ0o<hdqdReP*&2$p%)V==eTFVvb3I2>08ah^PN9ScYSKrvS zo;xRl{dQXQTc*=DFUT4GiD6i-S1V{+toFynX5Eoji=JN4nQ_|dqv@8zYYy9crg|!^ jJy)Zs##S-!cV+}bPKHyJ-A<9eAb)wf`njxgN@xNAK1guQ literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_pretty_flowers.pal b/graphics/decorations/decor_pretty_flowers.pal new file mode 100644 index 0000000000..c3b0ffce97 --- /dev/null +++ b/graphics/decorations/decor_pretty_flowers.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +0 0 0 +205 180 74 +156 139 32 +90 74 49 +123 106 41 +115 180 98 +74 123 57 +41 82 32 +255 205 180 +123 74 49 +238 156 139 +246 246 246 +222 197 197 diff --git a/graphics/decorations/decor_pretty_flowers.png b/graphics/decorations/decor_pretty_flowers.png new file mode 100644 index 0000000000000000000000000000000000000000..b9fc0f5de24e131df4f635e4bf2d3d4f01b3a0f2 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Ffjl5MyTxlx zw?dScVRe>f@s=d7YD>)^h5u)_RC^h|o74U6+qZj1kN#LTX){nMV@Z%-FoVOh8)-n! z9#0p?5Q(X|{kD8f4k9h>_ma#nzVP~>7j{i#wfcm6F8m4Gv)#9s8{Ru`fK{R8p2Hi@ zFu709&x^$0%ei;vG}Bs{L#y1AW1Fr=H++=(Ih8Rr>TnpJbC`?eq#t>Lwt0sCI)fI7 zXtX{*?-aaWfupD^;hve+WeMSE)q>4QocbG?(hrJm31YjI(Hzji#A+ISEq1qnQ_~{z zvsTtM%Vx7#UwdQl-O%>!wHtEg)h84t%B!VDxWD_33tQU(D&A+AYhlMD?F-`!ht^=S8& zC0SFNy{eN8gB%rr@>s#F@B6!f5{xB5e!&b5&u*jvIrW|{jv*3LYy0=|wi@uX=wHo# z+r@Z~t%dglS0b|yH}9JBs)Ai2b?YqVKKZOJT`_6ZAzsA;fA{LYT)K=y#3uBTbl>H` z8?Tox@yffL!X}=4B!5|G(c~T{pS?L#@2G69^qrb=nd?oAbNL6Q?I%*T-kz15FaKxS j%|q<{y%S>fc0cy}SE`==bK|sWAP0N8`njxgN@xNA!I)f9 literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_red_brick.pal b/graphics/decorations/decor_red_brick.pal new file mode 100644 index 0000000000..f9d647ddad --- /dev/null +++ b/graphics/decorations/decor_red_brick.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +238 123 123 +189 74 65 +148 32 32 +123 16 16 +106 106 106 +74 74 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_red_brick.png b/graphics/decorations/decor_red_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..3481044ddeca9ad4ae0660ce7ac760dd2097dd07 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?F-&I%d^>Un| zpinI!kd>9?<>dvG#|lD|!#aQxj3q&S!3+-1ZlnP@37#&FAre!Q6CBuj6r4E38Cjbg z4lH0{;c+|W=H{Ve(8$J8AoxRvN%)Y06U*HSlj`2ahJ&me1<@^;>p40E+J%z}3B!VDxWD_33tQU(D&A+AYBlMD?F?-f_?^$O}% zPzX{G0Lm0E$#Sf=lnBxUvd^wbno}K=6=Vry1A*_%_8&lsu_VYZn8D%MjWi%haGCC+|Ipd<2=CW zF0hb8iD#m2lLYspsm&3S3OG4CS|)c*=4$T9?$ADb#kiVD(ki*{T*8VOn>Wu*bbH_H z*Y>HeuZXSl<j!OyQ<{GWKb&TMNHxHwgI#8ihW6ot^zZLB^E8#e=Q27m&$4); p~!F%@Dq?%JYD@<);T3K0RRHaXrKT9 literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_red_tent.pal b/graphics/decorations/decor_red_tent.pal new file mode 100644 index 0000000000..61951623b9 --- /dev/null +++ b/graphics/decorations/decor_red_tent.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +246 123 123 +222 90 90 +180 49 49 +115 49 57 +0 0 0 +197 205 230 +164 164 164 +131 131 131 +90 82 74 +0 0 0 +0 0 0 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_red_tent.png b/graphics/decorations/decor_red_tent.png new file mode 100644 index 0000000000000000000000000000000000000000..22e435691ce33c3c507181063a2833dec72d321e GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Fzg1V?i;CJ} zXjp7$36wc{_SuppOPZUTqk_DETnPB~?HiC0_Kmp_NHLZK`2{mLJiCzwyUv6+k@!~tDCEstaoNsG2Wi?Dr_Mme~`vI-6KmUFNl?qsou2f3D3XvjGBJ` z4!g^>{BIRFtE3W9`rwU$tiu7FnfWSCe2Uk<_uVV~yQF$foX69tv+i>rtYBJ~I%|UF z4BKa{UaqHB#9I|?N%*WVH~iLh|L$c|>nxK6`?I&*k!g20D=Ascd|g~XOUmQTBc6;2 zlFp7T!c%)DT-smf@S>lG)9Z8zuZh93C&58KtSoDpJ~28?4vIWKjT;m!44$rjF6*2U FngAV#cjf>9 literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_regice_doll.pal b/graphics/decorations/decor_regice_doll.pal new file mode 100644 index 0000000000..39404f681d --- /dev/null +++ b/graphics/decorations/decor_regice_doll.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +238 238 255 +180 189 205 +139 148 172 +82 98 115 +115 123 139 +0 0 0 +0 0 0 +246 180 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_regice_doll.png b/graphics/decorations/decor_regice_doll.png new file mode 100644 index 0000000000000000000000000000000000000000..88a28df6ddea203dffeb5ed6beb6c31aacb3cab3 GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxLI`{%_fP zwtLE&prqpB>TaM25PaL>2w}iU$-Vi$Kn`O`kY6x^!?PP{K+X+M7sn8Zsi6~m^I8me z-1g^0s7oEPb@RNb%u}s$#!A^k?}AtH!iV$z25I@eJ~~t^ezIsuu(?`A>Sj{OAgB!VDxWD_33tQU(D&A+AYBlMD?Ffjl7CvLvax z*f7Wo#64RaG{q65ZLgOENDc-jUrvkwvKdQ){DK)Ap4~_Ta!z`>IEF|}jqP{jYBmsX zt0p3gcHe^*{8Res{_2h}|}T<>uxeSGt5)$L!Ku4dkRs}pnY#`e|AuP&NnK4s=S{rT^XTwpj@ zF0#BM#H(?`0#~l0NphC`!k>zR&Ik)m$<3-%DdUlH-<9qEx1?Kaad5Zep45Gf!i$~H zmMS;>JNRPW4-UC6c8jGy3$L7Mdu3-qLl*Pz-w(FlI=OY;mHId7`?}@5kC=QtZD{-j OB!VDxWD_33tQU(D&A+AYBlMD?FfxLI`-W@%9 zbjgw>)z!^GK~X>vWUwa45yD-!r))Bi#aI&L7tG-B>_!@pbJx?wF+^gjZ~xh@W(R?m z)85~*7WbVORGYB*OoRRg`}CVR)m$30W(LPy-g7R@z06bIPHNYRS4?rw&u+LO)S)EA zTbNO@U;dfW!`~Wm|7?Ujr_28RYLyfs8-Hfr?)f~ng|9j!ydCQ29NkgAV48H`$B-pc zHE@FK0Hh0*DZF%PcY@$#7`zuxBlAgKotf?NGXrY9L%g_5oX1fcvB!VDxWD_33tQU(D&A+AYBlMD?F@7=q%WXY1f zd-ryCcV}f~1qB5?J6gPVidS=z7f>MteEaqd$e1b0_!&qsmIV0)GdMiEkp|?v^>lFz zk(lZ`VPoDQ0}Nz{C0C;G_Ok2T=hA)%xSjZ<B!VDxWD_33tQU(D&A+AYBlMD?FfxN3n=j>e) zHKp1x%1fd-OJU6vFQ6bMuEak7F*Wy`Enl+%59>6ysdTZUgi~YU-?+Xh%PpUYcpZUN^rgGg*)pz&yFP!VGu!_t2YLD?Tg;evi zteVr=bWVC~wY#jk{f_XZMQ0yQiWlAK!8djGnTe;kd5WE7pVsYutNws_*DaOsQ*|jI PFEV(#`njxgN@xNAPh4lH literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_slide.pal b/graphics/decorations/decor_slide.pal new file mode 100644 index 0000000000..395694fa3d --- /dev/null +++ b/graphics/decorations/decor_slide.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +148 189 238 +106 148 205 +65 115 172 +180 222 255 +0 0 0 +0 0 0 +0 0 0 +213 213 213 +189 189 189 +156 156 156 +106 106 106 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_slide.png b/graphics/decorations/decor_slide.png new file mode 100644 index 0000000000000000000000000000000000000000..8a5dbada5b0a905c0efc85f4eee3bdfaa6c73b51 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Fr|f-~HRY^h z@tQ67{sUzo;Of<@d-v|0GiOd#Ru)j?+qZ8(Qpjt?B_PFE666=m;PC858j!Qt)5S4F zVruIIL%u@>Jg#T&HJ-Wa6{#Hhl*wdfvH39$zX{R`Vqq>v6)$aCIH&Rbu@I+*ABQh@ zr`{~;P+@(1%*f!Fzk;n3r($=??(nO#lDsB9N|^k`@RFnff5IOoo~O?aon6-0n*Ju; z`ibnVSZ1CAsSo>jO01?O{blvAF?sWk$ys;t-^3-KI4?KOUbiVFeA%(hVzaZjChpU{ jV5V<;HriMBY4v>3u7C%tmL1;%bS{IZtDnm{r-UW|Oy6|$ literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_snorlax_doll.pal b/graphics/decorations/decor_snorlax_doll.pal new file mode 100644 index 0000000000..21026b10d8 --- /dev/null +++ b/graphics/decorations/decor_snorlax_doll.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +0 0 0 +131 139 164 +82 90 115 +0 0 0 +255 238 222 +255 197 148 +222 156 90 +139 90 49 +172 106 49 +230 172 123 +0 0 0 +238 238 238 +189 189 197 diff --git a/graphics/decorations/decor_snorlax_doll.png b/graphics/decorations/decor_snorlax_doll.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff891c13674fac1bcf1df2debc864ca6c90a1fe GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Ffjl5+?p_iU zRSabOe|PWy(JA-lM0H0QuE{cdwx${=`0m}iy?c*7YB^L7>5`2{mLJiCzwjr1sapoV7 zelh><>i6V`H#(qxZh~ad>P3lJSNYFKyjUPGQ^DYZfXE`P3s(ad`WQdwb#~6|2-Cl( zv7e#EI_5=j_CYr}%lZ9mZ#*AmyLEi|u;R70->QDM|Hu7GJCB%jI6YM?@U&Z~*B!VDxWD_33tQU(D&A+AYBlMD?FfxNv-lIAo! zR!3=OMR@_axPZf}cXmKI#*!evUP>5#xAnMr37Cgn6aI$UYw5NA{nWK#0kAn-%SNo~W;#;FHV1v$TU9bj%^TrHd6 q-@KQfkE6p%r>w!2_uD=NoeIXkI~2@$f1BB!VDxWD_33tQU(D&A+AYRlMD?FfxIb4r(~@u z4w@3xJtyhj+3qb%lFsgJHcYYvN+AQ`)RneCK4VFcUoeBivm0qZ&Kge_#}J9Bp%V=G z4jBlrOrO@}@#o1I<_nP>W?kA*Qgs6M3WxqV2DLTS7sV-egnv49Z*ra~+qSBkH(56? zzTqlbv3ud3JLUIEwVS@%y66N8wpNJ7dq2s z5}ySnPb)li&vH3yVUJ+uOyNl@@69MY6?av-KwNufRPr&+YHh)r9+8!v_c~lsR!?c2 l{^U>deh(M3y!Z7_*4jNWv^te#B4-Bjl&7no%Q~loCICiybp`+c literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_stand.pal b/graphics/decorations/decor_stand.pal new file mode 100644 index 0000000000..a85f0b7b21 --- /dev/null +++ b/graphics/decorations/decor_stand.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +255 180 156 +238 115 106 +197 65 65 +0 0 0 +0 0 0 +0 0 0 +197 197 197 +172 172 172 +131 131 131 +106 106 106 +0 0 0 +0 0 0 +246 246 246 +0 0 0 diff --git a/graphics/decorations/decor_stand.png b/graphics/decorations/decor_stand.png new file mode 100644 index 0000000000000000000000000000000000000000..86b1e4d1fea56b15a539b02b2bb4cef01a293da1 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?F|8JS|t~l$c zqa#ol0*)R%x@OIq=H}+CtSpGgw{PEo48zu2Q9z2ZB*-tA!Qt7BG$5zV)5S4FVrp-% zAs3UO2&;POtO~Yj?#s_>82uN_OW5wUlEtP+v$dY>{yQa|NlL-CCsORbeAs&EG*78bmC zjoBNQ##ioDT)V)-Vd949you}_58P~?9%}f;`g>B~XCXC~NRV?qUHx3vIVCg!05Te6 Aw*UYD literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_surf_mat.pal b/graphics/decorations/decor_surf_mat.pal new file mode 100644 index 0000000000..17be591b77 --- /dev/null +++ b/graphics/decorations/decor_surf_mat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +205 238 255 +164 205 255 +148 180 255 +115 148 222 +57 90 156 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +246 246 255 +0 0 0 diff --git a/graphics/decorations/decor_surf_mat.png b/graphics/decorations/decor_surf_mat.png new file mode 100644 index 0000000000000000000000000000000000000000..d74cb97bb951238e731ba18577f5230c92fdbd93 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?FfxNTt{x3QE zf6A8s#Z&HCM$G|=pn-4S{sTpvKScTiDaMi@zhDN3XE)M-oE4rfjv*3Lb0;`*9WoGc zS#F-;@YYpm`c0G4o4(%}9e3-nEEQkpx&Gmk=&i2oMn0dM+r$%ekB0Va*_*nf%;Bl> zhS_h7!dD%+@tyJTV&54$?8}U0Yo6HNtP4%!z8Tc_%;&T5AfI`<`njxgN@xNAheUJ= literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_thunder_mat.pal b/graphics/decorations/decor_thunder_mat.pal new file mode 100644 index 0000000000..fbe4888601 --- /dev/null +++ b/graphics/decorations/decor_thunder_mat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +0 0 0 +0 0 0 +189 222 255 +172 205 238 +139 172 205 +139 156 164 +255 230 123 +90 106 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +238 246 255 +0 0 0 diff --git a/graphics/decorations/decor_thunder_mat.png b/graphics/decorations/decor_thunder_mat.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5c56e332eb5f415a253384250666829a8fddfe GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?Ffjl7Cd+-06 zv+ugsob8^oAF^Gfz+d^yEg+8u17A{MJ*= zW4c5qGo3fO?fW@B?z-}yO*|T_xaU~8`WPm@+ATTPi_GrCwFRx2z2~m~ zJ>L~xZ+PBiUDyzQ?eUcA%^oh=HwBs;bS6w-wcNtnw59O2^>6D7s?nELE53}|cwF;) zo?FS{r_a1UJ7>6`!w%h{YHGIr-k+2a%3zOoSHzJ;C7V>gTe~DWM4f@ZNtl literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_tire.pal b/graphics/decorations/decor_tire.pal new file mode 100644 index 0000000000..18a3279fc2 --- /dev/null +++ b/graphics/decorations/decor_tire.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +0 0 0 +238 238 238 +189 189 189 +164 164 164 +131 131 131 +98 98 98 +74 74 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_tire.png b/graphics/decorations/decor_tire.png new file mode 100644 index 0000000000000000000000000000000000000000..e394ebbd401f02ba167b8d4e970bd9c1d01898fb GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlYq>3@80d*yLZWw zCC$yvNl8gwUS2>!tl-1jCDlL)#*!evUmY~R!a|FW}55rNy%gV{r}rSmv~2N zdTK}spZGF)VMeaSG|dFo%UUP8U#PCU^^eW&0MiLm*@lYtjWJz)IrfoV*V7lAyfu%j z_~yH?JHfL$_a^UJ_@6OFA=Krd3=7X^#`4)ZXRlahY=3W?o*=jFS=QY0$J_o098dm_UTRq-6UiWg_+lSjh-t%B!VDxWD_33tQU(D&A+AYBlMD?FkFE(?(rwtB zB@pB&0F(iODfgnXwitRfODIH1Ktv$qbfGyiKo(<3kY6x^!?PP{K+Z-_7sn8ZslENS zd`%7lt@5p+XY&?yZYf|^Vps6UXNsdCXH+RGCm#8H z&$Wl+m=t%uZ~wWSEJ-|9EcR=72YX++y3zIGHD0Fv@}9(dyE{Jqy}c$s?)8F@RyAMl sH&Z6vcvjh|ar%Vwsrx%G+ov61zmTi$_kFjdQKoCSnm5VgDU~GIb`3nDl@!Epa7OD;A(%K+J zWm>6prQ!SNC}juoqw`A@?i`R-9|*b;F300000NkvXXu0mjfB!VDxWD_33tQU(D&A+AYBlMD?Ffjl6{nzF{L zc#36GwWVX$vn^R?rvz>3wk-D21WH}KdiC44Z%dXe(e3@C4dgSH1o;IsI6S+N2ITDX zba4!kn3_Amkc-Jsz_nhBdp3)UfWLCjN2Wzzo#t#2d-u*#NBkpSRMnKVHizaNIBMU0 zbWz<2<;iFM%w+kYpT1h@8Rv`@f9|wD2<%MZFg;{n>1=kaNx+uxozJ}4pM8YqxU}BR z<1lnNoVfp=#d3>x3zfK*MyzKoTgBe-lUvy(mT}e*XaDTO8@%Oi7d?M?YSwwK?s>{K z>yB*M_;T8PWB%TvvrqQDw~C2BFUH&I(EF+A?6JEu-QTt*7AwEoAOC@E>Ut}`OP$-} QfIeaHboFyt=akR{0CfU`Jpcdz literal 0 HcmV?d00001 diff --git a/graphics/decorations/decor_yellow_brick.pal b/graphics/decorations/decor_yellow_brick.pal new file mode 100644 index 0000000000..cfdd874ade --- /dev/null +++ b/graphics/decorations/decor_yellow_brick.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 197 98 +49 49 49 +255 230 106 +222 197 49 +180 156 8 +148 123 0 +106 106 106 +74 74 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/decorations/decor_yellow_brick.png b/graphics/decorations/decor_yellow_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..cb865760ca9c5d2c013db4008a76d769a7dd1fde GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^96;>B!VDxWD_33tQU(D&A+AYBlMD?F|3AyRchqpp z9F8f~3|U!OUS3{6d90xQ%JxE_1Y=2%UoeBivm0qZPJ*Y4V~E7mb^*;y%}fD914cgPKXNTM*%%pIrA02Cbm4mqa*?O2pUXO@geCyTemTtm literal 0 HcmV?d00001 diff --git a/graphics/misc/decoration_unk_85a7358.png b/graphics/misc/decoration_unk_85a7358.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc8ed60474f2fc987469d3c40fd34f6cac9a227 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExa-J@ZAsjQ4e`s*9ed1~Qf6!rq jquik%9{g-~f@T;qy!20=JAwc05|9p0S3j3^P6secretBases[0].decorations; + gUnknown_0203A17C.pos = gSaveBlock1Ptr->secretBases[0].decorationPos; + } + if (gUnknown_0203A17C.isPlayerRoom == TRUE) + { + gUnknown_0203A17C.items = gSaveBlock1Ptr->playerRoomDecor; + gUnknown_0203A17C.pos = gSaveBlock1Ptr->playerRoomDecorPos; + } +} + +u8 sub_81269D4(u8 idx) +{ + u8 *winidx; + struct WindowTemplate template; + + winidx = &gUnknown_0203A188[idx]; + if (idx == 0) + { + template = gUnknown_085A6B90[0]; + template.width = GetMaxWidthInMenuTable(gUnknown_085A6B48, 4); + if (template.width > 18) + { + template.width = 18; + } + *winidx = AddWindow(&template); + } + else + { + *winidx = AddWindow(&gUnknown_085A6B90[idx]); + } + SetWindowBorderStyle(*winidx, 0, 0x214, 0xe); + schedule_bg_copy_tilemap_to_vram(0); + return *winidx; +} + +void sub_8126A58(u8 idx) +{ + sub_8198070(gUnknown_0203A188[idx], FALSE); + ClearWindowTilemap(gUnknown_0203A188[idx]); + RemoveWindow(gUnknown_0203A188[idx]); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_8126A88(void) +{ + u8 idx; + + idx = sub_81269D4(0); + PrintMenuTable(idx, 4, gUnknown_085A6B48); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(idx, 4, gUnknown_0203A150); +} + +void sub_8126ABC(void) +{ + gUnknown_0203A150 = 0; + ScriptContext2_Enable(); + sub_8126A88(); + sub_8126C08(); +} + +void sub_8126AD8(u8 taskId) +{ + sub_8126ABC(); + gUnknown_0203A17C.items = gSaveBlock1Ptr->secretBases[0].decorations; + gUnknown_0203A17C.pos = gSaveBlock1Ptr->secretBases[0].decorationPos; + gUnknown_0203A17C.size = sizeof(gSaveBlock1Ptr->secretBases[0].decorations); + gUnknown_0203A17C.isPlayerRoom = FALSE; + gTasks[taskId].func = sub_8126B80; +} + +void sub_8126B2C(u8 taskId) +{ + sub_8126ABC(); + gUnknown_0203A17C.items = gSaveBlock1Ptr->playerRoomDecor; + gUnknown_0203A17C.pos = gSaveBlock1Ptr->playerRoomDecorPos; + gUnknown_0203A17C.size = sizeof(gSaveBlock1Ptr->playerRoomDecor); + gUnknown_0203A17C.isPlayerRoom = TRUE; + gTasks[taskId].func = sub_8126B80; +} + +void sub_8126B80(u8 taskId) +{ + u8 menuPos; + + if (!gPaletteFade.active) + { + menuPos = GetMenuCursorPos(); + switch (ProcessMenuInput()) + { + default: + PlaySE(SE_SELECT); + gUnknown_085A6B48[gUnknown_0203A150].func.void_u8(taskId); + break; + case -2: + gUnknown_0203A150 = GetMenuCursorPos(); + if ((s8)menuPos != gUnknown_0203A150) + { + sub_8126C08(); + } + break; + case -1: + PlaySE(SE_SELECT); + sub_8126D6C(taskId); + break; + } + } +} + +void sub_8126C08(void) +{ + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParametrized(0, 1, gUnknown_085A6B68[gUnknown_0203A150], 0, 0, 2, 1, 3); +} + +void sub_8126C48(u8 taskId) +{ + if (CountDecorations() == 0) + { + StringExpandPlaceholders(gStringVar4, gText_NoDecorations); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4); + } + else + { + gTasks[taskId].data[11] = 0; + gUnknown_0203A173 = DECORCAT_DESK; + sub_8126DCC(taskId); + } +} + +void sub_8126CA4(u8 taskId) +{ + if (!sub_81299AC(taskId)) + { + StringExpandPlaceholders(gStringVar4, gText_NoDecorationsInUse); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4); + } + else + { + sub_8126A58(0); + sub_8197434(0, 0); + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_8129ABC; + } +} + +void sub_8126D10(u8 taskId) +{ + if (CountDecorations() == 0) + { + StringExpandPlaceholders(gStringVar4, gText_NoDecorations); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4); + } + else + { + gTasks[taskId].data[11] = 1; + gUnknown_0203A173 = DECORCAT_DESK; + sub_8126DCC(taskId); + } +} + +void sub_8126D6C(u8 taskId) +{ + sub_8126A58(0); + if (!gUnknown_0203A17C.isPlayerRoom) + { + ScriptContext1_SetupScript(gUnknown_0823B4E8); + DestroyTask(taskId); + } + else + { + sub_816B060(taskId); + } +} + +void sub_8126DA4(u8 taskId) +{ + sub_8126C08(); + gTasks[taskId].func = sub_8126B80; +} + +void sub_8126DCC(u8 taskId) +{ + LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20); + sub_8197434(0, 0); + sub_8126A58(0); + sub_8126DFC(taskId); +} + +void sub_8126DFC(u8 taskId) +{ + u8 winIdx; + + winIdx = sub_81269D4(1); + sub_8126E8C(taskId); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(winIdx, 9, gUnknown_0203A173); + gTasks[taskId].func = sub_8127088; +} + +void sub_8126E44(u8 taskId) +{ + FillWindowPixelBuffer(gUnknown_0203A188[1], 0x11); + sub_8126E8C(taskId); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(gUnknown_0203A188[1], 9, gUnknown_0203A173); + gTasks[taskId].func = sub_8127088; +} + +void sub_8126E8C(u8 taskId) +{ + s16 *data; + u8 r5; + bool8 r8; + u8 i; + bool8 fl; + + data = gTasks[taskId].data; + r5 = gUnknown_0203A188[1]; + fl = gUnknown_0203A17C.isPlayerRoom; + r8 = FALSE; + if (fl == TRUE && data[11] == 0) + { + r8 = TRUE; + } + for (i = 0; i < 8; i ++) + { + if (r8 == TRUE && i != DECORCAT_DOLL && i != DECORCAT_CUSHION) + { + sub_8126F68(r5, i, 8, i << 4, TRUE, 0xFF); + } + else + { + sub_8126F68(r5, i, 8, i << 4, FALSE, 0xFF); + } + } + PrintTextOnWindow(r5, 1, gTasks[taskId].data[11] == 2 ? gText_Exit : gText_Cancel, 8, (i << 4) + 1, 0, 0); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed) +{ + u8 width; + u8 *strbuf; + + width = x == 8 ? 0x68 : 0x60; + y ++; + sub_8127058(gStringVar4, flag); + strbuf = StringLength(gStringVar4) + gStringVar4; + StringCopy(strbuf, gUnknown_085A6B28[decorCat]); + PrintTextOnWindow(winid, 1, gStringVar4, x, y, speed, NULL); + strbuf = ConvertIntToDecimalStringN(strbuf, CountDecorationCategoryN(decorCat), STR_CONV_MODE_RIGHT_ALIGN, 2); + *strbuf++ = CHAR_SLASH; + ConvertIntToDecimalStringN(strbuf, gDecorationInventories[decorCat].size, STR_CONV_MODE_RIGHT_ALIGN, 2); + x = GetStringRightAlignXOffset(1, gStringVar4, width); + PrintTextOnWindow(winid, 1, gStringVar4, x, y, speed, NULL); +} + +void sub_8127058(u8 *str, bool8 flag) +{ + StringCopy(str, gText_Color161Shadow161); + if (flag == TRUE) + { + str[2] = 0x04; // RED + str[5] = 0x05; // LIGHT_RED + } + else + { + str[2] = 0x02; // DARK_GREY + str[5] = 0x03; // LIGHT_GREY + } +} + +void sub_8127088(u8 taskId) +{ + s8 input; + + if (!gPaletteFade.active) + { + input = ProcessMenuInput(); + switch (input) + { + case -1: + case 8: + PlaySE(SE_SELECT); + sub_812719C(taskId); + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + gUnknown_0203A173 = input; + sub_81270E8(taskId); + break; + } + } +} + +void sub_81270E8(u8 taskId) +{ + gUnknown_0203A151 = CountDecorationCategoryN(gUnknown_0203A173); + if (gUnknown_0203A151 != 0) + { + CondenseDecorationCategoryN(gUnknown_0203A173); + gUnknown_0203A14C = gDecorationInventories[gUnknown_0203A173].items; + sub_81279B4(taskId); + gUnknown_0203A170 = 0; + gUnknown_0203A16E = 0; + gTasks[taskId].func = sub_8127620; + } + else + { + sub_8126A58(1); + StringExpandPlaceholders(gStringVar4, gText_NoDecorations); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8127180); + } +} + +void sub_8127180(u8 taskId) +{ + sub_8197434(0, 0); + sub_8126DFC(taskId); +} + +void sub_812719C(u8 taskId) +{ + if (gTasks[taskId].data[11] != 2) + { + sub_81271CC(taskId); + } + else + { + sub_8127268(taskId); + } +} + +void sub_81271CC(u8 taskId) +{ + sub_8126A58(1); + sub_8126A88(); + sub_81973C4(0, 0); + sub_8126C08(); + gTasks[taskId].func = sub_8126B80; +} + +void sub_8127208(u8 taskId) +{ + LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20); + sub_8197434(0, 0); + gTasks[taskId].data[11] = 2; + gUnknown_0203A173 = DECORCAT_DESK; + sub_8126DFC(taskId); +} + +void sub_8127250(u8 *dest, u8 decorCat) +{ + StringCopy(dest, gUnknown_085A6B28[decorCat]); +} + +void sub_8127268(u8 taskId) +{ + sub_8126A58(1); + sub_8133E1C(taskId); +} + +void sub_8127284(void) +{ + gUnknown_0203A18C->unk_520 = gUnknown_0203A151 + 1; + if (gUnknown_0203A18C->unk_520 > 8) + { + gUnknown_0203A18C->unk_521 = 8; + } + else + { + gUnknown_0203A18C->unk_521 = gUnknown_0203A18C->unk_520; + } +} + +void sub_81272C8(void) +{ + sub_812225C(&gUnknown_0203A170, &gUnknown_0203A16E, gUnknown_0203A18C->unk_521, gUnknown_0203A18C->unk_520); +} + +void sub_81272F8(void) +{ + sub_8122298(&gUnknown_0203A170, &gUnknown_0203A16E, gUnknown_0203A18C->unk_521, gUnknown_0203A18C->unk_520, 8); +} + +void sub_8127330(u8 taskId) +{ + s16 *data; + u16 i; + + data = gTasks[taskId].data; + if ((gUnknown_0203A173 < DECORCAT_DOLL || gUnknown_0203A173 > DECORCAT_CUSHION) && gUnknown_0203A17C.isPlayerRoom == TRUE && data[11] == 0) + { + sub_8127058(gStringVar1, TRUE); + } + else + { + sub_8127058(gStringVar1, FALSE); + } + for (i = 0; i < gUnknown_0203A18C->unk_520 - 1; i ++) + { + sub_8127454(gUnknown_0203A18C->unk_148[i], gUnknown_0203A14C[i]); + gUnknown_0203A18C->unk_000[i].unk_00 = gUnknown_0203A18C->unk_148[i]; + gUnknown_0203A18C->unk_000[i].unk_04 = i; + } + StringCopy(gUnknown_0203A18C->unk_148[i], gText_Cancel); + gUnknown_0203A18C->unk_000[i].unk_00 = gUnknown_0203A18C->unk_148[i]; + gUnknown_0203A18C->unk_000[i].unk_04 = -2; + gUnknown_03006310 = gUnknown_085A6BD0; + gUnknown_03006310.unk_10 = gUnknown_0203A188[1]; + gUnknown_03006310.unk_0c = gUnknown_0203A18C->unk_520; + gUnknown_03006310.unk_00 = gUnknown_0203A18C->unk_000; + gUnknown_03006310.unk_0e = gUnknown_0203A18C->unk_521; +} + +void sub_8127454(u8 *dest, u16 decorId) +{ + StringCopy(dest, gStringVar1); + StringAppend(dest, gDecorations[decorId].name); +} + +void sub_8127480(u32 a0, bool8 flag, struct ListMenu *menu) +{ + if (flag != TRUE) + { + PlaySE(SE_SELECT); + } + sub_8127744(a0); +} + +void sub_81274A0(u8 a0, s32 a1, u8 a2) +{ + if (a1 != -2) + { + if (sub_81277BC(a1 + 1) == TRUE) + { + blit_move_info_icon(a0, 0x18, 0x5c, a2 + 2); + } + else if (sub_81277E8(a1 + 1) == TRUE) + { + blit_move_info_icon(a0, 0x19, 0x5c, a2 + 2); + } + } +} + +void sub_8127500(void) +{ + if (gUnknown_0203A18C->unk_522 == 0xFF) + { + gUnknown_0203A18C->unk_522 = AddScrollIndicatorArrowPairParametrized(0x02, 0x3c, 0x0c, 0x94, gUnknown_0203A18C->unk_520 - gUnknown_0203A18C->unk_521, 0x6e, 0x6e, &gUnknown_0203A170); + } +} + +void sub_8127554(void) +{ + if (gUnknown_0203A18C->unk_522 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_0203A18C->unk_522); + gUnknown_0203A18C->unk_522 = 0xFF; + } +} + +void sub_8127580(u8 taskId) +{ + sub_81269D4(1); + sub_812759C(taskId); +} + +void sub_812759C(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + sub_81269D4(3); + sub_8127718(gUnknown_0203A173); + gUnknown_0203A18C = calloc(1, sizeof(struct UnkStruct_0203A18C)); + gUnknown_0203A18C->unk_522 = 0xFF; + sub_8127284(); + sub_81272C8(); + sub_81272F8(); + sub_8127330(taskId); + data[13] = ListMenuInit(&gUnknown_03006310, gUnknown_0203A170, gUnknown_0203A16E); + sub_8127500(); +} + +void sub_8127620(u8 taskId) +{ + sub_812759C(taskId); + gTasks[taskId].func = sub_812764C; +} + +void sub_812764C(u8 taskId) +{ + s16 *data; + s32 input; + + data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + input = ListMenuHandleInput(data[13]); + get_coro_args_x18_x1A(data[13], &gUnknown_0203A170, &gUnknown_0203A16E); + switch (input) + { + case -1: + break; + case -2: + PlaySE(SE_SELECT); + gUnknown_085A6B78[data[11]][1](taskId); + break; + default: + PlaySE(SE_SELECT); + gUnknown_0203A172 = input; + sub_8127554(); + sub_81AE6C8(data[13], &gUnknown_0203A170, &gUnknown_0203A16E); + sub_8126A58(1); + sub_81277A8(); + free(gUnknown_0203A18C); + gUnknown_085A6B78[data[11]][0](taskId); + break; + } + } +} + +void sub_8127718(u8 decorCat) +{ + sub_8126F68(sub_81269D4(2), decorCat, 0, 0, 0, 0); +} + +void sub_8127744(u32 a0) +{ + u8 winidx; + const u8 *txt; + + winidx = gUnknown_0203A188[3]; + FillWindowPixelBuffer(winidx, 0x11); + if (a0 >= gUnknown_0203A151) + { + txt = gText_GoBackPrevMenu; + } + else + { + txt = gDecorations[gUnknown_0203A14C[a0]].description; + } + PrintTextOnWindow(winidx, 1, txt, 0, 1, 0, 0); +} + +void sub_81277A8(void) +{ + sub_8126A58(3); + sub_8126A58(2); +} + +bool8 sub_81277BC(u8 idx) +{ + u8 i; + + for (i = 0; i < 16; i ++) + { + if (gUnknown_0203A152[i] == idx) + { + return TRUE; + } + } + return FALSE; +} + +bool8 sub_81277E8(u8 idx) +{ + u8 i; + + for (i = 0; i < 12; i ++) + { + if (gUnknown_0203A162[i] == idx) + { + return TRUE; + } + } + return FALSE; +} + +void sub_8127814(u8 taskId) +{ + u16 i; + u16 j; + u16 k; + u16 cnt; + + cnt = 0; + memset(gUnknown_0203A152, 0, 16); + memset(gUnknown_0203A162, 0, 12); + for (i = 0; i < 16; i ++) + { + if (gSaveBlock1Ptr->secretBases[0].decorations[i] != DECOR_NONE) + { + for (j = 0; j < gDecorationInventories[gUnknown_0203A173].size; j ++) + { + if (gUnknown_0203A14C[j] == gSaveBlock1Ptr->secretBases[0].decorations[i]) + { + for (k = 0; k < cnt && gUnknown_0203A152[k] != j + 1; k ++); + if (k == cnt) + { + gUnknown_0203A152[cnt] = j + 1; + cnt ++; + break; + } + } + } + } + } + cnt = 0; + for (i = 0; i < 12; i ++) + { + if (gSaveBlock1Ptr->playerRoomDecor[i] != DECOR_NONE) + { + for (j = 0; j < gDecorationInventories[gUnknown_0203A173].size; j ++) + { + if (gUnknown_0203A14C[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE) + { + for (k = 0; k < cnt && gUnknown_0203A162[k] != j + 1; k ++); + if (k == cnt) + { + gUnknown_0203A162[cnt] = j + 1; + cnt ++; + break; + } + } + } + } + } +} + +void sub_81279B4(u8 taskId) +{ + sub_8127814(taskId); +} + +bool8 sub_81279C4(void) +{ + u16 i; + for (i = 0; i < 16; i ++) + { + if (gUnknown_0203A152[i] == gUnknown_0203A170 + gUnknown_0203A16E + 1) + { + return FALSE; + } + if (i < 12 && gUnknown_0203A162[i] == gUnknown_0203A170 + gUnknown_0203A16E + 1) + { + return FALSE; + } + } + return TRUE; +} + +void sub_8127A14(u8 taskId) +{ + sub_81269D4(1); + sub_8127620(taskId); +} + +void sub_8127A30(u8 taskId) +{ + sub_8197434(0, 0); + gTasks[taskId].func = sub_8127A14; +} + +void sub_8127A5C(u8 taskId) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8197434(0, 0); + sub_81269D4(1); + sub_8127620(taskId); + } +} + +void sub_8127A8C(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + sub_8127554(); + sub_81277A8(); + sub_81AE6C8(data[13], NULL, NULL); + free(gUnknown_0203A18C); + sub_8126E44(taskId); +} + +void sub_8127ACC(u8 taskId) +{ + gTasks[taskId].data[3] = gSaveBlock1Ptr->pos.x; + gTasks[taskId].data[4] = gSaveBlock1Ptr->pos.y; + PlayerGetDestCoords(&gTasks[taskId].data[0], &gTasks[taskId].data[1]); +} + +void sub_8127B04(u8 taskId) +{ + DrawWholeMapView(); + Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); + warp_in(); +} + +u16 sub_8127B54(u8 decor, u8 a1) +{ + u16 resp; + + resp = -1; + switch (decor) + { + case DECOR_STAND: + resp = gUnknown_085A72E4[a1] << 12; + return resp; + case DECOR_SLIDE: + resp = gUnknown_085A72EC[a1] << 12; + return resp; + default: + return resp; + } +} + +void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor) +{ + u16 i; + u16 j; + u16 behavior; + u16 flags; + u16 v0; + u16 v1; + s16 decLeft; + s16 decBottom; + + for (i = 0; i < decHeight; i ++) + { + decBottom = mapY - decHeight + 1 + i; + for (j = 0; j < decWidth; j ++) + { + decLeft = mapX + j; + behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]); + if (MetatileBehavior_IsMB_B9(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12))) + { + flags = 0xc00; + } + else + { + flags = 0x000; + } + if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsMB_B7(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE) + { + v0 = 1; + } + else + { + v0 = 0; + } + v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j); + if (v1 != 0xFFFF) + { + MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1); + } + else + { + MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags); + } + } + } +} + +void sub_8127D38(u16 mapX, u16 mapY, u16 decor) +{ + switch (gDecorations[decor].shape) + { + case DECORSHAPE_1x1: + sub_8127B90(mapX, mapY, 1, 1, decor); + break; + case DECORSHAPE_2x1: + sub_8127B90(mapX, mapY, 2, 1, decor); + break; + case DECORSHAPE_3x1: // unused + sub_8127B90(mapX, mapY, 3, 1, decor); + break; + case DECORSHAPE_4x2: + sub_8127B90(mapX, mapY, 4, 2, decor); + break; + case DECORSHAPE_2x2: + sub_8127B90(mapX, mapY, 2, 2, decor); + break; + case DECORSHAPE_1x2: + sub_8127B90(mapX, mapY, 1, 2, decor); + break; + case DECORSHAPE_1x3: // unused + sub_8127B90(mapX, mapY, 1, 3, decor); + break; + case DECORSHAPE_2x4: + sub_8127B90(mapX, mapY, 2, 4, decor); + break; + case DECORSHAPE_3x3: + sub_8127B90(mapX, mapY, 3, 3, decor); + break; + case DECORSHAPE_3x2: + sub_8127B90(mapX, mapY, 3, 2, decor); + break; + } +} + +void sub_8127E18(void) +{ + u8 i; + u8 j; + + for (i = 0; i < 14; i ++) + { + if (FlagGet(0xAE + i) == TRUE) + { + FlagClear(0xAE + i); + for (j = 0; j < gMapHeader.events->mapObjectCount; j ++) + { + if (gMapHeader.events->mapObjects[j].flagId == 0xAE + i) + { + break; + } + } + VarSet(0x3F20 + gMapHeader.events->mapObjects[j].graphicsId, gUnknown_0203A190.decoration->tiles[0]); + gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId; + gSpecialVar_0x8006 = gUnknown_0203AA34; + gSpecialVar_0x8007 = gUnknown_0203AA36; + show_sprite(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sub_808EBA8(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_808F254(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + break; + } + } +} + +bool8 sub_8127F38(void) +{ + u16 i; + + for (i = 0; i < gUnknown_0203A17C.size; i ++) + { + if (gUnknown_0203A17C.items[i] == DECOR_NONE) + { + return TRUE; + } + } + return FALSE; +} + +void sub_8127F68(u8 taskId) +{ + if (gUnknown_0203A17C.isPlayerRoom == TRUE && gUnknown_0203A173 != DECORCAT_DOLL && gUnknown_0203A173 != DECORCAT_CUSHION) + { + StringExpandPlaceholders(gStringVar4, gText_CantPlaceInRoom); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); + } + else if (sub_81279C4() == TRUE) + { + if (sub_8127F38() == TRUE) + { + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_8128060; + } + else + { + ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203A17C.size, STR_CONV_MODE_RIGHT_ALIGN, 2); + if (gUnknown_0203A17C.isPlayerRoom == FALSE) { + StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations); + } + else + { + StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations2); + } + DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); + } + } + else + { + StringExpandPlaceholders(gStringVar4, gText_InUseAlready); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); + } +} + +void sub_8128060(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_8127ACC(taskId); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + gPaletteFade.bufferTransferDisabled = TRUE; + ConfigureCameraObjectForPlacingDecoration(&gUnknown_0203A190, gUnknown_0203A14C[gUnknown_0203A172]); + sub_812826C(taskId); + SetUpPlacingDecorationPlayerAvatar(taskId, &gUnknown_0203A190); + pal_fill_black(); + gPaletteFade.bufferTransferDisabled = FALSE; + gTasks[taskId].data[2] = 2; + break; + case 2: + if (sub_80ABDFC() == TRUE) + { + gTasks[taskId].data[12] = 0; + sub_8128FD8(taskId); + } + break; + } +} + +void ConfigureCameraObjectForPlacingDecoration(struct UnkStruct_0203A190 *data, u8 decor) +{ + gUnknown_0203AA38 = gSprites[gUnknown_03005DD0.unk4].data0; + gUnknown_03005DD0.unk4 = gpu_pal_decompress_alloc_tag_and_upload(data, decor); + gSprites[gUnknown_03005DD0.unk4].oam.priority = 1; + gSprites[gUnknown_03005DD0.unk4].callback = sub_81292D0; + gSprites[gUnknown_03005DD0.unk4].pos1.x = gUnknown_085A7250[data->decoration->shape].x; + gSprites[gUnknown_03005DD0.unk4].pos1.y = gUnknown_085A7250[data->decoration->shape].y; +} + +void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_0203A190 *data) +{ + u8 v0; + + v0 = 16 * (u8)gTasks[taskId].data[5] + gUnknown_085A7250[data->decoration->shape].x - 8 * ((u8)gTasks[taskId].data[5] - 1); + if (data->decoration->shape == DECORSHAPE_3x1 || data->decoration->shape == DECORSHAPE_3x3 || data->decoration->shape == DECORSHAPE_3x2) + { + v0 -= 8; + } + if (gSaveBlock2Ptr->playerGender == MALE) + { + gUnknown_0203AA39 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0); + } + else + { + gUnknown_0203AA39 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0); + } + gSprites[gUnknown_0203AA39].oam.priority = 1; + DestroySprite(&gSprites[gUnknown_0203AA38]); + gUnknown_0203AA38 = gUnknown_03005DD0.unk4; +} + +void sub_812826C(u8 taskId) +{ + switch (gDecorations[gUnknown_0203A14C[gUnknown_0203A172]].shape) + { + case DECORSHAPE_1x1: + gTasks[taskId].data[5] = 1; + gTasks[taskId].data[6] = 1; + break; + case DECORSHAPE_2x1: + gTasks[taskId].data[5] = 2; + gTasks[taskId].data[6] = 1; + break; + case DECORSHAPE_3x1: + gTasks[taskId].data[5] = 3; + gTasks[taskId].data[6] = 1; + break; + case DECORSHAPE_4x2: + gTasks[taskId].data[5] = 4; + gTasks[taskId].data[6] = 2; + break; + case DECORSHAPE_2x2: + gTasks[taskId].data[5] = 2; + gTasks[taskId].data[6] = 2; + break; + case DECORSHAPE_1x2: + gTasks[taskId].data[5] = 1; + gTasks[taskId].data[6] = 2; + break; + case DECORSHAPE_1x3: + gTasks[taskId].data[5] = 1; + gTasks[taskId].data[6] = 3; + gTasks[taskId].data[1]++; + break; + case DECORSHAPE_2x4: + gTasks[taskId].data[5] = 2; + gTasks[taskId].data[6] = 4; + break; + case DECORSHAPE_3x3: + gTasks[taskId].data[5] = 3; + gTasks[taskId].data[6] = 3; + break; + case DECORSHAPE_3x2: + gTasks[taskId].data[5] = 3; + gTasks[taskId].data[6] = 2; + break; + } +} + +void sub_81283BC(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + gSprites[gUnknown_0203AA38].data7 = 1; + gSprites[gUnknown_0203AA39].data7 = 1; + sub_8128DE0(); + sub_8128950(taskId); +} + +void sub_8128414(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + gSprites[gUnknown_0203AA38].data7 = 1; + gSprites[gUnknown_0203AA39].data7 = 1; + sub_8128DE0(); + StringExpandPlaceholders(gStringVar4, gText_CancelDecorating); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8128B80); +} + +bool8 sub_8128484(u8 behaviorAt, u16 behaviorBy) +{ + if (MetatileBehavior_IsMB_B3(behaviorAt) != TRUE || behaviorBy != 0) + { + return FALSE; + } + return TRUE; +} + +bool8 sub_81284AC(u8 taskId, s16 x, s16 y, u16 decor) +{ + if (x == gTasks[taskId].data[3] + 7 && y == gTasks[taskId].data[4] + 7 && decor != DECOR_NONE) + { + return FALSE; + } + return TRUE; +} + +bool8 sub_81284F4(u16 behaviorAt, const struct Decoration *decoration) +{ + if (MetatileBehavior_IsMB_B3(behaviorAt) != TRUE) + { + if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsMB_C2(behaviorAt) == TRUE) + { + return TRUE; + } + if (MetatileBehavior_IsNormal(behaviorAt)) + { + return TRUE; + } + } + return FALSE; +} + +bool8 sub_812853C(u8 taskId, const struct Decoration *decoration) +{ + u8 i; + u8 j; + u8 behaviorAt; + u16 behaviorBy; + u8 mapY; + u8 mapX; + s16 curY; + s16 curX; + mapY = gTasks[taskId].data[6]; + mapX = gTasks[taskId].data[5]; + + switch (decoration->permission) + { + case DECORPERM_SOLID_FLOOR: + case DECORPERM_PASS_FLOOR: + for (i=0; itiles[(mapY - 1 - i) * mapX + j]) & 0xf000; + if (!sub_81284F4(behaviorAt, decoration)) + { + return FALSE; + } + if (!sub_81284AC(taskId, curX, curY, behaviorBy)) + { + return FALSE; + } + behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0); + if (behaviorAt != 0 && behaviorAt != 16) + { + return FALSE; + } + } + } + break; + case DECORPERM_BEHIND_FLOOR: + for (i=0; itiles[(mapY - 1 - i) * mapX + j]) & 0xf000; + if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy)) + { + return FALSE; + } + if (!sub_81284AC(taskId, curX, curY, behaviorBy)) + { + return FALSE; + } + if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16) + { + return FALSE; + } + } + } + curY = gTasks[taskId].data[1] - mapY + 1; + for (j=0; jtiles[j]) & 0xf000; + if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsMB_B7(behaviorAt)) + { + return FALSE; + } + if (!sub_81284AC(taskId, curX, curY, behaviorBy)) + { + return FALSE; + } + behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0); + if (behaviorAt != 0 && behaviorAt != 16) + { + return FALSE; + } + } + break; + case DECORPERM_NA_WALL: + for (i=0; ishape == DECORSHAPE_1x2) + { + if (!MetatileBehavior_IsMB_C3(behaviorAt)) + { + return FALSE; + } + } + else if (!MetatileBehavior_IsMB_B5(behaviorAt)) + { + if (!MetatileBehavior_IsMB_C3(behaviorAt)) + { + return FALSE; + } + } + if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16) + { + return FALSE; + } + } + break; + } + return TRUE; +} + +void sub_8128950(u8 taskId) +{ + if (sub_812853C(taskId, &gDecorations[gUnknown_0203A14C[gUnknown_0203A172]]) == TRUE) + { + StringExpandPlaceholders(gStringVar4, gText_PlaceItHere); + DisplayItemMessageOnField(taskId, gStringVar4, sub_81289D0); + } + else + { + PlaySE(SE_HAZURE); + StringExpandPlaceholders(gStringVar4, gText_CantBePlacedHere); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8129020); + } +} + +void sub_81289D0(u8 taskId) +{ + sub_8197930(); + sub_8121F68(taskId, &gUnknown_085A72C4); +} + +void sub_81289F0(u8 taskId) +{ + sub_8197434(0, 0); + sub_8128AAC(taskId); + if (gDecorations[gUnknown_0203A14C[gUnknown_0203A172]].permission != DECORPERM_SOLID_MAT) + { + sub_8127D38(gTasks[taskId].data[0], gTasks[taskId].data[1], gUnknown_0203A14C[gUnknown_0203A172]); + } + else + { + gUnknown_0203AA34 = gTasks[taskId].data[0] - 7; + gUnknown_0203AA36 = gTasks[taskId].data[1] - 7; + ScriptContext1_SetupScript(gUnknown_08275D1F); + } + gSprites[gUnknown_0203AA38].pos1.y += 2; + if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE) + { + TV_PutSecretBaseVisitOnTheAir(); + } + sub_8128BBC(taskId); +} + +void sub_8128AAC(u8 taskId) +{ + u16 i; + + for (i = 0; i < gUnknown_0203A17C.size; i ++) + { + if (gUnknown_0203A17C.items[i] == DECOR_NONE) + { + gUnknown_0203A17C.items[i] = gUnknown_0203A14C[gUnknown_0203A172]; + gUnknown_0203A17C.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7); + break; + } + } + if (!gUnknown_0203A17C.isPlayerRoom) + { + for (i = 0; i < 16; i ++) + { + if (gUnknown_0203A152[i] == 0) + { + gUnknown_0203A152[i] = gUnknown_0203A172 + 1; + break; + } + } + } + else + { + for (i = 0; i < 12; i ++) + { + if (gUnknown_0203A162[i] == 0) + { + gUnknown_0203A162[i] = gUnknown_0203A172 + 1; + break; + } + } + } +} + +void sub_8128B80(u8 taskId) +{ + sub_8197930(); + sub_8121F68(taskId, &gUnknown_085A72CC); +} + +void sub_8128BA0(u8 taskId) +{ + sub_8197434(0, 0); + sub_8128BBC(taskId); +} + +void sub_8128BBC(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = c1_overworld_prev_quest; +} + +void c1_overworld_prev_quest(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + ScriptContext2_Enable(); + if (!gPaletteFade.active) + { + sub_8127B04(taskId); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + sub_812A3C8(); + FreeSpritePaletteByTag(0xbe5); + gFieldCallback = sub_8128CD4; + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + break; + } +} + +void sub_8128C64(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + switch (data[2]) + { + case 0: + sub_80E9578(); + data[2] ++; + break; + case 1: + ScriptContext1_SetupScript(gUnknown_08275D0C); + data[2] ++; + break; + case 2: + ScriptContext2_Enable(); + data[2] ++; + break; + case 3: + if (sub_80ABDFC() == TRUE) + { + gTasks[taskId].func = sub_812764C; + } + break; + } +} + +void sub_8128CD4(void) +{ + u8 taskId; + + ScriptContext2_Enable(); + pal_fill_black(); + taskId = CreateTask(sub_8128C64, 8); + sub_8127580(taskId); + gTasks[taskId].data[2] = 0; +} + +bool8 sub_8128D10(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + if (gUnknown_0203AA3A == DIR_SOUTH && data[1] - data[6] - 6 < 0) + { + data[1] ++; + return FALSE; + } + if (gUnknown_0203AA3A == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height) + { + data[1] --; + return FALSE; + } + if (gUnknown_0203AA3A == DIR_WEST && data[0] - 7 < 0) + { + data[0] ++; + return FALSE; + } + if (gUnknown_0203AA3A == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width) + { + data[0] --; + return FALSE; + } + return TRUE; +} + +bool8 sub_8128DB4(void) +{ + u16 heldKeys; + + heldKeys = gMain.heldKeys & 0x0F0; + if (heldKeys != DPAD_UP && heldKeys != DPAD_DOWN && heldKeys != DPAD_LEFT && heldKeys != DPAD_RIGHT) + { + return FALSE; + } + return TRUE; +} + +void sub_8128DE0(void) +{ + gUnknown_0203AA3A = 0; + gSprites[gUnknown_0203AA38].data2 = 0; + gSprites[gUnknown_0203AA38].data3 = 0; +} + +void sub_8128E18(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + if (!gSprites[gUnknown_0203AA38].data4) + { + if (data[10] == 1) + { + gUnknown_085A72D4[data[12]].yesFunc(taskId); + return; + } else if (data[10] == 2) + { + gUnknown_085A72D4[data[12]].noFunc(taskId); + return; + } + if ((gMain.heldKeys & 0x0F0) == DPAD_UP) + { + gUnknown_0203AA3A = DIR_SOUTH; + gSprites[gUnknown_0203AA38].data2 = 0; + gSprites[gUnknown_0203AA38].data3 = -2; + data[1]--; + } + if ((gMain.heldKeys & 0x0F0) == DPAD_DOWN) + { + gUnknown_0203AA3A = DIR_NORTH; + gSprites[gUnknown_0203AA38].data2 = 0; + gSprites[gUnknown_0203AA38].data3 = 2; + data[1]++; + } + if ((gMain.heldKeys & 0x0F0) == DPAD_LEFT) + { + gUnknown_0203AA3A = DIR_WEST; + gSprites[gUnknown_0203AA38].data2 = -2; + gSprites[gUnknown_0203AA38].data3 = 0; + data[0]--; + } + if ((gMain.heldKeys & 0x0F0) == DPAD_RIGHT) + { + gUnknown_0203AA3A = DIR_EAST; + gSprites[gUnknown_0203AA38].data2 = 2; + gSprites[gUnknown_0203AA38].data3 = 0; + data[0]++; + } + if (!sub_8128DB4() || !sub_8128D10(taskId)) + { + sub_8128DE0(); + } + } + if (gUnknown_0203AA3A) + { + gSprites[gUnknown_0203AA38].data4++; + gSprites[gUnknown_0203AA38].data4 &= 7; + } + if (!data[10]) + { + if (gMain.newKeys & A_BUTTON) + { + data[10] = A_BUTTON; + } + if (gMain.newKeys & B_BUTTON) + { + data[10] = B_BUTTON; + } + } +} + +void sub_8128FD8(u8 taskId) +{ + sub_8197434(0, 1); + gSprites[gUnknown_0203AA38].data7 = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].func = sub_8128E18; +} + +void sub_8129020(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + sub_8128FD8(taskId); + } +} + +void sub_8129048(struct UnkStruct_0203A190 *data) +{ + CpuFill16(0, data, sizeof(*data)); +} + +void sub_8129068(u16 *dest, u16 pal) +{ + CpuFastCopy(&((u16 *)gTilesetPointer_SecretBase->palettes)[pal << 4], dest, 32); +} + +void sub_8129088(u8 *dest, u16 tile) +{ + u8 buffer[32]; + u16 mode; + u16 i; + + mode = tile >> 10; + if (tile != 0) + { + tile &= 0x03FF; + } + CpuFastCopy(&((u8 *)gTilesetPointer_SecretBase->tiles)[tile << 5], buffer, 32); + switch (mode) + { + case 0: + CpuFastCopy(buffer, dest, 32); + break; + case 1: + for (i = 0; i < 8; i ++) + { + dest[4 * i] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4); + dest[4 * i + 1] = (buffer[4 * (i + 1) - 2] >> 4) + ((buffer[4 * (i + 1) - 2] & 0x0F) << 4); + dest[4 * i + 2] = (buffer[4 * (i + 1) - 3] >> 4) + ((buffer[4 * (i + 1) - 3] & 0x0F) << 4); + dest[4 * i + 3] = (buffer[4 * (i + 1) - 4] >> 4) + ((buffer[4 * (i + 1) - 4] & 0x0F) << 4); + } + break; + case 2: + for (i = 0; i < 8; i ++) + { + dest[4 * i] = buffer[4 * (7 - i)]; + dest[4 * i + 1] = buffer[4 * (7 - i) + 1]; + dest[4 * i + 2] = buffer[4 * (7 - i) + 2]; + dest[4 * i + 3] = buffer[4 * (7 - i) + 3]; + } + break; + case 3: + for (i = 0; i < 32; i ++) + { + dest[i] = (buffer[31 - i] >> 4) + ((buffer[31 - i] & 0x0F) << 4); + } + break; + } +} + +void sub_81291A4(struct UnkStruct_0203A190 *data) +{ + u16 i; + for (i = 0; i < 64; i ++) + { + sub_8129088(&data->image[i * 32], data->tiles[i]); + } +} + +u16 sub_81291CC(u16 tile) +{ + return ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[tile] & 0xFFF; +} + +void sub_81291E8(struct UnkStruct_0203A190 *data) +{ + u8 i; + u8 shape; + + shape = data->decoration->shape; + for (i = 0; i < gUnknown_085A71B0[shape].size; i ++) + { + data->tiles[gUnknown_085A71B0[shape].tiles[i]] = sub_81291CC(data->decoration->tiles[gUnknown_085A71B0[shape].y[i]] * 8 + gUnknown_085A71B0[shape].x[i]); + } +} + +void sub_812925C(u8 decoShape) +{ + gUnknown_0203AA3C.y = 0; + gUnknown_0203AA3C.affineMode = ST_OAM_AFFINE_OFF; + gUnknown_0203AA3C.objMode = ST_OAM_OBJ_NORMAL; + gUnknown_0203AA3C.mosaic = 0; + gUnknown_0203AA3C.bpp = ST_OAM_4BPP; + gUnknown_0203AA3C.shape = gUnknown_085A7250[decoShape].shape; + gUnknown_0203AA3C.x = 0; + gUnknown_0203AA3C.matrixNum = 0; + gUnknown_0203AA3C.size = gUnknown_085A7250[decoShape].size; + gUnknown_0203AA3C.tileNum = 0; + gUnknown_0203AA3C.priority = 0; + gUnknown_0203AA3C.paletteNum = 0; +} + +void sub_81292D0(struct Sprite *sprite) +{ + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + sprite->data5 = 0; + sprite->data6 = 0; + sprite->data7 = 0; + sprite->callback = sub_81292E8; +} + +void sub_81292E8(struct Sprite *sprite) +{ + if (sprite->data7 == 0) + { + if (sprite->data6 < 15) + { + sprite->invisible = FALSE; + } + else + { + sprite->invisible = TRUE; + } + sprite->data6 ++; + sprite->data6 &= 0x1F; + } + else + { + sprite->invisible = FALSE; + } +} + +u8 gpu_pal_decompress_alloc_tag_and_upload(struct UnkStruct_0203A190 *data, u8 decor) +{ + sub_8129048(data); + data->decoration = &gDecorations[decor]; + if (data->decoration->permission == DECORPERM_SOLID_MAT) + { + return AddPseudoFieldObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); + } + FreeSpritePaletteByTag(0xBE5); + sub_81291E8(data); + sub_812925C(data->decoration->shape); + sub_81291A4(data); + sub_8129068(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12); + LoadSpritePalette(&gUnknown_085A72BC); + return CreateSprite(&gUnknown_085A728C, 0, 0, 0); +} + +u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor) +{ + struct SpriteSheet sheet; + struct CompressedSpritePalette palette; + struct SpriteTemplate *template; + u8 spriteId; + + if (!AllocItemIconTemporaryBuffers()) + { + return MAX_SPRITES; + } + LZDecompressWram(GetDecorationIconPicOrPalette(decor, 0), gUnknown_0203CEBC); + CopyItemIconPicTo4x4Buffer(gUnknown_0203CEBC, gUnknown_0203CEC0); + sheet.data = gUnknown_0203CEC0; + sheet.size = 0x200; + sheet.tag = tilesTag; + LoadSpriteSheet(&sheet); + palette.data = GetDecorationIconPicOrPalette(decor, 1); + palette.tag = paletteTag; + LoadCompressedObjectPalette(&palette); + template = malloc(sizeof(struct SpriteTemplate)); + *template = gUnknown_08614FF4; + template->tileTag = tilesTag; + template->paletteTag = paletteTag; + spriteId = CreateSprite(template, 0, 0, 0); + FreeItemIconTemporaryBuffers(); + free(template); + return spriteId; +} + +const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode) +{ + if (decor > 120) + { + decor = DECOR_NONE; + } + return gUnknown_085A6BE8[decor][mode]; +} + +u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor) +{ + u8 spriteId; + struct SpriteSheet sheet; + struct SpritePalette palette; + struct SpriteTemplate *template; + + sub_8129048(&gUnknown_0203A190); + gUnknown_0203A190.decoration = &gDecorations[decor]; + if (gUnknown_0203A190.decoration->permission != DECORPERM_SOLID_MAT) + { + sub_81291E8(&gUnknown_0203A190); + sub_812925C(gUnknown_0203A190.decoration->shape); + sub_81291A4(&gUnknown_0203A190); + sub_8129068(gUnknown_0203A190.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(gUnknown_0203A190.decoration->tiles[0] * 8) + 7] >> 12); + sheet.data = gUnknown_0203A190.image; + sheet.size = gUnknown_085A72F4[gUnknown_0203A190.decoration->shape] << 5; + sheet.tag = tilesTag; + LoadSpriteSheet(&sheet); + palette.data = gUnknown_0203A190.palette; + palette.tag = paletteTag; + LoadSpritePalette(&palette); + template = Alloc(sizeof(struct SpriteTemplate)); + *template = gUnknown_085A72A4; + template->tileTag = tilesTag; + template->paletteTag = paletteTag; + spriteId = CreateSprite(template, 0, 0, 0); + free(template); + } + else + { + spriteId = AddPseudoFieldObject(gUnknown_0203A190.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); + } + return spriteId; +} + +u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u16 paletteTag) +{ + u8 spriteId; + + if (decor > 120) + { + spriteId = AddDecorationIconObjectFromIconTable(tilesTag, paletteTag, DECOR_NONE); + if (spriteId == MAX_SPRITES) + { + return MAX_SPRITES; + } + gSprites[spriteId].pos2.x = x + 4; + gSprites[spriteId].pos2.y = y + 4; + } + else if (gUnknown_085A6BE8[decor][0] == NULL) + { + spriteId = AddDecorationIconObjectFromFieldObject(tilesTag, paletteTag, decor); + if (spriteId == MAX_SPRITES) + { + return MAX_SPRITES; + } + gSprites[spriteId].pos2.x = x; + if (decor == DECOR_SILVER_SHIELD || decor == DECOR_GOLD_SHIELD) + { + gSprites[spriteId].pos2.y = y - 4; + } + else + { + gSprites[spriteId].pos2.y = y; + } + } + else + { + spriteId = AddDecorationIconObjectFromIconTable(tilesTag, paletteTag, decor); + if (spriteId == MAX_SPRITES) + { + return MAX_SPRITES; + } + gSprites[spriteId].pos2.x = x + 4; + gSprites[spriteId].pos2.y = y + 4; + } + gSprites[spriteId].oam.priority = priority; + return spriteId; +} + +void sub_81296EC(u8 idx) +{ + gUnknown_0203A17C.items[idx] = 0; + gUnknown_0203A17C.pos[idx] = 0; +} + +void sub_8129708(void) +{ + u16 i; + + gSpecialVar_0x8005 = 0; + gScriptResult = 0; + if (gSpecialVar_0x8004 == gUnknown_0203AAC4) + { + gScriptResult = 1; + } + else if (gDecorations[gUnknown_0203A17C.items[gUnknown_0203AA44[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT) + { + gSpecialVar_0x8005 = gUnknown_0203AA44[gSpecialVar_0x8004].flagId; + sub_81296EC(gUnknown_0203AA44[gSpecialVar_0x8004].idx); + for (i = 0; i < gMapHeader.events->mapObjectCount; i ++) + { + if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005) + { + gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId; + break; + } + } + } +} + +void sub_81297AC(void) +{ + u8 i; + + for (i = 0; i < gMapHeader.events->mapObjectCount; i ++) + { + if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004) + { + gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId; + break; + } + } +} + +void sub_81297F8(void) +{ + u8 i; + u8 y; + u8 x; + int posX; + int posY; + u8 perm; + + for (i = 0; i < gUnknown_0203AAC4; i ++) + { + perm = gDecorations[gUnknown_0203A17C.items[gUnknown_0203AA44[i].idx]].permission; + posX = gUnknown_0203A17C.pos[gUnknown_0203AA44[i].idx] >> 4; + posY = gUnknown_0203A17C.pos[gUnknown_0203AA44[i].idx] & 0x0F; + if (perm != DECORPERM_SOLID_MAT) + { + for (y = 0; y < gUnknown_0203AA44[i].height; y ++) + { + for (x = 0; x < gUnknown_0203AA44[i].width; x ++) + { + MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapData->map[posX + x + gMapHeader.mapData->width * (posY - y)] | 0x3000); + } + } + sub_81296EC(gUnknown_0203AA44[i].idx); + } + } +} + +void sub_81298EC(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + sub_81297F8(); + gTasks[taskId].data[2] = 1; + break; + case 1: + if (!gPaletteFade.active) { + DrawWholeMapView(); + ScriptContext1_SetupScript(gUnknown_08275D2E); + sub_8197434(0, 1); + gTasks[taskId].data[2] = 2; + } + break; + case 2: + ScriptContext2_Enable(); + sub_8127814(taskId); + pal_fill_black(); + gTasks[taskId].data[2] = 3; + break; + case 3: + if (sub_80ABDFC() == TRUE) + { + StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64); + if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE) + { + TV_PutSecretBaseVisitOnTheAir(); + } + } + break; + } +} + + +bool8 sub_81299AC(u8 taskId) +{ + u16 i; + + for (i = 0; i < gUnknown_0203A17C.size; i ++) + { + if (gUnknown_0203A17C.items[i] != DECOR_NONE) + { + return TRUE; + } + } + return FALSE; +} + +void SetUpPuttingAwayDecorationPlayerAvatar(void) +{ + player_get_direction_lower_nybble(); + gUnknown_0203AA38 = gSprites[gUnknown_03005DD0.unk4].data0; + sub_812A39C(); + gUnknown_03005DD0.unk4 = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0); + if (gSaveBlock2Ptr->playerGender == MALE) + { + gUnknown_0203AA39 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0); + } + else + { + gUnknown_0203AA39 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0); + } + gSprites[gUnknown_0203AA39].oam.priority = 1; + DestroySprite(&gSprites[gUnknown_0203AA38]); + gUnknown_0203AA38 = gUnknown_03005DD0.unk4; + gSprites[gUnknown_0203AA38].oam.priority = 1; +} + +void sub_8129ABC(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + switch (data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_8127ACC(taskId); + data[2] = 1; + data[6] = 1; + data[5] = 1; + } + break; + case 1: + SetUpPuttingAwayDecorationPlayerAvatar(); + pal_fill_black(); + data[2] = 2; + break; + case 2: + if (sub_80ABDFC() == TRUE) + { + data[12] = 1; + sub_8129B34(taskId); + } + break; + } +} + +void sub_8129B34(u8 taskId) +{ + sub_8197434(0, 1); + gSprites[gUnknown_0203AA38].data7 = 0; + gSprites[gUnknown_0203AA38].invisible = FALSE; + gSprites[gUnknown_0203AA38].callback = sub_812A36C; + gSprites[gUnknown_0203AA39].pos1.x = 0x88; + gSprites[gUnknown_0203AA39].pos1.y = 0x48; + gTasks[taskId].data[10] = 0; + gTasks[taskId].func = sub_8128E18; +} + +void sub_8129BCC(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_8128DE0(); + sub_8129C74(taskId); +} + +void sub_8129BF8(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_8128DE0(); + gSprites[gUnknown_0203AA38].invisible = FALSE; + gSprites[gUnknown_0203AA38].callback = SpriteCallbackDummy; + StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations); + DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1F0); +} + +void sub_8129C74(u8 taskId) +{ + s16 *data; + u8 behavior; + + sub_812A0E8(taskId); + if (gUnknown_0203AAC4 != 0) + { + StringExpandPlaceholders(gStringVar4, gText_ReturnDecorationToPC); + DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1A0); + } + else + { + data = gTasks[taskId].data; + behavior = MapGridGetMetatileBehaviorAt(data[0], data[1]); + if (MetatileBehavior_IsSecretBasePC(behavior) == TRUE || MetatileBehavior_IsMB_C5(behavior) == TRUE) + { + gSprites[gUnknown_0203AA38].invisible = FALSE; + gSprites[gUnknown_0203AA38].callback = SpriteCallbackDummy; + StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations); + DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1F0); + } + else + { + StringExpandPlaceholders(gStringVar4, gText_NoDecorationHere); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64); + } + } +} + +void sub_8129D64(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + sub_8129B34(taskId); + } +} + +void sub_8129D8C(u8 decor, struct UnkStruct_0203AA44 *data) +{ + if (gDecorations[decor].shape == DECORSHAPE_1x1) + { + data->width = 1; + data->height = 1; + } else if (gDecorations[decor].shape == DECORSHAPE_2x1) + { + data->width = 2; + data->height = 1; + } else if (gDecorations[decor].shape == DECORSHAPE_3x1) + { + data->width = 3; + data->height = 1; + } else if (gDecorations[decor].shape == DECORSHAPE_4x2) + { + data->width = 4; + data->height = 2; + } else if (gDecorations[decor].shape == DECORSHAPE_2x2) + { + data->width = 2; + data->height = 2; + } else if (gDecorations[decor].shape == DECORSHAPE_1x2) + { + data->width = 1; + data->height = 2; + } else if (gDecorations[decor].shape == DECORSHAPE_1x3) + { + data->width = 1; + data->height = 3; + } else if (gDecorations[decor].shape == DECORSHAPE_2x4) + { + data->width = 2; + data->height = 4; + } else if (gDecorations[decor].shape == DECORSHAPE_3x3) + { + data->width = 3; + data->height = 3; + } else if (gDecorations[decor].shape == DECORSHAPE_3x2) + { + data->width = 3; + data->height = 2; + } +} + +void sub_8129E0C(u8 x, u8 y) +{ + gSprites[gUnknown_0203AA38].invisible = TRUE; + gSprites[gUnknown_0203AA38].callback = SpriteCallbackDummy; + gSprites[gUnknown_0203AA39].pos1.x = (x << 4) + 0x88; + gSprites[gUnknown_0203AA39].pos1.y = (y << 4) + 0x48; +} + +bool8 sub_8129E74(u8 taskId, u8 idx, struct UnkStruct_0203AA44 *data) +{ + u8 x; + u8 y; + u8 xOff; + u8 yOff; + u8 ht; + + x = gTasks[taskId].data[0] - 7; + y = gTasks[taskId].data[1] - 7; + xOff = gUnknown_0203A17C.pos[idx] >> 4; + yOff = gUnknown_0203A17C.pos[idx] & 0x0F; + ht = data->height; + if (gUnknown_0203A17C.items[idx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28C) + { + ht --; + } + if (x >= xOff && x < xOff + data->width && y > yOff - ht && y <= yOff) + { + sub_8129E0C(data->width - (x - xOff + 1), yOff - y); + return TRUE; + } + return FALSE; +} + +void sub_8129F20(void) +{ + u8 xOff; + u8 yOff; + u16 i; + + xOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[gUnknown_0203AAC4].idx] >> 4; + yOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[gUnknown_0203AAC4].idx] & 0x0F; + for (i = 0; i < 0x40; i ++) + { + if (gSaveBlock1Ptr->mapObjectTemplates[i].x == xOff && gSaveBlock1Ptr->mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->mapObjectTemplates[i].flagId)) + { + gUnknown_0203AA44[gUnknown_0203AAC4].flagId = gSaveBlock1Ptr->mapObjectTemplates[i].flagId; + break; + } + } +} + +bool8 sub_8129FC8(u8 taskId) +{ + u16 i; + + for (i = 0; i < gUnknown_0203A17C.size; i ++) + { + if (gUnknown_0203A17C.items[i] != 0) + { + if (gDecorations[gUnknown_0203A17C.items[i]].permission == DECORPERM_SOLID_MAT) + { + sub_8129D8C(gUnknown_0203A17C.items[i], gUnknown_0203AA44); + if (sub_8129E74(taskId, i, gUnknown_0203AA44) == TRUE) + { + gUnknown_0203AA44->idx = i; + sub_8129F20(); + gUnknown_0203AAC4 = 1; + return TRUE; + } + } + } + } + return FALSE; +} + +void sub_812A040(u8 left, u8 top, u8 right, u8 bottom) +{ + u8 i; + u8 xOff; + u8 yOff; + u8 decorIdx; + + for (i = 0; i < gUnknown_0203A17C.size; i ++) + { + decorIdx = gUnknown_0203A17C.items[i]; + xOff = gUnknown_0203A17C.pos[i] >> 4; + yOff = gUnknown_0203A17C.pos[i] & 0x0F; + if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff) + { + gUnknown_0203AA44[gUnknown_0203AAC4].idx = i; + sub_8129F20(); + gUnknown_0203AAC4++; + } + } +} + +#ifdef NONMATCHING +void sub_812A0E8(u8 taskId) +{ + u8 i; + u8 xOff; + u8 yOff; + u8 decor; + register u8 decor asm("r1"); + struct UnkStruct_0203AA44 *data; + + gUnknown_0203AAC4 = 0; + if (sub_8129FC8(taskId) != TRUE) + { + for (i = 0; i < gUnknown_0203A17C.size; i ++) + { + decor = gUnknown_0203A17C.items[i]; + if (decor != DECOR_NONE) + { + data = &gUnknown_0203AA44[0]; + sub_8129D8C(decor, data); + if (sub_8129E74(taskId, i, data) == TRUE) + { + data->idx = i; + gUnknown_0203AAC4 ++; + break; + } + } + } + if (gUnknown_0203AAC4 != 0) + { + xOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[0].idx] >> 4; + yOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[0].idx] & 0x0F; + sub_812A040(xOff, yOff - gUnknown_0203AA44[0].height + 1, xOff + gUnknown_0203AA44[0].width - 1, yOff); // Arithmetic register swap at the r2 argument: `add r2, r0, r2` instead of `add r2, r2, r0` + } + } +} +#else +__attribute__((naked)) void sub_812A0E8(u8 taskId) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r4, =gUnknown_0203AAC4\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r4]\n" + "\tadds r0, r6, 0\n" + "\tbl sub_8129FC8\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _0812A18C\n" + "\tmovs r5, 0\n" + "\tldr r0, =gUnknown_0203A17C\n" + "\tldrb r1, [r0, 0x8]\n" + "\tcmp r5, r1\n" + "\tbcs _0812A15A\n" + "\tadds r7, r4, 0\n" + "_0812A10E:\n" + "\tldr r0, [r0]\n" + "\tadds r0, r5\n" + "\tldrb r1, [r0]\n" + "\tcmp r1, 0\n" + "\tbeq _0812A14C\n" + "\tldr r4, =gUnknown_0203AA44\n" + "\tadds r0, r1, 0\n" + "\tadds r1, r4, 0\n" + "\tbl sub_8129D8C\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r5, 0\n" + "\tadds r2, r4, 0\n" + "\tbl sub_8129E74\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _0812A14C\n" + "\tstrb r5, [r4]\n" + "\tldrb r0, [r7]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r7]\n" + "\tb _0812A15A\n" + "\t.pool\n" + "_0812A14C:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tldr r0, =gUnknown_0203A17C\n" + "\tldrb r1, [r0, 0x8]\n" + "\tcmp r5, r1\n" + "\tbcc _0812A10E\n" + "_0812A15A:\n" + "\tldr r0, =gUnknown_0203AAC4\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0812A18C\n" + "\tldr r0, =gUnknown_0203A17C\n" + "\tldr r2, =gUnknown_0203AA44\n" + "\tldrb r1, [r2]\n" + "\tldr r0, [r0, 0x4]\n" + "\tadds r0, r1\n" + "\tldrb r1, [r0]\n" + "\tlsrs r0, r1, 4\n" + "\tmovs r3, 0xF\n" + "\tands r3, r1\n" + "\tldrb r1, [r2, 0x2]\n" + "\tsubs r1, r3, r1\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldrb r2, [r2, 0x1]\n" + "\tadds r2, r0\n" + "\tsubs r2, 0x1\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tbl sub_812A040\n" + "_0812A18C:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.pool"); +} +#endif + +void sub_812A1A0(u8 taskId) +{ + sub_8197930(); + sub_8121F68(taskId, &gUnknown_085A7348); +} + +void sub_812A1C0(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_81298EC; +} + +void sub_812A1F0(u8 taskId) +{ + sub_8197930(); + sub_8121F68(taskId, &gUnknown_085A7350); +} + +void sub_812A210(u8 taskId) +{ + sub_8197434(0, 0); + sub_812A22C(taskId); +} + +void sub_812A22C(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_812A25C; +} + +void sub_812A25C(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_8127B04(taskId); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + sub_812A3C8(); + gFieldCallback = sub_812A334; + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + break; + } +} + +void sub_812A2C4(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + switch (data[2]) + { + case 0: + sub_80E9578(); + data[2] ++; + break; + case 1: + ScriptContext1_SetupScript(gUnknown_08275D0C); + data[2] ++; + break; + case 2: + ScriptContext2_Enable(); + data[2] ++; + break; + case 3: + if (sub_80ABDFC() == TRUE) + { + gTasks[taskId].func = sub_8126B80; + } + break; + } +} + +void sub_812A334(void) +{ + u8 taskId; + + pal_fill_black(); + sub_81973C4(0, 1); + sub_8126ABC(); + taskId = CreateTask(sub_812A2C4, 8); + gTasks[taskId].data[2] = 0; +} + +void sub_812A36C(struct Sprite *sprite) +{ + sprite->data0 ++; + sprite->data0 &= 0x1F; + if (sprite->data0 > 15) + { + sprite->invisible = TRUE; + } + else + { + sprite->invisible = FALSE; + } +} + +void sub_812A39C(void) +{ + if (gSaveBlock2Ptr->playerGender == MALE) + { + LoadSpritePalette(&gUnknown_085A73D8); + } + else + { + LoadSpritePalette(&gUnknown_085A73E0); + } +} + +void sub_812A3C8(void) +{ + FreeSpritePaletteByTag(0x0008); +} + +void sub_812A3D4(u8 taskId) +{ + if (sub_81279C4() == TRUE) + { + StringCopy(gStringVar1, gDecorations[gUnknown_0203A14C[gUnknown_0203A172]].name); + StringExpandPlaceholders(gStringVar4, gText_DecorationWillBeDiscarded); + DisplayItemMessageOnField(taskId, gStringVar4, sub_812A458); + } + else + { + StringExpandPlaceholders(gStringVar4, gText_CantThrowAwayInUse); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); + } +} + +void sub_812A458(u8 taskId) +{ + sub_8197930(); + sub_8121F68(taskId, &gUnknown_085A741C); +} + +void sub_812A478(u8 taskId) +{ + gUnknown_0203A14C[gUnknown_0203A172] = DECOR_NONE; + gUnknown_0203A151 = CountDecorationCategoryN(gUnknown_0203A173); + CondenseDecorationCategoryN(gUnknown_0203A173); + sub_8127814(taskId); + StringExpandPlaceholders(gStringVar4, gText_DecorationThrownAway); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); +} diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c new file mode 100644 index 0000000000..03ab6c00c8 --- /dev/null +++ b/src/decoration_inventory.c @@ -0,0 +1,189 @@ + +// Includes +#include "global.h" +#include "decoration.h" +#include "decoration_inventory.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA struct DecorationInventory gDecorationInventories[8] = {}; + +// Static ROM declarations + +// .rodata + +// .text + +#define SET_DECOR_INV(i, ptr) {\ + gDecorationInventories[i].items = ptr;\ + gDecorationInventories[i].size = sizeof(ptr);\ +} + +void SetDecorationInventoriesPointers(void) +{ + SET_DECOR_INV(0, gSaveBlock1Ptr->decorDesk); + SET_DECOR_INV(1, gSaveBlock1Ptr->decorChair); + SET_DECOR_INV(2, gSaveBlock1Ptr->decorPlant); + SET_DECOR_INV(3, gSaveBlock1Ptr->decorOrnament); + SET_DECOR_INV(4, gSaveBlock1Ptr->decorMat); + SET_DECOR_INV(5, gSaveBlock1Ptr->decorPoster); + SET_DECOR_INV(6, gSaveBlock1Ptr->decorDoll); + SET_DECOR_INV(7, gSaveBlock1Ptr->decorCushion); + sub_8126968(); +} + +static void ClearDecorationInventory(u8 idx) +{ + u8 i; + + for (i = 0; i < gDecorationInventories[idx].size; i ++) + { + gDecorationInventories[idx].items[i] = DECOR_NONE; + } +} + +void ClearDecorationInventories(void) +{ + u8 idx; + + for (idx = 0; idx < 8; idx ++) + { + ClearDecorationInventory(idx); + } +} + +s8 GetFirstEmptyDecorSlot(u8 idx) +{ + s8 i; + + for (i = 0; i < (s8)gDecorationInventories[idx].size; i ++) + { + if (gDecorationInventories[idx].items[i] == DECOR_NONE) + { + return i; + } + } + return -1; +} + +bool8 CheckHasDecoration(u8 decor) +{ + u8 i; + u8 category; + + category = gDecorations[decor].category; + for (i = 0; i < gDecorationInventories[category].size; i ++) + { + if (gDecorationInventories[category].items[i] == decor) + { + return TRUE; + } + } + return FALSE; +} + +bool8 DecorationAdd(u8 decor) +{ + u8 category; + s8 idx; + + if (decor == DECOR_NONE) + { + return FALSE; + } + category = gDecorations[decor].category; + idx = GetFirstEmptyDecorSlot(category); + if (idx == -1) + { + return FALSE; + } + gDecorationInventories[category].items[idx] = decor; + return TRUE; +} + +bool8 DecorationCheckSpace(u8 decor) +{ + if (decor == DECOR_NONE) + { + return FALSE; + } + if (GetFirstEmptyDecorSlot(gDecorations[decor].category) == -1) + { + return FALSE; + } + return TRUE; +} + +s8 DecorationRemove(u8 decor) +{ + u8 i; + u8 idx; + + i = 0; + if (decor == DECOR_NONE) + { + return 0; + } + for (i = 0; i < gDecorationInventories[gDecorations[decor].category].size; i ++) + { + idx = gDecorations[decor].category; + if (gDecorationInventories[idx].items[i] == decor) + { + gDecorationInventories[idx].items[i] = DECOR_NONE; + CondenseDecorationCategoryN(idx); + return 1; + } + } + return 0; +} + +void CondenseDecorationCategoryN(u8 idx) +{ + u8 i; + u8 j; + u8 tmp; + + for (i = 0; i < gDecorationInventories[idx].size; i ++) + { + for (j = i + 1; j < gDecorationInventories[idx].size; j ++) + { + if (gDecorationInventories[idx].items[j] != DECOR_NONE && (gDecorationInventories[idx].items[i] == DECOR_NONE || gDecorationInventories[idx].items[i] > gDecorationInventories[idx].items[j])) + { + tmp = gDecorationInventories[idx].items[i]; + gDecorationInventories[idx].items[i] = gDecorationInventories[idx].items[j]; + gDecorationInventories[idx].items[j] = tmp; + } + } + } +} + +u8 CountDecorationCategoryN(u8 idx) +{ + u8 i; + u8 ct; + + ct = 0; + for (i = 0; i < gDecorationInventories[idx].size; i ++) + { + if (gDecorationInventories[idx].items[i] != DECOR_NONE) + { + ct ++; + } + } + return ct; +} + +u8 CountDecorations(void) +{ + u8 idx; + u8 ct; + + ct = 0; + for (idx = 0; idx < 8; idx ++) + { + ct += CountDecorationCategoryN(idx); + } + return ct; +} diff --git a/src/international_string_util.c b/src/international_string_util.c index c77b4f8ff4..81985d614b 100644 --- a/src/international_string_util.c +++ b/src/international_string_util.c @@ -28,13 +28,13 @@ s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 lett return 0; } -s32 GetMaxWidthInMenuTable(const u8 **str, s32 arg1) +s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1) { s32 i, var; for (var = 0, i = 0; i < arg1; i++) { - s32 stringWidth = GetStringWidth(1, str[i * 2], 0); + s32 stringWidth = GetStringWidth(1, str[i].text, 0); if (stringWidth > var) var = stringWidth; } @@ -42,13 +42,13 @@ s32 GetMaxWidthInMenuTable(const u8 **str, s32 arg1) return convert_pixel_width_to_tile_width(var); } -s32 sub_81DB3D8(const u8 **str, u8* arg1, s32 arg2) +s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2) { s32 i, var; for (var = 0, i = 0; i < arg2; i++) { - s32 stringWidth = GetStringWidth(1, str[arg1[i] * 2], 0); + s32 stringWidth = GetStringWidth(1, str[arg1[i]].text, 0); if (stringWidth > var) var = stringWidth; } diff --git a/src/start_menu.c b/src/start_menu.c index be30d0e53e..37331a922a 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -207,7 +207,7 @@ static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n) do { - if (sStartMenuItems[sCurrentStartMenuActions[_index]].func == StartMenu_PlayerName) + if (sStartMenuItems[sCurrentStartMenuActions[_index]].func.u8_void == StartMenu_PlayerName) { } diff --git a/src/tv.c b/src/tv.c index 7f64b46ac3..3c822b394f 100644 --- a/src/tv.c +++ b/src/tv.c @@ -2353,7 +2353,7 @@ void sub_80EDFB4(TVShow *show) show->secretBaseVisit.move = sTV_SecretBaseVisitMonsTemp[j].move; } -void sub_80EE104(void) +void TV_PutSecretBaseVisitOnTheAir(void) { TVShow *show; diff --git a/sym_ewram.txt b/sym_ewram.txt index a1be5c79ae..d2779079ed 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1119,68 +1119,10 @@ gUnknown_0203A144: @ 203A144 gUnknown_0203A148: @ 203A148 .space 0x4 -gUnknown_0203A14C: @ 203A14C - .space 0x4 + .include "src/decoration.o" + .align 2 -gUnknown_0203A150: @ 203A150 - .space 0x1 - -gUnknown_0203A151: @ 203A151 - .space 0x1 - -gUnknown_0203A152: @ 203A152 - .space 0x10 - -gUnknown_0203A162: @ 203A162 - .space 0xC - -gUnknown_0203A16E: @ 203A16E - .space 0x2 - -gUnknown_0203A170: @ 203A170 - .space 0x2 - -gUnknown_0203A172: @ 203A172 - .space 0x1 - -gUnknown_0203A173: @ 203A173 - .space 0x9 - -gUnknown_0203A17C: @ 203A17C - .space 0xC - -gUnknown_0203A188: @ 203A188 - .space 0x4 - -gUnknown_0203A18C: @ 203A18C - .space 0x4 - -gUnknown_0203A190: @ 203A190 - .space 0x8A4 - -gUnknown_0203AA34: @ 203AA34 - .space 0x2 - -gUnknown_0203AA36: @ 203AA36 - .space 0x2 - -gUnknown_0203AA38: @ 203AA38 - .space 0x1 - -gUnknown_0203AA39: @ 203AA39 - .space 0x1 - -gUnknown_0203AA3A: @ 203AA3A - .space 0x2 - -gUnknown_0203AA3C: @ 203AA3C - .space 0x8 - -gUnknown_0203AA44: @ 203AA44 - .space 0x80 - -gUnknown_0203AAC4: @ 203AAC4 - .space 0x4 +@ slot_machine gUnknown_0203AAC8: @ 203AAC8 .space 0x4 @@ -1408,9 +1350,7 @@ gUnknown_0203BC34: @ 203BC34 gUnknown_0203BC38: @ 203BC38 .space 0x8 -gDecorationInventories: @ 203BC40 - .space 0x40 - + .include "src/decoration_inventory.o" .include "src/roamer.o" gUnknown_0203BC88: @ 203BC88 From 9fc2c99d18c08043c0349a0d17ba71a8bfb8688b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 22 Oct 2017 19:05:32 -0400 Subject: [PATCH 177/182] Move these palettes to INCBINs --- graphics/decorations/unk_85a6bb0.pal | 19 +++++++++ graphics/decorations/unk_85a7308.pal | 19 +++++++++ graphics/decorations/unk_85a7328.pal | 19 +++++++++ src/decoration.c | 60 +++++++++++----------------- 4 files changed, 81 insertions(+), 36 deletions(-) create mode 100644 graphics/decorations/unk_85a6bb0.pal create mode 100644 graphics/decorations/unk_85a7308.pal create mode 100644 graphics/decorations/unk_85a7328.pal diff --git a/graphics/decorations/unk_85a6bb0.pal b/graphics/decorations/unk_85a6bb0.pal new file mode 100644 index 0000000000..4239a1f5e7 --- /dev/null +++ b/graphics/decorations/unk_85a6bb0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 205 164 +255 255 255 +98 98 98 +213 213 205 +230 230 230 +197 197 197 +0 0 0 +238 238 238 +197 197 197 +148 148 148 +255 0 0 +180 0 0 +255 197 197 +82 82 255 +49 49 180 +197 197 255 diff --git a/graphics/decorations/unk_85a7308.pal b/graphics/decorations/unk_85a7308.pal new file mode 100644 index 0000000000..e7717d74ea --- /dev/null +++ b/graphics/decorations/unk_85a7308.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 164 +255 213 180 +255 197 148 +222 148 115 +123 65 65 +57 74 123 +41 57 98 +24 41 82 +16 32 57 +222 230 238 +255 197 90 +189 156 90 +255 98 90 +197 65 65 +255 255 255 +0 0 0 diff --git a/graphics/decorations/unk_85a7328.pal b/graphics/decorations/unk_85a7328.pal new file mode 100644 index 0000000000..e106ce6930 --- /dev/null +++ b/graphics/decorations/unk_85a7328.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 164 +255 222 205 +222 164 148 +205 131 115 +123 90 82 +98 98 115 +41 57 65 +164 106 82 +74 49 57 +205 205 222 +255 197 90 +189 156 90 +255 98 90 +197 65 65 +255 255 255 +0 0 0 diff --git a/src/decoration.c b/src/decoration.c index b2f4125efd..11d44693b6 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -40,6 +40,9 @@ // Static type declarations +#define OVERWORLD_DECOR_PAL_TAG 0xbe5 +#define OVERWORLD_DECOR_BOX_PAL_TAG 0x008 + struct UnkStruct_0203A18C { struct ListMenuItem unk_000[41]; u8 unk_148[41][24]; @@ -219,12 +222,7 @@ const struct WindowTemplate gUnknown_085A6B90[4] = { { 0, 16, 13, 13, 6, 15, 0x0193 } }; -const u16 gUnknown_085A6BB0[] = { - 0x532e, 0x7fff, 0x318c, 0x675a, - 0x739c, 0x6318, 0x0000, 0x77bd, - 0x6318, 0x4a52, 0x001f, 0x0016, - 0x631f, 0x7d4a, 0x58c6, 0x7f18 -}; +const u16 gUnknown_085A6BB0[] = INCBIN_U16("graphics/decorations/unk_85a6bb0.gbapal"); const struct ListMenuTemplate gUnknown_085A6BD0 = { NULL, @@ -244,16 +242,16 @@ const struct { u8 x; u8 y; } gUnknown_085A7250[] = { - {0x00, 0x01, 0x78, 0x4e}, - {0x01, 0x02, 0x80, 0x4e}, - {0x01, 0x03, 0x90, 0x56}, - {0x01, 0x03, 0x90, 0x46}, - {0x00, 0x02, 0x80, 0x46}, - {0x02, 0x02, 0x78, 0x46}, - {0x02, 0x03, 0x80, 0x56}, - {0x02, 0x03, 0x80, 0x36}, - {0x00, 0x03, 0x90, 0x46}, - {0x01, 0x03, 0x90, 0x46} + {0, 1, 0x78, 0x4e}, + {1, 2, 0x80, 0x4e}, + {1, 3, 0x90, 0x56}, + {1, 3, 0x90, 0x46}, + {0, 2, 0x80, 0x46}, + {2, 2, 0x78, 0x46}, + {2, 3, 0x80, 0x56}, + {2, 3, 0x80, 0x36}, + {0, 3, 0x90, 0x46}, + {1, 3, 0x90, 0x46} }; const union AnimCmd gUnknown_085A7278[] = { @@ -271,7 +269,7 @@ const struct SpriteFrameImage gUnknown_085A7284 = { const struct SpriteTemplate gUnknown_085A728C = { 0xffff, - 0x0be5, + OVERWORLD_DECOR_PAL_TAG, &gUnknown_0203AA3C, gUnknown_085A7280, &gUnknown_085A7284, @@ -290,7 +288,7 @@ const struct SpriteTemplate gUnknown_085A72A4 = { }; const struct SpritePalette gUnknown_085A72BC = { - (const u16 *)&gUnknown_0203A190.palette, 0x0be5 + (const u16 *)&gUnknown_0203A190.palette, OVERWORLD_DECOR_PAL_TAG }; const struct YesNoFuncTable gUnknown_085A72C4 = { @@ -325,19 +323,9 @@ const u16 gUnknown_085A72F4[] = { 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x20 }; -const u16 Unknown_085A7308[] = { - 0x530e, 0x5b5f, 0x4b1f, 0x3a5b, - 0x210f, 0x3d27, 0x30e5, 0x28a3, - 0x1c82, 0x779b, 0x2f1f, 0x2e77, - 0x2d9f, 0x2118, 0x7fff, 0x0000 -}; +const u16 Unknown_085A7308[] = INCBIN_U16("graphics/decorations/unk_85a7308.gbapal"); -const u16 Unknown_085A7328[] = { - 0x530e, 0x677f, 0x4a9b, 0x3a19, - 0x296f, 0x398c, 0x20e5, 0x29b4, - 0x1cc9, 0x6f39, 0x2f1f, 0x2e77, - 0x2d9f, 0x2118, 0x7fff, 0x0000 -}; +const u16 Unknown_085A7328[] = INCBIN_U16("graphics/decorations/unk_85a7328.gbapal"); const struct YesNoFuncTable gUnknown_085A7348 = { sub_812A1C0, @@ -352,11 +340,11 @@ const struct YesNoFuncTable gUnknown_085A7350 = { const u8 Unknown_085A7358[] = INCBIN_U8("graphics/misc/decoration_unk_85a7358.4bpp"); const struct SpritePalette gUnknown_085A73D8 = { - Unknown_085A7308, 8 + Unknown_085A7308, OVERWORLD_DECOR_BOX_PAL_TAG }; const struct SpritePalette gUnknown_085A73E0 = { - Unknown_085A7328, 8 + Unknown_085A7328, OVERWORLD_DECOR_BOX_PAL_TAG }; const struct OamData Unknown_085A73E8 = { @@ -378,7 +366,7 @@ const struct SpriteFrameImage Unknown_085A73FC = { const struct SpriteTemplate gUnknown_085A7404 = { 0xFFFF, - 8, + OVERWORLD_DECOR_BOX_PAL_TAG, &Unknown_085A73E8, Unknown_085A73F8, &Unknown_085A73FC, @@ -1692,7 +1680,7 @@ void c1_overworld_prev_quest(u8 taskId) break; case 1: sub_812A3C8(); - FreeSpritePaletteByTag(0xbe5); + FreeSpritePaletteByTag(OVERWORLD_DECOR_PAL_TAG); gFieldCallback = sub_8128CD4; SetMainCallback2(c2_exit_to_overworld_2_switch); DestroyTask(taskId); @@ -2005,7 +1993,7 @@ u8 gpu_pal_decompress_alloc_tag_and_upload(struct UnkStruct_0203A190 *data, u8 d { return AddPseudoFieldObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); } - FreeSpritePaletteByTag(0xBE5); + FreeSpritePaletteByTag(OVERWORLD_DECOR_PAL_TAG); sub_81291E8(data); sub_812925C(data->decoration->shape); sub_81291A4(data); @@ -2758,7 +2746,7 @@ void sub_812A39C(void) void sub_812A3C8(void) { - FreeSpritePaletteByTag(0x0008); + FreeSpritePaletteByTag(OVERWORLD_DECOR_BOX_PAL_TAG); } void sub_812A3D4(u8 taskId) From 0dd3db7061165f990f386546304d4d90331d6cd0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 22 Oct 2017 20:13:31 -0400 Subject: [PATCH 178/182] Rename some functions and all RAM objects in decoration.c --- asm/trader.s | 6 +- data/strings.s | 28 +- include/decoration.h | 4 +- include/strings.h | 28 +- src/decoration.c | 632 +++++++++++++++++++++---------------------- 5 files changed, 349 insertions(+), 349 deletions(-) diff --git a/asm/trader.s b/asm/trader.s index 8e4bce3849..8e0b17905c 100644 --- a/asm/trader.s +++ b/asm/trader.s @@ -433,15 +433,15 @@ sub_8133DA0: @ 8133DA0 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - bl sub_81279C4 + bl IsSelectedDecorInThePC lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08133DFC ldr r5, =gSpecialVar_0x8006 - ldr r0, =gUnknown_0203A172 + ldr r0, =gCurDecorationIndex ldrb r1, [r0] - ldr r0, =gUnknown_0203A14C + ldr r0, =gCurDecorInventoryItems ldr r0, [r0] adds r0, r1 ldrb r0, [r0] diff --git a/data/strings.s b/data/strings.s index 90ccad90fd..2b88c6d035 100644 --- a/data/strings.s +++ b/data/strings.s @@ -1517,52 +1517,52 @@ gUnknown_085EA79D:: @ 85EA79D gUnknown_085EA7A9:: @ 85EA7A9 .string "{STR_VAR_3}{STR_VAR_1}/{STR_VAR_2}$" -gUnknown_085EA7B1:: @ 85EA7B1 +gText_Decorate:: @ 85EA7B1 .string "DECORATE$" -gUnknown_085EA7BA:: @ 85EA7BA +gText_PutAway:: @ 85EA7BA .string "PUT AWAY$" -gUnknown_085EA7C3:: @ 85EA7C3 +gText_Toss2:: @ 85EA7C3 .string "TOSS$" gText_Color161Shadow161:: @ 85EA7C8 .string "{COLOR 161}{SHADOW 161}$" -gUnknown_085EA7CF:: @ 85EA7CF +gText_PutOutSelectedDecorItem:: @ 85EA7CF .string "Put out the selected decoration item.$" -gUnknown_085EA7F5:: @ 85EA7F5 +gText_StoreChosenDecorInPC:: @ 85EA7F5 .string "Store the chosen decoration in the PC.$" -gUnknown_085EA81C:: @ 85EA81C +gText_ThrowAwayUnwantedDecors:: @ 85EA81C .string "Throw away unwanted decorations.$" gText_NoDecorations:: @ 85EA83D .string "There are no decorations.{PAUSE_UNTIL_PRESS}$" -gUnknown_085EA859:: @ 85EA859 +gText_Desk:: @ 85EA859 .string "DESK$" -gUnknown_085EA85E:: @ 85EA85E +gText_Chair:: @ 85EA85E .string "CHAIR$" -gUnknown_085EA864:: @ 85EA864 +gText_Plant:: @ 85EA864 .string "PLANT$" -gUnknown_085EA86A:: @ 85EA86A +gText_Ornament:: @ 85EA86A .string "ORNAMENT$" -gUnknown_085EA873:: @ 85EA873 +gText_Mat:: @ 85EA873 .string "MAT$" -gUnknown_085EA877:: @ 85EA877 +gText_Poster:: @ 85EA877 .string "POSTER$" -gUnknown_085EA87E:: @ 85EA87E +gText_Doll:: @ 85EA87E .string "DOLL$" -gUnknown_085EA883:: @ 85EA883 +gText_Cushion:: @ 85EA883 .string "CUSHION$" gText_Gold:: @ 85EA88B diff --git a/include/decoration.h b/include/decoration.h index c426a479a8..adefb2fd12 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -187,8 +187,8 @@ struct DecorPCPointers }; extern const struct Decoration gDecorations[]; -extern EWRAM_DATA u8 *gUnknown_0203A14C; -extern EWRAM_DATA u8 gUnknown_0203A172; +extern EWRAM_DATA u8 *gCurDecorInventoryItems; +extern EWRAM_DATA u8 gCurDecorationIndex; void sub_8126968(void); diff --git a/include/strings.h b/include/strings.h index 33c8984d22..191b1809a3 100644 --- a/include/strings.h +++ b/include/strings.h @@ -56,19 +56,19 @@ extern const u8 gText_NoDecorationHere[]; extern const u8 gText_DecorationWillBeDiscarded[]; extern const u8 gText_CantThrowAwayInUse[]; extern const u8 gText_DecorationThrownAway[]; -extern const u8 gUnknown_085EA859[]; -extern const u8 gUnknown_085EA85E[]; -extern const u8 gUnknown_085EA864[]; -extern const u8 gUnknown_085EA86A[]; -extern const u8 gUnknown_085EA873[]; -extern const u8 gUnknown_085EA877[]; -extern const u8 gUnknown_085EA7CF[]; -extern const u8 gUnknown_085EA7F5[]; -extern const u8 gUnknown_085EA81C[]; -extern const u8 gUnknown_085EA87E[]; -extern const u8 gUnknown_085EA883[]; -extern const u8 gUnknown_085EA7B1[]; -extern const u8 gUnknown_085EA7BA[]; -extern const u8 gUnknown_085EA7C3[]; +extern const u8 gText_Desk[]; +extern const u8 gText_Chair[]; +extern const u8 gText_Plant[]; +extern const u8 gText_Ornament[]; +extern const u8 gText_Mat[]; +extern const u8 gText_Poster[]; +extern const u8 gText_PutOutSelectedDecorItem[]; +extern const u8 gText_StoreChosenDecorInPC[]; +extern const u8 gText_ThrowAwayUnwantedDecors[]; +extern const u8 gText_Doll[]; +extern const u8 gText_Cushion[]; +extern const u8 gText_Decorate[]; +extern const u8 gText_PutAway[]; +extern const u8 gText_Toss2[]; #endif //GUARD_STRINGS_H diff --git a/src/decoration.c b/src/decoration.c index 11d44693b6..0179d36a16 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -40,25 +40,25 @@ // Static type declarations -#define OVERWORLD_DECOR_PAL_TAG 0xbe5 -#define OVERWORLD_DECOR_BOX_PAL_TAG 0x008 +#define OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG 0xbe5 +#define OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG 0x008 -struct UnkStruct_0203A18C { - struct ListMenuItem unk_000[41]; - u8 unk_148[41][24]; +struct DecorPCBuffer { + struct ListMenuItem items[41]; + u8 names[41][24]; u8 unk_520; u8 unk_521; u8 unk_522; }; -struct UnkStruct_0203A190 { +struct PlaceDecorationGraphicsDataBuffer { /*0x000; 0x0203a190*/ const struct Decoration *decoration; /*0x004; 0x0203a194*/ u16 tiles[0x40]; /*0x084; 0x0203a214*/ u8 image[0x800]; /*0x884; 0x0203aa14*/ u16 palette[16]; }; -struct UnkStruct_0203AA44 { +struct DecorRearrangementDataBuffer { u8 idx; u8 width; u8 height; @@ -67,39 +67,39 @@ struct UnkStruct_0203AA44 { // Static RAM declarations -EWRAM_DATA u8 *gUnknown_0203A14C = NULL; -EWRAM_DATA u8 gUnknown_0203A150 = 0; -EWRAM_DATA u8 gUnknown_0203A151 = 0; -EWRAM_DATA u8 gUnknown_0203A152[16] = {}; -EWRAM_DATA u8 gUnknown_0203A162[12] = {}; -EWRAM_DATA u16 gUnknown_0203A16E = 0; -EWRAM_DATA u16 gUnknown_0203A170 = 0; -EWRAM_DATA u8 gUnknown_0203A172 = 0; -EWRAM_DATA u8 gUnknown_0203A173 = 0; +EWRAM_DATA u8 *gCurDecorInventoryItems = NULL; +EWRAM_DATA u8 sSecretBasePCMenuCursorPos = 0; +EWRAM_DATA u8 sCurDecorCatCount = 0; +EWRAM_DATA u8 sSecretBaseItemsIndicesBuffer[16] = {}; +EWRAM_DATA u8 sPlayerRoomItemsIndicesBuffer[12] = {}; +EWRAM_DATA u16 sSecretBasePCSelectDecorLineNo = 0; +EWRAM_DATA u16 sSecretBasePCSelectDecorPageNo = 0; +EWRAM_DATA u8 gCurDecorationIndex = 0; +EWRAM_DATA u8 sCurDecorationCategory = DECORCAT_DESK; EWRAM_DATA u32 filler_0203a174[2] = {}; EWRAM_DATA struct DecorPCPointers gUnknown_0203A17C = {}; -EWRAM_DATA u8 gUnknown_0203A188[4] = {}; -EWRAM_DATA struct UnkStruct_0203A18C *gUnknown_0203A18C = NULL; -EWRAM_DATA struct UnkStruct_0203A190 gUnknown_0203A190 = {}; -EWRAM_DATA u16 gUnknown_0203AA34 = 0; -EWRAM_DATA u16 gUnknown_0203AA36 = 0; -EWRAM_DATA u8 gUnknown_0203AA38 = 0; -EWRAM_DATA u8 gUnknown_0203AA39 = 0; -EWRAM_DATA u8 gUnknown_0203AA3A = 0; -EWRAM_DATA struct OamData gUnknown_0203AA3C = {}; -EWRAM_DATA struct UnkStruct_0203AA44 gUnknown_0203AA44[16] = {}; -EWRAM_DATA u8 gUnknown_0203AAC4 = 0; +EWRAM_DATA u8 sDecorMenuWindowIndices[4] = {}; +EWRAM_DATA struct DecorPCBuffer *sDecorPCBuffer = NULL; +EWRAM_DATA struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {}; +EWRAM_DATA u16 sCurDecorMapX = 0; +EWRAM_DATA u16 sCurDecorMapY = 0; +EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx1 = 0; +EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx2 = 0; +EWRAM_DATA u8 sDecorationLastDirectionMoved = 0; +EWRAM_DATA struct OamData sDecorSelectorOam = {}; +EWRAM_DATA struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {}; +EWRAM_DATA u8 sCurDecorSelectedInRearrangement = 0; // Static ROM declarations void sub_8126B80(u8 taskId); void sub_8126C08(void); -void sub_8126C48(u8 taskId); -void sub_8126CA4(u8 taskId); -void sub_8126D10(u8 taskId); +void SecretBasePC_Decorate(u8 taskId); +void SecretBasePC_PutAway(u8 taskId); +void SecretBasePC_Toss(u8 taskId); void sub_8126DA4(u8 taskId); -void sub_8126D6C(u8 taskId); -void sub_8126DCC(u8 taskId); +void SecretBasePC_Cancel(u8 taskId); +void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId); void sub_8126DFC(u8 taskId); void sub_8126E8C(u8 taskId); void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed); @@ -119,15 +119,15 @@ void sub_8127744(u32 a0); void sub_81277A8(void); bool8 sub_81277BC(u8 idx); bool8 sub_81277E8(u8 idx); -void sub_81279B4(u8 taskId); +void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId); void sub_812759C(u8 taskId); void sub_8127718(u8 decorCat); void sub_8127A30(u8 taskId); void sub_8127A8C(u8 taskId); void sub_8127F68(u8 taskId); void sub_8128060(u8 taskId); -void ConfigureCameraObjectForPlacingDecoration(struct UnkStruct_0203A190 *data, u8 decor); -void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_0203A190 *data); +void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor); +void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data); void sub_812826C(u8 taskId); void sub_81283BC(u8 taskId); void sub_8128414(u8 taskId); @@ -145,7 +145,7 @@ void sub_8128FD8(u8 taskId); void sub_8129020(u8 taskId); void sub_81292D0(struct Sprite *sprite); void sub_81292E8(struct Sprite *sprite); -u8 gpu_pal_decompress_alloc_tag_and_upload(struct UnkStruct_0203A190 *data, u8 decor); +u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor); const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode); bool8 sub_81299AC(u8 taskId); void sub_8129ABC(u8 taskId); @@ -175,37 +175,37 @@ void sub_812A478(u8 taskId); #include "data/decoration/description.h" #include "data/decoration/header.h" -const u8 *const gUnknown_085A6B28[] = { - gUnknown_085EA859, - gUnknown_085EA85E, - gUnknown_085EA864, - gUnknown_085EA86A, - gUnknown_085EA873, - gUnknown_085EA877, - gUnknown_085EA87E, - gUnknown_085EA883 +const u8 *const sDecorCatNames[] = { + gText_Desk, + gText_Chair, + gText_Plant, + gText_Ornament, + gText_Mat, + gText_Poster, + gText_Doll, + gText_Cushion }; -const struct MenuAction gUnknown_085A6B48[] = { +const struct MenuAction sSecretBasePCMenuActions[] = { { - gUnknown_085EA7B1, {.void_u8=sub_8126C48} + gText_Decorate, {.void_u8=SecretBasePC_Decorate} }, { - gUnknown_085EA7BA, {.void_u8=sub_8126CA4} + gText_PutAway, {.void_u8=SecretBasePC_PutAway} }, { - gUnknown_085EA7C3, {.void_u8=sub_8126D10} + gText_Toss2, {.void_u8=SecretBasePC_Toss} }, { - gText_Cancel, {.void_u8=sub_8126D6C} + gText_Cancel, {.void_u8=SecretBasePC_Cancel} } }; -const u8 *const gUnknown_085A6B68[] = { - gUnknown_085EA7CF, - gUnknown_085EA7F5, - gUnknown_085EA81C, +const u8 *const sSecretBasePCMenuItemDescriptions[] = { + gText_PutOutSelectedDecorItem, + gText_StoreChosenDecorInPC, + gText_ThrowAwayUnwantedDecors, gText_GoBackPrevMenu }; -void (*const gUnknown_085A6B78[][2])(u8 taskId) = { +void (*const SecretBasePC_SelectedDecorActions[][2])(u8 taskId) = { { sub_8127F68, sub_8127A8C }, { @@ -259,36 +259,36 @@ const union AnimCmd gUnknown_085A7278[] = { ANIMCMD_END }; -const union AnimCmd *const gUnknown_085A7280[] = { +const union AnimCmd *const sDecorSelectorAnims[] = { gUnknown_085A7278 }; -const struct SpriteFrameImage gUnknown_085A7284 = { - (const u8 *)&gUnknown_0203A190.image, 0x800 +const struct SpriteFrameImage sDecorSelectorSpriteFrameImages = { + (const u8 *)&sPlaceDecorationGraphicsDataBuffer.image, 0x800 }; -const struct SpriteTemplate gUnknown_085A728C = { +const struct SpriteTemplate sDecorSelectorSpriteTemplate = { 0xffff, - OVERWORLD_DECOR_PAL_TAG, - &gUnknown_0203AA3C, - gUnknown_085A7280, - &gUnknown_085A7284, + OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG, + &sDecorSelectorOam, + sDecorSelectorAnims, + &sDecorSelectorSpriteFrameImages, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_085A72A4 = { +const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate = { 0x0000, 0x0000, - &gUnknown_0203AA3C, - gUnknown_085A7280, + &sDecorSelectorOam, + sDecorSelectorAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; const struct SpritePalette gUnknown_085A72BC = { - (const u16 *)&gUnknown_0203A190.palette, OVERWORLD_DECOR_PAL_TAG + (const u16 *)&sPlaceDecorationGraphicsDataBuffer.palette, OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG }; const struct YesNoFuncTable gUnknown_085A72C4 = { @@ -340,11 +340,11 @@ const struct YesNoFuncTable gUnknown_085A7350 = { const u8 Unknown_085A7358[] = INCBIN_U8("graphics/misc/decoration_unk_85a7358.4bpp"); const struct SpritePalette gUnknown_085A73D8 = { - Unknown_085A7308, OVERWORLD_DECOR_BOX_PAL_TAG + Unknown_085A7308, OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG }; const struct SpritePalette gUnknown_085A73E0 = { - Unknown_085A7328, OVERWORLD_DECOR_BOX_PAL_TAG + Unknown_085A7328, OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG }; const struct OamData Unknown_085A73E8 = { @@ -366,7 +366,7 @@ const struct SpriteFrameImage Unknown_085A73FC = { const struct SpriteTemplate gUnknown_085A7404 = { 0xFFFF, - OVERWORLD_DECOR_BOX_PAL_TAG, + OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG, &Unknown_085A73E8, Unknown_085A73F8, &Unknown_085A73FC, @@ -383,9 +383,9 @@ const struct YesNoFuncTable gUnknown_085A741C = { void sub_8126968(void) { - if (gUnknown_0203A173 < 8) + if (sCurDecorationCategory < 8) { - gUnknown_0203A14C = gDecorationInventories[gUnknown_0203A173].items; + gCurDecorInventoryItems = gDecorationInventories[sCurDecorationCategory].items; } if (gUnknown_0203A17C.isPlayerRoom == FALSE) { @@ -404,11 +404,11 @@ u8 sub_81269D4(u8 idx) u8 *winidx; struct WindowTemplate template; - winidx = &gUnknown_0203A188[idx]; + winidx = &sDecorMenuWindowIndices[idx]; if (idx == 0) { template = gUnknown_085A6B90[0]; - template.width = GetMaxWidthInMenuTable(gUnknown_085A6B48, 4); + template.width = GetMaxWidthInMenuTable(sSecretBasePCMenuActions, 4); if (template.width > 18) { template.width = 18; @@ -426,9 +426,9 @@ u8 sub_81269D4(u8 idx) void sub_8126A58(u8 idx) { - sub_8198070(gUnknown_0203A188[idx], FALSE); - ClearWindowTilemap(gUnknown_0203A188[idx]); - RemoveWindow(gUnknown_0203A188[idx]); + sub_8198070(sDecorMenuWindowIndices[idx], FALSE); + ClearWindowTilemap(sDecorMenuWindowIndices[idx]); + RemoveWindow(sDecorMenuWindowIndices[idx]); schedule_bg_copy_tilemap_to_vram(0); } @@ -437,13 +437,13 @@ void sub_8126A88(void) u8 idx; idx = sub_81269D4(0); - PrintMenuTable(idx, 4, gUnknown_085A6B48); - InitMenuInUpperLeftCornerPlaySoundWhenAPressed(idx, 4, gUnknown_0203A150); + PrintMenuTable(idx, 4, sSecretBasePCMenuActions); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(idx, 4, sSecretBasePCMenuCursorPos); } void sub_8126ABC(void) { - gUnknown_0203A150 = 0; + sSecretBasePCMenuCursorPos = 0; ScriptContext2_Enable(); sub_8126A88(); sub_8126C08(); @@ -480,18 +480,18 @@ void sub_8126B80(u8 taskId) { default: PlaySE(SE_SELECT); - gUnknown_085A6B48[gUnknown_0203A150].func.void_u8(taskId); + sSecretBasePCMenuActions[sSecretBasePCMenuCursorPos].func.void_u8(taskId); break; case -2: - gUnknown_0203A150 = GetMenuCursorPos(); - if ((s8)menuPos != gUnknown_0203A150) + sSecretBasePCMenuCursorPos = GetMenuCursorPos(); + if ((s8)menuPos != sSecretBasePCMenuCursorPos) { sub_8126C08(); } break; case -1: PlaySE(SE_SELECT); - sub_8126D6C(taskId); + SecretBasePC_Cancel(taskId); break; } } @@ -500,10 +500,10 @@ void sub_8126B80(u8 taskId) void sub_8126C08(void) { FillWindowPixelBuffer(0, 0x11); - AddTextPrinterParametrized(0, 1, gUnknown_085A6B68[gUnknown_0203A150], 0, 0, 2, 1, 3); + AddTextPrinterParametrized(0, 1, sSecretBasePCMenuItemDescriptions[sSecretBasePCMenuCursorPos], 0, 0, 2, 1, 3); } -void sub_8126C48(u8 taskId) +void SecretBasePC_Decorate(u8 taskId) { if (CountDecorations() == 0) { @@ -513,12 +513,12 @@ void sub_8126C48(u8 taskId) else { gTasks[taskId].data[11] = 0; - gUnknown_0203A173 = DECORCAT_DESK; - sub_8126DCC(taskId); + sCurDecorationCategory = DECORCAT_DESK; + SecretBasePC_PrepMenuForSelectingStoredDecors(taskId); } } -void sub_8126CA4(u8 taskId) +void SecretBasePC_PutAway(u8 taskId) { if (!sub_81299AC(taskId)) { @@ -535,7 +535,7 @@ void sub_8126CA4(u8 taskId) } } -void sub_8126D10(u8 taskId) +void SecretBasePC_Toss(u8 taskId) { if (CountDecorations() == 0) { @@ -545,12 +545,12 @@ void sub_8126D10(u8 taskId) else { gTasks[taskId].data[11] = 1; - gUnknown_0203A173 = DECORCAT_DESK; - sub_8126DCC(taskId); + sCurDecorationCategory = DECORCAT_DESK; + SecretBasePC_PrepMenuForSelectingStoredDecors(taskId); } } -void sub_8126D6C(u8 taskId) +void SecretBasePC_Cancel(u8 taskId) { sub_8126A58(0); if (!gUnknown_0203A17C.isPlayerRoom) @@ -570,7 +570,7 @@ void sub_8126DA4(u8 taskId) gTasks[taskId].func = sub_8126B80; } -void sub_8126DCC(u8 taskId) +void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId) { LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20); sub_8197434(0, 0); @@ -584,15 +584,15 @@ void sub_8126DFC(u8 taskId) winIdx = sub_81269D4(1); sub_8126E8C(taskId); - InitMenuInUpperLeftCornerPlaySoundWhenAPressed(winIdx, 9, gUnknown_0203A173); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(winIdx, 9, sCurDecorationCategory); gTasks[taskId].func = sub_8127088; } void sub_8126E44(u8 taskId) { - FillWindowPixelBuffer(gUnknown_0203A188[1], 0x11); + FillWindowPixelBuffer(sDecorMenuWindowIndices[1], 0x11); sub_8126E8C(taskId); - InitMenuInUpperLeftCornerPlaySoundWhenAPressed(gUnknown_0203A188[1], 9, gUnknown_0203A173); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIndices[1], 9, sCurDecorationCategory); gTasks[taskId].func = sub_8127088; } @@ -605,7 +605,7 @@ void sub_8126E8C(u8 taskId) bool8 fl; data = gTasks[taskId].data; - r5 = gUnknown_0203A188[1]; + r5 = sDecorMenuWindowIndices[1]; fl = gUnknown_0203A17C.isPlayerRoom; r8 = FALSE; if (fl == TRUE && data[11] == 0) @@ -636,7 +636,7 @@ void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed) y ++; sub_8127058(gStringVar4, flag); strbuf = StringLength(gStringVar4) + gStringVar4; - StringCopy(strbuf, gUnknown_085A6B28[decorCat]); + StringCopy(strbuf, sDecorCatNames[decorCat]); PrintTextOnWindow(winid, 1, gStringVar4, x, y, speed, NULL); strbuf = ConvertIntToDecimalStringN(strbuf, CountDecorationCategoryN(decorCat), STR_CONV_MODE_RIGHT_ALIGN, 2); *strbuf++ = CHAR_SLASH; @@ -678,7 +678,7 @@ void sub_8127088(u8 taskId) break; default: PlaySE(SE_SELECT); - gUnknown_0203A173 = input; + sCurDecorationCategory = input; sub_81270E8(taskId); break; } @@ -687,14 +687,14 @@ void sub_8127088(u8 taskId) void sub_81270E8(u8 taskId) { - gUnknown_0203A151 = CountDecorationCategoryN(gUnknown_0203A173); - if (gUnknown_0203A151 != 0) + sCurDecorCatCount = CountDecorationCategoryN(sCurDecorationCategory); + if (sCurDecorCatCount != 0) { - CondenseDecorationCategoryN(gUnknown_0203A173); - gUnknown_0203A14C = gDecorationInventories[gUnknown_0203A173].items; - sub_81279B4(taskId); - gUnknown_0203A170 = 0; - gUnknown_0203A16E = 0; + CondenseDecorationCategoryN(sCurDecorationCategory); + gCurDecorInventoryItems = gDecorationInventories[sCurDecorationCategory].items; + IdentifyOwnedDecorationsCurrentlyInUse(taskId); + sSecretBasePCSelectDecorPageNo = 0; + sSecretBasePCSelectDecorLineNo = 0; gTasks[taskId].func = sub_8127620; } else @@ -737,13 +737,13 @@ void sub_8127208(u8 taskId) LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20); sub_8197434(0, 0); gTasks[taskId].data[11] = 2; - gUnknown_0203A173 = DECORCAT_DESK; + sCurDecorationCategory = DECORCAT_DESK; sub_8126DFC(taskId); } void sub_8127250(u8 *dest, u8 decorCat) { - StringCopy(dest, gUnknown_085A6B28[decorCat]); + StringCopy(dest, sDecorCatNames[decorCat]); } void sub_8127268(u8 taskId) @@ -754,25 +754,25 @@ void sub_8127268(u8 taskId) void sub_8127284(void) { - gUnknown_0203A18C->unk_520 = gUnknown_0203A151 + 1; - if (gUnknown_0203A18C->unk_520 > 8) + sDecorPCBuffer->unk_520 = sCurDecorCatCount + 1; + if (sDecorPCBuffer->unk_520 > 8) { - gUnknown_0203A18C->unk_521 = 8; + sDecorPCBuffer->unk_521 = 8; } else { - gUnknown_0203A18C->unk_521 = gUnknown_0203A18C->unk_520; + sDecorPCBuffer->unk_521 = sDecorPCBuffer->unk_520; } } void sub_81272C8(void) { - sub_812225C(&gUnknown_0203A170, &gUnknown_0203A16E, gUnknown_0203A18C->unk_521, gUnknown_0203A18C->unk_520); + sub_812225C(&sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo, sDecorPCBuffer->unk_521, sDecorPCBuffer->unk_520); } void sub_81272F8(void) { - sub_8122298(&gUnknown_0203A170, &gUnknown_0203A16E, gUnknown_0203A18C->unk_521, gUnknown_0203A18C->unk_520, 8); + sub_8122298(&sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo, sDecorPCBuffer->unk_521, sDecorPCBuffer->unk_520, 8); } void sub_8127330(u8 taskId) @@ -781,7 +781,7 @@ void sub_8127330(u8 taskId) u16 i; data = gTasks[taskId].data; - if ((gUnknown_0203A173 < DECORCAT_DOLL || gUnknown_0203A173 > DECORCAT_CUSHION) && gUnknown_0203A17C.isPlayerRoom == TRUE && data[11] == 0) + if ((sCurDecorationCategory < DECORCAT_DOLL || sCurDecorationCategory > DECORCAT_CUSHION) && gUnknown_0203A17C.isPlayerRoom == TRUE && data[11] == 0) { sub_8127058(gStringVar1, TRUE); } @@ -789,20 +789,20 @@ void sub_8127330(u8 taskId) { sub_8127058(gStringVar1, FALSE); } - for (i = 0; i < gUnknown_0203A18C->unk_520 - 1; i ++) + for (i = 0; i < sDecorPCBuffer->unk_520 - 1; i ++) { - sub_8127454(gUnknown_0203A18C->unk_148[i], gUnknown_0203A14C[i]); - gUnknown_0203A18C->unk_000[i].unk_00 = gUnknown_0203A18C->unk_148[i]; - gUnknown_0203A18C->unk_000[i].unk_04 = i; + sub_8127454(sDecorPCBuffer->names[i], gCurDecorInventoryItems[i]); + sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i]; + sDecorPCBuffer->items[i].unk_04 = i; } - StringCopy(gUnknown_0203A18C->unk_148[i], gText_Cancel); - gUnknown_0203A18C->unk_000[i].unk_00 = gUnknown_0203A18C->unk_148[i]; - gUnknown_0203A18C->unk_000[i].unk_04 = -2; + StringCopy(sDecorPCBuffer->names[i], gText_Cancel); + sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i]; + sDecorPCBuffer->items[i].unk_04 = -2; gUnknown_03006310 = gUnknown_085A6BD0; - gUnknown_03006310.unk_10 = gUnknown_0203A188[1]; - gUnknown_03006310.unk_0c = gUnknown_0203A18C->unk_520; - gUnknown_03006310.unk_00 = gUnknown_0203A18C->unk_000; - gUnknown_03006310.unk_0e = gUnknown_0203A18C->unk_521; + gUnknown_03006310.unk_10 = sDecorMenuWindowIndices[1]; + gUnknown_03006310.unk_0c = sDecorPCBuffer->unk_520; + gUnknown_03006310.unk_00 = sDecorPCBuffer->items; + gUnknown_03006310.unk_0e = sDecorPCBuffer->unk_521; } void sub_8127454(u8 *dest, u16 decorId) @@ -837,18 +837,18 @@ void sub_81274A0(u8 a0, s32 a1, u8 a2) void sub_8127500(void) { - if (gUnknown_0203A18C->unk_522 == 0xFF) + if (sDecorPCBuffer->unk_522 == 0xFF) { - gUnknown_0203A18C->unk_522 = AddScrollIndicatorArrowPairParametrized(0x02, 0x3c, 0x0c, 0x94, gUnknown_0203A18C->unk_520 - gUnknown_0203A18C->unk_521, 0x6e, 0x6e, &gUnknown_0203A170); + sDecorPCBuffer->unk_522 = AddScrollIndicatorArrowPairParametrized(0x02, 0x3c, 0x0c, 0x94, sDecorPCBuffer->unk_520 - sDecorPCBuffer->unk_521, 0x6e, 0x6e, &sSecretBasePCSelectDecorPageNo); } } void sub_8127554(void) { - if (gUnknown_0203A18C->unk_522 != 0xFF) + if (sDecorPCBuffer->unk_522 != 0xFF) { - RemoveScrollIndicatorArrowPair(gUnknown_0203A18C->unk_522); - gUnknown_0203A18C->unk_522 = 0xFF; + RemoveScrollIndicatorArrowPair(sDecorPCBuffer->unk_522); + sDecorPCBuffer->unk_522 = 0xFF; } } @@ -864,14 +864,14 @@ void sub_812759C(u8 taskId) data = gTasks[taskId].data; sub_81269D4(3); - sub_8127718(gUnknown_0203A173); - gUnknown_0203A18C = calloc(1, sizeof(struct UnkStruct_0203A18C)); - gUnknown_0203A18C->unk_522 = 0xFF; + sub_8127718(sCurDecorationCategory); + sDecorPCBuffer = calloc(1, sizeof(struct DecorPCBuffer)); + sDecorPCBuffer->unk_522 = 0xFF; sub_8127284(); sub_81272C8(); sub_81272F8(); sub_8127330(taskId); - data[13] = ListMenuInit(&gUnknown_03006310, gUnknown_0203A170, gUnknown_0203A16E); + data[13] = ListMenuInit(&gUnknown_03006310, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo); sub_8127500(); } @@ -890,24 +890,24 @@ void sub_812764C(u8 taskId) if (!gPaletteFade.active) { input = ListMenuHandleInput(data[13]); - get_coro_args_x18_x1A(data[13], &gUnknown_0203A170, &gUnknown_0203A16E); + get_coro_args_x18_x1A(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo); switch (input) { case -1: break; case -2: PlaySE(SE_SELECT); - gUnknown_085A6B78[data[11]][1](taskId); + SecretBasePC_SelectedDecorActions[data[11]][1](taskId); break; default: PlaySE(SE_SELECT); - gUnknown_0203A172 = input; + gCurDecorationIndex = input; sub_8127554(); - sub_81AE6C8(data[13], &gUnknown_0203A170, &gUnknown_0203A16E); + sub_81AE6C8(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo); sub_8126A58(1); sub_81277A8(); - free(gUnknown_0203A18C); - gUnknown_085A6B78[data[11]][0](taskId); + free(sDecorPCBuffer); + SecretBasePC_SelectedDecorActions[data[11]][0](taskId); break; } } @@ -923,15 +923,15 @@ void sub_8127744(u32 a0) u8 winidx; const u8 *txt; - winidx = gUnknown_0203A188[3]; + winidx = sDecorMenuWindowIndices[3]; FillWindowPixelBuffer(winidx, 0x11); - if (a0 >= gUnknown_0203A151) + if (a0 >= sCurDecorCatCount) { txt = gText_GoBackPrevMenu; } else { - txt = gDecorations[gUnknown_0203A14C[a0]].description; + txt = gDecorations[gCurDecorInventoryItems[a0]].description; } PrintTextOnWindow(winidx, 1, txt, 0, 1, 0, 0); } @@ -948,7 +948,7 @@ bool8 sub_81277BC(u8 idx) for (i = 0; i < 16; i ++) { - if (gUnknown_0203A152[i] == idx) + if (sSecretBaseItemsIndicesBuffer[i] == idx) { return TRUE; } @@ -962,7 +962,7 @@ bool8 sub_81277E8(u8 idx) for (i = 0; i < 12; i ++) { - if (gUnknown_0203A162[i] == idx) + if (sPlayerRoomItemsIndicesBuffer[i] == idx) { return TRUE; } @@ -970,7 +970,7 @@ bool8 sub_81277E8(u8 idx) return FALSE; } -void sub_8127814(u8 taskId) +void IdentifyOwnedDecorationsCurrentlyInUseInternal(u8 taskId) { u16 i; u16 j; @@ -978,20 +978,20 @@ void sub_8127814(u8 taskId) u16 cnt; cnt = 0; - memset(gUnknown_0203A152, 0, 16); - memset(gUnknown_0203A162, 0, 12); + memset(sSecretBaseItemsIndicesBuffer, 0, 16); + memset(sPlayerRoomItemsIndicesBuffer, 0, 12); for (i = 0; i < 16; i ++) { if (gSaveBlock1Ptr->secretBases[0].decorations[i] != DECOR_NONE) { - for (j = 0; j < gDecorationInventories[gUnknown_0203A173].size; j ++) + for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j ++) { - if (gUnknown_0203A14C[j] == gSaveBlock1Ptr->secretBases[0].decorations[i]) + if (gCurDecorInventoryItems[j] == gSaveBlock1Ptr->secretBases[0].decorations[i]) { - for (k = 0; k < cnt && gUnknown_0203A152[k] != j + 1; k ++); + for (k = 0; k < cnt && sSecretBaseItemsIndicesBuffer[k] != j + 1; k ++); if (k == cnt) { - gUnknown_0203A152[cnt] = j + 1; + sSecretBaseItemsIndicesBuffer[cnt] = j + 1; cnt ++; break; } @@ -1004,14 +1004,14 @@ void sub_8127814(u8 taskId) { if (gSaveBlock1Ptr->playerRoomDecor[i] != DECOR_NONE) { - for (j = 0; j < gDecorationInventories[gUnknown_0203A173].size; j ++) + for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j ++) { - if (gUnknown_0203A14C[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE) + if (gCurDecorInventoryItems[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE) { - for (k = 0; k < cnt && gUnknown_0203A162[k] != j + 1; k ++); + for (k = 0; k < cnt && sPlayerRoomItemsIndicesBuffer[k] != j + 1; k ++); if (k == cnt) { - gUnknown_0203A162[cnt] = j + 1; + sPlayerRoomItemsIndicesBuffer[cnt] = j + 1; cnt ++; break; } @@ -1021,21 +1021,21 @@ void sub_8127814(u8 taskId) } } -void sub_81279B4(u8 taskId) +void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId) { - sub_8127814(taskId); + IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId); } -bool8 sub_81279C4(void) +bool8 IsSelectedDecorInThePC(void) { u16 i; for (i = 0; i < 16; i ++) { - if (gUnknown_0203A152[i] == gUnknown_0203A170 + gUnknown_0203A16E + 1) + if (sSecretBaseItemsIndicesBuffer[i] == sSecretBasePCSelectDecorPageNo + sSecretBasePCSelectDecorLineNo + 1) { return FALSE; } - if (i < 12 && gUnknown_0203A162[i] == gUnknown_0203A170 + gUnknown_0203A16E + 1) + if (i < 12 && sPlayerRoomItemsIndicesBuffer[i] == sSecretBasePCSelectDecorPageNo + sSecretBasePCSelectDecorLineNo + 1) { return FALSE; } @@ -1073,7 +1073,7 @@ void sub_8127A8C(u8 taskId) sub_8127554(); sub_81277A8(); sub_81AE6C8(data[13], NULL, NULL); - free(gUnknown_0203A18C); + free(sDecorPCBuffer); sub_8126E44(taskId); } @@ -1210,10 +1210,10 @@ void sub_8127E18(void) break; } } - VarSet(0x3F20 + gMapHeader.events->mapObjects[j].graphicsId, gUnknown_0203A190.decoration->tiles[0]); + VarSet(0x3F20 + gMapHeader.events->mapObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]); gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId; - gSpecialVar_0x8006 = gUnknown_0203AA34; - gSpecialVar_0x8007 = gUnknown_0203AA36; + gSpecialVar_0x8006 = sCurDecorMapX; + gSpecialVar_0x8007 = sCurDecorMapY; show_sprite(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); sub_808EBA8(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); sub_808F254(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); @@ -1238,12 +1238,12 @@ bool8 sub_8127F38(void) void sub_8127F68(u8 taskId) { - if (gUnknown_0203A17C.isPlayerRoom == TRUE && gUnknown_0203A173 != DECORCAT_DOLL && gUnknown_0203A173 != DECORCAT_CUSHION) + if (gUnknown_0203A17C.isPlayerRoom == TRUE && sCurDecorationCategory != DECORCAT_DOLL && sCurDecorationCategory != DECORCAT_CUSHION) { StringExpandPlaceholders(gStringVar4, gText_CantPlaceInRoom); DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); } - else if (sub_81279C4() == TRUE) + else if (IsSelectedDecorInThePC() == TRUE) { if (sub_8127F38() == TRUE) { @@ -1284,9 +1284,9 @@ void sub_8128060(u8 taskId) break; case 1: gPaletteFade.bufferTransferDisabled = TRUE; - ConfigureCameraObjectForPlacingDecoration(&gUnknown_0203A190, gUnknown_0203A14C[gUnknown_0203A172]); + ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorInventoryItems[gCurDecorationIndex]); sub_812826C(taskId); - SetUpPlacingDecorationPlayerAvatar(taskId, &gUnknown_0203A190); + SetUpPlacingDecorationPlayerAvatar(taskId, &sPlaceDecorationGraphicsDataBuffer); pal_fill_black(); gPaletteFade.bufferTransferDisabled = FALSE; gTasks[taskId].data[2] = 2; @@ -1301,9 +1301,9 @@ void sub_8128060(u8 taskId) } } -void ConfigureCameraObjectForPlacingDecoration(struct UnkStruct_0203A190 *data, u8 decor) +void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor) { - gUnknown_0203AA38 = gSprites[gUnknown_03005DD0.unk4].data0; + sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data0; gUnknown_03005DD0.unk4 = gpu_pal_decompress_alloc_tag_and_upload(data, decor); gSprites[gUnknown_03005DD0.unk4].oam.priority = 1; gSprites[gUnknown_03005DD0.unk4].callback = sub_81292D0; @@ -1311,7 +1311,7 @@ void ConfigureCameraObjectForPlacingDecoration(struct UnkStruct_0203A190 *data, gSprites[gUnknown_03005DD0.unk4].pos1.y = gUnknown_085A7250[data->decoration->shape].y; } -void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_0203A190 *data) +void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data) { u8 v0; @@ -1322,20 +1322,20 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_0203A190 *da } if (gSaveBlock2Ptr->playerGender == MALE) { - gUnknown_0203AA39 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0); + sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0); } else { - gUnknown_0203AA39 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0); + sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0); } - gSprites[gUnknown_0203AA39].oam.priority = 1; - DestroySprite(&gSprites[gUnknown_0203AA38]); - gUnknown_0203AA38 = gUnknown_03005DD0.unk4; + gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1; + DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]); + sDecor_CameraSpriteObjectIdx1 = gUnknown_03005DD0.unk4; } void sub_812826C(u8 taskId) { - switch (gDecorations[gUnknown_0203A14C[gUnknown_0203A172]].shape) + switch (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].shape) { case DECORSHAPE_1x1: gTasks[taskId].data[5] = 1; @@ -1384,8 +1384,8 @@ void sub_812826C(u8 taskId) void sub_81283BC(u8 taskId) { gTasks[taskId].data[10] = 0; - gSprites[gUnknown_0203AA38].data7 = 1; - gSprites[gUnknown_0203AA39].data7 = 1; + gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 1; + gSprites[sDecor_CameraSpriteObjectIdx2].data7 = 1; sub_8128DE0(); sub_8128950(taskId); } @@ -1393,8 +1393,8 @@ void sub_81283BC(u8 taskId) void sub_8128414(u8 taskId) { gTasks[taskId].data[10] = 0; - gSprites[gUnknown_0203AA38].data7 = 1; - gSprites[gUnknown_0203AA39].data7 = 1; + gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 1; + gSprites[sDecor_CameraSpriteObjectIdx2].data7 = 1; sub_8128DE0(); StringExpandPlaceholders(gStringVar4, gText_CancelDecorating); DisplayItemMessageOnField(taskId, gStringVar4, sub_8128B80); @@ -1569,7 +1569,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration) void sub_8128950(u8 taskId) { - if (sub_812853C(taskId, &gDecorations[gUnknown_0203A14C[gUnknown_0203A172]]) == TRUE) + if (sub_812853C(taskId, &gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]]) == TRUE) { StringExpandPlaceholders(gStringVar4, gText_PlaceItHere); DisplayItemMessageOnField(taskId, gStringVar4, sub_81289D0); @@ -1592,17 +1592,17 @@ void sub_81289F0(u8 taskId) { sub_8197434(0, 0); sub_8128AAC(taskId); - if (gDecorations[gUnknown_0203A14C[gUnknown_0203A172]].permission != DECORPERM_SOLID_MAT) + if (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].permission != DECORPERM_SOLID_MAT) { - sub_8127D38(gTasks[taskId].data[0], gTasks[taskId].data[1], gUnknown_0203A14C[gUnknown_0203A172]); + sub_8127D38(gTasks[taskId].data[0], gTasks[taskId].data[1], gCurDecorInventoryItems[gCurDecorationIndex]); } else { - gUnknown_0203AA34 = gTasks[taskId].data[0] - 7; - gUnknown_0203AA36 = gTasks[taskId].data[1] - 7; + sCurDecorMapX = gTasks[taskId].data[0] - 7; + sCurDecorMapY = gTasks[taskId].data[1] - 7; ScriptContext1_SetupScript(gUnknown_08275D1F); } - gSprites[gUnknown_0203AA38].pos1.y += 2; + gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2; if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE) { TV_PutSecretBaseVisitOnTheAir(); @@ -1618,7 +1618,7 @@ void sub_8128AAC(u8 taskId) { if (gUnknown_0203A17C.items[i] == DECOR_NONE) { - gUnknown_0203A17C.items[i] = gUnknown_0203A14C[gUnknown_0203A172]; + gUnknown_0203A17C.items[i] = gCurDecorInventoryItems[gCurDecorationIndex]; gUnknown_0203A17C.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7); break; } @@ -1627,9 +1627,9 @@ void sub_8128AAC(u8 taskId) { for (i = 0; i < 16; i ++) { - if (gUnknown_0203A152[i] == 0) + if (sSecretBaseItemsIndicesBuffer[i] == 0) { - gUnknown_0203A152[i] = gUnknown_0203A172 + 1; + sSecretBaseItemsIndicesBuffer[i] = gCurDecorationIndex + 1; break; } } @@ -1638,9 +1638,9 @@ void sub_8128AAC(u8 taskId) { for (i = 0; i < 12; i ++) { - if (gUnknown_0203A162[i] == 0) + if (sPlayerRoomItemsIndicesBuffer[i] == 0) { - gUnknown_0203A162[i] = gUnknown_0203A172 + 1; + sPlayerRoomItemsIndicesBuffer[i] = gCurDecorationIndex + 1; break; } } @@ -1680,7 +1680,7 @@ void c1_overworld_prev_quest(u8 taskId) break; case 1: sub_812A3C8(); - FreeSpritePaletteByTag(OVERWORLD_DECOR_PAL_TAG); + FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG); gFieldCallback = sub_8128CD4; SetMainCallback2(c2_exit_to_overworld_2_switch); DestroyTask(taskId); @@ -1732,22 +1732,22 @@ bool8 sub_8128D10(u8 taskId) s16 *data; data = gTasks[taskId].data; - if (gUnknown_0203AA3A == DIR_SOUTH && data[1] - data[6] - 6 < 0) + if (sDecorationLastDirectionMoved == DIR_SOUTH && data[1] - data[6] - 6 < 0) { data[1] ++; return FALSE; } - if (gUnknown_0203AA3A == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height) + if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height) { data[1] --; return FALSE; } - if (gUnknown_0203AA3A == DIR_WEST && data[0] - 7 < 0) + if (sDecorationLastDirectionMoved == DIR_WEST && data[0] - 7 < 0) { data[0] ++; return FALSE; } - if (gUnknown_0203AA3A == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width) + if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width) { data[0] --; return FALSE; @@ -1769,9 +1769,9 @@ bool8 sub_8128DB4(void) void sub_8128DE0(void) { - gUnknown_0203AA3A = 0; - gSprites[gUnknown_0203AA38].data2 = 0; - gSprites[gUnknown_0203AA38].data3 = 0; + sDecorationLastDirectionMoved = 0; + gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0; + gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0; } void sub_8128E18(u8 taskId) @@ -1779,7 +1779,7 @@ void sub_8128E18(u8 taskId) s16 *data; data = gTasks[taskId].data; - if (!gSprites[gUnknown_0203AA38].data4) + if (!gSprites[sDecor_CameraSpriteObjectIdx1].data4) { if (data[10] == 1) { @@ -1792,30 +1792,30 @@ void sub_8128E18(u8 taskId) } if ((gMain.heldKeys & 0x0F0) == DPAD_UP) { - gUnknown_0203AA3A = DIR_SOUTH; - gSprites[gUnknown_0203AA38].data2 = 0; - gSprites[gUnknown_0203AA38].data3 = -2; + sDecorationLastDirectionMoved = DIR_SOUTH; + gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0; + gSprites[sDecor_CameraSpriteObjectIdx1].data3 = -2; data[1]--; } if ((gMain.heldKeys & 0x0F0) == DPAD_DOWN) { - gUnknown_0203AA3A = DIR_NORTH; - gSprites[gUnknown_0203AA38].data2 = 0; - gSprites[gUnknown_0203AA38].data3 = 2; + sDecorationLastDirectionMoved = DIR_NORTH; + gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0; + gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 2; data[1]++; } if ((gMain.heldKeys & 0x0F0) == DPAD_LEFT) { - gUnknown_0203AA3A = DIR_WEST; - gSprites[gUnknown_0203AA38].data2 = -2; - gSprites[gUnknown_0203AA38].data3 = 0; + sDecorationLastDirectionMoved = DIR_WEST; + gSprites[sDecor_CameraSpriteObjectIdx1].data2 = -2; + gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0; data[0]--; } if ((gMain.heldKeys & 0x0F0) == DPAD_RIGHT) { - gUnknown_0203AA3A = DIR_EAST; - gSprites[gUnknown_0203AA38].data2 = 2; - gSprites[gUnknown_0203AA38].data3 = 0; + sDecorationLastDirectionMoved = DIR_EAST; + gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 2; + gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0; data[0]++; } if (!sub_8128DB4() || !sub_8128D10(taskId)) @@ -1823,10 +1823,10 @@ void sub_8128E18(u8 taskId) sub_8128DE0(); } } - if (gUnknown_0203AA3A) + if (sDecorationLastDirectionMoved) { - gSprites[gUnknown_0203AA38].data4++; - gSprites[gUnknown_0203AA38].data4 &= 7; + gSprites[sDecor_CameraSpriteObjectIdx1].data4++; + gSprites[sDecor_CameraSpriteObjectIdx1].data4 &= 7; } if (!data[10]) { @@ -1844,7 +1844,7 @@ void sub_8128E18(u8 taskId) void sub_8128FD8(u8 taskId) { sub_8197434(0, 1); - gSprites[gUnknown_0203AA38].data7 = 0; + gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 0; gTasks[taskId].data[10] = 0; gTasks[taskId].func = sub_8128E18; } @@ -1857,7 +1857,7 @@ void sub_8129020(u8 taskId) } } -void sub_8129048(struct UnkStruct_0203A190 *data) +void sub_8129048(struct PlaceDecorationGraphicsDataBuffer *data) { CpuFill16(0, data, sizeof(*data)); } @@ -1911,7 +1911,7 @@ void sub_8129088(u8 *dest, u16 tile) } } -void sub_81291A4(struct UnkStruct_0203A190 *data) +void sub_81291A4(struct PlaceDecorationGraphicsDataBuffer *data) { u16 i; for (i = 0; i < 64; i ++) @@ -1925,7 +1925,7 @@ u16 sub_81291CC(u16 tile) return ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[tile] & 0xFFF; } -void sub_81291E8(struct UnkStruct_0203A190 *data) +void sub_81291E8(struct PlaceDecorationGraphicsDataBuffer *data) { u8 i; u8 shape; @@ -1937,20 +1937,20 @@ void sub_81291E8(struct UnkStruct_0203A190 *data) } } -void sub_812925C(u8 decoShape) +void SetDecorSelectionBoxOamAttributes(u8 decorShape) { - gUnknown_0203AA3C.y = 0; - gUnknown_0203AA3C.affineMode = ST_OAM_AFFINE_OFF; - gUnknown_0203AA3C.objMode = ST_OAM_OBJ_NORMAL; - gUnknown_0203AA3C.mosaic = 0; - gUnknown_0203AA3C.bpp = ST_OAM_4BPP; - gUnknown_0203AA3C.shape = gUnknown_085A7250[decoShape].shape; - gUnknown_0203AA3C.x = 0; - gUnknown_0203AA3C.matrixNum = 0; - gUnknown_0203AA3C.size = gUnknown_085A7250[decoShape].size; - gUnknown_0203AA3C.tileNum = 0; - gUnknown_0203AA3C.priority = 0; - gUnknown_0203AA3C.paletteNum = 0; + sDecorSelectorOam.y = 0; + sDecorSelectorOam.affineMode = ST_OAM_AFFINE_OFF; + sDecorSelectorOam.objMode = ST_OAM_OBJ_NORMAL; + sDecorSelectorOam.mosaic = 0; + sDecorSelectorOam.bpp = ST_OAM_4BPP; + sDecorSelectorOam.shape = gUnknown_085A7250[decorShape].shape; + sDecorSelectorOam.x = 0; + sDecorSelectorOam.matrixNum = 0; + sDecorSelectorOam.size = gUnknown_085A7250[decorShape].size; + sDecorSelectorOam.tileNum = 0; + sDecorSelectorOam.priority = 0; + sDecorSelectorOam.paletteNum = 0; } void sub_81292D0(struct Sprite *sprite) @@ -1985,7 +1985,7 @@ void sub_81292E8(struct Sprite *sprite) } } -u8 gpu_pal_decompress_alloc_tag_and_upload(struct UnkStruct_0203A190 *data, u8 decor) +u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor) { sub_8129048(data); data->decoration = &gDecorations[decor]; @@ -1993,13 +1993,13 @@ u8 gpu_pal_decompress_alloc_tag_and_upload(struct UnkStruct_0203A190 *data, u8 d { return AddPseudoFieldObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); } - FreeSpritePaletteByTag(OVERWORLD_DECOR_PAL_TAG); + FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG); sub_81291E8(data); - sub_812925C(data->decoration->shape); + SetDecorSelectionBoxOamAttributes(data->decoration->shape); sub_81291A4(data); sub_8129068(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12); LoadSpritePalette(&gUnknown_085A72BC); - return CreateSprite(&gUnknown_085A728C, 0, 0, 0); + return CreateSprite(&sDecorSelectorSpriteTemplate, 0, 0, 0); } u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor) @@ -2048,23 +2048,23 @@ u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor struct SpritePalette palette; struct SpriteTemplate *template; - sub_8129048(&gUnknown_0203A190); - gUnknown_0203A190.decoration = &gDecorations[decor]; - if (gUnknown_0203A190.decoration->permission != DECORPERM_SOLID_MAT) + sub_8129048(&sPlaceDecorationGraphicsDataBuffer); + sPlaceDecorationGraphicsDataBuffer.decoration = &gDecorations[decor]; + if (sPlaceDecorationGraphicsDataBuffer.decoration->permission != DECORPERM_SOLID_MAT) { - sub_81291E8(&gUnknown_0203A190); - sub_812925C(gUnknown_0203A190.decoration->shape); - sub_81291A4(&gUnknown_0203A190); - sub_8129068(gUnknown_0203A190.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(gUnknown_0203A190.decoration->tiles[0] * 8) + 7] >> 12); - sheet.data = gUnknown_0203A190.image; - sheet.size = gUnknown_085A72F4[gUnknown_0203A190.decoration->shape] << 5; + sub_81291E8(&sPlaceDecorationGraphicsDataBuffer); + SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape); + sub_81291A4(&sPlaceDecorationGraphicsDataBuffer); + sub_8129068(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * 8) + 7] >> 12); + sheet.data = sPlaceDecorationGraphicsDataBuffer.image; + sheet.size = gUnknown_085A72F4[sPlaceDecorationGraphicsDataBuffer.decoration->shape] << 5; sheet.tag = tilesTag; LoadSpriteSheet(&sheet); - palette.data = gUnknown_0203A190.palette; + palette.data = sPlaceDecorationGraphicsDataBuffer.palette; palette.tag = paletteTag; LoadSpritePalette(&palette); template = Alloc(sizeof(struct SpriteTemplate)); - *template = gUnknown_085A72A4; + *template = sDecorWhilePlacingSpriteTemplate; template->tileTag = tilesTag; template->paletteTag = paletteTag; spriteId = CreateSprite(template, 0, 0, 0); @@ -2072,7 +2072,7 @@ u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor } else { - spriteId = AddPseudoFieldObject(gUnknown_0203A190.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); + spriteId = AddPseudoFieldObject(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); } return spriteId; } @@ -2134,14 +2134,14 @@ void sub_8129708(void) gSpecialVar_0x8005 = 0; gScriptResult = 0; - if (gSpecialVar_0x8004 == gUnknown_0203AAC4) + if (gSpecialVar_0x8004 == sCurDecorSelectedInRearrangement) { gScriptResult = 1; } - else if (gDecorations[gUnknown_0203A17C.items[gUnknown_0203AA44[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT) + else if (gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT) { - gSpecialVar_0x8005 = gUnknown_0203AA44[gSpecialVar_0x8004].flagId; - sub_81296EC(gUnknown_0203AA44[gSpecialVar_0x8004].idx); + gSpecialVar_0x8005 = sDecorRearrangementDataBuffer[gSpecialVar_0x8004].flagId; + sub_81296EC(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx); for (i = 0; i < gMapHeader.events->mapObjectCount; i ++) { if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005) @@ -2176,21 +2176,21 @@ void sub_81297F8(void) int posY; u8 perm; - for (i = 0; i < gUnknown_0203AAC4; i ++) + for (i = 0; i < sCurDecorSelectedInRearrangement; i ++) { - perm = gDecorations[gUnknown_0203A17C.items[gUnknown_0203AA44[i].idx]].permission; - posX = gUnknown_0203A17C.pos[gUnknown_0203AA44[i].idx] >> 4; - posY = gUnknown_0203A17C.pos[gUnknown_0203AA44[i].idx] & 0x0F; + perm = gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[i].idx]].permission; + posX = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[i].idx] >> 4; + posY = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[i].idx] & 0x0F; if (perm != DECORPERM_SOLID_MAT) { - for (y = 0; y < gUnknown_0203AA44[i].height; y ++) + for (y = 0; y < sDecorRearrangementDataBuffer[i].height; y ++) { - for (x = 0; x < gUnknown_0203AA44[i].width; x ++) + for (x = 0; x < sDecorRearrangementDataBuffer[i].width; x ++) { MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapData->map[posX + x + gMapHeader.mapData->width * (posY - y)] | 0x3000); } } - sub_81296EC(gUnknown_0203AA44[i].idx); + sub_81296EC(sDecorRearrangementDataBuffer[i].idx); } } } @@ -2213,7 +2213,7 @@ void sub_81298EC(u8 taskId) break; case 2: ScriptContext2_Enable(); - sub_8127814(taskId); + IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId); pal_fill_black(); gTasks[taskId].data[2] = 3; break; @@ -2249,21 +2249,21 @@ bool8 sub_81299AC(u8 taskId) void SetUpPuttingAwayDecorationPlayerAvatar(void) { player_get_direction_lower_nybble(); - gUnknown_0203AA38 = gSprites[gUnknown_03005DD0.unk4].data0; + sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data0; sub_812A39C(); gUnknown_03005DD0.unk4 = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0); if (gSaveBlock2Ptr->playerGender == MALE) { - gUnknown_0203AA39 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0); + sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0); } else { - gUnknown_0203AA39 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0); + sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0); } - gSprites[gUnknown_0203AA39].oam.priority = 1; - DestroySprite(&gSprites[gUnknown_0203AA38]); - gUnknown_0203AA38 = gUnknown_03005DD0.unk4; - gSprites[gUnknown_0203AA38].oam.priority = 1; + gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1; + DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]); + sDecor_CameraSpriteObjectIdx1 = gUnknown_03005DD0.unk4; + gSprites[sDecor_CameraSpriteObjectIdx1].oam.priority = 1; } void sub_8129ABC(u8 taskId) @@ -2300,11 +2300,11 @@ void sub_8129ABC(u8 taskId) void sub_8129B34(u8 taskId) { sub_8197434(0, 1); - gSprites[gUnknown_0203AA38].data7 = 0; - gSprites[gUnknown_0203AA38].invisible = FALSE; - gSprites[gUnknown_0203AA38].callback = sub_812A36C; - gSprites[gUnknown_0203AA39].pos1.x = 0x88; - gSprites[gUnknown_0203AA39].pos1.y = 0x48; + gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 0; + gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE; + gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C; + gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 0x88; + gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 0x48; gTasks[taskId].data[10] = 0; gTasks[taskId].func = sub_8128E18; } @@ -2320,8 +2320,8 @@ void sub_8129BF8(u8 taskId) { gTasks[taskId].data[10] = 0; sub_8128DE0(); - gSprites[gUnknown_0203AA38].invisible = FALSE; - gSprites[gUnknown_0203AA38].callback = SpriteCallbackDummy; + gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE; + gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy; StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations); DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1F0); } @@ -2332,7 +2332,7 @@ void sub_8129C74(u8 taskId) u8 behavior; sub_812A0E8(taskId); - if (gUnknown_0203AAC4 != 0) + if (sCurDecorSelectedInRearrangement != 0) { StringExpandPlaceholders(gStringVar4, gText_ReturnDecorationToPC); DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1A0); @@ -2343,8 +2343,8 @@ void sub_8129C74(u8 taskId) behavior = MapGridGetMetatileBehaviorAt(data[0], data[1]); if (MetatileBehavior_IsSecretBasePC(behavior) == TRUE || MetatileBehavior_IsMB_C5(behavior) == TRUE) { - gSprites[gUnknown_0203AA38].invisible = FALSE; - gSprites[gUnknown_0203AA38].callback = SpriteCallbackDummy; + gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE; + gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy; StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations); DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1F0); } @@ -2364,7 +2364,7 @@ void sub_8129D64(u8 taskId) } } -void sub_8129D8C(u8 decor, struct UnkStruct_0203AA44 *data) +void sub_8129D8C(u8 decor, struct DecorRearrangementDataBuffer *data) { if (gDecorations[decor].shape == DECORSHAPE_1x1) { @@ -2411,13 +2411,13 @@ void sub_8129D8C(u8 decor, struct UnkStruct_0203AA44 *data) void sub_8129E0C(u8 x, u8 y) { - gSprites[gUnknown_0203AA38].invisible = TRUE; - gSprites[gUnknown_0203AA38].callback = SpriteCallbackDummy; - gSprites[gUnknown_0203AA39].pos1.x = (x << 4) + 0x88; - gSprites[gUnknown_0203AA39].pos1.y = (y << 4) + 0x48; + gSprites[sDecor_CameraSpriteObjectIdx1].invisible = TRUE; + gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy; + gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = (x << 4) + 0x88; + gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = (y << 4) + 0x48; } -bool8 sub_8129E74(u8 taskId, u8 idx, struct UnkStruct_0203AA44 *data) +bool8 sub_8129E74(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data) { u8 x; u8 y; @@ -2447,14 +2447,14 @@ void sub_8129F20(void) u8 xOff; u8 yOff; u16 i; - - xOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[gUnknown_0203AAC4].idx] >> 4; - yOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[gUnknown_0203AAC4].idx] & 0x0F; + + xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] >> 4; + yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F; for (i = 0; i < 0x40; i ++) { if (gSaveBlock1Ptr->mapObjectTemplates[i].x == xOff && gSaveBlock1Ptr->mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->mapObjectTemplates[i].flagId)) { - gUnknown_0203AA44[gUnknown_0203AAC4].flagId = gSaveBlock1Ptr->mapObjectTemplates[i].flagId; + sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].flagId = gSaveBlock1Ptr->mapObjectTemplates[i].flagId; break; } } @@ -2470,12 +2470,12 @@ bool8 sub_8129FC8(u8 taskId) { if (gDecorations[gUnknown_0203A17C.items[i]].permission == DECORPERM_SOLID_MAT) { - sub_8129D8C(gUnknown_0203A17C.items[i], gUnknown_0203AA44); - if (sub_8129E74(taskId, i, gUnknown_0203AA44) == TRUE) + sub_8129D8C(gUnknown_0203A17C.items[i], sDecorRearrangementDataBuffer); + if (sub_8129E74(taskId, i, sDecorRearrangementDataBuffer) == TRUE) { - gUnknown_0203AA44->idx = i; + sDecorRearrangementDataBuffer->idx = i; sub_8129F20(); - gUnknown_0203AAC4 = 1; + sCurDecorSelectedInRearrangement = 1; return TRUE; } } @@ -2498,9 +2498,9 @@ void sub_812A040(u8 left, u8 top, u8 right, u8 bottom) yOff = gUnknown_0203A17C.pos[i] & 0x0F; if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff) { - gUnknown_0203AA44[gUnknown_0203AAC4].idx = i; + sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx = i; sub_8129F20(); - gUnknown_0203AAC4++; + sCurDecorSelectedInRearrangement++; } } } @@ -2513,9 +2513,9 @@ void sub_812A0E8(u8 taskId) u8 yOff; u8 decor; register u8 decor asm("r1"); - struct UnkStruct_0203AA44 *data; + struct DecorRearrangementDataBuffer *data; - gUnknown_0203AAC4 = 0; + sCurDecorSelectedInRearrangement = 0; if (sub_8129FC8(taskId) != TRUE) { for (i = 0; i < gUnknown_0203A17C.size; i ++) @@ -2523,21 +2523,21 @@ void sub_812A0E8(u8 taskId) decor = gUnknown_0203A17C.items[i]; if (decor != DECOR_NONE) { - data = &gUnknown_0203AA44[0]; + data = &sDecorRearrangementDataBuffer[0]; sub_8129D8C(decor, data); if (sub_8129E74(taskId, i, data) == TRUE) { data->idx = i; - gUnknown_0203AAC4 ++; + sCurDecorSelectedInRearrangement ++; break; } } } - if (gUnknown_0203AAC4 != 0) + if (sCurDecorSelectedInRearrangement != 0) { - xOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[0].idx] >> 4; - yOff = gUnknown_0203A17C.pos[gUnknown_0203AA44[0].idx] & 0x0F; - sub_812A040(xOff, yOff - gUnknown_0203AA44[0].height + 1, xOff + gUnknown_0203AA44[0].width - 1, yOff); // Arithmetic register swap at the r2 argument: `add r2, r0, r2` instead of `add r2, r2, r0` + xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] >> 4; + yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F; + sub_812A040(xOff, yOff - sDecorRearrangementDataBuffer[0].height + 1, xOff + sDecorRearrangementDataBuffer[0].width - 1, yOff); // Arithmetic register swap at the r2 argument: `add r2, r0, r2` instead of `add r2, r2, r0` } } } @@ -2547,7 +2547,7 @@ __attribute__((naked)) void sub_812A0E8(u8 taskId) asm_unified("\tpush {r4-r7,lr}\n" "\tlsls r0, 24\n" "\tlsrs r6, r0, 24\n" - "\tldr r4, =gUnknown_0203AAC4\n" + "\tldr r4, =sCurDecorSelectedInRearrangement\n" "\tmovs r0, 0\n" "\tstrb r0, [r4]\n" "\tadds r0, r6, 0\n" @@ -2568,7 +2568,7 @@ __attribute__((naked)) void sub_812A0E8(u8 taskId) "\tldrb r1, [r0]\n" "\tcmp r1, 0\n" "\tbeq _0812A14C\n" - "\tldr r4, =gUnknown_0203AA44\n" + "\tldr r4, =sDecorRearrangementDataBuffer\n" "\tadds r0, r1, 0\n" "\tadds r1, r4, 0\n" "\tbl sub_8129D8C\n" @@ -2595,12 +2595,12 @@ __attribute__((naked)) void sub_812A0E8(u8 taskId) "\tcmp r5, r1\n" "\tbcc _0812A10E\n" "_0812A15A:\n" - "\tldr r0, =gUnknown_0203AAC4\n" + "\tldr r0, =sCurDecorSelectedInRearrangement\n" "\tldrb r0, [r0]\n" "\tcmp r0, 0\n" "\tbeq _0812A18C\n" "\tldr r0, =gUnknown_0203A17C\n" - "\tldr r2, =gUnknown_0203AA44\n" + "\tldr r2, =sDecorRearrangementDataBuffer\n" "\tldrb r1, [r2]\n" "\tldr r0, [r0, 0x4]\n" "\tadds r0, r1\n" @@ -2746,14 +2746,14 @@ void sub_812A39C(void) void sub_812A3C8(void) { - FreeSpritePaletteByTag(OVERWORLD_DECOR_BOX_PAL_TAG); + FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG); } void sub_812A3D4(u8 taskId) { - if (sub_81279C4() == TRUE) + if (IsSelectedDecorInThePC() == TRUE) { - StringCopy(gStringVar1, gDecorations[gUnknown_0203A14C[gUnknown_0203A172]].name); + StringCopy(gStringVar1, gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].name); StringExpandPlaceholders(gStringVar4, gText_DecorationWillBeDiscarded); DisplayItemMessageOnField(taskId, gStringVar4, sub_812A458); } @@ -2772,10 +2772,10 @@ void sub_812A458(u8 taskId) void sub_812A478(u8 taskId) { - gUnknown_0203A14C[gUnknown_0203A172] = DECOR_NONE; - gUnknown_0203A151 = CountDecorationCategoryN(gUnknown_0203A173); - CondenseDecorationCategoryN(gUnknown_0203A173); - sub_8127814(taskId); + gCurDecorInventoryItems[gCurDecorationIndex] = DECOR_NONE; + sCurDecorCatCount = CountDecorationCategoryN(sCurDecorationCategory); + CondenseDecorationCategoryN(sCurDecorationCategory); + IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId); StringExpandPlaceholders(gStringVar4, gText_DecorationThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C); } From 1ef4dbe691af72bec7fbe2d57f094c335f6de3a3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 22 Oct 2017 20:43:03 -0400 Subject: [PATCH 179/182] Fix global declarations of libc fns --- include/global.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/global.h b/include/global.h index d8547d9c37..8860b4ae39 100644 --- a/include/global.h +++ b/include/global.h @@ -12,8 +12,10 @@ #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided") #if defined (__APPLE__) || defined (__CYGWIN__) -void memset(void *, int, size_t); -void memcpy(void *, const void *, size_t); +void *memset(void *, int, size_t); +void *memcpy(void *, const void *, size_t); +int strcmp(const char *s1, const char *s2); +char* strcpy(char *dst0, const char *src0); #endif // __APPLE__ #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) From 2082c0491b0f7334683f891ca2558cead7b08aaf Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Sun, 22 Oct 2017 21:00:08 -0400 Subject: [PATCH 180/182] more bool8 stuff --- src/pokemon_summary_screen.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index b2f18090b4..37ecdc982e 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -165,8 +165,8 @@ extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f); extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str); extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); -extern u8 sub_81A6BF4(); -extern u8 sub_81B9E94(); +extern bool8 sub_81A6BF4(); +extern bool8 sub_81B9E94(); extern void sub_81AFBF0(); extern u8 sub_81AFC0C(u8 a, u8 *b); extern void sub_81AFC28(u8 *a, u8 *b); @@ -2718,7 +2718,7 @@ void sub_81C2AFC(u8 a) case 0: PutWindowTilemap(0); PutWindowTilemap(4); - if (sub_81A6BF4() == 1 || sub_81B9E94() == 1) + if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE) PutWindowTilemap(8); PutWindowTilemap(9); break; @@ -2763,7 +2763,7 @@ void sub_81C2C38(u8 a) { case 0: ClearWindowTilemap(4); - if (sub_81A6BF4() == 1 || sub_81B9E94() == 1) + if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE) ClearWindowTilemap(8); ClearWindowTilemap(9); break; @@ -2970,7 +2970,7 @@ void sub_81C2EC4() void sub_81C2F5C() { int r4; - if (sub_81A6BF4() != 1 && sub_81B9E94() != 1) + if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5); r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); @@ -2998,7 +2998,7 @@ void sub_81C307C() sub_81AFC0C(0, gUnknown_0861CE74); sub_81AFC0C(1, gUnknown_0861CE7B); sub_81C31C0(); - if (sub_81A6BF4() == 1 || sub_81B9E94() == 1 || sub_81C3304() == TRUE) + if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || sub_81C3304() == TRUE) sub_81AFC28(gStringVar4, gText_XNature); else { From 1bb931245b5030746b7150e3965520954d0068a7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 23 Oct 2017 20:43:26 -0500 Subject: [PATCH 181/182] use SPEED instead of SPD in mon data constants --- include/pokemon.h | 4 ++-- src/battle_script_commands.c | 12 ++++++------ src/pokemon_1.c | 12 ++++++------ src/pokemon_2.c | 12 ++++++------ src/pokemon_size_record.c | 2 +- src/pokemon_summary_screen.c | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index c26c28afa4..6449c19987 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -43,7 +43,7 @@ #define MON_DATA_HP_IV 39 #define MON_DATA_ATK_IV 40 #define MON_DATA_DEF_IV 41 -#define MON_DATA_SPD_IV 42 +#define MON_DATA_SPEED_IV 42 #define MON_DATA_SPATK_IV 43 #define MON_DATA_SPDEF_IV 44 #define MON_DATA_IS_EGG 45 @@ -62,7 +62,7 @@ #define MON_DATA_MAX_HP 58 #define MON_DATA_ATK 59 #define MON_DATA_DEF 60 -#define MON_DATA_SPD 61 +#define MON_DATA_SPEED 61 #define MON_DATA_SPATK 62 #define MON_DATA_SPDEF 63 #define MON_DATA_MAIL 64 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a1e5767ada..28357d984b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -909,7 +909,7 @@ static const u8 sUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_b static const u8 sRubyLevelUpStatBoxStats[] = { MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, - MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPD + MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED }; #define MON_ICON_LVLUP_BOX_TAG 0xD75A @@ -3610,7 +3610,7 @@ static void atk23_getexp(void) BATTLE_LVLUP_STATS->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP); BATTLE_LVLUP_STATS->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK); BATTLE_LVLUP_STATS->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF); - BATTLE_LVLUP_STATS->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + BATTLE_LVLUP_STATS->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED); BATTLE_LVLUP_STATS->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK); BATTLE_LVLUP_STATS->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF); @@ -3649,8 +3649,8 @@ static void atk23_getexp(void) gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK); gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF); // Why is this duplicated? - gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); - gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED); gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK); gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF); @@ -3664,8 +3664,8 @@ static void atk23_getexp(void) gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK); gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF); // Duplicated again, but this time there's no Sp Defense - gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); - gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPD); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED); gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK); } diff --git a/src/pokemon_1.c b/src/pokemon_1.c index fe78098267..79fa153437 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -33,7 +33,7 @@ void ZeroMonData(struct Pokemon *mon) SetMonData(mon, MON_DATA_MAX_HP, &arg); SetMonData(mon, MON_DATA_ATK, &arg); SetMonData(mon, MON_DATA_DEF, &arg); - SetMonData(mon, MON_DATA_SPD, &arg); + SetMonData(mon, MON_DATA_SPEED, &arg); SetMonData(mon, MON_DATA_SPATK, &arg); SetMonData(mon, MON_DATA_SPDEF, &arg); arg = 255; @@ -128,7 +128,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_HP_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_ATK_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_DEF_IV, &fixedIV); - SetBoxMonData(boxMon, MON_DATA_SPD_IV, &fixedIV); + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &fixedIV); } @@ -147,7 +147,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, value = Random(); iv = value & 0x1F; - SetBoxMonData(boxMon, MON_DATA_SPD_IV, &iv); + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); iv = (value & 0x3E0) >> 5; SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); iv = (value & 0x7C00) >> 10; @@ -234,7 +234,7 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u SetMonData(mon, MON_DATA_HP_IV, &ivs[0]); SetMonData(mon, MON_DATA_ATK_IV, &ivs[1]); SetMonData(mon, MON_DATA_DEF_IV, &ivs[2]); - SetMonData(mon, MON_DATA_SPD_IV, &ivs[3]); + SetMonData(mon, MON_DATA_SPEED_IV, &ivs[3]); SetMonData(mon, MON_DATA_SPATK_IV, &ivs[4]); SetMonData(mon, MON_DATA_SPDEF_IV, &ivs[5]); CalculateMonStats(mon); @@ -317,7 +317,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src) value = src->defenseIV; SetMonData(mon, MON_DATA_DEF_IV, &value); value = src->speedIV; - SetMonData(mon, MON_DATA_SPD_IV, &value); + SetMonData(mon, MON_DATA_SPEED_IV, &value); value = src->spAttackIV; SetMonData(mon, MON_DATA_SPATK_IV, &value); value = src->spDefenseIV; @@ -381,7 +381,7 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv value = src->defenseIV; SetMonData(mon, MON_DATA_DEF_IV, &value); value = src->speedIV; - SetMonData(mon, MON_DATA_SPD_IV, &value); + SetMonData(mon, MON_DATA_SPEED_IV, &value); value = src->spAttackIV; SetMonData(mon, MON_DATA_SPATK_IV, &value); value = src->spDefenseIV; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 27441f9521..e14949d48a 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -330,7 +330,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data) if (!ret) ret = mon->defense; break; - case MON_DATA_SPD: + case MON_DATA_SPEED: ret = GetDeoxysStat(mon, STAT_SPD); if (!ret) ret = mon->speed; @@ -566,7 +566,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_DEF_IV: retVal = substruct3->defenseIV; break; - case MON_DATA_SPD_IV: + case MON_DATA_SPEED_IV: retVal = substruct3->speedIV; break; case MON_DATA_SPATK_IV: @@ -747,7 +747,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg) case MON_DATA_DEF: SET16(mon->defense); break; - case MON_DATA_SPD: + case MON_DATA_SPEED: SET16(mon->speed); break; case MON_DATA_SPATK: @@ -940,7 +940,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_DEF_IV: SET8(substruct3->defenseIV); break; - case MON_DATA_SPD_IV: + case MON_DATA_SPEED_IV: SET8(substruct3->speedIV); break; case MON_DATA_SPATK_IV: @@ -1329,7 +1329,7 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex) gBattleMons[bank].hpIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP_IV, NULL); gBattleMons[bank].attackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK_IV, NULL); gBattleMons[bank].defenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF_IV, NULL); - gBattleMons[bank].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPD_IV, NULL); + gBattleMons[bank].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED_IV, NULL); gBattleMons[bank].spAttackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK_IV, NULL); gBattleMons[bank].spDefenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF_IV, NULL); gBattleMons[bank].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY, NULL); @@ -1339,7 +1339,7 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex) gBattleMons[bank].maxHP = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MAX_HP, NULL); gBattleMons[bank].attack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK, NULL); gBattleMons[bank].defense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF, NULL); - gBattleMons[bank].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPD, NULL); + gBattleMons[bank].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED, NULL); gBattleMons[bank].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL); gBattleMons[bank].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL); gBattleMons[bank].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL); diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 12d98bfd8d..1758fba32e 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -57,7 +57,7 @@ static u32 GetMonSizeHash(struct Pokemon *pkmn) u16 hpIV = GetMonData(pkmn, MON_DATA_HP_IV) & 0xF; u16 attackIV = GetMonData(pkmn, MON_DATA_ATK_IV) & 0xF; u16 defenseIV = GetMonData(pkmn, MON_DATA_DEF_IV) & 0xF; - u16 speedIV = GetMonData(pkmn, MON_DATA_SPD_IV) & 0xF; + u16 speedIV = GetMonData(pkmn, MON_DATA_SPEED_IV) & 0xF; u16 spAtkIV = GetMonData(pkmn, MON_DATA_SPATK_IV) & 0xF; u16 spDefIV = GetMonData(pkmn, MON_DATA_SPDEF_IV) & 0xF; u32 hibyte = ((attackIV ^ defenseIV) * hpIV) ^ (personality & 0xFF); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 37ecdc982e..b3682825dd 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -709,7 +709,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->def = GetMonData(a, MON_DATA_DEF); sum->spatk = GetMonData(a, MON_DATA_SPATK); sum->spdef = GetMonData(a, MON_DATA_SPDEF); - sum->speed = GetMonData(a, MON_DATA_SPD); + sum->speed = GetMonData(a, MON_DATA_SPEED); } else { From 5ea2f463d71d0bc2663e70a553557de0ccf40eef Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 26 Oct 2017 13:47:14 -0500 Subject: [PATCH 182/182] also fix ambiguous MON_DATA_SPD_EV and MON_DATA_SPD2 constants --- include/pokemon.h | 8 ++++---- src/pokemon_1.c | 4 ++-- src/pokemon_2.c | 6 +++--- src/pokemon_summary_screen.c | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 6449c19987..4159a2f968 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -30,7 +30,7 @@ #define MON_DATA_HP_EV 26 #define MON_DATA_ATK_EV 27 #define MON_DATA_DEF_EV 28 -#define MON_DATA_SPD_EV 29 +#define MON_DATA_SPEED_EV 29 #define MON_DATA_SPATK_EV 30 #define MON_DATA_SPDEF_EV 31 #define MON_DATA_FRIENDSHIP 32 @@ -43,7 +43,7 @@ #define MON_DATA_HP_IV 39 #define MON_DATA_ATK_IV 40 #define MON_DATA_DEF_IV 41 -#define MON_DATA_SPEED_IV 42 +#define MON_DATA_SPEED_IV 42 #define MON_DATA_SPATK_IV 43 #define MON_DATA_SPDEF_IV 44 #define MON_DATA_IS_EGG 45 @@ -62,7 +62,7 @@ #define MON_DATA_MAX_HP 58 #define MON_DATA_ATK 59 #define MON_DATA_DEF 60 -#define MON_DATA_SPEED 61 +#define MON_DATA_SPEED 61 #define MON_DATA_SPATK 62 #define MON_DATA_SPDEF 63 #define MON_DATA_MAIL 64 @@ -87,7 +87,7 @@ #define MON_DATA_RIBBONS 83 #define MON_DATA_ATK2 84 #define MON_DATA_DEF2 85 -#define MON_DATA_SPD2 86 +#define MON_DATA_SPEED2 86 #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 diff --git a/src/pokemon_1.c b/src/pokemon_1.c index 79fa153437..f56ade9677 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -305,7 +305,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src) SetMonData(mon, MON_DATA_HP_EV, &src->hpEV); SetMonData(mon, MON_DATA_ATK_EV, &src->attackEV); SetMonData(mon, MON_DATA_DEF_EV, &src->defenseEV); - SetMonData(mon, MON_DATA_SPD_EV, &src->speedEV); + SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV); SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV); SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV); value = src->altAbility; @@ -369,7 +369,7 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv SetMonData(mon, MON_DATA_HP_EV, &src->hpEV); SetMonData(mon, MON_DATA_ATK_EV, &src->attackEV); SetMonData(mon, MON_DATA_DEF_EV, &src->defenseEV); - SetMonData(mon, MON_DATA_SPD_EV, &src->speedEV); + SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV); SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV); SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV); value = src->altAbility; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index e14949d48a..5877738365 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -351,7 +351,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data) case MON_DATA_DEF2: ret = mon->defense; break; - case MON_DATA_SPD2: + case MON_DATA_SPEED2: ret = mon->speed; break; case MON_DATA_SPATK2: @@ -512,7 +512,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_DEF_EV: retVal = substruct2->defenseEV; break; - case MON_DATA_SPD_EV: + case MON_DATA_SPEED_EV: retVal = substruct2->speedEV; break; case MON_DATA_SPATK_EV: @@ -880,7 +880,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_DEF_EV: SET8(substruct2->defenseEV); break; - case MON_DATA_SPD_EV: + case MON_DATA_SPEED_EV: SET8(substruct2->speedEV); break; case MON_DATA_SPATK_EV: diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index b3682825dd..838e91d90f 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -720,7 +720,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->def = GetMonData(a, MON_DATA_DEF2); sum->spatk = GetMonData(a, MON_DATA_SPATK2); sum->spdef = GetMonData(a, MON_DATA_SPDEF2); - sum->speed = GetMonData(a, MON_DATA_SPD2); + sum->speed = GetMonData(a, MON_DATA_SPEED2); } break; case 3: