diff --git a/asm/rom_4CEA8.s b/asm/rom_4CEA8.s index 3a6c122..8017d88 100644 --- a/asm/rom_4CEA8.s +++ b/asm/rom_4CEA8.s @@ -2846,128 +2846,3 @@ _0804E590: .4byte 0x80000010 _0804E594: .4byte 0x0000132C .section .text4E598 - - thumb_func_start sub_4E814 -sub_4E814: @ 0x0804E814 - push {r4, r5, r6, lr} - ldr r6, _0804E910 @ =gCurrentPinballGame - ldr r4, [r6] - ldr r0, _0804E914 @ =0x0000070C - adds r5, r4, r0 - ldrh r0, [r5] - movs r1, #0x28 - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #0x14 - bl __udivsi3 - ldr r1, _0804E918 @ =0x00000734 - adds r4, r4, r1 - strh r0, [r4] - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] - bl sub_4EA44 - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xe7 - bgt _0804E854 - bl sub_4EDC0 - bl sub_4EE74 -_0804E854: - ldr r0, [r6] - adds r0, #0x6a - ldrh r0, [r0] - subs r0, #0x51 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0xa6 - bhi _0804E868 - bl sub_4EF38 -_0804E868: - bl sub_4F0F0 - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x6f - bgt _0804E87C - bl sub_4F258 -_0804E87C: - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x70 - ble _0804E88C - bl sub_4F028 -_0804E88C: - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x68 - ble _0804E8A0 - bl sub_4F4B4 - bl sub_4F660 -_0804E8A0: - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xff - bgt _0804E8B0 - bl sub_4F30C -_0804E8B0: - bl sub_4F2B8 - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x6e - ble _0804E8C4 - bl sub_4EAB0 -_0804E8C4: - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xb2 - ble _0804E8DC - bl sub_4EAF8 - bl sub_4EBD0 - bl sub_4E920 -_0804E8DC: - ldr r0, [r6] - adds r0, #0x6a - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xca - ble _0804E8EC - bl sub_4ECDC -_0804E8EC: - ldr r0, [r6] - ldr r1, _0804E91C @ =0x00000724 - adds r2, r0, r1 - ldrh r1, [r2] - cmp r1, #0 - beq _0804E908 - adds r0, #0x25 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804E908 - subs r0, r1, #1 - strh r0, [r2] -_0804E908: - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E910: .4byte gCurrentPinballGame -_0804E914: .4byte 0x0000070C -_0804E918: .4byte 0x00000734 -_0804E91C: .4byte 0x00000724 diff --git a/expected_objs/sub_4E814.o b/expected_objs/sub_4E814.o deleted file mode 100644 index b451bbf..0000000 Binary files a/expected_objs/sub_4E814.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index 6f4e6b6..03e6317 100644 --- a/include/functions.h +++ b/include/functions.h @@ -657,23 +657,23 @@ extern void PinballGame_State0_49ED4(void); //extern ? sub_4E468(); extern void sub_4E598(void); extern void sub_4E814(void); -//extern ? sub_4E920(); +extern void sub_4E920(void); extern void sub_4E9F0(s16); -//extern ? sub_4EA44(); -//extern ? sub_4EAB0(); -//extern ? sub_4EAF8(); -//extern ? sub_4EBD0(); -//extern ? sub_4ECDC(); -//extern ? sub_4EDC0(); -//extern ? sub_4EE74(); -//extern ? sub_4EF38(); -//extern ? sub_4F028(); +extern void sub_4EA44(void); +extern void sub_4EAB0(void); +extern void sub_4EAF8(void); +extern void sub_4EBD0(void); +extern void sub_4ECDC(void); +extern void sub_4EDC0(void); +extern void sub_4EE74(void); +extern void sub_4EF38(void); +extern void sub_4F028(void); extern void sub_4F0F0(void); extern void sub_4F258(void); extern void sub_4F2B8(void); -//extern ? sub_4F30C(); -//extern ? sub_4F4B4(); -//extern ? sub_4F660(); +extern void sub_4F30C(void); +extern void sub_4F4B4(void); +extern void sub_4F660(void); extern void sub_4F814(void); extern void sub_4F95C(void); extern void sub_4F9F0(void); diff --git a/src/rom_4F258.c b/src/rom_4F258.c index 4ac504e..390f42f 100644 --- a/src/rom_4F258.c +++ b/src/rom_4F258.c @@ -21,6 +21,54 @@ extern const u8 *gUnknown_086B08D4[][3][5]; extern struct SongHeader gUnknown_0869F664; +void sub_4E814(void) +{ + gCurrentPinballGame->unk734 = (gCurrentPinballGame->unk70C % 40) / 20; + gCurrentPinballGame->unk70C = gCurrentPinballGame->unk70C + 1; + sub_4EA44(); + if (gCurrentPinballGame->unk6A < 232) + { + sub_4EDC0(); + sub_4EE74(); + } + + if (gCurrentPinballGame->unk6A >= 81 && gCurrentPinballGame->unk6A < 248) + sub_4EF38(); + + sub_4F0F0(); + if (gCurrentPinballGame->unk6A < 112) + sub_4F258(); + + if (gCurrentPinballGame->unk6A > 112) + sub_4F028(); + + if (gCurrentPinballGame->unk6A > 104) + { + sub_4F4B4(); + sub_4F660(); + } + + if (gCurrentPinballGame->unk6A < 256) + sub_4F30C(); + + sub_4F2B8(); + if (gCurrentPinballGame->unk6A > 110) + sub_4EAB0(); + + if (gCurrentPinballGame->unk6A > 178) + { + sub_4EAF8(); + sub_4EBD0(); + sub_4E920(); + } + + if (gCurrentPinballGame->unk6A > 202) + sub_4ECDC(); + + if (gCurrentPinballGame->unk724 && gCurrentPinballGame->unk25 == 0) + gCurrentPinballGame->unk724--; +} + void sub_4E920(void) { s16 index;