.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start MidiKeyToFreq MidiKeyToFreq: @ 0x080AFE9C push {r4, r5, r6, r7, lr} mov ip, r0 lsls r1, r1, #0x18 lsrs r6, r1, #0x18 lsls r7, r2, #0x18 cmp r6, #0xb2 bls _080AFEB0 movs r6, #0xb2 movs r7, #0xff lsls r7, r7, #0x18 _080AFEB0: ldr r3, _080AFEF8 @ =gUnk_089FC754 adds r0, r6, r3 ldrb r5, [r0] ldr r4, _080AFEFC @ =gUnk_089FC808 movs r2, #0xf adds r0, r5, #0 ands r0, r2 lsls r0, r0, #2 adds r0, r0, r4 lsrs r1, r5, #4 ldr r5, [r0] lsrs r5, r1 adds r0, r6, #1 adds r0, r0, r3 ldrb r1, [r0] adds r0, r1, #0 ands r0, r2 lsls r0, r0, #2 adds r0, r0, r4 lsrs r1, r1, #4 ldr r0, [r0] lsrs r0, r1 mov r1, ip ldr r4, [r1, #4] subs r0, r0, r5 adds r1, r7, #0 bl umul3232H32 adds r1, r0, #0 adds r1, r5, r1 adds r0, r4, #0 bl umul3232H32 pop {r4, r5, r6, r7} pop {r1} bx r1 .align 2, 0 _080AFEF8: .4byte gUnk_089FC754 _080AFEFC: .4byte gUnk_089FC808 thumb_func_start nullsub_543 nullsub_543: @ 0x080AFF00 bx lr .align 2, 0 thumb_func_start MPlayContinue MPlayContinue: @ 0x080AFF04 push {lr} adds r2, r0, #0 ldr r3, [r2, #0x34] ldr r0, _080AFF1C @ =0x68736D53 cmp r3, r0 bne _080AFF18 ldr r0, [r2, #4] ldr r1, _080AFF20 @ =0x7FFFFFFF ands r0, r1 str r0, [r2, #4] _080AFF18: pop {r0} bx r0 .align 2, 0 _080AFF1C: .4byte 0x68736D53 _080AFF20: .4byte 0x7FFFFFFF thumb_func_start MPlayFadeOut MPlayFadeOut: @ 0x080AFF24 push {lr} adds r2, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 ldr r3, [r2, #0x34] ldr r0, _080AFF44 @ =0x68736D53 cmp r3, r0 bne _080AFF3E strh r1, [r2, #0x26] strh r1, [r2, #0x24] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r2, #0x28] _080AFF3E: pop {r0} bx r0 .align 2, 0 _080AFF44: .4byte 0x68736D53 thumb_func_start m4aSoundInit m4aSoundInit: @ 0x080AFF48 push {r4, r5, r6, lr} ldr r0, _080AFF9C @ =SoundMainRAM movs r1, #2 rsbs r1, r1, #0 ands r0, r1 ldr r1, _080AFFA0 @ =gUnk_0300404C ldr r2, _080AFFA4 @ =0x040000E0 bl CpuSet ldr r0, _080AFFA8 @ =gUnk_030043D0 bl SoundInit ldr r0, _080AFFAC @ =gUnk_03004DE0 bl MPlayExtender ldr r0, _080AFFB0 @ =0x0095F800 bl m4aSoundMode ldr r0, _080AFFB4 @ =0x00000020 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0 beq _080AFF96 ldr r5, _080AFFB8 @ =gUnk_08A11C3C adds r6, r0, #0 _080AFF7A: ldr r4, [r5] ldr r1, [r5, #4] ldrb r2, [r5, #8] adds r0, r4, #0 bl MPlayOpen ldrh r0, [r5, #0xa] strb r0, [r4, #0xb] ldr r0, _080AFFBC @ =gUnk_030055E0 str r0, [r4, #0x18] adds r5, #0xc subs r6, #1 cmp r6, #0 bne _080AFF7A _080AFF96: pop {r4, r5, r6} pop {r0} bx r0 .align 2, 0 _080AFF9C: .4byte SoundMainRAM _080AFFA0: .4byte gUnk_0300404C _080AFFA4: .4byte 0x040000E0 _080AFFA8: .4byte gUnk_030043D0 _080AFFAC: .4byte gUnk_03004DE0 _080AFFB0: .4byte 0x0095F800 _080AFFB4: .4byte 0x00000020 _080AFFB8: .4byte gUnk_08A11C3C _080AFFBC: .4byte gUnk_030055E0 thumb_func_start m4aSoundMain m4aSoundMain: @ 0x080AFFC0 push {lr} bl SoundMain pop {r0} bx r0 .align 2, 0 thumb_func_start m4aSongNumStart m4aSongNumStart: @ 0x080AFFCC push {lr} lsls r0, r0, #0x10 ldr r3, _080AFFF0 @ =gUnk_08A11C3C ldr r1, _080AFFF4 @ =gUnk_08A11DBC lsrs r0, r0, #0xd adds r0, r0, r1 ldrh r2, [r0, #4] lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r3 ldr r2, [r1] ldr r1, [r0] adds r0, r2, #0 bl MPlayStart pop {r0} bx r0 .align 2, 0 _080AFFF0: .4byte gUnk_08A11C3C _080AFFF4: .4byte gUnk_08A11DBC thumb_func_start m4aSongNumStartOrChange m4aSongNumStartOrChange: @ 0x080AFFF8 push {lr} lsls r0, r0, #0x10 ldr r3, _080B0024 @ =gUnk_08A11C3C ldr r1, _080B0028 @ =gUnk_08A11DBC lsrs r0, r0, #0xd adds r0, r0, r1 ldrh r2, [r0, #4] lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r3 ldr r1, [r1] ldr r3, [r1] ldr r2, [r0] cmp r3, r2 beq _080B002C adds r0, r1, #0 adds r1, r2, #0 bl MPlayStart b _080B0040 .align 2, 0 _080B0024: .4byte gUnk_08A11C3C _080B0028: .4byte gUnk_08A11DBC _080B002C: ldr r2, [r1, #4] ldrh r0, [r1, #4] cmp r0, #0 beq _080B0038 cmp r2, #0 bge _080B0040 _080B0038: adds r0, r1, #0 adds r1, r3, #0 bl MPlayStart _080B0040: pop {r0} bx r0 thumb_func_start m4aSongNumStartOrContinue m4aSongNumStartOrContinue: @ 0x080B0044 push {lr} lsls r0, r0, #0x10 ldr r3, _080B0070 @ =gUnk_08A11C3C ldr r1, _080B0074 @ =gUnk_08A11DBC lsrs r0, r0, #0xd adds r0, r0, r1 ldrh r2, [r0, #4] lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r3 ldr r1, [r1] ldr r3, [r1] ldr r2, [r0] cmp r3, r2 beq _080B0078 adds r0, r1, #0 adds r1, r2, #0 bl MPlayStart b _080B0094 .align 2, 0 _080B0070: .4byte gUnk_08A11C3C _080B0074: .4byte gUnk_08A11DBC _080B0078: ldr r2, [r1, #4] ldrh r0, [r1, #4] cmp r0, #0 bne _080B008A adds r0, r1, #0 adds r1, r3, #0 bl MPlayStart b _080B0094 _080B008A: cmp r2, #0 bge _080B0094 adds r0, r1, #0 bl MPlayContinue _080B0094: pop {r0} bx r0 thumb_func_start m4aSongNumStop m4aSongNumStop: @ 0x080B0098 push {lr} lsls r0, r0, #0x10 ldr r3, _080B00C4 @ =gUnk_08A11C3C ldr r1, _080B00C8 @ =gUnk_08A11DBC lsrs r0, r0, #0xd adds r0, r0, r1 ldrh r2, [r0, #4] lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r3 ldr r2, [r1] ldr r1, [r2] ldr r0, [r0] cmp r1, r0 bne _080B00BE adds r0, r2, #0 bl MPlayStop _080B00BE: pop {r0} bx r0 .align 2, 0 _080B00C4: .4byte gUnk_08A11C3C _080B00C8: .4byte gUnk_08A11DBC thumb_func_start m4aSongNumContinue m4aSongNumContinue: @ 0x080B00CC push {lr} lsls r0, r0, #0x10 ldr r3, _080B00F8 @ =gUnk_08A11C3C ldr r1, _080B00FC @ =gUnk_08A11DBC lsrs r0, r0, #0xd adds r0, r0, r1 ldrh r2, [r0, #4] lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r3 ldr r2, [r1] ldr r1, [r2] ldr r0, [r0] cmp r1, r0 bne _080B00F2 adds r0, r2, #0 bl MPlayContinue _080B00F2: pop {r0} bx r0 .align 2, 0 _080B00F8: .4byte gUnk_08A11C3C _080B00FC: .4byte gUnk_08A11DBC thumb_func_start m4aMPlayAllStop m4aMPlayAllStop: @ 0x080B0100 push {r4, r5, lr} ldr r0, _080B0124 @ =0x00000020 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0 beq _080B011E ldr r5, _080B0128 @ =gUnk_08A11C3C adds r4, r0, #0 _080B0110: ldr r0, [r5] bl MPlayStop adds r5, #0xc subs r4, #1 cmp r4, #0 bne _080B0110 _080B011E: pop {r4, r5} pop {r0} bx r0 .align 2, 0 _080B0124: .4byte 0x00000020 _080B0128: .4byte gUnk_08A11C3C thumb_func_start m4aMPlayContinue m4aMPlayContinue: @ 0x080B012C push {lr} bl MPlayContinue pop {r0} bx r0 .align 2, 0 thumb_func_start m4aMPlayAllContinue m4aMPlayAllContinue: @ 0x080B0138 push {r4, r5, lr} ldr r0, _080B015C @ =0x00000020 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0 beq _080B0156 ldr r5, _080B0160 @ =gUnk_08A11C3C adds r4, r0, #0 _080B0148: ldr r0, [r5] bl MPlayContinue adds r5, #0xc subs r4, #1 cmp r4, #0 bne _080B0148 _080B0156: pop {r4, r5} pop {r0} bx r0 .align 2, 0 _080B015C: .4byte 0x00000020 _080B0160: .4byte gUnk_08A11C3C thumb_func_start m4aMPlayFadeOut m4aMPlayFadeOut: @ 0x080B0164 push {lr} lsls r1, r1, #0x10 lsrs r1, r1, #0x10 bl MPlayFadeOut pop {r0} bx r0 .align 2, 0 thumb_func_start m4aMPlayFadeOutTemporarily m4aMPlayFadeOutTemporarily: @ 0x080B0174 push {lr} adds r2, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 ldr r3, [r2, #0x34] ldr r0, _080B0190 @ =0x68736D53 cmp r3, r0 bne _080B018C strh r1, [r2, #0x26] strh r1, [r2, #0x24] ldr r0, _080B0194 @ =0x00000101 strh r0, [r2, #0x28] _080B018C: pop {r0} bx r0 .align 2, 0 _080B0190: .4byte 0x68736D53 _080B0194: .4byte 0x00000101 thumb_func_start m4aMPlayFadeIn m4aMPlayFadeIn: @ 0x080B0198 push {lr} adds r2, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 ldr r3, [r2, #0x34] ldr r0, _080B01BC @ =0x68736D53 cmp r3, r0 bne _080B01B8 strh r1, [r2, #0x26] strh r1, [r2, #0x24] movs r0, #2 strh r0, [r2, #0x28] ldr r0, [r2, #4] ldr r1, _080B01C0 @ =0x7FFFFFFF ands r0, r1 str r0, [r2, #4] _080B01B8: pop {r0} bx r0 .align 2, 0 _080B01BC: .4byte 0x68736D53 _080B01C0: .4byte 0x7FFFFFFF thumb_func_start m4aMPlayImmInit m4aMPlayImmInit: @ 0x080B01C4 push {r4, r5, r6, r7, lr} sub sp, #4 adds r7, r0, #0 ldr r1, [r7, #0x34] ldr r0, _080B0228 @ =0x68736D53 cmp r1, r0 bne _080B021E adds r0, r1, #1 str r0, [r7, #0x34] ldrb r5, [r7, #8] ldr r4, [r7, #0x2c] cmp r5, #0 ble _080B021A movs r2, #0x80 _080B01E0: ldrb r1, [r4] adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _080B0212 movs r6, #0x40 adds r0, r6, #0 ands r0, r1 cmp r0, #0 beq _080B0212 adds r0, r4, #0 str r2, [sp] bl Clear64byte ldr r2, [sp] strb r2, [r4] movs r0, #2 strb r0, [r4, #0xf] strb r6, [r4, #0x13] movs r0, #0x16 strb r0, [r4, #0x19] adds r1, r4, #0 adds r1, #0x24 movs r0, #1 strb r0, [r1] _080B0212: subs r5, #1 adds r4, #0x50 cmp r5, #0 bgt _080B01E0 _080B021A: ldr r0, _080B0228 @ =0x68736D53 str r0, [r7, #0x34] _080B021E: add sp, #4 pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _080B0228: .4byte 0x68736D53 thumb_func_start MPlayExtender MPlayExtender: @ 0x080B022C push {r4, r5, r6, lr} sub sp, #4 adds r5, r0, #0 ldr r1, _080B02F4 @ =0x04000084 movs r0, #0x8f strh r0, [r1] ldr r3, _080B02F8 @ =0x04000080 movs r2, #0 strh r2, [r3] ldr r0, _080B02FC @ =0x04000063 movs r1, #8 strb r1, [r0] adds r0, #6 strb r1, [r0] adds r0, #0x10 strb r1, [r0] subs r0, #0x14 movs r1, #0x80 strb r1, [r0] adds r0, #8 strb r1, [r0] adds r0, #0x10 strb r1, [r0] subs r0, #0xd strb r2, [r0] movs r0, #0x77 strb r0, [r3] ldr r0, _080B0300 @ =0x03007FF0 ldr r4, [r0] ldr r6, [r4] ldr r0, _080B0304 @ =0x68736D53 cmp r6, r0 bne _080B02EC adds r0, r6, #1 str r0, [r4] ldr r1, _080B0308 @ =gUnk_03004D50 ldr r0, _080B030C @ =ply_memacc str r0, [r1, #0x20] ldr r0, _080B0310 @ =ply_lfos str r0, [r1, #0x44] ldr r0, _080B0314 @ =ply_mod str r0, [r1, #0x4c] ldr r0, _080B0318 @ =ply_xcmd str r0, [r1, #0x70] ldr r0, _080B031C @ =ply_endtie str r0, [r1, #0x74] ldr r0, _080B0320 @ =SampleFreqSet str r0, [r1, #0x78] ldr r0, _080B0324 @ =TrackStop str r0, [r1, #0x7c] adds r2, r1, #0 adds r2, #0x80 ldr r0, _080B0328 @ =FadeOutBody str r0, [r2] adds r1, #0x84 ldr r0, _080B032C @ =TrkVolPitSet str r0, [r1] str r5, [r4, #0x1c] ldr r0, _080B0330 @ =CgbSound str r0, [r4, #0x28] ldr r0, _080B0334 @ =CgbOscOff str r0, [r4, #0x2c] ldr r0, _080B0338 @ =MidiKeyToCgbFreq str r0, [r4, #0x30] ldr r0, _080B033C @ =0x00000000 movs r1, #0 strb r0, [r4, #0xc] str r1, [sp] ldr r2, _080B0340 @ =0x05000040 mov r0, sp adds r1, r5, #0 bl CpuSet movs r0, #1 strb r0, [r5, #1] movs r0, #0x11 strb r0, [r5, #0x1c] adds r1, r5, #0 adds r1, #0x41 movs r0, #2 strb r0, [r1] adds r1, #0x1b movs r0, #0x22 strb r0, [r1] adds r1, #0x25 movs r0, #3 strb r0, [r1] adds r1, #0x1b movs r0, #0x44 strb r0, [r1] adds r1, #0x24 movs r0, #4 strb r0, [r1, #1] movs r0, #0x88 strb r0, [r1, #0x1c] str r6, [r4] _080B02EC: add sp, #4 pop {r4, r5, r6} pop {r0} bx r0 .align 2, 0 _080B02F4: .4byte 0x04000084 _080B02F8: .4byte 0x04000080 _080B02FC: .4byte 0x04000063 _080B0300: .4byte 0x03007FF0 _080B0304: .4byte 0x68736D53 _080B0308: .4byte gUnk_03004D50 _080B030C: .4byte ply_memacc _080B0310: .4byte ply_lfos _080B0314: .4byte ply_mod _080B0318: .4byte ply_xcmd _080B031C: .4byte ply_endtie _080B0320: .4byte SampleFreqSet _080B0324: .4byte TrackStop _080B0328: .4byte FadeOutBody _080B032C: .4byte TrkVolPitSet _080B0330: .4byte CgbSound _080B0334: .4byte CgbOscOff _080B0338: .4byte MidiKeyToCgbFreq _080B033C: .4byte 0x00000000 _080B0340: .4byte 0x05000040 thumb_func_start MusicPlayerJumpTableCopy MusicPlayerJumpTableCopy: @ 0x080B0344 svc #0x2a bx lr thumb_func_start ClearChain ClearChain: @ 0x080B0348 push {lr} ldr r1, _080B0358 @ =gUnk_03004DD8 ldr r1, [r1] bl _call_via_r1 pop {r0} bx r0 .align 2, 0 _080B0358: .4byte gUnk_03004DD8 thumb_func_start Clear64byte Clear64byte: @ 0x080B035C push {lr} ldr r1, _080B036C @ =gUnk_03004DDC ldr r1, [r1] bl _call_via_r1 pop {r0} bx r0 .align 2, 0 _080B036C: .4byte gUnk_03004DDC thumb_func_start SoundInit SoundInit: @ 0x080B0370 push {r4, r5, lr} sub sp, #4 adds r5, r0, #0 movs r3, #0 str r3, [r5] ldr r2, _080B0408 @ =0x040000C4 ldr r0, [r2] movs r1, #0x80 lsls r1, r1, #0x12 ands r0, r1 cmp r0, #0 beq _080B038C ldr r0, _080B040C @ =0x84400004 str r0, [r2] _080B038C: ldr r1, _080B0410 @ =0x040000C6 movs r2, #0x80 lsls r2, r2, #3 adds r0, r2, #0 strh r0, [r1] subs r1, #0x42 movs r0, #0x8f strh r0, [r1] subs r1, #2 ldr r2, _080B0414 @ =0x00000B0E adds r0, r2, #0 strh r0, [r1] ldr r2, _080B0418 @ =0x04000089 ldrb r1, [r2] movs r0, #0x3f ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r2] ldr r1, _080B041C @ =0x040000BC movs r2, #0xd4 lsls r2, r2, #2 adds r0, r5, r2 str r0, [r1] adds r1, #4 ldr r0, _080B0420 @ =0x040000A0 str r0, [r1] ldr r0, _080B0424 @ =0x03007FF0 str r5, [r0] str r3, [sp] ldr r2, _080B0428 @ =0x05000260 mov r0, sp adds r1, r5, #0 bl CpuSet movs r0, #8 strb r0, [r5, #6] movs r0, #0xf strb r0, [r5, #7] ldr r0, _080B042C @ =ply_note str r0, [r5, #0x38] ldr r0, _080B0430 @ =nullsub_544 str r0, [r5, #0x28] str r0, [r5, #0x2c] str r0, [r5, #0x30] str r0, [r5, #0x3c] ldr r4, _080B0434 @ =gUnk_03004D50 adds r0, r4, #0 bl MPlayJumpTableCopy str r4, [r5, #0x34] movs r0, #0x80 lsls r0, r0, #0xb bl SampleFreqSet ldr r0, _080B0438 @ =0x68736D53 str r0, [r5] add sp, #4 pop {r4, r5} pop {r0} bx r0 .align 2, 0 _080B0408: .4byte 0x040000C4 _080B040C: .4byte 0x84400004 _080B0410: .4byte 0x040000C6 _080B0414: .4byte 0x00000B0E _080B0418: .4byte 0x04000089 _080B041C: .4byte 0x040000BC _080B0420: .4byte 0x040000A0 _080B0424: .4byte 0x03007FF0 _080B0428: .4byte 0x05000260 _080B042C: .4byte ply_note _080B0430: .4byte nullsub_544 _080B0434: .4byte gUnk_03004D50 _080B0438: .4byte 0x68736D53 thumb_func_start SampleFreqSet SampleFreqSet: @ 0x080B043C push {r4, r5, lr} adds r4, r0, #0 bl m4aSoundVSyncOff ldr r0, _080B0494 @ =0x03007FF0 ldr r5, [r0] movs r0, #0xf0 lsls r0, r0, #0xc ands r0, r4 lsrs r4, r0, #0x10 strb r4, [r5, #8] ldr r1, _080B0498 @ =gUnk_089FC838 subs r0, r4, #1 lsls r0, r0, #1 adds r0, r0, r1 ldrh r4, [r0] str r4, [r5, #0x10] movs r0, #0xc6 lsls r0, r0, #3 adds r1, r4, #0 bl __divsi3 strb r0, [r5, #0xb] ldr r0, _080B049C @ =0x00091D1B muls r0, r4, r0 ldr r1, _080B04A0 @ =0x00001388 adds r0, r0, r1 ldr r1, _080B04A4 @ =0x00002710 bl __divsi3 adds r1, r0, #0 str r1, [r5, #0x14] movs r0, #0x80 lsls r0, r0, #0x11 bl __divsi3 adds r0, #1 asrs r0, r0, #1 str r0, [r5, #0x18] bl m4aSoundVSyncOn pop {r4, r5} pop {r0} bx r0 .align 2, 0 _080B0494: .4byte 0x03007FF0 _080B0498: .4byte gUnk_089FC838 _080B049C: .4byte 0x00091D1B _080B04A0: .4byte 0x00001388 _080B04A4: .4byte 0x00002710 thumb_func_start m4aSoundMode m4aSoundMode: @ 0x080B04A8 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _080B0530 @ =0x03007FF0 ldr r4, [r0] ldr r1, [r4] ldr r0, _080B0534 @ =0x68736D53 cmp r1, r0 bne _080B052A adds r0, r1, #1 str r0, [r4] movs r3, #0xff ands r3, r5 cmp r3, #0 beq _080B04CA movs r0, #0x7f ands r3, r0 strb r3, [r4, #5] _080B04CA: movs r3, #0xf0 lsls r3, r3, #4 ands r3, r5 cmp r3, #0 beq _080B04EA lsrs r0, r3, #8 strb r0, [r4, #6] movs r3, #0xc adds r0, r4, #0 adds r0, #0x50 movs r1, #0 _080B04E0: strb r1, [r0] subs r3, #1 adds r0, #0x40 cmp r3, #0 bne _080B04E0 _080B04EA: movs r3, #0xf0 lsls r3, r3, #8 ands r3, r5 cmp r3, #0 beq _080B04F8 lsrs r0, r3, #0xc strb r0, [r4, #7] _080B04F8: movs r3, #0xb0 lsls r3, r3, #0x10 ands r3, r5 cmp r3, #0 beq _080B0516 movs r0, #0xc0 lsls r0, r0, #0xe ands r0, r3 lsrs r3, r0, #0xe ldr r2, _080B0538 @ =0x04000089 ldrb r1, [r2] movs r0, #0x3f ands r0, r1 orrs r0, r3 strb r0, [r2] _080B0516: movs r3, #0xf0 lsls r3, r3, #0xc ands r3, r5 cmp r3, #0 beq _080B0526 adds r0, r3, #0 bl SampleFreqSet _080B0526: ldr r0, _080B0534 @ =0x68736D53 str r0, [r4] _080B052A: pop {r4, r5} pop {r0} bx r0 .align 2, 0 _080B0530: .4byte 0x03007FF0 _080B0534: .4byte 0x68736D53 _080B0538: .4byte 0x04000089 thumb_func_start SoundClear SoundClear: @ 0x080B053C push {r4, r5, r6, r7, lr} ldr r0, _080B0588 @ =0x03007FF0 ldr r6, [r0] ldr r1, [r6] ldr r0, _080B058C @ =0x68736D53 cmp r1, r0 bne _080B0582 adds r0, r1, #1 str r0, [r6] movs r5, #0xc adds r4, r6, #0 adds r4, #0x50 movs r0, #0 _080B0556: strb r0, [r4] subs r5, #1 adds r4, #0x40 cmp r5, #0 bgt _080B0556 ldr r4, [r6, #0x1c] cmp r4, #0 beq _080B057E movs r5, #1 movs r7, #0 _080B056A: lsls r0, r5, #0x18 lsrs r0, r0, #0x18 ldr r1, [r6, #0x2c] bl _call_via_r1 strb r7, [r4] adds r5, #1 adds r4, #0x40 cmp r5, #4 ble _080B056A _080B057E: ldr r0, _080B058C @ =0x68736D53 str r0, [r6] _080B0582: pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _080B0588: .4byte 0x03007FF0 _080B058C: .4byte 0x68736D53 thumb_func_start m4aSoundVSyncOff m4aSoundVSyncOff: @ 0x080B0590 push {lr} sub sp, #4 ldr r0, _080B05E4 @ =0x03007FF0 ldr r2, [r0] ldr r1, [r2] ldr r3, _080B05E8 @ =0x978C92AD adds r0, r1, r3 cmp r0, #1 bhi _080B05DC adds r0, r1, #0 adds r0, #0xa str r0, [r2] ldr r1, _080B05EC @ =0x04000102 movs r0, #0 strh r0, [r1] ldr r3, _080B05F0 @ =0x040000C4 ldr r0, [r3] movs r1, #0x80 lsls r1, r1, #0x12 ands r0, r1 cmp r0, #0 beq _080B05C0 ldr r0, _080B05F4 @ =0x84400004 str r0, [r3] _080B05C0: ldr r1, _080B05F8 @ =0x040000C6 movs r3, #0x80 lsls r3, r3, #3 adds r0, r3, #0 strh r0, [r1] movs r0, #0 str r0, [sp] movs r0, #0xd4 lsls r0, r0, #2 adds r1, r2, r0 ldr r2, _080B05FC @ =0x0500018C mov r0, sp bl CpuSet _080B05DC: add sp, #4 pop {r0} bx r0 .align 2, 0 _080B05E4: .4byte 0x03007FF0 _080B05E8: .4byte 0x978C92AD _080B05EC: .4byte 0x04000102 _080B05F0: .4byte 0x040000C4 _080B05F4: .4byte 0x84400004 _080B05F8: .4byte 0x040000C6 _080B05FC: .4byte 0x0500018C thumb_func_start m4aSoundVSyncOn m4aSoundVSyncOn: @ 0x080B0600 push {r4, lr} ldr r0, _080B0658 @ =0x03007FF0 ldr r2, [r0] ldr r3, [r2] ldr r0, _080B065C @ =0x68736D53 cmp r3, r0 beq _080B0650 ldr r1, _080B0660 @ =0x040000C6 movs r4, #0xb6 lsls r4, r4, #8 adds r0, r4, #0 strh r0, [r1] ldrb r0, [r2, #4] movs r0, #0 strb r0, [r2, #4] adds r0, r3, #0 subs r0, #0xa str r0, [r2] ldr r3, _080B0664 @ =0x04000006 ldrb r0, [r3] ldr r1, [r2, #0x10] cmp r0, #0x9f bne _080B0636 adds r2, r3, #0 _080B0630: ldrb r0, [r2] cmp r0, #0x9f beq _080B0630 _080B0636: ldr r2, _080B0664 @ =0x04000006 _080B0638: ldrb r0, [r2] cmp r0, #0x9f bne _080B0638 ldr r4, _080B0668 @ =0x04000100 ldr r0, _080B066C @ =0x00044940 bl __divsi3 rsbs r0, r0, #0 strh r0, [r4] ldr r1, _080B0670 @ =0x04000102 movs r0, #0x80 strh r0, [r1] _080B0650: pop {r4} pop {r0} bx r0 .align 2, 0 _080B0658: .4byte 0x03007FF0 _080B065C: .4byte 0x68736D53 _080B0660: .4byte 0x040000C6 _080B0664: .4byte 0x04000006 _080B0668: .4byte 0x04000100 _080B066C: .4byte 0x00044940 _080B0670: .4byte 0x04000102 thumb_func_start m4aSoundVSync m4aSoundVSync: @ 0x080B0674 push {lr} ldr r0, _080B06C4 @ =0x03007FF0 ldr r2, [r0] ldr r0, [r2] ldr r1, _080B06C8 @ =0x978C92AD adds r0, r0, r1 cmp r0, #1 bhi _080B06BE ldrb r0, [r2, #4] subs r0, #1 ldrb r1, [r2, #4] strb r0, [r2, #4] ldrb r0, [r2, #4] lsls r0, r0, #0x18 cmp r0, #0 bgt _080B06BE ldrb r0, [r2, #0xb] ldrb r1, [r2, #4] strb r0, [r2, #4] ldr r2, _080B06CC @ =0x040000C4 ldr r0, [r2] movs r1, #0x80 lsls r1, r1, #0x12 ands r0, r1 cmp r0, #0 beq _080B06AC ldr r0, _080B06D0 @ =0x84400004 str r0, [r2] _080B06AC: ldr r0, _080B06D4 @ =0x040000C6 movs r2, #0x80 lsls r2, r2, #3 adds r1, r2, #0 strh r1, [r0] movs r2, #0xb6 lsls r2, r2, #8 adds r1, r2, #0 strh r1, [r0] _080B06BE: pop {r0} bx r0 .align 2, 0 _080B06C4: .4byte 0x03007FF0 _080B06C8: .4byte 0x978C92AD _080B06CC: .4byte 0x040000C4 _080B06D0: .4byte 0x84400004 _080B06D4: .4byte 0x040000C6 thumb_func_start MPlayOpen MPlayOpen: @ 0x080B06D8 push {r4, r5, r6, r7, lr} adds r7, r0, #0 adds r6, r1, #0 lsls r2, r2, #0x18 lsrs r4, r2, #0x18 cmp r4, #0 beq _080B073C cmp r4, #0x10 bls _080B06EC movs r4, #0x10 _080B06EC: ldr r0, _080B0744 @ =0x03007FF0 ldr r5, [r0] ldr r1, [r5] ldr r0, _080B0748 @ =0x68736D53 cmp r1, r0 bne _080B073C adds r0, r1, #1 str r0, [r5] adds r0, r7, #0 bl Clear64byte str r6, [r7, #0x2c] strb r4, [r7, #8] movs r0, #0x80 lsls r0, r0, #0x18 str r0, [r7, #4] cmp r4, #0 beq _080B0720 movs r1, #0 _080B0712: strb r1, [r6] subs r0, r4, #1 lsls r0, r0, #0x18 lsrs r4, r0, #0x18 adds r6, #0x50 cmp r4, #0 bne _080B0712 _080B0720: ldr r0, [r5, #0x20] cmp r0, #0 beq _080B0730 str r0, [r7, #0x38] ldr r0, [r5, #0x24] str r0, [r7, #0x3c] movs r0, #0 str r0, [r5, #0x20] _080B0730: str r7, [r5, #0x24] ldr r0, _080B074C @ =MPlayMain str r0, [r5, #0x20] ldr r0, _080B0748 @ =0x68736D53 str r0, [r5] str r0, [r7, #0x34] _080B073C: pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _080B0744: .4byte 0x03007FF0 _080B0748: .4byte 0x68736D53 _080B074C: .4byte MPlayMain thumb_func_start MPlayStart MPlayStart: @ 0x080B0750 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 adds r7, r1, #0 ldr r1, [r5, #0x34] ldr r0, _080B0830 @ =0x68736D53 cmp r1, r0 bne _080B0824 adds r0, r1, #1 str r0, [r5, #0x34] ldrb r0, [r5, #0xb] ldrb r2, [r7, #2] cmp r0, #0 beq _080B0796 ldr r0, [r5] cmp r0, #0 beq _080B0780 ldr r0, [r5, #0x2c] ldrb r1, [r0] movs r0, #0x40 ands r0, r1 cmp r0, #0 bne _080B078C _080B0780: ldr r1, [r5, #4] ldrh r0, [r5, #4] cmp r0, #0 beq _080B0796 cmp r1, #0 blt _080B0796 _080B078C: ldrb r0, [r7, #2] ldrb r1, [r5, #9] adds r2, r0, #0 cmp r1, r2 bhi _080B0820 _080B0796: movs r1, #0 str r1, [r5, #4] str r7, [r5] ldr r0, [r7, #4] str r0, [r5, #0x30] strb r2, [r5, #9] str r1, [r5, #0xc] movs r0, #0x96 strh r0, [r5, #0x1c] strh r0, [r5, #0x20] adds r0, #0x6a strh r0, [r5, #0x1e] strh r1, [r5, #0x22] strh r1, [r5, #0x24] movs r6, #0 ldr r4, [r5, #0x2c] ldrb r0, [r7] cmp r6, r0 bge _080B07F0 ldrb r0, [r5, #8] cmp r6, r0 bge _080B0810 mov r8, r6 _080B07C4: adds r0, r5, #0 adds r1, r4, #0 bl TrackStop movs r0, #0xc0 strb r0, [r4] mov r0, r8 str r0, [r4, #0x20] lsls r1, r6, #2 adds r0, r7, #0 adds r0, #8 adds r0, r0, r1 ldr r0, [r0] str r0, [r4, #0x40] adds r6, #1 adds r4, #0x50 ldrb r0, [r7] cmp r6, r0 bge _080B07F0 ldrb r0, [r5, #8] cmp r6, r0 blt _080B07C4 _080B07F0: ldrb r0, [r5, #8] cmp r6, r0 bge _080B0810 movs r0, #0 mov r8, r0 _080B07FA: adds r0, r5, #0 adds r1, r4, #0 bl TrackStop mov r0, r8 strb r0, [r4] adds r6, #1 adds r4, #0x50 ldrb r0, [r5, #8] cmp r6, r0 blt _080B07FA _080B0810: ldrb r1, [r7, #3] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080B0820 ldrb r0, [r7, #3] bl m4aSoundMode _080B0820: ldr r0, _080B0830 @ =0x68736D53 str r0, [r5, #0x34] _080B0824: pop {r3} mov r8, r3 pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _080B0830: .4byte 0x68736D53 thumb_func_start MPlayStop MPlayStop: @ 0x080B0834 push {r4, r5, r6, lr} adds r6, r0, #0 ldr r1, [r6, #0x34] ldr r0, _080B0870 @ =0x68736D53 cmp r1, r0 bne _080B086A adds r0, r1, #1 str r0, [r6, #0x34] ldr r0, [r6, #4] movs r1, #0x80 lsls r1, r1, #0x18 orrs r0, r1 str r0, [r6, #4] ldrb r4, [r6, #8] ldr r5, [r6, #0x2c] cmp r4, #0 ble _080B0866 _080B0856: adds r0, r6, #0 adds r1, r5, #0 bl TrackStop subs r4, #1 adds r5, #0x50 cmp r4, #0 bgt _080B0856 _080B0866: ldr r0, _080B0870 @ =0x68736D53 str r0, [r6, #0x34] _080B086A: pop {r4, r5, r6} pop {r0} bx r0 .align 2, 0 _080B0870: .4byte 0x68736D53 thumb_func_start FadeOutBody FadeOutBody: @ 0x080B0874 push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldrh r1, [r6, #0x24] cmp r1, #0 beq _080B0936 ldrh r0, [r6, #0x26] subs r0, #1 strh r0, [r6, #0x26] ldr r3, _080B08B4 @ =0x0000FFFF adds r2, r3, #0 lsls r0, r0, #0x10 lsrs r3, r0, #0x10 cmp r3, #0 bne _080B0936 strh r1, [r6, #0x26] ldrh r1, [r6, #0x28] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080B08B8 adds r0, r1, #0 adds r0, #0x10 strh r0, [r6, #0x28] ands r0, r2 cmp r0, #0xff bls _080B090A movs r0, #0x80 lsls r0, r0, #1 strh r0, [r6, #0x28] strh r3, [r6, #0x24] b _080B090A .align 2, 0 _080B08B4: .4byte 0x0000FFFF _080B08B8: adds r0, r1, #0 subs r0, #0x10 strh r0, [r6, #0x28] ands r0, r2 lsls r0, r0, #0x10 cmp r0, #0 bgt _080B090A ldrb r5, [r6, #8] ldr r4, [r6, #0x2c] cmp r5, #0 ble _080B08EA _080B08CE: adds r0, r6, #0 adds r1, r4, #0 bl TrackStop ldrh r0, [r6, #0x28] movs r1, #1 ands r1, r0 cmp r1, #0 bne _080B08E2 strb r1, [r4] _080B08E2: subs r5, #1 adds r4, #0x50 cmp r5, #0 bgt _080B08CE _080B08EA: ldrh r1, [r6, #0x28] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080B08FE ldr r0, [r6, #4] movs r1, #0x80 lsls r1, r1, #0x18 orrs r0, r1 b _080B0902 _080B08FE: movs r0, #0x80 lsls r0, r0, #0x18 _080B0902: str r0, [r6, #4] movs r0, #0 strh r0, [r6, #0x24] b _080B0936 _080B090A: ldrb r5, [r6, #8] ldr r4, [r6, #0x2c] cmp r5, #0 ble _080B0936 movs r3, #0x80 movs r7, #0 movs r2, #3 _080B0918: ldrb r1, [r4] adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _080B092E ldrh r0, [r6, #0x28] lsrs r0, r0, #2 strb r0, [r4, #0x13] adds r0, r1, #0 orrs r0, r2 strb r0, [r4] _080B092E: subs r5, #1 adds r4, #0x50 cmp r5, #0 bgt _080B0918 _080B0936: pop {r4, r5, r6, r7} pop {r0} bx r0 thumb_func_start TrkVolPitSet TrkVolPitSet: @ 0x080B093C push {r4, lr} adds r2, r1, #0 ldrb r1, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080B099E ldrb r0, [r2, #0x12] ldrb r1, [r2, #0x13] muls r0, r1, r0 lsrs r3, r0, #5 ldrb r4, [r2, #0x18] cmp r4, #1 bne _080B0962 movs r0, #0x16 ldrsb r0, [r2, r0] adds r0, #0x80 muls r0, r3, r0 lsrs r3, r0, #7 _080B0962: movs r0, #0x14 ldrsb r0, [r2, r0] lsls r0, r0, #1 movs r1, #0x15 ldrsb r1, [r2, r1] adds r1, r0, r1 cmp r4, #2 bne _080B0978 movs r0, #0x16 ldrsb r0, [r2, r0] adds r1, r1, r0 _080B0978: movs r0, #0x80 rsbs r0, r0, #0 cmp r1, r0 bge _080B0984 adds r1, r0, #0 b _080B098A _080B0984: cmp r1, #0x7f ble _080B098A movs r1, #0x7f _080B098A: adds r0, r1, #0 adds r0, #0x80 muls r0, r3, r0 lsrs r0, r0, #8 strb r0, [r2, #0x10] movs r0, #0x7f subs r0, r0, r1 muls r0, r3, r0 lsrs r0, r0, #8 strb r0, [r2, #0x11] _080B099E: ldrb r1, [r2] movs r0, #4 ands r0, r1 adds r3, r1, #0 cmp r0, #0 beq _080B09E2 movs r1, #0xe ldrsb r1, [r2, r1] ldrb r0, [r2, #0xf] muls r0, r1, r0 movs r1, #0xc ldrsb r1, [r2, r1] adds r1, r1, r0 lsls r1, r1, #2 movs r0, #0xa ldrsb r0, [r2, r0] lsls r0, r0, #8 adds r1, r1, r0 movs r0, #0xb ldrsb r0, [r2, r0] lsls r0, r0, #8 adds r1, r1, r0 ldrb r0, [r2, #0xd] adds r1, r1, r0 ldrb r0, [r2, #0x18] cmp r0, #0 bne _080B09DC movs r0, #0x16 ldrsb r0, [r2, r0] lsls r0, r0, #4 adds r1, r1, r0 _080B09DC: asrs r0, r1, #8 strb r0, [r2, #8] strb r1, [r2, #9] _080B09E2: movs r0, #0xfa ands r0, r3 strb r0, [r2] pop {r4} pop {r0} bx r0 .align 2, 0 thumb_func_start MidiKeyToCgbFreq MidiKeyToCgbFreq: @ 0x080B09F0 push {r4, r5, r6, r7, lr} lsls r0, r0, #0x18 lsrs r0, r0, #0x18 lsls r1, r1, #0x18 lsrs r5, r1, #0x18 lsls r2, r2, #0x18 lsrs r2, r2, #0x18 mov ip, r2 cmp r0, #4 bne _080B0A28 cmp r5, #0x14 bhi _080B0A0C movs r5, #0 b _080B0A1A _080B0A0C: adds r0, r5, #0 subs r0, #0x15 lsls r0, r0, #0x18 lsrs r5, r0, #0x18 cmp r5, #0x3b bls _080B0A1A movs r5, #0x3b _080B0A1A: ldr r0, _080B0A24 @ =gUnk_089FC8EC adds r0, r5, r0 ldrb r0, [r0] b _080B0A8A .align 2, 0 _080B0A24: .4byte gUnk_089FC8EC _080B0A28: cmp r5, #0x23 bhi _080B0A34 movs r0, #0 mov ip, r0 movs r5, #0 b _080B0A46 _080B0A34: adds r0, r5, #0 subs r0, #0x24 lsls r0, r0, #0x18 lsrs r5, r0, #0x18 cmp r5, #0x82 bls _080B0A46 movs r5, #0x82 movs r1, #0xff mov ip, r1 _080B0A46: ldr r3, _080B0A90 @ =gUnk_089FC850 adds r0, r5, r3 ldrb r6, [r0] ldr r4, _080B0A94 @ =gUnk_089FC8D4 movs r2, #0xf adds r0, r6, #0 ands r0, r2 lsls r0, r0, #1 adds r0, r0, r4 movs r7, #0 ldrsh r1, [r0, r7] asrs r0, r6, #4 adds r6, r1, #0 asrs r6, r0 adds r0, r5, #1 adds r0, r0, r3 ldrb r1, [r0] adds r0, r1, #0 ands r0, r2 lsls r0, r0, #1 adds r0, r0, r4 movs r2, #0 ldrsh r0, [r0, r2] asrs r1, r1, #4 asrs r0, r1 subs r0, r0, r6 mov r7, ip muls r7, r0, r7 adds r0, r7, #0 asrs r0, r0, #8 adds r0, r6, r0 movs r1, #0x80 lsls r1, r1, #4 adds r0, r0, r1 _080B0A8A: pop {r4, r5, r6, r7} pop {r1} bx r1 .align 2, 0 _080B0A90: .4byte gUnk_089FC850 _080B0A94: .4byte gUnk_089FC8D4 thumb_func_start CgbOscOff CgbOscOff: @ 0x080B0A98 push {lr} lsls r0, r0, #0x18 lsrs r0, r0, #0x18 adds r1, r0, #0 cmp r0, #2 beq _080B0AC4 cmp r0, #2 bgt _080B0AAE cmp r0, #1 beq _080B0AB4 b _080B0AD8 _080B0AAE: cmp r1, #3 beq _080B0ACC b _080B0AD8 _080B0AB4: ldr r1, _080B0AC0 @ =0x04000063 movs r0, #8 strb r0, [r1] adds r1, #2 b _080B0AE0 .align 2, 0 _080B0AC0: .4byte 0x04000063 _080B0AC4: ldr r1, _080B0AC8 @ =0x04000069 b _080B0ADA .align 2, 0 _080B0AC8: .4byte 0x04000069 _080B0ACC: ldr r1, _080B0AD4 @ =0x04000070 movs r0, #0 b _080B0AE2 .align 2, 0 _080B0AD4: .4byte 0x04000070 _080B0AD8: ldr r1, _080B0AE8 @ =0x04000079 _080B0ADA: movs r0, #8 strb r0, [r1] adds r1, #4 _080B0AE0: movs r0, #0x80 _080B0AE2: strb r0, [r1] pop {r0} bx r0 .align 2, 0 _080B0AE8: .4byte 0x04000079 thumb_func_start CgbModVol CgbModVol: @ 0x080B0AEC push {r4, lr} adds r2, r0, #0 ldrb r0, [r2, #2] ldrb r1, [r2, #3] lsls r3, r0, #0x18 lsrs r4, r3, #0x18 lsls r0, r1, #0x18 lsrs r1, r0, #0x18 cmp r4, r1 blo _080B0B0C lsrs r0, r3, #0x19 cmp r0, r1 blo _080B0B18 movs r0, #0xf strb r0, [r2, #0x1b] b _080B0B26 _080B0B0C: lsrs r0, r0, #0x19 cmp r0, r4 blo _080B0B18 movs r0, #0xf0 strb r0, [r2, #0x1b] b _080B0B26 _080B0B18: movs r0, #0xff strb r0, [r2, #0x1b] ldrb r0, [r2, #2] ldrb r1, [r2, #3] adds r0, r0, r1 lsrs r0, r0, #4 b _080B0B36 _080B0B26: ldrb r0, [r2, #2] ldrb r1, [r2, #3] adds r0, r0, r1 lsrs r0, r0, #4 strb r0, [r2, #0xa] cmp r0, #0xf bls _080B0B38 movs r0, #0xf _080B0B36: strb r0, [r2, #0xa] _080B0B38: ldrb r1, [r2, #0xa] ldrb r0, [r2, #6] muls r0, r1, r0 adds r0, #0xf asrs r0, r0, #4 strb r0, [r2, #0x19] ldrb r1, [r2, #0x1b] ldrb r0, [r2, #0x1c] ands r0, r1 strb r0, [r2, #0x1b] pop {r4} pop {r0} bx r0 .align 2, 0 thumb_func_start CgbSound CgbSound: @ 0x080B0B54 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} sub sp, #0x24 ldr r0, _080B0B74 @ =0x03007FF0 ldr r0, [r0] str r0, [sp, #8] ldrb r0, [r0, #0xa] cmp r0, #0 beq _080B0B78 subs r0, #1 ldr r1, [sp, #8] strb r0, [r1, #0xa] b _080B0B7E .align 2, 0 _080B0B74: .4byte 0x03007FF0 _080B0B78: movs r0, #0xe ldr r3, [sp, #8] strb r0, [r3, #0xa] _080B0B7E: movs r6, #1 ldr r0, [sp, #8] ldr r4, [r0, #0x1c] mov r1, sp str r1, [sp, #0x1c] _080B0B88: ldrb r1, [r4] movs r0, #0xc7 ands r0, r1 adds r3, r6, #1 mov sl, r3 movs r1, #0x40 adds r1, r1, r4 mov sb, r1 cmp r0, #0 bne _080B0B9E b _080B0FBA _080B0B9E: cmp r6, #2 beq _080B0BD4 cmp r6, #2 bgt _080B0BAC cmp r6, #1 beq _080B0BB2 b _080B0C1C _080B0BAC: cmp r6, #3 beq _080B0BF8 b _080B0C1C _080B0BB2: ldr r3, _080B0BC8 @ =0x04000060 str r3, [sp, #0xc] adds r3, #2 ldr r0, _080B0BCC @ =0x04000063 str r0, [sp, #0x10] ldr r1, _080B0BD0 @ =0x04000064 str r1, [sp, #0x14] adds r0, #2 str r0, [sp, #0x18] movs r0, #0 b _080B0C30 .align 2, 0 _080B0BC8: .4byte 0x04000060 _080B0BCC: .4byte 0x04000063 _080B0BD0: .4byte 0x04000064 _080B0BD4: ldr r3, _080B0BEC @ =0x04000061 str r3, [sp, #0xc] adds r3, #7 ldr r0, _080B0BF0 @ =0x04000069 str r0, [sp, #0x10] ldr r1, _080B0BF4 @ =0x0400006C str r1, [sp, #0x14] adds r0, #4 str r0, [sp, #0x18] movs r0, #1 b _080B0C30 .align 2, 0 _080B0BEC: .4byte 0x04000061 _080B0BF0: .4byte 0x04000069 _080B0BF4: .4byte 0x0400006C _080B0BF8: ldr r3, _080B0C10 @ =0x04000070 str r3, [sp, #0xc] adds r3, #2 ldr r0, _080B0C14 @ =0x04000073 str r0, [sp, #0x10] ldr r1, _080B0C18 @ =0x04000074 str r1, [sp, #0x14] adds r0, #2 str r0, [sp, #0x18] movs r0, #2 b _080B0C30 .align 2, 0 _080B0C10: .4byte 0x04000070 _080B0C14: .4byte 0x04000073 _080B0C18: .4byte 0x04000074 _080B0C1C: ldr r3, _080B0C84 @ =0x04000071 str r3, [sp, #0xc] adds r3, #7 ldr r0, _080B0C88 @ =0x04000079 str r0, [sp, #0x10] ldr r1, _080B0C8C @ =0x0400007C str r1, [sp, #0x14] adds r0, #4 str r0, [sp, #0x18] movs r0, #3 _080B0C30: ldr r1, [sp, #0x1c] strb r0, [r1] ldr r0, [sp, #8] ldrb r0, [r0, #0xa] str r0, [sp, #4] ldr r1, [sp, #0x10] ldrb r0, [r1] mov r8, r0 ldrb r2, [r4] movs r0, #0x80 ands r0, r2 cmp r0, #0 beq _080B0D2A movs r7, #0x40 adds r0, r7, #0 ands r0, r2 lsls r0, r0, #0x18 lsrs r5, r0, #0x18 adds r0, r6, #1 mov sl, r0 movs r1, #0x40 adds r1, r1, r4 mov sb, r1 cmp r5, #0 beq _080B0C64 b _080B0D60 _080B0C64: movs r0, #3 strb r0, [r4] strb r0, [r4, #0x1d] adds r0, r4, #0 str r3, [sp, #0x20] bl CgbModVol ldr r3, [sp, #0x20] cmp r6, #2 beq _080B0C9C cmp r6, #2 bgt _080B0C90 cmp r6, #1 beq _080B0C96 b _080B0CF0 .align 2, 0 _080B0C84: .4byte 0x04000071 _080B0C88: .4byte 0x04000079 _080B0C8C: .4byte 0x0400007C _080B0C90: cmp r6, #3 beq _080B0CA8 b _080B0CF0 _080B0C96: ldrb r0, [r4, #0x1f] ldr r1, [sp, #0xc] strb r0, [r1] _080B0C9C: ldr r0, [r4, #0x24] lsls r0, r0, #6 ldrb r1, [r4, #0x1e] adds r0, r0, r1 strb r0, [r3] b _080B0CFC _080B0CA8: ldr r1, [r4, #0x24] ldr r0, [r4, #0x28] cmp r1, r0 beq _080B0CD0 ldr r0, [sp, #0xc] strb r7, [r0] ldr r1, _080B0CE4 @ =0x04000090 ldr r2, [r4, #0x24] ldr r0, [r2] str r0, [r1] adds r1, #4 ldr r0, [r2, #4] str r0, [r1] adds r1, #4 ldr r0, [r2, #8] str r0, [r1] adds r1, #4 ldr r0, [r2, #0xc] str r0, [r1] str r2, [r4, #0x28] _080B0CD0: ldr r1, [sp, #0xc] strb r5, [r1] ldrb r0, [r4, #0x1e] strb r0, [r3] ldrb r0, [r4, #0x1e] cmp r0, #0 beq _080B0CE8 movs r0, #0xc0 b _080B0D0A .align 2, 0 _080B0CE4: .4byte 0x04000090 _080B0CE8: movs r3, #0x80 rsbs r3, r3, #0 strb r3, [r4, #0x1a] b _080B0D0C _080B0CF0: ldrb r0, [r4, #0x1e] strb r0, [r3] ldr r0, [r4, #0x24] lsls r0, r0, #3 ldr r1, [sp, #0x14] strb r0, [r1] _080B0CFC: ldrb r0, [r4, #4] adds r0, #8 mov r8, r0 ldrb r0, [r4, #0x1e] cmp r0, #0 beq _080B0D0A movs r0, #0x40 _080B0D0A: strb r0, [r4, #0x1a] _080B0D0C: ldrb r1, [r4, #4] movs r2, #0 strb r1, [r4, #0xb] movs r0, #0xff ands r0, r1 adds r3, r6, #1 mov sl, r3 movs r1, #0x40 adds r1, r1, r4 mov sb, r1 cmp r0, #0 bne _080B0D26 b _080B0E7A _080B0D26: strb r2, [r4, #9] b _080B0EA8 _080B0D2A: movs r0, #4 ands r0, r2 cmp r0, #0 bne _080B0D44 ldr r0, _080B0D70 @ =0x04000084 ldrb r1, [r0] ldr r3, [sp, #0x1c] ldrb r0, [r3] asrs r1, r0 movs r0, #1 ands r1, r0 cmp r1, #0 bne _080B0D74 _080B0D44: ldrb r0, [r4, #0xd] subs r0, #1 strb r0, [r4, #0xd] movs r1, #0xff ands r0, r1 lsls r0, r0, #0x18 adds r3, r6, #1 mov sl, r3 movs r1, #0x40 adds r1, r1, r4 mov sb, r1 cmp r0, #0 ble _080B0D60 b _080B0EBA _080B0D60: lsls r0, r6, #0x18 lsrs r0, r0, #0x18 bl CgbOscOff movs r0, #0 strb r0, [r4] b _080B0FB6 .align 2, 0 _080B0D70: .4byte 0x04000084 _080B0D74: movs r0, #0x40 ands r0, r2 adds r3, r6, #1 mov sl, r3 movs r1, #0x40 adds r1, r1, r4 mov sb, r1 cmp r0, #0 beq _080B0DB4 movs r0, #3 ands r0, r2 cmp r0, #0 beq _080B0DB4 movs r0, #0xfc ands r0, r2 movs r2, #0 strb r0, [r4] ldrb r1, [r4, #7] strb r1, [r4, #0xb] movs r0, #0xff ands r0, r1 cmp r0, #0 beq _080B0DE6 ldrb r0, [r4, #0x1d] movs r1, #1 orrs r0, r1 strb r0, [r4, #0x1d] cmp r6, #3 beq _080B0EA8 ldrb r3, [r4, #7] mov r8, r3 b _080B0EA8 _080B0DB4: ldrb r0, [r4, #0xb] cmp r0, #0 bne _080B0EA8 cmp r6, #3 bne _080B0DC6 ldrb r1, [r4, #0x1d] movs r0, #1 orrs r0, r1 strb r0, [r4, #0x1d] _080B0DC6: adds r0, r4, #0 bl CgbModVol ldrb r0, [r4] movs r1, #3 ands r1, r0 cmp r1, #0 bne _080B0E18 ldrb r0, [r4, #9] subs r0, #1 strb r0, [r4, #9] movs r1, #0xff ands r0, r1 lsls r0, r0, #0x18 cmp r0, #0 bgt _080B0E14 _080B0DE6: ldrb r1, [r4, #0xa] ldrb r0, [r4, #0xc] muls r0, r1, r0 adds r0, #0xff asrs r0, r0, #8 movs r1, #0 strb r0, [r4, #9] lsls r0, r0, #0x18 cmp r0, #0 beq _080B0D60 ldrb r0, [r4] movs r1, #4 orrs r0, r1 strb r0, [r4] ldrb r0, [r4, #0x1d] movs r1, #1 orrs r0, r1 strb r0, [r4, #0x1d] cmp r6, #3 beq _080B0EBA movs r3, #8 mov r8, r3 b _080B0EBA _080B0E14: ldrb r0, [r4, #7] b _080B0EA6 _080B0E18: cmp r1, #1 bne _080B0E24 _080B0E1C: ldrb r0, [r4, #0x19] strb r0, [r4, #9] movs r0, #7 b _080B0EA6 _080B0E24: cmp r1, #2 bne _080B0E6A ldrb r0, [r4, #9] subs r0, #1 strb r0, [r4, #9] movs r1, #0xff ands r0, r1 lsls r0, r0, #0x18 asrs r0, r0, #0x18 movs r1, #0x19 ldrsb r1, [r4, r1] cmp r0, r1 bgt _080B0E66 _080B0E3E: ldrb r0, [r4, #6] cmp r0, #0 bne _080B0E4E ldrb r1, [r4] movs r0, #0xfc ands r0, r1 strb r0, [r4] b _080B0DE6 _080B0E4E: ldrb r0, [r4] subs r0, #1 strb r0, [r4] ldrb r1, [r4, #0x1d] movs r0, #1 orrs r0, r1 strb r0, [r4, #0x1d] cmp r6, #3 beq _080B0E1C movs r3, #8 mov r8, r3 b _080B0E1C _080B0E66: ldrb r0, [r4, #5] b _080B0EA6 _080B0E6A: ldrb r0, [r4, #9] adds r0, #1 strb r0, [r4, #9] movs r1, #0xff ands r0, r1 ldrb r3, [r4, #0xa] cmp r0, r3 blo _080B0EA4 _080B0E7A: ldrb r0, [r4] subs r0, #1 movs r2, #0 strb r0, [r4] ldrb r1, [r4, #5] strb r1, [r4, #0xb] movs r0, #0xff ands r0, r1 cmp r0, #0 beq _080B0E3E ldrb r0, [r4, #0x1d] movs r1, #1 orrs r0, r1 strb r0, [r4, #0x1d] ldrb r0, [r4, #0xa] strb r0, [r4, #9] cmp r6, #3 beq _080B0EA8 ldrb r0, [r4, #5] mov r8, r0 b _080B0EA8 _080B0EA4: ldrb r0, [r4, #4] _080B0EA6: strb r0, [r4, #0xb] _080B0EA8: ldrb r0, [r4, #0xb] subs r0, #1 strb r0, [r4, #0xb] ldr r1, [sp, #4] cmp r1, #0 bne _080B0EBA subs r1, #1 str r1, [sp, #4] b _080B0DB4 _080B0EBA: ldrb r1, [r4, #0x1d] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080B0F34 cmp r6, #3 bgt _080B0EFA ldrb r1, [r4, #1] movs r0, #8 ands r0, r1 cmp r0, #0 beq _080B0EFA ldr r0, _080B0EE4 @ =0x04000089 ldrb r0, [r0] adds r1, r0, #0 cmp r1, #0x3f bgt _080B0EEC ldr r0, [r4, #0x20] adds r0, #2 ldr r1, _080B0EE8 @ =0x000007FC b _080B0EF6 .align 2, 0 _080B0EE4: .4byte 0x04000089 _080B0EE8: .4byte 0x000007FC _080B0EEC: cmp r1, #0x7f bgt _080B0EFA ldr r0, [r4, #0x20] adds r0, #1 ldr r1, _080B0F04 @ =0x000007FE _080B0EF6: ands r0, r1 str r0, [r4, #0x20] _080B0EFA: cmp r6, #4 beq _080B0F08 ldr r0, [r4, #0x20] b _080B0F14 .align 2, 0 _080B0F04: .4byte 0x000007FE _080B0F08: ldr r1, [sp, #0x14] ldrb r0, [r1] movs r1, #8 ands r1, r0 ldr r0, [r4, #0x20] orrs r0, r1 _080B0F14: ldr r3, [sp, #0x14] strb r0, [r3] ldrb r0, [r4, #0x1a] movs r1, #0xc0 ands r1, r0 ldr r0, [r4, #0x20] movs r2, #0xfc lsls r2, r2, #6 ands r0, r2 lsrs r0, r0, #8 adds r1, r1, r0 strb r1, [r4, #0x1a] movs r0, #0xff ands r1, r0 ldr r3, [sp, #0x18] strb r1, [r3] _080B0F34: ldrb r1, [r4, #0x1d] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080B0FB6 ldr r2, _080B0F7C @ =0x04000081 ldrb r1, [r4, #0x1c] ldrb r0, [r2] bics r0, r1 ldrb r1, [r4, #0x1b] orrs r0, r1 strb r0, [r2] cmp r6, #3 bne _080B0F84 ldr r1, _080B0F80 @ =gUnk_089FC928 ldrb r0, [r4, #9] adds r0, r0, r1 ldrb r0, [r0] ldr r1, [sp, #0x10] strb r0, [r1] ldrb r1, [r4, #0x1a] movs r2, #0x80 adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _080B0FB6 ldr r3, [sp, #0xc] strb r2, [r3] ldrb r0, [r4, #0x1a] ldr r1, [sp, #0x18] strb r0, [r1] ldrb r1, [r4, #0x1a] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x1a] b _080B0FB6 .align 2, 0 _080B0F7C: .4byte 0x04000081 _080B0F80: .4byte gUnk_089FC928 _080B0F84: movs r0, #0xf mov r3, r8 ands r3, r0 mov r8, r3 ldrb r0, [r4, #9] lsls r0, r0, #4 add r0, r8 ldr r1, [sp, #0x10] strb r0, [r1] ldrb r0, [r4, #0x1a] movs r2, #0x80 orrs r0, r2 ldr r3, [sp, #0x18] strb r0, [r3] cmp r6, #1 bne _080B0FB6 ldr r0, [sp, #0xc] ldrb r1, [r0] movs r0, #8 ands r0, r1 cmp r0, #0 bne _080B0FB6 ldrb r0, [r4, #0x1a] orrs r0, r2 strb r0, [r3] _080B0FB6: movs r0, #0 strb r0, [r4, #0x1d] _080B0FBA: mov r6, sl mov r4, sb cmp r6, #4 bgt _080B0FC4 b _080B0B88 _080B0FC4: add sp, #0x24 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7} pop {r0} bx r0 thumb_func_start m4aMPlayTempoControl m4aMPlayTempoControl: @ 0x080B0FD4 push {lr} adds r2, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 ldr r3, [r2, #0x34] ldr r0, _080B0FF4 @ =0x68736D53 cmp r3, r0 bne _080B0FF0 strh r1, [r2, #0x1e] ldrh r1, [r2, #0x1c] ldrh r0, [r2, #0x1e] muls r0, r1, r0 asrs r0, r0, #8 strh r0, [r2, #0x20] _080B0FF0: pop {r0} bx r0 .align 2, 0 _080B0FF4: .4byte 0x68736D53 thumb_func_start m4aMPlayVolumeControl m4aMPlayVolumeControl: @ 0x080B0FF8 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r4, r0, #0 lsls r1, r1, #0x10 lsrs r7, r1, #0x10 lsls r6, r2, #0x10 ldr r3, [r4, #0x34] ldr r0, _080B105C @ =0x68736D53 cmp r3, r0 bne _080B1050 adds r0, r3, #1 str r0, [r4, #0x34] ldrb r2, [r4, #8] ldr r1, [r4, #0x2c] movs r5, #1 cmp r2, #0 ble _080B104C movs r0, #0x80 mov r8, r0 lsrs r6, r6, #0x12 movs r0, #3 mov ip, r0 _080B1028: adds r0, r7, #0 ands r0, r5 cmp r0, #0 beq _080B1042 ldrb r3, [r1] mov r0, r8 ands r0, r3 cmp r0, #0 beq _080B1042 strb r6, [r1, #0x13] mov r0, ip orrs r0, r3 strb r0, [r1] _080B1042: subs r2, #1 adds r1, #0x50 lsls r5, r5, #1 cmp r2, #0 bgt _080B1028 _080B104C: ldr r0, _080B105C @ =0x68736D53 str r0, [r4, #0x34] _080B1050: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _080B105C: .4byte 0x68736D53 thumb_func_start m4aMPlayPitchControl m4aMPlayPitchControl: @ 0x080B1060 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r4, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 mov ip, r1 lsls r2, r2, #0x10 lsrs r6, r2, #0x10 ldr r3, [r4, #0x34] ldr r0, _080B10D0 @ =0x68736D53 cmp r3, r0 bne _080B10C2 adds r0, r3, #1 str r0, [r4, #0x34] ldrb r2, [r4, #8] ldr r3, [r4, #0x2c] movs r5, #1 cmp r2, #0 ble _080B10BE movs r0, #0x80 mov sb, r0 lsls r0, r6, #0x10 asrs r7, r0, #0x18 movs r0, #0xc mov r8, r0 _080B1098: mov r0, ip ands r0, r5 cmp r0, #0 beq _080B10B4 ldrb r1, [r3] mov r0, sb ands r0, r1 cmp r0, #0 beq _080B10B4 strb r7, [r3, #0xb] strb r6, [r3, #0xd] mov r0, r8 orrs r0, r1 strb r0, [r3] _080B10B4: subs r2, #1 adds r3, #0x50 lsls r5, r5, #1 cmp r2, #0 bgt _080B1098 _080B10BE: ldr r0, _080B10D0 @ =0x68736D53 str r0, [r4, #0x34] _080B10C2: 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 _080B10D0: .4byte 0x68736D53 thumb_func_start m4aMPlayPanpotControl m4aMPlayPanpotControl: @ 0x080B10D4 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r4, r0, #0 lsls r1, r1, #0x10 lsrs r7, r1, #0x10 lsls r2, r2, #0x18 lsrs r6, r2, #0x18 ldr r3, [r4, #0x34] ldr r0, _080B1138 @ =0x68736D53 cmp r3, r0 bne _080B112C adds r0, r3, #1 str r0, [r4, #0x34] ldrb r2, [r4, #8] ldr r1, [r4, #0x2c] movs r5, #1 cmp r2, #0 ble _080B1128 movs r0, #0x80 mov r8, r0 movs r0, #3 mov ip, r0 _080B1104: adds r0, r7, #0 ands r0, r5 cmp r0, #0 beq _080B111E ldrb r3, [r1] mov r0, r8 ands r0, r3 cmp r0, #0 beq _080B111E strb r6, [r1, #0x15] mov r0, ip orrs r0, r3 strb r0, [r1] _080B111E: subs r2, #1 adds r1, #0x50 lsls r5, r5, #1 cmp r2, #0 bgt _080B1104 _080B1128: ldr r0, _080B1138 @ =0x68736D53 str r0, [r4, #0x34] _080B112C: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _080B1138: .4byte 0x68736D53 thumb_func_start ClearModM ClearModM: @ 0x080B113C push {lr} adds r2, r0, #0 movs r1, #0 movs r0, #0 strb r0, [r2, #0x1a] strb r0, [r2, #0x16] ldrb r0, [r2, #0x18] cmp r0, #0 bne _080B1154 ldrb r0, [r2] movs r1, #0xc b _080B1158 _080B1154: ldrb r0, [r2] movs r1, #3 _080B1158: orrs r0, r1 strb r0, [r2] pop {r0} bx r0 thumb_func_start m4aMPlayModDepthSet m4aMPlayModDepthSet: @ 0x080B1160 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r6, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 mov sl, r1 lsls r2, r2, #0x18 lsrs r2, r2, #0x18 mov r8, r2 ldr r1, [r6, #0x34] ldr r0, _080B11D0 @ =0x68736D53 cmp r1, r0 bne _080B11C0 adds r0, r1, #1 str r0, [r6, #0x34] ldrb r5, [r6, #8] ldr r4, [r6, #0x2c] movs r7, #1 cmp r5, #0 ble _080B11BC mov sb, r8 _080B1190: mov r0, sl ands r0, r7 cmp r0, #0 beq _080B11B2 ldrb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080B11B2 mov r0, r8 strb r0, [r4, #0x17] mov r0, sb cmp r0, #0 bne _080B11B2 adds r0, r4, #0 bl ClearModM _080B11B2: subs r5, #1 adds r4, #0x50 lsls r7, r7, #1 cmp r5, #0 bgt _080B1190 _080B11BC: ldr r0, _080B11D0 @ =0x68736D53 str r0, [r6, #0x34] _080B11C0: 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 _080B11D0: .4byte 0x68736D53 thumb_func_start m4aMPlayLFOSpeedSet m4aMPlayLFOSpeedSet: @ 0x080B11D4 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r6, r0, #0 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 mov sl, r1 lsls r2, r2, #0x18 lsrs r2, r2, #0x18 mov r8, r2 ldr r1, [r6, #0x34] ldr r0, _080B1244 @ =0x68736D53 cmp r1, r0 bne _080B1234 adds r0, r1, #1 str r0, [r6, #0x34] ldrb r5, [r6, #8] ldr r4, [r6, #0x2c] movs r7, #1 cmp r5, #0 ble _080B1230 mov sb, r8 _080B1204: mov r0, sl ands r0, r7 cmp r0, #0 beq _080B1226 ldrb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080B1226 mov r0, r8 strb r0, [r4, #0x19] mov r0, sb cmp r0, #0 bne _080B1226 adds r0, r4, #0 bl ClearModM _080B1226: subs r5, #1 adds r4, #0x50 lsls r7, r7, #1 cmp r5, #0 bgt _080B1204 _080B1230: ldr r0, _080B1244 @ =0x68736D53 str r0, [r6, #0x34] _080B1234: 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 _080B1244: .4byte 0x68736D53 thumb_func_start ply_memacc ply_memacc: @ 0x080B1248 push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r1, #0 ldr r0, [r6, #0x40] ldrb r5, [r0] adds r1, r0, #1 str r1, [r6, #0x40] ldrb r2, [r0, #1] ldr r0, [r4, #0x18] adds r2, r0, r2 adds r0, r1, #1 str r0, [r6, #0x40] ldrb r3, [r1, #1] adds r0, #1 str r0, [r6, #0x40] cmp r5, #0x11 bls _080B126C b _080B139A _080B126C: lsls r0, r5, #2 ldr r1, _080B1278 @ =_080B127C adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080B1278: .4byte _080B127C _080B127C: @ jump table .4byte _080B12C4 @ case 0 .4byte _080B12C8 @ case 1 .4byte _080B12D0 @ case 2 .4byte _080B12D8 @ case 3 .4byte _080B12E2 @ case 4 .4byte _080B12F0 @ case 5 .4byte _080B12FE @ case 6 .4byte _080B1306 @ case 7 .4byte _080B130E @ case 8 .4byte _080B1316 @ case 9 .4byte _080B131E @ case 10 .4byte _080B1326 @ case 11 .4byte _080B132E @ case 12 .4byte _080B133C @ case 13 .4byte _080B134A @ case 14 .4byte _080B1358 @ case 15 .4byte _080B1366 @ case 16 .4byte _080B1374 @ case 17 _080B12C4: strb r3, [r2] b _080B139A _080B12C8: ldrb r0, [r2] adds r0, r3, r0 strb r0, [r2] b _080B139A _080B12D0: ldrb r0, [r2] subs r0, r0, r3 strb r0, [r2] b _080B139A _080B12D8: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r0, [r0] strb r0, [r2] b _080B139A _080B12E2: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r0, [r0] ldrb r1, [r2] adds r0, r0, r1 strb r0, [r2] b _080B139A _080B12F0: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] subs r1, r1, r0 strb r1, [r2] b _080B139A _080B12FE: ldrb r0, [r2] cmp r0, r3 beq _080B1380 b _080B1394 _080B1306: ldrb r0, [r2] cmp r0, r3 bne _080B1380 b _080B1394 _080B130E: ldrb r0, [r2] cmp r0, r3 bhi _080B1380 b _080B1394 _080B1316: ldrb r0, [r2] cmp r0, r3 bhs _080B1380 b _080B1394 _080B131E: ldrb r0, [r2] cmp r0, r3 bls _080B1380 b _080B1394 _080B1326: ldrb r0, [r2] cmp r0, r3 blo _080B1380 b _080B1394 _080B132E: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 beq _080B1380 b _080B1394 _080B133C: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bne _080B1380 b _080B1394 _080B134A: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bhi _080B1380 b _080B1394 _080B1358: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bhs _080B1380 b _080B1394 _080B1366: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bls _080B1380 b _080B1394 _080B1374: ldr r0, [r4, #0x18] adds r0, r0, r3 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bhs _080B1394 _080B1380: ldr r0, _080B1390 @ =gUnk_03004D54 ldr r2, [r0] adds r0, r4, #0 adds r1, r6, #0 bl _call_via_r2 b _080B139A .align 2, 0 _080B1390: .4byte gUnk_03004D54 _080B1394: ldr r0, [r6, #0x40] adds r0, #4 str r0, [r6, #0x40] _080B139A: pop {r4, r5, r6} pop {r0} bx r0 thumb_func_start ply_xcmd ply_xcmd: @ 0x080B13A0 push {lr} ldr r2, [r1, #0x40] ldrb r3, [r2] adds r2, #1 str r2, [r1, #0x40] ldr r2, _080B13BC @ =gUnk_089FC96C lsls r3, r3, #2 adds r3, r3, r2 ldr r2, [r3] bl _call_via_r2 pop {r0} bx r0 .align 2, 0 _080B13BC: .4byte gUnk_089FC96C thumb_func_start ply_xxx ply_xxx: @ 0x080B13C0 push {lr} ldr r2, _080B13D0 @ =gUnk_03004D50 ldr r2, [r2] bl _call_via_r2 pop {r0} bx r0 .align 2, 0 _080B13D0: .4byte gUnk_03004D50 thumb_func_start ply_xwave ply_xwave: @ 0x080B13D4 push {r4, lr} ldr r3, [r1, #0x40] ldrb r2, [r3] ldr r0, _080B140C @ =0xFFFFFF00 ands r4, r0 orrs r4, r2 ldrb r0, [r3, #1] lsls r0, r0, #8 ldr r2, _080B1410 @ =0xFFFF00FF ands r4, r2 orrs r4, r0 ldrb r0, [r3, #2] lsls r0, r0, #0x10 ldr r2, _080B1414 @ =0xFF00FFFF ands r4, r2 orrs r4, r0 ldrb r0, [r3, #3] lsls r0, r0, #0x18 ldr r2, _080B1418 @ =0x00FFFFFF ands r4, r2 orrs r4, r0 str r4, [r1, #0x28] adds r3, #4 str r3, [r1, #0x40] pop {r4} pop {r0} bx r0 .align 2, 0 _080B140C: .4byte 0xFFFFFF00 _080B1410: .4byte 0xFFFF00FF _080B1414: .4byte 0xFF00FFFF _080B1418: .4byte 0x00FFFFFF thumb_func_start ply_xtype ply_xtype: @ 0x080B141C ldr r0, [r1, #0x40] ldrb r2, [r0] adds r0, r1, #0 adds r0, #0x24 strb r2, [r0] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start ply_xatta ply_xatta: @ 0x080B1430 ldr r0, [r1, #0x40] ldrb r2, [r0] adds r0, r1, #0 adds r0, #0x2c strb r2, [r0] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start ply_xdeca ply_xdeca: @ 0x080B1444 ldr r0, [r1, #0x40] ldrb r0, [r0] adds r2, r1, #0 adds r2, #0x2d strb r0, [r2] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start ply_xsust ply_xsust: @ 0x080B1458 ldr r0, [r1, #0x40] ldrb r0, [r0] adds r2, r1, #0 adds r2, #0x2e strb r0, [r2] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start ply_xrele ply_xrele: @ 0x080B146C ldr r0, [r1, #0x40] ldrb r0, [r0] adds r2, r1, #0 adds r2, #0x2f strb r0, [r2] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start ply_xiecv ply_xiecv: @ 0x080B1480 ldr r0, [r1, #0x40] ldrb r2, [r0] strb r2, [r1, #0x1e] adds r0, #1 str r0, [r1, #0x40] bx lr thumb_func_start ply_xiecl ply_xiecl: @ 0x080B148C ldr r0, [r1, #0x40] ldrb r2, [r0] strb r2, [r1, #0x1f] adds r0, #1 str r0, [r1, #0x40] bx lr thumb_func_start ply_xleng ply_xleng: @ 0x080B1498 ldr r0, [r1, #0x40] ldrb r0, [r0] adds r2, r1, #0 adds r2, #0x26 strb r0, [r2] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start ply_xswee ply_xswee: @ 0x080B14AC ldr r0, [r1, #0x40] ldrb r0, [r0] adds r2, r1, #0 adds r2, #0x27 strb r0, [r2] ldr r0, [r1, #0x40] adds r0, #1 str r0, [r1, #0x40] bx lr .align 2, 0 thumb_func_start nullsub_544 nullsub_544: @ 0x080B14C0 bx lr .align 2, 0