mirror of https://github.com/PrimeDecomp/prime.git
229 lines
9.7 KiB
ArmAsm
229 lines
9.7 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .data
|
|
DSPInitCode:
|
|
.4byte 0x029F0010
|
|
.4byte 0x029F0033
|
|
.4byte 0x029F0034
|
|
.4byte 0x029F0035
|
|
.4byte 0x029F0036
|
|
.4byte 0x029F0037
|
|
.4byte 0x029F0038
|
|
.4byte 0x029F0039
|
|
.4byte 0x12061203
|
|
.4byte 0x12041205
|
|
.4byte 0x00808000
|
|
.4byte 0x0088FFFF
|
|
.4byte 0x00841000
|
|
.4byte 0x0064001D
|
|
.4byte 0x02180000
|
|
.4byte 0x81001C1E
|
|
.4byte 0x00441B1E
|
|
.4byte 0x00840800
|
|
.4byte 0x00640027
|
|
.4byte 0x191E0000
|
|
.4byte 0x00DEFFFC
|
|
.4byte 0x02A08000
|
|
.4byte 0x029C0028
|
|
.4byte 0x16FC0054
|
|
.4byte 0x16FD4348
|
|
.4byte 0x002102FF
|
|
.4byte 0x02FF02FF
|
|
.4byte 0x02FF02FF
|
|
.4byte 0x02FF02FF
|
|
.4byte 0x00000000
|
|
.4byte 0x00000000
|
|
.4byte 0x00000000
|
|
|
|
.section .text, "ax"
|
|
|
|
.global __OSInitAudioSystem
|
|
__OSInitAudioSystem:
|
|
/* 8037E7DC 0037B73C 7C 08 02 A6 */ mflr r0
|
|
/* 8037E7E0 0037B740 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 8037E7E4 0037B744 94 21 FF D0 */ stwu r1, -0x30(r1)
|
|
/* 8037E7E8 0037B748 BF 21 00 14 */ stmw r25, 0x14(r1)
|
|
/* 8037E7EC 0037B74C 4B FF FF A5 */ bl OSGetArenaHi
|
|
/* 8037E7F0 0037B750 3C 80 81 00 */ lis r4, 0x8100
|
|
/* 8037E7F4 0037B754 38 A0 00 80 */ li r5, 0x80
|
|
/* 8037E7F8 0037B758 38 63 FF 80 */ addi r3, r3, -128
|
|
/* 8037E7FC 0037B75C 4B C8 4C 95 */ bl memcpy
|
|
/* 8037E800 0037B760 3C 60 80 3F */ lis r3, DSPInitCode@ha
|
|
/* 8037E804 0037B764 38 83 0F A8 */ addi r4, r3, DSPInitCode@l
|
|
/* 8037E808 0037B768 3C 60 81 00 */ lis r3, 0x8100
|
|
/* 8037E80C 0037B76C 38 A0 00 80 */ li r5, 0x80
|
|
/* 8037E810 0037B770 4B C8 4C 81 */ bl memcpy
|
|
/* 8037E814 0037B774 3C 60 81 00 */ lis r3, 0x8100
|
|
/* 8037E818 0037B778 38 80 00 80 */ li r4, 0x80
|
|
/* 8037E81C 0037B77C 48 00 02 95 */ bl DCFlushRange
|
|
/* 8037E820 0037B780 3C 60 CC 00 */ lis r3, 0xCC005000@ha
|
|
/* 8037E824 0037B784 38 63 50 00 */ addi r3, r3, 0xCC005000@l
|
|
/* 8037E828 0037B788 38 00 00 43 */ li r0, 0x43
|
|
/* 8037E82C 0037B78C B0 03 00 12 */ sth r0, 0x12(r3)
|
|
/* 8037E830 0037B790 3B E3 00 0A */ addi r31, r3, 0xa
|
|
/* 8037E834 0037B794 38 00 08 AC */ li r0, 0x8ac
|
|
/* 8037E838 0037B798 B0 03 00 0A */ sth r0, 0xa(r3)
|
|
/* 8037E83C 0037B79C A0 03 00 0A */ lhz r0, 0xa(r3)
|
|
/* 8037E840 0037B7A0 60 00 00 01 */ ori r0, r0, 1
|
|
/* 8037E844 0037B7A4 B0 03 00 0A */ sth r0, 0xa(r3)
|
|
lbl_8037E848:
|
|
/* 8037E848 0037B7A8 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E84C 0037B7AC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
|
/* 8037E850 0037B7B0 40 82 FF F8 */ bne lbl_8037E848
|
|
/* 8037E854 0037B7B4 38 00 00 00 */ li r0, 0
|
|
/* 8037E858 0037B7B8 3C 80 CC 00 */ lis r4, 0xCC005000@ha
|
|
/* 8037E85C 0037B7BC B0 04 50 00 */ sth r0, 0xCC005000@l(r4)
|
|
lbl_8037E860:
|
|
/* 8037E860 0037B7C0 3B C4 50 00 */ addi r30, r4, 0x5000
|
|
/* 8037E864 0037B7C4 A4 7E 00 04 */ lhzu r3, 4(r30)
|
|
/* 8037E868 0037B7C8 3B A4 50 00 */ addi r29, r4, 0x5000
|
|
/* 8037E86C 0037B7CC A4 1D 00 06 */ lhzu r0, 6(r29)
|
|
/* 8037E870 0037B7D0 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf
|
|
/* 8037E874 0037B7D4 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
|
|
/* 8037E878 0037B7D8 40 82 FF E8 */ bne lbl_8037E860
|
|
/* 8037E87C 0037B7DC 3C 60 CC 00 */ lis r3, 0xCC005000@ha
|
|
/* 8037E880 0037B7E0 3C 00 01 00 */ lis r0, 0x100
|
|
/* 8037E884 0037B7E4 3B 63 50 00 */ addi r27, r3, 0xCC005000@l
|
|
/* 8037E888 0037B7E8 94 1B 00 20 */ stwu r0, 0x20(r27)
|
|
/* 8037E88C 0037B7EC 38 00 00 00 */ li r0, 0
|
|
/* 8037E890 0037B7F0 3B 43 50 00 */ addi r26, r3, 0x5000
|
|
/* 8037E894 0037B7F4 94 1A 00 24 */ stwu r0, 0x24(r26)
|
|
/* 8037E898 0037B7F8 38 00 00 20 */ li r0, 0x20
|
|
/* 8037E89C 0037B7FC 3B 23 50 00 */ addi r25, r3, 0x5000
|
|
/* 8037E8A0 0037B800 94 19 00 28 */ stwu r0, 0x28(r25)
|
|
/* 8037E8A4 0037B804 A0 7F 00 00 */ lhz r3, 0(r31)
|
|
/* 8037E8A8 0037B808 48 00 00 08 */ b lbl_8037E8B0
|
|
lbl_8037E8AC:
|
|
/* 8037E8AC 0037B80C A0 7F 00 00 */ lhz r3, 0(r31)
|
|
lbl_8037E8B0:
|
|
/* 8037E8B0 0037B810 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
|
|
/* 8037E8B4 0037B814 41 82 FF F8 */ beq lbl_8037E8AC
|
|
/* 8037E8B8 0037B818 B0 7F 00 00 */ sth r3, 0(r31)
|
|
/* 8037E8BC 0037B81C 48 00 6B 05 */ bl OSGetTick
|
|
/* 8037E8C0 0037B820 7C 7C 1B 78 */ mr r28, r3
|
|
lbl_8037E8C4:
|
|
/* 8037E8C4 0037B824 48 00 6A FD */ bl OSGetTick
|
|
/* 8037E8C8 0037B828 7C 1C 18 50 */ subf r0, r28, r3
|
|
/* 8037E8CC 0037B82C 2C 00 08 92 */ cmpwi r0, 0x892
|
|
/* 8037E8D0 0037B830 41 80 FF F4 */ blt lbl_8037E8C4
|
|
/* 8037E8D4 0037B834 3C 00 01 00 */ lis r0, 0x100
|
|
/* 8037E8D8 0037B838 90 1B 00 00 */ stw r0, 0(r27)
|
|
/* 8037E8DC 0037B83C 38 60 00 00 */ li r3, 0
|
|
/* 8037E8E0 0037B840 38 00 00 20 */ li r0, 0x20
|
|
/* 8037E8E4 0037B844 90 7A 00 00 */ stw r3, 0(r26)
|
|
/* 8037E8E8 0037B848 90 19 00 00 */ stw r0, 0(r25)
|
|
/* 8037E8EC 0037B84C A0 7F 00 00 */ lhz r3, 0(r31)
|
|
/* 8037E8F0 0037B850 48 00 00 08 */ b lbl_8037E8F8
|
|
lbl_8037E8F4:
|
|
/* 8037E8F4 0037B854 A0 7F 00 00 */ lhz r3, 0(r31)
|
|
lbl_8037E8F8:
|
|
/* 8037E8F8 0037B858 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
|
|
/* 8037E8FC 0037B85C 41 82 FF F8 */ beq lbl_8037E8F4
|
|
/* 8037E900 0037B860 B0 7F 00 00 */ sth r3, 0(r31)
|
|
/* 8037E904 0037B864 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E908 0037B868 54 00 05 66 */ rlwinm r0, r0, 0, 0x15, 0x13
|
|
/* 8037E90C 0037B86C B0 1F 00 00 */ sth r0, 0(r31)
|
|
lbl_8037E910:
|
|
/* 8037E910 0037B870 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E914 0037B874 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15
|
|
/* 8037E918 0037B878 40 82 FF F8 */ bne lbl_8037E910
|
|
/* 8037E91C 0037B87C A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E920 0037B880 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
|
|
/* 8037E924 0037B884 B0 1F 00 00 */ sth r0, 0(r31)
|
|
/* 8037E928 0037B888 A0 1E 00 00 */ lhz r0, 0(r30)
|
|
/* 8037E92C 0037B88C 48 00 00 08 */ b lbl_8037E934
|
|
lbl_8037E930:
|
|
/* 8037E930 0037B890 A0 1E 00 00 */ lhz r0, 0(r30)
|
|
lbl_8037E934:
|
|
/* 8037E934 0037B894 54 05 04 3E */ clrlwi r5, r0, 0x10
|
|
/* 8037E938 0037B898 54 00 04 21 */ rlwinm. r0, r0, 0, 0x10, 0x10
|
|
/* 8037E93C 0037B89C 41 82 FF F4 */ beq lbl_8037E930
|
|
/* 8037E940 0037B8A0 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E944 0037B8A4 A0 9D 00 00 */ lhz r4, 0(r29)
|
|
/* 8037E948 0037B8A8 60 00 00 04 */ ori r0, r0, 4
|
|
/* 8037E94C 0037B8AC B0 1F 00 00 */ sth r0, 0(r31)
|
|
/* 8037E950 0037B8B0 38 00 08 AC */ li r0, 0x8ac
|
|
/* 8037E954 0037B8B4 B0 1F 00 00 */ sth r0, 0(r31)
|
|
/* 8037E958 0037B8B8 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E95C 0037B8BC 60 00 00 01 */ ori r0, r0, 1
|
|
/* 8037E960 0037B8C0 B0 1F 00 00 */ sth r0, 0(r31)
|
|
lbl_8037E964:
|
|
/* 8037E964 0037B8C4 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E968 0037B8C8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
|
/* 8037E96C 0037B8CC 40 82 FF F8 */ bne lbl_8037E964
|
|
/* 8037E970 0037B8D0 4B FF FE 21 */ bl OSGetArenaHi
|
|
/* 8037E974 0037B8D4 38 83 FF 80 */ addi r4, r3, -128
|
|
/* 8037E978 0037B8D8 3C 60 81 00 */ lis r3, 0x8100
|
|
/* 8037E97C 0037B8DC 38 A0 00 80 */ li r5, 0x80
|
|
/* 8037E980 0037B8E0 4B C8 4B 11 */ bl memcpy
|
|
/* 8037E984 0037B8E4 BB 21 00 14 */ lmw r25, 0x14(r1)
|
|
/* 8037E988 0037B8E8 80 01 00 34 */ lwz r0, 0x34(r1)
|
|
/* 8037E98C 0037B8EC 38 21 00 30 */ addi r1, r1, 0x30
|
|
/* 8037E990 0037B8F0 7C 08 03 A6 */ mtlr r0
|
|
/* 8037E994 0037B8F4 4E 80 00 20 */ blr
|
|
|
|
.global __OSStopAudioSystem
|
|
__OSStopAudioSystem:
|
|
/* 8037E998 0037B8F8 7C 08 02 A6 */ mflr r0
|
|
/* 8037E99C 0037B8FC 3C 60 CC 00 */ lis r3, 0xCC005000@ha
|
|
/* 8037E9A0 0037B900 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 8037E9A4 0037B904 38 00 08 04 */ li r0, 0x804
|
|
/* 8037E9A8 0037B908 94 21 FF F0 */ stwu r1, -0x10(r1)
|
|
/* 8037E9AC 0037B90C 93 E1 00 0C */ stw r31, 0xc(r1)
|
|
/* 8037E9B0 0037B910 3B E3 50 00 */ addi r31, r3, 0xCC005000@l
|
|
/* 8037E9B4 0037B914 38 63 50 00 */ addi r3, r3, 0x5000
|
|
/* 8037E9B8 0037B918 93 C1 00 08 */ stw r30, 8(r1)
|
|
/* 8037E9BC 0037B91C B0 1F 00 0A */ sth r0, 0xa(r31)
|
|
/* 8037E9C0 0037B920 A0 03 00 36 */ lhz r0, 0x36(r3)
|
|
/* 8037E9C4 0037B924 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf
|
|
/* 8037E9C8 0037B928 B0 03 00 36 */ sth r0, 0x36(r3)
|
|
/* 8037E9CC 0037B92C A4 1F 00 0A */ lhzu r0, 0xa(r31)
|
|
/* 8037E9D0 0037B930 48 00 00 08 */ b lbl_8037E9D8
|
|
lbl_8037E9D4:
|
|
/* 8037E9D4 0037B934 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
lbl_8037E9D8:
|
|
/* 8037E9D8 0037B938 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15
|
|
/* 8037E9DC 0037B93C 40 82 FF F8 */ bne lbl_8037E9D4
|
|
/* 8037E9E0 0037B940 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037E9E4 0037B944 48 00 00 08 */ b lbl_8037E9EC
|
|
lbl_8037E9E8:
|
|
/* 8037E9E8 0037B948 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
lbl_8037E9EC:
|
|
/* 8037E9EC 0037B94C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16
|
|
/* 8037E9F0 0037B950 40 82 FF F8 */ bne lbl_8037E9E8
|
|
/* 8037E9F4 0037B954 38 00 08 AC */ li r0, 0x8ac
|
|
/* 8037E9F8 0037B958 3C 60 CC 00 */ lis r3, 0xCC005000@ha
|
|
/* 8037E9FC 0037B95C B0 1F 00 00 */ sth r0, 0(r31)
|
|
/* 8037EA00 0037B960 38 00 00 00 */ li r0, 0
|
|
/* 8037EA04 0037B964 B0 03 50 00 */ sth r0, 0xCC005000@l(r3)
|
|
/* 8037EA08 0037B968 38 83 50 00 */ addi r4, r3, 0x5000
|
|
lbl_8037EA0C:
|
|
/* 8037EA0C 0037B96C A0 64 00 04 */ lhz r3, 4(r4)
|
|
/* 8037EA10 0037B970 A0 04 00 06 */ lhz r0, 6(r4)
|
|
/* 8037EA14 0037B974 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf
|
|
/* 8037EA18 0037B978 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
|
|
/* 8037EA1C 0037B97C 40 82 FF F0 */ bne lbl_8037EA0C
|
|
/* 8037EA20 0037B980 48 00 69 A1 */ bl OSGetTick
|
|
/* 8037EA24 0037B984 7C 7E 1B 78 */ mr r30, r3
|
|
lbl_8037EA28:
|
|
/* 8037EA28 0037B988 48 00 69 99 */ bl OSGetTick
|
|
/* 8037EA2C 0037B98C 7C 1E 18 50 */ subf r0, r30, r3
|
|
/* 8037EA30 0037B990 2C 00 00 2C */ cmpwi r0, 0x2c
|
|
/* 8037EA34 0037B994 41 80 FF F4 */ blt lbl_8037EA28
|
|
/* 8037EA38 0037B998 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037EA3C 0037B99C 60 00 00 01 */ ori r0, r0, 1
|
|
/* 8037EA40 0037B9A0 B0 1F 00 00 */ sth r0, 0(r31)
|
|
/* 8037EA44 0037B9A4 A0 1F 00 00 */ lhz r0, 0(r31)
|
|
/* 8037EA48 0037B9A8 48 00 00 08 */ b lbl_8037EA50
|
|
lbl_8037EA4C:
|
|
/* 8037EA4C 0037B9AC A0 1F 00 00 */ lhz r0, 0(r31)
|
|
lbl_8037EA50:
|
|
/* 8037EA50 0037B9B0 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
|
/* 8037EA54 0037B9B4 40 82 FF F8 */ bne lbl_8037EA4C
|
|
/* 8037EA58 0037B9B8 80 01 00 14 */ lwz r0, 0x14(r1)
|
|
/* 8037EA5C 0037B9BC 83 E1 00 0C */ lwz r31, 0xc(r1)
|
|
/* 8037EA60 0037B9C0 83 C1 00 08 */ lwz r30, 8(r1)
|
|
/* 8037EA64 0037B9C4 38 21 00 10 */ addi r1, r1, 0x10
|
|
/* 8037EA68 0037B9C8 7C 08 03 A6 */ mtlr r0
|
|
/* 8037EA6C 0037B9CC 4E 80 00 20 */ blr
|