diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index dad1bee..b131b63 100644 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -13814,186 +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} - 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_19E10.o b/expected_objs/sub_19E10.o deleted file mode 100644 index 1a9acf3..0000000 Binary files a/expected_objs/sub_19E10.o and /dev/null differ diff --git a/expected_objs/sub_19F70.o b/expected_objs/sub_19F70.o deleted file mode 100644 index 027e251..0000000 Binary files a/expected_objs/sub_19F70.o and /dev/null differ diff --git a/include/global.h b/include/global.h index dee0c07..9b945d7 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..67cd632 100644 --- a/src/rom_19D04.c +++ b/src/rom_19D04.c @@ -1,6 +1,26 @@ #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_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); +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 +60,97 @@ 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; + } + } +} + +void sub_19F70(void) +{ + sub_1DDDC(); + sub_1A9E8(); + sub_1F2A4(); + sub_1FF0C(); + if (gCurrentPinballGame->unk600 != 0) + { + gCurrentPinballGame->unk600 -= 1; + } +}