From c8f45917aea97fd98472cff352e165a59635ebfe Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 8 Aug 2025 08:12:26 -0500 Subject: [PATCH] sub_3C6E0 --- asm/rom_3219C.s | 607 -------------------------------------- expected_objs/sub_3C6E0.o | Bin 3664 -> 0 bytes include/global.h | 2 +- src/rom_49A34.c | 129 ++++++++ 4 files changed, 130 insertions(+), 608 deletions(-) delete mode 100644 expected_objs/sub_3C6E0.o diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index d10d43e..efecf13 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -10942,610 +10942,3 @@ _0803C6D0: .4byte 0x00001290 _0803C6D4: .4byte 0x000004C9 _0803C6D8: .4byte gMPlayInfo_BGM _0803C6DC: .4byte 0x0000FFFF - - thumb_func_start sub_3C6E0 -sub_3C6E0: @ 0x0803C6E0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r7, _0803C820 @ =gMain+0x17D0 @gMain.spriteGroups[29] - ldrh r0, [r7] - ldr r1, _0803C824 @ =gCurrentPinballGame - mov sl, r1 - cmp r0, #0 - bne _0803C6FA - b _0803CA2E -_0803C6FA: - ldr r1, _0803C828 @ =gUnknown_086AF140 - mov r2, sl - ldr r4, [r2] - ldr r3, _0803C82C @ =0x000003E2 - adds r0, r4, r3 - movs r6, #0 - ldrsh r0, [r0, r6] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrh r0, [r0] - mov r8, r0 - movs r6, #0xfa - lsls r6, r6, #2 - adds r0, r4, r6 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x64 - adds r4, #0x58 - ldrh r1, [r4] - subs r0, r0, r1 - strh r0, [r7, #2] - mov r2, sl - ldr r4, [r2] - ldr r5, _0803C830 @ =0x000003EA - adds r0, r4, r5 - movs r3, #0 - ldrsh r0, [r0, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x54 - adds r4, #0x5a - ldrh r1, [r4] - subs r0, r0, r1 - strh r0, [r7, #4] - mov r0, sl - ldr r4, [r0] - adds r6, r4, r6 - movs r1, #0 - ldrsh r0, [r6, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x76 - movs r2, #0xa2 - lsls r2, r2, #2 - adds r1, r4, r2 - strh r0, [r1] - adds r5, r4, r5 - movs r3, #0 - ldrsh r0, [r5, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x3c - ldr r2, _0803C834 @ =0x0000028A - adds r1, r4, r2 - strh r0, [r1] - movs r3, #0 - ldrsh r0, [r6, r3] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0xb8 - movs r6, #0xfc - lsls r6, r6, #2 - adds r1, r4, r6 - strh r0, [r1] - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0x9c - ldr r2, _0803C838 @ =0x000003F2 - adds r4, r4, r2 - strh r0, [r4] - movs r3, #4 - ldrsh r1, [r7, r3] - movs r0, #0x3c - rsbs r0, r0, #0 - cmp r1, r0 - bge _0803C7B2 - ldr r0, _0803C83C @ =0x0000FFC4 - strh r0, [r7, #4] -_0803C7B2: - movs r4, #4 - ldrsh r0, [r7, r4] - cmp r0, #0xb4 - ble _0803C7BE - movs r0, #0xb4 - strh r0, [r7, #4] -_0803C7BE: - mov r6, sl - ldr r0, [r6] - ldr r1, _0803C840 @ =0x00000389 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #9 - ble _0803C84C - movs r2, #0 - ldr r4, _0803C844 @ =gOamBuffer - ldr r3, _0803C848 @ =0xFFFFFE00 - mov r8, r3 - movs r6, #0xb0 -_0803C7DA: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r4 - ldrh r1, [r2, #2] - mov r0, r8 - ands r0, r1 - movs r1, #0xf0 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r0, [r5] - lsls r0, r0, #3 - adds r0, r0, r4 - movs r1, #0xb4 - strb r1, [r0] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r4 - ldrb r2, [r1, #5] - movs r0, #0xf - ands r0, r2 - orrs r0, r6 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C7DA - b _0803CA2E - .align 2, 0 -_0803C820: .4byte gMain+0x17D0 @gMain.spriteGroups[29] -_0803C824: .4byte gCurrentPinballGame -_0803C828: .4byte gUnknown_086AF140 -_0803C82C: .4byte 0x000003E2 -_0803C830: .4byte 0x000003EA -_0803C834: .4byte 0x0000028A -_0803C838: .4byte 0x000003F2 -_0803C83C: .4byte 0x0000FFC4 -_0803C840: .4byte 0x00000389 -_0803C844: .4byte gOamBuffer -_0803C848: .4byte 0xFFFFFE00 -_0803C84C: - cmp r0, #1 - bne _0803C8FC - movs r2, #0 - mov r4, r8 - lsls r0, r4, #0x10 - ldr r6, _0803C8EC @ =gOamBuffer - asrs r1, r0, #0x10 - movs r0, #0x72 - adds r3, r1, #0 - muls r3, r0, r3 - mov r8, r3 - ldr r4, _0803C8F0 @ =0xFFFFFE00 - mov ip, r4 - movs r0, #0xe0 - mov sb, r0 -_0803C86A: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - adds r2, r0, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0803C8F4 @ =gUnknown_086B65EA - adds r0, r0, r1 - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r6 - ldrh r0, [r2, #2] - lsls r1, r0, #0x17 - lsrs r1, r1, #0x17 - str r1, [sp] - movs r4, #2 - ldrsh r1, [r7, r4] - ldr r0, [sp] - adds r1, r0, r1 - ldr r4, _0803C8F8 @ =0x000001FF - ands r1, r4 - mov r0, ip - ldrh r4, [r2, #2] - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r2, [r1, #5] - movs r0, #0xf - ands r0, r2 - mov r4, sb - orrs r0, r4 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C86A - b _0803CA2E - .align 2, 0 -_0803C8EC: .4byte gOamBuffer -_0803C8F0: .4byte 0xFFFFFE00 -_0803C8F4: .4byte gUnknown_086B65EA -_0803C8F8: .4byte 0x000001FF -_0803C8FC: - cmp r0, #3 - bne _0803C9AC - movs r2, #0 - mov r6, r8 - lsls r0, r6, #0x10 - ldr r6, _0803C99C @ =gOamBuffer - asrs r1, r0, #0x10 - movs r0, #0x72 - adds r3, r1, #0 - muls r3, r0, r3 - mov r8, r3 - ldr r4, _0803C9A0 @ =0xFFFFFE00 - mov ip, r4 - movs r0, #0xb0 - mov sb, r0 -_0803C91A: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - adds r2, r0, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0803C9A4 @ =gUnknown_086B65EA - adds r0, r0, r1 - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r6 - ldrh r0, [r2, #2] - lsls r1, r0, #0x17 - lsrs r1, r1, #0x17 - str r1, [sp] - movs r4, #2 - ldrsh r1, [r7, r4] - ldr r0, [sp] - adds r1, r0, r1 - ldr r4, _0803C9A8 @ =0x000001FF - ands r1, r4 - mov r0, ip - ldrh r4, [r2, #2] - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r2, [r1, #5] - movs r0, #0xf - ands r0, r2 - mov r4, sb - orrs r0, r4 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C91A - b _0803CA2E - .align 2, 0 -_0803C99C: .4byte gOamBuffer -_0803C9A0: .4byte 0xFFFFFE00 -_0803C9A4: .4byte gUnknown_086B65EA -_0803C9A8: .4byte 0x000001FF -_0803C9AC: - movs r2, #0 - mov r6, r8 - lsls r0, r6, #0x10 - ldr r1, _0803CB6C @ =gOamBuffer - mov sb, r1 - asrs r1, r0, #0x10 - movs r0, #0x72 - adds r3, r1, #0 - muls r3, r0, r3 - mov r8, r3 - ldr r4, _0803CB70 @ =0xFFFFFE00 - mov ip, r4 -_0803C9C4: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - mov r6, sb - adds r2, r0, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0803CB74 @ =gUnknown_086B65EA - adds r0, r0, r1 - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, sb - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r6, #2 - ldrsh r0, [r7, r6] - adds r1, r1, r0 - ldr r6, _0803CB78 @ =0x000001FF - adds r0, r6, #0 - ands r1, r0 - mov r0, ip - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - add r1, sb - 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, #0x12 - ble _0803C9C4 -_0803CA2E: - ldr r7, _0803CB7C @ =gMain+0x1380 @gMain.spriteGroups[23] - ldrh r0, [r7] - cmp r0, #0 - bne _0803CA38 - b _0803CB98 -_0803CA38: - mov r3, sl - ldr r0, [r3] - ldr r4, _0803CB80 @ =0x0000047E - adds r1, r0, r4 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - ble _0803CA5E - subs r0, r2, #1 - strb r0, [r1] - ldr r0, [r3] - adds r0, r0, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0803CA5E - strh r0, [r7] -_0803CA5E: - mov r6, sl - ldr r4, [r6] - ldr r1, _0803CB84 @ =0x0000047D - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #1 - adds r1, r0, #1 - ldr r2, _0803CB80 @ =0x0000047E - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bge _0803CA80 - adds r0, #3 -_0803CA80: - asrs r0, r0, #2 - subs r0, r1, r0 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov r8, r0 - movs r3, #0xfa - lsls r3, r3, #2 - adds r0, r4, r3 - movs r6, #0 - ldrsh r0, [r0, r6] - movs r1, #0xa - bl __divsi3 - adds r0, #0x64 - adds r1, r4, #0 - adds r1, #0x58 - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #2] - ldr r1, _0803CB88 @ =0x000003EA - adds r0, r4, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - movs r1, #0xa - bl __divsi3 - adds r0, #0x54 - adds r1, r4, #0 - adds r1, #0x5a - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #4] - movs r2, #0 - ldr r3, _0803CB8C @ =gUnknown_086B6512 - mov sb, r3 - mov r4, r8 - lsls r1, r4, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - mov r8, r0 - ldr r6, _0803CB70 @ =0xFFFFFE00 - mov ip, r6 -_0803CAD8: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - ldr r1, _0803CB6C @ =gOamBuffer - adds r2, r0, r1 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - add r0, sb - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - ldr r6, _0803CB6C @ =gOamBuffer - adds r2, r2, r6 - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r6, #2 - ldrsh r0, [r7, r6] - adds r1, r1, r0 - ldr r6, _0803CB78 @ =0x000001FF - adds r0, r6, #0 - ands r1, r0 - mov r0, ip - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - ldr r0, _0803CB6C @ =gOamBuffer - adds r1, r1, r0 - 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, #5 - ble _0803CAD8 - mov r3, sl - ldr r0, [r3] - ldr r4, _0803CB90 @ =0x000005A4 - adds r0, r0, r4 - ldrb r0, [r0] - cmp r0, #2 - bne _0803CBAE - ldr r0, _0803CB94 @ =gMain - movs r6, #0x9c - lsls r6, r6, #5 - adds r0, r0, r6 - movs r2, #0 - movs r1, #0 - strh r1, [r0] - ldr r0, [r3] - ldr r1, _0803CB80 @ =0x0000047E - adds r0, r0, r1 - strb r2, [r0] - b _0803CBAE - .align 2, 0 -_0803CB6C: .4byte gOamBuffer -_0803CB70: .4byte 0xFFFFFE00 -_0803CB74: .4byte gUnknown_086B65EA -_0803CB78: .4byte 0x000001FF -_0803CB7C: .4byte gMain+0x1380 @gMain.spriteGroups[23] -_0803CB80: .4byte 0x0000047E -_0803CB84: .4byte 0x0000047D -_0803CB88: .4byte 0x000003EA -_0803CB8C: .4byte gUnknown_086B6512 -_0803CB90: .4byte 0x000005A4 -_0803CB94: .4byte gMain -_0803CB98: - mov r2, sl - ldr r0, [r2] - ldr r3, _0803CBC0 @ =0x0000047E - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #8 - bne _0803CBAE - movs r0, #1 - strh r0, [r7] -_0803CBAE: - add sp, #8 - 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 -_0803CBC0: .4byte 0x0000047E diff --git a/expected_objs/sub_3C6E0.o b/expected_objs/sub_3C6E0.o deleted file mode 100644 index 586dc45f7737d23a4a2f8a7af647d060b9ea5108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3664 zcmc(iZ%kWN6u{3b#kC9_W6Zrm<62-%=af7sgIBZZdu_R+P#D|TBy$;*&`~nRu#^dj z&bOJELNu9+iA?ul7-AMRiiRyjNyKC(!x$a&i!SNHbcu_J3HoKanBlp7@4jBx{PWF2 zZtwZs^XJ`rdhdPo#kvR)1Ob=`;Dsy!+{({ba;r0)7wlkz#S2f9W>QBMrcO>qcFL(p zc$8q+{Fxh#;oYPt-q5%pf=6rDKoKFOkvpD?aLxg4Gs{FE~%~Bol=U2H0rH1 zbvU4G*08lo`!lv_t%X?Q?_gBFVL2wfU3wbEMVl5w|69iBHmS0KjzQU?F#^`vb<@(H z_{?z!j=SUB_*u!*Fd@1$YuO(Mx4D$SiGXmetbSUvmdou^ULif@n%4FaDZVj`GarHn z;9tsz9?;TB>MY zpK8(QoKHJiQlIC}JqWK^%Khyyriz6Tx6(mcQ!a(Bg3f)!ArI#bX`(H&k`ZGi5#n05 zmf7_9LUx{1Tf&W#lbJ6e(mnH?{NLvrzR!H2l+Lv;JVLV7J&e^|UfE{CY8(59+BSq* zQ#Y`-7SD9MT|Ce%IR&h2wyxn2t7~>ge3{;ZCy1V&4;S_jG2Rjp9C<_Fvh4$}J>Bw% ztzV3TL*I+kOUC_K9j^~}82eKJ)fsF!XApW^%aODKTQOK6A5UJ{Td)}XYi@eIKoWVIJv#xtyeMm)_^D{A5n2Sk0p)rbCWw~5WC z9ehnT+*6Y^^>%S(RdTn?rD-kJM(D~d-pA()>d$(P37P{+!7XTFd=-8RmVWnrzE5o( zz;P?U3)twnqB4=I_q$0!+}1d2)XL@+<^`9mStjL~F)~ixC5tn{4D8V3)r}YvjYT_q zKv<7zuDZLawl&lgh6gM*!OmZidUEbFXW0#kX9E9t$-ysYc>)1P02FgjfQOJn9E-@s zW)cAl0nluw72q-Cdd|NFIl{4m+`@4Kax2HJ$ZZ@SM81km7Xjj^9N_E;lM(*YK6ml2GZz9Jzo%f-$tI{n7&eHIbMzY1jp-@j03OGO_LD;e8{Ib-i~~ei{F9#I%nU7JjU@e$Y(i@A-8e+>nQRxXCFpB$MH+Z z$2tF3ktaC&8`Ph(k0YPw?C&AJ&+!H1-#P!!kS96&9P-y3e~UcDF|FSy$7o(Q|1=IP zaCYi{o#RYdjgK72g`d!$=AcrD+OG_d3$Wc;!C=;2w`cd7&Yl(a$`u@3!BC!rc1f0e zLAgpYwQ57FA*!LNRduFSHnkwrd}geV#mYYBR~x7@{a8e8z|2=|##S?{Ty18lHnW6O zDDPs4i0N8qYQ#)b!=^10GZA5l{3?s^`%O({vHnUH>sMK{+%qMFu#oQ*K^h0HNO%Mwt{EPj?H5R_nGu(RD4tf@o4 z_O6~|13f&E972V6*u;nRu){UOt>y%SQPw#2U9~-@b``n`H?31;g>3+A=>31S!de>3Dh-aGSyJGb84x@H@H&HvigJ^zw7g&gXrYS?k!0?e| zv=jSeLhs{DOT>CBlChyARCGm?QK;w~7=Q|VUsptv$wW`*U@|s<3I3bV*FG*0|Mk~} z{_eSnb78{N5*)B&Qxj4WH^`)`}8}4)o8Xn-Ni?=L^` BR}KIG diff --git a/include/global.h b/include/global.h index 0209c7c..58c351b 100644 --- a/include/global.h +++ b/include/global.h @@ -432,7 +432,7 @@ struct PinballGame /*0x46C*/ struct Vector16 unk46C[4]; /*0x47C*/ u8 filler47C[0x1]; /*0x47D*/ s8 unk47D; - /*0x47E*/ u8 filler47E[0x1]; + /*0x47E*/ s8 unk47E; /*0x47F*/ s8 unk47F; /*0x480*/ u16 unk480; /*0x482*/ u16 unk482; diff --git a/src/rom_49A34.c b/src/rom_49A34.c index 2bf0da9..11984b7 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -123,6 +123,8 @@ extern const s16 gUnknown_086AF3B2[]; extern const s16 gUnknown_086AF3BE[]; extern const u16 gUnknown_086AF3C6[]; extern const u16 gUnknown_086B63AA[][2][3]; +extern const u16 gUnknown_086B65EA[][19][3]; +extern const u16 gUnknown_086B6512[][6][3]; extern const u16 gUnknown_086B63F2[][4][3]; extern const u16 gUnknown_086B8AE0[][10][3]; extern const s16 gUnknown_086AF3AC[]; @@ -131,6 +133,7 @@ extern const s8 gUnknown_084A11EC[][0x300]; extern const u16 gUnknown_086AF2DC[][2]; extern const struct Vector16 gUnknown_086AF2CC[]; extern const s16 gUnknown_086AEE20[]; +extern const s16 gUnknown_086AF140[][2]; struct Unk_086AFAC0 { @@ -155,6 +158,132 @@ extern u8 gUnknown_0200FBB0[]; extern u8 gUnknown_020030A0[]; +void sub_3C6E0(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + s16 var0; + int palette; + + group = &gMain.spriteGroups[29]; + if (group->available) + { + var0 = gUnknown_086AF140[gCurrentPinballGame->unk3E2][0]; + group->baseX = gCurrentPinballGame->unk3E8 / 10 + 100u - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk3EA / 10 + 84u - gCurrentPinballGame->unk5A; + gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 118; + gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 60; + gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 184; + gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 156; + if (group->baseY < -60) + group->baseY = -60; + if (group->baseY > 180) + group->baseY = 180; + + if (gCurrentPinballGame->unk389 > 9) + { + palette = 11; + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = 240; + gOamBuffer[oamSimple->oamId].y = 180; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + else if (gCurrentPinballGame->unk389 == 1) + { + palette = 14; + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B65EA[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + else if (gCurrentPinballGame->unk389 == 3) + { + palette = 11; + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B65EA[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + else + { + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B65EA[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + } + } + + group = &gMain.spriteGroups[23]; + if (group->available) + { + if (gCurrentPinballGame->unk47E > 0) + { + gCurrentPinballGame->unk47E--; + if (gCurrentPinballGame->unk47E == 0) + group->available = 0; + } + + var0 = gCurrentPinballGame->unk47D * 2 - (gCurrentPinballGame->unk47E / 4 - 1); + group->baseX = gCurrentPinballGame->unk3E8 / 10 + 100u - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk3EA / 10 + 84u - gCurrentPinballGame->unk5A; + for (i = 0; i < 6; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B6512[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + + if (gCurrentPinballGame->unk5A4 == 2) + { + gMain.spriteGroups[23].available = 0; + gCurrentPinballGame->unk47E = 0; + } + } + else + { + if (gCurrentPinballGame->unk47E == 8) + group->available = 1; + } +} + void sub_3CBC4(void) { s16 i, j;