From b0edfbb544cd89fc81a773ac95f079019d414852 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 9 Aug 2025 15:33:53 -0500 Subject: [PATCH] sub_3B7C4 --- asm/rom_3219C.s | 1852 ---------------------------------------------- include/global.h | 9 +- src/rom_49A34.c | 559 +++++++++++++- 3 files changed, 553 insertions(+), 1867 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index efecf13..fc265aa 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -9090,1855 +9090,3 @@ _0803B7B4: .4byte 0x00000386 _0803B7B8: .4byte 0x000005FA _0803B7BC: .4byte 0x00000296 _0803B7C0: .4byte gMain - - thumb_func_start sub_3B7C4 -sub_3B7C4: @ 0x0803B7C4 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r0, _0803B874 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _0803B878 @ =0x00000452 - adds r4, r1, r2 - ldrh r3, [r4] - mov r8, r0 - cmp r3, #0 - beq _0803B850 - subs r0, r3, #1 - strh r0, [r4] - ldr r3, _0803B87C @ =0x00000389 - adds r1, r1, r3 - movs r0, #1 - strb r0, [r1] - mov r4, r8 - ldr r0, [r4] - adds r0, r0, r2 - ldrh r0, [r0] - cmp r0, #0x23 - bne _0803B838 - ldr r0, _0803B880 @ =gMPlayInfo_SE1 - ldr r1, _0803B884 @ =gUnknown_086A22D8 - bl MPlayStart - ldr r1, [r4] - ldr r0, _0803B888 @ =0x0007A120 - str r0, [r1, #0x3c] - movs r0, #7 - bl sub_11B0 - ldr r1, [r4] - ldr r2, _0803B88C @ =0x00000385 - adds r1, r1, r2 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r3, [r4] - adds r2, r3, r2 - movs r1, #0xe1 - lsls r1, r1, #2 - adds r0, r3, r1 - movs r1, #0 - ldrsb r1, [r2, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - blt _0803B838 - movs r2, #0xf7 - lsls r2, r2, #2 - adds r1, r3, r2 - movs r0, #6 - strb r0, [r1] -_0803B838: - ldr r0, _0803B874 @ =gCurrentPinballGame - ldr r3, [r0] - ldr r4, _0803B878 @ =0x00000452 - adds r1, r3, r4 - ldrh r1, [r1] - mov r8, r0 - cmp r1, #0x1e - bhi _0803B850 - ldr r0, _0803B87C @ =0x00000389 - adds r1, r3, r0 - movs r0, #0 - strb r0, [r1] -_0803B850: - mov r1, r8 - ldr r0, [r1] - movs r2, #0xf7 - lsls r2, r2, #2 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xa - bls _0803B868 - bl _0803C476 -_0803B868: - lsls r0, r0, #2 - ldr r1, _0803B890 @ =_0803B894 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803B874: .4byte gCurrentPinballGame -_0803B878: .4byte 0x00000452 -_0803B87C: .4byte 0x00000389 -_0803B880: .4byte gMPlayInfo_SE1 -_0803B884: .4byte gUnknown_086A22D8 -_0803B888: .4byte 0x0007A120 -_0803B88C: .4byte 0x00000385 -_0803B890: .4byte _0803B894 -_0803B894: @ jump table - .4byte _0803B8C0 @ case 0 - .4byte _0803B91C @ case 1 - .4byte _0803BB2C @ case 2 - .4byte _0803BC74 @ case 3 - .4byte _0803BEF8 @ case 4 - .4byte _0803BFD4 @ case 5 - .4byte _0803C098 @ case 6 - .4byte _0803C1BC @ case 7 - .4byte _0803C26C @ case 8 - .4byte _0803C3C0 @ case 9 - .4byte _0803C476 @ case 10 -_0803B8C0: - ldr r3, _0803B904 @ =gCurrentPinballGame - ldr r0, [r3] - movs r4, #0xf7 - lsls r4, r4, #2 - adds r0, r0, r4 - movs r4, #0 - movs r1, #1 - strb r1, [r0] - ldr r1, [r3] - ldr r0, _0803B908 @ =0x000003E2 - adds r2, r1, r0 - movs r5, #0 - movs r0, #0x16 - strh r0, [r2] - movs r2, #0xf9 - lsls r2, r2, #2 - adds r0, r1, r2 - strh r4, [r0] - ldr r0, _0803B90C @ =0x000003E1 - adds r1, r1, r0 - strb r5, [r1] - ldr r1, [r3] - adds r2, #4 - adds r0, r1, r2 - strh r4, [r0] - ldr r3, _0803B910 @ =0x000003EA - adds r2, r1, r3 - ldr r0, _0803B914 @ =0x0000FB50 - strh r0, [r2] - ldr r0, _0803B918 @ =0x000004C6 - adds r1, r1, r0 - strh r4, [r1] - bl _0803C476 - .align 2, 0 -_0803B904: .4byte gCurrentPinballGame -_0803B908: .4byte 0x000003E2 -_0803B90C: .4byte 0x000003E1 -_0803B910: .4byte 0x000003EA -_0803B914: .4byte 0x0000FB50 -_0803B918: .4byte 0x000004C6 -_0803B91C: - ldr r0, _0803B944 @ =gUnknown_086AF140 - mov r1, r8 - ldr r5, [r1] - ldr r2, _0803B948 @ =0x000003E2 - adds r4, r5, r2 - movs r3, #0 - ldrsh r1, [r4, r3] - lsls r1, r1, #2 - adds r0, #2 - adds r1, r1, r0 - movs r0, #0xf9 - lsls r0, r0, #2 - adds r2, r5, r0 - ldrh r3, [r2] - ldrh r0, [r1] - cmp r0, r3 - bls _0803B94C - adds r0, r3, #1 - strh r0, [r2] - b _0803B99E - .align 2, 0 -_0803B944: .4byte gUnknown_086AF140 -_0803B948: .4byte 0x000003E2 -_0803B94C: - movs r3, #0 - strh r3, [r2] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x24 - bne _0803B99E - ldr r2, _0803B978 @ =0x000003E1 - adds r1, r5, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x11 - bgt _0803B97C - movs r0, #0x22 - strh r0, [r4] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - b _0803B99E - .align 2, 0 -_0803B978: .4byte 0x000003E1 -_0803B97C: - strh r3, [r4] - movs r3, #0xf7 - lsls r3, r3, #2 - adds r1, r5, r3 - movs r0, #2 - strb r0, [r1] - mov r4, r8 - ldr r0, [r4] - ldr r1, _0803BAF8 @ =0x000003DD - adds r0, r0, r1 - movs r1, #4 - strb r1, [r0] - ldr r0, [r4] - ldr r2, _0803BAFC @ =0x000003E1 - adds r0, r0, r2 - movs r1, #9 - strb r1, [r0] -_0803B99E: - ldr r0, _0803BB00 @ =gCurrentPinballGame - ldr r4, [r0] - ldr r3, _0803BB04 @ =0x000003E2 - adds r0, r4, r3 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x16 - beq _0803B9B0 - b _0803BABA -_0803B9B0: - adds r3, #2 - adds r2, r4, r3 - ldrh r1, [r2] - ldr r0, _0803BB08 @ =0x000001F3 - cmp r1, r0 - bhi _0803BA54 - cmp r1, #0x32 - beq _0803B9C6 - subs r0, #0xe5 - cmp r1, r0 - bne _0803B9E8 -_0803B9C6: - ldr r0, _0803BB0C @ =0x000004CA - adds r1, r4, r0 - movs r0, #0x1f - strh r0, [r1] - ldrh r0, [r2] - movs r1, #0x6e - bl __udivsi3 - ldr r2, _0803BB10 @ =0x000004C9 - adds r1, r4, r2 - strb r0, [r1] - ldr r0, _0803BB14 @ =0x00000119 - bl m4aSongNumStart - movs r0, #8 - bl sub_11B0 -_0803B9E8: - ldr r0, _0803BB00 @ =gCurrentPinballGame - ldr r4, [r0] - movs r3, #0xf9 - lsls r3, r3, #2 - adds r2, r4, r3 - ldrh r1, [r2] - cmp r1, #0xa0 - beq _0803BA00 - movs r0, #0xbe - lsls r0, r0, #1 - cmp r1, r0 - bne _0803BA22 -_0803BA00: - ldr r0, _0803BB0C @ =0x000004CA - adds r1, r4, r0 - movs r0, #0x1f - strh r0, [r1] - ldrh r0, [r2] - movs r1, #0x6e - bl __udivsi3 - ldr r2, _0803BB10 @ =0x000004C9 - adds r1, r4, r2 - strb r0, [r1] - ldr r0, _0803BB14 @ =0x00000119 - bl m4aSongNumStart - movs r0, #8 - bl sub_11B0 -_0803BA22: - ldr r0, _0803BB00 @ =gCurrentPinballGame - ldr r2, [r0] - movs r3, #0xf9 - lsls r3, r3, #2 - adds r0, r2, r3 - ldrh r1, [r0] - movs r0, #0xf5 - lsls r0, r0, #1 - cmp r1, r0 - bne _0803BA54 - ldr r4, _0803BB0C @ =0x000004CA - adds r1, r2, r4 - movs r0, #0x1f - strh r0, [r1] - ldr r0, _0803BB10 @ =0x000004C9 - adds r1, r2, r0 - movs r0, #4 - strb r0, [r1] - movs r0, #0x8d - lsls r0, r0, #1 - bl m4aSongNumStart - movs r0, #8 - bl sub_11B0 -_0803BA54: - ldr r2, _0803BB00 @ =gCurrentPinballGame - ldr r3, [r2] - movs r1, #0xf9 - lsls r1, r1, #2 - adds r0, r3, r1 - ldrh r1, [r0] - ldr r0, _0803BB18 @ =0x00000275 - mov r8, r2 - cmp r1, r0 - bls _0803BA8E - ldr r4, _0803BB1C @ =0x000003EA - adds r2, r3, r4 - movs r1, #0 - ldrsh r0, [r2, r1] - cmp r0, #0 - bge _0803BA9E - adds r4, #0xdc - adds r0, r3, r4 - ldrh r1, [r0] - adds r1, #4 - strh r1, [r0] - ldrh r0, [r2] - adds r0, r0, r1 - strh r0, [r2] - lsls r0, r0, #0x10 - cmp r0, #0 - ble _0803BA8E - movs r0, #0 - strh r0, [r2] -_0803BA8E: - mov r1, r8 - ldr r0, [r1] - ldr r2, _0803BB1C @ =0x000003EA - adds r0, r0, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0 - blt _0803BABA -_0803BA9E: - ldr r0, _0803BB00 @ =gCurrentPinballGame - ldr r0, [r0] - movs r4, #0x99 - lsls r4, r4, #3 - adds r0, r0, r4 - movs r1, #0x3c - strb r1, [r0] - ldr r0, _0803BB20 @ =gMPlayInfo_SE1 - ldr r1, _0803BB24 @ =gUnknown_086A2454 - bl MPlayStart - movs r0, #0xd - bl sub_11B0 -_0803BABA: - ldr r0, _0803BB00 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _0803BB04 @ =0x000003E2 - adds r0, r1, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0x21 - bne _0803BAE0 - movs r4, #0xf9 - lsls r4, r4, #2 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, #0 - bne _0803BAE0 - movs r0, #0xe4 - lsls r0, r0, #2 - adds r1, r1, r0 - movs r0, #0x29 - strh r0, [r1] -_0803BAE0: - ldr r0, _0803BB00 @ =gCurrentPinballGame - ldr r0, [r0] - ldr r2, _0803BB28 @ =0x00000392 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, #0x78 - bhi _0803BAF2 - bl _0803C476 -_0803BAF2: - subs r0, #1 - bl _0803C474 - .align 2, 0 -_0803BAF8: .4byte 0x000003DD -_0803BAFC: .4byte 0x000003E1 -_0803BB00: .4byte gCurrentPinballGame -_0803BB04: .4byte 0x000003E2 -_0803BB08: .4byte 0x000001F3 -_0803BB0C: .4byte 0x000004CA -_0803BB10: .4byte 0x000004C9 -_0803BB14: .4byte 0x00000119 -_0803BB18: .4byte 0x00000275 -_0803BB1C: .4byte 0x000003EA -_0803BB20: .4byte gMPlayInfo_SE1 -_0803BB24: .4byte gUnknown_086A2454 -_0803BB28: .4byte 0x00000392 -_0803BB2C: - mov r3, r8 - ldr r4, [r3] - ldr r1, _0803BB50 @ =0x00000452 - adds r0, r4, r1 - ldrh r0, [r0] - cmp r0, #0x1e - bls _0803BB58 - ldr r2, _0803BB54 @ =0x000003E2 - adds r1, r4, r2 - movs r2, #0 - movs r0, #0x15 - strh r0, [r1] - movs r3, #0xf9 - lsls r3, r3, #2 - adds r0, r4, r3 - strh r2, [r0] - bl _0803C476 - .align 2, 0 -_0803BB50: .4byte 0x00000452 -_0803BB54: .4byte 0x000003E2 -_0803BB58: - ldr r0, _0803BB7C @ =gUnknown_086AF140 - ldr r1, _0803BB80 @ =0x000003E2 - adds r3, r4, r1 - movs r2, #0 - ldrsh r1, [r3, r2] - lsls r1, r1, #2 - adds r0, #2 - adds r1, r1, r0 - movs r0, #0xf9 - lsls r0, r0, #2 - adds r2, r4, r0 - ldrh r5, [r2] - ldrh r0, [r1] - cmp r0, r5 - bls _0803BB84 - adds r0, r5, #1 - strh r0, [r2] - b _0803BC50 - .align 2, 0 -_0803BB7C: .4byte gUnknown_086AF140 -_0803BB80: .4byte 0x000003E2 -_0803BB84: - movs r6, #0 - movs r5, #0 - strh r5, [r2] - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - bne _0803BC50 - ldr r2, _0803BBF4 @ =0x000003E1 - adds r1, r4, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0xb - bgt _0803BC00 - strh r5, [r3] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - mov r2, r8 - ldr r1, [r2] - ldr r3, _0803BBF4 @ =0x000003E1 - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xc - bne _0803BC50 - ldr r4, _0803BBF8 @ =0x000003DD - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #4 - bne _0803BC50 - movs r3, #0 - ldr r5, _0803BBFC @ =0x0000048C - movs r4, #9 -_0803BBD2: - ldr r0, [r2] - lsls r1, r3, #0x10 - asrs r1, r1, #0x10 - adds r0, r0, r5 - adds r3, r0, r1 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #8 - bgt _0803BBE6 - strb r4, [r3] -_0803BBE6: - adds r0, r1, #1 - lsls r0, r0, #0x10 - lsrs r3, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #3 - ble _0803BBD2 - b _0803BC50 - .align 2, 0 -_0803BBF4: .4byte 0x000003E1 -_0803BBF8: .4byte 0x000003DD -_0803BBFC: .4byte 0x0000048C -_0803BC00: - ldr r1, _0803BC20 @ =0x000003DD - adds r0, r4, r1 - movs r1, #0 - ldrsb r1, [r0, r1] - cmp r1, #4 - bne _0803BC24 - movs r0, #0x24 - strh r0, [r3] - movs r3, #0xf7 - lsls r3, r3, #2 - adds r0, r4, r3 - strb r1, [r0] - mov r4, r8 - ldr r0, [r4] - b _0803BC4C - .align 2, 0 -_0803BC20: .4byte 0x000003DD -_0803BC24: - cmp r1, #3 - bne _0803BC3A - movs r0, #0x4c - strh r0, [r3] - movs r3, #0xf7 - lsls r3, r3, #2 - adds r0, r4, r3 - strb r1, [r0] - mov r4, r8 - ldr r0, [r4] - b _0803BC4C -_0803BC3A: - movs r0, #0x3a - strh r0, [r3] - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r4, r0 - movs r0, #5 - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] -_0803BC4C: - adds r0, r0, r2 - strb r6, [r0] -_0803BC50: - ldr r0, _0803BC6C @ =gCurrentPinballGame - ldr r0, [r0] - ldr r2, _0803BC70 @ =0x000003E2 - adds r1, r0, r2 - movs r3, #0 - ldrsh r0, [r1, r3] - cmp r0, #0x15 - beq _0803BC64 - bl _0803C476 -_0803BC64: - movs r0, #0 - bl _0803C474 - .align 2, 0 -_0803BC6C: .4byte gCurrentPinballGame -_0803BC70: .4byte 0x000003E2 -_0803BC74: - ldr r1, _0803BCA0 @ =gUnknown_086AF140 - mov r4, r8 - ldr r2, [r4] - ldr r0, _0803BCA4 @ =0x000003E2 - adds r3, r2, r0 - movs r4, #0 - ldrsh r0, [r3, r4] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0xf9 - lsls r1, r1, #2 - adds r2, r2, r1 - ldrh r1, [r2] - ldrh r0, [r0] - cmp r0, r1 - bls _0803BCA8 - adds r0, r1, #1 - strh r0, [r2] - bl _0803C476 - .align 2, 0 -_0803BCA0: .4byte gUnknown_086AF140 -_0803BCA4: .4byte 0x000003E2 -_0803BCA8: - movs r0, #0 - strh r0, [r2] - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x5d - beq _0803BCC2 - cmp r0, #0x60 - beq _0803BCC2 - cmp r0, #0x63 - bne _0803BD1E -_0803BCC2: - mov r2, r8 - ldr r1, [r2] - ldr r3, _0803BCF4 @ =0x000003E2 - adds r2, r1, r3 - movs r0, #0 - strh r0, [r2] - movs r4, #0xf7 - lsls r4, r4, #2 - adds r1, r1, r4 - movs r0, #2 - strb r0, [r1] - mov r0, r8 - ldr r2, [r0] - ldr r1, _0803BCF8 @ =0x0000047C - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0803BCFC - subs r3, #5 - adds r1, r2, r3 - movs r0, #4 - b _0803BD02 - .align 2, 0 -_0803BCF4: .4byte 0x000003E2 -_0803BCF8: .4byte 0x0000047C -_0803BCFC: - ldr r3, _0803BDF8 @ =0x000003DD - adds r1, r2, r3 - movs r0, #5 -_0803BD02: - strb r0, [r1] - mov r4, r8 - ldr r0, [r4] - ldr r1, _0803BDFC @ =0x000003E1 - adds r0, r0, r1 - movs r1, #8 - strb r1, [r0] - mov r2, r8 - ldr r1, [r2] - ldr r3, _0803BE00 @ =0x0000047C - adds r1, r1, r3 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] -_0803BD1E: - ldr r5, _0803BE04 @ =gCurrentPinballGame - ldr r0, [r5] - ldr r4, _0803BE08 @ =0x000003E2 - adds r0, r0, r4 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x5a - beq _0803BD30 - b _0803C476 -_0803BD30: - ldr r0, _0803BE0C @ =gMPlayInfo_SE1 - ldr r1, _0803BE10 @ =gUnknown_086A24F0 - bl MPlayStart - ldr r0, [r5] - ldr r2, _0803BE14 @ =0x0000047E - adds r0, r0, r2 - movs r1, #8 - strb r1, [r0] - ldr r4, [r5] - ldr r3, _0803BE18 @ =0x00000482 - adds r1, r4, r3 - movs r0, #0 - mov sb, r0 - movs r0, #0x23 - strh r0, [r1] - ldr r1, _0803BE1C @ =gMain - mov sl, r1 - ldr r1, _0803BE20 @ =0x000012C8 - add r1, sl - movs r0, #1 - strh r0, [r1] - adds r2, #0xa - mov r8, r2 - adds r2, r4, r2 - movs r0, #0x96 - lsls r0, r0, #3 - strh r0, [r2] - adds r3, #8 - adds r1, r4, r3 - adds r0, #0x28 - strh r0, [r1] - movs r1, #0 - ldrsh r0, [r2, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - ldr r2, _0803BE24 @ =0x0000132C - adds r4, r4, r2 - ldr r2, [r4] - movs r3, #0x10 - ldrsh r1, [r2, r3] - subs r6, r0, r1 - movs r1, #0x7c - movs r4, #0x12 - ldrsh r0, [r2, r4] - subs r7, r1, r0 - rsbs r0, r6, #0 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - lsls r1, r7, #0x10 - asrs r1, r1, #0x10 - bl ArcTan2 - ldr r1, [r5] - ldr r6, _0803BE28 @ =0x00000484 - adds r2, r1, r6 - strh r0, [r2] - movs r0, #0xe2 - lsls r0, r0, #2 - adds r1, r1, r0 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _0803BDE0 - bl Random - ldr r4, [r5] - mov r2, sl - ldr r1, [r2, #0x4c] - muls r0, r1, r0 - movs r1, #0x64 - bl __umodsi3 - adds r1, r0, #0 - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #0xc - movs r1, #0x64 - bl __udivsi3 - movs r3, #0x98 - lsls r3, r3, #8 - adds r0, r0, r3 - adds r4, r4, r6 - strh r0, [r4] -_0803BDE0: - ldr r1, [r5] - adds r3, r1, r6 - ldrh r2, [r3] - ldr r0, _0803BE2C @ =0x00003FFF - cmp r2, r0 - bhi _0803BE34 - movs r0, #0xe8 - lsls r0, r0, #8 - strh r0, [r3] - ldr r4, _0803BE30 @ =0x0000047D - adds r1, r1, r4 - b _0803BEB6 - .align 2, 0 -_0803BDF8: .4byte 0x000003DD -_0803BDFC: .4byte 0x000003E1 -_0803BE00: .4byte 0x0000047C -_0803BE04: .4byte gCurrentPinballGame -_0803BE08: .4byte 0x000003E2 -_0803BE0C: .4byte gMPlayInfo_SE1 -_0803BE10: .4byte gUnknown_086A24F0 -_0803BE14: .4byte 0x0000047E -_0803BE18: .4byte 0x00000482 -_0803BE1C: .4byte gMain -_0803BE20: .4byte 0x000012C8 -_0803BE24: .4byte 0x0000132C -_0803BE28: .4byte 0x00000484 -_0803BE2C: .4byte 0x00003FFF -_0803BE30: .4byte 0x0000047D -_0803BE34: - ldr r0, _0803BE50 @ =0x000097FF - cmp r2, r0 - bhi _0803BE5C - adds r0, #1 - strh r0, [r3] - ldr r2, _0803BE54 @ =0x0000047D - adds r0, r1, r2 - movs r3, #1 - strb r3, [r0] - ldr r0, [r5] - add r0, r8 - ldr r1, _0803BE58 @ =0x00000424 - b _0803BEC0 - .align 2, 0 -_0803BE50: .4byte 0x000097FF -_0803BE54: .4byte 0x0000047D -_0803BE58: .4byte 0x00000424 -_0803BE5C: - ldr r0, _0803BE74 @ =0x0000AFFF - cmp r2, r0 - bhi _0803BE80 - ldr r4, _0803BE78 @ =0x0000047D - adds r0, r1, r4 - movs r1, #1 - strb r1, [r0] - ldr r0, [r5] - add r0, r8 - ldr r1, _0803BE7C @ =0x00000424 - b _0803BEC0 - .align 2, 0 -_0803BE74: .4byte 0x0000AFFF -_0803BE78: .4byte 0x0000047D -_0803BE7C: .4byte 0x00000424 -_0803BE80: - ldr r0, _0803BE90 @ =0x0000CFFF - cmp r2, r0 - bhi _0803BE98 - ldr r2, _0803BE94 @ =0x0000047D - adds r0, r1, r2 - mov r3, sb - strb r3, [r0] - b _0803BEC2 - .align 2, 0 -_0803BE90: .4byte 0x0000CFFF -_0803BE94: .4byte 0x0000047D -_0803BE98: - ldr r0, _0803BEA4 @ =0x0000E7FF - cmp r2, r0 - bhi _0803BEAC - ldr r4, _0803BEA8 @ =0x0000047D - adds r1, r1, r4 - b _0803BEB6 - .align 2, 0 -_0803BEA4: .4byte 0x0000E7FF -_0803BEA8: .4byte 0x0000047D -_0803BEAC: - movs r0, #0xe8 - lsls r0, r0, #8 - strh r0, [r3] - ldr r0, _0803BEE8 @ =0x0000047D - adds r1, r1, r0 -_0803BEB6: - movs r0, #2 - strb r0, [r1] - ldr r0, [r5] - add r0, r8 - ldr r1, _0803BEEC @ =0x0000053C -_0803BEC0: - strh r1, [r0] -_0803BEC2: - ldr r0, _0803BEF0 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r1, _0803BEF4 @ =0x000003E2 - adds r3, r2, r1 - ldr r4, _0803BEE8 @ =0x0000047D - adds r0, r2, r4 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r0, r1, #1 - adds r0, r0, r1 - ldrh r1, [r3] - adds r0, r0, r1 - strh r0, [r3] - movs r3, #0xe2 - lsls r3, r3, #2 - adds r2, r2, r3 - movs r0, #0 - ldrsb r0, [r2, r0] - b _0803C476 - .align 2, 0 -_0803BEE8: .4byte 0x0000047D -_0803BEEC: .4byte 0x0000053C -_0803BEF0: .4byte gCurrentPinballGame -_0803BEF4: .4byte 0x000003E2 -_0803BEF8: - ldr r0, _0803BF48 @ =gUnknown_086AF140 - mov r4, r8 - ldr r5, [r4] - ldr r1, _0803BF4C @ =0x000003E2 - adds r4, r5, r1 - movs r2, #0 - ldrsh r1, [r4, r2] - lsls r1, r1, #2 - adds r0, #2 - adds r1, r1, r0 - movs r3, #0xf9 - lsls r3, r3, #2 - adds r2, r5, r3 - ldrh r3, [r2] - ldrh r0, [r1] - cmp r0, r3 - bls _0803BF1C - b _0803C28E -_0803BF1C: - movs r3, #0 - strh r3, [r2] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x38 - bne _0803BF76 - ldr r0, _0803BF50 @ =0x000003E1 - adds r1, r5, r0 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #5 - bgt _0803BF54 - movs r0, #0x36 - strh r0, [r4] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - b _0803BF76 - .align 2, 0 -_0803BF48: .4byte gUnknown_086AF140 -_0803BF4C: .4byte 0x000003E2 -_0803BF50: .4byte 0x000003E1 -_0803BF54: - strh r3, [r4] - movs r2, #0xf7 - lsls r2, r2, #2 - adds r1, r5, r2 - movs r0, #2 - strb r0, [r1] - mov r3, r8 - ldr r0, [r3] - ldr r4, _0803BFB0 @ =0x000003DD - adds r0, r0, r4 - movs r1, #3 - strb r1, [r0] - ldr r0, [r3] - ldr r1, _0803BFB4 @ =0x000003E1 - adds r0, r0, r1 - movs r1, #6 - strb r1, [r0] -_0803BF76: - ldr r0, _0803BFB8 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r3, _0803BFBC @ =0x000003E2 - adds r0, r2, r3 - movs r4, #0 - ldrsh r0, [r0, r4] - cmp r0, #0x32 - beq _0803BF88 - b _0803C476 -_0803BF88: - movs r1, #0xf9 - lsls r1, r1, #2 - adds r0, r2, r1 - ldrh r3, [r0] - cmp r3, #0 - beq _0803BF96 - b _0803C476 -_0803BF96: - ldr r0, _0803BFC0 @ =gMain - ldr r4, _0803BFC4 @ =0x00001888 - adds r0, r0, r4 - movs r1, #1 - strh r1, [r0] - ldr r1, _0803BFC8 @ =0x00000456 - adds r0, r2, r1 - strh r3, [r0] - ldr r0, _0803BFCC @ =gMPlayInfo_SE1 - ldr r1, _0803BFD0 @ =gUnknown_086A2548 - bl MPlayStart - b _0803C476 - .align 2, 0 -_0803BFB0: .4byte 0x000003DD -_0803BFB4: .4byte 0x000003E1 -_0803BFB8: .4byte gCurrentPinballGame -_0803BFBC: .4byte 0x000003E2 -_0803BFC0: .4byte gMain -_0803BFC4: .4byte 0x00001888 -_0803BFC8: .4byte 0x00000456 -_0803BFCC: .4byte gMPlayInfo_SE1 -_0803BFD0: .4byte gUnknown_086A2548 -_0803BFD4: - ldr r1, _0803BFFC @ =gUnknown_086AF140 - ldr r5, _0803C000 @ =gCurrentPinballGame - ldr r4, [r5] - ldr r6, _0803C004 @ =0x000003E2 - adds r2, r4, r6 - movs r3, #0 - ldrsh r0, [r2, r3] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r7, #0xf9 - lsls r7, r7, #2 - adds r1, r4, r7 - ldrh r3, [r1] - ldrh r0, [r0] - cmp r0, r3 - bls _0803C008 - adds r0, r3, #1 - b _0803C474 - .align 2, 0 -_0803BFFC: .4byte gUnknown_086AF140 -_0803C000: .4byte gCurrentPinballGame -_0803C004: .4byte 0x000003E2 -_0803C008: - movs r3, #0 - strh r3, [r1] - ldrh r0, [r2] - adds r0, #1 - strh r0, [r2] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x4a - bne _0803C03A - strh r3, [r2] - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r4, r0 - movs r0, #2 - strb r0, [r1] - ldr r0, [r5] - ldr r1, _0803C084 @ =0x000003DD - adds r0, r0, r1 - movs r1, #3 - strb r1, [r0] - ldr r0, [r5] - ldr r2, _0803C088 @ =0x000003E1 - adds r0, r0, r2 - movs r1, #8 - strb r1, [r0] -_0803C03A: - ldr r1, [r5] - adds r0, r1, r6 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0x47 - beq _0803C048 - b _0803C476 -_0803C048: - adds r0, r1, r7 - ldrh r0, [r0] - cmp r0, #0 - beq _0803C052 - b _0803C476 -_0803C052: - ldr r4, _0803C08C @ =0x00000129 - adds r1, r1, r4 - movs r0, #0 - strb r0, [r1] - ldr r0, [r5] - movs r1, #0x94 - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #1 - strb r1, [r0] - ldr r0, [r5] - movs r2, #0x99 - lsls r2, r2, #3 - adds r0, r0, r2 - movs r1, #0x3c - strb r1, [r0] - movs r0, #0xd - bl sub_11B0 - ldr r0, _0803C090 @ =gMPlayInfo_SE1 - ldr r1, _0803C094 @ =gUnknown_086A2454 - bl MPlayStart - b _0803C476 - .align 2, 0 -_0803C084: .4byte 0x000003DD -_0803C088: .4byte 0x000003E1 -_0803C08C: .4byte 0x00000129 -_0803C090: .4byte gMPlayInfo_SE1 -_0803C094: .4byte gUnknown_086A2454 -_0803C098: - mov r3, r8 - ldr r0, [r3] - movs r4, #0xa5 - lsls r4, r4, #2 - adds r0, r0, r4 - movs r5, #0 - movs r1, #3 - strb r1, [r0] - ldr r4, [r3] - ldr r1, _0803C118 @ =0x00000283 - adds r0, r4, r1 - ldrb r0, [r0] - movs r1, #5 - bl __umodsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #3 - bne _0803C134 - movs r2, #0xf7 - lsls r2, r2, #2 - adds r1, r4, r2 - movs r0, #9 - strb r0, [r1] - mov r3, r8 - ldr r0, [r3] - ldr r4, _0803C11C @ =0x000003E2 - adds r0, r0, r4 - movs r4, #0 - strh r5, [r0] - ldr r3, _0803C120 @ =gMain - ldr r1, _0803C124 @ =0x00000A28 - adds r0, r3, r1 - movs r1, #1 - strh r1, [r0] - movs r2, #0x97 - lsls r2, r2, #4 - adds r0, r3, r2 - strh r1, [r0] - mov r0, r8 - ldr r1, [r0] - movs r0, #0xb3 - lsls r0, r0, #3 - adds r2, r1, r0 - movs r0, #0xc6 - strh r0, [r2] - ldr r2, _0803C128 @ =0x0000038E - adds r0, r1, r2 - strh r5, [r0] - movs r0, #0xb5 - lsls r0, r0, #3 - adds r1, r1, r0 - strb r4, [r1] - mov r1, r8 - ldr r0, [r1] - ldr r2, _0803C12C @ =0x000005A6 - adds r1, r0, r2 - strh r5, [r1] - ldr r4, _0803C130 @ =0x000005A4 - adds r0, r0, r4 - movs r1, #2 - strb r1, [r0] - b _0803C172 - .align 2, 0 -_0803C118: .4byte 0x00000283 -_0803C11C: .4byte 0x000003E2 -_0803C120: .4byte gMain -_0803C124: .4byte 0x00000A28 -_0803C128: .4byte 0x0000038E -_0803C12C: .4byte 0x000005A6 -_0803C130: .4byte 0x000005A4 -_0803C134: - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r4, r0 - movs r0, #7 - strb r0, [r1] - mov r2, r8 - ldr r1, [r2] - ldr r3, _0803C19C @ =0x000003E2 - adds r2, r1, r3 - movs r3, #0 - movs r0, #0x20 - strh r0, [r2] - ldr r4, _0803C1A0 @ =0x00000387 - adds r1, r1, r4 - strb r3, [r1] - ldr r2, _0803C1A4 @ =gMain - movs r0, #0x80 - strb r0, [r2, #0xf] - mov r1, r8 - ldr r0, [r1] - movs r3, #0xe2 - lsls r3, r3, #2 - adds r0, r0, r3 - movs r1, #2 - strb r1, [r0] - mov r4, r8 - ldr r0, [r4] - ldr r1, _0803C1A8 @ =0x00000392 - adds r0, r0, r1 - strh r5, [r0] - adds r3, r2, #0 -_0803C172: - ldr r2, _0803C1AC @ =gCurrentPinballGame - ldr r0, [r2] - ldr r4, _0803C1B0 @ =0x000003E1 - adds r0, r0, r4 - movs r1, #0 - strb r1, [r0] - ldr r2, [r2] - adds r4, #3 - adds r0, r2, r4 - strh r1, [r0] - ldr r1, _0803C1B4 @ =0x00001438 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, #0 - bne _0803C192 - b _0803C476 -_0803C192: - ldr r3, _0803C1B8 @ =0x00000486 - adds r1, r2, r3 - movs r0, #1 - b _0803C474 - .align 2, 0 -_0803C19C: .4byte 0x000003E2 -_0803C1A0: .4byte 0x00000387 -_0803C1A4: .4byte gMain -_0803C1A8: .4byte 0x00000392 -_0803C1AC: .4byte gCurrentPinballGame -_0803C1B0: .4byte 0x000003E1 -_0803C1B4: .4byte 0x00001438 -_0803C1B8: .4byte 0x00000486 -_0803C1BC: - ldr r0, _0803C1E4 @ =gUnknown_086AF140 - mov r4, r8 - ldr r5, [r4] - ldr r1, _0803C1E8 @ =0x000003E2 - adds r4, r5, r1 - movs r2, #0 - ldrsh r1, [r4, r2] - lsls r1, r1, #2 - adds r0, #2 - adds r1, r1, r0 - movs r3, #0xf9 - lsls r3, r3, #2 - adds r2, r5, r3 - ldrh r3, [r2] - ldrh r0, [r1] - cmp r0, r3 - bls _0803C1EC - adds r0, r3, #1 - strh r0, [r2] - b _0803C236 - .align 2, 0 -_0803C1E4: .4byte gUnknown_086AF140 -_0803C1E8: .4byte 0x000003E2 -_0803C1EC: - movs r0, #0 - strh r0, [r2] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x24 - bne _0803C236 - ldr r0, _0803C218 @ =0x000003E1 - adds r1, r5, r0 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x11 - bgt _0803C21C - movs r0, #0x22 - strh r0, [r4] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - b _0803C236 - .align 2, 0 -_0803C218: .4byte 0x000003E1 -_0803C21C: - movs r0, #2 - strh r0, [r4] - movs r2, #0xf7 - lsls r2, r2, #2 - adds r1, r5, r2 - movs r0, #8 - strb r0, [r1] - mov r3, r8 - ldr r0, [r3] - ldr r4, _0803C260 @ =0x000003E1 - adds r0, r0, r4 - movs r1, #0 - strb r1, [r0] -_0803C236: - ldr r0, _0803C264 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _0803C268 @ =0x000003E2 - adds r0, r1, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0x21 - beq _0803C248 - b _0803C476 -_0803C248: - movs r4, #0xf9 - lsls r4, r4, #2 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, #0 - beq _0803C256 - b _0803C476 -_0803C256: - movs r0, #0xe4 - lsls r0, r0, #2 - adds r1, r1, r0 - movs r0, #0x29 - b _0803C474 - .align 2, 0 -_0803C260: .4byte 0x000003E1 -_0803C264: .4byte gCurrentPinballGame -_0803C268: .4byte 0x000003E2 -_0803C26C: - ldr r0, _0803C294 @ =gUnknown_086AF140 - mov r1, r8 - ldr r5, [r1] - ldr r2, _0803C298 @ =0x000003E2 - adds r4, r5, r2 - movs r3, #0 - ldrsh r1, [r4, r3] - lsls r1, r1, #2 - adds r0, #2 - adds r1, r1, r0 - movs r0, #0xf9 - lsls r0, r0, #2 - adds r2, r5, r0 - ldrh r3, [r2] - ldrh r0, [r1] - cmp r0, r3 - bls _0803C29C -_0803C28E: - adds r0, r3, #1 - strh r0, [r2] - b _0803C476 - .align 2, 0 -_0803C294: .4byte gUnknown_086AF140 -_0803C298: .4byte 0x000003E2 -_0803C29C: - movs r3, #0 - strh r3, [r2] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x14 - bne _0803C2E8 - ldr r2, _0803C2C8 @ =0x000003E1 - adds r1, r5, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #6 - bgt _0803C2CC - movs r0, #3 - strh r0, [r4] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - b _0803C2E8 - .align 2, 0 -_0803C2C8: .4byte 0x000003E1 -_0803C2CC: - movs r0, #3 - strh r0, [r4] - movs r4, #0xf7 - lsls r4, r4, #2 - adds r1, r5, r4 - movs r0, #0xa - strb r0, [r1] - mov r0, r8 - ldr r1, [r0] - movs r0, #2 - strb r0, [r1, #0x13] - mov r1, r8 - ldr r0, [r1] - strh r3, [r0, #0x18] -_0803C2E8: - mov r2, r8 - ldr r1, [r2] - ldr r3, _0803C3A8 @ =0x000003E2 - adds r0, r1, r3 - movs r4, #0 - ldrsh r0, [r0, r4] - cmp r0, #3 - beq _0803C2FC - cmp r0, #0xc - bne _0803C306 -_0803C2FC: - ldr r0, _0803C3AC @ =0x000003EA - adds r1, r1, r0 - ldrh r0, [r1] - subs r0, #0xa - strh r0, [r1] -_0803C306: - mov r1, r8 - ldr r0, [r1] - ldr r2, _0803C3A8 @ =0x000003E2 - adds r0, r0, r2 - ldrh r1, [r0] - subs r0, r1, #4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #1 - bls _0803C326 - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xd - beq _0803C326 - cmp r0, #0xe - bne _0803C334 -_0803C326: - mov r3, r8 - ldr r1, [r3] - ldr r4, _0803C3AC @ =0x000003EA - adds r1, r1, r4 - ldrh r0, [r1] - subs r0, #0x14 - strh r0, [r1] -_0803C334: - ldr r0, _0803C3B0 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r1, _0803C3A8 @ =0x000003E2 - adds r0, r2, r1 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #5 - bne _0803C36C - movs r4, #0xf9 - lsls r4, r4, #2 - adds r0, r2, r4 - ldrh r0, [r0] - cmp r0, #0 - bne _0803C36C - ldr r0, _0803C3B4 @ =0x000004CA - adds r1, r2, r0 - movs r0, #0x1f - strh r0, [r1] - ldr r3, _0803C3B8 @ =0x000004C9 - adds r1, r2, r3 - movs r0, #6 - strb r0, [r1] - ldr r0, _0803C3BC @ =0x00000119 - bl m4aSongNumStart - movs r0, #8 - bl sub_11B0 -_0803C36C: - ldr r0, _0803C3B0 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r4, _0803C3A8 @ =0x000003E2 - adds r0, r2, r4 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xe - beq _0803C37E - b _0803C476 -_0803C37E: - movs r3, #0xf9 - lsls r3, r3, #2 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, #0 - bne _0803C476 - adds r4, #0xe8 - adds r1, r2, r4 - movs r0, #0x1f - strh r0, [r1] - ldr r0, _0803C3B8 @ =0x000004C9 - adds r1, r2, r0 - movs r0, #5 - strb r0, [r1] - ldr r0, _0803C3BC @ =0x00000119 - bl m4aSongNumStart - movs r0, #8 - bl sub_11B0 - b _0803C476 - .align 2, 0 -_0803C3A8: .4byte 0x000003E2 -_0803C3AC: .4byte 0x000003EA -_0803C3B0: .4byte gCurrentPinballGame -_0803C3B4: .4byte 0x000004CA -_0803C3B8: .4byte 0x000004C9 -_0803C3BC: .4byte 0x00000119 -_0803C3C0: - ldr r1, _0803C3E8 @ =gUnknown_086AF140 - mov r3, r8 - ldr r2, [r3] - ldr r4, _0803C3EC @ =0x000003E2 - adds r3, r2, r4 - movs r4, #0 - ldrsh r0, [r3, r4] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0xf9 - lsls r1, r1, #2 - adds r2, r2, r1 - ldrh r1, [r2] - ldrh r0, [r0] - cmp r0, r1 - bls _0803C3F0 - adds r0, r1, #1 - strh r0, [r2] - b _0803C404 - .align 2, 0 -_0803C3E8: .4byte gUnknown_086AF140 -_0803C3EC: .4byte 0x000003E2 -_0803C3F0: - movs r1, #0 - strh r1, [r2] - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - bne _0803C404 - strh r1, [r3] -_0803C404: - mov r2, r8 - ldr r6, [r2] - ldr r3, _0803C4BC @ =0x0000038E - adds r4, r6, r3 - ldrh r5, [r4] - movs r1, #0 - ldrsh r0, [r4, r1] - ldr r1, _0803C4C0 @ =0xFFFFFE0C - cmp r0, r1 - ble _0803C444 - subs r0, r1, r0 - movs r1, #0x1e - bl __divsi3 - adds r0, r5, r0 - strh r0, [r4] - movs r3, #0 - ldrsh r0, [r4, r3] - movs r1, #0xa - bl __divsi3 - adds r2, r6, #0 - adds r2, #0xe6 - strh r0, [r2] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x26 - rsbs r1, r1, #0 - cmp r0, r1 - bge _0803C444 - ldr r0, _0803C4C4 @ =0x0000FFDA - strh r0, [r2] -_0803C444: - ldr r3, _0803C4C8 @ =gCurrentPinballGame - ldr r1, [r3] - movs r2, #0xb5 - lsls r2, r2, #3 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x15 - bne _0803C460 - ldr r4, _0803C4CC @ =0x000003E2 - adds r1, r1, r4 - movs r0, #0x4a - strh r0, [r1] -_0803C460: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x16 - bne _0803C476 - ldr r0, _0803C4CC @ =0x000003E2 - adds r1, r1, r0 - movs r0, #0x4b -_0803C474: - strh r0, [r1] -_0803C476: - ldr r0, _0803C4C8 @ =gCurrentPinballGame - ldr r1, [r0] - movs r2, #0x99 - lsls r2, r2, #3 - adds r3, r1, r2 - ldrb r4, [r3] - movs r1, #0 - ldrsb r1, [r3, r1] - mov r8, r0 - cmp r1, #0 - bgt _0803C48E - b _0803C5BC -_0803C48E: - subs r0, r4, #1 - strb r0, [r3] - mov r3, r8 - ldr r5, [r3] - adds r1, r5, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x13 - bgt _0803C4D4 - ldr r4, _0803C4D0 @ =gUnknown_086AEF28 - movs r1, #0xc - bl __modsi3 - lsls r0, r0, #0x18 - asrs r0, r0, #0x17 - adds r0, r0, r4 - movs r4, #0 - ldrsh r0, [r0, r4] - lsls r0, r0, #1 - movs r2, #0xab - lsls r2, r2, #2 - adds r1, r5, r2 - b _0803C4F2 - .align 2, 0 -_0803C4BC: .4byte 0x0000038E -_0803C4C0: .4byte 0xFFFFFE0C -_0803C4C4: .4byte 0x0000FFDA -_0803C4C8: .4byte gCurrentPinballGame -_0803C4CC: .4byte 0x000003E2 -_0803C4D0: .4byte gUnknown_086AEF28 -_0803C4D4: - ldr r4, _0803C600 @ =gUnknown_086AEF28 - movs r0, #0 - ldrsb r0, [r1, r0] - movs r1, #0xc - bl __modsi3 - lsls r0, r0, #0x18 - asrs r0, r0, #0x17 - adds r0, r0, r4 - movs r3, #0 - ldrsh r0, [r0, r3] - lsls r0, r0, #2 - movs r4, #0xab - lsls r4, r4, #2 - adds r1, r5, r4 -_0803C4F2: - strh r0, [r1] - mov r0, r8 - ldr r2, [r0] - movs r5, #0x99 - lsls r5, r5, #3 - adds r0, r2, r5 - movs r1, #0 - ldrsb r1, [r0, r1] - cmp r1, #0 - bne _0803C50E - movs r3, #0xab - lsls r3, r3, #2 - adds r0, r2, r3 - strh r1, [r0] -_0803C50E: - mov r0, r8 - ldr r4, [r0] - adds r0, r4, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #8 - bne _0803C548 - movs r3, #0 - ldr r0, _0803C604 @ =gMain - movs r2, #0 - movs r1, #0xdc - lsls r1, r1, #4 - adds r0, r0, r1 - movs r1, #1 - strh r1, [r0] - ldr r1, _0803C608 @ =0x000004CF - adds r0, r4, r1 - strb r2, [r0] - mov r4, r8 - ldr r0, [r4] - adds r1, #3 - adds r0, r0, r1 - strb r2, [r0] - ldr r0, [r4] - movs r2, #0x9b - lsls r2, r2, #3 - adds r0, r0, r2 - strh r3, [r0] -_0803C548: - mov r3, r8 - ldr r4, [r3] - adds r0, r4, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x14 - bne _0803C582 - movs r3, #1 - ldr r0, _0803C604 @ =gMain - ldr r1, _0803C60C @ =0x00000E78 - adds r0, r0, r1 - movs r1, #0 - movs r2, #0 - strh r3, [r0] - movs r3, #0x9a - lsls r3, r3, #3 - adds r0, r4, r3 - strb r1, [r0] - mov r4, r8 - ldr r0, [r4] - ldr r1, _0803C610 @ =0x000004D3 - adds r0, r0, r1 - movs r1, #0xd - strb r1, [r0] - ldr r0, [r4] - adds r3, #0xa - adds r0, r0, r3 - strh r2, [r0] -_0803C582: - mov r0, r8 - ldr r4, [r0] - adds r0, r4, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x35 - bne _0803C5BC - ldr r1, _0803C604 @ =gMain - movs r2, #0xf3 - lsls r2, r2, #4 - adds r1, r1, r2 - movs r2, #0 - movs r3, #0 - movs r0, #1 - strh r0, [r1] - ldr r1, _0803C614 @ =0x000004D1 - adds r0, r4, r1 - strb r2, [r0] - mov r2, r8 - ldr r0, [r2] - ldr r4, _0803C618 @ =0x000004D4 - adds r0, r0, r4 - movs r1, #0x16 - strb r1, [r0] - ldr r0, [r2] - ldr r1, _0803C61C @ =0x000004DC - adds r0, r0, r1 - strh r3, [r0] -_0803C5BC: - mov r2, r8 - ldr r5, [r2] - ldr r3, _0803C620 @ =0x000004CA - adds r1, r5, r3 - ldrh r0, [r1] - cmp r0, #0 - beq _0803C662 - subs r0, #1 - strh r0, [r1] - ldr r4, _0803C624 @ =0x000004C9 - adds r6, r5, r4 - ldrb r0, [r6] - cmp r0, #5 - bhi _0803C62C - ldr r4, _0803C628 @ =gUnknown_086AEF40 - ldrh r0, [r1] - movs r1, #0x1f - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #0x1e - subs r1, r1, r0 - ldrb r2, [r6] - lsls r0, r2, #5 - subs r0, r0, r2 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r1, [r0] - movs r2, #0xab - lsls r2, r2, #2 - adds r0, r5, r2 - b _0803C64A - .align 2, 0 -_0803C600: .4byte gUnknown_086AEF28 -_0803C604: .4byte gMain -_0803C608: .4byte 0x000004CF -_0803C60C: .4byte 0x00000E78 -_0803C610: .4byte 0x000004D3 -_0803C614: .4byte 0x000004D1 -_0803C618: .4byte 0x000004D4 -_0803C61C: .4byte 0x000004DC -_0803C620: .4byte 0x000004CA -_0803C624: .4byte 0x000004C9 -_0803C628: .4byte gUnknown_086AEF40 -_0803C62C: - ldr r4, _0803C6C4 @ =gUnknown_086AF0B4 - ldrh r0, [r1] - movs r1, #0x46 - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #0x45 - subs r1, r1, r0 - lsls r1, r1, #1 - adds r1, r1, r4 - ldrh r1, [r1] - movs r3, #0xab - lsls r3, r3, #2 - adds r0, r5, r3 -_0803C64A: - strh r1, [r0] - mov r4, r8 - ldr r2, [r4] - ldr r1, _0803C6C8 @ =0x000004CA - adds r0, r2, r1 - ldrh r1, [r0] - cmp r1, #0 - bne _0803C662 - movs r3, #0xab - lsls r3, r3, #2 - adds r0, r2, r3 - strh r1, [r0] -_0803C662: - mov r4, r8 - ldr r0, [r4] - movs r5, #0xe4 - lsls r5, r5, #2 - adds r1, r0, r5 - ldrh r0, [r1] - cmp r0, #0 - beq _0803C6B6 - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x14 - bne _0803C69E - ldr r0, _0803C6CC @ =gSpeciesInfo - ldr r1, _0803C6D0 @ =0x00001290 - adds r0, r0, r1 - ldrh r0, [r0] - movs r1, #0 - bl PlayCry_Normal - ldr r1, [r4] - ldr r3, _0803C6C8 @ =0x000004CA - adds r2, r1, r3 - movs r0, #0x46 - strh r0, [r2] - ldr r4, _0803C6D4 @ =0x000004C9 - adds r1, r1, r4 - movs r0, #6 - strb r0, [r1] -_0803C69E: - mov r1, r8 - ldr r0, [r1] - adds r0, r0, r5 - ldrh r0, [r0] - cmp r0, #0 - bne _0803C6B6 - ldr r0, _0803C6D8 @ =gMPlayInfo_BGM - ldr r1, _0803C6DC @ =0x0000FFFF - movs r2, #0x80 - lsls r2, r2, #1 - bl m4aMPlayVolumeControl -_0803C6B6: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0803C6C4: .4byte gUnknown_086AF0B4 -_0803C6C8: .4byte 0x000004CA -_0803C6CC: .4byte gSpeciesInfo -_0803C6D0: .4byte 0x00001290 -_0803C6D4: .4byte 0x000004C9 -_0803C6D8: .4byte gMPlayInfo_BGM -_0803C6DC: .4byte 0x0000FFFF diff --git a/include/global.h b/include/global.h index 58c351b..2980d3b 100644 --- a/include/global.h +++ b/include/global.h @@ -430,13 +430,13 @@ struct PinballGame /*0x45C*/ struct Vector16 unk45C[2]; /*0x464*/ struct Vector16 unk464[2]; /*0x46C*/ struct Vector16 unk46C[4]; - /*0x47C*/ u8 filler47C[0x1]; + /*0x47C*/ s8 unk47C; /*0x47D*/ s8 unk47D; /*0x47E*/ s8 unk47E; /*0x47F*/ s8 unk47F; /*0x480*/ u16 unk480; /*0x482*/ u16 unk482; - /*0x484*/ s16 unk484; + /*0x484*/ u16 unk484; /*0x486*/ s16 unk486; /*0x488*/ struct Vector16 unk488; /*0x48C*/ s8 unk48C[4]; @@ -450,9 +450,10 @@ struct PinballGame /*0x4AC*/ u16 unk4AC[4]; /*0x4B4*/ struct Vector16 unk4B4[4]; /*0x4C4*/ u16 unk4C4; - /*0x4C6*/ u8 filler4C6[0x2]; + /*0x4C6*/ u16 unk4C6; /*0x4C8*/ s8 unk4C8; - /*0x4C9*/ u8 filler4C9[0x3]; + /*0x4C9*/ u8 unk4C9; + /*0x4CA*/ u16 unk4CA; /*0x4CC*/ s8 unk4CC[3]; /*0x4CF*/ s8 unk4CF[3]; /*0x4D2*/ s8 unk4D2[3]; diff --git a/src/rom_49A34.c b/src/rom_49A34.c index 11984b7..d4f006d 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -133,7 +133,9 @@ extern const s8 gUnknown_084A11EC[][0x300]; extern const u16 gUnknown_086AF2DC[][2]; extern const struct Vector16 gUnknown_086AF2CC[]; extern const s16 gUnknown_086AEE20[]; -extern const s16 gUnknown_086AF140[][2]; +extern const u16 gUnknown_086AF140[][2]; +extern const u16 gUnknown_086AEF40[][31]; +extern const u16 gUnknown_086AF0B4[]; struct Unk_086AFAC0 { @@ -150,6 +152,10 @@ extern struct SongHeader gUnknown_086A2D28; extern struct SongHeader gUnknown_086A2EAC; extern struct SongHeader gUnknown_086A2E90; extern struct SongHeader gUnknown_086A26A0; +extern struct SongHeader gUnknown_086A22D8; +extern struct SongHeader gUnknown_086A2454; +extern struct SongHeader gUnknown_086A24F0; +extern struct SongHeader gUnknown_086A2548; extern s16 gUnknown_02030750[]; extern s16 gUnknown_02031500[]; @@ -158,6 +164,547 @@ extern u8 gUnknown_0200FBB0[]; extern u8 gUnknown_020030A0[]; +void sub_3B7C4(void) +{ + s16 i; + struct Vector32 tempVector; + + if (gCurrentPinballGame->unk452) + { + gCurrentPinballGame->unk452--; + gCurrentPinballGame->unk389 = 1; + if (gCurrentPinballGame->unk452 == 35) + { + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A22D8); + gCurrentPinballGame->unk3C = 500000; + sub_11B0(7); + gCurrentPinballGame->unk385++; + if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384) + gCurrentPinballGame->unk3DC = 6; + } + + if (gCurrentPinballGame->unk452 < 31) + gCurrentPinballGame->unk389 = 0; + } + + switch (gCurrentPinballGame->unk3DC) + { + case 0: + gCurrentPinballGame->unk3DC = 1; + gCurrentPinballGame->unk3E2 = 22; + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3E8 = 0; + gCurrentPinballGame->unk3EA = -1200; + gCurrentPinballGame->unk4C6 = 0; + break; + case 1: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 36) + { + if (gCurrentPinballGame->unk3E1 < 18) + { + gCurrentPinballGame->unk3E2 = 34; + gCurrentPinballGame->unk3E1++; + } + else + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3DC = 2; + gCurrentPinballGame->unk3DD = 4; + gCurrentPinballGame->unk3E1 = 9; + } + } + } + + if (gCurrentPinballGame->unk3E2 == 22) + { + if (gCurrentPinballGame->unk3E4 < 500) + { + if (gCurrentPinballGame->unk3E4 == 50 || gCurrentPinballGame->unk3E4 == 270) + { + gCurrentPinballGame->unk4CA = 31; + gCurrentPinballGame->unk4C9 = gCurrentPinballGame->unk3E4 / 110; + m4aSongNumStart(SE_UNKNOWN_0x119); + sub_11B0(8); + } + + if (gCurrentPinballGame->unk3E4 == 160 || gCurrentPinballGame->unk3E4 == 380) + { + gCurrentPinballGame->unk4CA = 31; + gCurrentPinballGame->unk4C9 = gCurrentPinballGame->unk3E4 / 110; + m4aSongNumStart(SE_UNKNOWN_0x119); + sub_11B0(8); + } + + if (gCurrentPinballGame->unk3E4 == 490) + { + gCurrentPinballGame->unk4CA = 31; + gCurrentPinballGame->unk4C9 = 4; + m4aSongNumStart(SE_UNKNOWN_0x11A); + sub_11B0(8); + } + } + + if (gCurrentPinballGame->unk3E4 >= 630) + { + if (gCurrentPinballGame->unk3EA < 0) + { + gCurrentPinballGame->unk4C6 += 4; + gCurrentPinballGame->unk3EA += gCurrentPinballGame->unk4C6; + if (gCurrentPinballGame->unk3EA > 0) + gCurrentPinballGame->unk3EA = 0; + } + } + + if (gCurrentPinballGame->unk3EA >= 0) + { + gCurrentPinballGame->unk4C8 = 60; + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A2454); + sub_11B0(13); + } + } + + if (gCurrentPinballGame->unk3E2 == 33) + { + if (gCurrentPinballGame->unk3E4 == 0) + gCurrentPinballGame->unk390 = 41; + } + + if (gCurrentPinballGame->unk392 > 120) + gCurrentPinballGame->unk392--; + break; + case 2: + if (gCurrentPinballGame->unk452 > 30) + { + gCurrentPinballGame->unk3E2 = 21; + gCurrentPinballGame->unk3E4 = 0; + break; + } + + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 2) + { + if (gCurrentPinballGame->unk3E1 < 12) + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3E1++; + if (gCurrentPinballGame->unk3E1 == 12 && gCurrentPinballGame->unk3DD == 4) + { + for (i = 0; i < 4; i++) + { + if (gCurrentPinballGame->unk48C[i] < 9) + gCurrentPinballGame->unk48C[i] = 9; + } + } + } + else + { + if (gCurrentPinballGame->unk3DD == 4) + { + gCurrentPinballGame->unk3E2 = 36; + gCurrentPinballGame->unk3DC = 4; + gCurrentPinballGame->unk3E1 = 0; + } + else if (gCurrentPinballGame->unk3DD == 3) + { + gCurrentPinballGame->unk3E2 = 76; + gCurrentPinballGame->unk3DC = 3; + gCurrentPinballGame->unk3E1 = 0; + } + else + { + gCurrentPinballGame->unk3E2 = 58; + gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->unk3E1 = 0; + } + } + } + } + + if (gCurrentPinballGame->unk3E2 == 21) + gCurrentPinballGame->unk3E2 = 0; + break; + case 3: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + s16 varZZ; + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 93 || gCurrentPinballGame->unk3E2 == 96 || gCurrentPinballGame->unk3E2 == 99) + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3DC = 2; + + if (gCurrentPinballGame->unk47C & 1) + { + gCurrentPinballGame->unk3DD = 4; + gCurrentPinballGame->unk3E1 = 8; + } + else + { + gCurrentPinballGame->unk3DD = 5; + gCurrentPinballGame->unk3E1 = 8; + } + + gCurrentPinballGame->unk47C++; + } + + if (gCurrentPinballGame->unk3E2 == 90) + { + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A24F0); + gCurrentPinballGame->unk47E = 8; + gCurrentPinballGame->unk482 = 35; + gMain.spriteGroups[22].available = 1; + gCurrentPinballGame->unk488.x = 1200; + gCurrentPinballGame->unk488.y = 1240; + tempVector.x = gCurrentPinballGame->unk488.x / 10 - gCurrentPinballGame->ball->positionQ0.x; + tempVector.y = gCurrentPinballGame->unk488.y / 10 - gCurrentPinballGame->ball->positionQ0.y; + gCurrentPinballGame->unk484 = ArcTan2(-tempVector.x, tempVector.y); + if (gCurrentPinballGame->unk388) + gCurrentPinballGame->unk484 = (((Random() * gMain.systemFrameCount) % 100) * 0x5000) / 100 + 0x9800; + + if (gCurrentPinballGame->unk484 < 0x4000) + { + gCurrentPinballGame->unk484 = 0xE800; + gCurrentPinballGame->unk47D = 2; + gCurrentPinballGame->unk488.x = 1340; + } + else if (gCurrentPinballGame->unk484 < 0x9800) + { + gCurrentPinballGame->unk484 = 0x9800; + gCurrentPinballGame->unk47D = 1; + gCurrentPinballGame->unk488.x = 1060; + } + else if (gCurrentPinballGame->unk484 < 0xB000) + { + gCurrentPinballGame->unk47D = 1; + gCurrentPinballGame->unk488.x = 1060; + } + else if (gCurrentPinballGame->unk484 < 0xD000) + { + gCurrentPinballGame->unk47D = 0; + } + else if (gCurrentPinballGame->unk484 < 0xE800) + { + gCurrentPinballGame->unk47D = 2; + gCurrentPinballGame->unk488.x = 1340; + } + else + { + gCurrentPinballGame->unk484 = 0xE800; + gCurrentPinballGame->unk47D = 2; + gCurrentPinballGame->unk488.x = 1340; + } + + gCurrentPinballGame->unk3E2 += gCurrentPinballGame->unk47D * 3; + if (gCurrentPinballGame->unk388) + gCurrentPinballGame->unk388 -= 0; + } + } + break; + case 4: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 56) + { + if (gCurrentPinballGame->unk3E1 < 6) + { + gCurrentPinballGame->unk3E2 = 54; + gCurrentPinballGame->unk3E1++; + } + else + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3DC = 2; + gCurrentPinballGame->unk3DD = 3; + gCurrentPinballGame->unk3E1 = 6; + } + } + + if (gCurrentPinballGame->unk3E2 == 50) + { + if (gCurrentPinballGame->unk3E4 == 0) + { + gMain.spriteGroups[30].available = 1; + gCurrentPinballGame->unk456 = 0; + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A2548); + } + } + } + break; + case 5: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 74) + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3DC = 2; + gCurrentPinballGame->unk3DD = 3; + gCurrentPinballGame->unk3E1 = 8; + } + + if (gCurrentPinballGame->unk3E2 == 71) + { + if (gCurrentPinballGame->unk3E4 == 0) + { + gCurrentPinballGame->unk129 = 0; + gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->unk4C8 = 60; + sub_11B0(13); + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A2454); + } + } + } + break; + case 6: + gCurrentPinballGame->unk294 = 3; + if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3) + { + gCurrentPinballGame->unk3DC = 9; + gCurrentPinballGame->unk3E2 = 0; + gMain.spriteGroups[10].available = 1; + gMain.spriteGroups[9].available = 1; + gCurrentPinballGame->currentSpecies = SPECIES_GROUDON; + gCurrentPinballGame->unk38E = 0; + gCurrentPinballGame->unk5A8 = 0; + gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->unk5A4 = 2; + } + else + { + gCurrentPinballGame->unk3DC = 7; + gCurrentPinballGame->unk3E2 = 32; + gCurrentPinballGame->unk387 = 0; + gMain.unkF = 0x80; + gCurrentPinballGame->unk388 = 2; + gCurrentPinballGame->unk392 = 0; + } + + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3E4 = 0; + if (gMain.spriteGroups[24].available) + gCurrentPinballGame->unk486 = 1; + break; + case 7: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 36) + { + if (gCurrentPinballGame->unk3E1 < 18) + { + gCurrentPinballGame->unk3E2 = 34; + gCurrentPinballGame->unk3E1++; + } + else + { + gCurrentPinballGame->unk3E2 = 2; + gCurrentPinballGame->unk3DC = 8; + gCurrentPinballGame->unk3E1 = 0; + } + } + } + + if (gCurrentPinballGame->unk3E2 == 33) + { + if (gCurrentPinballGame->unk3E4 == 0) + gCurrentPinballGame->unk390 = 41; + } + break; + case 8: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 20) + { + if (gCurrentPinballGame->unk3E1 < 7) + { + gCurrentPinballGame->unk3E2 = 3; + gCurrentPinballGame->unk3E1++; + } + else + { + gCurrentPinballGame->unk3E2 = 3; + gCurrentPinballGame->unk3DC = 10; + gCurrentPinballGame->unk13 = 2; + gCurrentPinballGame->unk18 = 0; + } + } + + if (gCurrentPinballGame->unk3E2 == 3 || gCurrentPinballGame->unk3E2 == 12) + gCurrentPinballGame->unk3EA -= 10; + + if ((gCurrentPinballGame->unk3E2 >= 4 && gCurrentPinballGame->unk3E2 < 6) || + gCurrentPinballGame->unk3E2 == 13 || gCurrentPinballGame->unk3E2 == 14) + { + gCurrentPinballGame->unk3EA -= 20; + } + + if (gCurrentPinballGame->unk3E2 == 5) + { + if (gCurrentPinballGame->unk3E4 == 0) + { + gCurrentPinballGame->unk4CA = 31; + gCurrentPinballGame->unk4C9 = 6; + m4aSongNumStart(SE_UNKNOWN_0x119); + sub_11B0(8); + } + } + + if (gCurrentPinballGame->unk3E2 == 14) + { + if (gCurrentPinballGame->unk3E4 == 0) + { + gCurrentPinballGame->unk4CA = 31; + gCurrentPinballGame->unk4C9 = 5; + m4aSongNumStart(SE_UNKNOWN_0x119); + sub_11B0(8); + } + } + } + break; + case 9: + if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 2) + gCurrentPinballGame->unk3E2 = 0; + } + + if (gCurrentPinballGame->unk38E > -500) + { + gCurrentPinballGame->unk38E += (-500 - gCurrentPinballGame->unk38E) / 30; + gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk38E / 10; + if (gCurrentPinballGame->unkE6 < -38) + gCurrentPinballGame->unkE6 = -38; + } + + if (gCurrentPinballGame->unk5A8 == 21) + gCurrentPinballGame->unk3E2 = 74; + + if (gCurrentPinballGame->unk5A8 == 22) + gCurrentPinballGame->unk3E2 = 75; + break; + case 10: + break; + } + + if (gCurrentPinballGame->unk4C8 > 0) + { + gCurrentPinballGame->unk4C8--; + if (gCurrentPinballGame->unk4C8 < 20) + gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 2; + else + gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 4; + + if (gCurrentPinballGame->unk4C8 == 0) + gCurrentPinballGame->unk2AC = 0; + + if (gCurrentPinballGame->unk4C8 == 8) + { + i = 0; + gMain.spriteGroups[15 + i].available = 1; + gCurrentPinballGame->unk4CF[i] = 0; + gCurrentPinballGame->unk4D2[i] = 0; + gCurrentPinballGame->unk4D8[i] = 0; + } + + if (gCurrentPinballGame->unk4C8 == 20) + { + i = 1; + gMain.spriteGroups[15 + i].available = 1; + gCurrentPinballGame->unk4CF[i] = 0; + gCurrentPinballGame->unk4D2[i] = 13; + gCurrentPinballGame->unk4D8[i] = 0; + } + + if (gCurrentPinballGame->unk4C8 == 53) + { + i = 2; + gMain.spriteGroups[15 + i].available = 1; + gCurrentPinballGame->unk4CF[i] = 0; + gCurrentPinballGame->unk4D2[i] = 22; + gCurrentPinballGame->unk4D8[i] = 0; + } + } + + if (gCurrentPinballGame->unk4CA) + { + gCurrentPinballGame->unk4CA--; + if (gCurrentPinballGame->unk4C9 < 6) + { + gCurrentPinballGame->unk2AC = gUnknown_086AEF40[gCurrentPinballGame->unk4C9][30 - gCurrentPinballGame->unk4CA % 31]; + } + else + { + gCurrentPinballGame->unk2AC = gUnknown_086AF0B4[69 - gCurrentPinballGame->unk4CA % 70]; + } + + if (gCurrentPinballGame->unk4CA == 0) + gCurrentPinballGame->unk2AC = 0; + } + + if (gCurrentPinballGame->unk390) + { + gCurrentPinballGame->unk390--; + if (gCurrentPinballGame->unk390 == 20) + { + PlayCry_Normal(gSpeciesInfo[SPECIES_GROUDON].mainSeriesIndexNumber, 0); + gCurrentPinballGame->unk4CA = 70; + gCurrentPinballGame->unk4C9 = 6; + } + + if (gCurrentPinballGame->unk390 == 0) + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); + } +} + void sub_3C6E0(void) { s16 i; @@ -2787,25 +3334,15 @@ void sub_417F8(void) { gCurrentPinballGame->unk4C8--; if (gCurrentPinballGame->unk4C8 < 12) - { gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12]; - } else if (gCurrentPinballGame->unk4C8 < 24) - { gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 2; - } else if (gCurrentPinballGame->unk4C8 < 36) - { gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 4; - } else if (gCurrentPinballGame->unk4C8 < 48) - { gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 2; - } else - { gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12]; - } if (gCurrentPinballGame->unk4C8 == 0) gCurrentPinballGame->unk2AC = 0;