tp/asm/os/OSAudioSystem.s

196 lines
9.1 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 8033b2d8
.global __OSInitAudioSystem
__OSInitAudioSystem:
/* 8033B2D8 00338218 7C 08 02 A6 */ mflr r0
/* 8033B2DC 0033821C 90 01 00 04 */ stw r0, 4(r1)
/* 8033B2E0 00338220 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8033B2E4 00338224 BF 21 00 14 */ stmw r25, 0x14(r1)
/* 8033B2E8 00338228 4B FF FF A5 */ bl OSGetArenaHi
/* 8033B2EC 0033822C 3C 80 81 00 */ lis r4, 0x8100
/* 8033B2F0 00338230 38 A0 00 80 */ li r5, 0x80
/* 8033B2F4 00338234 38 63 FF 80 */ addi r3, r3, -128
/* 8033B2F8 00338238 4B CC 82 49 */ bl memcpy
/* 8033B2FC 0033823C 3C 60 80 3D */ lis r3, lbl_803CF490@ha
/* 8033B300 00338240 38 83 F4 90 */ addi r4, r3, lbl_803CF490@l
/* 8033B304 00338244 3C 60 81 00 */ lis r3, 0x8100
/* 8033B308 00338248 38 A0 00 80 */ li r5, 0x80
/* 8033B30C 0033824C 4B CC 82 35 */ bl memcpy
/* 8033B310 00338250 3C 60 81 00 */ lis r3, 0x8100
/* 8033B314 00338254 38 80 00 80 */ li r4, 0x80
/* 8033B318 00338258 48 00 02 95 */ bl DCFlushRange
/* 8033B31C 0033825C 3C 60 CC 00 */ lis r3, 0xCC005000@ha
/* 8033B320 00338260 38 63 50 00 */ addi r3, r3, 0xCC005000@l
/* 8033B324 00338264 38 00 00 43 */ li r0, 0x43
/* 8033B328 00338268 B0 03 00 12 */ sth r0, 0x12(r3)
/* 8033B32C 0033826C 3B E3 00 0A */ addi r31, r3, 0xa
/* 8033B330 00338270 38 00 08 AC */ li r0, 0x8ac
/* 8033B334 00338274 B0 03 00 0A */ sth r0, 0xa(r3)
/* 8033B338 00338278 A0 03 00 0A */ lhz r0, 0xa(r3)
/* 8033B33C 0033827C 60 00 00 01 */ ori r0, r0, 1
/* 8033B340 00338280 B0 03 00 0A */ sth r0, 0xa(r3)
lbl_8033B344:
/* 8033B344 00338284 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B348 00338288 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8033B34C 0033828C 40 82 FF F8 */ bne lbl_8033B344
/* 8033B350 00338290 38 00 00 00 */ li r0, 0
/* 8033B354 00338294 3C 80 CC 00 */ lis r4, 0xCC005000@ha
/* 8033B358 00338298 B0 04 50 00 */ sth r0, 0xCC005000@l(r4)
lbl_8033B35C:
/* 8033B35C 0033829C 3B C4 50 00 */ addi r30, r4, 0x5000
/* 8033B360 003382A0 A4 7E 00 04 */ lhzu r3, 4(r30)
/* 8033B364 003382A4 3B A4 50 00 */ addi r29, r4, 0x5000
/* 8033B368 003382A8 A4 1D 00 06 */ lhzu r0, 6(r29)
/* 8033B36C 003382AC 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf
/* 8033B370 003382B0 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
/* 8033B374 003382B4 40 82 FF E8 */ bne lbl_8033B35C
/* 8033B378 003382B8 3C 60 CC 00 */ lis r3, 0xCC005000@ha
/* 8033B37C 003382BC 3C 00 01 00 */ lis r0, 0x100
/* 8033B380 003382C0 3B 63 50 00 */ addi r27, r3, 0xCC005000@l
/* 8033B384 003382C4 94 1B 00 20 */ stwu r0, 0x20(r27)
/* 8033B388 003382C8 38 00 00 00 */ li r0, 0
/* 8033B38C 003382CC 3B 43 50 00 */ addi r26, r3, 0x5000
/* 8033B390 003382D0 94 1A 00 24 */ stwu r0, 0x24(r26)
/* 8033B394 003382D4 38 00 00 20 */ li r0, 0x20
/* 8033B398 003382D8 3B 23 50 00 */ addi r25, r3, 0x5000
/* 8033B39C 003382DC 94 19 00 28 */ stwu r0, 0x28(r25)
/* 8033B3A0 003382E0 A0 7F 00 00 */ lhz r3, 0(r31)
/* 8033B3A4 003382E4 48 00 00 08 */ b lbl_8033B3AC
lbl_8033B3A8:
/* 8033B3A8 003382E8 A0 7F 00 00 */ lhz r3, 0(r31)
lbl_8033B3AC:
/* 8033B3AC 003382EC 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
/* 8033B3B0 003382F0 41 82 FF F8 */ beq lbl_8033B3A8
/* 8033B3B4 003382F4 B0 7F 00 00 */ sth r3, 0(r31)
/* 8033B3B8 003382F8 48 00 73 5D */ bl OSGetTick
/* 8033B3BC 003382FC 7C 7C 1B 78 */ mr r28, r3
lbl_8033B3C0:
/* 8033B3C0 00338300 48 00 73 55 */ bl OSGetTick
/* 8033B3C4 00338304 7C 1C 18 50 */ subf r0, r28, r3
/* 8033B3C8 00338308 2C 00 08 92 */ cmpwi r0, 0x892
/* 8033B3CC 0033830C 41 80 FF F4 */ blt lbl_8033B3C0
/* 8033B3D0 00338310 3C 00 01 00 */ lis r0, 0x100
/* 8033B3D4 00338314 90 1B 00 00 */ stw r0, 0(r27)
/* 8033B3D8 00338318 38 60 00 00 */ li r3, 0
/* 8033B3DC 0033831C 38 00 00 20 */ li r0, 0x20
/* 8033B3E0 00338320 90 7A 00 00 */ stw r3, 0(r26)
/* 8033B3E4 00338324 90 19 00 00 */ stw r0, 0(r25)
/* 8033B3E8 00338328 A0 7F 00 00 */ lhz r3, 0(r31)
/* 8033B3EC 0033832C 48 00 00 08 */ b lbl_8033B3F4
lbl_8033B3F0:
/* 8033B3F0 00338330 A0 7F 00 00 */ lhz r3, 0(r31)
lbl_8033B3F4:
/* 8033B3F4 00338334 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
/* 8033B3F8 00338338 41 82 FF F8 */ beq lbl_8033B3F0
/* 8033B3FC 0033833C B0 7F 00 00 */ sth r3, 0(r31)
/* 8033B400 00338340 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B404 00338344 54 00 05 66 */ rlwinm r0, r0, 0, 0x15, 0x13
/* 8033B408 00338348 B0 1F 00 00 */ sth r0, 0(r31)
lbl_8033B40C:
/* 8033B40C 0033834C A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B410 00338350 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15
/* 8033B414 00338354 40 82 FF F8 */ bne lbl_8033B40C
/* 8033B418 00338358 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B41C 0033835C 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
/* 8033B420 00338360 B0 1F 00 00 */ sth r0, 0(r31)
/* 8033B424 00338364 A0 1E 00 00 */ lhz r0, 0(r30)
/* 8033B428 00338368 48 00 00 08 */ b lbl_8033B430
lbl_8033B42C:
/* 8033B42C 0033836C A0 1E 00 00 */ lhz r0, 0(r30)
lbl_8033B430:
/* 8033B430 00338370 54 05 04 3E */ clrlwi r5, r0, 0x10
/* 8033B434 00338374 54 00 04 21 */ rlwinm. r0, r0, 0, 0x10, 0x10
/* 8033B438 00338378 41 82 FF F4 */ beq lbl_8033B42C
/* 8033B43C 0033837C A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B440 00338380 A0 9D 00 00 */ lhz r4, 0(r29)
/* 8033B444 00338384 60 00 00 04 */ ori r0, r0, 4
/* 8033B448 00338388 B0 1F 00 00 */ sth r0, 0(r31)
/* 8033B44C 0033838C 38 00 08 AC */ li r0, 0x8ac
/* 8033B450 00338390 B0 1F 00 00 */ sth r0, 0(r31)
/* 8033B454 00338394 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B458 00338398 60 00 00 01 */ ori r0, r0, 1
/* 8033B45C 0033839C B0 1F 00 00 */ sth r0, 0(r31)
lbl_8033B460:
/* 8033B460 003383A0 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B464 003383A4 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8033B468 003383A8 40 82 FF F8 */ bne lbl_8033B460
/* 8033B46C 003383AC 4B FF FE 21 */ bl OSGetArenaHi
/* 8033B470 003383B0 38 83 FF 80 */ addi r4, r3, -128
/* 8033B474 003383B4 3C 60 81 00 */ lis r3, 0x8100
/* 8033B478 003383B8 38 A0 00 80 */ li r5, 0x80
/* 8033B47C 003383BC 4B CC 80 C5 */ bl memcpy
/* 8033B480 003383C0 BB 21 00 14 */ lmw r25, 0x14(r1)
/* 8033B484 003383C4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8033B488 003383C8 38 21 00 30 */ addi r1, r1, 0x30
/* 8033B48C 003383CC 7C 08 03 A6 */ mtlr r0
/* 8033B490 003383D0 4E 80 00 20 */ blr
.global __OSStopAudioSystem
__OSStopAudioSystem:
/* 8033B494 003383D4 7C 08 02 A6 */ mflr r0
/* 8033B498 003383D8 3C 60 CC 00 */ lis r3, 0xCC005000@ha
/* 8033B49C 003383DC 90 01 00 04 */ stw r0, 4(r1)
/* 8033B4A0 003383E0 38 00 08 04 */ li r0, 0x804
/* 8033B4A4 003383E4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8033B4A8 003383E8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8033B4AC 003383EC 3B E3 50 00 */ addi r31, r3, 0xCC005000@l
/* 8033B4B0 003383F0 38 63 50 00 */ addi r3, r3, 0x5000
/* 8033B4B4 003383F4 93 C1 00 08 */ stw r30, 8(r1)
/* 8033B4B8 003383F8 B0 1F 00 0A */ sth r0, 0xa(r31)
/* 8033B4BC 003383FC A0 03 00 36 */ lhz r0, 0x36(r3)
/* 8033B4C0 00338400 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf
/* 8033B4C4 00338404 B0 03 00 36 */ sth r0, 0x36(r3)
/* 8033B4C8 00338408 A4 1F 00 0A */ lhzu r0, 0xa(r31)
/* 8033B4CC 0033840C 48 00 00 08 */ b lbl_8033B4D4
lbl_8033B4D0:
/* 8033B4D0 00338410 A0 1F 00 00 */ lhz r0, 0(r31)
lbl_8033B4D4:
/* 8033B4D4 00338414 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15
/* 8033B4D8 00338418 40 82 FF F8 */ bne lbl_8033B4D0
/* 8033B4DC 0033841C A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B4E0 00338420 48 00 00 08 */ b lbl_8033B4E8
lbl_8033B4E4:
/* 8033B4E4 00338424 A0 1F 00 00 */ lhz r0, 0(r31)
lbl_8033B4E8:
/* 8033B4E8 00338428 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16
/* 8033B4EC 0033842C 40 82 FF F8 */ bne lbl_8033B4E4
/* 8033B4F0 00338430 38 00 08 AC */ li r0, 0x8ac
/* 8033B4F4 00338434 3C 60 CC 00 */ lis r3, 0xCC005000@ha
/* 8033B4F8 00338438 B0 1F 00 00 */ sth r0, 0(r31)
/* 8033B4FC 0033843C 38 00 00 00 */ li r0, 0
/* 8033B500 00338440 B0 03 50 00 */ sth r0, 0xCC005000@l(r3)
/* 8033B504 00338444 38 83 50 00 */ addi r4, r3, 0x5000
lbl_8033B508:
/* 8033B508 00338448 A0 64 00 04 */ lhz r3, 4(r4)
/* 8033B50C 0033844C A0 04 00 06 */ lhz r0, 6(r4)
/* 8033B510 00338450 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf
/* 8033B514 00338454 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
/* 8033B518 00338458 40 82 FF F0 */ bne lbl_8033B508
/* 8033B51C 0033845C 48 00 71 F9 */ bl OSGetTick
/* 8033B520 00338460 7C 7E 1B 78 */ mr r30, r3
lbl_8033B524:
/* 8033B524 00338464 48 00 71 F1 */ bl OSGetTick
/* 8033B528 00338468 7C 1E 18 50 */ subf r0, r30, r3
/* 8033B52C 0033846C 2C 00 00 2C */ cmpwi r0, 0x2c
/* 8033B530 00338470 41 80 FF F4 */ blt lbl_8033B524
/* 8033B534 00338474 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B538 00338478 60 00 00 01 */ ori r0, r0, 1
/* 8033B53C 0033847C B0 1F 00 00 */ sth r0, 0(r31)
/* 8033B540 00338480 A0 1F 00 00 */ lhz r0, 0(r31)
/* 8033B544 00338484 48 00 00 08 */ b lbl_8033B54C
lbl_8033B548:
/* 8033B548 00338488 A0 1F 00 00 */ lhz r0, 0(r31)
lbl_8033B54C:
/* 8033B54C 0033848C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8033B550 00338490 40 82 FF F8 */ bne lbl_8033B548
/* 8033B554 00338494 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8033B558 00338498 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8033B55C 0033849C 83 C1 00 08 */ lwz r30, 8(r1)
/* 8033B560 003384A0 38 21 00 10 */ addi r1, r1, 0x10
/* 8033B564 003384A4 7C 08 03 A6 */ mtlr r0
/* 8033B568 003384A8 4E 80 00 20 */ blr