tmc/asm/playSFX.s

280 lines
4.8 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PlaySFX
PlaySFX: @ 0x080A3268
push {r4, r5, lr}
adds r3, r0, #0
ldr r0, _080A32AC @ =gUnk_03001000
ldrb r2, [r0, #7]
cmp r2, #0
beq _080A3276
b _080A347C
_080A3276:
ldr r5, _080A32B0 @ =gUnk_02021EE0
ldr r4, _080A32B4 @ =0x0000FFFF
ands r4, r3
ldr r1, _080A32B8 @ =0xFFFF0000
ands r1, r3
ldr r0, _080A32BC @ =0x80090000
cmp r1, r0
bne _080A3288
b _080A33A0
_080A3288:
cmp r1, r0
bhi _080A3310
ldr r0, _080A32C0 @ =0x80040000
cmp r1, r0
bne _080A3294
b _080A33F4
_080A3294:
cmp r1, r0
bhi _080A32D8
ldr r0, _080A32C4 @ =0x80020000
cmp r1, r0
bne _080A32A0
b _080A3384
_080A32A0:
cmp r1, r0
bhi _080A32CC
ldr r0, _080A32C8 @ =0x80010000
cmp r1, r0
beq _080A337C
b _080A3458
.align 2, 0
_080A32AC: .4byte gUnk_03001000
_080A32B0: .4byte gUnk_02021EE0
_080A32B4: .4byte 0x0000FFFF
_080A32B8: .4byte 0xFFFF0000
_080A32BC: .4byte 0x80090000
_080A32C0: .4byte 0x80040000
_080A32C4: .4byte 0x80020000
_080A32C8: .4byte 0x80010000
_080A32CC:
ldr r0, _080A32D4 @ =0x80030000
cmp r1, r0
beq _080A338C
b _080A3458
.align 2, 0
_080A32D4: .4byte 0x80030000
_080A32D8:
ldr r0, _080A32F0 @ =0x80060000
cmp r1, r0
bne _080A32E0
b _080A340A
_080A32E0:
cmp r1, r0
bhi _080A32F8
ldr r0, _080A32F4 @ =0x80050000
cmp r1, r0
bne _080A32EC
b _080A33FE
_080A32EC:
b _080A3458
.align 2, 0
_080A32F0: .4byte 0x80060000
_080A32F4: .4byte 0x80050000
_080A32F8:
ldr r0, _080A3308 @ =0x80070000
cmp r1, r0
bne _080A3300
b _080A340E
_080A3300:
ldr r0, _080A330C @ =0x80080000
cmp r1, r0
beq _080A3398
b _080A3458
.align 2, 0
_080A3308: .4byte 0x80070000
_080A330C: .4byte 0x80080000
_080A3310:
ldr r0, _080A3330 @ =0x800D0000
cmp r1, r0
bne _080A3318
b _080A343A
_080A3318:
cmp r1, r0
bhi _080A3348
ldr r0, _080A3334 @ =0x800B0000
cmp r1, r0
bne _080A3324
b _080A3420
_080A3324:
cmp r1, r0
bhi _080A333C
ldr r0, _080A3338 @ =0x800A0000
cmp r1, r0
beq _080A33B6
b _080A3458
.align 2, 0
_080A3330: .4byte 0x800D0000
_080A3334: .4byte 0x800B0000
_080A3338: .4byte 0x800A0000
_080A333C:
ldr r0, _080A3344 @ =0x800C0000
cmp r1, r0
beq _080A33CC
b _080A3458
.align 2, 0
_080A3344: .4byte 0x800C0000
_080A3348:
ldr r0, _080A335C @ =0x800F0000
cmp r1, r0
bne _080A3350
b _080A344E
_080A3350:
cmp r1, r0
bhi _080A3364
ldr r0, _080A3360 @ =0x800E0000
cmp r1, r0
beq _080A3446
b _080A3458
.align 2, 0
_080A335C: .4byte 0x800F0000
_080A3360: .4byte 0x800E0000
_080A3364:
ldr r0, _080A3374 @ =0x80100000
cmp r1, r0
beq _080A343E
ldr r0, _080A3378 @ =0x80110000
cmp r1, r0
beq _080A3454
b _080A3458
.align 2, 0
_080A3374: .4byte 0x80100000
_080A3378: .4byte 0x80110000
_080A337C:
strh r2, [r5, #0x14]
bl m4aMPlayAllStop
b _080A347C
_080A3384:
movs r0, #0
bl sub_080A3234
b _080A347C
_080A338C:
bl sub_080A35C8
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r5, #0x12]
b _080A3418
_080A3398:
ldrh r0, [r5, #0x14]
bl sub_080A35B4
b _080A347C
_080A33A0:
cmp r4, #0
bne _080A33A6
ldrh r4, [r5, #0x14]
_080A33A6:
subs r0, r4, #1
cmp r0, #0x62
bhi _080A347C
strh r4, [r5, #0x14]
adds r0, r4, #0
bl m4aSongNumStart
b _080A33C4
_080A33B6:
subs r0, r4, #1
cmp r0, #0x62
bhi _080A347C
strh r4, [r5, #0x14]
adds r0, r4, #0
bl m4aSongNumStartOrContinue
_080A33C4:
adds r0, r4, #0
bl sub_080A35A0
b _080A347C
_080A33CC:
ldr r2, _080A33EC @ =gUnk_08A11C3C
ldr r1, _080A33F0 @ =gUnk_08A11DBC
ldrh r0, [r5, #0x14]
lsls r0, r0, #3
adds r0, r0, r1
ldrh r1, [r0, #4]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldr r0, [r0]
adds r1, r4, #0
bl m4aMPlayTempoControl
b _080A347C
.align 2, 0
_080A33EC: .4byte gUnk_08A11C3C
_080A33F0: .4byte gUnk_08A11DBC
_080A33F4:
bl m4aMPlayAllStop
bl m4aSoundVSyncOff
b _080A347C
_080A33FE:
ldrh r0, [r5, #0x14]
cmp r0, #0
beq _080A347C
bl m4aSongNumStop
b _080A347C
_080A340A:
bl m4aSoundVSyncOn
_080A340E:
ldrh r0, [r5, #0x14]
cmp r0, #0
beq _080A347C
bl m4aSongNumStartOrContinue
_080A3418:
ldrh r0, [r5, #0x14]
bl sub_080A353C
b _080A347C
_080A3420:
subs r0, r4, #1
cmp r0, #0x62
bhi _080A347C
strh r4, [r5, #0x14]
adds r0, r4, #0
bl m4aSongNumStartOrContinue
bl sub_080A35C8
adds r0, r4, #0
bl sub_080A353C
b _080A347C
_080A343A:
strh r2, [r5, #0x10]
b _080A347C
_080A343E:
strh r2, [r5, #0x10]
movs r0, #1
strb r0, [r5, #2]
b _080A347C
_080A3446:
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r5, #0x10]
b _080A347C
_080A344E:
bl sub_080A35C8
b _080A347C
_080A3454:
strh r2, [r5, #0x14]
b _080A347C
_080A3458:
cmp r4, #0
beq _080A347C
subs r0, r4, #1
cmp r0, #0x62
bhi _080A3470
strh r4, [r5, #0x14]
adds r0, r4, #0
bl m4aSongNumStart
bl sub_080A35C8
b _080A3476
_080A3470:
adds r0, r4, #0
bl m4aSongNumStart
_080A3476:
adds r0, r4, #0
bl sub_080A353C
_080A347C:
pop {r4, r5, pc}
.align 2, 0