From dce87e6f7ebd613ea9697ccce9acbd5bdc5dbf49 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 16 Feb 2025 14:16:18 -0600 Subject: [PATCH] sub_4B000 --- asm/pinball_game_main.s | 243 -------------------------------------- expected_objs/sub_4B000.o | Bin 2728 -> 0 bytes include/functions.h | 1 - src/pinball_game_main.c | 78 ++++++++++++ 4 files changed, 78 insertions(+), 244 deletions(-) delete mode 100644 expected_objs/sub_4B000.o diff --git a/asm/pinball_game_main.s b/asm/pinball_game_main.s index 9d9295b0..6843dc53 100644 --- a/asm/pinball_game_main.s +++ b/asm/pinball_game_main.s @@ -6,249 +6,6 @@ .text - thumb_func_start sub_4B000 -sub_4B000: @ 0x0804B000 - push {r4, r5, r6, r7, lr} - bl sub_4B334 - ldr r5, _0804B07C @ =gMain - ldrb r1, [r5, #0xf] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0804B014 - b _0804B15A -_0804B014: - ldr r6, _0804B080 @ =gUnknown_020028D8 - ldr r0, [r6, #4] - bl _call_via_r0 - ldr r0, [r6, #0x14] - bl _call_via_r0 - ldr r0, [r6, #0x1c] - bl _call_via_r0 - ldr r0, [r6, #0x24] - bl _call_via_r0 - ldrb r4, [r5, #0xf] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r4, r0 - cmp r4, #0 - beq _0804B090 - ldr r0, _0804B084 @ =gCurrentPinballGame - ldr r0, [r0] - ldrb r0, [r0, #0x1f] - cmp r0, #0 - beq _0804B046 - b _0804B14C -_0804B046: - movs r4, #0 -_0804B048: - ldr r0, _0804B084 @ =gCurrentPinballGame - ldr r1, [r0] - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0 - strh r0, [r2] - ldr r0, _0804B088 @ =0x0000132C - adds r2, r1, r0 - ldr r3, _0804B08C @ =0x00001334 - adds r0, r1, r3 - str r0, [r2] - strb r4, [r1, #0x1e] - ldr r0, _0804B080 @ =gUnknown_020028D8 - ldr r0, [r0, #0x34] - bl _call_via_r0 - lsls r0, r4, #0x10 - movs r4, #0x80 - lsls r4, r4, #9 - adds r0, r0, r4 - lsrs r4, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #3 - ble _0804B048 - b _0804B14C - .align 2, 0 -_0804B07C: .4byte gMain -_0804B080: .4byte gUnknown_020028D8 -_0804B084: .4byte gCurrentPinballGame -_0804B088: .4byte 0x0000132C -_0804B08C: .4byte 0x00001334 -_0804B090: - ldr r0, [r5, #0x50] - adds r0, #1 - str r0, [r5, #0x50] - ldr r0, _0804B0C8 @ =gCurrentPinballGame - ldr r3, [r0] - movs r0, #0xa4 - lsls r0, r0, #2 - adds r1, r3, r0 - ldr r0, [r1] - adds r0, #1 - str r0, [r1] - ldrb r0, [r3, #0x1f] - cmp r0, #0 - beq _0804B114 - cmp r0, #2 - bne _0804B0D0 - adds r0, r3, #0 - adds r0, #0x66 - movs r2, #0 - strh r4, [r0] - ldr r4, _0804B0CC @ =0x0000132C - adds r1, r3, r4 - adds r4, #8 - adds r0, r3, r4 - str r0, [r1] - strb r2, [r3, #0x1e] - b _0804B14C - .align 2, 0 -_0804B0C8: .4byte gCurrentPinballGame -_0804B0CC: .4byte 0x0000132C -_0804B0D0: - movs r4, #0 -_0804B0D2: - ldr r0, _0804B104 @ =gCurrentPinballGame - ldr r1, [r0] - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0 - strh r0, [r2] - ldr r0, _0804B108 @ =0x0000132C - adds r2, r1, r0 - ldr r3, _0804B10C @ =0x00001334 - adds r0, r1, r3 - str r0, [r2] - strb r4, [r1, #0x1e] - ldr r0, _0804B110 @ =gUnknown_020028D8 - ldr r0, [r0, #0x2c] - bl _call_via_r0 - lsls r0, r4, #0x10 - movs r4, #0x80 - lsls r4, r4, #9 - adds r0, r0, r4 - lsrs r4, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #3 - ble _0804B0D2 - b _0804B14C - .align 2, 0 -_0804B104: .4byte gCurrentPinballGame -_0804B108: .4byte 0x0000132C -_0804B10C: .4byte 0x00001334 -_0804B110: .4byte gUnknown_020028D8 -_0804B114: - movs r4, #0 - adds r5, r6, #0 -_0804B118: - ldr r0, _0804B194 @ =gCurrentPinballGame - ldr r1, [r0] - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0 - strh r0, [r2] - ldr r0, _0804B198 @ =0x0000132C - adds r2, r1, r0 - ldr r3, _0804B19C @ =0x00001334 - adds r0, r1, r3 - str r0, [r2] - strb r4, [r1, #0x1e] - ldr r0, [r5, #0x2c] - bl _call_via_r0 - ldr r0, [r5, #0x34] - bl _call_via_r0 - lsls r0, r4, #0x10 - movs r4, #0x80 - lsls r4, r4, #9 - adds r0, r0, r4 - lsrs r4, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #3 - ble _0804B118 -_0804B14C: - ldr r4, _0804B1A0 @ =gUnknown_020028D8 - ldr r0, [r4, #0x3c] - bl _call_via_r0 - ldr r0, [r4, #0x44] - bl _call_via_r0 -_0804B15A: - ldr r0, _0804B1A4 @ =gMain - ldr r0, [r0, #0x4c] - movs r1, #0x1f - ands r0, r1 - lsrs r0, r0, #4 - cmp r0, #0 - beq _0804B1B8 - movs r4, #0 - ldr r7, _0804B1A8 @ =gUnknown_03006240 - ldr r0, _0804B1AC @ =0xFFFFF9C0 - adds r6, r7, r0 - ldr r5, _0804B1B0 @ =0x0000032B - ldr r1, _0804B1B4 @ =0xFFFFC156 - adds r3, r1, #0 -_0804B176: - lsls r0, r4, #0x10 - asrs r0, r0, #0x10 - adds r1, r0, r5 - lsls r1, r1, #1 - adds r1, r1, r6 - adds r2, r0, r3 - strh r2, [r1] - adds r0, #1 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #8 - ble _0804B176 - b _0804B1DC - .align 2, 0 -_0804B194: .4byte gCurrentPinballGame -_0804B198: .4byte 0x0000132C -_0804B19C: .4byte 0x00001334 -_0804B1A0: .4byte gUnknown_020028D8 -_0804B1A4: .4byte gMain -_0804B1A8: .4byte gUnknown_03006240 -_0804B1AC: .4byte 0xFFFFF9C0 -_0804B1B0: .4byte 0x0000032B -_0804B1B4: .4byte 0xFFFFC156 -_0804B1B8: - movs r4, #0 - ldr r7, _0804B1F0 @ =gUnknown_03006240 - ldr r3, _0804B1F4 @ =0xFFFFF9C0 - adds r5, r7, r3 - ldr r3, _0804B1F8 @ =0x0000032B - ldr r2, _0804B1FC @ =0x000001FF -_0804B1C4: - lsls r1, r4, #0x10 - asrs r1, r1, #0x10 - adds r0, r1, r3 - lsls r0, r0, #1 - adds r0, r0, r5 - strh r2, [r0] - adds r1, #1 - lsls r1, r1, #0x10 - lsrs r4, r1, #0x10 - asrs r1, r1, #0x10 - cmp r1, #8 - ble _0804B1C4 -_0804B1DC: - ldr r1, _0804B200 @ =0x040000D4 - str r7, [r1] - ldr r0, _0804B204 @ =0x06002640 - str r0, [r1, #4] - ldr r0, _0804B208 @ =0x80000020 - str r0, [r1, #8] - ldr r0, [r1, #8] - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B1F0: .4byte gUnknown_03006240 -_0804B1F4: .4byte 0xFFFFF9C0 -_0804B1F8: .4byte 0x0000032B -_0804B1FC: .4byte 0x000001FF -_0804B200: .4byte 0x040000D4 -_0804B204: .4byte 0x06002640 -_0804B208: .4byte 0x80000020 - thumb_func_start sub_4B20C sub_4B20C: @ 0x0804B20C push {r4, lr} diff --git a/expected_objs/sub_4B000.o b/expected_objs/sub_4B000.o deleted file mode 100644 index a6401709aca09b66fcf7a41f9e5a4a41f62fee5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2728 zcma);e`s4(6vxj?Ub~kpZDY;gMdO;ysM%J+%a66Gy77{B+3VW4Dsz7*n4~sa;<~Q1 z>FS)&p#IUp1W`c|1s#J4`iFu8!TnK(O8*e7;vXs&3L+{@DJo1s7teWl_x3ahddtoE ze(w2oZ}M`}g#)8GMNvQu1){J)0H(+Gw54nl1rKPjez|e|M&q{pPiI|W&BTP23v0LB zH(jCC=_GpyDl6D|m`lm*-kSkZIHM;OBU<)Z?#jh*9fG=6Q4Fp4 z74}K4xT0O3>!D)?>{RROXfUXy^q^LJWj^cFq8bqKv7LBvCthbK9&5=yL%3xpx7*pG zKUTmRdqdkxuy?y)Rny*VTx<8-Pvwu{Q;<^k<{7#|?1w!$t!l9fvzc z{?VTlLp|%KR(=`wnQkn z0`Q~^QlJxcfU%DHA=y=doyc|O??wF_<37~SFg8)=7#~7C%IY0KwwV7B)QgNOsLwN= zLHz_{D#iQHAuluk0_p(kcMf@l`CmZ&DPyYt31dp-@vk9&!Tgs{tE~RJ$Qt7hkbR6l zM)otNemtLCe7~O|>n#3jd>#39#&k7ZWV{vi`;51tev@$z>bDv1 zLj4ZoB@j=wzGN$uB&zL0de?Km)GylV=e`j1q{RiVysQ+So2K7gbpC;|X zX%7XSMOGQVgsd^9{qg=zqHWyJ25(?Im88*)>Ma4tew>$E_-YF;x9~SDe658cQiFn# zHd0xme^97+%2DyX8L^f&gc^`4E#iz+pU6nbDyg){NN=b?h)js(L9rZ{4UHjLd{7n| zN{HfyXc#wSt|8*$agiI3OYeZp7}!{o85x<8k#SiWm)TG$MdD?6dZqW>crHk z`Kf||g%atZ^rn?$JaqsgWlYjA`VuJvpC@`Wy#sg$ki8pVyJI7c-R;;3$I@Nyx~F+Z zyY6k?#jbtLJCW=!P8{7i#B>)?TmmiCPdj$Zu}2+CcMiqVT|)76hfp87D_r}V-x;zH zn>}-~RvJfJn`zpLP&4JpSgrhc4Pq0eS_xv~v$GJx-?vz)R-37g&(+GaSm6H+`kBPm z(C&oO|5HBsJ;v|2vwkaD`j^Xecud3l3pM3YKE>e@+~KhJ#WYzhblI_F_u!=X|B9o} z4r8X#*n{eY9ZiOM(;&-R6%p1kaSN`eank<$IOzZrT6< diff --git a/include/functions.h b/include/functions.h index 3cea27e0..1f39aadb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -642,7 +642,6 @@ extern void sub_472E4(); //extern ? sub_497BC(); //extern ? sub_49850(); //extern ? sub_49A34(); -//extern ? sub_4B000(); //extern ? sub_4B20C(); //extern ? nullsub_19(); //extern ? sub_4B654(); diff --git a/src/pinball_game_main.c b/src/pinball_game_main.c index 7cb72164..5e88db69 100644 --- a/src/pinball_game_main.c +++ b/src/pinball_game_main.c @@ -727,3 +727,81 @@ void sub_4AE8C(void) gUnknown_020028D8[7].unk4(); gUnknown_020028D8[8].unk4(); } + +void sub_4B000(void) +{ + s16 i; + + sub_4B334(); + if (!(gMain.unkF & 0x2)) + { + gUnknown_020028D8[0].unk4(); + gUnknown_020028D8[2].unk4(); + gUnknown_020028D8[3].unk4(); + gUnknown_020028D8[4].unk4(); + if (gMain.unkF & ~0x40) + { + if (!gCurrentPinballGame->unk1F) + { + for (i = 0; i < 4; i++) + { + gCurrentPinballGame->unk66 = 0; + gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0]; + gCurrentPinballGame->unk1E = i; + gUnknown_020028D8[6].unk4(); + } + } + } + else + { + gMain.fieldFrameCount++; + gCurrentPinballGame->unk290++; + if (gCurrentPinballGame->unk1F) + { + if (gCurrentPinballGame->unk1F == 2) + { + gCurrentPinballGame->unk66 = 0; + gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0]; + gCurrentPinballGame->unk1E = 0; + } + else + { + for (i = 0; i < 4; i++) + { + gCurrentPinballGame->unk66 = 0; + gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0]; + gCurrentPinballGame->unk1E = i; + gUnknown_020028D8[5].unk4(); + } + } + } + else + { + for (i = 0; i < 4; i++) + { + gCurrentPinballGame->unk66 = 0; + gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0]; + gCurrentPinballGame->unk1E = i; + gUnknown_020028D8[5].unk4(); + gUnknown_020028D8[6].unk4(); + } + } + } + + gUnknown_020028D8[7].unk4(); + gUnknown_020028D8[8].unk4(); + } + + if ((gMain.systemFrameCount % 32) / 16 > 0) + { + for (i = 0; i < 9; i++) + gUnknown_03005C00[0x32B + i] = 0xC156 + i; + } + else + { + for (i = 0; i < 9; i++) + gUnknown_03005C00[0x32B + i] = 0x1FF; + } + + DmaCopy16(3, &gUnknown_03005C00[0x320], (void *)0x6002640, 0x40); +}