From 3d68ebbeefd204fc7330624dbb1b40e2dc137350 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 23 Aug 2025 09:30:00 -0500 Subject: [PATCH] sub_2FCD0 --- asm/rom_2E6AC.s | 492 -------------------------------------- expected_objs/sub_2FCD0.o | Bin 3956 -> 0 bytes include/global.h | 2 +- src/rom_2E67C.c | 107 +++++++++ 4 files changed, 108 insertions(+), 493 deletions(-) delete mode 100644 expected_objs/sub_2FCD0.o diff --git a/asm/rom_2E6AC.s b/asm/rom_2E6AC.s index 0ffe5ff..bfbd352 100644 --- a/asm/rom_2E6AC.s +++ b/asm/rom_2E6AC.s @@ -6,498 +6,6 @@ .text - thumb_func_start sub_2FCD0 -sub_2FCD0: @ 0x0802FCD0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r6, _0802FDCC @ =gMain+0x2ED0 @gMain.spriteGroups[61] - ldrh r0, [r6] - cmp r0, #0 - bne _0802FCE4 - b _080300B2 -_0802FCE4: - ldr r3, _0802FDD0 @ =gCurrentPinballGame - ldr r0, [r3] - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x44 - subs r0, r0, r1 - strh r0, [r6, #2] - ldr r0, [r3] - adds r0, #0x5a - ldrh r1, [r0] - movs r0, #0x90 - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r4, _0802FDD4 @ =gUnknown_086AE4FC - ldr r0, [r3] - movs r1, #0xdb - lsls r1, r1, #2 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r2, _0802FDD8 @ =0x040000D4 - movs r5, #0 - ldrsh r1, [r0, r5] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #8 - ldr r1, _0802FDDC @ =gUnknown_0847A40C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _0802FDE0 @ =0x06012DA0 - str r0, [r2, #4] - ldr r0, _0802FDE4 @ =0x80000140 - str r0, [r2, #8] - ldr r0, [r2, #8] - movs r0, #0 - mov ip, r3 - ldr r1, _0802FDE8 @ =gOamBuffer - mov sb, r1 - ldr r2, _0802FDEC @ =0xFFFFFDD8 - adds r2, r2, r6 - mov sl, r2 - mov r7, sb - ldr r3, _0802FDF0 @ =0xFFFFFE00 - mov r8, r3 -_0802FD42: - lsls r4, r0, #0x10 - asrs r4, r4, #0x10 - lsls r0, r4, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r3, [r5] - lsls r3, r3, #3 - adds r3, r3, r7 - movs r0, #2 - ldrsh r1, [r5, r0] - movs r2, #2 - ldrsh r0, [r6, r2] - adds r1, r1, r0 - ldr r2, _0802FDF4 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - adds r4, #1 - lsls r4, r4, #0x10 - lsrs r0, r4, #0x10 - asrs r4, r4, #0x10 - cmp r4, #1 - ble _0802FD42 - mov r6, sl - mov r3, ip - ldr r0, [r3] - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x44 - subs r0, r0, r1 - strh r0, [r6, #2] - ldr r1, [r3] - ldr r5, _0802FDF8 @ =0x00000372 - adds r0, r1, r5 - ldrh r0, [r0] - cmp r0, #0xd - bhi _0802FE08 - adds r0, r1, #0 - adds r0, #0x5a - ldrh r1, [r0] - movs r0, #0x90 - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r0, [r3] - adds r0, r0, r5 - ldrh r0, [r0] - ldr r2, _0802FDD8 @ =0x040000D4 - lsrs r0, r0, #1 - lsls r0, r0, #9 - ldr r1, _0802FDFC @ =gUnknown_0847D10C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _0802FE00 @ =0x06014720 - str r0, [r2, #4] - ldr r0, _0802FE04 @ =0x800000C0 - str r0, [r2, #8] - ldr r0, [r2, #8] - b _0802FE0C - .align 2, 0 -_0802FDCC: .4byte gMain+0x2ED0 @gMain.spriteGroups[61] -_0802FDD0: .4byte gCurrentPinballGame -_0802FDD4: .4byte gUnknown_086AE4FC -_0802FDD8: .4byte 0x040000D4 -_0802FDDC: .4byte gUnknown_0847A40C -_0802FDE0: .4byte 0x06012DA0 -_0802FDE4: .4byte 0x80000140 -_0802FDE8: .4byte gOamBuffer -_0802FDEC: .4byte 0xFFFFFDD8 -_0802FDF0: .4byte 0xFFFFFE00 -_0802FDF4: .4byte 0x000001FF -_0802FDF8: .4byte 0x00000372 -_0802FDFC: .4byte gUnknown_0847D10C -_0802FE00: .4byte 0x06014720 -_0802FE04: .4byte 0x800000C0 -_0802FE08: - movs r0, #0xc8 - strh r0, [r6, #4] -_0802FE0C: - adds r5, r6, #0 - adds r5, #8 - ldrh r2, [r6, #8] - lsls r2, r2, #3 - add r2, sb - movs r0, #2 - ldrsh r1, [r5, r0] - movs r3, #2 - ldrsh r0, [r6, r3] - adds r1, r1, r0 - ldr r3, _0802FF1C @ =0x000001FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r4, _0802FF20 @ =0xFFFFFE00 - adds r0, r4, #0 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r6, #8] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - ldr r6, _0802FF24 @ =gMain+0x2F88 @gMain.spriteGroups[62] - mov r5, ip - ldr r0, [r5] - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x24 - subs r0, r0, r1 - strh r0, [r6, #2] - ldr r0, [r5] - adds r0, #0x5a - ldrh r1, [r0] - movs r0, #0xa3 - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r0, [r5] - ldr r1, _0802FF28 @ =0x0000036D - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - ldr r2, _0802FF2C @ =gUnknown_086AE4FC - adds r0, r0, r2 - ldr r2, _0802FF30 @ =0x040000D4 - movs r3, #0 - ldrsh r1, [r0, r3] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #8 - ldr r5, _0802FF34 @ =gUnknown_084C1E6C - adds r0, r0, r5 - str r0, [r2] - ldr r0, _0802FF38 @ =0x060130A0 - str r0, [r2, #4] - ldr r0, _0802FF3C @ =0x80000140 - str r0, [r2, #8] - ldr r0, [r2, #8] - movs r0, #0 - mov r7, sb - mov r8, r4 -_0802FE90: - lsls r4, r0, #0x10 - asrs r4, r4, #0x10 - lsls r0, r4, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r3, [r5] - lsls r3, r3, #3 - adds r3, r3, r7 - movs r0, #2 - ldrsh r1, [r5, r0] - movs r2, #2 - ldrsh r0, [r6, r2] - adds r1, r1, r0 - ldr r2, _0802FF1C @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - adds r4, #1 - lsls r4, r4, #0x10 - lsrs r0, r4, #0x10 - asrs r4, r4, #0x10 - cmp r4, #1 - ble _0802FE90 - ldr r6, _0802FF40 @ =gMain+0x2D60 @gMain.spriteGroups[59] - mov r3, ip - ldr r0, [r3] - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x24 - subs r0, r0, r1 - strh r0, [r6, #2] - ldr r1, [r3] - movs r5, #0xdd - lsls r5, r5, #2 - adds r0, r1, r5 - ldrh r0, [r0] - cmp r0, #0xd - bhi _0802FF50 - adds r0, r1, #0 - adds r0, #0x5a - ldrh r1, [r0] - movs r0, #0xa3 - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r0, [r3] - adds r0, r0, r5 - ldrh r0, [r0] - ldr r2, _0802FF30 @ =0x040000D4 - lsrs r0, r0, #1 - lsls r0, r0, #9 - ldr r1, _0802FF44 @ =gUnknown_084C4B6C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _0802FF48 @ =0x06014920 - str r0, [r2, #4] - ldr r0, _0802FF4C @ =0x800000C0 - str r0, [r2, #8] - ldr r0, [r2, #8] - b _0802FF54 - .align 2, 0 -_0802FF1C: .4byte 0x000001FF -_0802FF20: .4byte 0xFFFFFE00 -_0802FF24: .4byte gMain+0x2F88 @gMain.spriteGroups[62] -_0802FF28: .4byte 0x0000036D -_0802FF2C: .4byte gUnknown_086AE4FC -_0802FF30: .4byte 0x040000D4 -_0802FF34: .4byte gUnknown_084C1E6C -_0802FF38: .4byte 0x060130A0 -_0802FF3C: .4byte 0x80000140 -_0802FF40: .4byte gMain+0x2D60 @gMain.spriteGroups[59] -_0802FF44: .4byte gUnknown_084C4B6C -_0802FF48: .4byte 0x06014920 -_0802FF4C: .4byte 0x800000C0 -_0802FF50: - movs r0, #0xc8 - strh r0, [r6, #4] -_0802FF54: - adds r5, r6, #0 - adds r5, #8 - ldrh r2, [r6, #8] - lsls r2, r2, #3 - add r2, sb - movs r0, #2 - ldrsh r1, [r5, r0] - movs r3, #2 - ldrsh r0, [r6, r3] - adds r1, r1, r0 - ldr r3, _0802FFBC @ =0x000001FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r0, _0802FFC0 @ =0xFFFFFE00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r6, #8] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - ldr r6, _0802FFC4 @ =gMain+0x3998 @gMain.spriteGroups[76] - mov r5, ip - ldr r0, [r5] - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x3d - subs r0, r0, r1 - strh r0, [r6, #2] - ldr r0, [r5] - adds r0, #0x5a - ldrh r1, [r0] - movs r0, #0xba - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r1, [r5] - ldr r2, _0802FFC8 @ =0x00000367 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0802FFD0 - ldr r3, _0802FFCC @ =0x00000366 - adds r1, r1, r3 - movs r0, #3 - b _08030032 - .align 2, 0 -_0802FFBC: .4byte 0x000001FF -_0802FFC0: .4byte 0xFFFFFE00 -_0802FFC4: .4byte gMain+0x3998 @gMain.spriteGroups[76] -_0802FFC8: .4byte 0x00000367 -_0802FFCC: .4byte 0x00000366 -_0802FFD0: - ldr r5, _0802FFF4 @ =0x0000036A - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0803000C - ldr r2, _0802FFF8 @ =0x0000036B - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08030000 - ldr r3, _0802FFFC @ =0x00000366 - adds r1, r1, r3 - movs r0, #3 - b _08030032 - .align 2, 0 -_0802FFF4: .4byte 0x0000036A -_0802FFF8: .4byte 0x0000036B -_0802FFFC: .4byte 0x00000366 -_08030000: - ldr r5, _08030008 @ =0x00000366 - adds r1, r1, r5 - movs r0, #2 - b _08030032 - .align 2, 0 -_08030008: .4byte 0x00000366 -_0803000C: - ldr r2, _08030024 @ =0x0000036B - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0803002C - ldr r3, _08030028 @ =0x00000366 - adds r1, r1, r3 - movs r0, #1 - b _08030032 - .align 2, 0 -_08030024: .4byte 0x0000036B -_08030028: .4byte 0x00000366 -_0803002C: - ldr r5, _08030064 @ =0x00000366 - adds r1, r1, r5 - movs r0, #0 -_08030032: - strb r0, [r1] - mov r0, ip - ldr r3, [r0] - ldr r2, _08030064 @ =0x00000366 - adds r1, r3, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #2 - bgt _08030068 - lsls r4, r0, #1 - adds r4, r4, r0 - movs r5, #0xa4 - lsls r5, r5, #2 - adds r0, r3, r5 - ldr r0, [r0] - movs r1, #0x1e - bl __umodsi3 - movs r1, #0xa - bl __udivsi3 - adds r4, r4, r0 - lsls r4, r4, #0x10 - lsrs r0, r4, #0x10 - b _0803006A - .align 2, 0 -_08030064: .4byte 0x00000366 -_08030068: - movs r0, #9 -_0803006A: - ldr r1, _080300C0 @ =0x040000D4 - lsls r0, r0, #0x10 - asrs r0, r0, #9 - ldr r2, _080300C4 @ =gUnknown_084FEA0C - adds r0, r0, r2 - str r0, [r1] - ldr r0, _080300C8 @ =0x060146A0 - str r0, [r1, #4] - ldr r0, _080300CC @ =0x80000040 - str r0, [r1, #8] - ldr r0, [r1, #8] - adds r5, r6, #0 - adds r5, #8 - ldrh r2, [r6, #8] - lsls r2, r2, #3 - add r2, sb - movs r3, #2 - ldrsh r1, [r5, r3] - movs r3, #2 - ldrsh r0, [r6, r3] - adds r1, r1, r0 - ldr r3, _080300D0 @ =0x000001FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r0, _080300D4 @ =0xFFFFFE00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r6, #8] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] -_080300B2: - 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 -_080300C0: .4byte 0x040000D4 -_080300C4: .4byte gUnknown_084FEA0C -_080300C8: .4byte 0x060146A0 -_080300CC: .4byte 0x80000040 -_080300D0: .4byte 0x000001FF -_080300D4: .4byte 0xFFFFFE00 - thumb_func_start sub_300D8 sub_300D8: @ 0x080300D8 push {r4, r5, lr} diff --git a/expected_objs/sub_2FCD0.o b/expected_objs/sub_2FCD0.o deleted file mode 100644 index 07ad3d862e805e49cfc1ad49ef9fbe83c2a79c33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3956 zcma);YiJx*6vxj@9-YLdO>0_bYp~m93tLRq$!3$Ln#v}-dz)+?t!-LkjY&3Un~gSU zNH*F)!Js1B4?-w{u?Q;mlcH3xAQJHL$$)5md{Am(RZtX#D1w5u@qg!WbF$Rh8z%Ss z&TGy+bN9|Xk?0bdrja)^3eqYOt>0iNZF0`c9D_U$`NCXdmzlY|;|xVjIz^?lb&kkapQK%_gY8nM-_;Q{D~Ceu z2XW00&1cB}qNwXQBkGc8eP_i1QQNs7ii-nPc`~d<^UmC5y6n^ay9e~07Y54AUCGL7 zEqW{$6_rsV);G61w?s=mYqoAS>N6&_NTAriK2W9AUb%8qJS=#PzRYdi?LNv?1jAn$ z)vNWInJBbIGHOKiO1rj=sBNQN+xGmWkk=`qFNumJyd zO?Pu!kJnA7CST^tt~bc(XUOfRQ=!w(a=V`!?0#0Do(j93+w-zdvR}Eoh{oN1slHlH zUx(`8gW>PEaUZMPKHl1Xy)JH4UEIgI_^#c>-5Dd9bGt~v4VOwgm&_vnJ$WLpzJ!nf_S$3(&j=UrP2>c#({k856?AWTjj4ff_hV8BS*Wo^%Zv}kG zZ%ht}qD*=61rzd7J-F$cI0ek}=y0EpGI#7)`SaRJx&1$2${nuTxy$@pI;c3hxeB|$ z7^-S-$CVq(W!Rpp`DsA6_uK}zR~6UoRrBJ4ctyM>mKU`}+OM96!1KU9_IlE~orqHD z)bJQ-TOgLS9_rrH8}II*Qr*zXw*}l5sD%itzy0WSjw4GoAwb8J`AAoij9g210<@ z=fOe7=fKU3&x30jzX`S&zXOgi{t(>4_+v2dpEU9OpMtw|{IiEfUt>PV_pJ2Qj{5~#cXw(3ClG*ox=NRt?XBpoIKE?P!@M*?r z@Y9TCfB5=gUX%YM6u&V4S@1IBr@((Oeir-}_=q>Q)_52NcKeLx$ zZGDVozC(;R!u}j%d4C@7gMES7Yry9i%Y23L+`kU~%glcd_z%Xd;J+Amg0C_@0=5q& zO!A-^1Q*+11P;sl^ZZiljUpZgRKRZ)@L~afQo#8F z{=I-#_a@Fk)KjX~?l1+iG-x$jVG)nTTq%}_*iwUKwS_%v+)|QbMMS(=>Acu@LixE_ z;FnN-3FRl0UqszQsLaBPNLZc}7hY__@?sN~7m=`H6c};K5%r#{2z#y~?751tmr{h4 zUxV^%P<{={ufg+6>{WgdB{eE3qGBT|HsZyKMrCbNx|oWMDQir{s-_F~;oy-pc^4s7oXn8iZb-?Am6EbHIkiC7w5n^h?*W}#vy_ydTeH-ud~Ws7 z#UnI5Gdvg;G3Z9SQ)3e}8k?D#N>5}Dj!g`wPMp}E8c);ck%>nqPCh@#E>KwZ?e8G_EFy#Of1G1)4}3G=qaP<0nU^#~P$GGWM91c$`SI zB9nZ_>WA?UKW-f#4f2~qKjM5_=trGz2K|2LU9R^z?^NmEkKdp4lkZ6V0q0#O_41vj zA9LO3)yoSgfeGfRI6_X|zWj%QQDn6p#PobjZo^odY5eJV?#kyJKCq2cLi z3gLS#l*(qO#)fCI>1iamxgkIMfBpB5^smT3|ADF9K98IA7hqrGG2xl zxOTbh9WN~`7fiOVobSXX{r}I;a(pH+*+b^@yRw|*z2%TITB}As{PHD4>!3M=OO_$e eJ-G(&o)D>}9M6y`ynLGq{65BdqcXr9p5MRSa5}dD diff --git a/include/global.h b/include/global.h index 5eb29d5..1d28b77 100644 --- a/include/global.h +++ b/include/global.h @@ -416,7 +416,7 @@ struct PinballGame /*0x35D*/ u8 filler35D[0x1]; /*0x35E*/ u16 unk35E[4]; /*0x366*/ s8 unk366; - /*0x367*/ u8 filler367[0x1]; + /*0x367*/ s8 unk367; /*0x368*/ u16 unk368; /*0x36A*/ s8 unk36A[2]; /*0x36C*/ s8 unk36C[2]; diff --git a/src/rom_2E67C.c b/src/rom_2E67C.c index 5c42ce4..6722c7d 100644 --- a/src/rom_2E67C.c +++ b/src/rom_2E67C.c @@ -19,6 +19,11 @@ extern const u16 gUnknown_086B3B7E[][7][3]; extern const u8 gUnknown_084ED6CC[][0x200]; extern const s16 gUnknown_086AE4FC[][2]; extern const s16 gUnknown_08137CD6[]; +extern const u8 gUnknown_0847A40C[][0x300]; +extern const u8 gUnknown_0847D10C[][0x200]; +extern const u8 gUnknown_084C1E6C[][0x300]; +extern const u8 gUnknown_084C4B6C[][0x200]; +extern const u8 gUnknown_084FEA0C[][0x80]; extern struct SongHeader gUnknown_086A11A4; @@ -713,3 +718,105 @@ void sub_2F79C(void) } } } + +void sub_2FCD0(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + s16 index; + + group = &gMain.spriteGroups[61]; + if (!group->available) + return; + + group->baseX = 68 - gCurrentPinballGame->unk58; + group->baseY = 144 - gCurrentPinballGame->unk5A; + index = gUnknown_086AE4FC[gCurrentPinballGame->unk36C[0]][0]; + DmaCopy16(3, &gUnknown_0847A40C[index], (void *)0x06012DA0, 0x280); + for (i = 0; i < 2; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + } + + group = &gMain.spriteGroups[58]; + group->baseX = 68 - gCurrentPinballGame->unk58; + if (gCurrentPinballGame->unk372[0] < 14) + { + group->baseY = 144 - gCurrentPinballGame->unk5A; + index = gCurrentPinballGame->unk372[0] / 2; + DmaCopy16(3, &gUnknown_0847D10C[index], (void *)0x06014720, 0x180); + } + else + { + group->baseY = 200; + } + + oamSimple = &group->oam[0]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + + group = &gMain.spriteGroups[62]; + group->baseX = 36 - gCurrentPinballGame->unk58; + group->baseY = 163 - gCurrentPinballGame->unk5A; + index = gUnknown_086AE4FC[gCurrentPinballGame->unk36C[1]][0]; + DmaCopy16(3, &gUnknown_084C1E6C[index], (void *)0x060130A0, 0x280); + for (i = 0; i < 2; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + } + + group = &gMain.spriteGroups[59]; + group->baseX = 36 - gCurrentPinballGame->unk58; + if (gCurrentPinballGame->unk372[1] < 14) + { + group->baseY = 163 - gCurrentPinballGame->unk5A; + index = gCurrentPinballGame->unk372[1] / 2; + DmaCopy16(3, &gUnknown_084C4B6C[index], (void *)0x06014920, 0x180); + } + else + { + group->baseY = 200; + } + + oamSimple = &group->oam[0]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + + group = &gMain.spriteGroups[76]; + group->baseX = 61 - gCurrentPinballGame->unk58; + group->baseY = 186 - gCurrentPinballGame->unk5A; + if (gCurrentPinballGame->unk367) + { + gCurrentPinballGame->unk366 = 3; + } + else if (gCurrentPinballGame->unk36A[0]) + { + if (gCurrentPinballGame->unk36A[1]) + gCurrentPinballGame->unk366 = 3; + else + gCurrentPinballGame->unk366 = 2; + } + else if (gCurrentPinballGame->unk36A[1]) + { + gCurrentPinballGame->unk366 = 1; + } + else + { + gCurrentPinballGame->unk366 = 0; + } + + if (gCurrentPinballGame->unk366 < 3) + index = gCurrentPinballGame->unk366 * 3 + (gCurrentPinballGame->unk290 % 30) / 10; + else + index = 9; + + DmaCopy16(3, &gUnknown_084FEA0C[index], (void *)0x060146A0, 0x80); + oamSimple = &group->oam[0]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; +}