From 8dc38fc8b1c2dbdec08c2a045ac3ecc3f16859c8 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 22 Aug 2025 09:12:32 -0500 Subject: [PATCH] sub_2E6AC --- asm/rom_2E6AC.s | 1264 ------------------------------------- expected_objs/sub_2E6AC.o | Bin 8756 -> 0 bytes include/functions.h | 2 +- include/global.h | 7 +- src/rom_2E67C.c | 309 +++++++++ 5 files changed, 314 insertions(+), 1268 deletions(-) delete mode 100644 expected_objs/sub_2E6AC.o diff --git a/asm/rom_2E6AC.s b/asm/rom_2E6AC.s index a0d0341..ff2ea67 100644 --- a/asm/rom_2E6AC.s +++ b/asm/rom_2E6AC.s @@ -6,1270 +6,6 @@ .text - thumb_func_start sub_2E6AC -sub_2E6AC: @ 0x0802E6AC - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - movs r0, #0 - mov sl, r0 - movs r1, #0 - str r1, [sp] - ldr r1, _0802E6E0 @ =gCurrentPinballGame - ldr r0, [r1] - ldr r2, _0802E6E4 @ =0x00000306 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xa - bls _0802E6D6 - bl _0802EFFC -_0802E6D6: - lsls r0, r0, #2 - ldr r1, _0802E6E8 @ =_0802E6EC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802E6E0: .4byte gCurrentPinballGame -_0802E6E4: .4byte 0x00000306 -_0802E6E8: .4byte _0802E6EC -_0802E6EC: @ jump table - .4byte _0802E718 @ case 0 - .4byte _0802E75C @ case 1 - .4byte _0802E7CC @ case 2 - .4byte _0802E7D4 @ case 3 - .4byte _0802E8DC @ case 4 - .4byte _0802E99C @ case 5 - .4byte _0802EB2C @ case 6 - .4byte _0802EBE4 @ case 7 - .4byte _0802EC40 @ case 8 - .4byte _0802EEF8 @ case 9 - .4byte _0802EFDC @ case 10 -_0802E718: - ldr r3, _0802E750 @ =gCurrentPinballGame - ldr r4, [r3] - ldr r5, _0802E754 @ =0x0000030E - adds r0, r4, r5 - movs r5, #0 - strh r5, [r0] - movs r7, #0xa4 - lsls r7, r7, #2 - adds r0, r4, r7 - ldr r0, [r0] - movs r1, #0x32 - bl __umodsi3 - movs r1, #0x19 - bl __udivsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov sl, r0 - movs r1, #0xc8 - lsls r1, r1, #2 - adds r0, r4, r1 - strh r5, [r0] - ldr r2, _0802E758 @ =0x00000322 - adds r4, r4, r2 - strh r5, [r4] - bl _0802EFFC - .align 2, 0 -_0802E750: .4byte gCurrentPinballGame -_0802E754: .4byte 0x0000030E -_0802E758: .4byte 0x00000322 -_0802E75C: - ldr r5, _0802E7B8 @ =gUnknown_086AE45A - ldr r3, _0802E7BC @ =gCurrentPinballGame - ldr r4, [r3] - movs r7, #0xa4 - lsls r7, r7, #2 - adds r0, r4, r7 - ldr r0, [r0] - movs r1, #0x28 - bl __umodsi3 - movs r1, #0xa - bl __udivsi3 - lsls r0, r0, #1 - adds r0, r0, r5 - ldrh r0, [r0] - mov sl, r0 - movs r1, #0xc8 - lsls r1, r1, #2 - adds r0, r4, r1 - movs r2, #0 - movs r1, #0 - strh r1, [r0] - ldr r3, _0802E7C0 @ =0x00000322 - adds r0, r4, r3 - strh r1, [r0] - ldr r5, _0802E7C4 @ =0x00000307 - adds r4, r4, r5 - strb r2, [r4] - ldr r7, _0802E7BC @ =gCurrentPinballGame - ldr r3, [r7] - ldr r4, _0802E7C8 @ =0x0000030A - adds r0, r3, r4 - strh r1, [r0] - movs r0, #0x13 - ldrsb r0, [r3, r0] - cmp r0, #2 - bgt _0802E7AC - bl _0802EFFC -_0802E7AC: - subs r5, #1 - adds r0, r3, r5 - strb r2, [r0] - mov sl, r1 - bl _0802EFFC - .align 2, 0 -_0802E7B8: .4byte gUnknown_086AE45A -_0802E7BC: .4byte gCurrentPinballGame -_0802E7C0: .4byte 0x00000322 -_0802E7C4: .4byte 0x00000307 -_0802E7C8: .4byte 0x0000030A -_0802E7CC: - movs r7, #4 - mov sl, r7 - bl _0802EFFC -_0802E7D4: - ldr r0, _0802E83C @ =gCurrentPinballGame - ldr r1, [r0] - movs r4, #0xc3 - lsls r4, r4, #2 - adds r0, r1, r4 - ldrh r2, [r0] - cmp r2, #2 - bhi _0802E84C - cmp r2, #0 - bne _0802E81A - ldr r3, _0802E840 @ =0x000005F7 - adds r0, r1, r3 - movs r1, #1 - strb r1, [r0] - ldr r5, _0802E83C @ =gCurrentPinballGame - ldr r0, [r5] - strb r1, [r0, #0x1f] - ldr r0, [r5] - ldr r7, _0802E844 @ =0x0000132C - adds r0, r0, r7 - ldr r1, [r0] - strh r2, [r1, #0x30] - ldr r1, [r0] - strh r2, [r1, #0x32] - ldr r0, [r0] - strh r2, [r0, #6] - movs r0, 0xE2 @=SE_UNKNOWN_0xE2 - bl m4aSongNumStart - movs r0, #7 - bl sub_11B0 - ldr r1, [r5] - ldr r0, _0802E848 @ =0x000186A0 - str r0, [r1, #0x3c] -_0802E81A: - ldr r0, _0802E83C @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _0802E844 @ =0x0000132C - adds r3, r1, r2 - ldr r2, [r3] - movs r0, #0x9c - strh r0, [r2, #0x10] - ldr r2, [r3] - adds r1, r1, r4 - ldrh r0, [r1] - lsls r0, r0, #1 - adds r0, #0x79 - strh r0, [r2, #0x12] - movs r3, #4 - mov sl, r3 - b _0802E886 - .align 2, 0 -_0802E83C: .4byte gCurrentPinballGame -_0802E840: .4byte 0x000005F7 -_0802E844: .4byte 0x0000132C -_0802E848: .4byte 0x000186A0 -_0802E84C: - cmp r2, #0x16 - bhi _0802E870 - ldr r4, _0802E86C @ =0x0000132C - adds r1, r1, r4 - ldr r2, [r1] - movs r0, #0x9d - strh r0, [r2, #0x10] - ldr r2, [r1] - movs r0, #0x86 - strh r0, [r2, #0x12] - ldr r1, [r1] - movs r0, #1 - strb r0, [r1] - movs r5, #5 - mov sl, r5 - b _0802E886 - .align 2, 0 -_0802E86C: .4byte 0x0000132C -_0802E870: - ldr r7, _0802E8D0 @ =0x00000306 - adds r1, r1, r7 - movs r2, #0 - movs r0, #4 - strb r0, [r1] - ldr r1, _0802E8D4 @ =gCurrentPinballGame - ldr r0, [r1] - adds r0, r0, r4 - strh r2, [r0] - movs r2, #2 - mov sl, r2 -_0802E886: - ldr r4, _0802E8D4 @ =gCurrentPinballGame - ldr r3, [r4] - ldr r5, _0802E8D8 @ =0x0000132C - adds r2, r3, r5 - ldr r1, [r2] - movs r7, #0x10 - ldrsh r0, [r1, r7] - lsls r0, r0, #1 - movs r4, #0 - strh r0, [r1, #0x28] - ldr r1, [r2] - movs r5, #0x12 - ldrsh r0, [r1, r5] - lsls r0, r0, #1 - strh r0, [r1, #0x2a] - ldr r1, [r2] - movs r7, #0x10 - ldrsh r0, [r1, r7] - lsls r0, r0, #8 - str r0, [r1, #0x34] - ldr r1, [r2] - movs r2, #0x12 - ldrsh r0, [r1, r2] - lsls r0, r0, #8 - str r0, [r1, #0x38] - movs r5, #0xc3 - lsls r5, r5, #2 - adds r1, r3, r5 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - movs r7, #0xc4 - lsls r7, r7, #2 - adds r3, r3, r7 - strh r4, [r3] - b _0802EFFC - .align 2, 0 -_0802E8D0: .4byte 0x00000306 -_0802E8D4: .4byte gCurrentPinballGame -_0802E8D8: .4byte 0x0000132C -_0802E8DC: - ldr r2, _0802E908 @ =gUnknown_086AE3DC - ldr r5, _0802E90C @ =gCurrentPinballGame - ldr r3, [r5] - ldr r6, _0802E910 @ =0x00000307 - adds r4, r3, r6 - movs r1, #0 - ldrsb r1, [r4, r1] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #4 - adds r0, r0, r2 - movs r1, #0 - ldrsh r0, [r0, r1] - ldr r2, _0802E914 @ =0x0000030A - adds r3, r3, r2 - ldrh r1, [r3] - cmp r0, r1 - ble _0802E918 - adds r0, r1, #1 - strh r0, [r3] - b _0802E95C - .align 2, 0 -_0802E908: .4byte gUnknown_086AE3DC -_0802E90C: .4byte gCurrentPinballGame -_0802E910: .4byte 0x00000307 -_0802E914: .4byte 0x0000030A -_0802E918: - movs r2, #0 - strh r2, [r3] - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - ldr r0, [r5] - ldr r3, _0802E98C @ =0x00000307 - adds r1, r0, r3 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x15 - bne _0802E948 - movs r0, #0x14 - strb r0, [r1] - ldr r0, [r5] - ldr r4, _0802E990 @ =0x00000306 - adds r0, r0, r4 - movs r1, #5 - strb r1, [r0] - ldr r0, [r5] - movs r7, #0xc3 - lsls r7, r7, #2 - adds r0, r0, r7 - strh r2, [r0] -_0802E948: - ldr r0, [r5] - adds r0, r0, r6 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #1 - bne _0802E95C - movs r0, 0xE3 @=SE_UNKNOWN_0xE3 - bl m4aSongNumStart -_0802E95C: - ldr r2, _0802E994 @ =gUnknown_086AE3DC - ldr r0, _0802E998 @ =gCurrentPinballGame - ldr r3, [r0] - ldr r1, _0802E98C @ =0x00000307 - adds r0, r3, r1 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r1, r0, r2 - ldrh r1, [r1] - str r1, [sp] - adds r2, #2 - adds r0, r0, r2 - ldrh r0, [r0] - mov sl, r0 - movs r2, #0xc4 - lsls r2, r2, #2 - adds r3, r3, r2 - ldrh r0, [r3] - adds r1, r0, #1 - strh r1, [r3] - b _0802EB06 - .align 2, 0 -_0802E98C: .4byte 0x00000307 -_0802E990: .4byte 0x00000306 -_0802E994: .4byte gUnknown_086AE3DC -_0802E998: .4byte gCurrentPinballGame -_0802E99C: - ldr r3, _0802EABC @ =gCurrentPinballGame - ldr r2, [r3] - movs r4, #0xc3 - lsls r4, r4, #2 - adds r0, r2, r4 - ldrh r0, [r0] - cmp r0, #0 - bne _0802E9BE - movs r5, #0xc8 - lsls r5, r5, #2 - adds r1, r2, r5 - ldr r0, _0802EAC0 @ =0x0000FE98 - strh r0, [r1] - ldr r7, _0802EAC4 @ =0x00000322 - adds r1, r2, r7 - adds r0, #0xa0 - strh r0, [r1] -_0802E9BE: - ldr r0, _0802EABC @ =gCurrentPinballGame - ldr r7, [r0] - movs r1, #0xc3 - lsls r1, r1, #2 - adds r1, r1, r7 - mov sb, r1 - ldrh r0, [r1] - movs r1, #0x1a - bl __umodsi3 - ldr r2, _0802EAC8 @ =gUnknown_08137CBC - ldr r1, _0802EACC @ =0x0000FFFE - ands r0, r1 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - lsls r1, r1, #0x10 - lsrs r1, r1, #0x10 - mov sl, r1 - adds r2, #1 - adds r0, r0, r2 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #1 - ldr r2, _0802EAD0 @ =0x0000030E - adds r1, r7, r2 - strh r0, [r1] - movs r3, #0xc7 - lsls r3, r3, #2 - adds r2, r7, r3 - ldr r4, _0802EAD4 @ =0x0000FFF4 - mov r8, r4 - mov r5, r8 - strh r5, [r2] - ldr r0, _0802EAD8 @ =0x0000031E - adds r3, r7, r0 - ldr r0, _0802EADC @ =0x0000FFF6 - strh r0, [r3] - movs r4, #0xc8 - lsls r4, r4, #2 - adds r1, r7, r4 - ldrh r0, [r2] - ldrh r5, [r1] - adds r0, r0, r5 - strh r0, [r1] - ldr r0, _0802EAC4 @ =0x00000322 - adds r5, r7, r0 - ldrh r0, [r3] - ldrh r2, [r5] - adds r0, r0, r2 - strh r0, [r5] - ldr r3, _0802EAE0 @ =0x0000132C - adds r4, r7, r3 - ldr r6, [r4] - movs r2, #0 - ldrsh r0, [r1, r2] - movs r1, #0xa - bl __divsi3 - adds r0, #0x9d - strh r0, [r6, #0x10] - ldr r6, [r4] - movs r3, #0 - ldrsh r0, [r5, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x86 - strh r0, [r6, #0x12] - ldr r1, [r4] - movs r5, #0x10 - ldrsh r0, [r1, r5] - lsls r0, r0, #1 - strh r0, [r1, #0x28] - ldr r1, [r4] - movs r2, #0x12 - ldrsh r0, [r1, r2] - lsls r0, r0, #1 - strh r0, [r1, #0x2a] - ldr r1, [r4] - movs r3, #0x10 - ldrsh r0, [r1, r3] - lsls r0, r0, #8 - str r0, [r1, #0x34] - ldr r1, [r4] - movs r5, #0x12 - ldrsh r0, [r1, r5] - lsls r0, r0, #8 - str r0, [r1, #0x38] - mov r1, sb - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - ldr r0, [r4] - movs r2, #0x12 - ldrsh r0, [r0, r2] - mov r3, r8 - lsls r3, r3, #0x10 - asrs r3, r3, #0x10 - mov r8, r3 - cmp r0, r8 - bge _0802EAF6 - movs r4, #0xc2 - lsls r4, r4, #2 - adds r1, r7, r4 - ldrh r0, [r1] - cmp r0, #0x63 - bls _0802EAE8 - movs r5, #0 - strh r5, [r1] - ldr r0, _0802EAE4 @ =0x00000306 - adds r1, r7, r0 - movs r0, #6 - strb r0, [r1] - ldr r1, _0802EABC @ =gCurrentPinballGame - ldr r0, [r1] - movs r2, #0xc3 - lsls r2, r2, #2 - adds r0, r0, r2 - movs r1, #0x41 - strh r1, [r0] - bl m4aMPlayAllStop - b _0802EAF6 - .align 2, 0 -_0802EABC: .4byte gCurrentPinballGame -_0802EAC0: .4byte 0x0000FE98 -_0802EAC4: .4byte 0x00000322 -_0802EAC8: .4byte gUnknown_08137CBC -_0802EACC: .4byte 0x0000FFFE -_0802EAD0: .4byte 0x0000030E -_0802EAD4: .4byte 0x0000FFF4 -_0802EAD8: .4byte 0x0000031E -_0802EADC: .4byte 0x0000FFF6 -_0802EAE0: .4byte 0x0000132C -_0802EAE4: .4byte 0x00000306 -_0802EAE8: - movs r4, #0 - mov r3, sb - strh r4, [r3] - ldr r5, _0802EB24 @ =0x00000306 - adds r1, r7, r5 - movs r0, #7 - strb r0, [r1] -_0802EAF6: - ldr r0, _0802EB28 @ =gCurrentPinballGame - ldr r1, [r0] - movs r7, #0xc4 - lsls r7, r7, #2 - adds r1, r1, r7 - ldrh r0, [r1] - adds r2, r0, #1 - strh r2, [r1] -_0802EB06: - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x23 - bl __modsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x22 - beq _0802EB1A - b _0802EFFC -_0802EB1A: - movs r0, 0xE3 @=SE_UNKNOWN_0xE3 - bl m4aSongNumStart - b _0802EFFC - .align 2, 0 -_0802EB24: .4byte 0x00000306 -_0802EB28: .4byte gCurrentPinballGame -_0802EB2C: - ldr r1, _0802EBC4 @ =gCurrentPinballGame - ldr r0, [r1] - movs r2, #0x88 - lsls r2, r2, #5 - adds r0, r0, r2 - movs r1, #1 - strb r1, [r0] - ldr r0, _0802EBC8 @ =gUnknown_08137CBC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov sl, r0 - ldr r3, _0802EBC4 @ =gCurrentPinballGame - ldr r0, [r3] - movs r5, #0xc3 - lsls r5, r5, #2 - adds r0, r0, r5 - ldrh r0, [r0] - cmp r0, #0x41 - bne _0802EB66 - movs r0, 0x9F @=SE_UNKNOWN_0x9F - bl m4aSongNumStart - ldr r0, _0802EBCC @ =gMain - ldrh r1, [r0, #0x38] - movs r1, #0x9e - strh r1, [r0, #0x38] -_0802EB66: - ldr r7, _0802EBC4 @ =gCurrentPinballGame - ldr r4, [r7] - adds r3, r4, r5 - ldrh r0, [r3] - cmp r0, #0 - bne _0802EB74 - b _0802EFFC -_0802EB74: - subs r0, #1 - strh r0, [r3] - ldr r2, _0802EBCC @ =gMain - ldrh r0, [r3] - lsrs r0, r0, #2 - movs r1, #0x10 - subs r1, r1, r0 - ldrh r0, [r2, #0x3c] - strh r1, [r2, #0x3c] - ldrh r0, [r3] - cmp r0, #0 - beq _0802EB8E - b _0802EFFC -_0802EB8E: - movs r0, #0xa1 - lsls r0, r0, #2 - adds r1, r4, r0 - movs r0, #7 - strb r0, [r1] - ldr r0, [r7] - ldr r1, _0802EBD0 @ =0x00000282 - adds r0, r0, r1 - movs r1, #2 - strb r1, [r0] - ldr r0, [r7] - ldr r2, _0802EBD4 @ =0x0000072E - adds r1, r0, r2 - ldrb r1, [r1] - ldr r3, _0802EBD8 @ =0x0000073C - adds r0, r0, r3 - strb r1, [r0] - ldr r0, [r7] - ldr r4, _0802EBDC @ =0x0000072F - adds r1, r0, r4 - ldrb r1, [r1] - ldr r5, _0802EBE0 @ =0x0000073D - adds r0, r0, r5 - strb r1, [r0] - bl sub_1C73C - b _0802EFFC - .align 2, 0 -_0802EBC4: .4byte gCurrentPinballGame -_0802EBC8: .4byte gUnknown_08137CBC -_0802EBCC: .4byte gMain -_0802EBD0: .4byte 0x00000282 -_0802EBD4: .4byte 0x0000072E -_0802EBD8: .4byte 0x0000073C -_0802EBDC: .4byte 0x0000072F -_0802EBE0: .4byte 0x0000073D -_0802EBE4: - ldr r7, _0802EC28 @ =gCurrentPinballGame - ldr r1, [r7] - movs r0, #0xc8 - lsls r0, r0, #2 - adds r2, r1, r0 - movs r3, #0 - ldr r0, _0802EC2C @ =0x0000F8A8 - strh r0, [r2] - ldr r4, _0802EC30 @ =0x00000322 - adds r2, r1, r4 - ldr r0, _0802EC34 @ =0x0000FCE0 - strh r0, [r2] - movs r5, #0xc7 - lsls r5, r5, #2 - adds r2, r1, r5 - movs r0, #0x52 - strh r0, [r2] - ldr r7, _0802EC38 @ =0x0000031E - adds r0, r1, r7 - strh r3, [r0] - movs r2, #0xc3 - lsls r2, r2, #2 - adds r0, r1, r2 - strh r3, [r0] - ldr r3, _0802EC3C @ =0x00000306 - adds r1, r1, r3 - movs r0, #8 - strb r0, [r1] - movs r4, #0xd - mov sl, r4 - movs r5, #9 - str r5, [sp] - b _0802EFFC - .align 2, 0 -_0802EC28: .4byte gCurrentPinballGame -_0802EC2C: .4byte 0x0000F8A8 -_0802EC30: .4byte 0x00000322 -_0802EC34: .4byte 0x0000FCE0 -_0802EC38: .4byte 0x0000031E -_0802EC3C: .4byte 0x00000306 -_0802EC40: - ldr r6, _0802ECCC @ =gCurrentPinballGame - ldr r0, [r6] - movs r5, #0xc3 - lsls r5, r5, #2 - adds r0, r0, r5 - ldrh r4, [r0] - adds r0, r4, #0 - movs r1, #0x18 - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #6 - bl __udivsi3 - adds r0, #0xd - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov sl, r0 - lsls r4, r4, #0x1a - lsrs r4, r4, #0x10 - adds r0, r4, #0 - bl Sin - adds r1, r0, #0 - ldr r4, [r6] - lsls r1, r1, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #4 - subs r0, r0, r1 - lsls r0, r0, #4 - ldr r1, _0802ECD0 @ =0x00004E20 - bl __divsi3 - ldr r7, _0802ECD4 @ =0x0000030E - adds r1, r4, r7 - movs r7, #0 - strh r0, [r1] - adds r4, r4, r5 - ldrh r0, [r4] - cmp r0, #0 - bne _0802EC9A - movs r0, 0xE4 @=SE_UNKNOWN_0xE4 - bl m4aSongNumStart -_0802EC9A: - ldr r2, [r6] - adds r1, r2, r5 - ldrh r0, [r1] - cmp r0, #0x27 - bhi _0802ECE0 - movs r0, #0xc8 - lsls r0, r0, #2 - adds r1, r2, r0 - movs r3, #0xc7 - lsls r3, r3, #2 - adds r0, r2, r3 - ldrh r0, [r0] - ldrh r4, [r1] - adds r0, r0, r4 - strh r0, [r1] - ldr r5, _0802ECD8 @ =0x00000322 - adds r1, r2, r5 - ldr r7, _0802ECDC @ =0x0000031E - adds r0, r2, r7 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - b _0802ED14 - .align 2, 0 -_0802ECCC: .4byte gCurrentPinballGame -_0802ECD0: .4byte 0x00004E20 -_0802ECD4: .4byte 0x0000030E -_0802ECD8: .4byte 0x00000322 -_0802ECDC: .4byte 0x0000031E -_0802ECE0: - cmp r0, #0x45 - bls _0802ED14 - strh r7, [r1] - ldr r3, _0802EDF4 @ =0x00000306 - adds r1, r2, r3 - movs r0, #9 - strb r0, [r1] - ldr r1, [r6] - movs r4, #0xc8 - lsls r4, r4, #2 - adds r2, r1, r4 - movs r0, #0x96 - lsls r0, r0, #3 - strh r0, [r2] - ldr r5, _0802EDF8 @ =0x00000322 - adds r1, r1, r5 - ldr r0, _0802EDFC @ =0x0000FC18 - strh r0, [r1] - movs r0, 0xE3 @=SE_UNKNOWN_0xE3 - bl m4aSongNumStart - ldr r0, [r6] - movs r1, #0xc4 - lsls r1, r1, #2 - adds r0, r0, r1 - strh r7, [r0] -_0802ED14: - ldr r0, _0802EE00 @ =gCurrentPinballGame - ldr r2, [r0] - movs r6, #0xc3 - lsls r6, r6, #2 - adds r1, r2, r6 - ldrh r1, [r1] - cmp r1, #0xd - bne _0802ED90 - ldr r5, _0802EE04 @ =0x0000132C - adds r0, r2, r5 - ldr r1, [r0] - movs r0, #0 - strb r0, [r1] - ldr r2, _0802EE00 @ =gCurrentPinballGame - ldr r4, [r2] - movs r3, #0xc5 - lsls r3, r3, #2 - adds r1, r4, r3 - movs r0, #5 - strh r0, [r1] - ldr r7, _0802EE08 @ =0x00000316 - adds r1, r4, r7 - ldr r0, _0802EE0C @ =0x0000FFE7 - strh r0, [r1] - movs r1, #0xc8 - lsls r1, r1, #2 - adds r0, r4, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r0, #0x9d - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #1 - movs r3, #0xc6 - lsls r3, r3, #2 - adds r0, r4, r3 - strh r1, [r0] - adds r7, #0xc - adds r0, r4, r7 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r0, #0x86 - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #1 - ldr r2, _0802EE10 @ =0x0000031A - adds r0, r4, r2 - strh r1, [r0] - adds r4, r4, r5 - ldr r1, [r4] - movs r0, #1 - strb r0, [r1, #1] -_0802ED90: - ldr r3, _0802EE00 @ =gCurrentPinballGame - ldr r7, [r3] - ldrb r0, [r7, #0x1f] - cmp r0, #0 - bne _0802ED9C - b _0802EED8 -_0802ED9C: - adds r0, r7, r6 - ldrh r0, [r0] - cmp r0, #0xc - bhi _0802EE14 - ldr r5, _0802EE04 @ =0x0000132C - adds r4, r7, r5 - ldr r5, [r4] - movs r1, #0xc8 - lsls r1, r1, #2 - adds r0, r7, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - movs r1, #0xa - bl __divsi3 - adds r0, #0x9d - strh r0, [r5, #0x10] - ldr r5, [r4] - ldr r3, _0802EDF8 @ =0x00000322 - adds r0, r7, r3 - movs r7, #0 - ldrsh r0, [r0, r7] - movs r1, #0xa - bl __divsi3 - adds r0, #0x86 - strh r0, [r5, #0x12] - ldr r1, [r4] - movs r2, #0x10 - ldrsh r0, [r1, r2] - lsls r0, r0, #1 - strh r0, [r1, #0x28] - ldr r1, [r4] - movs r3, #0x12 - ldrsh r0, [r1, r3] - lsls r0, r0, #1 - strh r0, [r1, #0x2a] - ldr r1, [r4] - movs r5, #0x10 - ldrsh r0, [r1, r5] - lsls r0, r0, #8 - str r0, [r1, #0x34] - ldr r1, [r4] - b _0802EED0 - .align 2, 0 -_0802EDF4: .4byte 0x00000306 -_0802EDF8: .4byte 0x00000322 -_0802EDFC: .4byte 0x0000FC18 -_0802EE00: .4byte gCurrentPinballGame -_0802EE04: .4byte 0x0000132C -_0802EE08: .4byte 0x00000316 -_0802EE0C: .4byte 0x0000FFE7 -_0802EE10: .4byte 0x0000031A -_0802EE14: - ldr r0, _0802EEE4 @ =0x00000316 - adds r1, r7, r0 - ldrh r0, [r1] - adds r0, #2 - movs r2, #0 - mov r8, r2 - strh r0, [r1] - movs r3, #0xc6 - lsls r3, r3, #2 - adds r2, r7, r3 - movs r4, #0xc5 - lsls r4, r4, #2 - adds r0, r7, r4 - ldrh r0, [r0] - ldrh r5, [r2] - adds r0, r0, r5 - strh r0, [r2] - ldr r0, _0802EEE8 @ =0x0000031A - adds r4, r7, r0 - ldrh r0, [r1] - ldrh r1, [r4] - adds r0, r0, r1 - strh r0, [r4] - ldr r3, _0802EEEC @ =0x0000132C - mov sb, r3 - adds r5, r7, r3 - ldr r6, [r5] - movs r1, #0 - ldrsh r0, [r2, r1] - movs r1, #0xa - bl __divsi3 - strh r0, [r6, #0x10] - ldr r6, [r5] - movs r2, #0 - ldrsh r0, [r4, r2] - movs r1, #0xa - bl __divsi3 - strh r0, [r6, #0x12] - ldr r5, [r5] - movs r3, #0x12 - ldrsh r0, [r5, r3] - cmp r0, #0x5a - ble _0802EEAA - movs r0, #0x5b - strh r0, [r5, #0x12] - ldr r4, _0802EEF0 @ =0x000005F7 - adds r0, r7, r4 - mov r5, r8 - strb r5, [r0] - ldr r7, _0802EEF4 @ =gCurrentPinballGame - ldr r0, [r7] - strb r5, [r0, #0x1f] - ldr r1, [r7] - ldr r0, _0802EEEC @ =0x0000132C - adds r1, r1, r0 - ldr r2, [r1] - movs r0, #0x80 - strh r0, [r2, #0x30] - ldr r2, [r1] - adds r0, #0x80 - strh r0, [r2, #0x32] - ldr r1, [r1] - movs r0, #3 - strb r0, [r1, #1] - ldr r0, [r7] - adds r0, #0x24 - strb r5, [r0] - movs r0, 0xE5 @=SE_UNKNOWN_0xE5 - bl m4aSongNumStart - movs r0, #7 - bl sub_11B0 -_0802EEAA: - ldr r2, _0802EEF4 @ =gCurrentPinballGame - ldr r1, [r2] - add r1, sb - ldr r2, [r1] - movs r3, #0x10 - ldrsh r0, [r2, r3] - lsls r0, r0, #1 - strh r0, [r2, #0x28] - ldr r2, [r1] - movs r4, #0x12 - ldrsh r0, [r2, r4] - lsls r0, r0, #1 - strh r0, [r2, #0x2a] - ldr r2, [r1] - movs r5, #0x10 - ldrsh r0, [r2, r5] - lsls r0, r0, #8 - str r0, [r2, #0x34] - ldr r1, [r1] -_0802EED0: - movs r7, #0x12 - ldrsh r0, [r1, r7] - lsls r0, r0, #8 - str r0, [r1, #0x38] -_0802EED8: - movs r0, #9 - str r0, [sp] - ldr r2, _0802EEF4 @ =gCurrentPinballGame - ldr r1, [r2] - b _0802EFBC - .align 2, 0 -_0802EEE4: .4byte 0x00000316 -_0802EEE8: .4byte 0x0000031A -_0802EEEC: .4byte 0x0000132C -_0802EEF0: .4byte 0x000005F7 -_0802EEF4: .4byte gCurrentPinballGame -_0802EEF8: - ldr r0, _0802EF64 @ =gCurrentPinballGame - ldr r4, [r0] - movs r7, #0xc3 - lsls r7, r7, #2 - adds r5, r4, r7 - ldrh r0, [r5] - movs r1, #0x1a - bl __umodsi3 - ldr r2, _0802EF68 @ =gUnknown_08137CBC - ldr r1, _0802EF6C @ =0x0000FFFE - ands r0, r1 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r1, #4 - lsls r1, r1, #0x10 - lsrs r1, r1, #0x10 - mov sl, r1 - adds r2, #1 - adds r0, r0, r2 - movs r1, #0 - ldrsb r1, [r0, r1] - ldr r2, _0802EF70 @ =0x0000030E - adds r0, r4, r2 - strh r1, [r0] - movs r3, #0xc7 - lsls r3, r3, #2 - adds r2, r4, r3 - ldr r0, _0802EF74 @ =0x0000FFF4 - strh r0, [r2] - adds r7, #0x12 - adds r3, r4, r7 - movs r0, #0xa - strh r0, [r3] - ldrh r0, [r5] - cmp r0, #0x63 - bhi _0802EF7C - movs r0, #0xc8 - lsls r0, r0, #2 - adds r1, r4, r0 - ldrh r0, [r2] - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - ldr r5, _0802EF78 @ =0x00000322 - adds r1, r4, r5 - ldrh r0, [r3] - ldrh r7, [r1] - adds r0, r0, r7 - strh r0, [r1] - b _0802EF90 - .align 2, 0 -_0802EF64: .4byte gCurrentPinballGame -_0802EF68: .4byte gUnknown_08137CBC -_0802EF6C: .4byte 0x0000FFFE -_0802EF70: .4byte 0x0000030E -_0802EF74: .4byte 0x0000FFF4 -_0802EF78: .4byte 0x00000322 -_0802EF7C: - movs r0, #0 - strh r0, [r5] - ldr r0, _0802EFCC @ =0x00000306 - adds r1, r4, r0 - movs r0, #0xa - strb r0, [r1] - ldr r0, _0802EFD0 @ =gMPlayInfo_SE1 - ldr r1, _0802EFD4 @ =gUnknown_086A11A4 - bl MPlayStart -_0802EF90: - ldr r4, _0802EFD8 @ =gCurrentPinballGame - ldr r1, [r4] - movs r2, #0xc4 - lsls r2, r2, #2 - adds r1, r1, r2 - ldrh r0, [r1] - adds r2, r0, #1 - strh r2, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x23 - bl __modsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x22 - bne _0802EFBA - ldr r0, _0802EFD0 @ =gMPlayInfo_SE1 - ldr r1, _0802EFD4 @ =gUnknown_086A11A4 - bl MPlayStart -_0802EFBA: - ldr r1, [r4] -_0802EFBC: - movs r3, #0xc3 - lsls r3, r3, #2 - adds r1, r1, r3 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - b _0802EFFC - .align 2, 0 -_0802EFCC: .4byte 0x00000306 -_0802EFD0: .4byte gMPlayInfo_SE1 -_0802EFD4: .4byte gUnknown_086A11A4 -_0802EFD8: .4byte gCurrentPinballGame -_0802EFDC: - ldr r4, _0802F10C @ =gCurrentPinballGame - ldr r0, [r4] - ldr r5, _0802F110 @ =0x0000030E - adds r1, r0, r5 - movs r2, #0 - movs r3, #0 - strh r3, [r1] - ldr r7, _0802F114 @ =0x00000306 - adds r0, r0, r7 - strb r2, [r0] - ldr r0, [r4] - movs r1, #0xc3 - lsls r1, r1, #2 - adds r0, r0, r1 - strh r3, [r0] - mov sl, r3 -_0802EFFC: - ldr r2, _0802F118 @ =gMain+0x2E18 @gMain.spriteGroups[60] - ldrh r0, [r2] - cmp r0, #0 - beq _0802F0FA - ldr r2, _0802F11C @ =0x040000D4 - mov r3, sl - lsls r1, r3, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _0802F120 @ =gUnknown_084BB16C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _0802F124 @ =0x060122A0 - str r0, [r2, #4] - ldr r0, _0802F128 @ =0x80000240 - str r0, [r2, #8] - ldr r0, [r2, #8] - ldr r0, _0802F10C @ =gCurrentPinballGame - ldr r4, [r0] - movs r5, #0xc8 - lsls r5, r5, #2 - adds r0, r4, r5 - movs r7, #0 - ldrsh r0, [r0, r7] - movs r1, #0xa - bl __divsi3 - adds r1, r4, #0 - adds r1, #0x58 - ldrh r1, [r1] - subs r1, #0x92 - subs r0, r0, r1 - ldr r1, _0802F118 @ =gMain+0x2E18 @gMain.spriteGroups[60] - strh r0, [r1, #2] - ldr r2, _0802F12C @ =0x00000322 - adds r0, r4, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - movs r1, #0xa - bl __divsi3 - adds r5, r0, #0 - adds r0, r4, #0 - adds r0, #0x5a - ldrh r0, [r0] - subs r0, #0x6e - subs r5, r5, r0 - ldr r7, _0802F110 @ =0x0000030E - adds r4, r4, r7 - movs r1, #0 - ldrsh r0, [r4, r1] - movs r1, #0xa - bl __divsi3 - adds r5, r5, r0 - ldr r2, _0802F118 @ =gMain+0x2E18 @gMain.spriteGroups[60] - strh r5, [r2, #4] - movs r2, #0 - ldr r3, [sp] - lsls r1, r3, #0x10 - ldr r4, _0802F130 @ =gUnknown_086B3EF6 - mov sb, r4 - ldr r6, _0802F134 @ =gOamBuffer - asrs r1, r1, #0x10 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #3 - mov sl, r0 - ldr r5, _0802F138 @ =0xFFFFFE00 - mov r8, r5 -_0802F08C: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r4, r3, #3 - adds r4, #8 - ldr r7, _0802F118 @ =gMain+0x2E18 @gMain.spriteGroups[60] - adds r4, r7, r4 - ldrh r2, [r4] - lsls r2, r2, #3 - adds r2, r2, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - add r0, sb - add r0, sl - ldrh r1, [r0] - strh r1, [r2] - adds r0, #2 - adds r2, #2 - ldrh r1, [r0] - strh r1, [r2] - ldrh r0, [r0, #2] - strh r0, [r2, #2] - ldrh r2, [r4] - lsls r2, r2, #3 - adds r2, r2, r6 - ldrh r0, [r2, #2] - mov ip, r0 - mov r5, ip - lsls r1, r5, #0x17 - lsrs r1, r1, #0x17 - movs r5, #2 - ldrsh r0, [r7, r5] - adds r1, r1, r0 - ldr r7, _0802F13C @ =0x000001FF - adds r0, r7, #0 - ands r1, r0 - mov r0, r8 - mov r5, ip - ands r0, r5 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r6 - ldr r7, _0802F118 @ =gMain+0x2E18 @gMain.spriteGroups[60] - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #3 - ble _0802F08C -_0802F0FA: - add sp, #4 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0802F10C: .4byte gCurrentPinballGame -_0802F110: .4byte 0x0000030E -_0802F114: .4byte 0x00000306 -_0802F118: .4byte gMain+0x2E18 @gMain.spriteGroups[60] -_0802F11C: .4byte 0x040000D4 -_0802F120: .4byte gUnknown_084BB16C -_0802F124: .4byte 0x060122A0 -_0802F128: .4byte 0x80000240 -_0802F12C: .4byte 0x00000322 -_0802F130: .4byte gUnknown_086B3EF6 -_0802F134: .4byte gOamBuffer -_0802F138: .4byte 0xFFFFFE00 -_0802F13C: .4byte 0x000001FF - thumb_func_start sub_2F140 sub_2F140: @ 0x0802F140 push {r4, r5, r6, r7, lr} diff --git a/expected_objs/sub_2E6AC.o b/expected_objs/sub_2E6AC.o deleted file mode 100644 index 3c178317c132632085ffd9ffd50dc93440077e36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8756 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 diff --git a/include/functions.h b/include/functions.h index 422a565..8ac0af5 100644 --- a/include/functions.h +++ b/include/functions.h @@ -445,7 +445,7 @@ extern void sub_1B140(s8); //extern ? sub_1C544(); extern void sub_1C560(void); extern void sub_1C5AC(void); -//extern ? sub_1C73C(); +extern void sub_1C73C(void); extern void sub_1C7F4(u16, u16); extern void sub_1D128(void); extern void sub_1D4D0(void); diff --git a/include/global.h b/include/global.h index 3841da6..3c0738d 100644 --- a/include/global.h +++ b/include/global.h @@ -313,7 +313,8 @@ struct PinballGame /*0x281*/ s8 evolvablePartySize; /*0x282*/ s8 unk282; /*0x283*/ u8 numCompletedBonusStages; - /*0x284*/ u8 filler284[0x2]; + /*0x284*/ s8 unk284; + /*0x285*/ u8 filler285[0x1]; /*0x286*/ s16 unk286; /*0x288*/ s16 unk288; /*0x28A*/ s16 unk28A; @@ -361,12 +362,12 @@ struct PinballGame /*0x301*/ u8 unk301; /*0x302*/ u8 filler302[0x4]; /*0x306*/ s8 unk306; - /*0x307*/ u8 filler307[0x1]; + /*0x307*/ s8 unk307; /*0x308*/ u16 unk308; /*0x30A*/ u16 unk30A; /*0x30C*/ u16 unk30C; /*0x30E*/ s16 unk30E; - /*0x310*/ u16 unk310; + /*0x310*/ s16 unk310; /*0x312*/ u8 filler312[0x2]; /*0x314*/ s16 unk314; /*0x316*/ s16 unk316; diff --git a/src/rom_2E67C.c b/src/rom_2E67C.c index 8034591..6a4e9fe 100644 --- a/src/rom_2E67C.c +++ b/src/rom_2E67C.c @@ -1,4 +1,16 @@ #include "global.h" +#include "m4a.h" +#include "main.h" +#include "constants/bg_music.h" + +extern const s16 gUnknown_086AE45A[]; +extern const s16 gUnknown_086AE3DC[][3]; +extern const s8 gUnknown_08137CBC[][2]; +extern const u8 gUnknown_084BB16C[][0x480]; +extern const u16 gUnknown_086B3EF6[][4][3]; + +extern struct SongHeader gUnknown_086A11A4; + void sub_2E67C(void) { @@ -10,3 +22,300 @@ void sub_2E67C(void) gCurrentPinballGame->unk306 = 0; } } + +void sub_2E6AC(void) +{ + s16 i; + struct SpriteGroup *group = &gMain.spriteGroups[60]; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + s16 var_sl; + s16 sp0; + s16 index; + + var_sl = 0; + sp0 = 0; + switch (gCurrentPinballGame->unk306) + { + case 0: + gCurrentPinballGame->unk30E = 0; + var_sl = (gCurrentPinballGame->unk290 % 50) / 25; + gCurrentPinballGame->unk320 = 0; + gCurrentPinballGame->unk322 = 0; + break; + case 1: + var_sl = gUnknown_086AE45A[(gCurrentPinballGame->unk290 % 40) / 10]; + gCurrentPinballGame->unk320 = 0; + gCurrentPinballGame->unk322 = 0; + gCurrentPinballGame->unk307 = 0; + gCurrentPinballGame->unk30A = 0; + if (gCurrentPinballGame->unk13 > 2) + { + gCurrentPinballGame->unk306 = 0; + var_sl = 0; + } + break; + case 2: + var_sl = 4; + break; + case 3: + if (gCurrentPinballGame->unk30C < 3) + { + if (gCurrentPinballGame->unk30C == 0) + { + gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ball->velocity.x = 0; + gCurrentPinballGame->ball->velocity.y = 0; + gCurrentPinballGame->ball->unk6 = 0; + m4aSongNumStart(SE_UNKNOWN_0xE2); + sub_11B0(7); + gCurrentPinballGame->unk3C = 100000; + } + + gCurrentPinballGame->ball->positionQ0.x = 156; + gCurrentPinballGame->ball->positionQ0.y = 121 + gCurrentPinballGame->unk30C * 2; + var_sl = 4; + } + else if (gCurrentPinballGame->unk30C < 23) + { + gCurrentPinballGame->ball->positionQ0.x = 157; + gCurrentPinballGame->ball->positionQ0.y = 134; + gCurrentPinballGame->ball->unk0 = 1; + var_sl = 5; + } + else + { + gCurrentPinballGame->unk306 = 4; + gCurrentPinballGame->unk30C = 0; + var_sl = 2; + } + + gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; + gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; + gCurrentPinballGame->unk30C++; + gCurrentPinballGame->unk310 = 0; + break; + case 4: + if (gUnknown_086AE3DC[gCurrentPinballGame->unk307][2] > gCurrentPinballGame->unk30A) + { + gCurrentPinballGame->unk30A++; + } + else + { + gCurrentPinballGame->unk30A = 0; + gCurrentPinballGame->unk307++; + if (gCurrentPinballGame->unk307 == 21) + { + gCurrentPinballGame->unk307 = 20; + gCurrentPinballGame->unk306 = 5; + gCurrentPinballGame->unk30C = 0; + } + + if (gCurrentPinballGame->unk307 == 1) + m4aSongNumStart(SE_UNKNOWN_0xE3); + } + + sp0 = gUnknown_086AE3DC[gCurrentPinballGame->unk307][0]; + var_sl = gUnknown_086AE3DC[gCurrentPinballGame->unk307][1]; + if (gCurrentPinballGame->unk310++ % 35 == 34) + m4aSongNumStart(SE_UNKNOWN_0xE3); + break; + case 5: + if (gCurrentPinballGame->unk30C == 0) + { + gCurrentPinballGame->unk320 = -360; + gCurrentPinballGame->unk322 = -200; + } + + index = (gCurrentPinballGame->unk30C % 26) / 2; + var_sl = gUnknown_08137CBC[index][0]; + gCurrentPinballGame->unk30E = gUnknown_08137CBC[index][1] * 10; + gCurrentPinballGame->unk31C = -12; + gCurrentPinballGame->unk31E = -10; + gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; + gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk320 / 10 + 157; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk322 / 10 + 134; + gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; + gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; + gCurrentPinballGame->unk30C++; + if (gCurrentPinballGame->ball->positionQ0.y < -12) + { + if (gCurrentPinballGame->unk308 > 99) + { + gCurrentPinballGame->unk308 = 0; + gCurrentPinballGame->unk306 = 6; + gCurrentPinballGame->unk30C = 65; + m4aMPlayAllStop(); + } + else + { + gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->unk306 = 7; + } + } + + if (gCurrentPinballGame->unk310++ % 35 == 34) + m4aSongNumStart(SE_UNKNOWN_0xE3); + break; + case 6: + gCurrentPinballGame->unk1100 = 1; + var_sl = gUnknown_08137CBC[0][0]; + if (gCurrentPinballGame->unk30C == 65) + { + m4aSongNumStart(SE_UNKNOWN_0x9F); + gMain.blendControl = 0x9E; + } + + if (gCurrentPinballGame->unk30C) + { + gCurrentPinballGame->unk30C--; + gMain.blendBrightness = 16 - gCurrentPinballGame->unk30C / 4; + if (gCurrentPinballGame->unk30C == 0) + { + gCurrentPinballGame->unk284 = 7; + gCurrentPinballGame->unk282 = 2; + gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; + sub_1C73C(); + } + } + break; + case 7: + gCurrentPinballGame->unk320 = -1880; + gCurrentPinballGame->unk322 = -800; + gCurrentPinballGame->unk31C = 82; + gCurrentPinballGame->unk31E = 0; + gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->unk306 = 8; + var_sl = 13; + sp0 = 9; + break; + case 8: + var_sl = (gCurrentPinballGame->unk30C % 24) / 6 + 13; + gCurrentPinballGame->unk30E = (Sin(gCurrentPinballGame->unk30C * 0x400) * 240) / 20000; + if (gCurrentPinballGame->unk30C == 0) + m4aSongNumStart(SE_UNKNOWN_0xE4); + + if (gCurrentPinballGame->unk30C < 40) + { + gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; + gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; + } + else if (gCurrentPinballGame->unk30C >= 70) + { + gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->unk306 = 9; + gCurrentPinballGame->unk320 = 1200; + gCurrentPinballGame->unk322 = -1000; + m4aSongNumStart(SE_UNKNOWN_0xE3); + gCurrentPinballGame->unk310 = 0; + } + + if (gCurrentPinballGame->unk30C == 13) + { + gCurrentPinballGame->ball->unk0 = 0; + gCurrentPinballGame->unk314 = 5; + gCurrentPinballGame->unk316 = -25; + gCurrentPinballGame->unk318 = (gCurrentPinballGame->unk320 / 10 + 157) * 10; + gCurrentPinballGame->unk31A = (gCurrentPinballGame->unk322 / 10 + 134) * 10; + gCurrentPinballGame->ball->unk1 = 1; + } + + if (gCurrentPinballGame->unk1F) + { + if (gCurrentPinballGame->unk30C < 13) + { + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk320 / 10 + 157; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk322 / 10 + 134; + gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; + gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; + } + else + { + gCurrentPinballGame->unk316 += 2; + gCurrentPinballGame->unk318 += gCurrentPinballGame->unk314; + gCurrentPinballGame->unk31A += gCurrentPinballGame->unk316; + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk318 / 10; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk31A / 10; + if (gCurrentPinballGame->ball->positionQ0.y >= 91) + { + gCurrentPinballGame->ball->positionQ0.y = 91; + gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->ball->velocity.x = 128; + gCurrentPinballGame->ball->velocity.y = 256; + gCurrentPinballGame->ball->unk1 = 3; + gCurrentPinballGame->unk24 = 0; + m4aSongNumStart(SE_UNKNOWN_0xE5); + sub_11B0(7); + } + + gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; + gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; + } + } + + sp0 = 9; + gCurrentPinballGame->unk30C++; + break; + case 9: + index = (gCurrentPinballGame->unk30C % 26) / 2; + var_sl = gUnknown_08137CBC[index][0] + 4; + gCurrentPinballGame->unk30E = gUnknown_08137CBC[index][1]; + gCurrentPinballGame->unk31C = -12; + gCurrentPinballGame->unk31E = 10; + if (gCurrentPinballGame->unk30C < 100) + { + gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; + gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; + } + else + { + gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->unk306 = 10; + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A11A4); + } + + if (gCurrentPinballGame->unk310++ % 35 == 34) + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A11A4); + + gCurrentPinballGame->unk30C++; + break; + case 10: + gCurrentPinballGame->unk30E = 0; + gCurrentPinballGame->unk306 = 0; + gCurrentPinballGame->unk30C = 0; + var_sl = 0; + break; + } + + if (group->available) + { + DmaCopy16(3, gUnknown_084BB16C[var_sl], (void *)0x060122A0, 0x480); + group->baseX = gCurrentPinballGame->unk320 / 10 + 146 - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk322 / 10 + 110 - gCurrentPinballGame->unk5A + gCurrentPinballGame->unk30E / 10; + for (i = 0; i < 4; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B3EF6[sp0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + } +}