diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index f652169..487fd0e 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -15717,1578 +15717,3 @@ _0803EDE0: .4byte 0x00000386 _0803EDE4: .4byte 0x000005FA _0803EDE8: .4byte 0x00000296 _0803EDEC: .4byte gMain - - thumb_func_start sub_3EDF0 -sub_3EDF0: @ 0x0803EDF0 - push {r4, r5, r6, r7, lr} - ldr r0, _0803EE9C @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _0803EEA0 @ =0x00000452 - adds r5, r1, r2 - ldrh r4, [r5] - adds r6, r0, #0 - cmp r4, #0 - beq _0803EE80 - subs r0, r4, #1 - strh r0, [r5] - ldr r3, _0803EEA4 @ =0x00000389 - adds r1, r1, r3 - movs r0, #1 - strb r0, [r1] - ldr r0, [r6] - adds r0, r0, r2 - ldrh r0, [r0] - cmp r0, #5 - bne _0803EE60 - movs r0, #0x93 - lsls r0, r0, #1 - bl m4aSongNumStart - ldr r1, [r6] - ldr r0, _0803EEA8 @ =0x000F4240 - str r0, [r1, #0x3c] - ldr r4, _0803EEAC @ =0x00000385 - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #7 - bl sub_11B0 - ldr r2, [r6] - adds r4, r2, r4 - movs r5, #0xe1 - lsls r5, r5, #2 - adds r0, r2, r5 - movs r1, #0 - ldrsb r1, [r4, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - blt _0803EE60 - movs r7, #0xf7 - lsls r7, r7, #2 - adds r1, r2, r7 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #6 - beq _0803EE60 - movs r0, #9 - strb r0, [r1] -_0803EE60: - ldr r2, _0803EE9C @ =gCurrentPinballGame - ldr r5, [r2] - ldr r0, _0803EEB0 @ =0x0000050C - adds r1, r5, r0 - movs r0, #0x14 - strh r0, [r1] - ldr r1, _0803EEA0 @ =0x00000452 - adds r0, r5, r1 - ldrh r0, [r0] - adds r6, r2, #0 - cmp r0, #0 - bne _0803EE80 - ldr r2, _0803EEA4 @ =0x00000389 - adds r1, r5, r2 - movs r0, #0 - strb r0, [r1] -_0803EE80: - ldr r2, [r6] - ldr r4, _0803EEB0 @ =0x0000050C - adds r3, r2, r4 - ldrh r0, [r3] - cmp r0, #0 - beq _0803EEB8 - subs r0, #1 - movs r1, #0 - strh r0, [r3] - ldr r5, _0803EEB4 @ =0x00000387 - adds r0, r2, r5 - strb r1, [r0] - b _0803EEC0 - .align 2, 0 -_0803EE9C: .4byte gCurrentPinballGame -_0803EEA0: .4byte 0x00000452 -_0803EEA4: .4byte 0x00000389 -_0803EEA8: .4byte 0x000F4240 -_0803EEAC: .4byte 0x00000385 -_0803EEB0: .4byte 0x0000050C -_0803EEB4: .4byte 0x00000387 -_0803EEB8: - ldr r7, _0803EEE0 @ =0x00000387 - adds r1, r2, r7 - movs r0, #1 - strb r0, [r1] -_0803EEC0: - ldr r0, [r6] - movs r1, #0xf7 - lsls r1, r1, #2 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xf - bls _0803EED6 - bl _0803FA78 -_0803EED6: - lsls r0, r0, #2 - ldr r1, _0803EEE4 @ =_0803EEE8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803EEE0: .4byte 0x00000387 -_0803EEE4: .4byte _0803EEE8 -_0803EEE8: @ jump table - .4byte _0803EF28 @ case 0 - .4byte _0803EF84 @ case 1 - .4byte _0803F00C @ case 2 - .4byte _0803F0A4 @ case 3 - .4byte _0803F154 @ case 4 - .4byte _0803F210 @ case 5 - .4byte _0803F334 @ case 6 - .4byte _0803F460 @ case 7 - .4byte _0803F550 @ case 8 - .4byte _0803F68C @ case 9 - .4byte _0803F788 @ case 10 - .4byte _0803F814 @ case 11 - .4byte _0803F8DC @ case 12 - .4byte _0803F9D0 @ case 13 - .4byte _0803FA2E @ case 14 - .4byte _0803FA78 @ case 15 -_0803EF28: - ldr r3, _0803EF74 @ =gCurrentPinballGame - ldr r1, [r3] - movs r4, #0xfa - lsls r4, r4, #2 - adds r2, r1, r4 - movs r5, #0 - movs r4, #0 - ldr r0, _0803EF78 @ =0x00000474 - strh r0, [r2] - ldr r7, _0803EF7C @ =0x000003EA - adds r2, r1, r7 - movs r0, #0x96 - lsls r0, r0, #4 - strh r0, [r2] - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r1, r0 - movs r0, #1 - strb r0, [r1] - ldr r1, [r3] - subs r7, #8 - adds r2, r1, r7 - movs r0, #0xd - strh r0, [r2] - movs r2, #0xf9 - lsls r2, r2, #2 - adds r0, r1, r2 - strh r4, [r0] - subs r7, #1 - adds r1, r1, r7 - strb r5, [r1] - ldr r0, [r3] - ldr r1, _0803EF80 @ =0x0000051A - adds r0, r0, r1 - strh r4, [r0] - bl _0803FA78 - .align 2, 0 -_0803EF74: .4byte gCurrentPinballGame -_0803EF78: .4byte 0x00000474 -_0803EF7C: .4byte 0x000003EA -_0803EF80: .4byte 0x0000051A -_0803EF84: - ldr r2, [r6] - ldr r7, _0803EFF4 @ =0x00000516 - adds r0, r2, r7 - ldrh r1, [r0] - ldr r0, _0803EFF8 @ =0x00000212 - cmp r1, r0 - bls _0803EFD2 - ldr r3, _0803EFFC @ =0x000003EA - adds r2, r2, r3 - ldrh r5, [r2] - movs r4, #0 - ldrsh r1, [r2, r4] - ldr r0, _0803F000 @ =0xFFFFFB50 - cmp r1, r0 - ble _0803EFA8 - adds r0, r5, #0 - subs r0, #0x46 - strh r0, [r2] -_0803EFA8: - ldr r2, [r6] - adds r0, r2, r7 - ldrh r1, [r0] - movs r0, #0xa8 - lsls r0, r0, #2 - cmp r1, r0 - bne _0803EFD2 - movs r5, #0xf7 - lsls r5, r5, #2 - adds r1, r2, r5 - movs r2, #0 - movs r0, #2 - strb r0, [r1] - ldr r0, [r6] - movs r7, #0xfa - lsls r7, r7, #2 - adds r1, r0, r7 - strh r2, [r1] - adds r0, r0, r3 - ldr r1, _0803F004 @ =0x0000FD80 - strh r1, [r0] -_0803EFD2: - ldr r0, _0803F008 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r1, _0803EFF4 @ =0x00000516 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0803EFF8 @ =0x00000212 - cmp r1, r0 - beq _0803EFE6 - bl _0803FA78 -_0803EFE6: - movs r3, #0xe4 - lsls r3, r3, #2 - adds r1, r2, r3 - movs r0, #0x19 - strh r0, [r1] - bl _0803FA78 - .align 2, 0 -_0803EFF4: .4byte 0x00000516 -_0803EFF8: .4byte 0x00000212 -_0803EFFC: .4byte 0x000003EA -_0803F000: .4byte 0xFFFFFB50 -_0803F004: .4byte 0x0000FD80 -_0803F008: .4byte gCurrentPinballGame -_0803F00C: - ldr r2, _0803F038 @ =gUnknown_086AF3CC - ldr r3, [r6] - ldr r4, _0803F03C @ =0x000003E2 - adds r5, r3, r4 - movs r7, #0 - ldrsh r1, [r5, r7] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r2, #0xf9 - lsls r2, r2, #2 - adds r1, r3, r2 - ldrh r2, [r1] - ldrh r0, [r0] - cmp r0, r2 - bls _0803F040 - adds r0, r2, #1 - strh r0, [r1] - b _0803F056 - .align 2, 0 -_0803F038: .4byte gUnknown_086AF3CC -_0803F03C: .4byte 0x000003E2 -_0803F040: - movs r0, #0 - strh r0, [r1] - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x3f - bne _0803F056 - movs r0, #0xd - strh r0, [r5] -_0803F056: - ldr r0, _0803F09C @ =gCurrentPinballGame - ldr r0, [r0] - ldr r3, _0803F0A0 @ =0x000003EA - adds r1, r0, r3 - ldrh r2, [r1] - movs r4, #0 - ldrsh r0, [r1, r4] - cmp r0, #0 - bge _0803F07E - adds r0, r2, #0 - adds r0, #0x12 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - ble _0803F07E - movs r0, #0 - strh r0, [r1] - movs r0, MUS_BONUS_FIELD_RAYQUAZA - bl m4aSongNumStart -_0803F07E: - ldr r3, _0803F09C @ =gCurrentPinballGame - ldr r1, [r3] - ldr r5, _0803F0A0 @ =0x000003EA - adds r0, r1, r5 - movs r7, #0 - ldrsh r2, [r0, r7] - cmp r2, #0 - beq _0803F092 - bl _0803FA78 -_0803F092: - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r1, r0 - b _0803F128 - .align 2, 0 -_0803F09C: .4byte gCurrentPinballGame -_0803F0A0: .4byte 0x000003EA -_0803F0A4: - ldr r2, _0803F0D0 @ =gUnknown_086AF3CC - ldr r3, [r6] - ldr r5, _0803F0D4 @ =0x000003E2 - adds r4, r3, r5 - movs r7, #0 - ldrsh r1, [r4, r7] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r1, #0xf9 - lsls r1, r1, #2 - adds r3, r3, r1 - ldrh r1, [r3] - ldrh r0, [r0] - cmp r0, r1 - bls _0803F0D8 - adds r0, r1, #1 - strh r0, [r3] - b _0803F0EE - .align 2, 0 -_0803F0D0: .4byte gUnknown_086AF3CC -_0803F0D4: .4byte 0x000003E2 -_0803F0D8: - movs r0, #0 - strh r0, [r3] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x3f - bne _0803F0EE - movs r0, #0xd - strh r0, [r4] -_0803F0EE: - ldr r0, [r6] - ldr r2, _0803F144 @ =0x000003EA - adds r1, r0, r2 - ldrh r2, [r1] - movs r3, #0 - ldrsh r0, [r1, r3] - cmp r0, #0 - bge _0803F10E - adds r0, r2, #0 - adds r0, #0x12 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - ble _0803F10E - movs r0, #0 - strh r0, [r1] -_0803F10E: - ldr r3, _0803F148 @ =gCurrentPinballGame - ldr r1, [r3] - ldr r4, _0803F144 @ =0x000003EA - adds r0, r1, r4 - movs r5, #0 - ldrsh r2, [r0, r5] - cmp r2, #0 - beq _0803F122 - bl _0803FA78 -_0803F122: - movs r7, #0xf7 - lsls r7, r7, #2 - adds r1, r1, r7 -_0803F128: - movs r0, #5 - strb r0, [r1] - ldr r0, [r3] - ldr r1, _0803F14C @ =0x000003E1 - adds r0, r0, r1 - strb r2, [r0] - ldr r0, [r3] - ldr r2, _0803F150 @ =0x000003DD - adds r0, r0, r2 - movs r1, #6 - strb r1, [r0] - bl _0803FA78 - .align 2, 0 -_0803F144: .4byte 0x000003EA -_0803F148: .4byte gCurrentPinballGame -_0803F14C: .4byte 0x000003E1 -_0803F150: .4byte 0x000003DD -_0803F154: - ldr r2, _0803F180 @ =gUnknown_086AF3CC - ldr r3, [r6] - ldr r5, _0803F184 @ =0x000003E2 - adds r4, r3, r5 - movs r7, #0 - ldrsh r1, [r4, r7] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r1, #0xf9 - lsls r1, r1, #2 - adds r3, r3, r1 - ldrh r1, [r3] - ldrh r0, [r0] - cmp r0, r1 - bls _0803F188 - adds r0, r1, #1 - strh r0, [r3] - b _0803F19E - .align 2, 0 -_0803F180: .4byte gUnknown_086AF3CC -_0803F184: .4byte 0x000003E2 -_0803F188: - movs r0, #0 - strh r0, [r3] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x22 - bne _0803F19E - movs r0, #0x21 - strh r0, [r4] -_0803F19E: - ldr r1, [r6] - ldr r2, _0803F200 @ =0x000003E2 - adds r0, r1, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0x21 - bne _0803F1D0 - ldr r4, _0803F204 @ =0x000003EA - adds r1, r1, r4 - ldrh r2, [r1] - movs r5, #0 - ldrsh r0, [r1, r5] - ldr r3, _0803F208 @ =0xFFFFFD00 - cmp r0, r3 - ble _0803F1D0 - adds r0, r2, #0 - subs r0, #0x18 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, r3 - bge _0803F1D0 - movs r0, #0xfd - lsls r0, r0, #8 - strh r0, [r1] -_0803F1D0: - ldr r4, _0803F20C @ =gCurrentPinballGame - ldr r3, [r4] - ldr r7, _0803F204 @ =0x000003EA - adds r0, r3, r7 - movs r2, #0 - ldrsh r1, [r0, r2] - ldr r0, _0803F208 @ =0xFFFFFD00 - cmp r1, r0 - beq _0803F1E6 - bl _0803FA78 -_0803F1E6: - ldr r5, _0803F200 @ =0x000003E2 - adds r0, r3, r5 - movs r2, #0 - movs r1, #0 - strh r1, [r0] - subs r7, #6 - adds r0, r3, r7 - strh r1, [r0] - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r3, r0 - movs r0, #7 - b _0803F8BC - .align 2, 0 -_0803F200: .4byte 0x000003E2 -_0803F204: .4byte 0x000003EA -_0803F208: .4byte 0xFFFFFD00 -_0803F20C: .4byte gCurrentPinballGame -_0803F210: - ldr r2, _0803F23C @ =gUnknown_086AF3CC - ldr r5, [r6] - ldr r4, _0803F240 @ =0x000003E2 - adds r3, r5, r4 - movs r7, #0 - ldrsh r1, [r3, r7] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r2, #0xf9 - lsls r2, r2, #2 - adds r1, r5, r2 - ldrh r2, [r1] - ldrh r0, [r0] - cmp r0, r2 - bls _0803F244 - adds r0, r2, #1 - strh r0, [r1] - b _0803F2DC - .align 2, 0 -_0803F23C: .4byte gUnknown_086AF3CC -_0803F240: .4byte 0x000003E2 -_0803F244: - movs r4, #0 - mov ip, r4 - movs r0, #0 - strh r0, [r1] - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x3f - bne _0803F2DC - ldr r4, _0803F274 @ =0x000003E1 - adds r1, r5, r4 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #5 - bgt _0803F278 - movs r0, #0xd - strh r0, [r3] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - b _0803F2DC - .align 2, 0 -_0803F274: .4byte 0x000003E1 -_0803F278: - ldr r7, _0803F2A8 @ =0x000003DD - adds r0, r5, r7 - movs r2, #0 - ldrsb r2, [r0, r2] - cmp r2, #6 - bne _0803F2C6 - ldr r1, _0803F2AC @ =0x00000385 - adds r0, r5, r1 - movs r1, #0 - ldrsb r1, [r0, r1] - subs r7, #0x59 - adds r0, r5, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - cmp r1, r0 - blt _0803F2B0 - movs r0, #0xd - strh r0, [r3] - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r5, r0 - b _0803F2D0 - .align 2, 0 -_0803F2A8: .4byte 0x000003DD -_0803F2AC: .4byte 0x00000385 -_0803F2B0: - movs r0, #0x62 - strh r0, [r3] - movs r3, #0xf7 - lsls r3, r3, #2 - adds r0, r5, r3 - strb r2, [r0] - ldr r0, [r6] - adds r0, r0, r4 - mov r4, ip - strb r4, [r0] - b _0803F2DC -_0803F2C6: - movs r0, #0xd - strh r0, [r3] - movs r7, #0xf7 - lsls r7, r7, #2 - adds r1, r5, r7 -_0803F2D0: - movs r0, #4 - strb r0, [r1] - ldr r0, [r6] - adds r0, r0, r4 - mov r1, ip - strb r1, [r0] -_0803F2DC: - ldr r4, _0803F324 @ =gCurrentPinballGame - ldr r1, [r4] - ldr r2, _0803F328 @ =0x000003E1 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #1 - bgt _0803F2F0 - b _0803FA78 -_0803F2F0: - ldr r3, _0803F32C @ =0x00000512 - adds r1, r1, r3 - ldrh r0, [r1] - adds r0, #0x80 - strh r0, [r1] - ldrh r0, [r1] - bl Sin - adds r1, r0, #0 - ldr r4, [r4] - lsls r1, r1, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #5 - subs r0, r0, r1 - lsls r0, r0, #1 - ldr r1, _0803F330 @ =0x00004E20 - bl __divsi3 - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #1 - movs r5, #0xfa - lsls r5, r5, #2 - adds r4, r4, r5 - strh r1, [r4] - b _0803FA78 - .align 2, 0 -_0803F324: .4byte gCurrentPinballGame -_0803F328: .4byte 0x000003E1 -_0803F32C: .4byte 0x00000512 -_0803F330: .4byte 0x00004E20 -_0803F334: - ldr r0, [r6] - ldr r7, _0803F438 @ =0x00000389 - adds r0, r0, r7 - movs r1, #2 - strb r1, [r0] - ldr r2, _0803F43C @ =gUnknown_086AF3CC - ldr r4, [r6] - ldr r5, _0803F440 @ =0x000003E2 - adds r3, r4, r5 - movs r0, #0 - ldrsh r1, [r3, r0] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r2, #0xf9 - lsls r2, r2, #2 - adds r1, r4, r2 - ldrh r2, [r1] - ldrh r0, [r0] - cmp r0, r2 - bls _0803F364 - b _0803F7AE -_0803F364: - movs r0, #0 - strh r0, [r1] - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x74 - bne _0803F390 - ldr r3, _0803F444 @ =0x000003E1 - adds r1, r4, r3 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0xe - bgt _0803F390 - adds r0, r2, #1 - strb r0, [r1] - ldr r0, [r6] - adds r0, r0, r5 - movs r1, #0x72 - strh r1, [r0] -_0803F390: - ldr r3, [r6] - ldr r5, _0803F440 @ =0x000003E2 - adds r1, r3, r5 - movs r4, #0 - ldrsh r0, [r1, r4] - cmp r0, #0x83 - bne _0803F3C8 - movs r2, #0 - movs r0, #0x1d - strh r0, [r1] - ldr r7, _0803F444 @ =0x000003E1 - adds r0, r3, r7 - strb r2, [r0] - ldr r0, [r6] - movs r1, #0xf7 - lsls r1, r1, #2 - adds r0, r0, r1 - movs r1, #5 - strb r1, [r0] - ldr r0, [r6] - ldr r3, _0803F448 @ =0x000003DD - adds r0, r0, r3 - movs r1, #4 - strb r1, [r0] - ldr r0, [r6] - ldr r4, _0803F438 @ =0x00000389 - adds r0, r0, r4 - strb r2, [r0] -_0803F3C8: - ldr r4, [r6] - adds r0, r4, r5 - movs r5, #0 - ldrsh r0, [r0, r5] - cmp r0, #0x72 - bne _0803F404 - ldr r7, _0803F444 @ =0x000003E1 - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0803F404 - ldr r2, _0803F44C @ =gMain - movs r1, #0xf3 - lsls r1, r1, #4 - adds r0, r2, r1 - movs r3, #1 - movs r1, #1 - strh r1, [r0] - ldr r5, _0803F450 @ =0x00000FE8 - adds r0, r2, r5 - strh r1, [r0] - movs r7, #0x85 - lsls r7, r7, #5 - adds r2, r2, r7 - strh r1, [r2] - ldr r1, _0803F454 @ =0x00000507 - adds r0, r4, r1 - strb r3, [r0] -_0803F404: - ldr r3, _0803F458 @ =gCurrentPinballGame - ldr r1, [r3] - ldr r2, _0803F440 @ =0x000003E2 - adds r0, r1, r2 - movs r4, #0 - ldrsh r0, [r0, r4] - cmp r0, #0x78 - bne _0803F41E - movs r5, #0xe4 - lsls r5, r5, #2 - adds r1, r1, r5 - movs r0, #0x15 - strh r0, [r1] -_0803F41E: - ldr r1, [r3] - adds r0, r1, r2 - movs r7, #0 - ldrsh r0, [r0, r7] - cmp r0, #0x7c - beq _0803F42C - b _0803FA78 -_0803F42C: - ldr r0, _0803F45C @ =0x0000050A - adds r1, r1, r0 - movs r0, #0x10 - strh r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F438: .4byte 0x00000389 -_0803F43C: .4byte gUnknown_086AF3CC -_0803F440: .4byte 0x000003E2 -_0803F444: .4byte 0x000003E1 -_0803F448: .4byte 0x000003DD -_0803F44C: .4byte gMain -_0803F450: .4byte 0x00000FE8 -_0803F454: .4byte 0x00000507 -_0803F458: .4byte gCurrentPinballGame -_0803F45C: .4byte 0x0000050A -_0803F460: - ldr r2, [r6] - movs r3, #0xf9 - lsls r3, r3, #2 - adds r1, r2, r3 - ldrh r0, [r1] - cmp r0, #0x77 - bhi _0803F470 - b _0803F9EA -_0803F470: - movs r4, #0xf7 - lsls r4, r4, #2 - adds r1, r2, r4 - movs r0, #8 - strb r0, [r1] - ldr r1, _0803F4B0 @ =0x040000D4 - ldr r0, _0803F4B4 @ =gUnknown_084A856C - str r0, [r1] - ldr r0, _0803F4B8 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _0803F4BC @ =0x80000E00 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, [r6] - ldr r5, _0803F4C0 @ =0x00000504 - adds r0, r0, r5 - ldrb r1, [r0] - movs r2, #1 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _0803F4D4 - ldr r0, _0803F4C4 @ =gMain - ldr r7, _0803F4C8 @ =0x000012C8 - adds r1, r0, r7 - strh r2, [r1] - ldr r3, _0803F4CC @ =0x00001438 - adds r1, r0, r3 - strh r2, [r1] - ldr r4, _0803F4D0 @ =0x000014F0 - adds r0, r0, r4 - b _0803F4EA - .align 2, 0 -_0803F4B0: .4byte 0x040000D4 -_0803F4B4: .4byte gUnknown_084A856C -_0803F4B8: .4byte 0x06015800 -_0803F4BC: .4byte 0x80000E00 -_0803F4C0: .4byte 0x00000504 -_0803F4C4: .4byte gMain -_0803F4C8: .4byte 0x000012C8 -_0803F4CC: .4byte 0x00001438 -_0803F4D0: .4byte 0x000014F0 -_0803F4D4: - ldr r0, _0803F530 @ =gMain - movs r5, #0x9c - lsls r5, r5, #5 - adds r1, r0, r5 - strh r2, [r1] - ldr r7, _0803F534 @ =0x00001888 - adds r1, r0, r7 - strh r2, [r1] - movs r1, #0xca - lsls r1, r1, #5 - adds r0, r0, r1 -_0803F4EA: - strh r2, [r0] - ldr r3, _0803F538 @ =gCurrentPinballGame - ldr r1, [r3] - ldr r2, _0803F53C @ =0x00000504 - adds r1, r1, r2 - ldrb r0, [r1] - adds r0, #1 - movs r2, #0 - strb r0, [r1] - ldr r0, [r3] - ldr r3, _0803F540 @ =0x00000524 - adds r1, r0, r3 - strh r2, [r1] - ldr r4, _0803F544 @ =0x00000526 - adds r1, r0, r4 - strh r2, [r1] - movs r5, #0xa5 - lsls r5, r5, #3 - adds r1, r0, r5 - strh r2, [r1] - ldr r7, _0803F548 @ =0x0000052A - adds r1, r0, r7 - strh r2, [r1] - subs r3, #0x10 - adds r1, r0, r3 - strh r2, [r1] - movs r4, #0xf9 - lsls r4, r4, #2 - adds r0, r0, r4 - strh r2, [r0] - ldr r0, _0803F54C @ =0x00000127 - bl m4aSongNumStart - b _0803FA78 - .align 2, 0 -_0803F530: .4byte gMain -_0803F534: .4byte 0x00001888 -_0803F538: .4byte gCurrentPinballGame -_0803F53C: .4byte 0x00000504 -_0803F540: .4byte 0x00000524 -_0803F544: .4byte 0x00000526 -_0803F548: .4byte 0x0000052A -_0803F54C: .4byte 0x00000127 -_0803F550: - ldr r7, _0803F578 @ =gMain - ldr r0, _0803F57C @ =0x000012C8 - adds r5, r7, r0 - ldrh r4, [r5] - cmp r4, #0 - beq _0803F5CC - ldr r0, [r6] - ldr r1, _0803F580 @ =0x00000524 - adds r2, r0, r1 - ldrh r3, [r2] - movs r4, #0 - ldrsh r1, [r2, r4] - ldr r0, _0803F584 @ =0x000012BF - cmp r1, r0 - bgt _0803F588 - adds r0, r3, #0 - adds r0, #0x8c - strh r0, [r2] - b _0803F58C - .align 2, 0 -_0803F578: .4byte gMain -_0803F57C: .4byte 0x000012C8 -_0803F580: .4byte 0x00000524 -_0803F584: .4byte 0x000012BF -_0803F588: - movs r0, #0 - strh r0, [r5] -_0803F58C: - ldr r2, [r6] - ldr r5, _0803F5C0 @ =0x00000524 - adds r0, r2, r5 - movs r7, #0 - ldrsh r1, [r0, r7] - movs r0, #0x96 - lsls r0, r0, #4 - cmp r1, r0 - ble _0803F62C - movs r0, #0xa5 - lsls r0, r0, #3 - adds r2, r2, r0 - ldrh r3, [r2] - movs r4, #0 - ldrsh r1, [r2, r4] - ldr r0, _0803F5C4 @ =0x0000135F - cmp r1, r0 - bgt _0803F5B6 - adds r0, r3, #0 - adds r0, #0xc8 - strh r0, [r2] -_0803F5B6: - ldr r1, [r6] - ldr r5, _0803F5C8 @ =0x00000514 - adds r1, r1, r5 - b _0803F626 - .align 2, 0 -_0803F5C0: .4byte 0x00000524 -_0803F5C4: .4byte 0x0000135F -_0803F5C8: .4byte 0x00000514 -_0803F5CC: - ldr r0, [r6] - ldr r1, _0803F5E8 @ =0x00000524 - adds r2, r0, r1 - ldrh r3, [r2] - movs r5, #0 - ldrsh r1, [r2, r5] - ldr r0, _0803F5EC @ =0xFFFFED40 - cmp r1, r0 - ble _0803F5F0 - adds r0, r3, #0 - subs r0, #0x8c - strh r0, [r2] - b _0803F5F8 - .align 2, 0 -_0803F5E8: .4byte 0x00000524 -_0803F5EC: .4byte 0xFFFFED40 -_0803F5F0: - movs r1, #0x9c - lsls r1, r1, #5 - adds r0, r7, r1 - strh r4, [r0] -_0803F5F8: - ldr r2, [r6] - ldr r3, _0803F674 @ =0x00000524 - adds r0, r2, r3 - movs r4, #0 - ldrsh r1, [r0, r4] - ldr r0, _0803F678 @ =0xFFFFF6A0 - cmp r1, r0 - bge _0803F62C - movs r5, #0xa5 - lsls r5, r5, #3 - adds r2, r2, r5 - ldrh r3, [r2] - movs r7, #0 - ldrsh r1, [r2, r7] - ldr r0, _0803F67C @ =0xFFFFECA0 - cmp r1, r0 - ble _0803F620 - adds r0, r3, #0 - subs r0, #0xc8 - strh r0, [r2] -_0803F620: - ldr r1, [r6] - ldr r0, _0803F680 @ =0x00000514 - adds r1, r1, r0 -_0803F626: - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] -_0803F62C: - ldr r2, _0803F684 @ =gCurrentPinballGame - ldr r1, [r2] - movs r3, #0xf9 - lsls r3, r3, #2 - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, #0x14 - bne _0803F646 - movs r4, #0x99 - lsls r4, r4, #3 - adds r1, r1, r4 - movs r0, #0x3c - strb r0, [r1] -_0803F646: - ldr r2, [r2] - adds r1, r2, r3 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0xc7 - bhi _0803F65A - b _0803FA78 -_0803F65A: - movs r0, #0 - strh r0, [r1] - ldr r5, _0803F688 @ =0x000003E2 - adds r1, r2, r5 - movs r0, #0xd - strh r0, [r1] - movs r7, #0xf7 - lsls r7, r7, #2 - adds r1, r2, r7 - movs r0, #3 - strb r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F674: .4byte 0x00000524 -_0803F678: .4byte 0xFFFFF6A0 -_0803F67C: .4byte 0xFFFFECA0 -_0803F680: .4byte 0x00000514 -_0803F684: .4byte gCurrentPinballGame -_0803F688: .4byte 0x000003E2 -_0803F68C: - ldr r0, [r6] - movs r1, #0xa5 - lsls r1, r1, #2 - adds r0, r0, r1 - movs r5, #0 - movs r1, #3 - strb r1, [r0] - ldr r4, [r6] - ldr r2, _0803F704 @ =0x00000283 - adds r0, r4, r2 - ldrb r0, [r0] - movs r1, #0xa - bl __umodsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #9 - bne _0803F720 - movs r3, #0xf7 - lsls r3, r3, #2 - adds r1, r4, r3 - movs r0, #0xe - strb r0, [r1] - ldr r0, [r6] - ldr r4, _0803F708 @ =0x000003E2 - adds r0, r0, r4 - movs r4, #0 - strh r5, [r0] - ldr r3, _0803F70C @ =gMain - ldr r7, _0803F710 @ =0x00000A28 - adds r0, r3, r7 - movs r1, #1 - strh r1, [r0] - movs r2, #0x97 - lsls r2, r2, #4 - adds r0, r3, r2 - strh r1, [r0] - ldr r1, [r6] - movs r7, #0xb3 - lsls r7, r7, #3 - adds r2, r1, r7 - movs r0, #0xc7 - strh r0, [r2] - ldr r2, _0803F714 @ =0x0000038E - adds r0, r1, r2 - strh r5, [r0] - adds r7, #0x10 - adds r1, r1, r7 - strb r4, [r1] - ldr r0, [r6] - ldr r2, _0803F718 @ =0x000005A6 - adds r1, r0, r2 - strh r5, [r1] - ldr r4, _0803F71C @ =0x000005A4 - adds r0, r0, r4 - movs r1, #2 - strb r1, [r0] - adds r2, r3, #0 - b _0803F74C - .align 2, 0 -_0803F704: .4byte 0x00000283 -_0803F708: .4byte 0x000003E2 -_0803F70C: .4byte gMain -_0803F710: .4byte 0x00000A28 -_0803F714: .4byte 0x0000038E -_0803F718: .4byte 0x000005A6 -_0803F71C: .4byte 0x000005A4 -_0803F720: - movs r7, #0xf7 - lsls r7, r7, #2 - adds r1, r4, r7 - movs r0, #0xa - strb r0, [r1] - ldr r1, [r6] - ldr r0, _0803F770 @ =0x000003E2 - adds r2, r1, r0 - movs r0, #0x62 - strh r0, [r2] - ldr r2, _0803F774 @ =gMain - movs r0, #0x80 - strb r0, [r2, #0xf] - movs r3, #0xe2 - lsls r3, r3, #2 - adds r1, r1, r3 - movs r0, #2 - strb r0, [r1] - ldr r0, [r6] - ldr r4, _0803F778 @ =0x00000392 - adds r0, r0, r4 - strh r5, [r0] -_0803F74C: - ldr r0, _0803F77C @ =gCurrentPinballGame - ldr r4, [r0] - movs r5, #0xf9 - lsls r5, r5, #2 - adds r1, r4, r5 - movs r0, #0 - strh r0, [r1] - ldr r7, _0803F780 @ =0x00001CD8 - adds r0, r2, r7 - ldrh r0, [r0] - cmp r0, #0 - bne _0803F766 - b _0803FA78 -_0803F766: - ldr r0, _0803F784 @ =0x00000486 - adds r1, r4, r0 - movs r0, #1 - strh r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F770: .4byte 0x000003E2 -_0803F774: .4byte gMain -_0803F778: .4byte 0x00000392 -_0803F77C: .4byte gCurrentPinballGame -_0803F780: .4byte 0x00001CD8 -_0803F784: .4byte 0x00000486 -_0803F788: - ldr r2, _0803F7B4 @ =gUnknown_086AF3CC - ldr r5, _0803F7B8 @ =gCurrentPinballGame - ldr r4, [r5] - ldr r6, _0803F7BC @ =0x000003E2 - adds r3, r4, r6 - movs r7, #0 - ldrsh r1, [r3, r7] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r2, #0xf9 - lsls r2, r2, #2 - adds r1, r4, r2 - ldrh r2, [r1] - ldrh r0, [r0] - cmp r0, r2 - bls _0803F7C0 -_0803F7AE: - adds r0, r2, #1 - strh r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F7B4: .4byte gUnknown_086AF3CC -_0803F7B8: .4byte gCurrentPinballGame -_0803F7BC: .4byte 0x000003E2 -_0803F7C0: - movs r2, #0 - movs r0, #0 - strh r0, [r1] - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x83 - bne _0803F7F2 - movs r0, #0xd - strh r0, [r3] - ldr r3, _0803F80C @ =0x000003E1 - adds r0, r4, r3 - strb r2, [r0] - ldr r0, [r5] - movs r4, #0xf7 - lsls r4, r4, #2 - adds r0, r0, r4 - movs r1, #0xb - strb r1, [r0] - ldr r0, [r5] - ldr r7, _0803F810 @ =0x00000389 - adds r0, r0, r7 - strb r2, [r0] -_0803F7F2: - ldr r1, [r5] - adds r0, r1, r6 - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r0, #0x78 - beq _0803F800 - b _0803FA78 -_0803F800: - movs r3, #0xe4 - lsls r3, r3, #2 - adds r1, r1, r3 - movs r0, #0x15 - strh r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F80C: .4byte 0x000003E1 -_0803F810: .4byte 0x00000389 -_0803F814: - ldr r2, _0803F840 @ =gUnknown_086AF3CC - ldr r3, [r6] - ldr r5, _0803F844 @ =0x000003E2 - adds r4, r3, r5 - movs r7, #0 - ldrsh r1, [r4, r7] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, #2 - adds r0, r0, r2 - movs r1, #0xf9 - lsls r1, r1, #2 - adds r3, r3, r1 - ldrh r1, [r3] - ldrh r0, [r0] - cmp r0, r1 - bls _0803F848 - adds r0, r1, #1 - strh r0, [r3] - b _0803F85E - .align 2, 0 -_0803F840: .4byte gUnknown_086AF3CC -_0803F844: .4byte 0x000003E2 -_0803F848: - movs r0, #0 - strh r0, [r3] - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x22 - bne _0803F85E - movs r0, #0x21 - strh r0, [r4] -_0803F85E: - ldr r1, [r6] - ldr r2, _0803F8C8 @ =0x000003E2 - adds r0, r1, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0x21 - bne _0803F890 - ldr r4, _0803F8CC @ =0x000003EA - adds r1, r1, r4 - ldrh r2, [r1] - movs r5, #0 - ldrsh r0, [r1, r5] - ldr r3, _0803F8D0 @ =0xFFFFFD00 - cmp r0, r3 - ble _0803F890 - adds r0, r2, #0 - subs r0, #0x18 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, r3 - bge _0803F890 - movs r0, #0xfd - lsls r0, r0, #8 - strh r0, [r1] -_0803F890: - ldr r4, _0803F8D4 @ =gCurrentPinballGame - ldr r3, [r4] - ldr r7, _0803F8CC @ =0x000003EA - adds r0, r3, r7 - movs r2, #0 - ldrsh r1, [r0, r2] - ldr r0, _0803F8D0 @ =0xFFFFFD00 - cmp r1, r0 - beq _0803F8A4 - b _0803FA78 -_0803F8A4: - ldr r5, _0803F8C8 @ =0x000003E2 - adds r0, r3, r5 - movs r2, #0 - movs r1, #0 - strh r1, [r0] - subs r7, #6 - adds r0, r3, r7 - strh r1, [r0] - movs r0, #0xf7 - lsls r0, r0, #2 - adds r1, r3, r0 - movs r0, #0xc -_0803F8BC: - strb r0, [r1] - ldr r0, [r4] - ldr r1, _0803F8D8 @ =0x000003E1 - adds r0, r0, r1 - strb r2, [r0] - b _0803FA78 - .align 2, 0 -_0803F8C8: .4byte 0x000003E2 -_0803F8CC: .4byte 0x000003EA -_0803F8D0: .4byte 0xFFFFFD00 -_0803F8D4: .4byte gCurrentPinballGame -_0803F8D8: .4byte 0x000003E1 -_0803F8DC: - ldr r1, _0803F980 @ =0x040000D4 - ldr r0, _0803F984 @ =gUnknown_084AA18C - str r0, [r1] - ldr r0, _0803F988 @ =0x06011620 - str r0, [r1, #4] - ldr r0, _0803F98C @ =0x80000430 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r3, _0803F990 @ =gCurrentPinballGame - ldr r0, [r3] - movs r2, #0xf7 - lsls r2, r2, #2 - adds r0, r0, r2 - movs r4, #0 - movs r1, #0xd - strb r1, [r0] - ldr r1, [r3] - movs r5, #0xfa - lsls r5, r5, #2 - adds r2, r1, r5 - ldr r0, _0803F994 @ =0x00000474 - strh r0, [r2] - ldr r7, _0803F998 @ =0x000003EA - adds r2, r1, r7 - ldr r0, _0803F99C @ =0x0000FB50 - strh r0, [r2] - ldr r0, _0803F9A0 @ =0x00000506 - adds r1, r1, r0 - movs r0, #2 - strb r0, [r1] - ldr r0, [r3] - ldr r2, _0803F9A4 @ =0x00000516 - adds r1, r0, r2 - strh r4, [r1] - ldr r5, _0803F9A8 @ =0x000005FA - adds r0, r0, r5 - movs r2, #1 - strb r2, [r0] - ldr r0, _0803F9AC @ =gMain - movs r1, #0x80 - strb r1, [r0, #0xf] - ldr r7, _0803F9B0 @ =0x00000D08 - adds r0, r0, r7 - strh r2, [r0] - ldr r1, [r3] - movs r2, #0xf1 - lsls r2, r2, #2 - adds r0, r1, r2 - strh r4, [r0] - ldr r3, _0803F9B4 @ =0x000003C6 - adds r2, r1, r3 - ldr r0, _0803F9B8 @ =0x0000EC78 - strh r0, [r2] - movs r4, #0xf2 - lsls r4, r4, #2 - adds r2, r1, r4 - movs r0, #0xaf - lsls r0, r0, #3 - strh r0, [r2] - ldr r5, _0803F9BC @ =0x000003CA - adds r2, r1, r5 - ldr r0, _0803F9C0 @ =0x0000F830 - strh r0, [r2] - movs r7, #0x83 - lsls r7, r7, #3 - adds r2, r1, r7 - ldr r0, _0803F9C4 @ =0x0000FF38 - strh r0, [r2] - ldr r0, _0803F9C8 @ =0x0000041A - adds r2, r1, r0 - subs r0, #0xfa - strh r0, [r2] - adds r3, #0x4e - adds r2, r1, r3 - movs r0, #0x18 - strh r0, [r2] - adds r4, #0x4e - adds r1, r1, r4 - ldr r0, _0803F9CC @ =0x0000FFF0 - strh r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F980: .4byte 0x040000D4 -_0803F984: .4byte gUnknown_084AA18C -_0803F988: .4byte 0x06011620 -_0803F98C: .4byte 0x80000430 -_0803F990: .4byte gCurrentPinballGame -_0803F994: .4byte 0x00000474 -_0803F998: .4byte 0x000003EA -_0803F99C: .4byte 0x0000FB50 -_0803F9A0: .4byte 0x00000506 -_0803F9A4: .4byte 0x00000516 -_0803F9A8: .4byte 0x000005FA -_0803F9AC: .4byte gMain -_0803F9B0: .4byte 0x00000D08 -_0803F9B4: .4byte 0x000003C6 -_0803F9B8: .4byte 0x0000EC78 -_0803F9BC: .4byte 0x000003CA -_0803F9C0: .4byte 0x0000F830 -_0803F9C4: .4byte 0x0000FF38 -_0803F9C8: .4byte 0x0000041A -_0803F9CC: .4byte 0x0000FFF0 -_0803F9D0: - ldr r3, _0803F9F0 @ =gCurrentPinballGame - ldr r2, [r3] - ldr r5, _0803F9F4 @ =0x00000516 - adds r0, r2, r5 - ldrh r0, [r0] - cmp r0, #0xff - bhi _0803FA18 - movs r7, #0xf9 - lsls r7, r7, #2 - adds r1, r2, r7 - ldrh r0, [r1] - cmp r0, #0x4f - bhi _0803F9F8 -_0803F9EA: - adds r0, #1 - strh r0, [r1] - b _0803FA78 - .align 2, 0 -_0803F9F0: .4byte gCurrentPinballGame -_0803F9F4: .4byte 0x00000516 -_0803F9F8: - ldr r0, _0803FA10 @ =0x000003EA - adds r2, r2, r0 - ldrh r3, [r2] - movs r4, #0 - ldrsh r1, [r2, r4] - ldr r0, _0803FA14 @ =0x0000095F - cmp r1, r0 - bgt _0803FA78 - adds r0, r3, #0 - adds r0, #0x50 - b _0803FA76 - .align 2, 0 -_0803FA10: .4byte 0x000003EA -_0803FA14: .4byte 0x0000095F -_0803FA18: - movs r1, #0 - movs r0, #2 - strb r0, [r2, #0x13] - ldr r0, [r3] - strh r1, [r0, #0x18] - movs r5, #0xf7 - lsls r5, r5, #2 - adds r0, r0, r5 - movs r1, #0xf - strb r1, [r0] - b _0803FA78 -_0803FA2E: - ldr r0, _0803FAC0 @ =gCurrentPinballGame - ldr r5, [r0] - movs r7, #0xe3 - lsls r7, r7, #2 - adds r1, r5, r7 - movs r0, #1 - strh r0, [r1] - ldr r0, _0803FAC4 @ =0x0000038E - adds r4, r5, r0 - ldrh r6, [r4] - movs r1, #0 - ldrsh r0, [r4, r1] - ldr r1, _0803FAC8 @ =0xFFFFFE0C - cmp r0, r1 - ble _0803FA78 - subs r0, r1, r0 - movs r1, #0x1e - bl __divsi3 - adds r0, r6, r0 - strh r0, [r4] - movs r3, #0 - ldrsh r0, [r4, r3] - movs r1, #0xa - bl __divsi3 - adds r2, r5, #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 _0803FA78 - ldr r0, _0803FACC @ =0x0000FFDA -_0803FA76: - strh r0, [r2] -_0803FA78: - ldr r5, _0803FAC0 @ =gCurrentPinballGame - ldr r0, [r5] - movs r4, #0xe4 - lsls r4, r4, #2 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, #0 - beq _0803FAB8 - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x14 - bne _0803FAA2 - ldr r0, _0803FAD0 @ =gSpeciesInfo - ldr r7, _0803FAD4 @ =0x000012A8 - adds r0, r0, r7 - ldrh r0, [r0] - movs r1, #0 - bl PlayCry_Normal -_0803FAA2: - ldr r0, [r5] - adds r0, r0, r4 - ldrh r0, [r0] - cmp r0, #0 - bne _0803FAB8 - ldr r0, _0803FAD8 @ =gMPlayInfo_BGM - ldr r1, _0803FADC @ =0x0000FFFF - movs r2, #0x80 - lsls r2, r2, #1 - bl m4aMPlayVolumeControl -_0803FAB8: - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0803FAC0: .4byte gCurrentPinballGame -_0803FAC4: .4byte 0x0000038E -_0803FAC8: .4byte 0xFFFFFE0C -_0803FACC: .4byte 0x0000FFDA -_0803FAD0: .4byte gSpeciesInfo -_0803FAD4: .4byte 0x000012A8 -_0803FAD8: .4byte gMPlayInfo_BGM -_0803FADC: .4byte 0x0000FFFF diff --git a/expected_objs/sub_3EDF0.o b/expected_objs/sub_3EDF0.o deleted file mode 100644 index 9d06101..0000000 Binary files a/expected_objs/sub_3EDF0.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index ac0a8cc..ec601d4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -712,7 +712,7 @@ extern void sub_51150(void); // asm/rom_528AC.s //extern ? SpeciesRSToCryId(); -//extern ? PlayCry_Normal(); +void PlayCry_Normal(u16, s8); extern void PlayCry_NormalNoDucking(u16, s8, s8, u8); //extern ? PlayCryInternal(); extern void SaveFile_LoadGameData(void); diff --git a/include/global.h b/include/global.h index e9e06c3..a0d2d82 100644 --- a/include/global.h +++ b/include/global.h @@ -353,7 +353,8 @@ struct PinballGame /*0x389*/ s8 unk389; /*0x38A*/ s16 unk38A; /*0x38C*/ s16 unk38C; - /*0x38E*/ u8 filler38E[0x4]; + /*0x38E*/ s16 unk38E; + /*0x390*/ u16 unk390; /*0x392*/ u16 unk392; /*0x394*/ s16 unk394; /*0x396*/ s8 unk396; @@ -372,11 +373,11 @@ struct PinballGame /*0x3C4*/ struct Vector16 unk3C4[3]; /*0x3D0*/ struct Vector16 unk3D0[3]; /*0x3DC*/ s8 unk3DC; - /*0x3DD*/ u8 unk3DD; + /*0x3DD*/ s8 unk3DD; /*0x3DE*/ s8 unk3DE; /*0x3DF*/ s8 unk3DF; /*0x3E0*/ s8 unk3E0; - /*0x3E1*/ u8 unk3E1; + /*0x3E1*/ s8 unk3E1; /*0x3E2*/ s16 unk3E2; /*0x3E4*/ u16 unk3E4; /*0x3E6*/ s16 unk3E6; @@ -438,16 +439,16 @@ struct PinballGame /*0x4D5*/ s8 unk4D5[3]; /*0x4D8*/ u8 filler4D8[0x20]; /*0x4F8*/ struct Vector16 unk4F8[3]; - /*0x504*/ u8 filler504[0x1]; + /*0x504*/ u8 unk504; /*0x505*/ s8 unk505; /*0x506*/ s8 unk506; /*0x507*/ s8 unk507; /*0x508*/ s16 unk508; /*0x50A*/ s16 unk50A; - /*0x50C*/ u8 filler50C[0x2]; + /*0x50C*/ u16 unk50C; /*0x50E*/ u16 unk50E; /*0x510*/ u16 unk510; - /*0x512*/ u8 filler512[0x2]; + /*0x512*/ u16 unk512; /*0x514*/ u16 unk514; /*0x516*/ u16 unk516; /*0x518*/ s16 unk518; diff --git a/src/rom_49A34.c b/src/rom_49A34.c index bb20c14..c69064d 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -103,7 +103,7 @@ extern const u16 gUnknown_086B609E[][3][3]; extern const u16 gUnknown_086B5ECA[][6][3]; extern const u16 gUnknown_086B5DCE[][7][3]; extern const u16 gUnknown_086B5CC0[][5][3]; -extern const s16 gUnknown_086AF3CC[][3]; +extern const u16 gUnknown_086AF3CC[][3]; extern const u16 gUnknown_086B612E[][3]; extern const u16 gUnknown_086AFAE2[][2]; extern const u16 gUnknown_086AFAE0[][2]; @@ -115,6 +115,8 @@ extern const s16 gUnknown_086AEF28[]; extern const s16 gUnknown_08137D48[]; extern const u8 gUnknown_084A6EEC[][0x280]; extern const u8 gUnknown_084AA9EC[][0x800]; +extern const u8 gUnknown_084A856C[]; +extern const u8 gUnknown_084AA18C[]; struct Unk_086AFAC0 { @@ -138,6 +140,452 @@ extern u8 gUnknown_0200FBB0[]; extern u8 gUnknown_020030A0[]; +void sub_3EDF0(void) +{ + if (gCurrentPinballGame->unk452) + { + gCurrentPinballGame->unk452--; + gCurrentPinballGame->unk389 = 1; + if (gCurrentPinballGame->unk452 == 5) + { + m4aSongNumStart(SE_UNKNOWN_0x126); + gCurrentPinballGame->unk3C = 1000000; + gCurrentPinballGame->unk385++; + sub_11B0(7); + if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384 && gCurrentPinballGame->unk3DC != 6) + gCurrentPinballGame->unk3DC = 9; + } + + gCurrentPinballGame->unk50C = 20; + if (gCurrentPinballGame->unk452 == 0) + gCurrentPinballGame->unk389 = 0; + } + + if (gCurrentPinballGame->unk50C) + { + gCurrentPinballGame->unk50C--; + gCurrentPinballGame->unk387 = 0; + } + else + { + gCurrentPinballGame->unk387 = 1; + } + + switch (gCurrentPinballGame->unk3DC) + { + case 0: + gCurrentPinballGame->unk3E8 = 1140; + gCurrentPinballGame->unk3EA = 2400; + gCurrentPinballGame->unk3DC = 1; + gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk51A = 0; + break; + case 1: + if (gCurrentPinballGame->unk516 > 530) + { + if (gCurrentPinballGame->unk3EA > -1200) + gCurrentPinballGame->unk3EA -= 70; + + if (gCurrentPinballGame->unk516 == 672) + { + gCurrentPinballGame->unk3DC = 2; + gCurrentPinballGame->unk3E8 = 0; + gCurrentPinballGame->unk3EA = -640; + } + } + + if (gCurrentPinballGame->unk516 == 530) + gCurrentPinballGame->unk390 = 25; + break; + case 2: + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 63) + gCurrentPinballGame->unk3E2 = 13; + } + + if (gCurrentPinballGame->unk3EA < 0) + { + gCurrentPinballGame->unk3EA += 18; + if (gCurrentPinballGame->unk3EA > 0) + { + gCurrentPinballGame->unk3EA = 0; + m4aSongNumStart(MUS_BONUS_FIELD_RAYQUAZA); + } + } + + if (gCurrentPinballGame->unk3EA == 0) + { + gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3DD = 6; + } + break; + case 3: + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 63) + gCurrentPinballGame->unk3E2 = 13; + } + + if (gCurrentPinballGame->unk3EA < 0) + { + gCurrentPinballGame->unk3EA += 18; + if (gCurrentPinballGame->unk3EA > 0) + gCurrentPinballGame->unk3EA = 0; + } + + if (gCurrentPinballGame->unk3EA == 0) + { + gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3DD = 6; + } + break; + case 4: + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 34) + gCurrentPinballGame->unk3E2 = 33; + } + + if (gCurrentPinballGame->unk3E2 == 33 && gCurrentPinballGame->unk3EA > -0x300) + { + gCurrentPinballGame->unk3EA -= 0x18; + if (gCurrentPinballGame->unk3EA < -0x300) + gCurrentPinballGame->unk3EA = -0x300; + } + + if (gCurrentPinballGame->unk3EA == -0x300) + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3DC = 7; + gCurrentPinballGame->unk3E1 = 0; + } + break; + case 5: + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 63) + { + if (gCurrentPinballGame->unk3E1 < 6) + { + gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->unk3E1++; + } + else if (gCurrentPinballGame->unk3DD == 6) + { + if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384 - 1) + { + gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->unk3DC = 4; + gCurrentPinballGame->unk3E1 = 0; + } + else + { + gCurrentPinballGame->unk3E2 = 98; + gCurrentPinballGame->unk3DC = 6; + gCurrentPinballGame->unk3E1 = 0; + } + } + else + { + gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->unk3DC = 4; + gCurrentPinballGame->unk3E1 = 0; + } + } + } + + if (gCurrentPinballGame->unk3E1 > 1) + { + gCurrentPinballGame->unk512 += 0x80; + gCurrentPinballGame->unk3E8 = ((Sin(gCurrentPinballGame->unk512) * 62) / 20000) * 10; + } + break; + case 6: + gCurrentPinballGame->unk389 = 2; + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 116 && gCurrentPinballGame->unk3E1 < 15) + { + gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->unk3E2 = 114; + } + + if (gCurrentPinballGame->unk3E2 == 131) + { + gCurrentPinballGame->unk3E2 = 29; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->unk3DD = 4; + gCurrentPinballGame->unk389 = 0; + } + + if (gCurrentPinballGame->unk3E2 == 114) + { + if (gCurrentPinballGame->unk3E1 == 0) + { + gMain.spriteGroups[17].available = 1; + gMain.spriteGroups[18].available = 1; + gMain.spriteGroups[19].available = 1; + gCurrentPinballGame->unk507 = 1; + } + } + + if (gCurrentPinballGame->unk3E2 == 120) + gCurrentPinballGame->unk390 = 21; + + if (gCurrentPinballGame->unk3E2 == 124) + gCurrentPinballGame->unk50A = 16; + } + break; + case 7: + if (gCurrentPinballGame->unk3E4 < 120) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3DC = 8; + DmaCopy16(3, gUnknown_084A856C, (void *)0x06015800, 0x1C00); + if (gCurrentPinballGame->unk504 & 1) + { + gMain.spriteGroups[22].available = 1; + gMain.spriteGroups[24].available = 1; + gMain.spriteGroups[25].available = 1; + } + else + { + gMain.spriteGroups[23].available = 1; + gMain.spriteGroups[30].available = 1; + gMain.spriteGroups[31].available = 1; + } + + gCurrentPinballGame->unk504++; + gCurrentPinballGame->unk524.x = 0; + gCurrentPinballGame->unk524.y = 0; + gCurrentPinballGame->unk528.x = 0; + gCurrentPinballGame->unk528.y = 0; + gCurrentPinballGame->unk514 = 0; + gCurrentPinballGame->unk3E4 = 0; + m4aSongNumStart(SE_UNKNOWN_0x127); + } + break; + case 8: + if (gMain.spriteGroups[22].available) + { + if (gCurrentPinballGame->unk524.x < 4800) + gCurrentPinballGame->unk524.x += 140; + else + gMain.spriteGroups[22].available = 0; + + if (gCurrentPinballGame->unk524.x > 2400) + { + if (gCurrentPinballGame->unk528.x < 4960) + gCurrentPinballGame->unk528.x += 200; + + gCurrentPinballGame->unk514++; + } + } + else + { + if (gCurrentPinballGame->unk524.x > -4800) + gCurrentPinballGame->unk524.x -= 140; + else + gMain.spriteGroups[23].available = 0; + + if (gCurrentPinballGame->unk524.x < -2400) + { + if (gCurrentPinballGame->unk528.x > -4960) + gCurrentPinballGame->unk528.x -= 200; + + gCurrentPinballGame->unk514++; + } + } + + if (gCurrentPinballGame->unk3E4 == 20) + gCurrentPinballGame->unk4C8 = 60; + + gCurrentPinballGame->unk3E4++; + if (gCurrentPinballGame->unk3E4 >= 200) + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->unk3DC = 3; + } + break; + case 9: + gCurrentPinballGame->unk294 = 3; + if (gCurrentPinballGame->numCompletedBonusStages % 10 == 9) + { + gCurrentPinballGame->unk3DC = 14; + gCurrentPinballGame->unk3E2 = 0; + gMain.spriteGroups[10].available = 1; + gMain.spriteGroups[9].available = 1; + gCurrentPinballGame->currentSpecies = SPECIES_RAYQUAZA; + gCurrentPinballGame->unk38E = 0; + gCurrentPinballGame->unk5A8 = 0; + gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->unk5A4 = 2; + } + else + { + gCurrentPinballGame->unk3DC = 10; + gCurrentPinballGame->unk3E2 = 98; + gMain.unkF = 0x80; + gCurrentPinballGame->unk388 = 2; + gCurrentPinballGame->unk392 = 0; + } + + gCurrentPinballGame->unk3E4 = 0; + if (gMain.spriteGroups[36].available) + gCurrentPinballGame->unk486 = 1; + break; + case 10: + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 131) + { + gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->unk3DC = 11; + gCurrentPinballGame->unk389 = 0; + } + + if (gCurrentPinballGame->unk3E2 == 120) + gCurrentPinballGame->unk390 = 21; + } + break; + case 11: + if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + { + gCurrentPinballGame->unk3E4++; + } + else + { + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3E2++; + if (gCurrentPinballGame->unk3E2 == 34) + gCurrentPinballGame->unk3E2 = 33; + } + if (gCurrentPinballGame->unk3E2 == 33) + { + if (gCurrentPinballGame->unk3EA > -0x300) + { + gCurrentPinballGame->unk3EA -= 0x18; + if (gCurrentPinballGame->unk3EA < -0x300) + gCurrentPinballGame->unk3EA = -0x300; + } + } + + if (gCurrentPinballGame->unk3EA == -0x300) + { + gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->unk3DC = 12; + gCurrentPinballGame->unk3E1 = 0; + } + + break; + case 12: + DmaCopy16(3, gUnknown_084AA18C, (void *)0x06011620, 0x860); + gCurrentPinballGame->unk3DC = 13; + gCurrentPinballGame->unk3E8 = 1140; + gCurrentPinballGame->unk3EA = -1200; + gCurrentPinballGame->unk506 = 2; + gCurrentPinballGame->unk516 = 0; + gCurrentPinballGame->unk5FA = 1; + gMain.unkF = 0x80; + gMain.spriteGroups[14].available = 1; + gCurrentPinballGame->unk3C4[0].x = 0; + gCurrentPinballGame->unk3C4[0].y = -5000; + gCurrentPinballGame->unk3C4[1].x = 1400; + gCurrentPinballGame->unk3C4[1].y = -2000; + gCurrentPinballGame->unk418.x = -200; + gCurrentPinballGame->unk418.y = 800; + gCurrentPinballGame->unk414.x = 24; + gCurrentPinballGame->unk414.y = -16; + break; + case 13: + if (gCurrentPinballGame->unk516 < 256) + { + if (gCurrentPinballGame->unk3E4 < 80) + gCurrentPinballGame->unk3E4++; + else if (gCurrentPinballGame->unk3EA < 2400) + gCurrentPinballGame->unk3EA += 80; + } + else + { + gCurrentPinballGame->unk13 = 2; + gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->unk3DC = 15; + } + break; + case 14: + gCurrentPinballGame->unk38C = 1; + if (gCurrentPinballGame->unk38E > -500) + { + gCurrentPinballGame->unk38E += (-500 - gCurrentPinballGame->unk38E) / 30; + gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk38E / 10; + if (gCurrentPinballGame->unkE6 < -38) + gCurrentPinballGame->unkE6 = -38; + } + break; + case 15: + break; + } + + if (gCurrentPinballGame->unk390) + { + gCurrentPinballGame->unk390--; + if (gCurrentPinballGame->unk390 == 20) + PlayCry_Normal(gSpeciesInfo[SPECIES_RAYQUAZA].mainSeriesIndexNumber, 0); + + if (gCurrentPinballGame->unk390 == 0) + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); + } +} + void sub_3FAE0(void) { s16 i;