From b3fb2c83e10aed1c1d559225f6fa80b38c01da75 Mon Sep 17 00:00:00 2001 From: Hyenate Date: Mon, 10 Mar 2025 22:38:34 -0400 Subject: [PATCH 1/2] Decompile sub_19E10 --- asm/rom_11B9C.s | 157 -------------------------------------- expected_objs/sub_19E10.o | Bin 2568 -> 0 bytes include/global.h | 9 ++- src/rom_19D04.c | 100 ++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 160 deletions(-) delete mode 100644 expected_objs/sub_19E10.o diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index 18ad5fd..a7d9313 100644 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -13814,163 +13814,6 @@ _08019A1C: .4byte 0x00001364 .section .text19E10 - thumb_func_start sub_19E10 -sub_19E10: @ 0x08019E10 - push {r4, lr} - bl sub_1A0F4 - bl sub_1DA74 - ldr r4, _08019EA4 @ =gCurrentPinballGame - ldr r0, [r4] - movs r2, #0xa8 - lsls r2, r2, #2 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, #0 - beq _08019E4E - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08019E4E - bl Random - ldr r4, [r4] - ldr r1, _08019EA8 @ =gMain - ldr r1, [r1, #0x4c] - adds r0, r0, r1 - movs r1, #0x64 - bl __umodsi3 - adds r0, #1 - ldr r3, _08019EAC @ =0x0000029F - adds r4, r4, r3 - strb r0, [r4] -_08019E4E: - ldr r4, _08019EA4 @ =gCurrentPinballGame - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x6d - bgt _08019E68 - bl sub_1D5D8 - bl sub_1DAD8 - bl sub_2C9A4 -_08019E68: - bl sub_2CA9C - ldr r0, [r4] - adds r0, #0x68 - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r0, #0xa7 - bgt _08019E7C - bl sub_239A4 -_08019E7C: - ldr r0, [r4] - adds r0, #0x68 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0xdb - bgt _08019EBC - bl sub_23E18 - ldr r0, [r4] - movs r1, #0xa9 - lsls r1, r1, #2 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08019EB0 - bl sub_1DC7C - b _08019EB4 - .align 2, 0 -_08019EA4: .4byte gCurrentPinballGame -_08019EA8: .4byte gMain -_08019EAC: .4byte 0x0000029F -_08019EB0: - bl sub_1EC48 -_08019EB4: - bl sub_1F158 - bl sub_1F59C -_08019EBC: - bl sub_1F698 - ldr r4, _08019F64 @ =gCurrentPinballGame - ldr r0, [r4] - adds r0, #0x68 - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r0, #0x3f - ble _08019ED6 - bl sub_1FA48 - bl sub_1FBC4 -_08019ED6: - ldr r0, [r4] - adds r0, #0x68 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0x73 - ble _08019EE6 - bl sub_2C538 -_08019EE6: - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x82 - ble _08019EF6 - bl sub_201B8 -_08019EF6: - bl sub_2CE80 - ldr r0, [r4] - adds r0, #0x68 - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r0, #0xa8 - ble _08019F0A - bl sub_2D104 -_08019F0A: - bl sub_203CC - bl sub_21B0C - bl sub_4E814 - bl sub_1D128 - bl sub_21D78 - bl sub_31B30 - ldr r0, [r4] - movs r3, #0xca - lsls r3, r3, #1 - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08019F38 - bl sub_225F0 -_08019F38: - bl sub_472E4 - ldr r2, [r4] - ldr r0, _08019F68 @ =0x00001328 - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, #0 - beq _08019F5C - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08019F5C - ldr r3, _08019F6C @ =0x00001330 - adds r1, r2, r3 - adds r3, #4 - adds r0, r2, r3 - str r0, [r1] -_08019F5C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08019F64: .4byte gCurrentPinballGame -_08019F68: .4byte 0x00001328 -_08019F6C: .4byte 0x00001330 - thumb_func_start sub_19F70 sub_19F70: @ 0x08019F70 push {lr} diff --git a/expected_objs/sub_19E10.o b/expected_objs/sub_19E10.o deleted file mode 100644 index 1a9acf31b7722f87980bc9e28eb85aecdef93ec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 zcma);U1%It6vzLwn@u-^l%!HwY1Pdp*70kd*`59JLHBFM)+Qh!LP1Hg%f@bKvI*G@ zMqgUR2m8_o?L!|Fg9we#2L<)TB0*5FFD4>__(2g7@lixUr1hM+b0@d=MQ@ln|KGjm zo_p?{<=mY0rhLONAe#XT`vhzygOP+A7z-mvV)VnCf8DsrPi89J-Ojv*mr}`BVU6t? z<>WaG!MbgaM<=^SPJFRkO?AeZ3_Er5=Tv&_FwN=O7_ZK)Sc>Bx!@O%(=PCmJy5v zJh3zPopoo(?~b2GHHA$K;|^HKU7mU1dXOHy-iiS-mb8{wk)l3s#ea~!GIHNCf z16+)p3>+l=n8GR2mlV#Bena7hNS{);NP1b}D(Ncr3{zc*Qr2kg*`IQ8>-hcrH_@iC2Ujq4g8*LeRd#CrQ@ zCHOhbe@){THGW0o3mRY2_-&1^X#A1JI~rfp_-l=S)c9A8f7ck31I*iH+o^apS1Q+& zs#cCvL#krbSBm=T`^uJnbr+MJ5d2~kyjheEUZi}fe7h!RdSkM zoYA2Do_@M_rnmZhZ{E(?dB^o^oStqi^+Zgs;fB7xQ;@0<#&rB*MfTMqzj{NiU7!sI zS=dfJR1L2zHkWHUcIap48)1%4-4@FA%8uN+lMClM&5}@gr=Aa^Y_AX$O?cG3*E!FucwrSugw&PUS*iwPzdTLGpUA8o7lkL601-8dTeT>~F>T=8y z_0hav)KT*RV4M9O6m{360{sc|!@#F(v%ptu9|3-1Ym545I>4XIlpNPbGY@brF4zexNzSveo9W@^n^_lZSw*SJ)pw%WjSQoY{)%xOccCffPK(^Bw zw2*E0`^eH=mu(FO>r3s8!D62R{J+LmCZ!OZGtZ!uvA`W+<2#Pq5qd`GsnWx3;Q+nJ zkG~JQvmgJUfVP ka+;hw=Qm0Z??J9f5}gF_j|@UA<(THTK%1*lpKQ|aU-`+8*Z=?k diff --git a/include/global.h b/include/global.h index e0bd000..519c625 100644 --- a/include/global.h +++ b/include/global.h @@ -233,9 +233,11 @@ struct PinballGame /*0x29C*/ u16 unk29C; /*0x29E*/ u8 unk29E; /*0x29F*/ u8 unk29F; - /*0x2A0*/ u8 filler2A0[0x2]; + /*0x2A0*/ u16 unk2A0; /*0x2A2*/ u8 unk2A2; - /*0x2A3*/ u8 filler2A3[0x7]; + /*0x2A3*/ u8 filler2A3[0x1]; + /*0x2A4*/ s8 unk2A4; + /*0x2A5*/ u8 filler2A5[0x5]; /*0x2AA*/ u16 unk2AA; /*0x2AC*/ u8 filler2AC[0x28]; /*0x2D4*/ u16 unk2D4; @@ -406,7 +408,8 @@ struct PinballGame /*0x1322*/s16 unk1322; /*0x1324*/s16 unk1324; /*0x1326*/s16 unk1326; - /*0x1328*/u8 filler1328[0x4]; + /*0x1328*/u16 unk1328; + /*0x132A*/u8 filler132A[0x2]; /*0x132C*/struct UnkPinballGame1334 *unk132c; /*0x1330*/struct UnkPinballGame1334 *unk1330; /*0x1334*/struct UnkPinballGame1334 unk1334[2]; diff --git a/src/rom_19D04.c b/src/rom_19D04.c index 99a0ea4..f9e0b68 100644 --- a/src/rom_19D04.c +++ b/src/rom_19D04.c @@ -1,6 +1,24 @@ #include "global.h" +#include "main.h" +extern void sub_1D5D8(void); +extern void sub_1DA74(void); +extern void sub_1DAD8(void); +extern void sub_1DC7C(void); +extern void sub_1EC48(void); +extern void sub_1F158(void); +extern void sub_1F59C(void); +extern void sub_1F698(void); +extern void sub_1FA48(void); +extern void sub_1FBC4(void); +extern void sub_201B8(void); extern void sub_21238(s32); +extern void sub_21D78(void); +extern void sub_239A4(void); +extern void sub_23E18(void); +extern void sub_2C538(void); +extern void sub_2C9A4(void); +extern void sub_4E814(void); void sub_19D04(void) { @@ -40,3 +58,85 @@ void sub_19D04(void) gCurrentPinballGame->unk72F = 0; } } + +void sub_19E10(void) { + int randNum; + + sub_1A0F4(); + sub_1DA74(); + if (gCurrentPinballGame->unk2A0 != 0) + { + gCurrentPinballGame->unk2A0 -= 1; + if (gCurrentPinballGame->unk2A0 == 0) + { + randNum = Random(); + gCurrentPinballGame->unk29F = ((randNum + gMain.systemFrameCount) % 100) + 1; + } + } + + if (gCurrentPinballGame->unk68 < 110) + { + sub_1D5D8(); + sub_1DAD8(); + sub_2C9A4(); + } + sub_2CA9C(); + if (gCurrentPinballGame->unk68 < 168) + { + sub_239A4(); + } + if (gCurrentPinballGame->unk68 < 220) + { + sub_23E18(); + if (gCurrentPinballGame->unk2A4 != 0) + { + sub_1DC7C(); + } + else + { + sub_1EC48(); + } + sub_1F158(); + sub_1F59C(); + } + sub_1F698(); + if (gCurrentPinballGame->unk68 > 63) + { + sub_1FA48(); + sub_1FBC4(); + } + if (gCurrentPinballGame->unk68 > 115) + { + sub_2C538(); + } + if (gCurrentPinballGame->unk68 > 130) + { + sub_201B8(); + } + sub_2CE80(); + if (gCurrentPinballGame->unk68 > 168) + { + sub_2D104(); + } + sub_203CC(); + sub_21B0C(); + sub_4E814(); + sub_1D128(); + sub_21D78(); + sub_31B30(); + + if (gCurrentPinballGame->unk194 != 0) + { + sub_225F0(); + } + sub_472E4(); + + if (gCurrentPinballGame->unk1328 != 0) + { + gCurrentPinballGame->unk1328 -= 1; + if (gCurrentPinballGame->unk1328 == 0) + { + gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; + } + } +} From 91c2e8de1c14f722935b75a5fd20eefce0ef824f Mon Sep 17 00:00:00 2001 From: Hyenate Date: Mon, 10 Mar 2025 22:45:16 -0400 Subject: [PATCH 2/2] Decompile sub_19F70 --- asm/rom_11B9C.s | 23 ----------------------- expected_objs/sub_19F70.o | Bin 932 -> 0 bytes src/rom_19D04.c | 14 ++++++++++++++ 3 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 expected_objs/sub_19F70.o diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index a7d9313..e1bc858 100644 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -13814,29 +13814,6 @@ _08019A1C: .4byte 0x00001364 .section .text19E10 - thumb_func_start sub_19F70 -sub_19F70: @ 0x08019F70 - push {lr} - bl sub_1DDDC - bl sub_1A9E8 - bl sub_1F2A4 - bl sub_1FF0C - ldr r0, _08019F9C @ =gCurrentPinballGame - ldr r0, [r0] - movs r2, #0xc0 - lsls r2, r2, #3 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, #0 - beq _08019F96 - subs r0, #1 - strh r0, [r1] -_08019F96: - pop {r0} - bx r0 - .align 2, 0 -_08019F9C: .4byte gCurrentPinballGame - thumb_func_start sub_19FA0 sub_19FA0: @ 0x08019FA0 push {r4, r5, lr} diff --git a/expected_objs/sub_19F70.o b/expected_objs/sub_19F70.o deleted file mode 100644 index 027e251e537569308b660b268155bdf3b994f55f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcma)5O-mb56g@97F-cWa5Cj)Wu@Y3KlNdAs7lwSag=Qn|I?Rxu(l$!wiFVZ%y67Kr z=fa;L;tz4>MrzNUmzO?gqbJ-s=gzzL&gI^hAFYpVr4%d_iumsVyQ%mjQ;DgFJaWLr zuIhA)m zXA+!e`bjrHnm-q5Oe7){-vFEAAcYy~HOF71UU&Slq(~!!C9-X5p6ZPgFiZV5;nxy= zBjI-vK2|lle$_A4+O@`5ZDX~E=rru|^^R{;v)ODIRj;+GMzzcJ%1E{S1`a+Cz6_4f z23^1GZx__?W^#UEh z3!?}g_vQs!50AoA-H%w{WsvpDJf$Cj+$FX-hU`lqbI;TEXo6cN70Hq(`4Y$57w!S!{to8wH|dTxNt3>%zuA$t-=qu8#IA@D SY`r=9ZrlS8_G}Q@#{C0AyH^MR diff --git a/src/rom_19D04.c b/src/rom_19D04.c index f9e0b68..67cd632 100644 --- a/src/rom_19D04.c +++ b/src/rom_19D04.c @@ -5,12 +5,14 @@ extern void sub_1D5D8(void); extern void sub_1DA74(void); extern void sub_1DAD8(void); extern void sub_1DC7C(void); +extern void sub_1DDDC(void); extern void sub_1EC48(void); extern void sub_1F158(void); extern void sub_1F59C(void); extern void sub_1F698(void); extern void sub_1FA48(void); extern void sub_1FBC4(void); +extern void sub_1FF0C(void); extern void sub_201B8(void); extern void sub_21238(s32); extern void sub_21D78(void); @@ -140,3 +142,15 @@ void sub_19E10(void) { } } } + +void sub_19F70(void) +{ + sub_1DDDC(); + sub_1A9E8(); + sub_1F2A4(); + sub_1FF0C(); + if (gCurrentPinballGame->unk600 != 0) + { + gCurrentPinballGame->unk600 -= 1; + } +}