From 98bbccde6c9b5991c845deaeff98ad3feb782090 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 10 Aug 2025 08:20:40 -0500 Subject: [PATCH] sub_3B120 --- asm/rom_3219C.s | 419 -------------------------------------- expected_objs/sub_3B120.o | Bin 2808 -> 0 bytes src/rom_49A34.c | 103 ++++++++++ 3 files changed, 103 insertions(+), 419 deletions(-) delete mode 100644 expected_objs/sub_3B120.o diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index b8889a0..a503309 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -8292,422 +8292,3 @@ _0803B110: .4byte gMain+0xAE0 @gMain.spriteGroups[11] _0803B114: .4byte 0x000001FF _0803B118: .4byte 0xFFFFFE00 _0803B11C: .4byte gMain+0xDC0 @gMain.spriteGroups[15] - - thumb_func_start sub_3B120 -sub_3B120: @ 0x0803B120 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r4, _0803B158 @ =gCurrentPinballGame - ldr r1, [r4] - movs r2, #0 - movs r0, #0 - strh r0, [r1, #0x18] - strb r2, [r1, #0x17] - ldr r0, [r4] - strb r2, [r0, #0x13] - ldr r5, [r4] - ldr r1, _0803B15C @ =0x00000283 - adds r0, r5, r1 - ldrb r0, [r0] - movs r1, #5 - bl __umodsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - mov ip, r4 - cmp r0, #3 - bne _0803B160 - movs r2, #0xe1 - lsls r2, r2, #2 - adds r1, r5, r2 - movs r0, #0x12 - b _0803B168 - .align 2, 0 -_0803B158: .4byte gCurrentPinballGame -_0803B15C: .4byte 0x00000283 -_0803B160: - movs r3, #0xe1 - lsls r3, r3, #2 - adds r1, r5, r3 - movs r0, #0xf -_0803B168: - strb r0, [r1] - mov r4, ip - ldr r0, [r4] - movs r5, #0xa5 - lsls r5, r5, #2 - adds r0, r0, r5 - movs r3, #0 - strb r3, [r0] - ldr r1, [r4] - adds r5, r1, #0 - adds r5, #0x6c - ldr r6, _0803B42C @ =0x00002A30 - adds r0, r6, #0 - ldrh r2, [r5] - adds r0, r0, r2 - ldr r4, _0803B430 @ =0x00000296 - adds r2, r1, r4 - movs r4, #0 - strh r0, [r2] - strh r3, [r5] - movs r5, #0xe2 - lsls r5, r5, #2 - adds r1, r1, r5 - movs r2, #3 - strb r2, [r1] - mov r6, ip - ldr r0, [r6] - adds r5, #0xa - adds r1, r0, r5 - strh r3, [r1] - ldr r6, _0803B434 @ =0x0000132C - adds r0, r0, r6 - ldr r0, [r0] - movs r1, #1 - strb r1, [r0] - mov r5, ip - ldr r0, [r5] - ldr r6, _0803B438 @ =0x00000386 - adds r0, r0, r6 - strb r4, [r0] - ldr r0, [r5] - ldr r5, _0803B43C @ =0x00000387 - adds r0, r0, r5 - strb r1, [r0] - mov r6, ip - ldr r0, [r6] - ldr r1, _0803B440 @ =0x000006C4 - adds r0, r0, r1 - strb r2, [r0] - ldr r0, [r6] - ldr r2, _0803B444 @ =0x00000382 - adds r0, r0, r2 - strb r4, [r0] - ldr r0, [r6] - subs r5, #4 - adds r0, r0, r5 - strb r4, [r0] - ldr r0, [r6] - ldr r6, _0803B448 @ =0x00000385 - adds r0, r0, r6 - strb r4, [r0] - mov r1, ip - ldr r0, [r1] - adds r2, #7 - adds r0, r0, r2 - strb r4, [r0] - ldr r1, [r1] - adds r5, #0xb - adds r0, r1, r5 - strh r3, [r0] - adds r6, #0xb - adds r0, r1, r6 - strh r3, [r0] - adds r2, #0xb - adds r0, r1, r2 - strh r3, [r0] - adds r5, #0x4e - adds r0, r1, r5 - strb r4, [r0] - mov r6, ip - ldr r0, [r6] - ldr r1, _0803B44C @ =0x000003DD - adds r0, r0, r1 - strb r4, [r0] - ldr r0, [r6] - adds r2, #0x4a - adds r0, r0, r2 - strb r4, [r0] - ldr r0, [r6] - adds r5, #3 - adds r0, r0, r5 - strb r4, [r0] - ldr r0, [r6] - movs r6, #0xf8 - lsls r6, r6, #2 - adds r0, r0, r6 - strb r4, [r0] - mov r1, ip - ldr r0, [r1] - adds r2, #4 - adds r1, r0, r2 - strh r3, [r1] - adds r5, #2 - adds r0, r0, r5 - strb r4, [r0] - mov r6, ip - ldr r1, [r6] - adds r2, #2 - adds r0, r1, r2 - strh r3, [r0] - adds r5, #5 - adds r0, r1, r5 - strh r3, [r0] - movs r6, #0xfa - lsls r6, r6, #2 - adds r0, r1, r6 - strh r3, [r0] - adds r2, #6 - adds r0, r1, r2 - strh r3, [r0] - adds r5, #6 - adds r0, r1, r5 - strh r3, [r0] - adds r6, #6 - adds r0, r1, r6 - strh r3, [r0] - adds r2, #6 - adds r0, r1, r2 - strh r3, [r0] - adds r5, #6 - adds r0, r1, r5 - strh r3, [r0] - adds r6, #0x64 - adds r0, r1, r6 - strh r3, [r0] - adds r2, #0x66 - adds r0, r1, r2 - strh r3, [r0] - adds r5, #0x8a - adds r1, r1, r5 - strb r4, [r1] - mov r6, ip - ldr r0, [r6] - ldr r1, _0803B450 @ =0x0000047D - adds r0, r0, r1 - strb r4, [r0] - ldr r0, [r6] - adds r2, #0x28 - adds r0, r0, r2 - strb r4, [r0] - ldr r0, [r6] - adds r5, #3 - adds r0, r0, r5 - strb r4, [r0] - ldr r0, [r6] - movs r6, #0x90 - lsls r6, r6, #3 - adds r1, r0, r6 - strh r3, [r1] - adds r2, #4 - adds r1, r0, r2 - strh r3, [r1] - adds r5, #5 - adds r1, r0, r5 - strh r3, [r1] - adds r6, #6 - adds r1, r0, r6 - strh r3, [r1] - adds r2, #6 - adds r1, r0, r2 - strh r3, [r1] - adds r5, #6 - adds r1, r0, r5 - strh r3, [r1] - adds r6, #0x3e - adds r1, r0, r6 - strh r3, [r1] - adds r2, #0x3e - adds r1, r0, r2 - strh r3, [r1] - adds r5, #0x3e - adds r0, r0, r5 - strb r4, [r0] - mov r6, ip - ldr r0, [r6] - adds r2, #4 - adds r1, r0, r2 - strh r3, [r1] - ldr r3, _0803B454 @ =0x000004C9 - adds r0, r0, r3 - strb r4, [r0] - movs r1, #0 - mov r5, ip - movs r6, #0 - movs r7, #0 -_0803B2EE: - ldr r3, [r5] - lsls r2, r1, #0x10 - asrs r2, r2, #0x10 - lsls r4, r2, #2 - adds r1, r3, r4 - ldr r0, _0803B458 @ =0x0000046C - strh r7, [r0, r1] - adds r0, #2 - adds r1, r1, r0 - strh r7, [r1] - ldr r1, _0803B45C @ =0x0000048C - adds r3, r3, r1 - adds r3, r3, r2 - strb r6, [r3] - ldr r0, [r5] - movs r3, #0x92 - lsls r3, r3, #3 - adds r0, r0, r3 - adds r0, r0, r2 - strb r6, [r0] - ldr r0, [r5] - adds r1, #8 - adds r0, r0, r1 - adds r0, r0, r2 - strb r6, [r0] - ldr r0, [r5] - adds r3, #8 - adds r0, r0, r3 - adds r0, r0, r2 - strb r6, [r0] - ldr r0, [r5] - adds r1, #8 - adds r0, r0, r1 - adds r0, r0, r2 - strb r6, [r0] - ldr r0, [r5] - adds r3, #8 - adds r0, r0, r3 - adds r0, r0, r2 - strb r6, [r0] - ldr r0, [r5] - adds r1, #8 - adds r0, r0, r1 - adds r0, r0, r2 - strb r6, [r0] - ldr r1, [r5] - lsls r3, r2, #1 - mov r8, r3 - ldr r3, _0803B460 @ =0x000004AC - adds r0, r1, r3 - add r0, r8 - strh r7, [r0] - adds r1, r1, r4 - ldr r4, _0803B464 @ =0x000004B4 - adds r0, r1, r4 - strh r7, [r0] - ldr r0, _0803B468 @ =0x000004B6 - adds r1, r1, r0 - strh r7, [r1] - adds r2, #1 - lsls r2, r2, #0x10 - lsrs r1, r2, #0x10 - asrs r2, r2, #0x10 - cmp r2, #3 - ble _0803B2EE - movs r1, #0 - ldr r5, _0803B46C @ =gCurrentPinballGame - movs r4, #0 -_0803B376: - ldr r0, [r5] - lsls r2, r1, #0x10 - asrs r2, r2, #0x10 - ldr r1, _0803B470 @ =0x000004CC - adds r0, r0, r1 - adds r0, r0, r2 - strb r4, [r0] - ldr r0, [r5] - ldr r3, _0803B474 @ =0x000004CF - adds r0, r0, r3 - adds r0, r0, r2 - strb r4, [r0] - ldr r0, [r5] - ldr r6, _0803B478 @ =0x000004D2 - adds r0, r0, r6 - adds r0, r0, r2 - strb r4, [r0] - ldr r0, [r5] - adds r1, #9 - adds r0, r0, r1 - adds r0, r0, r2 - strb r4, [r0] - ldr r1, [r5] - lsls r3, r2, #1 - adds r6, #6 - adds r0, r1, r6 - adds r0, r0, r3 - strh r4, [r0] - adds r6, #6 - adds r0, r1, r6 - adds r0, r0, r3 - strh r4, [r0] - adds r6, #6 - adds r0, r1, r6 - adds r0, r0, r3 - strh r4, [r0] - lsls r0, r2, #2 - adds r1, r1, r0 - ldr r3, _0803B47C @ =0x000004EC - adds r0, r1, r3 - strh r4, [r0] - adds r6, #0xa - adds r0, r1, r6 - strh r4, [r0] - adds r3, #0xc - adds r0, r1, r3 - strh r4, [r0] - adds r6, #0xc - adds r1, r1, r6 - strh r4, [r1] - adds r2, #1 - lsls r2, r2, #0x10 - lsrs r1, r2, #0x10 - asrs r2, r2, #0x10 - cmp r2, #2 - ble _0803B376 - mov r0, ip - ldr r1, [r0] - movs r0, #1 - strb r0, [r1, #0x1a] - bl sub_3CBC4 - bl sub_3B7C4 - bl sub_3C6E0 - ldr r4, _0803B480 @ =0x040000D4 - ldr r0, _0803B484 @ =gUnknown_0849F1CC - str r0, [r4] - ldr r0, _0803B488 @ =0x06015800 - str r0, [r4, #4] - ldr r0, _0803B48C @ =0x80001000 - str r0, [r4, #8] - ldr r0, [r4, #8] - bl sub_3E644 - movs r0, MUS_BONUS_FIELD_GROUDON - bl m4aSongNumStart - ldr r0, _0803B490 @ =gUnknown_081B36A4 - str r0, [r4] - ldr r0, _0803B494 @ =0x05000320 - str r0, [r4, #4] - ldr r0, _0803B498 @ =0x80000010 - str r0, [r4, #8] - ldr r0, [r4, #8] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0803B42C: .4byte 0x00002A30 -_0803B430: .4byte 0x00000296 -_0803B434: .4byte 0x0000132C -_0803B438: .4byte 0x00000386 -_0803B43C: .4byte 0x00000387 -_0803B440: .4byte 0x000006C4 -_0803B444: .4byte 0x00000382 -_0803B448: .4byte 0x00000385 -_0803B44C: .4byte 0x000003DD -_0803B450: .4byte 0x0000047D -_0803B454: .4byte 0x000004C9 -_0803B458: .4byte 0x0000046C -_0803B45C: .4byte 0x0000048C -_0803B460: .4byte 0x000004AC -_0803B464: .4byte 0x000004B4 -_0803B468: .4byte 0x000004B6 -_0803B46C: .4byte gCurrentPinballGame -_0803B470: .4byte 0x000004CC -_0803B474: .4byte 0x000004CF -_0803B478: .4byte 0x000004D2 -_0803B47C: .4byte 0x000004EC -_0803B480: .4byte 0x040000D4 -_0803B484: .4byte gUnknown_0849F1CC -_0803B488: .4byte 0x06015800 -_0803B48C: .4byte 0x80001000 -_0803B490: .4byte gUnknown_081B36A4 -_0803B494: .4byte 0x05000320 -_0803B498: .4byte 0x80000010 diff --git a/expected_objs/sub_3B120.o b/expected_objs/sub_3B120.o deleted file mode 100644 index 3513efa89be4094d7d93205cbbef82010cb2bbce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcma);ZEO@p7{{NzyI$|ECzJ}wZY1Td6g&!^+q=D&Mrf|Rc6)`ksenKN3B9HV+t8QG zbx$$Tut?NmG-=Q%kzgQdjG~Dq$QOtqM&nCV)EE#shex6obx`Dxi}rZ*P&=32)IdQ)wSH2=&}9PJEjsF3BO#4CTb+&0FHj6?-i}cDfT>%dRG-%3ygKG+ zWGPXlTry+US&*+Bv(Aj>G=-~P8P2JmvTmK;>Zm@{zAZT@bn9iVESdqUIl)?jR!gd& zd7YN@BD*FQRj)IKh>vGkLKfC*E7$6lH&x5>_xcOOMr3(>iKA+ZNu`BhlV+~_3t^bRTVg+jBHu2T)r&+|$XX59P zULNV?k>2{;unL^_ZM%%SqG-va^>pt>E97fi`2uO$?!wS^j~-N)JG+MWs;AU;tmuig zKhkB@QT^}(-8t7w-brkOwS!KY1KU1Ta|6vzQ0pHFXw6Q4fsLRf+I%a*Z7aQ9A6%tq z?mSr1^AHLnNHtmXyz418slnXM!4!)dISD5%CUrq2mM;d8=C=7-bA zwXhh~)Ah;K2~)9@$l}9nx4IS`i54Og(ZU4m%)}Xs#bXh6ZAZKv@pc{$Tsmo9zocBE zA-#*}MeONKcN0D3C3+h6k)P-Z)K9{$!XEb#eFmF>Jqvpqb{=*C#>y9{ufV>A{Q>)q z2v?Lnil17^VQ$1rO|3*u-x@%%RGge9Wfk0}zU`x#odcu8lV} zoWvi42PD1%E=c?Xctqk~!Mm`(YDJ+x;fzb|H^4h3X0P%+61RZ&NxTX?A@LgUl*Ajr zmc&W$jKo{OWr>Htw!{yD4@=CRzx;e__fflIOVeKH@y|;eypjuuV87FR10QSP=NkB> z20q)s=NkB81Ap1T)M?XxJ*y}CyHi==O4ug=a-ElelrV7^+Zl;-U5>AA_`%*;@6wp7#Q z`}0PW{u*G`MHB*)!7|(v0~G~hvp8=%|9}S$7l4I-TAy6>F!Ua z`|zVCf;|?(CS~s^&wV)CIBTIe-o>oO%jtVo>qNh^x|`@as}r>|%Jl5)c#^d<;bA|L z;tP+?+QmuKcBNKZu2(6|#O=~yo8nVNyGZfLg$0V^{T(mbc4d09YL^y};LZyB46v<= zPYo|@=*Pslb3Y(N_aM%G!sTGR0LJ04eyl(H&;(%X>g=X?*L4tQ#XS}q;WNG4{C_$u z8Pk+e@xpYGy3Z;%AFHvXqI?bAIII~FHWr&-D~#O(!lFbV_{mLzsOzqPFYCt9F(-Q6 G()|Zwo}~={ diff --git a/src/rom_49A34.c b/src/rom_49A34.c index d7f4ead..d72229a 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -137,6 +137,7 @@ extern const u16 gUnknown_086AF140[][2]; extern const u16 gUnknown_086AEF40[][31]; extern const u16 gUnknown_086AF0B4[]; extern const u8 gUnknown_0813E894[]; +extern const u8 gUnknown_0849F1CC[]; struct Unk_086AFAC0 { @@ -165,6 +166,108 @@ extern u8 gUnknown_0200FBB0[]; extern u8 gUnknown_020030A0[]; +void sub_3B120(void) +{ + s16 i; + + gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->unk17 = 0; + gCurrentPinballGame->unk13 = 0; + if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3) + gCurrentPinballGame->unk384 = 18; + else + gCurrentPinballGame->unk384 = 15; + + gCurrentPinballGame->unk294 = 0; + gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800; + gCurrentPinballGame->timerBonus = 0; + gCurrentPinballGame->unk388 = 3; + gCurrentPinballGame->unk392 = 0; + gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->unk386 = 0; + gCurrentPinballGame->unk387 = 1; + gCurrentPinballGame->unk6C4 = 3; + gCurrentPinballGame->unk382 = 0; + gCurrentPinballGame->unk383 = 0; + gCurrentPinballGame->unk385 = 0; + gCurrentPinballGame->unk389 = 0; + gCurrentPinballGame->unk38E = 0; + gCurrentPinballGame->unk390 = 0; + gCurrentPinballGame->unk394 = 0; + gCurrentPinballGame->unk3DC = 0; + gCurrentPinballGame->unk3DD = 0; + gCurrentPinballGame->unk3DE = 0; + gCurrentPinballGame->unk3DF = 0; + gCurrentPinballGame->unk3E0 = 0; + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E6 = 0; + gCurrentPinballGame->unk3E8 = 0; + gCurrentPinballGame->unk3EA = 0; + gCurrentPinballGame->unk3EC = 0; + gCurrentPinballGame->unk3EE = 0; + gCurrentPinballGame->unk3F0 = 0; + gCurrentPinballGame->unk3F2 = 0; + gCurrentPinballGame->unk452 = 0; + gCurrentPinballGame->unk456 = 0; + gCurrentPinballGame->unk47C = 0; + gCurrentPinballGame->unk47D = 0; + gCurrentPinballGame->unk47E = 0; + gCurrentPinballGame->unk47F = 0; + gCurrentPinballGame->unk480 = 0; + gCurrentPinballGame->unk482 = 0; + gCurrentPinballGame->unk484 = 0; + gCurrentPinballGame->unk486 = 0; + gCurrentPinballGame->unk488.x = 0; + gCurrentPinballGame->unk488.y = 0; + gCurrentPinballGame->unk4C4 = 0; + gCurrentPinballGame->unk4C6 = 0; + gCurrentPinballGame->unk4C8 = 0; + gCurrentPinballGame->unk4CA = 0; + gCurrentPinballGame->unk4C9 = 0; + + for (i = 0; i < 4; i++) + { + gCurrentPinballGame->unk46C[i].x = 0; + gCurrentPinballGame->unk46C[i].y = 0; + gCurrentPinballGame->unk48C[i] = 0; + gCurrentPinballGame->unk490[i] = 0; + gCurrentPinballGame->unk494[i] = 0; + gCurrentPinballGame->unk498[i] = 0; + gCurrentPinballGame->unk49C[i] = 0; + gCurrentPinballGame->unk4A0[i] = 0; + gCurrentPinballGame->unk4A4[i] = 0; + gCurrentPinballGame->unk4AC[i] = 0; + gCurrentPinballGame->unk4B4[i].x = 0; + gCurrentPinballGame->unk4B4[i].y = 0; + } + + for (i = 0; i < 3; i++) + { + gCurrentPinballGame->unk4CC[i] = 0; + gCurrentPinballGame->unk4CF[i] = 0; + gCurrentPinballGame->unk4D2[i] = 0; + gCurrentPinballGame->unk4D5[i] = 0; + gCurrentPinballGame->unk4D8[i] = 0; + gCurrentPinballGame->unk4DE[i] = 0; + gCurrentPinballGame->unk4E4[i] = 0; + gCurrentPinballGame->unk4EC[i].x = 0; + gCurrentPinballGame->unk4EC[i].y = 0; + gCurrentPinballGame->unk4F8[i].x = 0; + gCurrentPinballGame->unk4F8[i].y = 0; + } + + gCurrentPinballGame->unk1A = 1; + sub_3CBC4(); + sub_3B7C4(); + sub_3C6E0(); + DmaCopy16(3, gUnknown_0849F1CC, (void *)0x06015800, 0x2000); + sub_3E644(); + m4aSongNumStart(MUS_BONUS_FIELD_GROUDON); + DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20); +} + void sub_3B49C(void) { switch (gCurrentPinballGame->unk13)