2020-09-17 05:58:53 +01:00
|
|
|
# OSAudioSystem.c
|
|
|
|
|
.include "macros.inc"
|
|
|
|
|
|
|
|
|
|
.section .text, "ax"
|
|
|
|
|
|
|
|
|
|
.balign 4
|
|
|
|
|
|
|
|
|
|
glabel __OSInitAudioSystem
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097F08 8009D4A8 7C0802A6 */ mflr r0
|
|
|
|
|
/* 097F0C 8009D4AC 90010004 */ stw r0, 4(r1)
|
|
|
|
|
/* 097F10 8009D4B0 9421FFD0 */ stwu r1, -0x30(r1)
|
|
|
|
|
/* 097F14 8009D4B4 BF210014 */ stmw r25, 0x14(r1)
|
|
|
|
|
/* 097F18 8009D4B8 4BFFFFD1 */ bl OSGetArenaHi
|
|
|
|
|
/* 097F1C 8009D4BC 3C808100 */ lis r4, 0x8100
|
|
|
|
|
/* 097F20 8009D4C0 38A00080 */ li r5, 0x80
|
|
|
|
|
/* 097F24 8009D4C4 3863FF80 */ addi r3, r3, -128
|
|
|
|
|
/* 097F28 8009D4C8 4BF67FFD */ bl memcpy
|
|
|
|
|
/* 097F2C 8009D4CC 3C60800F */ lis r3, DSPInitCode@ha
|
|
|
|
|
/* 097F30 8009D4D0 38830BC8 */ addi r4, r3, DSPInitCode@l
|
|
|
|
|
/* 097F34 8009D4D4 3C608100 */ lis r3, 0x8100
|
|
|
|
|
/* 097F38 8009D4D8 38A00080 */ li r5, 0x80
|
|
|
|
|
/* 097F3C 8009D4DC 4BF67FE9 */ bl memcpy
|
|
|
|
|
/* 097F40 8009D4E0 3C608100 */ lis r3, 0x8100
|
|
|
|
|
/* 097F44 8009D4E4 38800080 */ li r4, 0x80
|
|
|
|
|
/* 097F48 8009D4E8 48000295 */ bl DCFlushRange
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097F4C 8009D4EC 3C60CC00 */ lis r3, DSP_REGS_BASE@ha
|
|
|
|
|
/* 097F50 8009D4F0 38635000 */ addi r3, r3, DSP_REGS_BASE@l
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097F54 8009D4F4 38000043 */ li r0, 0x43
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097F58 8009D4F8 B0030012 */ sth r0, DSP_12(r3)
|
|
|
|
|
/* 097F5C 8009D4FC 3BE3000A */ addi r31, r3, DSP_0A
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097F60 8009D500 380008AC */ li r0, 0x8ac
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097F64 8009D504 B003000A */ sth r0, DSP_0A(r3)
|
|
|
|
|
/* 097F68 8009D508 A003000A */ lhz r0, DSP_0A(r3)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097F6C 8009D50C 60000001 */ ori r0, r0, 1
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097F70 8009D510 B003000A */ sth r0, DSP_0A(r3)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D514:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097F74 8009D514 A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 097F78 8009D518 540007FF */ clrlwi. r0, r0, 0x1f
|
|
|
|
|
/* 097F7C 8009D51C 4082FFF8 */ bne lbl_8009D514
|
|
|
|
|
/* 097F80 8009D520 38000000 */ li r0, 0
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097F84 8009D524 3C80CC00 */ lis r4, DSP_REGS_BASE@ha
|
|
|
|
|
/* 097F88 8009D528 B0045000 */ sth r0, (DSP_REGS_BASE + DSP_00)@l(r4)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D52C:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097F8C 8009D52C 3BC45000 */ addi r30, r4, 0x5000
|
|
|
|
|
/* 097F90 8009D530 A47E0004 */ lhzu r3, 4(r30)
|
|
|
|
|
/* 097F94 8009D534 3BA45000 */ addi r29, r4, 0x5000
|
|
|
|
|
/* 097F98 8009D538 A41D0006 */ lhzu r0, 6(r29)
|
|
|
|
|
/* 097F9C 8009D53C 5060801E */ rlwimi r0, r3, 0x10, 0, 0xf
|
|
|
|
|
/* 097FA0 8009D540 54000001 */ rlwinm. r0, r0, 0, 0, 0
|
|
|
|
|
/* 097FA4 8009D544 4082FFE8 */ bne lbl_8009D52C
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097FA8 8009D548 3C60CC00 */ lis r3, DSP_REGS_BASE@ha
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FAC 8009D54C 3C000100 */ lis r0, 0x100
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097FB0 8009D550 3B635000 */ addi r27, r3, DSP_REGS_BASE@l
|
|
|
|
|
/* 097FB4 8009D554 941B0020 */ stwu r0, DSP_20(r27)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FB8 8009D558 38000000 */ li r0, 0
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097FBC 8009D55C 3B435000 */ addi r26, r3, DSP_REGS_BASE@l
|
|
|
|
|
/* 097FC0 8009D560 941A0024 */ stwu r0, DSP_24(r26)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FC4 8009D564 38000020 */ li r0, 0x20
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 097FC8 8009D568 3B235000 */ addi r25, r3, DSP_REGS_BASE@l
|
|
|
|
|
/* 097FCC 8009D56C 94190028 */ stwu r0, DSP_28(r25)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FD0 8009D570 A07F0000 */ lhz r3, 0(r31)
|
|
|
|
|
/* 097FD4 8009D574 48000008 */ b lbl_8009D57C
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D578:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FD8 8009D578 A07F0000 */ lhz r3, 0(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D57C:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FDC 8009D57C 546006B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
|
|
|
|
|
/* 097FE0 8009D580 4182FFF8 */ beq lbl_8009D578
|
|
|
|
|
/* 097FE4 8009D584 B07F0000 */ sth r3, 0(r31)
|
|
|
|
|
/* 097FE8 8009D588 48004D39 */ bl OSGetTick
|
|
|
|
|
/* 097FEC 8009D58C 7C7C1B78 */ mr r28, r3
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D590:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 097FF0 8009D590 48004D31 */ bl OSGetTick
|
|
|
|
|
/* 097FF4 8009D594 7C1C1850 */ subf r0, r28, r3
|
|
|
|
|
/* 097FF8 8009D598 2C000892 */ cmpwi r0, 0x892
|
|
|
|
|
/* 097FFC 8009D59C 4180FFF4 */ blt lbl_8009D590
|
|
|
|
|
/* 098000 8009D5A0 3C000100 */ lis r0, 0x100
|
|
|
|
|
/* 098004 8009D5A4 901B0000 */ stw r0, 0(r27)
|
|
|
|
|
/* 098008 8009D5A8 38600000 */ li r3, 0
|
|
|
|
|
/* 09800C 8009D5AC 38000020 */ li r0, 0x20
|
|
|
|
|
/* 098010 8009D5B0 907A0000 */ stw r3, 0(r26)
|
|
|
|
|
/* 098014 8009D5B4 90190000 */ stw r0, 0(r25)
|
|
|
|
|
/* 098018 8009D5B8 A07F0000 */ lhz r3, 0(r31)
|
|
|
|
|
/* 09801C 8009D5BC 48000008 */ b lbl_8009D5C4
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D5C0:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098020 8009D5C0 A07F0000 */ lhz r3, 0(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D5C4:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098024 8009D5C4 546006B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
|
|
|
|
|
/* 098028 8009D5C8 4182FFF8 */ beq lbl_8009D5C0
|
|
|
|
|
/* 09802C 8009D5CC B07F0000 */ sth r3, 0(r31)
|
|
|
|
|
/* 098030 8009D5D0 A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 098034 8009D5D4 54000566 */ rlwinm r0, r0, 0, 0x15, 0x13
|
|
|
|
|
/* 098038 8009D5D8 B01F0000 */ sth r0, 0(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D5DC:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 09803C 8009D5DC A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 098040 8009D5E0 5400056B */ rlwinm. r0, r0, 0, 0x15, 0x15
|
|
|
|
|
/* 098044 8009D5E4 4082FFF8 */ bne lbl_8009D5DC
|
|
|
|
|
/* 098048 8009D5E8 A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 09804C 8009D5EC 540007B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
|
|
|
|
|
/* 098050 8009D5F0 B01F0000 */ sth r0, 0(r31)
|
|
|
|
|
/* 098054 8009D5F4 A01E0000 */ lhz r0, 0(r30)
|
|
|
|
|
/* 098058 8009D5F8 48000008 */ b lbl_8009D600
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D5FC:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 09805C 8009D5FC A01E0000 */ lhz r0, 0(r30)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D600:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098060 8009D600 5405043E */ clrlwi r5, r0, 0x10
|
|
|
|
|
/* 098064 8009D604 54000421 */ rlwinm. r0, r0, 0, 0x10, 0x10
|
|
|
|
|
/* 098068 8009D608 4182FFF4 */ beq lbl_8009D5FC
|
|
|
|
|
/* 09806C 8009D60C A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 098070 8009D610 A09D0000 */ lhz r4, 0(r29)
|
|
|
|
|
/* 098074 8009D614 60000004 */ ori r0, r0, 4
|
|
|
|
|
/* 098078 8009D618 B01F0000 */ sth r0, 0(r31)
|
|
|
|
|
/* 09807C 8009D61C 380008AC */ li r0, 0x8ac
|
|
|
|
|
/* 098080 8009D620 B01F0000 */ sth r0, 0(r31)
|
|
|
|
|
/* 098084 8009D624 A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 098088 8009D628 60000001 */ ori r0, r0, 1
|
|
|
|
|
/* 09808C 8009D62C B01F0000 */ sth r0, 0(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D630:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098090 8009D630 A01F0000 */ lhz r0, 0(r31)
|
|
|
|
|
/* 098094 8009D634 540007FF */ clrlwi. r0, r0, 0x1f
|
|
|
|
|
/* 098098 8009D638 4082FFF8 */ bne lbl_8009D630
|
|
|
|
|
/* 09809C 8009D63C 4BFFFE4D */ bl OSGetArenaHi
|
|
|
|
|
/* 0980A0 8009D640 3883FF80 */ addi r4, r3, -128
|
|
|
|
|
/* 0980A4 8009D644 3C608100 */ lis r3, 0x8100
|
|
|
|
|
/* 0980A8 8009D648 38A00080 */ li r5, 0x80
|
|
|
|
|
/* 0980AC 8009D64C 4BF67E79 */ bl memcpy
|
|
|
|
|
/* 0980B0 8009D650 BB210014 */ lmw r25, 0x14(r1)
|
|
|
|
|
/* 0980B4 8009D654 80010034 */ lwz r0, 0x34(r1)
|
|
|
|
|
/* 0980B8 8009D658 38210030 */ addi r1, r1, 0x30
|
|
|
|
|
/* 0980BC 8009D65C 7C0803A6 */ mtlr r0
|
|
|
|
|
/* 0980C0 8009D660 4E800020 */ blr
|
2020-09-17 05:58:53 +01:00
|
|
|
|
|
|
|
|
glabel __OSStopAudioSystem
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 0980C4 8009D664 7C0802A6 */ mflr r0
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 0980C8 8009D668 3C60CC00 */ lis r3, DSP_REGS_BASE@ha
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 0980CC 8009D66C 90010004 */ stw r0, 4(r1)
|
|
|
|
|
/* 0980D0 8009D670 38000804 */ li r0, 0x804
|
|
|
|
|
/* 0980D4 8009D674 9421FFF0 */ stwu r1, -0x10(r1)
|
|
|
|
|
/* 0980D8 8009D678 93E1000C */ stw r31, 0xc(r1)
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 0980DC 8009D67C 3BE35000 */ addi r31, r3, DSP_REGS_BASE@l
|
|
|
|
|
/* 0980E0 8009D680 38635000 */ addi r3, r3, DSP_REGS_BASE@l
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 0980E4 8009D684 93C10008 */ stw r30, 8(r1)
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 0980E8 8009D688 B01F000A */ sth r0, DSP_0A(r31)
|
|
|
|
|
/* 0980EC 8009D68C A0030036 */ lhz r0, DSP_36(r3)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 0980F0 8009D690 5400045E */ rlwinm r0, r0, 0, 0x11, 0xf
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 0980F4 8009D694 B0030036 */ sth r0, DSP_36(r3)
|
|
|
|
|
/* 0980F8 8009D698 A41F000A */ lhzu r0, DSP_0A(r31)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 0980FC 8009D69C 48000008 */ b lbl_8009D6A4
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D6A0:
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098100 8009D6A0 A01F0000 */ lhz r0, DSP_00(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D6A4:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098104 8009D6A4 5400056B */ rlwinm. r0, r0, 0, 0x15, 0x15
|
|
|
|
|
/* 098108 8009D6A8 4082FFF8 */ bne lbl_8009D6A0
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 09810C 8009D6AC A01F0000 */ lhz r0, DSP_00(r31)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098110 8009D6B0 48000008 */ b lbl_8009D6B8
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D6B4:
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098114 8009D6B4 A01F0000 */ lhz r0, DSP_00(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D6B8:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098118 8009D6B8 540005AD */ rlwinm. r0, r0, 0, 0x16, 0x16
|
|
|
|
|
/* 09811C 8009D6BC 4082FFF8 */ bne lbl_8009D6B4
|
|
|
|
|
/* 098120 8009D6C0 380008AC */ li r0, 0x8ac
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098124 8009D6C4 3C60CC00 */ lis r3, DSP_REGS_BASE@ha
|
|
|
|
|
/* 098128 8009D6C8 B01F0000 */ sth r0, DSP_00(r31)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 09812C 8009D6CC 38000000 */ li r0, 0
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098130 8009D6D0 B0035000 */ sth r0, (DSP_REGS_BASE + DSP_00)@l(r3)
|
|
|
|
|
/* 098134 8009D6D4 38835000 */ addi r4, r3, DSP_REGS_BASE@l
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D6D8:
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098138 8009D6D8 A0640004 */ lhz r3, DSP_04(r4)
|
|
|
|
|
/* 09813C 8009D6DC A0040006 */ lhz r0, DSP_06(r4)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098140 8009D6E0 5060801E */ rlwimi r0, r3, 0x10, 0, 0xf
|
|
|
|
|
/* 098144 8009D6E4 54000001 */ rlwinm. r0, r0, 0, 0, 0
|
|
|
|
|
/* 098148 8009D6E8 4082FFF0 */ bne lbl_8009D6D8
|
|
|
|
|
/* 09814C 8009D6EC 48004BD5 */ bl OSGetTick
|
|
|
|
|
/* 098150 8009D6F0 7C7E1B78 */ mr r30, r3
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D6F4:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098154 8009D6F4 48004BCD */ bl OSGetTick
|
|
|
|
|
/* 098158 8009D6F8 7C1E1850 */ subf r0, r30, r3
|
|
|
|
|
/* 09815C 8009D6FC 2C00002C */ cmpwi r0, 0x2c
|
|
|
|
|
/* 098160 8009D700 4180FFF4 */ blt lbl_8009D6F4
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098164 8009D704 A01F0000 */ lhz r0, DSP_00(r31)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098168 8009D708 60000001 */ ori r0, r0, 1
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 09816C 8009D70C B01F0000 */ sth r0, DSP_00(r31)
|
|
|
|
|
/* 098170 8009D710 A01F0000 */ lhz r0, DSP_00(r31)
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 098174 8009D714 48000008 */ b lbl_8009D71C
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D718:
|
2021-09-11 21:54:39 +01:00
|
|
|
/* 098178 8009D718 A01F0000 */ lhz r0, DSP_00(r31)
|
2020-09-17 05:58:53 +01:00
|
|
|
lbl_8009D71C:
|
2020-09-17 16:57:40 +01:00
|
|
|
/* 09817C 8009D71C 540007FF */ clrlwi. r0, r0, 0x1f
|
|
|
|
|
/* 098180 8009D720 4082FFF8 */ bne lbl_8009D718
|
|
|
|
|
/* 098184 8009D724 80010014 */ lwz r0, 0x14(r1)
|
|
|
|
|
/* 098188 8009D728 83E1000C */ lwz r31, 0xc(r1)
|
|
|
|
|
/* 09818C 8009D72C 83C10008 */ lwz r30, 8(r1)
|
|
|
|
|
/* 098190 8009D730 38210010 */ addi r1, r1, 0x10
|
|
|
|
|
/* 098194 8009D734 7C0803A6 */ mtlr r0
|
|
|
|
|
/* 098198 8009D738 4E800020 */ blr
|
2020-09-17 05:58:53 +01:00
|
|
|
|
|
|
|
|
.section .data, "wa"
|
|
|
|
|
|
|
|
|
|
.balign 8
|
|
|
|
|
|
|
|
|
|
/* 000EDC48 800F0BC8 0080 */
|
|
|
|
|
DSPInitCode:
|
|
|
|
|
.long 0x029F0010, 0x029F0033, 0x029F0034, 0x029F0035, 0x029F0036, 0x029F0037, 0x029F0038, 0x029F0039
|
|
|
|
|
.long 0x12061203, 0x12041205, 0x00808000, 0x0088FFFF, 0x00841000, 0x0064001D, 0x02180000, 0x81001C1E
|
|
|
|
|
.long 0x00441B1E, 0x00840800, 0x00640027, 0x191E0000, 0x00DEFFFC, 0x02A08000, 0x029C0028, 0x16FC0054
|
|
|
|
|
.long 0x16FD4348, 0x002102FF, 0x02FF02FF, 0x02FF02FF, 0x02FF02FF, 0x00000000, 0x00000000, 0x00000000
|