mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-16 20:47:53 -04:00
2166 lines
105 KiB
ArmAsm
2166 lines
105 KiB
ArmAsm
.rsp
|
|
|
|
// flags
|
|
|
|
OS_TASK_DP_WAIT equ 0x0002
|
|
|
|
// rdp rd flags
|
|
DPC_STATUS_XBUS_DMA equ 0x0001
|
|
DPC_STATUS_DMA_BUSY equ 0x0100
|
|
DPC_STATUS_START_VALID equ 0x0400
|
|
|
|
// rdp wr flags
|
|
DPC_STATUS_CLR_XBUS equ 0x0001
|
|
|
|
// sp status flags
|
|
SP_STATUS_SET_SIG7 equ 0x4000
|
|
|
|
.macro jumpTableEntry, addr
|
|
.dh addr & 0xffff
|
|
.endmacro
|
|
|
|
.macro OverlayEntry, loadStart, loadEnd, imemAddr
|
|
.dw loadStart
|
|
.dh (loadEnd - loadStart - 1) & 0xffff
|
|
.dh (imemAddr) & 0xffff
|
|
.endmacro
|
|
|
|
.create DATA_FILE, 0x0000
|
|
|
|
// 0x0000
|
|
data_0000: // overlay 0
|
|
OverlayEntry orga(Overlay0Address), orga(Overlay0End), Overlay0Address
|
|
// 0x0008
|
|
data_0008: // overlay 1
|
|
OverlayEntry orga(Overlay1Address), orga(Overlay1End) + 0x10, Overlay1Address
|
|
|
|
Overlay0DataLoadAddress:
|
|
Overlay1DataLoadAddress:
|
|
|
|
// OVERLAY 0 DATA
|
|
Overlay0DataStart:
|
|
|
|
// 0x0010
|
|
dispatchTable:
|
|
jumpTableEntry cmd_DISABLE
|
|
jumpTableEntry cmd_ADPCM
|
|
jumpTableEntry cmd_CLEARBUFF
|
|
jumpTableEntry cmd_ENVMIXER
|
|
jumpTableEntry cmd_LOADBUFF
|
|
jumpTableEntry cmd_RESAMPLE
|
|
jumpTableEntry cmd_SAVEBUFF
|
|
jumpTableEntry cmd_MP3
|
|
jumpTableEntry cmd_MP3ADDY
|
|
jumpTableEntry cmd_SETVOL
|
|
jumpTableEntry cmd_DMEMMOVE
|
|
jumpTableEntry cmd_LOADADPCM
|
|
jumpTableEntry cmd_MIXER
|
|
jumpTableEntry cmd_INTERLEAVE
|
|
jumpTableEntry cmd_16EC
|
|
jumpTableEntry cmd_SETLOOP
|
|
|
|
// 0x0030
|
|
data_0_0030:
|
|
.dh 0xf000, 0x0f00, 0x00f0, 0x000f, 0x0001, 0x0010, 0x0100, 0x1000
|
|
|
|
// 0x0040
|
|
data_0_0040:
|
|
.dh 0x0002, 0x0004, 0x0006, 0x0008, 0x000a, 0x000c, 0x000e, 0x0010
|
|
|
|
// 0x0050
|
|
data_0_0050:
|
|
.dh 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001
|
|
|
|
// 0x0060
|
|
data_0_0060:
|
|
.dh 0x0000, 0x0020, 0x0002, 0x0800, 0x0008, 0x7fff, 0x0100, 0x0200
|
|
|
|
// 0x0070
|
|
data_0_0070:
|
|
.dh 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000
|
|
|
|
// 0x0080
|
|
data_0_0080:
|
|
.dh 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000
|
|
|
|
// 0x0090
|
|
data_0_0090:
|
|
.dh 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000
|
|
|
|
// 0x00a0
|
|
data_0_00A0:
|
|
.dh 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001
|
|
|
|
// 0x00b0
|
|
data_0_00B0:
|
|
.dh 0x2000, 0x4000, 0x6000, 0x8000, 0xa000, 0xc000, 0xe000, 0xffff
|
|
|
|
// 0x00c0
|
|
data_0_00C0:
|
|
.word 0x0c3966ad, 0x0d46ffdf, 0x0b396696, 0x0e5fffd8, 0x0a446669, 0x0f83ffd0, 0x095a6626, 0x10b4ffc8
|
|
.word 0x087d65cd, 0x11f0ffbf, 0x07ab655e, 0x1338ffb6, 0x06e464d9, 0x148cffac, 0x0628643f, 0x15ebffa1
|
|
.word 0x0577638f, 0x1756ff96, 0x04d162cb, 0x18cbff8a, 0x043561f3, 0x1a4cff7e, 0x03a46106, 0x1bd7ff71
|
|
.word 0x031c6007, 0x1d6cff64, 0x029f5ef5, 0x1f0bff56, 0x022a5dd0, 0x20b3ff48, 0x01be5c9a, 0x2264ff3a
|
|
.word 0x015b5b53, 0x241eff2c, 0x010159fc, 0x25e0ff1e, 0x00ae5896, 0x27a9ff10, 0x00635720, 0x297aff02
|
|
.word 0x001f559d, 0x2b50fef4, 0xffe2540d, 0x2d2cfee8, 0xffac5270, 0x2f0dfedb, 0xff7c50c7, 0x30f3fed0
|
|
.word 0xff534f14, 0x32dcfec6, 0xff2e4d57, 0x34c8febd, 0xff0f4b91, 0x36b6feb6, 0xfef549c2, 0x38a5feb0
|
|
.word 0xfedf47ed, 0x3a95feac, 0xfece4611, 0x3c85feab, 0xfec04430, 0x3e74feac, 0xfeb6424a, 0x4060feaf
|
|
.word 0xfeaf4060, 0x424afeb6, 0xfeac3e74, 0x4430fec0, 0xfeab3c85, 0x4611fece, 0xfeac3a95, 0x47edfedf
|
|
.word 0xfeb038a5, 0x49c2fef5, 0xfeb636b6, 0x4b91ff0f, 0xfebd34c8, 0x4d57ff2e, 0xfec632dc, 0x4f14ff53
|
|
.word 0xfed030f3, 0x50c7ff7c, 0xfedb2f0d, 0x5270ffac, 0xfee82d2c, 0x540dffe2, 0xfef42b50, 0x559d001f
|
|
.word 0xff02297a, 0x57200063, 0xff1027a9, 0x589600ae, 0xff1e25e0, 0x59fc0101, 0xff2c241e, 0x5b53015b
|
|
.word 0xff3a2264, 0x5c9a01be, 0xff4820b3, 0x5dd0022a, 0xff561f0b, 0x5ef5029f, 0xff641d6c, 0x6007031c
|
|
.word 0xff711bd7, 0x610603a4, 0xff7e1a4c, 0x61f30435, 0xff8a18cb, 0x62cb04d1, 0xff961756, 0x638f0577
|
|
.word 0xffa115eb, 0x643f0628, 0xffac148c, 0x64d906e4, 0xffb61338, 0x655e07ab, 0xffbf11f0, 0x65cd087d
|
|
.word 0xffc810b4, 0x6626095a, 0xffd00f83, 0x66690a44, 0xffd80e5f, 0x66960b39, 0xffdf0d46, 0x66ad0c39
|
|
|
|
Overlay0DataEnd:
|
|
|
|
// OVERLAY 1 DATA
|
|
.headersize Overlay1DataLoadAddress - orga()
|
|
Overlay1DataStart:
|
|
|
|
// 0x0010
|
|
data_1_0010:
|
|
.dh 0xfec4, 0xfb14, 0xf4fa, 0xec84, 0xe1c4, 0xd4dc, 0xc5e4, 0xa268
|
|
|
|
// 0x0020
|
|
data_1_0020:
|
|
.dh 0x8e3a, 0x78ae, 0x61f8, 0x4a50, 0x31f2, 0x1916, 0x8000, 0x0000
|
|
|
|
// 0x0030
|
|
data_1_0030:
|
|
.dh 0xffb2, 0xfd3a, 0xf854, 0xf10a, 0xe76c, 0xdb94, 0xcda0, 0xbdae
|
|
|
|
// 0x0040
|
|
data_1_0040:
|
|
.dh 0xabec, 0x9880, 0x839c, 0xdae8, 0xac7c, 0x7c68, 0x4b20, 0x1920
|
|
|
|
// 0x0050
|
|
data_1_0050:
|
|
.dh 0xb504, 0xa57e, 0x0001, 0x6a09, 0x0002, 0xd413, 0x0005, 0xa827
|
|
|
|
// 0x0060
|
|
// ?
|
|
.dh 0x0000, 0xfff3, 0x005d, 0xff38, 0x037a, 0xf736, 0x0b37, 0xc00e
|
|
.dh 0x7fff, 0x3ff2, 0x0b37, 0x08ca, 0x037a, 0x00c8, 0x005d, 0x000d
|
|
|
|
// 0x0080
|
|
DeWindowLUT:
|
|
.word 0x0000fff3, 0x005dff38, 0x037af736, 0x0b37c00e, 0x7fff3ff2, 0x0b3708ca, 0x037a00c8, 0x005d000d
|
|
.word 0x0000fff2, 0x005fff1d, 0x0369f697, 0x0a2abce7, 0x7feb3ccb, 0x0c2b082b, 0x038500af, 0x005b000b
|
|
.word 0x0000fff2, 0x005fff1d, 0x0369f697, 0x0a2abce7, 0x7feb3ccb, 0x0c2b082b, 0x038500af, 0x005b000b
|
|
.word 0x0000fff1, 0x0061ff02, 0x0354f5f9, 0x0905b9c4, 0x7fb039a4, 0x0d08078c, 0x038c0098, 0x0058000a
|
|
.word 0x0000fff1, 0x0061ff02, 0x0354f5f9, 0x0905b9c4, 0x7fb039a4, 0x0d08078c, 0x038c0098, 0x0058000a
|
|
.word 0x0000ffef, 0x0062fee6, 0x033bf55c, 0x07c8b6a4, 0x7f4d367e, 0x0dce06ee, 0x038f0080, 0x00560009
|
|
.word 0x0000ffef, 0x0062fee6, 0x033bf55c, 0x07c8b6a4, 0x7f4d367e, 0x0dce06ee, 0x038f0080, 0x00560009
|
|
.word 0x0000ffee, 0x0063feca, 0x031cf4c3, 0x0671b38c, 0x7ec2335d, 0x0e7c0652, 0x038e006b, 0x00530008
|
|
.word 0x0000ffee, 0x0063feca, 0x031cf4c3, 0x0671b38c, 0x7ec2335d, 0x0e7c0652, 0x038e006b, 0x00530008
|
|
.word 0x0000ffec, 0x0064feac, 0x02f7f42c, 0x0502b07c, 0x7e123041, 0x0f1405b7, 0x038a0056, 0x00500007
|
|
.word 0x0000ffec, 0x0064feac, 0x02f7f42c, 0x0502b07c, 0x7e123041, 0x0f1405b7, 0x038a0056, 0x00500007
|
|
.word 0x0000ffeb, 0x0064fe8e, 0x02cef399, 0x037aad75, 0x7d3a2d2c, 0x0f970520, 0x03820043, 0x004d0007
|
|
.word 0x0000ffeb, 0x0064fe8e, 0x02cef399, 0x037aad75, 0x7d3a2d2c, 0x0f970520, 0x03820043, 0x004d0007
|
|
.word 0xffffffe9, 0x0063fe6f, 0x029ef30b, 0x01d8aa7b, 0x7c3d2a1f, 0x1004048b, 0x03770030, 0x004a0006
|
|
.word 0xffffffe9, 0x0063fe6f, 0x029ef30b, 0x01d8aa7b, 0x7c3d2a1f, 0x1004048b, 0x03770030, 0x004a0006
|
|
.word 0xffffffe7, 0x0062fe4f, 0x0269f282, 0x001fa78d, 0x7b1a271c, 0x105d03f9, 0x036a001f, 0x00460006
|
|
.word 0xffffffe7, 0x0062fe4f, 0x0269f282, 0x001fa78d, 0x7b1a271c, 0x105d03f9, 0x036a001f, 0x00460006
|
|
.word 0xffffffe4, 0x0061fe2f, 0x022ff1ff, 0xfe4ca4af, 0x79d32425, 0x10a2036c, 0x03590010, 0x00430005
|
|
.word 0xffffffe4, 0x0061fe2f, 0x022ff1ff, 0xfe4ca4af, 0x79d32425, 0x10a2036c, 0x03590010, 0x00430005
|
|
.word 0xffffffe2, 0x005efe10, 0x01eef184, 0xfc61a1e1, 0x78692139, 0x10d302e3, 0x03460001, 0x00400004
|
|
.word 0xffffffe2, 0x005efe10, 0x01eef184, 0xfc61a1e1, 0x78692139, 0x10d302e3, 0x03460001, 0x00400004
|
|
.word 0xffffffe0, 0x005bfdf0, 0x01a8f111, 0xfa5f9f27, 0x76db1e5c, 0x10f2025e, 0x0331fff3, 0x003d0004
|
|
.word 0xffffffe0, 0x005bfdf0, 0x01a8f111, 0xfa5f9f27, 0x76db1e5c, 0x10f2025e, 0x0331fff3, 0x003d0004
|
|
.word 0xffffffde, 0x0057fdd0, 0x015bf0a7, 0xf8459c80, 0x752c1b8e, 0x110001de, 0x0319ffe7, 0x003a0003
|
|
.word 0xffffffde, 0x0057fdd0, 0x015bf0a7, 0xf8459c80, 0x752c1b8e, 0x110001de, 0x0319ffe7, 0x003a0003
|
|
.word 0xfffeffdb, 0x0053fdb0, 0x0108f046, 0xf61399ee, 0x735c18d1, 0x10fd0163, 0x0300ffdc, 0x00370003
|
|
.word 0xfffeffdb, 0x0053fdb0, 0x0108f046, 0xf61399ee, 0x735c18d1, 0x10fd0163, 0x0300ffdc, 0x00370003
|
|
.word 0xfffeffd8, 0x004dfd90, 0x00b0eff0, 0xf3cc9775, 0x716c1624, 0x10ea00ee, 0x02e5ffd2, 0x00330003
|
|
.word 0xfffeffd8, 0x004dfd90, 0x00b0eff0, 0xf3cc9775, 0x716c1624, 0x10ea00ee, 0x02e5ffd2, 0x00330003
|
|
.word 0xfffeffd6, 0x0047fd72, 0x0051efa6, 0xf16f9514, 0x6f5e138a, 0x10c8007e, 0x02caffc9, 0x00300003
|
|
.word 0xfffeffd6, 0x0047fd72, 0x0051efa6, 0xf16f9514, 0x6f5e138a, 0x10c8007e, 0x02caffc9, 0x00300003
|
|
.word 0xfffeffd3, 0x0040fd54, 0xffecef68, 0xeefc92cd, 0x6d331104, 0x10980014, 0x02acffc0, 0x002d0002
|
|
.word 0xfffeffd3, 0x0040fd54, 0xffecef68, 0xeefc92cd, 0x6d331104, 0x10980014, 0x02acffc0, 0x002d0002
|
|
.word 0x0030ffc9, 0x02ca007e, 0x10c8138a, 0x6f5e9514, 0xf16fefa6, 0x0051fd72, 0x0047ffd6, 0xfffe0003
|
|
.word 0x0030ffc9, 0x02ca007e, 0x10c8138a, 0x6f5e9514, 0xf16fefa6, 0x0051fd72, 0x0047ffd6, 0xfffe0003
|
|
.word 0x0033ffd2, 0x02e500ee, 0x10ea1624, 0x716c9775, 0xf3cceff0, 0x00b0fd90, 0x004dffd8, 0xfffe0003
|
|
.word 0x0033ffd2, 0x02e500ee, 0x10ea1624, 0x716c9775, 0xf3cceff0, 0x00b0fd90, 0x004dffd8, 0xfffe0003
|
|
.word 0x0037ffdc, 0x03000163, 0x10fd18d1, 0x735c99ee, 0xf613f046, 0x0108fdb0, 0x0053ffdb, 0xfffe0003
|
|
.word 0x0037ffdc, 0x03000163, 0x10fd18d1, 0x735c99ee, 0xf613f046, 0x0108fdb0, 0x0053ffdb, 0xfffe0003
|
|
.word 0x003affe7, 0x031901de, 0x11001b8e, 0x752c9c80, 0xf845f0a7, 0x015bfdd0, 0x0057ffde, 0xffff0003
|
|
.word 0x003affe7, 0x031901de, 0x11001b8e, 0x752c9c80, 0xf845f0a7, 0x015bfdd0, 0x0057ffde, 0xffff0004
|
|
.word 0x003dfff3, 0x0331025e, 0x10f21e5c, 0x76db9f27, 0xfa5ff111, 0x01a8fdf0, 0x005bffe0, 0xffff0004
|
|
.word 0x003dfff3, 0x0331025e, 0x10f21e5c, 0x76db9f27, 0xfa5ff111, 0x01a8fdf0, 0x005bffe0, 0xffff0004
|
|
.word 0x00400001, 0x034602e3, 0x10d32139, 0x7869a1e1, 0xfc61f184, 0x01eefe10, 0x005effe2, 0xffff0004
|
|
.word 0x00400001, 0x034602e3, 0x10d32139, 0x7869a1e1, 0xfc61f184, 0x01eefe10, 0x005effe2, 0xffff0005
|
|
.word 0x00430010, 0x0359036c, 0x10a22425, 0x79d3a4af, 0xfe4cf1ff, 0x022ffe2f, 0x0061ffe4, 0xffff0005
|
|
.word 0x00430010, 0x0359036c, 0x10a22425, 0x79d3a4af, 0xfe4cf1ff, 0x022ffe2f, 0x0061ffe4, 0xffff0006
|
|
.word 0x0046001f, 0x036a03f9, 0x105d271c, 0x7b1aa78d, 0x001ff282, 0x0269fe4f, 0x0062ffe7, 0xffff0006
|
|
.word 0x0046001f, 0x036a03f9, 0x105d271c, 0x7b1aa78d, 0x001ff282, 0x0269fe4f, 0x0062ffe7, 0xffff0006
|
|
.word 0x004a0030, 0x0377048b, 0x10042a1f, 0x7c3daa7b, 0x01d8f30b, 0x029efe6f, 0x0063ffe9, 0xffff0006
|
|
.word 0x004a0030, 0x0377048b, 0x10042a1f, 0x7c3daa7b, 0x01d8f30b, 0x029efe6f, 0x0063ffe9, 0xffff0007
|
|
.word 0x004d0043, 0x03820520, 0x0f972d2c, 0x7d3aad75, 0x037af399, 0x02cefe8e, 0x0064ffeb, 0x00000007
|
|
.word 0x004d0043, 0x03820520, 0x0f972d2c, 0x7d3aad75, 0x037af399, 0x02cefe8e, 0x0064ffeb, 0x00000007
|
|
.word 0x00500056, 0x038a05b7, 0x0f143041, 0x7e12b07c, 0x0502f42c, 0x02f7feac, 0x0064ffec, 0x00000007
|
|
.word 0x00500056, 0x038a05b7, 0x0f143041, 0x7e12b07c, 0x0502f42c, 0x02f7feac, 0x0064ffec, 0x00000008
|
|
.word 0x0053006b, 0x038e0652, 0x0e7c335d, 0x7ec2b38c, 0x0671f4c3, 0x031cfeca, 0x0063ffee, 0x00000008
|
|
.word 0x0053006b, 0x038e0652, 0x0e7c335d, 0x7ec2b38c, 0x0671f4c3, 0x031cfeca, 0x0063ffee, 0x00000009
|
|
.word 0x00560080, 0x038f06ee, 0x0dce367e, 0x7f4db6a4, 0x07c8f55c, 0x033bfee6, 0x0062ffef, 0x00000009
|
|
.word 0x00560080, 0x038f06ee, 0x0dce367e, 0x7f4db6a4, 0x07c8f55c, 0x033bfee6, 0x0062ffef, 0x0000000a
|
|
.word 0x00580098, 0x038c078c, 0x0d0839a4, 0x7fb0b9c4, 0x0905f5f9, 0x0354ff02, 0x0061fff1, 0x0000000a
|
|
.word 0x00580098, 0x038c078c, 0x0d0839a4, 0x7fb0b9c4, 0x0905f5f9, 0x0354ff02, 0x0061fff1, 0x0000000b
|
|
.word 0x005b00af, 0x0385082b, 0x0c2b3ccb, 0x7febbce7, 0x0a2af697, 0x0369ff1d, 0x005ffff2, 0x0000000b
|
|
.word 0x005b00af, 0x0385082b, 0x0c2b3ccb, 0x7febbce7, 0x0a2af697, 0x0369ff1d, 0x005ffff2, 0x0000000d
|
|
.word 0x005d00c8, 0x037a08ca, 0x0b373ff2, 0x7fffc00e, 0x0b37f736, 0x037aff38, 0x005dfff3, 0x0000000d
|
|
.word 0x005d00c8, 0x037a08ca, 0x0b373ff2, 0x7fffc00e, 0x0b37f736, 0x037aff38, 0x005dfff3, 0x00000000
|
|
|
|
Overlay1DataEnd:
|
|
|
|
// OVERLAY 0 BSS
|
|
.headersize Overlay0DataEnd - orga()
|
|
Overlay0BssStart:
|
|
|
|
// 0x02c0
|
|
nextTaskEntry_len equ 0x140
|
|
nextTaskEntry:
|
|
.skip 0x140
|
|
|
|
// 0x0400
|
|
adpcmTable:
|
|
.skip 0x100
|
|
|
|
// 0x0500
|
|
data_0_0500:
|
|
.skip 0x170
|
|
|
|
// 0x0670
|
|
data_0_0670:
|
|
.skip 0x370
|
|
|
|
// 0x09e0
|
|
data_0_09E0:
|
|
.skip 0x170
|
|
|
|
// 0x0b50
|
|
data_0_0B50:
|
|
.skip 0x170
|
|
|
|
// 0x0cc0
|
|
data_0_0CC0:
|
|
.skip 0x170
|
|
|
|
// 0x0e30
|
|
data_0_0E30:
|
|
.skip 0x180
|
|
|
|
// 0x0fb0
|
|
data_0_0FB0_neg equ -(0x1000 - data_0_0FB0)
|
|
data_0_0FB0:
|
|
.skip 0x10
|
|
|
|
// 0xfc0
|
|
data_0_0FC0_neg equ -(0x1000 - data_0_0FC0)
|
|
data_0_0FC0:
|
|
.skip 0x30
|
|
|
|
Overlay0BssEnd:
|
|
|
|
.if Overlay0BssEnd > 0x1000-0x10
|
|
.error "Not enough room in DMEM"
|
|
.endif
|
|
|
|
// OVERLAY 1 BSS
|
|
.headersize Overlay1DataEnd - orga()
|
|
Overlay1BssStart:
|
|
|
|
// 0x08a0
|
|
data_1_08A0:
|
|
.skip 0x448
|
|
|
|
// 0x0ce8
|
|
data_1_0CE8:
|
|
.skip 0x8
|
|
|
|
// 0x0cf0
|
|
data_1_0CF0:
|
|
.skip 0x180
|
|
|
|
// 0x0e70
|
|
data_1_0E70:
|
|
.skip 0x180
|
|
|
|
Overlay1BssEnd:
|
|
|
|
.if Overlay1BssEnd > 0x1000-0x10
|
|
.error "Not enough room in DMEM"
|
|
.endif
|
|
|
|
// Shared bss
|
|
|
|
// 0x0ff0
|
|
audioStruct_0 equ 0x0
|
|
audioStruct_4 equ 0x4
|
|
audioStruct_8 equ 0x8
|
|
audioStruct_C equ 0xc
|
|
audioStruct:
|
|
.skip 0x10
|
|
|
|
.close
|
|
|
|
.create CODE_FILE, 0x04001080
|
|
|
|
// Register names
|
|
cmd_w0 equ k0
|
|
cmd_w1 equ t9
|
|
|
|
// OVERLAY 0
|
|
Overlay0Address:
|
|
|
|
// on entry from rspboot, at contains a pointer to the OSTask
|
|
entry:
|
|
/* 04001080 000000 40055800 */ mfc0 a1, DPC_STATUS
|
|
/* 04001084 000004 8C3C0030 */ lw gp, 0x30(at) // task_data
|
|
/* 04001088 000008 8C3B0034 */ lw k1, 0x34(at) // task_data_size
|
|
/* 0400108C 00000C 30A40001 */ andi a0, a1, DPC_STATUS_XBUS_DMA
|
|
/* 04001090 000010 10800006 */ beqz a0, no_dma
|
|
/* 04001094 000014 30A40100 */ andi a0, a1, DPC_STATUS_DMA_BUSY
|
|
/* 04001098 000018 10800004 */ beqz a0, no_dma
|
|
/* 0400109C 00001C 40045800 */ mfc0 a0, DPC_STATUS
|
|
dpc_dma_busy:
|
|
/* 040010A0 000020 30840100 */ andi a0, a0, DPC_STATUS_DMA_BUSY
|
|
/* 040010A4 000024 1C80FFFE */ bgtz a0, dpc_dma_busy
|
|
/* 040010A8 000028 40045800 */ mfc0 a0, DPC_STATUS
|
|
no_dma:
|
|
/* 040010AC 00002C 20180FA0 */ addi t8, zero, 0xfa0
|
|
/* 040010B0 000030 8C250010 */ lw a1, 0x10(at) // ucode dram addr
|
|
/* 040010B4 000034 8C040000 */ lw a0, (data_0000)(zero) // overlay 0 start
|
|
/* 040010B8 000038 00852020 */ add a0, a0, a1 // convert overlay 0 start to dram addr
|
|
/* 040010BC 00003C AC040000 */ sw a0, (data_0000)(zero)
|
|
/* 040010C0 000040 8C040008 */ lw a0, (data_0008)(zero) // overlay 1 start
|
|
/* 040010C4 000044 00852020 */ add a0, a0, a1 // convert overlay 1 start to dram addr
|
|
/* 040010C8 000048 AC040008 */ sw a0, (data_0008)(zero)
|
|
/* 040010CC 00004C 8C250018 */ lw a1, 0x18(at) // ucode_data dram addr
|
|
/* 040010D0 000050 AC050FF8 */ sw a1, (audioStruct + 0x8)(zero) // save ucode_data dram addr
|
|
/* 040010D4 000054 0D000454 */ jal load_acmd_list
|
|
/* 040010D8 000058 001C1020 */ add v0, zero, gp
|
|
/* 040010DC 00005C 40023000 */ mfc0 v0, SP_DMA_BUSY
|
|
|
|
dma_wait_then_dispatch:
|
|
@@dma_busy:
|
|
/* 040010E0 000060 1440FFFF */ bnez v0, @@dma_busy
|
|
/* 040010E4 000064 40023000 */ mfc0 v0, SP_DMA_BUSY
|
|
dispatch_cmd:
|
|
/* 040010E8 000068 8FBA0000 */ lw cmd_w0, 0(sp) // first cmd word
|
|
/* 040010EC 00006C 8FB90004 */ lw cmd_w1, 4(sp) // second cmd word
|
|
/* 040010F0 000070 239C0008 */ addi gp, gp, 8
|
|
/* 040010F4 000074 001A0DC2 */ srl at, cmd_w0, 0x17 // cmd byte << 1
|
|
/* 040010F8 000078 302100FE */ andi at, at, 0xfe
|
|
/* 040010FC 00007C 84210010 */ lh at, (dispatchTable)(at) // load jtbl label
|
|
/* 04001100 000080 00200008 */ jr at // enter cmd handler
|
|
/* 04001104 000084 237BFFF8 */ addi k1, k1, -8 // decrement task_data_size
|
|
/* 04001108 000088 0000000D */ break
|
|
|
|
next_cmd:
|
|
/* 0400110C 00008C 1FC0FFF6 */ bgtz fp, dispatch_cmd
|
|
/* 04001110 000090 23BD0008 */ addi sp, sp, 8
|
|
/* 04001114 000094 1B600005 */ blez k1, task_done
|
|
/* 04001118 000098 34014000 */ ori at, zero, SP_STATUS_SET_SIG7
|
|
/* 0400111C 00009C 0D000454 */ jal load_acmd_list
|
|
/* 04001120 0000A0 001C1020 */ add v0, zero, gp
|
|
/* 04001124 0000A4 09000438 */ j dma_wait_then_dispatch
|
|
/* 04001128 0000A8 40023000 */ mfc0 v0, SP_DMA_BUSY
|
|
|
|
task_done:
|
|
@@dma_busy:
|
|
/* 0400112C 0000AC 40023000 */ mfc0 v0, SP_DMA_BUSY
|
|
/* 04001130 0000B0 1440FFFE */ bnez v0, @@dma_busy
|
|
/* 04001134 0000B4 00000000 */ nop
|
|
/* 04001138 0000B8 40803800 */ mtc0 zero, SP_SEMAPHORE
|
|
/* 0400113C 0000BC 40812000 */ mtc0 at, SP_STATUS
|
|
/* 04001140 0000C0 0000000D */ break
|
|
/* 04001144 0000C4 00000000 */ nop
|
|
forever:
|
|
/* 04001148 0000C8 1000FFFF */ b forever
|
|
/* 0400114C 0000CC 00000000 */ nop
|
|
|
|
load_acmd_list:
|
|
/* 04001150 0000D0 23E50000 */ addi a1, $ra, 0
|
|
/* 04001154 0000D4 23630000 */ addi v1, k1, 0
|
|
/* 04001158 0000D8 2064FEC0 */ addi a0, v1, -nextTaskEntry_len
|
|
/* 0400115C 0000DC 18800002 */ blez a0, .L04001168
|
|
/* 04001160 0000E0 200102C0 */ addi at, zero, nextTaskEntry
|
|
/* 04001164 0000E4 20030140 */ addi v1, zero, nextTaskEntry_len
|
|
.L04001168:
|
|
/* 04001168 0000E8 207E0000 */ addi fp, v1, 0
|
|
/* 0400116C 0000EC 0D00045F */ jal dma_read
|
|
/* 04001170 0000F0 2063FFFF */ addi v1, v1, -1
|
|
/* 04001174 0000F4 00A00008 */ jr a1
|
|
/* 04001178 0000F8 201D02C0 */ addi sp, zero, nextTaskEntry
|
|
|
|
/***************************************************************
|
|
* RDRAM -> SP Mem DMA Transfer
|
|
* at = SP Mem Addr
|
|
* v0 = RDRAM Addr
|
|
* v1 = Length - 1
|
|
*/
|
|
dma_read:
|
|
/* 0400117C 0000FC 40042800 */ mfc0 a0, SP_DMA_FULL
|
|
@@dma_full:
|
|
/* 04001180 000100 1480FFFF */ bnez a0, @@dma_full
|
|
/* 04001184 000104 40042800 */ mfc0 a0, SP_DMA_FULL
|
|
/* 04001188 000108 40810000 */ mtc0 at, SP_MEM_ADDR
|
|
/* 0400118C 00010C 40820800 */ mtc0 v0, SP_DRAM_ADDR
|
|
/* 04001190 000110 03E00008 */ jr $ra
|
|
/* 04001194 000114 40831000 */ mtc0 v1, SP_RD_LEN
|
|
|
|
/***************************************************************
|
|
* SP Mem -> RDRAM DMA Transfer
|
|
* at = SP Mem Addr
|
|
* v0 = RDRAM Addr
|
|
* v1 = Length - 1
|
|
*/
|
|
dma_write:
|
|
/* 04001198 000118 40042800 */ mfc0 a0, SP_DMA_FULL
|
|
@@dma_full:
|
|
/* 0400119C 00011C 1480FFFF */ bnez a0, @@dma_full
|
|
/* 040011A0 000120 40042800 */ mfc0 a0, SP_DMA_FULL
|
|
/* 040011A4 000124 40810000 */ mtc0 at, SP_MEM_ADDR
|
|
/* 040011A8 000128 40820800 */ mtc0 v0, SP_DRAM_ADDR
|
|
/* 040011AC 00012C 03E00008 */ jr $ra
|
|
/* 040011B0 000130 40831800 */ mtc0 v1, SP_WR_LEN
|
|
|
|
/***************************************************************
|
|
* Wait for ongoing DMA to complete
|
|
*/
|
|
dma_wait:
|
|
@@dma_busy:
|
|
/* 040011B4 000134 40043000 */ mfc0 a0, SP_DMA_BUSY
|
|
/* 040011B8 000138 1480FFFE */ bnez a0, @@dma_busy
|
|
/* 040011BC 00013C 00000000 */ nop
|
|
/* 040011C0 000140 03E00008 */ jr $ra
|
|
/* 040011C4 000144 00000000 */ nop
|
|
|
|
/***************************************************************
|
|
* Loads overlay 0 once overlay 1 exits
|
|
*/
|
|
reload_overlay_0:
|
|
/* 040011C8 000148 84030004 */ lh v1, (data_0000 + 0x4)(zero)
|
|
/* 040011CC 00014C 8C020000 */ lw v0, (data_0000 + 0x0)(zero)
|
|
/* 040011D0 000150 8401000E */ lh at, (data_0008 + 0x6)(zero)
|
|
/* 040011D4 000154 00411020 */ add v0, v0, at
|
|
/* 040011D8 000158 00611822 */ sub v1, v1, at
|
|
/* 040011DC 00015C 84010006 */ lh at, (data_0000 + 0x6)(zero)
|
|
/* 040011E0 000160 00411022 */ sub v0, v0, at
|
|
/* 040011E4 000164 00611820 */ add v1, v1, at
|
|
/* 040011E8 000168 0D00045F */ jal dma_read
|
|
/* 040011EC 00016C 8401000E */ lh at, (data_0008 + 0x6)(zero)
|
|
/* 040011F0 000170 8C020FF8 */ lw v0, (audioStruct + 0x8)(zero) // ucode_data dram addr
|
|
/* 040011F4 000174 20420010 */ addi v0, v0, orga(Overlay0DataStart)
|
|
/* 040011F8 000178 20010010 */ addi at, zero, orga(Overlay0DataLoadAddress)
|
|
/* 040011FC 00017C 0D00045F */ jal dma_read
|
|
/* 04001200 000180 200302AF */ addi v1, zero, org(Overlay0DataEnd)-org(Overlay0DataStart)-1
|
|
/* 04001204 000184 0D00046D */ jal dma_wait
|
|
/* 04001208 000188 00000000 */ nop
|
|
/* 0400120C 00018C 09000443 */ j next_cmd
|
|
/* 04001210 000190 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
/***************************************************************
|
|
* Loads overlay 1 and enters the proper handler for the MP3 cmd
|
|
*/
|
|
cmd_MP3:
|
|
/* 04001214 000194 8401000E */ lh at, (data_0008 + 0x6)(zero) // Load overlay 1 imem addr
|
|
/* 04001218 000198 8C020008 */ lw v0, (data_0008 + 0x0)(zero) // Load overlay 1 dram addr
|
|
/* 0400121C 00019C 0D00045F */ jal dma_read
|
|
/* 04001220 0001A0 8403000C */ lh v1, (data_0008 + 0x4)(zero) // load overlay 1 length
|
|
/* 04001224 0001A4 0D00046D */ jal dma_wait
|
|
/* 04001228 0001A8 00000000 */ nop
|
|
/* 0400122C 0001AC 0900048E */ j cmd_MP3_overlay1 // jump to overlay 1 code
|
|
/* 04001230 0001B0 00000000 */ nop
|
|
|
|
/* 04001234 0001B4 00000000 */ nop
|
|
.align 8
|
|
Overlay1LoadAddress:
|
|
/* 04001238 0001B8 00000000 */ nop
|
|
/* 0400123C 0001BC 00000000 */ nop
|
|
|
|
/***************************************************************
|
|
* ZZXXAAAA XXXXBBBB
|
|
* Z = cmd
|
|
* X = pad
|
|
* A = dmem addr
|
|
* B = length
|
|
*/
|
|
cmd_CLEARBUFF:
|
|
/* 04001240 0001C0 3322FFFF */ andi v0, cmd_w1, 0xffff // load length
|
|
/* 04001244 0001C4 4A01086C */ vxor $v1, $v1, $v1 // Zero out $v1
|
|
/* 04001248 0001C8 3341FFFF */ andi at, cmd_w0, 0xffff // load dmem address
|
|
/* 0400124C 0001CC 20210500 */ addi at, at, 0x500
|
|
@@loop:
|
|
/* 04001250 0001D0 E8211800 */ sdv $v1[0], 0x0(at) // Store zero'd $v1
|
|
/* 04001254 0001D4 E8211801 */ sdv $v1[0], 0x8(at)
|
|
/* 04001258 0001D8 2042FFF0 */ addi v0, v0, -0x10
|
|
/* 0400125C 0001DC 1C40FFFC */ bgtz v0, @@loop // loop until whole region is cleared
|
|
/* 04001260 0001E0 20210010 */ addi at, at, 0x10
|
|
/* 04001264 0001E4 09000443 */ j next_cmd
|
|
/* 04001268 0001E8 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_LOADBUFF:
|
|
/* 0400126C 0001EC 001A1A00 */ sll v1, cmd_w0, 8
|
|
/* 04001270 0001F0 00031D02 */ srl v1, v1, 0x14
|
|
/* 04001274 0001F4 1060FFA5 */ beqz v1, next_cmd
|
|
/* 04001278 0001F8 23DEFFF8 */ addi fp, fp, -8
|
|
/* 0400127C 0001FC 33410FFF */ andi at, cmd_w0, 0xfff
|
|
/* 04001280 000200 20210500 */ addi at, at, 0x500
|
|
/* 04001284 000204 00191200 */ sll v0, cmd_w1, 8
|
|
/* 04001288 000208 00021202 */ srl v0, v0, 8
|
|
/* 0400128C 00020C 0D00045F */ jal dma_read
|
|
/* 04001290 000210 2063FFFF */ addi v1, v1, -1
|
|
/* 04001294 000214 40013000 */ mfc0 at, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001298 000218 1420FFFF */ bnez at, @@dma_busy
|
|
/* 0400129C 00021C 40013000 */ mfc0 at, SP_DMA_BUSY
|
|
/* 040012A0 000220 09000443 */ j next_cmd
|
|
/* 040012A4 000224 00000000 */ nop
|
|
|
|
|
|
|
|
|
|
|
|
cmd_SAVEBUFF:
|
|
/* 040012A8 000228 001A1A00 */ sll v1, cmd_w0, 8
|
|
/* 040012AC 00022C 00031D02 */ srl v1, v1, 0x14
|
|
/* 040012B0 000230 1060FF96 */ beqz v1, next_cmd
|
|
/* 040012B4 000234 23DEFFF8 */ addi fp, fp, -8
|
|
/* 040012B8 000238 33410FFF */ andi at, cmd_w0, 0xfff
|
|
/* 040012BC 00023C 20210500 */ addi at, at, 0x500
|
|
/* 040012C0 000240 00191200 */ sll v0, cmd_w1, 8
|
|
/* 040012C4 000244 00021202 */ srl v0, v0, 8
|
|
/* 040012C8 000248 0D000466 */ jal dma_write
|
|
/* 040012CC 00024C 2063FFFF */ addi v1, v1, -1
|
|
/* 040012D0 000250 40013000 */ mfc0 at, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 040012D4 000254 1420FFFF */ bnez at, @@dma_busy
|
|
/* 040012D8 000258 40013000 */ mfc0 at, SP_DMA_BUSY
|
|
/* 040012DC 00025C 09000443 */ j next_cmd
|
|
/* 040012E0 000260 00000000 */ nop
|
|
|
|
|
|
|
|
|
|
|
|
cmd_LOADADPCM:
|
|
/* 040012E4 000264 00191200 */ sll v0, cmd_w1, 8
|
|
/* 040012E8 000268 00021202 */ srl v0, v0, 8
|
|
/* 040012EC 00026C 20010400 */ addi at, zero, adpcmTable
|
|
/* 040012F0 000270 3343FFFF */ andi v1, cmd_w0, 0xffff
|
|
/* 040012F4 000274 0D00045F */ jal dma_read
|
|
/* 040012F8 000278 2063FFFF */ addi v1, v1, -1
|
|
/* 040012FC 00027C 40013000 */ mfc0 at, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001300 000280 1420FFFF */ bnez at, @@dma_busy
|
|
/* 04001304 000284 40013000 */ mfc0 at, SP_DMA_BUSY
|
|
/* 04001308 000288 09000443 */ j next_cmd
|
|
/* 0400130C 00028C 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_SETVOL:
|
|
/* 04001310 000290 001A1C02 */ srl v1, cmd_w0, 0x10
|
|
/* 04001314 000294 30610004 */ andi at, v1, 4
|
|
/* 04001318 000298 10200009 */ beqz at, .L04001340
|
|
/* 0400131C 00029C 30610002 */ andi at, v1, 2
|
|
/* 04001320 0002A0 10200004 */ beqz at, .L04001334
|
|
/* 04001324 0002A4 00191402 */ srl v0, cmd_w1, 0x10
|
|
/* 04001328 0002A8 A71A0050 */ sh cmd_w0, 0x50(t8)
|
|
/* 0400132C 0002AC A702004C */ sh v0, 0x4c(t8)
|
|
/* 04001330 0002B0 A719004E */ sh cmd_w1, 0x4e(t8)
|
|
.L04001334:
|
|
/* 04001334 0002B4 A71A0046 */ sh cmd_w0, 0x46(t8)
|
|
/* 04001338 0002B8 A7020048 */ sh v0, 0x48(t8)
|
|
/* 0400133C 0002BC A719004A */ sh cmd_w1, 0x4a(t8)
|
|
.L04001340:
|
|
/* 04001340 0002C0 00191402 */ srl v0, cmd_w1, 0x10
|
|
/* 04001344 0002C4 A71A0040 */ sh cmd_w0, 0x40(t8)
|
|
/* 04001348 0002C8 A7020042 */ sh v0, 0x42(t8)
|
|
/* 0400134C 0002CC A7190044 */ sh cmd_w1, 0x44(t8)
|
|
/* 04001350 0002D0 09000443 */ j next_cmd
|
|
/* 04001354 0002D4 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_INTERLEAVE:
|
|
/* 04001358 0002D8 20010170 */ addi at, zero, 0x170
|
|
/* 0400135C 0002DC 20040500 */ addi a0, zero, data_0_0500
|
|
/* 04001360 0002E0 200209E0 */ addi v0, zero, data_0_09E0
|
|
/* 04001364 0002E4 20030B50 */ addi v1, zero, data_0_0B50
|
|
@@loop:
|
|
/* 04001368 0002E8 C8412000 */ lqv $v1[0], 0x0(v0)
|
|
/* 0400136C 0002EC C8622000 */ lqv $v2[0], 0x0(v1)
|
|
/* 04001370 0002F0 2021FFF0 */ addi at, at, -0x10
|
|
/* 04001374 0002F4 20420010 */ addi v0, v0, 0x10
|
|
/* 04001378 0002F8 20630010 */ addi v1, v1, 0x10
|
|
/* 0400137C 0002FC E8810800 */ ssv $v1[0], 0x0(a0)
|
|
/* 04001380 000300 E8820801 */ ssv $v2[0], 0x2(a0)
|
|
/* 04001384 000304 E8810902 */ ssv $v1[2], 0x4(a0)
|
|
/* 04001388 000308 E8820903 */ ssv $v2[2], 0x6(a0)
|
|
/* 0400138C 00030C E8810A04 */ ssv $v1[4], 0x8(a0)
|
|
/* 04001390 000310 E8820A05 */ ssv $v2[4], 0xa(a0)
|
|
/* 04001394 000314 E8810B06 */ ssv $v1[6], 0xc(a0)
|
|
/* 04001398 000318 E8820B07 */ ssv $v2[6], 0xe(a0)
|
|
/* 0400139C 00031C E8810C08 */ ssv $v1[8], 0x10(a0)
|
|
/* 040013A0 000320 E8820C09 */ ssv $v2[8], 0x12(a0)
|
|
/* 040013A4 000324 E8810D0A */ ssv $v1[10], 0x14(a0)
|
|
/* 040013A8 000328 E8820D0B */ ssv $v2[10], 0x16(a0)
|
|
/* 040013AC 00032C E8810E0C */ ssv $v1[12], 0x18(a0)
|
|
/* 040013B0 000330 E8820E0D */ ssv $v2[12], 0x1a(a0)
|
|
/* 040013B4 000334 E8810F0E */ ssv $v1[14], 0x1c(a0)
|
|
/* 040013B8 000338 E8820F0F */ ssv $v2[14], 0x1e(a0)
|
|
/* 040013BC 00033C 1C20FFEA */ bgtz at, @@loop
|
|
/* 040013C0 000340 20840020 */ addi a0, a0, 0x20
|
|
/* 040013C4 000344 09000443 */ j next_cmd
|
|
/* 040013C8 000348 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_DMEMMOVE:
|
|
/* 040013CC 00034C 3321FFFF */ andi at, cmd_w1, 0xffff
|
|
/* 040013D0 000350 3342FFFF */ andi v0, cmd_w0, 0xffff
|
|
/* 040013D4 000354 20420500 */ addi v0, v0, 0x500
|
|
/* 040013D8 000358 00191C02 */ srl v1, cmd_w1, 0x10
|
|
/* 040013DC 00035C 20630500 */ addi v1, v1, 0x500
|
|
@@loop:
|
|
/* 040013E0 000360 C8411800 */ ldv $v1[0], 0x0(v0)
|
|
/* 040013E4 000364 C8421801 */ ldv $v2[0], 0x8(v0)
|
|
/* 040013E8 000368 2021FFF0 */ addi at, at, -0x10
|
|
/* 040013EC 00036C 20420010 */ addi v0, v0, 0x10
|
|
/* 040013F0 000370 E8611800 */ sdv $v1[0], 0x0(v1)
|
|
/* 040013F4 000374 E8621801 */ sdv $v2[0], 0x8(v1)
|
|
/* 040013F8 000378 1C20FFF9 */ bgtz at, @@loop
|
|
/* 040013FC 00037C 20630010 */ addi v1, v1, 0x10
|
|
/* 04001400 000380 09000443 */ j next_cmd
|
|
/* 04001404 000384 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_SETLOOP:
|
|
/* 04001408 000388 00190A00 */ sll at, cmd_w1, 8
|
|
/* 0400140C 00038C 00010A02 */ srl at, at, 8
|
|
/* 04001410 000390 AC010FFC */ sw at, (audioStruct + 0xc)(zero)
|
|
/* 04001414 000394 09000443 */ j next_cmd
|
|
/* 04001418 000398 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
/***************************************************************
|
|
* ZZAAAAAA XXBBBBBB
|
|
* Z = cmd
|
|
* X = padding
|
|
* A = ?
|
|
* B = rdram address
|
|
*/
|
|
cmd_MP3ADDY:
|
|
/* 0400141C 00039C 00190A00 */ sll at, cmd_w1, 8 // remove top 8 bits
|
|
/* 04001420 0003A0 00010A02 */ srl at, at, 8
|
|
/* 04001424 0003A4 AC010FF4 */ sw at, (audioStruct + 0x4)(zero) // store 24-bit value
|
|
/* 04001428 0003A8 001A1200 */ sll v0, cmd_w0, 8 // remove top 8 bits
|
|
/* 0400142C 0003AC 00021202 */ srl v0, v0, 8
|
|
/* 04001430 0003B0 AC020FF0 */ sw v0, (audioStruct + 0x0)(zero) // store 24-bit value
|
|
/* 04001434 0003B4 09000443 */ j next_cmd
|
|
/* 04001438 0003B8 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_ADPCM:
|
|
/* 0400143C 0003BC C81F2006 */ lqv $v31[0], (data_0_0060)(zero)
|
|
/* 04001440 0003C0 0019BB02 */ srl s7, cmd_w1, 0xc
|
|
/* 04001444 0003C4 4A19CE6C */ vxor $v25, $v25, $v25
|
|
/* 04001448 0003C8 32F7000F */ andi s7, s7, 0xf
|
|
/* 0400144C 0003CC 4A18C62C */ vxor $v24, $v24, $v24
|
|
/* 04001450 0003D0 22F70500 */ addi s7, s7, 0x500
|
|
/* 04001454 0003D4 4A0D6B6C */ vxor $v13, $v13, $v13
|
|
/* 04001458 0003D8 33210FFF */ andi at, cmd_w1, 0xfff
|
|
/* 0400145C 0003DC 4A0E73AC */ vxor $v14, $v14, $v14
|
|
/* 04001460 0003E0 20210500 */ addi at, at, 0x500
|
|
/* 04001464 0003E4 4A0F7BEC */ vxor $v15, $v15, $v15
|
|
/* 04001468 0003E8 0019AC02 */ srl s5, cmd_w1, 0x10
|
|
/* 0400146C 0003EC 4A10842C */ vxor $v16, $v16, $v16
|
|
/* 04001470 0003F0 32B50FFF */ andi s5, s5, 0xfff
|
|
/* 04001474 0003F4 4A118C6C */ vxor $v17, $v17, $v17
|
|
/* 04001478 0003F8 001AA200 */ sll s4, cmd_w0, 8
|
|
/* 0400147C 0003FC 4A1294AC */ vxor $v18, $v18, $v18
|
|
/* 04001480 000400 0014A202 */ srl s4, s4, 8
|
|
/* 04001484 000404 4A139CEC */ vxor $v19, $v19, $v19
|
|
/* 04001488 000408 2003001F */ addi v1, zero, 0x20-1
|
|
/* 0400148C 00040C 00196F02 */ srl t5, cmd_w1, 0x1c
|
|
/* 04001490 000410 31A20001 */ andi v0, t5, 1
|
|
/* 04001494 000414 1C400017 */ bgtz v0, .L040014F4
|
|
/* 04001498 000418 22F60001 */ addi s6, s7, 1
|
|
/* 0400149C 00041C 31A20002 */ andi v0, t5, 2
|
|
/* 040014A0 000420 10400002 */ beqz v0, .L040014AC
|
|
/* 040014A4 000424 22820000 */ addi v0, s4, 0
|
|
/* 040014A8 000428 8C020FFC */ lw v0, (audioStruct + 0xc)(zero)
|
|
.L040014AC:
|
|
/* 040014AC 00042C 400D2800 */ mfc0 t5, SP_DMA_FULL
|
|
@@dma_full:
|
|
/* 040014B0 000430 15A0FFFF */ bnez t5, @@dma_full
|
|
/* 040014B4 000434 400D2800 */ mfc0 t5, SP_DMA_FULL
|
|
/* 040014B8 000438 40810000 */ mtc0 at, SP_MEM_ADDR
|
|
/* 040014BC 00043C 40820800 */ mtc0 v0, SP_DRAM_ADDR
|
|
/* 040014C0 000440 40831000 */ mtc0 v1, SP_RD_LEN
|
|
/* 040014C4 000444 20130030 */ addi s3, zero, data_0_0030
|
|
/* 040014C8 000448 20120400 */ addi s2, zero, adpcmTable
|
|
/* 040014CC 00044C CA791800 */ ldv $v25[0], 0x0(s3)
|
|
/* 040014D0 000450 CA781C00 */ ldv $v24[8], 0x0(s3)
|
|
/* 040014D4 000454 CA771801 */ ldv $v23[0], 0x8(s3)
|
|
/* 040014D8 000458 CA771C01 */ ldv $v23[8], 0x8(s3)
|
|
/* 040014DC 00045C 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
.L040014E0:
|
|
/* 040014E0 000460 14A0FFFF */ bnez a1, .L040014E0
|
|
/* 040014E4 000464 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 040014E8 000468 00000020 */ add zero, zero, zero
|
|
/* 040014EC 00046C 09000546 */ j .L040014EC
|
|
/* 040014F0 000470 C83B2001 */ lqv $v27[0], 0x10(at)
|
|
.L040014F4:
|
|
/* 040014F4 000474 20130030 */ addi s3, zero, data_0_0030
|
|
/* 040014F8 000478 4A1BDEEC */ vxor $v27, $v27, $v27
|
|
/* 040014FC 00047C 20120400 */ addi s2, zero, adpcmTable
|
|
/* 04001500 000480 CA791800 */ ldv $v25[0], 0x0(s3)
|
|
/* 04001504 000484 CA781C00 */ ldv $v24[8], 0x0(s3)
|
|
/* 04001508 000488 CA771801 */ ldv $v23[0], 0x8(s3)
|
|
/* 0400150C 00048C CA771C01 */ ldv $v23[8], 0x8(s3)
|
|
/* 04001510 000490 E83B2000 */ sqv $v27[0], 0x0(at)
|
|
/* 04001514 000494 E83B2001 */ sqv $v27[0], 0x10(at)
|
|
.L040014EC:
|
|
/* 04001518 000498 12A0006B */ beqz s5, .L040016C8
|
|
/* 0400151C 00049C 20210020 */ addi at, at, 0x20
|
|
/* 04001520 0004A0 CACC1800 */ ldv $v12[0], 0x0(s6)
|
|
/* 04001524 0004A4 92EA0000 */ lbu t2, (s7)
|
|
/* 04001528 0004A8 200D000C */ addi t5, zero, 0xc
|
|
/* 0400152C 0004AC 200C0001 */ addi t4, zero, 1
|
|
/* 04001530 0004B0 314E000F */ andi t6, t2, 0xf
|
|
/* 04001534 0004B4 000E7140 */ sll t6, t6, 5
|
|
/* 04001538 0004B8 4B0CCAA8 */ vand $v10, $v25, $v12[0]
|
|
/* 0400153C 0004BC 01D28020 */ add s0, t6, s2
|
|
/* 04001540 0004C0 4B2CC268 */ vand $v9, $v24, $v12[1]
|
|
/* 04001544 0004C4 000A8902 */ srl s1, t2, 4
|
|
/* 04001548 0004C8 4B4CCA28 */ vand $v8, $v25, $v12[2]
|
|
/* 0400154C 0004CC 01B18822 */ sub s1, t5, s1
|
|
/* 04001550 0004D0 4B6CC1E8 */ vand $v7, $v24, $v12[3]
|
|
/* 04001554 0004D4 222DFFFF */ addi t5, s1, -1
|
|
/* 04001558 0004D8 000C63C0 */ sll t4, t4, 0xf
|
|
/* 0400155C 0004DC 01AC5806 */ srlv t3, t4, t5
|
|
/* 04001560 0004E0 488BB000 */ mtc2 t3, $v22[0]
|
|
/* 04001564 0004E4 CA152000 */ lqv $v21[0], 0x0(s0)
|
|
/* 04001568 0004E8 CA142001 */ lqv $v20[0], 0x10(s0)
|
|
/* 0400156C 0004EC 2210FFFE */ addi s0, s0, -2
|
|
/* 04001570 0004F0 CA132802 */ lrv $v19[0], 0x20(s0)
|
|
/* 04001574 0004F4 2210FFFE */ addi s0, s0, -2
|
|
/* 04001578 0004F8 CA122802 */ lrv $v18[0], 0x20(s0)
|
|
/* 0400157C 0004FC 2210FFFE */ addi s0, s0, -2
|
|
/* 04001580 000500 CA112802 */ lrv $v17[0], 0x20(s0)
|
|
/* 04001584 000504 2210FFFE */ addi s0, s0, -2
|
|
/* 04001588 000508 CA102802 */ lrv $v16[0], 0x20(s0)
|
|
/* 0400158C 00050C 2210FFFE */ addi s0, s0, -2
|
|
/* 04001590 000510 CA0F2802 */ lrv $v15[0], 0x20(s0)
|
|
/* 04001594 000514 2210FFFE */ addi s0, s0, -2
|
|
/* 04001598 000518 CA0E2802 */ lrv $v14[0], 0x20(s0)
|
|
/* 0400159C 00051C 2210FFFE */ addi s0, s0, -2
|
|
/* 040015A0 000520 CA0D2802 */ lrv $v13[0], 0x20(s0)
|
|
.L040015A4:
|
|
/* 040015A4 000524 22D60009 */ addi s6, s6, 9
|
|
/* 040015A8 000528 4A175786 */ vmudn $v30, $v10, $v23
|
|
/* 040015AC 00052C 22F70009 */ addi s7, s7, 9
|
|
/* 040015B0 000530 4A174F8E */ vmadn $v30, $v9, $v23
|
|
/* 040015B4 000534 92EA0000 */ lbu t2, (s7)
|
|
/* 040015B8 000538 4A174746 */ vmudn $v29, $v8, $v23
|
|
/* 040015BC 00053C CACC1800 */ ldv $v12[0], 0x0(s6)
|
|
/* 040015C0 000540 4A173F4E */ vmadn $v29, $v7, $v23
|
|
/* 040015C4 000544 200D000C */ addi t5, zero, 0xc
|
|
/* 040015C8 000548 1A200003 */ blez s1, .L040015D8
|
|
/* 040015CC 00054C 314E000F */ andi t6, t2, 0xf
|
|
/* 040015D0 000550 4B16F785 */ vmudm $v30, $v30, $v22[0]
|
|
/* 040015D4 000554 4B16EF45 */ vmudm $v29, $v29, $v22[0]
|
|
.L040015D8:
|
|
/* 040015D8 000558 000E7140 */ sll t6, t6, 5
|
|
/* 040015DC 00055C 4BDBAAC7 */ vmudh $v11, $v21, $v27[6]
|
|
/* 040015E0 000560 01D28020 */ add s0, t6, s2
|
|
/* 040015E4 000564 4BFBA2CF */ vmadh $v11, $v20, $v27[7]
|
|
/* 040015E8 000568 4B1E9ACF */ vmadh $v11, $v19, $v30[0]
|
|
/* 040015EC 00056C 4B3E92CF */ vmadh $v11, $v18, $v30[1]
|
|
/* 040015F0 000570 000A8902 */ srl s1, t2, 4
|
|
/* 040015F4 000574 4B5E8ACF */ vmadh $v11, $v17, $v30[2]
|
|
/* 040015F8 000578 4B7E82CF */ vmadh $v11, $v16, $v30[3]
|
|
/* 040015FC 00057C 01B18822 */ sub s1, t5, s1
|
|
/* 04001600 000580 4B9E7F0F */ vmadh $v28, $v15, $v30[4]
|
|
/* 04001604 000584 222DFFFF */ addi t5, s1, -1
|
|
/* 04001608 000588 4BBE72CF */ vmadh $v11, $v14, $v30[5]
|
|
/* 0400160C 00058C 4BDE6ACF */ vmadh $v11, $v13, $v30[6]
|
|
/* 04001610 000590 4B7FF2CF */ vmadh $v11, $v30, $v31[3]
|
|
/* 04001614 000594 01AC5806 */ srlv t3, t4, t5
|
|
/* 04001618 000598 4B3C369D */ vsar $v26, $v6, $v28[1]
|
|
/* 0400161C 00059C 488BB000 */ mtc2 t3, $v22[0]
|
|
/* 04001620 0005A0 4B1C371D */ vsar $v28, $v6, $v28[0]
|
|
/* 04001624 0005A4 4B0CCAA8 */ vand $v10, $v25, $v12[0]
|
|
/* 04001628 0005A8 4B2CC268 */ vand $v9, $v24, $v12[1]
|
|
/* 0400162C 0005AC 4B4CCA28 */ vand $v8, $v25, $v12[2]
|
|
/* 04001630 0005B0 4B6CC1E8 */ vand $v7, $v24, $v12[3]
|
|
/* 04001634 0005B4 4B3FD2C6 */ vmudn $v11, $v26, $v31[1]
|
|
/* 04001638 0005B8 4B3FE70F */ vmadh $v28, $v28, $v31[1]
|
|
/* 0400163C 0005BC 4B1D9AC7 */ vmudh $v11, $v19, $v29[0]
|
|
/* 04001640 0005C0 220FFFFE */ addi t7, s0, -2
|
|
/* 04001644 0005C4 4B3D92CF */ vmadh $v11, $v18, $v29[1]
|
|
/* 04001648 0005C8 C9F32802 */ lrv $v19[0], 0x20(t7)
|
|
/* 0400164C 0005CC 4B5D8ACF */ vmadh $v11, $v17, $v29[2]
|
|
/* 04001650 0005D0 21EFFFFE */ addi t7, t7, -2
|
|
/* 04001654 0005D4 4B7D82CF */ vmadh $v11, $v16, $v29[3]
|
|
/* 04001658 0005D8 C9F22802 */ lrv $v18[0], 0x20(t7)
|
|
/* 0400165C 0005DC 4B9D7ACF */ vmadh $v11, $v15, $v29[4]
|
|
/* 04001660 0005E0 21EFFFFE */ addi t7, t7, -2
|
|
/* 04001664 0005E4 4BBD72CF */ vmadh $v11, $v14, $v29[5]
|
|
/* 04001668 0005E8 C9F12802 */ lrv $v17[0], 0x20(t7)
|
|
/* 0400166C 0005EC 4BDD6ACF */ vmadh $v11, $v13, $v29[6]
|
|
/* 04001670 0005F0 21EFFFFE */ addi t7, t7, -2
|
|
/* 04001674 0005F4 4B7FEACF */ vmadh $v11, $v29, $v31[3]
|
|
/* 04001678 0005F8 C9F02802 */ lrv $v16[0], 0x20(t7)
|
|
/* 0400167C 0005FC 4BDCAACF */ vmadh $v11, $v21, $v28[6]
|
|
/* 04001680 000600 21EFFFFE */ addi t7, t7, -2
|
|
/* 04001684 000604 4BFCA2CF */ vmadh $v11, $v20, $v28[7]
|
|
/* 04001688 000608 C9EF2802 */ lrv $v15[0], 0x20(t7)
|
|
/* 0400168C 00060C 4B3B369D */ vsar $v26, $v6, $v27[1]
|
|
/* 04001690 000610 21EFFFFE */ addi t7, t7, -2
|
|
/* 04001694 000614 4B1B36DD */ vsar $v27, $v6, $v27[0]
|
|
/* 04001698 000618 C9EE2802 */ lrv $v14[0], 0x20(t7)
|
|
/* 0400169C 00061C 21EFFFFE */ addi t7, t7, -2
|
|
/* 040016A0 000620 C9ED2802 */ lrv $v13[0], 0x20(t7)
|
|
/* 040016A4 000624 CA152000 */ lqv $v21[0], 0x0(s0)
|
|
/* 040016A8 000628 4B3FD2C6 */ vmudn $v11, $v26, $v31[1]
|
|
/* 040016AC 00062C CA142001 */ lqv $v20[0], 0x10(s0)
|
|
/* 040016B0 000630 4B3FDECF */ vmadh $v27, $v27, $v31[1]
|
|
/* 040016B4 000634 22B5FFE0 */ addi s5, s5, -0x20
|
|
/* 040016B8 000638 E83C2000 */ sqv $v28[0], 0x0(at)
|
|
/* 040016BC 00063C 20210020 */ addi at, at, 0x20
|
|
/* 040016C0 000640 1EA0FFB8 */ bgtz s5, .L040015A4
|
|
/* 040016C4 000644 E83B207F */ sqv $v27[0], -0x10(at)
|
|
.L040016C8:
|
|
/* 040016C8 000648 2021FFE0 */ addi at, at, -0x20
|
|
/* 040016CC 00064C 0D000466 */ jal dma_write
|
|
/* 040016D0 000650 22820000 */ addi v0, s4, 0
|
|
/* 040016D4 000654 23DEFFF8 */ addi fp, fp, -8
|
|
/* 040016D8 000658 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 040016DC 00065C 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 040016E0 000660 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 040016E4 000664 09000443 */ j next_cmd
|
|
/* 040016E8 000668 00000024 */ and zero, zero, zero
|
|
|
|
|
|
|
|
|
|
|
|
cmd_16EC:
|
|
/* 040016EC 00066C 20140400 */ addi s4, zero, adpcmTable
|
|
/* 040016F0 000670 4A1AD6AC */ vxor $v26, $v26, $v26
|
|
/* 040016F4 000674 8E910000 */ lw s1, (s4)
|
|
/* 040016F8 000678 1220009C */ beqz s1, .L0400196C
|
|
/* 040016FC 00067C 23DEFFF8 */ addi fp, fp, -8
|
|
/* 04001700 000680 23570500 */ addi s7, cmd_w0, 0x500
|
|
/* 04001704 000684 CA921800 */ ldv $v18[0], 0x0(s4)
|
|
/* 04001708 000688 4A19CE6C */ vxor $v25, $v25, $v25
|
|
/* 0400170C 00068C 03201020 */ add v0, cmd_w1, zero
|
|
/* 04001710 000690 22F5FFFC */ addi s5, s7, -4
|
|
/* 04001714 000694 22F3FFFE */ addi s3, s7, -2
|
|
/* 04001718 000698 4A18C62C */ vxor $v24, $v24, $v24
|
|
/* 0400171C 00069C 4A17BDEC */ vxor $v23, $v23, $v23
|
|
/* 04001720 0006A0 20030007 */ addi v1, zero, 7
|
|
/* 04001724 0006A4 4A16B5AC */ vxor $v22, $v22, $v22
|
|
/* 04001728 0006A8 20160170 */ addi s6, zero, 0x170
|
|
/* 0400172C 0006AC 4A15AD6C */ vxor $v21, $v21, $v21
|
|
/* 04001730 0006B0 001A8402 */ srl s0, cmd_w0, 0x10
|
|
/* 04001734 0006B4 4A14A52C */ vxor $v20, $v20, $v20
|
|
/* 04001738 0006B8 32100001 */ andi s0, s0, 1
|
|
/* 0400173C 0006BC 4A139CEC */ vxor $v19, $v19, $v19
|
|
/* 04001740 0006C0 8E920002 */ lw s2, 2(s4)
|
|
/* 04001744 0006C4 1E00001E */ bgtz s0, .L040017C0
|
|
/* 04001748 0006C8 23010000 */ addi at, t8, 0
|
|
/* 0400174C 0006CC 40102800 */ mfc0 s0, SP_DMA_FULL
|
|
@@dma_full:
|
|
/* 04001750 0006D0 1600FFFF */ bnez s0, @@dma_full
|
|
/* 04001754 0006D4 40102800 */ mfc0 s0, SP_DMA_FULL
|
|
/* 04001758 0006D8 40810000 */ mtc0 at, SP_MEM_ADDR
|
|
/* 0400175C 0006DC 40820800 */ mtc0 v0, SP_DRAM_ADDR
|
|
/* 04001760 0006E0 40831000 */ mtc0 v1, SP_RD_LEN
|
|
/* 04001764 0006E4 CA9A1004 */ llv $v26[0], 0x10(s4)
|
|
/* 04001768 0006E8 2294FFFE */ addi s4, s4, -2
|
|
/* 0400176C 0006EC CA991802 */ ldv $v25[0], 0x10(s4)
|
|
/* 04001770 0006F0 22940002 */ addi s4, s4, 2
|
|
/* 04001774 0006F4 CA981204 */ llv $v24[4], 0x10(s4)
|
|
/* 04001778 0006F8 2294FFFE */ addi s4, s4, -2
|
|
/* 0400177C 0006FC CA971A02 */ ldv $v23[4], 0x10(s4)
|
|
/* 04001780 000700 22940002 */ addi s4, s4, 2
|
|
/* 04001784 000704 CA961404 */ llv $v22[8], 0x10(s4)
|
|
/* 04001788 000708 2294FFFE */ addi s4, s4, -2
|
|
/* 0400178C 00070C CA951C02 */ ldv $v21[8], 0x10(s4)
|
|
/* 04001790 000710 22940002 */ addi s4, s4, 2
|
|
/* 04001794 000714 CA941604 */ llv $v20[12], 0x10(s4)
|
|
/* 04001798 000718 CA930F08 */ lsv $v19[14], 0x10(s4)
|
|
/* 0400179C 00071C CA930809 */ lsv $v19[0], 0x12(s4)
|
|
/* 040017A0 000720 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 040017A4 000724 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 040017A8 000728 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 040017AC 00072C C82F1000 */ llv $v15[0], 0x0(at)
|
|
/* 040017B0 000730 12400016 */ beqz s2, .L0400180C
|
|
/* 040017B4 000734 C83C1601 */ llv $v28[12], 0x4(at)
|
|
/* 040017B8 000738 0900060B */ j .L0400182C
|
|
/* 040017BC 00073C C82B0801 */ lsv $v11[0], 0x2(at)
|
|
.L040017C0:
|
|
/* 040017C0 000740 CA9A1004 */ llv $v26[0], 0x10(s4)
|
|
/* 040017C4 000744 2294FFFE */ addi s4, s4, -2
|
|
/* 040017C8 000748 4A0F7BEC */ vxor $v15, $v15, $v15
|
|
/* 040017CC 00074C CA991802 */ ldv $v25[0], 0x10(s4)
|
|
/* 040017D0 000750 22940002 */ addi s4, s4, 2
|
|
/* 040017D4 000754 4A0B5AEC */ vxor $v11, $v11, $v11
|
|
/* 040017D8 000758 CA981204 */ llv $v24[4], 0x10(s4)
|
|
/* 040017DC 00075C 2294FFFE */ addi s4, s4, -2
|
|
/* 040017E0 000760 4A1CE72C */ vxor $v28, $v28, $v28
|
|
/* 040017E4 000764 CA971A02 */ ldv $v23[4], 0x10(s4)
|
|
/* 040017E8 000768 22940002 */ addi s4, s4, 2
|
|
/* 040017EC 00076C CA961404 */ llv $v22[8], 0x10(s4)
|
|
/* 040017F0 000770 2294FFFE */ addi s4, s4, -2
|
|
/* 040017F4 000774 CA951C02 */ ldv $v21[8], 0x10(s4)
|
|
/* 040017F8 000778 22940002 */ addi s4, s4, 2
|
|
/* 040017FC 00077C CA941604 */ llv $v20[12], 0x10(s4)
|
|
/* 04001800 000780 CA930F08 */ lsv $v19[14], 0x10(s4)
|
|
/* 04001804 000784 16400009 */ bnez s2, .L0400182C
|
|
/* 04001808 000788 CA930809 */ lsv $v19[0], 0x12(s4)
|
|
.L0400180C:
|
|
/* 0400180C 00078C CAFE2000 */ lqv $v30[0], 0x0(s7)
|
|
/* 04001810 000790 CAAF2801 */ lrv $v15[0], 0x10(s5)
|
|
/* 04001814 000794 4A0FF7D1 */ vsub $v31, $v30, $v15
|
|
/* 04001818 000798 4BDC9C00 */ vmulf $v16, $v19, $v28[6]
|
|
/* 0400181C 00079C 4B12FFC0 */ vmulf $v31, $v31, $v18[0]
|
|
/* 04001820 0007A0 4A108410 */ vadd $v16, $v16, $v16
|
|
/* 04001824 0007A4 09000651 */ j .L04001824
|
|
/* 04001828 0007A8 4BFC7F73 */ vmov $v29[7], $v28[7]
|
|
.L0400182C:
|
|
/* 0400182C 0007AC CAFE2000 */ lqv $v30[0], 0x0(s7)
|
|
/* 04001830 0007B0 CA6B2801 */ lrv $v11[0], 0x10(s3)
|
|
/* 04001834 0007B4 CAAF2801 */ lrv $v15[0], 0x10(s5)
|
|
/* 04001838 0007B8 4B12F780 */ vmulf $v30, $v30, $v18[0]
|
|
/* 0400183C 0007BC 4B325AC0 */ vmulf $v11, $v11, $v18[1]
|
|
/* 04001840 0007C0 4B127BC0 */ vmulf $v15, $v15, $v18[0]
|
|
/* 04001844 0007C4 4BDC9C00 */ vmulf $v16, $v19, $v28[6]
|
|
/* 04001848 0007C8 4A0BF7D0 */ vadd $v31, $v30, $v11
|
|
/* 0400184C 0007CC 4A108410 */ vadd $v16, $v16, $v16
|
|
/* 04001850 0007D0 4A0FFFD0 */ vadd $v31, $v31, $v15
|
|
.L04001854:
|
|
/* 04001854 0007D4 4BFCD440 */ vmulf $v17, $v26, $v28[7]
|
|
/* 04001858 0007D8 4B1F86D0 */ vadd $v27, $v16, $v31[0]
|
|
/* 0400185C 0007DC 4BFC7F73 */ vmov $v29[7], $v28[7]
|
|
/* 04001860 0007E0 22D6FFF0 */ addi s6, s6, -0x10
|
|
/* 04001864 0007E4 4A118C50 */ vadd $v17, $v17, $v17
|
|
/* 04001868 0007E8 4A11DF10 */ vadd $v28, $v27, $v17
|
|
/* 0400186C 0007EC 4B3F8ED0 */ vadd $v27, $v17, $v31[1]
|
|
/* 04001870 0007F0 4B1CCC00 */ vmulf $v16, $v25, $v28[0]
|
|
/* 04001874 0007F4 4A1DEBAA */ vor $v14, $v29, $v29
|
|
/* 04001878 0007F8 CA6B2001 */ lqv $v11[0], 0x10(s3)
|
|
/* 0400187C 0007FC 4B1C4773 */ vmov $v29[0], $v28[0]
|
|
/* 04001880 000800 4A108410 */ vadd $v16, $v16, $v16
|
|
/* 04001884 000804 4A10DF10 */ vadd $v28, $v27, $v16
|
|
/* 04001888 000808 4B5F86D0 */ vadd $v27, $v16, $v31[2]
|
|
/* 0400188C 00080C 4B3CC440 */ vmulf $v17, $v24, $v28[1]
|
|
/* 04001890 000810 CA6B2802 */ lrv $v11[0], 0x20(s3)
|
|
/* 04001894 000814 16400002 */ bnez s2, .L040018A0
|
|
/* 04001898 000818 4B3C4F73 */ vmov $v29[1], $v28[1]
|
|
/* 0400189C 00081C EAEE207F */ sqv $v14[0], -0x10(s7)
|
|
.L040018A0:
|
|
/* 040018A0 000820 4A118C50 */ vadd $v17, $v17, $v17
|
|
/* 040018A4 000824 4A11DF10 */ vadd $v28, $v27, $v17
|
|
/* 040018A8 000828 00009025 */ or s2, zero, zero
|
|
/* 040018AC 00082C 4B7F8ED0 */ vadd $v27, $v17, $v31[3]
|
|
/* 040018B0 000830 4B5CBC00 */ vmulf $v16, $v23, $v28[2]
|
|
/* 040018B4 000834 4B5C5773 */ vmov $v29[2], $v28[2]
|
|
/* 040018B8 000838 4B325AC0 */ vmulf $v11, $v11, $v18[1]
|
|
/* 040018BC 00083C CAFE2001 */ lqv $v30[0], 0x10(s7)
|
|
/* 040018C0 000840 4A108410 */ vadd $v16, $v16, $v16
|
|
/* 040018C4 000844 4A10DF10 */ vadd $v28, $v27, $v16
|
|
/* 040018C8 000848 4B9F86D0 */ vadd $v27, $v16, $v31[4]
|
|
/* 040018CC 00084C 4B7CB440 */ vmulf $v17, $v22, $v28[3]
|
|
/* 040018D0 000850 4B7C5F73 */ vmov $v29[3], $v28[3]
|
|
/* 040018D4 000854 4A118C50 */ vadd $v17, $v17, $v17
|
|
/* 040018D8 000858 CAAF2001 */ lqv $v15[0], 0x10(s5)
|
|
/* 040018DC 00085C 4B12F780 */ vmulf $v30, $v30, $v18[0]
|
|
/* 040018E0 000860 4A11DF10 */ vadd $v28, $v27, $v17
|
|
/* 040018E4 000864 4BBF8ED0 */ vadd $v27, $v17, $v31[5]
|
|
/* 040018E8 000868 4B9CAC00 */ vmulf $v16, $v21, $v28[4]
|
|
/* 040018EC 00086C 4B9C6773 */ vmov $v29[4], $v28[4]
|
|
/* 040018F0 000870 4A108410 */ vadd $v16, $v16, $v16
|
|
/* 040018F4 000874 CAAF2802 */ lrv $v15[0], 0x20(s5)
|
|
/* 040018F8 000878 4A1E5AD0 */ vadd $v11, $v11, $v30
|
|
/* 040018FC 00087C 4A10DF10 */ vadd $v28, $v27, $v16
|
|
/* 04001900 000880 4BDF86D0 */ vadd $v27, $v16, $v31[6]
|
|
/* 04001904 000884 4BBCA440 */ vmulf $v17, $v20, $v28[5]
|
|
/* 04001908 000888 4BBC6F73 */ vmov $v29[5], $v28[5]
|
|
/* 0400190C 00088C 4B127B40 */ vmulf $v13, $v15, $v18[0]
|
|
/* 04001910 000890 4A118C50 */ vadd $v17, $v17, $v17
|
|
/* 04001914 000894 4A11DF10 */ vadd $v28, $v27, $v17
|
|
/* 04001918 000898 4BFF8ED0 */ vadd $v27, $v17, $v31[7]
|
|
/* 0400191C 00089C 4BDC9C00 */ vmulf $v16, $v19, $v28[6]
|
|
/* 04001920 0008A0 22B50010 */ addi s5, s5, 0x10
|
|
/* 04001924 0008A4 4BDC7773 */ vmov $v29[6], $v28[6]
|
|
/* 04001928 0008A8 22730010 */ addi s3, s3, 0x10
|
|
/* 0400192C 0008AC 4A0D5FD0 */ vadd $v31, $v11, $v13
|
|
/* 04001930 0008B0 4A108410 */ vadd $v16, $v16, $v16
|
|
/* 04001934 0008B4 4A10DF10 */ vadd $v28, $v27, $v16
|
|
/* 04001938 0008B8 1EC0FFC6 */ bgtz s6, .L04001854
|
|
/* 0400193C 0008BC 22F70010 */ addi s7, s7, 0x10
|
|
/* 04001940 0008C0 4BFC7F73 */ vmov $v29[7], $v28[7]
|
|
.L04001824:
|
|
/* 04001944 0008C4 4A1DEBAA */ vor $v14, $v29, $v29
|
|
/* 04001948 0008C8 E82F1000 */ slv $v15[0], 0x0(at)
|
|
/* 0400194C 0008CC E83D1601 */ slv $v29[12], 0x4(at)
|
|
/* 04001950 0008D0 0D000466 */ jal dma_write
|
|
/* 04001954 0008D4 EAEE207F */ sqv $v14[0], -0x10(s7)
|
|
/* 04001958 0008D8 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 0400195C 0008DC 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 04001960 0008E0 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 04001964 0008E4 09000443 */ j next_cmd
|
|
/* 04001968 0008E8 00000000 */ nop
|
|
.L0400196C:
|
|
/* 0400196C 0008EC 00199E02 */ srl s3, cmd_w1, 0x18
|
|
/* 04001970 0008F0 20140400 */ addi s4, zero, adpcmTable
|
|
/* 04001974 0008F4 4A15AD6C */ vxor $v21, $v21, $v21
|
|
/* 04001978 0008F8 12600002 */ beqz s3, .L04001984
|
|
/* 0400197C 0008FC 20170500 */ addi s7, zero, data_0_0500
|
|
/* 04001980 000900 20170670 */ addi s7, zero, data_0_0670
|
|
.L04001984:
|
|
/* 04001984 000904 CA9C2001 */ lqv $v28[0], 0x10(s4)
|
|
/* 04001988 000908 4A16B5AC */ vxor $v22, $v22, $v22
|
|
/* 0400198C 00090C 489A9500 */ mtc2 cmd_w0, $v18[10]
|
|
/* 04001990 000910 4A17BDEC */ vxor $v23, $v23, $v23
|
|
/* 04001994 000914 001AD080 */ sll cmd_w0, cmd_w0, 2
|
|
/* 04001998 000918 4A18C62C */ vxor $v24, $v24, $v24
|
|
/* 0400199C 00091C 489AA000 */ mtc2 cmd_w0, $v20[0]
|
|
/* 040019A0 000920 4A19CE6C */ vxor $v25, $v25, $v25
|
|
/* 040019A4 000924 00191200 */ sll v0, cmd_w1, 8
|
|
/* 040019A8 000928 4A1AD6AC */ vxor $v26, $v26, $v26
|
|
/* 040019AC 00092C 00021202 */ srl v0, v0, 8
|
|
/* 040019B0 000930 4A1BDEEC */ vxor $v27, $v27, $v27
|
|
/* 040019B4 000934 20030007 */ addi v1, zero, 7
|
|
/* 040019B8 000938 20130004 */ addi s3, zero, 4
|
|
/* 040019BC 00093C 48939000 */ mtc2 s3, $v18[0]
|
|
/* 040019C0 000940 20160170 */ addi s6, zero, 0x170
|
|
/* 040019C4 000944 4B14E505 */ vmudm $v20, $v28, $v20[0]
|
|
/* 040019C8 000948 001A9C02 */ srl s3, cmd_w0, 0x10
|
|
/* 040019CC 00094C 32730001 */ andi s3, s3, 1
|
|
/* 040019D0 000950 1E60001B */ bgtz s3, .L04001A40
|
|
/* 040019D4 000954 EA942001 */ sqv $v20[0], 0x10(s4)
|
|
/* 040019D8 000958 23010000 */ addi at, t8, 0
|
|
/* 040019DC 00095C 40132800 */ mfc0 s3, SP_DMA_FULL
|
|
@@dma_full:
|
|
/* 040019E0 000960 1660FFFF */ bnez s3, @@dma_full
|
|
/* 040019E4 000964 40132800 */ mfc0 s3, SP_DMA_FULL
|
|
/* 040019E8 000968 40810000 */ mtc0 at, SP_MEM_ADDR
|
|
/* 040019EC 00096C 40820800 */ mtc0 v0, SP_DRAM_ADDR
|
|
/* 040019F0 000970 40831000 */ mtc0 v1, SP_RD_LEN
|
|
/* 040019F4 000974 2294FFFE */ addi s4, s4, -2
|
|
/* 040019F8 000978 CA9B2802 */ lrv $v27[0], 0x20(s4)
|
|
/* 040019FC 00097C 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A00 000980 CA9A2802 */ lrv $v26[0], 0x20(s4)
|
|
/* 04001A04 000984 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A08 000988 CA992802 */ lrv $v25[0], 0x20(s4)
|
|
/* 04001A0C 00098C 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A10 000990 CA982802 */ lrv $v24[0], 0x20(s4)
|
|
/* 04001A14 000994 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A18 000998 CA972802 */ lrv $v23[0], 0x20(s4)
|
|
/* 04001A1C 00099C 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A20 0009A0 CA962802 */ lrv $v22[0], 0x20(s4)
|
|
/* 04001A24 0009A4 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A28 0009A8 CA952802 */ lrv $v21[0], 0x20(s4)
|
|
/* 04001A2C 0009AC 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001A30 0009B0 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 04001A34 0009B4 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 04001A38 0009B8 0900069F */ j .L04001A7C
|
|
/* 04001A3C 0009BC C83E1C00 */ ldv $v30[8], 0x0(at)
|
|
.L04001A40:
|
|
/* 04001A40 0009C0 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A44 0009C4 4A1EF7AC */ vxor $v30, $v30, $v30
|
|
/* 04001A48 0009C8 CA9B2802 */ lrv $v27[0], 0x20(s4)
|
|
/* 04001A4C 0009CC 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A50 0009D0 CA9A2802 */ lrv $v26[0], 0x20(s4)
|
|
/* 04001A54 0009D4 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A58 0009D8 CA992802 */ lrv $v25[0], 0x20(s4)
|
|
/* 04001A5C 0009DC 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A60 0009E0 CA982802 */ lrv $v24[0], 0x20(s4)
|
|
/* 04001A64 0009E4 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A68 0009E8 CA972802 */ lrv $v23[0], 0x20(s4)
|
|
/* 04001A6C 0009EC 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A70 0009F0 CA962802 */ lrv $v22[0], 0x20(s4)
|
|
/* 04001A74 0009F4 2294FFFE */ addi s4, s4, -2
|
|
/* 04001A78 0009F8 CA952802 */ lrv $v21[0], 0x20(s4)
|
|
.L04001A7C:
|
|
/* 04001A7C 0009FC CAFF2000 */ lqv $v31[0], 0x0(s7)
|
|
.L04001A80:
|
|
/* 04001A80 000A00 4BFEE507 */ vmudh $v20, $v28, $v30[7]
|
|
/* 04001A84 000A04 4B1FDD0F */ vmadh $v20, $v27, $v31[0]
|
|
/* 04001A88 000A08 22D6FFF0 */ addi s6, s6, -0x10
|
|
/* 04001A8C 000A0C 4B3FD50F */ vmadh $v20, $v26, $v31[1]
|
|
/* 04001A90 000A10 4B5FCD0F */ vmadh $v20, $v25, $v31[2]
|
|
/* 04001A94 000A14 EAFE207F */ sqv $v30[0], -0x10(s7)
|
|
/* 04001A98 000A18 4B7FC50F */ vmadh $v20, $v24, $v31[3]
|
|
/* 04001A9C 000A1C 4B9FBF8F */ vmadh $v30, $v23, $v31[4]
|
|
/* 04001AA0 000A20 4BBFB50F */ vmadh $v20, $v22, $v31[5]
|
|
/* 04001AA4 000A24 4BDFAD0F */ vmadh $v20, $v21, $v31[6]
|
|
/* 04001AA8 000A28 4BB2FD0F */ vmadh $v20, $v31, $v18[5]
|
|
/* 04001AAC 000A2C CAFF2001 */ lqv $v31[0], 0x10(s7)
|
|
/* 04001AB0 000A30 4B3E9F5D */ vsar $v29, $v19, $v30[1]
|
|
/* 04001AB4 000A34 4B1E9F9D */ vsar $v30, $v19, $v30[0]
|
|
/* 04001AB8 000A38 4B12ED06 */ vmudn $v20, $v29, $v18[0]
|
|
/* 04001ABC 000A3C 4B12F78F */ vmadh $v30, $v30, $v18[0]
|
|
/* 04001AC0 000A40 1EC0FFEF */ bgtz s6, .L04001A80
|
|
/* 04001AC4 000A44 22F70010 */ addi s7, s7, 0x10
|
|
/* 04001AC8 000A48 22E1FFF8 */ addi at, s7, -8
|
|
/* 04001ACC 000A4C 0D000466 */ jal dma_write
|
|
/* 04001AD0 000A50 EAFE207F */ sqv $v30[0], -0x10(s7)
|
|
/* 04001AD4 000A54 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001AD8 000A58 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 04001ADC 000A5C 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 04001AE0 000A60 09000443 */ j next_cmd
|
|
/* 04001AE4 000A64 00000000 */ nop
|
|
|
|
|
|
|
|
|
|
|
|
cmd_DISABLE:
|
|
/* 04001AE8 000A68 20020170 */ addi v0, zero, 0x170
|
|
/* 04001AEC 000A6C 23410500 */ addi at, cmd_w0, data_0_0500
|
|
/* 04001AF0 000A70 48990800 */ mtc2 cmd_w1, $v1[0]
|
|
/* 04001AF4 000A74 00191C02 */ srl v1, cmd_w1, 0x10
|
|
/* 04001AF8 000A78 48830900 */ mtc2 v1, $v1[2]
|
|
@@loop:
|
|
/* 04001AFC 000A7C C8222000 */ lqv $v2[0], 0x0(at)
|
|
/* 04001B00 000A80 2042FFF0 */ addi v0, v0, -0x10
|
|
/* 04001B04 000A84 20210010 */ addi at, at, 0x10
|
|
/* 04001B08 000A88 4B0110C7 */ vmudh $v3, $v2, $v1[0]
|
|
/* 04001B0C 000A8C 4B2118C5 */ vmudm $v3, $v3, $v1[1]
|
|
/* 04001B10 000A90 1C40FFFA */ bgtz v0, @@loop
|
|
/* 04001B14 000A94 E823207F */ sqv $v3[0], -0x10(at)
|
|
/* 04001B18 000A98 09000443 */ j next_cmd
|
|
/* 04001B1C 000A9C 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_RESAMPLE:
|
|
/* 04001B20 000AA0 001A1200 */ sll v0, cmd_w0, 8
|
|
/* 04001B24 000AA4 4A17BDEC */ vxor $v23, $v23, $v23
|
|
/* 04001B28 000AA8 00021202 */ srl v0, v0, 8
|
|
/* 04001B2C 000AAC 2003000F */ addi v1, zero, 0x10-1
|
|
/* 04001B30 000AB0 0019AF82 */ srl s5, cmd_w1, 0x1e
|
|
/* 04001B34 000AB4 1EA00012 */ bgtz s5, .L04001B80
|
|
/* 04001B38 000AB8 23010000 */ addi at, t8, 0
|
|
/* 04001B3C 000ABC 40042800 */ mfc0 a0, SP_DMA_FULL
|
|
@@dma_full:
|
|
/* 04001B40 000AC0 1480FFFF */ bnez a0, @@dma_full
|
|
/* 04001B44 000AC4 40042800 */ mfc0 a0, SP_DMA_FULL
|
|
/* 04001B48 000AC8 40810000 */ mtc0 at, SP_MEM_ADDR
|
|
/* 04001B4C 000ACC 40820800 */ mtc0 v0, SP_DRAM_ADDR
|
|
/* 04001B50 000AD0 40831000 */ mtc0 v1, SP_RD_LEN
|
|
/* 04001B54 000AD4 0019A082 */ srl s4, cmd_w1, 2
|
|
/* 04001B58 000AD8 32940FFF */ andi s4, s4, 0xfff
|
|
/* 04001B5C 000ADC 229404F8 */ addi s4, s4, 0x4f8
|
|
/* 04001B60 000AE0 C81F2005 */ lqv $v31[0], (data_0_0050)(zero)
|
|
/* 04001B64 000AE4 C8192004 */ lqv $v25[0], (data_0_0040)(zero)
|
|
/* 04001B68 000AE8 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001B6C 000AEC 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 04001B70 000AF0 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 04001B74 000AF4 CB131800 */ ldv $v19[0], 0x0(t8)
|
|
/* 04001B78 000AF8 090006E7 */ j .L04001B9C
|
|
/* 04001B7C 000AFC CB180F04 */ lsv $v24[14], 0x8(t8)
|
|
.L04001B80:
|
|
/* 04001B80 000B00 0019A082 */ srl s4, cmd_w1, 2
|
|
/* 04001B84 000B04 32940FFF */ andi s4, s4, 0xfff
|
|
/* 04001B88 000B08 229404F8 */ addi s4, s4, 0x4f8
|
|
/* 04001B8C 000B0C C81F2005 */ lqv $v31[0], (data_0_0050)(zero)
|
|
/* 04001B90 000B10 4A139CEC */ vxor $v19, $v19, $v19
|
|
/* 04001B94 000B14 C8192004 */ lqv $v25[0], (data_0_0040)(zero)
|
|
/* 04001B98 000B18 4A18C62C */ vxor $v24, $v24, $v24
|
|
.L04001B9C:
|
|
/* 04001B9C 000B1C 4894AA00 */ mtc2 s4, $v21[4]
|
|
/* 04001BA0 000B20 200400C0 */ addi a0, zero, data_0_00C0
|
|
/* 04001BA4 000B24 4884AB00 */ mtc2 a0, $v21[6]
|
|
/* 04001BA8 000B28 4A1FCE51 */ vsub $v25, $v25, $v31
|
|
/* 04001BAC 000B2C 00192382 */ srl a0, cmd_w1, 0xe
|
|
/* 04001BB0 000B30 4884AC00 */ mtc2 a0, $v21[8]
|
|
/* 04001BB4 000B34 20040040 */ addi a0, zero, 0x40
|
|
/* 04001BB8 000B38 4884AD00 */ mtc2 a0, $v21[10]
|
|
/* 04001BBC 000B3C 4A1FCE51 */ vsub $v25, $v25, $v31
|
|
/* 04001BC0 000B40 C81E2006 */ lqv $v30[0], (data_0_0060)(zero)
|
|
/* 04001BC4 000B44 C81D2007 */ lqv $v29[0], (data_0_0070)(zero)
|
|
/* 04001BC8 000B48 C81C2008 */ lqv $v28[0], (data_0_0080)(zero)
|
|
/* 04001BCC 000B4C 4BF8FE05 */ vmudm $v24, $v31, $v24[7]
|
|
/* 04001BD0 000B50 C81B2009 */ lqv $v27[0], (data_0_0090)(zero)
|
|
/* 04001BD4 000B54 4B95CDCD */ vmadm $v23, $v25, $v21[4]
|
|
/* 04001BD8 000B58 C81A200A */ lqv $v26[0], (data_0_00A0)(zero)
|
|
/* 04001BDC 000B5C 4B1EFE0E */ vmadn $v24, $v31, $v30[0]
|
|
/* 04001BE0 000B60 EA931800 */ sdv $v19[0], 0x0(s4)
|
|
/* 04001BE4 000B64 C8192004 */ lqv $v25[0], (data_0_0040)(zero)
|
|
/* 04001BE8 000B68 4B55FD86 */ vmudn $v22, $v31, $v21[2]
|
|
/* 04001BEC 000B6C 20160170 */ addi s6, zero, 0x170
|
|
/* 04001BF0 000B70 4B5EBD8E */ vmadn $v22, $v23, $v30[2]
|
|
/* 04001BF4 000B74 33240003 */ andi a0, cmd_w1, 3
|
|
/* 04001BF8 000B78 4BB5C504 */ vmudl $v20, $v24, $v21[5]
|
|
/* 04001BFC 000B7C 10800002 */ beqz a0, .L04001C08
|
|
/* 04001C00 000B80 20170500 */ addi s7, zero, data_0_0500
|
|
/* 04001C04 000B84 20170670 */ addi s7, zero, data_0_0670
|
|
.L04001C08:
|
|
/* 04001C08 000B88 EB180B84 */ ssv $v24[7], 0x8(t8)
|
|
/* 04001C0C 000B8C 4B9EA506 */ vmudn $v20, $v20, $v30[4]
|
|
/* 04001C10 000B90 E816207B */ sqv $v22[0], (data_0_0FB0_neg)(zero)
|
|
/* 04001C14 000B94 4B75FD0E */ vmadn $v20, $v31, $v21[3]
|
|
/* 04001C18 000B98 E814207C */ sqv $v20[0], (data_0_0FC0_neg)(zero)
|
|
/* 04001C1C 000B9C 84150FB0 */ lh s5, (data_0_0FB0 + 0)(zero)
|
|
/* 04001C20 000BA0 840D0FC0 */ lh t5, (data_0_0FB0 + 0x10)(zero)
|
|
/* 04001C24 000BA4 84110FB8 */ lh s1, (data_0_0FB0 + 0x8)(zero)
|
|
/* 04001C28 000BA8 84090FC8 */ lh t1, (data_0_0FB0 + 0x18)(zero)
|
|
/* 04001C2C 000BAC 84140FB2 */ lh s4, (data_0_0FB0 + 0x2)(zero)
|
|
/* 04001C30 000BB0 840C0FC2 */ lh t4, (data_0_0FB0 + 0x12)(zero)
|
|
/* 04001C34 000BB4 84100FBA */ lh s0, (data_0_0FB0 + 0xa)(zero)
|
|
/* 04001C38 000BB8 84080FCA */ lh t0, (data_0_0FB0 + 0x1a)(zero)
|
|
/* 04001C3C 000BBC 84130FB4 */ lh s3, (data_0_0FB0 + 0x4)(zero)
|
|
/* 04001C40 000BC0 840B0FC4 */ lh t3, (data_0_0FB0 + 0x14)(zero)
|
|
/* 04001C44 000BC4 840F0FBC */ lh t7, (data_0_0FB0 + 0xc)(zero)
|
|
/* 04001C48 000BC8 84070FCC */ lh a3, (data_0_0FB0 + 0x1c)(zero)
|
|
/* 04001C4C 000BCC 84120FB6 */ lh s2, (data_0_0FB0 + 0x6)(zero)
|
|
/* 04001C50 000BD0 840A0FC6 */ lh t2, (data_0_0FB0 + 0x16)(zero)
|
|
/* 04001C54 000BD4 840E0FBE */ lh t6, (data_0_0FB0 + 0xe)(zero)
|
|
/* 04001C58 000BD8 84060FCE */ lh a2, (data_0_0FB0 + 0x1e)(zero)
|
|
.L04001C5C:
|
|
/* 04001C5C 000BDC CAB31800 */ ldv $v19[0], 0x0(s5)
|
|
/* 04001C60 000BE0 4BF8FE05 */ vmudm $v24, $v31, $v24[7]
|
|
/* 04001C64 000BE4 C9B21800 */ ldv $v18[0], 0x0(t5)
|
|
/* 04001C68 000BE8 4BF7FE0F */ vmadh $v24, $v31, $v23[7]
|
|
/* 04001C6C 000BEC CA331C00 */ ldv $v19[8], 0x0(s1)
|
|
/* 04001C70 000BF0 4B95CDCD */ vmadm $v23, $v25, $v21[4]
|
|
/* 04001C74 000BF4 C9321C00 */ ldv $v18[8], 0x0(t1)
|
|
/* 04001C78 000BF8 4B1EFE0E */ vmadn $v24, $v31, $v30[0]
|
|
/* 04001C7C 000BFC CA911800 */ ldv $v17[0], 0x0(s4)
|
|
/* 04001C80 000C00 4B55FD86 */ vmudn $v22, $v31, $v21[2]
|
|
/* 04001C84 000C04 C9901800 */ ldv $v16[0], 0x0(t4)
|
|
/* 04001C88 000C08 CA111C00 */ ldv $v17[8], 0x0(s0)
|
|
/* 04001C8C 000C0C 4B5EBD8E */ vmadn $v22, $v23, $v30[2]
|
|
/* 04001C90 000C10 C9101C00 */ ldv $v16[8], 0x0(t0)
|
|
/* 04001C94 000C14 4BB5C504 */ vmudl $v20, $v24, $v21[5]
|
|
/* 04001C98 000C18 CA6F1800 */ ldv $v15[0], 0x0(s3)
|
|
/* 04001C9C 000C1C C96E1800 */ ldv $v14[0], 0x0(t3)
|
|
/* 04001CA0 000C20 C9EF1C00 */ ldv $v15[8], 0x0(t7)
|
|
/* 04001CA4 000C24 C8EE1C00 */ ldv $v14[8], 0x0(a3)
|
|
/* 04001CA8 000C28 4B9EA506 */ vmudn $v20, $v20, $v30[4]
|
|
/* 04001CAC 000C2C CA4D1800 */ ldv $v13[0], 0x0(s2)
|
|
/* 04001CB0 000C30 4B75FD0E */ vmadn $v20, $v31, $v21[3]
|
|
/* 04001CB4 000C34 C94C1800 */ ldv $v12[0], 0x0(t2)
|
|
/* 04001CB8 000C38 C9CD1C00 */ ldv $v13[8], 0x0(t6)
|
|
/* 04001CBC 000C3C 4A129AC0 */ vmulf $v11, $v19, $v18
|
|
/* 04001CC0 000C40 C8CC1C00 */ ldv $v12[8], 0x0(a2)
|
|
/* 04001CC4 000C44 4A108A80 */ vmulf $v10, $v17, $v16
|
|
/* 04001CC8 000C48 E816207B */ sqv $v22[0], data_0_0FB0_neg(zero)
|
|
/* 04001CCC 000C4C 4A0E7A40 */ vmulf $v9, $v15, $v14
|
|
/* 04001CD0 000C50 E814207C */ sqv $v20[0], data_0_0FC0_neg(zero)
|
|
/* 04001CD4 000C54 84150FB0 */ lh s5, (data_0_0FB0 + 0)(zero)
|
|
/* 04001CD8 000C58 840D0FC0 */ lh t5, (data_0_0FB0 + 0x10)(zero)
|
|
/* 04001CDC 000C5C 4A0C6A00 */ vmulf $v8, $v13, $v12
|
|
/* 04001CE0 000C60 84110FB8 */ lh s1, (data_0_0FB0 + 0x8)(zero)
|
|
/* 04001CE4 000C64 4A6B5AD0 */ vadd $v11, $v11, $v11[1q]
|
|
/* 04001CE8 000C68 84090FC8 */ lh t1, (data_0_0FB0 + 0x18)(zero)
|
|
/* 04001CEC 000C6C 4A6A5290 */ vadd $v10, $v10, $v10[1q]
|
|
/* 04001CF0 000C70 84140FB2 */ lh s4, (data_0_0FB0 + 0x2)(zero)
|
|
/* 04001CF4 000C74 4A694A50 */ vadd $v9, $v9, $v9[1q]
|
|
/* 04001CF8 000C78 840C0FC2 */ lh t4, (data_0_0FB0 + 0x12)(zero)
|
|
/* 04001CFC 000C7C 4A684210 */ vadd $v8, $v8, $v8[1q]
|
|
/* 04001D00 000C80 84100FBA */ lh s0, (data_0_0FB0 + 0xa)(zero)
|
|
/* 04001D04 000C84 4ACB5AD0 */ vadd $v11, $v11, $v11[2h]
|
|
/* 04001D08 000C88 84080FCA */ lh t0, (data_0_0FB0 + 0x1a)(zero)
|
|
/* 04001D0C 000C8C 4ACA5290 */ vadd $v10, $v10, $v10[2h]
|
|
/* 04001D10 000C90 84130FB4 */ lh s3, (data_0_0FB0 + 0x4)(zero)
|
|
/* 04001D14 000C94 4AC94A50 */ vadd $v9, $v9, $v9[2h]
|
|
/* 04001D18 000C98 840B0FC4 */ lh t3, (data_0_0FB0 + 0x14)(zero)
|
|
/* 04001D1C 000C9C 4AC84210 */ vadd $v8, $v8, $v8[2h]
|
|
/* 04001D20 000CA0 840F0FBC */ lh t7, (data_0_0FB0 + 0xc)(zero)
|
|
/* 04001D24 000CA4 4A8BE9C6 */ vmudn $v7, $v29, $v11[0h]
|
|
/* 04001D28 000CA8 84070FCC */ lh a3, (data_0_0FB0 + 0x1c)(zero)
|
|
/* 04001D2C 000CAC 4A8AE1CE */ vmadn $v7, $v28, $v10[0h]
|
|
/* 04001D30 000CB0 84120FB6 */ lh s2, (data_0_0FB0 + 0x6)(zero)
|
|
/* 04001D34 000CB4 4A89D9CE */ vmadn $v7, $v27, $v9[0h]
|
|
/* 04001D38 000CB8 840A0FC6 */ lh t2, (data_0_0FB0 + 0x16)(zero)
|
|
/* 04001D3C 000CBC 4A88D1CE */ vmadn $v7, $v26, $v8[0h]
|
|
/* 04001D40 000CC0 840E0FBE */ lh t6, (data_0_0FB0 + 0xe)(zero)
|
|
/* 04001D44 000CC4 84060FCE */ lh a2, (data_0_0FB0 + 0x1e)(zero)
|
|
/* 04001D48 000CC8 22D6FFF0 */ addi s6, s6, -0x10
|
|
/* 04001D4C 000CCC 1AC00003 */ blez s6, .L04001D5C
|
|
/* 04001D50 000CD0 EAE72000 */ sqv $v7[0], 0x0(s7)
|
|
/* 04001D54 000CD4 09000717 */ j .L04001C5C
|
|
/* 04001D58 000CD8 22F70010 */ addi s7, s7, 0x10
|
|
.L04001D5C:
|
|
/* 04001D5C 000CDC CAB31800 */ ldv $v19[0], 0x0(s5)
|
|
/* 04001D60 000CE0 EB180804 */ ssv $v24[0], 0x8(t8)
|
|
/* 04001D64 000CE4 0D000466 */ jal dma_write
|
|
/* 04001D68 000CE8 EB131800 */ sdv $v19[0], 0x0(t8)
|
|
/* 04001D6C 000CEC 23DEFFF8 */ addi fp, fp, -8
|
|
/* 04001D70 000CF0 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001D74 000CF4 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 04001D78 000CF8 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 04001D7C 000CFC 09000443 */ j next_cmd
|
|
/* 04001D80 000D00 00000000 */ nop
|
|
|
|
|
|
|
|
|
|
|
|
cmd_ENVMIXER:
|
|
/* 04001D84 000D04 00191200 */ sll v0, cmd_w1, 8
|
|
/* 04001D88 000D08 00021202 */ srl v0, v0, 8
|
|
/* 04001D8C 000D0C C81F2005 */ lqv $v31[0], (data_0_0050)(zero)
|
|
/* 04001D90 000D10 C80A2006 */ lqv $v10[0], (data_0_0060)(zero)
|
|
/* 04001D94 000D14 C81E200B */ lqv $v30[0], (data_0_00B0)(zero)
|
|
/* 04001D98 000D18 4A00002C */ vxor $v0, $v0, $v0
|
|
/* 04001D9C 000D1C 001A7402 */ srl t6, cmd_w0, 0x10
|
|
/* 04001DA0 000D20 31CF0001 */ andi t7, t6, 1
|
|
/* 04001DA4 000D24 1DE0000A */ bgtz t7, .L04001DD0
|
|
/* 04001DA8 000D28 23010000 */ addi at, t8, 0
|
|
/* 04001DAC 000D2C 0D00045F */ jal dma_read
|
|
/* 04001DB0 000D30 2003004F */ addi v1, zero, 0x50-1
|
|
/* 04001DB4 000D34 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
@@dma_busy:
|
|
/* 04001DB8 000D38 14A0FFFF */ bnez a1, @@dma_busy
|
|
/* 04001DBC 000D3C 40053000 */ mfc0 a1, SP_DMA_BUSY
|
|
/* 04001DC0 000D40 CB142000 */ lqv $v20[0], 0x0(t8)
|
|
/* 04001DC4 000D44 CB152001 */ lqv $v21[0], 0x10(t8)
|
|
/* 04001DC8 000D48 CB122002 */ lqv $v18[0], 0x20(t8)
|
|
/* 04001DCC 000D4C CB132003 */ lqv $v19[0], 0x30(t8)
|
|
.L04001DD0:
|
|
/* 04001DD0 000D50 CB182004 */ lqv $v24[0], 0x40(t8)
|
|
/* 04001DD4 000D54 20100500 */ addi s0, zero, data_0_0500
|
|
/* 04001DD8 000D58 201509E0 */ addi s5, zero, data_0_09E0
|
|
/* 04001DDC 000D5C 20140B50 */ addi s4, zero, data_0_0B50
|
|
/* 04001DE0 000D60 20130CC0 */ addi s3, zero, data_0_0CC0
|
|
/* 04001DE4 000D64 20120E30 */ addi s2, zero, data_0_0E30
|
|
/* 04001DE8 000D68 20110170 */ addi s1, zero, 0x170
|
|
/* 04001DEC 000D6C 4816C400 */ mfc2 s6, $v24[8]
|
|
/* 04001DF0 000D70 4BD8FA68 */ vand $v9, $v31, $v24[6]
|
|
/* 04001DF4 000D74 4BF8FA28 */ vand $v8, $v31, $v24[7]
|
|
/* 04001DF8 000D78 4A090251 */ vsub $v9, $v0, $v9
|
|
/* 04001DFC 000D7C 4A080211 */ vsub $v8, $v0, $v8
|
|
/* 04001E00 000D80 4A09422C */ vxor $v8, $v8, $v9
|
|
/* 04001E04 000D84 11E00035 */ beqz t7, .L04001EDC
|
|
/* 04001E08 000D88 4817C100 */ mfc2 s7, $v24[2]
|
|
/* 04001E0C 000D8C 2003004F */ addi v1, zero, 0x4f
|
|
/* 04001E10 000D90 4A14A52C */ vxor $v20, $v20, $v20
|
|
/* 04001E14 000D94 CB140F28 */ lsv $v20[14], 0x50(t8)
|
|
/* 04001E18 000D98 4A15AD6C */ vxor $v21, $v21, $v21
|
|
/* 04001E1C 000D9C CA112000 */ lqv $v17[0], 0x0(s0)
|
|
/* 04001E20 000DA0 4A1294AC */ vxor $v18, $v18, $v18
|
|
/* 04001E24 000DA4 489A9700 */ mtc2 cmd_w0, $v18[14]
|
|
/* 04001E28 000DA8 4B58F5C4 */ vmudl $v23, $v30, $v24[2]
|
|
/* 04001E2C 000DAC CABD2000 */ lqv $v29[0], 0x0(s5)
|
|
/* 04001E30 000DB0 4B38F5CE */ vmadn $v23, $v30, $v24[1]
|
|
/* 04001E34 000DB4 CA7B2000 */ lqv $v27[0], 0x0(s3)
|
|
/* 04001E38 000DB8 4BF4FD0F */ vmadh $v20, $v31, $v20[7]
|
|
/* 04001E3C 000DBC CA9C2000 */ lqv $v28[0], 0x0(s4)
|
|
/* 04001E40 000DC0 4B00FD4E */ vmadn $v21, $v31, $v0[0]
|
|
/* 04001E44 000DC4 06E10003 */ bgez s7, .L04001E54
|
|
/* 04001E48 000DC8 4A139CEC */ vxor $v19, $v19, $v19
|
|
/* 04001E4C 000DCC 09000796 */ j .L04001E4C
|
|
/* 04001E50 000DD0 4B18A523 */ vge $v20, $v20, $v24[0]
|
|
.L04001E54:
|
|
/* 04001E54 000DD4 4B18A520 */ vlt $v20, $v20, $v24[0]
|
|
.L04001E4C:
|
|
/* 04001E58 000DD8 4A114C6C */ vxor $v17, $v9, $v17
|
|
/* 04001E5C 000DDC 4BB8F5C4 */ vmudl $v23, $v30, $v24[5]
|
|
/* 04001E60 000DE0 CA5A2000 */ lqv $v26[0], 0x0(s2)
|
|
/* 04001E64 000DE4 4B98F5CE */ vmadn $v23, $v30, $v24[4]
|
|
/* 04001E68 000DE8 2231FFF0 */ addi s1, s1, -0x10
|
|
/* 04001E6C 000DEC 4BF2FC8F */ vmadh $v18, $v31, $v18[7]
|
|
/* 04001E70 000DF0 22100010 */ addi s0, s0, 0x10
|
|
/* 04001E74 000DF4 4B00FCCE */ vmadn $v19, $v31, $v0[0]
|
|
/* 04001E78 000DF8 4BD8A400 */ vmulf $v16, $v20, $v24[6]
|
|
/* 04001E7C 000DFC 06C10003 */ bgez s6, .L04001E8C
|
|
/* 04001E80 000E00 4BF8A3C0 */ vmulf $v15, $v20, $v24[7]
|
|
/* 04001E84 000E04 090007A4 */ j .L04001E84
|
|
/* 04001E88 000E08 4B7894A3 */ vge $v18, $v18, $v24[3]
|
|
.L04001E8C:
|
|
/* 04001E8C 000E0C 4B7894A0 */ vlt $v18, $v18, $v24[3]
|
|
.L04001E84:
|
|
/* 04001E90 000E10 4BAAEF40 */ vmulf $v29, $v29, $v10[5]
|
|
/* 04001E94 000E14 4A108F48 */ vmacf $v29, $v17, $v16
|
|
/* 04001E98 000E18 4BAADEC0 */ vmulf $v27, $v27, $v10[5]
|
|
/* 04001E9C 000E1C 4A0F8EC8 */ vmacf $v27, $v17, $v15
|
|
/* 04001EA0 000E20 4A11446C */ vxor $v17, $v8, $v17
|
|
/* 04001EA4 000E24 4BD89400 */ vmulf $v16, $v18, $v24[6]
|
|
/* 04001EA8 000E28 4BF893C0 */ vmulf $v15, $v18, $v24[7]
|
|
/* 04001EAC 000E2C EABD2000 */ sqv $v29[0], 0x0(s5)
|
|
/* 04001EB0 000E30 4BAAE700 */ vmulf $v28, $v28, $v10[5]
|
|
/* 04001EB4 000E34 22B50010 */ addi s5, s5, 0x10
|
|
/* 04001EB8 000E38 4A108F08 */ vmacf $v28, $v17, $v16
|
|
/* 04001EBC 000E3C EA7B2000 */ sqv $v27[0], 0x0(s3)
|
|
/* 04001EC0 000E40 4BAAD680 */ vmulf $v26, $v26, $v10[5]
|
|
/* 04001EC4 000E44 22730010 */ addi s3, s3, 0x10
|
|
/* 04001EC8 000E48 4A0F8E88 */ vmacf $v26, $v17, $v15
|
|
/* 04001ECC 000E4C EA9C2000 */ sqv $v28[0], 0x0(s4)
|
|
/* 04001ED0 000E50 22940010 */ addi s4, s4, 0x10
|
|
/* 04001ED4 000E54 EA5A2000 */ sqv $v26[0], 0x0(s2)
|
|
/* 04001ED8 000E58 22520010 */ addi s2, s2, 0x10
|
|
.L04001EDC:
|
|
/* 04001EDC 000E5C 4B58AD54 */ vaddc $v21, $v21, $v24[2]
|
|
/* 04001EE0 000E60 4B38A510 */ vadd $v20, $v20, $v24[1]
|
|
.L04001EE4:
|
|
/* 04001EE4 000E64 CABD2000 */ lqv $v29[0], 0x0(s5)
|
|
/* 04001EE8 000E68 4BB89CD4 */ vaddc $v19, $v19, $v24[5]
|
|
/* 04001EEC 000E6C CA112000 */ lqv $v17[0], 0x0(s0)
|
|
/* 04001EF0 000E70 06E10003 */ bgez s7, .L04001F00
|
|
/* 04001EF4 000E74 4B989490 */ vadd $v18, $v18, $v24[4]
|
|
/* 04001EF8 000E78 090007C1 */ j .L04001F04
|
|
/* 04001EFC 000E7C 4B18A523 */ vge $v20, $v20, $v24[0]
|
|
.L04001F00:
|
|
/* 04001F00 000E80 4B18A520 */ vlt $v20, $v20, $v24[0]
|
|
.L04001F04:
|
|
/* 04001F04 000E84 4A114C6C */ vxor $v17, $v9, $v17
|
|
/* 04001F08 000E88 06C10003 */ bgez s6, .L04001F18
|
|
/* 04001F0C 000E8C CA7B2000 */ lqv $v27[0], 0x0(s3)
|
|
/* 04001F10 000E90 090007C7 */ j .L04001F10
|
|
/* 04001F14 000E94 4B7894A3 */ vge $v18, $v18, $v24[3]
|
|
.L04001F18:
|
|
/* 04001F18 000E98 4B7894A0 */ vlt $v18, $v18, $v24[3]
|
|
.L04001F10:
|
|
/* 04001F1C 000E9C 4BD8A400 */ vmulf $v16, $v20, $v24[6]
|
|
/* 04001F20 000EA0 EB142000 */ sqv $v20[0], 0x0(t8)
|
|
/* 04001F24 000EA4 4BF8A3C0 */ vmulf $v15, $v20, $v24[7]
|
|
/* 04001F28 000EA8 EB152001 */ sqv $v21[0], 0x10(t8)
|
|
/* 04001F2C 000EAC 4BAAEF40 */ vmulf $v29, $v29, $v10[5]
|
|
/* 04001F30 000EB0 4A108F48 */ vmacf $v29, $v17, $v16
|
|
/* 04001F34 000EB4 CA9C2000 */ lqv $v28[0], 0x0(s4)
|
|
/* 04001F38 000EB8 4BAADEC0 */ vmulf $v27, $v27, $v10[5]
|
|
/* 04001F3C 000EBC CA5A2000 */ lqv $v26[0], 0x0(s2)
|
|
/* 04001F40 000EC0 4A0F8EC8 */ vmacf $v27, $v17, $v15
|
|
/* 04001F44 000EC4 4A11446C */ vxor $v17, $v8, $v17
|
|
/* 04001F48 000EC8 2231FFF0 */ addi s1, s1, -0x10
|
|
/* 04001F4C 000ECC 4B58AD54 */ vaddc $v21, $v21, $v24[2]
|
|
/* 04001F50 000ED0 22100010 */ addi s0, s0, 0x10
|
|
/* 04001F54 000ED4 4B38A510 */ vadd $v20, $v20, $v24[1]
|
|
/* 04001F58 000ED8 EABD2000 */ sqv $v29[0], 0x0(s5)
|
|
/* 04001F5C 000EDC 4BD89400 */ vmulf $v16, $v18, $v24[6]
|
|
/* 04001F60 000EE0 22B50010 */ addi s5, s5, 0x10
|
|
/* 04001F64 000EE4 4BF893C0 */ vmulf $v15, $v18, $v24[7]
|
|
/* 04001F68 000EE8 EA7B2000 */ sqv $v27[0], 0x0(s3)
|
|
/* 04001F6C 000EEC 4BAAE700 */ vmulf $v28, $v28, $v10[5]
|
|
/* 04001F70 000EF0 22730010 */ addi s3, s3, 0x10
|
|
/* 04001F74 000EF4 4A108F08 */ vmacf $v28, $v17, $v16
|
|
/* 04001F78 000EF8 4BAAD680 */ vmulf $v26, $v26, $v10[5]
|
|
/* 04001F7C 000EFC 4A0F8E88 */ vmacf $v26, $v17, $v15
|
|
/* 04001F80 000F00 EA9C2000 */ sqv $v28[0], 0x0(s4)
|
|
/* 04001F84 000F04 22940010 */ addi s4, s4, 0x10
|
|
/* 04001F88 000F08 1A200003 */ blez s1, .L04001F98
|
|
/* 04001F8C 000F0C EA5A2000 */ sqv $v26[0], 0x0(s2)
|
|
/* 04001F90 000F10 090007B9 */ j .L04001EE4
|
|
/* 04001F94 000F14 22520010 */ addi s2, s2, 0x10
|
|
.L04001F98:
|
|
/* 04001F98 000F18 EB122002 */ sqv $v18[0], 0x20(t8)
|
|
/* 04001F9C 000F1C EB132003 */ sqv $v19[0], 0x30(t8)
|
|
/* 04001FA0 000F20 0D000466 */ jal dma_write
|
|
/* 04001FA4 000F24 EB182004 */ sqv $v24[0], 0x40(t8)
|
|
/* 04001FA8 000F28 09000443 */ j next_cmd
|
|
/* 04001FAC 000F2C 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
|
|
|
|
|
|
|
|
cmd_MIXER:
|
|
/* 04001FB0 000F30 C81F2006 */ lqv $v31[0], (data_0_0060)(zero)
|
|
/* 04001FB4 000F34 3336FFFF */ andi s6, cmd_w1, 0xffff
|
|
/* 04001FB8 000F38 22D60500 */ addi s6, s6, 0x500
|
|
/* 04001FBC 000F3C CADC2000 */ lqv $v28[0], 0x0(s6)
|
|
/* 04001FC0 000F40 0019BC02 */ srl s7, cmd_w1, 0x10
|
|
/* 04001FC4 000F44 22F70500 */ addi s7, s7, 0x500
|
|
/* 04001FC8 000F48 CAFD2000 */ lqv $v29[0], 0x0(s7)
|
|
/* 04001FCC 000F4C 489AF000 */ mtc2 cmd_w0, $v30[0]
|
|
/* 04001FD0 000F50 20150170 */ addi s5, zero, 0x170
|
|
@@loop:
|
|
/* 04001FD4 000F54 4BBFE6C0 */ vmulf $v27, $v28, $v31[5]
|
|
/* 04001FD8 000F58 22B5FFF0 */ addi s5, s5, -0x10
|
|
/* 04001FDC 000F5C 22F70010 */ addi s7, s7, 0x10
|
|
/* 04001FE0 000F60 22D60010 */ addi s6, s6, 0x10
|
|
/* 04001FE4 000F64 4B1EEEC8 */ vmacf $v27, $v29, $v30[0]
|
|
/* 04001FE8 000F68 CADC2000 */ lqv $v28[0], 0x0(s6)
|
|
/* 04001FEC 000F6C CAFD2000 */ lqv $v29[0], 0x0(s7)
|
|
/* 04001FF0 000F70 1EA0FFF8 */ bgtz s5, @@loop
|
|
/* 04001FF4 000F74 EADB207F */ sqv $v27[0], -0x10(s6)
|
|
/* 04001FF8 000F78 09000443 */ j next_cmd
|
|
/* 04001FFC 000F7C 23DEFFF8 */ addi fp, fp, -8
|
|
|
|
.align 8
|
|
Overlay0End:
|
|
|
|
.if Overlay0End > 0x04002000
|
|
.error "Not enough room in IMEM for Overlay 0"
|
|
.endif
|
|
|
|
.headersize Overlay1LoadAddress - orga()
|
|
// OVERLAY 1
|
|
Overlay1Address:
|
|
|
|
cmd_MP3_overlay1:
|
|
/* 04001238 000F80 8C110FF4 */ lw s1, (audioStruct + 0x4)(zero) // set by MP3ADDY, mp3 address?
|
|
/* 0400123C 000F84 8C100FF8 */ lw s0, (audioStruct + 0x8)(zero) // ucode_data dram addr
|
|
/* 04001240 000F88 8C0F0FFC */ lw t7, (audioStruct + 0xc)(zero)
|
|
/* 04001244 000F8C 02201020 */ add v0, s1, zero
|
|
/* 04001248 000F90 200108A0 */ addi at, zero, data_1_08A0
|
|
/* 0400124C 000F94 0D00045F */ jal dma_read // dma mp3 data
|
|
/* 04001250 000F98 2003043F */ addi v1, zero, 0x440-1
|
|
/* 04001254 000F9C 02201020 */ add v0, s1, zero
|
|
/* 04001258 000FA0 200102C0 */ addi at, zero, nextTaskEntry
|
|
/* 0400125C 000FA4 0D000466 */ jal dma_write // write part of dmem over the mp3 data
|
|
/* 04001260 000FA8 2003013F */ addi v1, zero, nextTaskEntry_len-1
|
|
/* 04001264 000FAC 0D00046D */ jal dma_wait
|
|
/* 04001268 000FB0 00000000 */ nop
|
|
/* 0400126C 000FB4 220202C0 */ addi v0, s0, orga(Overlay1DataStart)
|
|
/* 04001270 000FB8 20010010 */ addi at, zero, orga(Overlay1DataLoadAddress)
|
|
/* 04001274 000FBC 0D00045F */ jal dma_read
|
|
/* 04001278 000FC0 2003088F */ addi v1, zero, org(Overlay1DataEnd)-org(Overlay1DataStart)-1
|
|
/* 0400127C 000FC4 0D00046D */ jal dma_wait
|
|
/* 04001280 000FC8 00000000 */ nop
|
|
/* 04001284 000FCC 0019AA00 */ sll s5, cmd_w1, 8 // remove top 8 bits
|
|
/* 04001288 000FD0 0015AA02 */ srl s5, s5, 8
|
|
/* 0400128C 000FD4 0015B020 */ add s6, zero, s5 // save
|
|
/* 04001290 000FD8 20030188 */ addi v1, zero, 0x188
|
|
/* 04001294 000FDC 20140480 */ addi s4, zero, 0x480
|
|
/* 04001298 000FE0 00151020 */ add v0, zero, s5
|
|
/* 0400129C 000FE4 22B50008 */ addi s5, s5, 8
|
|
/* 040012A0 000FE8 20010CE8 */ addi at, zero, data_1_0CE8
|
|
/* 040012A4 000FEC 200E08A0 */ addi t6, zero, data_1_08A0
|
|
/* 040012A8 000FF0 21CD0220 */ addi t5, t6, 0x220
|
|
/* 040012AC 000FF4 334C001E */ andi t4, cmd_w0, 0x1e
|
|
mp3_decode_loop:
|
|
/* 040012B0 000FF8 0D00045F */ jal dma_read
|
|
/* 040012B4 000FFC 2063FFFF */ addi v1, v1, -1
|
|
/* 040012B8 001000 20030180 */ addi v1, zero, 0x180
|
|
/* 040012BC 001004 2294FE80 */ addi s4, s4, -0x180
|
|
/* 040012C0 001008 20120180 */ addi s2, zero, 0x180
|
|
/* 040012C4 00100C 20170CF0 */ addi s7, zero, data_1_0CF0
|
|
/* 040012C8 001010 0D00046D */ jal dma_wait
|
|
/* 040012CC 001014 20130E70 */ addi s3, zero, data_1_0E70
|
|
mp3_decode_innerloop:
|
|
/* 040012D0 001018 31CEFFE0 */ andi t6, t6, 0xffe0
|
|
/* 040012D4 00101C 31ADFFE0 */ andi t5, t5, 0xffe0
|
|
/* 040012D8 001020 01CC7025 */ or t6, t6, t4
|
|
/* 040012DC 001024 01AC6825 */ or t5, t5, t4
|
|
/* 040012E0 001028 CAE00800 */ lsv $v0[0], 0x0(s7)
|
|
/* 040012E4 00102C CAFF081F */ lsv $v31[0], 0x3e(s7)
|
|
/* 040012E8 001030 CAE10801 */ lsv $v1[0], 0x2(s7)
|
|
/* 040012EC 001034 CAFE081E */ lsv $v30[0], 0x3c(s7)
|
|
/* 040012F0 001038 CAE20803 */ lsv $v2[0], 0x6(s7)
|
|
/* 040012F4 00103C CAFC081C */ lsv $v28[0], 0x38(s7)
|
|
/* 040012F8 001040 4A1F0010 */ vadd $v0, $v0, $v31
|
|
/* 040012FC 001044 CAE30802 */ lsv $v3[0], 0x4(s7)
|
|
/* 04001300 001048 CAFD081D */ lsv $v29[0], 0x3a(s7)
|
|
/* 04001304 00104C 4A1E0850 */ vadd $v1, $v1, $v30
|
|
/* 04001308 001050 CAE40807 */ lsv $v4[0], 0xe(s7)
|
|
/* 0400130C 001054 CAF80818 */ lsv $v24[0], 0x30(s7)
|
|
/* 04001310 001058 4A1C1090 */ vadd $v2, $v2, $v28
|
|
/* 04001314 00105C CAE50806 */ lsv $v5[0], 0xc(s7)
|
|
/* 04001318 001060 CAF90819 */ lsv $v25[0], 0x32(s7)
|
|
/* 0400131C 001064 4A1D18D0 */ vadd $v3, $v3, $v29
|
|
/* 04001320 001068 CAE60804 */ lsv $v6[0], 0x8(s7)
|
|
/* 04001324 00106C CAFB081B */ lsv $v27[0], 0x36(s7)
|
|
/* 04001328 001070 4A182110 */ vadd $v4, $v4, $v24
|
|
/* 0400132C 001074 CAE70805 */ lsv $v7[0], 0xa(s7)
|
|
/* 04001330 001078 CAFA081A */ lsv $v26[0], 0x34(s7)
|
|
/* 04001334 00107C 4A192950 */ vadd $v5, $v5, $v25
|
|
/* 04001338 001080 CAE8080F */ lsv $v8[0], 0x1e(s7)
|
|
/* 0400133C 001084 CAF00810 */ lsv $v16[0], 0x20(s7)
|
|
/* 04001340 001088 4A1B3190 */ vadd $v6, $v6, $v27
|
|
/* 04001344 00108C CAE9080E */ lsv $v9[0], 0x1c(s7)
|
|
/* 04001348 001090 CAF10811 */ lsv $v17[0], 0x22(s7)
|
|
/* 0400134C 001094 4A1A39D0 */ vadd $v7, $v7, $v26
|
|
/* 04001350 001098 CAEA080C */ lsv $v10[0], 0x18(s7)
|
|
/* 04001354 00109C CAF30813 */ lsv $v19[0], 0x26(s7)
|
|
/* 04001358 0010A0 4A104210 */ vadd $v8, $v8, $v16
|
|
/* 0400135C 0010A4 CAEB080D */ lsv $v11[0], 0x1a(s7)
|
|
/* 04001360 0010A8 CAF20812 */ lsv $v18[0], 0x24(s7)
|
|
/* 04001364 0010AC 4A114A50 */ vadd $v9, $v9, $v17
|
|
/* 04001368 0010B0 CAEC0808 */ lsv $v12[0], 0x10(s7)
|
|
/* 0400136C 0010B4 CAF70817 */ lsv $v23[0], 0x2e(s7)
|
|
/* 04001370 0010B8 4A135290 */ vadd $v10, $v10, $v19
|
|
/* 04001374 0010BC CAED0809 */ lsv $v13[0], 0x12(s7)
|
|
/* 04001378 0010C0 CAF60816 */ lsv $v22[0], 0x2c(s7)
|
|
/* 0400137C 0010C4 4A125AD0 */ vadd $v11, $v11, $v18
|
|
/* 04001380 0010C8 CAEE080B */ lsv $v14[0], 0x16(s7)
|
|
/* 04001384 0010CC CAF40814 */ lsv $v20[0], 0x28(s7)
|
|
/* 04001388 0010D0 4A176310 */ vadd $v12, $v12, $v23
|
|
/* 0400138C 0010D4 CAEF080A */ lsv $v15[0], 0x14(s7)
|
|
/* 04001390 0010D8 CAF50815 */ lsv $v21[0], 0x2a(s7)
|
|
/* 04001394 0010DC 4A166B50 */ vadd $v13, $v13, $v22
|
|
/* 04001398 0010E0 4A147390 */ vadd $v14, $v14, $v20
|
|
/* 0400139C 0010E4 4A157BD0 */ vadd $v15, $v15, $v21
|
|
/* 040013A0 0010E8 0D0006AC */ jal func_04001AB0
|
|
/* 040013A4 0010EC 00000000 */ nop
|
|
/* 040013A8 0010F0 C8002005 */ lqv $v0[0], (data_1_0050)(zero)
|
|
/* 040013AC 0010F4 4A1182D1 */ vsub $v11, $v16, $v17
|
|
/* 040013B0 0010F8 21C80100 */ addi t0, t6, 0x100
|
|
/* 040013B4 0010FC 4A118410 */ vadd $v16, $v16, $v17
|
|
/* 040013B8 001100 21AA0100 */ addi t2, t5, 0x100
|
|
/* 040013BC 001104 4A01086C */ vxor $v1, $v1, $v1
|
|
/* 040013C0 001108 21C90200 */ addi t1, t6, 0x200
|
|
/* 040013C4 00110C 4A100C11 */ vsub $v16, $v1, $v16
|
|
/* 040013C8 001110 21AB0200 */ addi t3, t5, 0x200
|
|
/* 040013CC 001114 4B005AC5 */ vmudm $v11, $v11, $v0[0]
|
|
/* 040013D0 001118 4A139090 */ vadd $v2, $v18, $v19
|
|
/* 040013D4 00111C 4A1390D1 */ vsub $v3, $v18, $v19
|
|
/* 040013D8 001120 E9CB0800 */ ssv $v11[0], 0x0(t6)
|
|
/* 040013DC 001124 4A0B0AD1 */ vsub $v11, $v1, $v11
|
|
/* 040013E0 001128 E9700800 */ ssv $v16[0], 0x0(t3)
|
|
/* 040013E4 00112C E9AB0800 */ ssv $v11[0], 0x0(t5)
|
|
/* 040013E8 001130 4A020891 */ vsub $v2, $v1, $v2
|
|
/* 040013EC 001134 4B601C45 */ vmudm $v17, $v3, $v0[3]
|
|
/* 040013F0 001138 E9420800 */ ssv $v2[0], 0x0(t2)
|
|
/* 040013F4 00113C 4B4018CF */ vmadh $v3, $v3, $v0[2]
|
|
/* 040013F8 001140 4A0218D0 */ vadd $v3, $v3, $v2
|
|
/* 040013FC 001144 E9030800 */ ssv $v3[0], 0x0(t0)
|
|
/* 04001400 001148 4A15A151 */ vsub $v5, $v20, $v21
|
|
/* 04001404 00114C 4A15A110 */ vadd $v4, $v20, $v21
|
|
/* 04001408 001150 4A17B190 */ vadd $v6, $v22, $v23
|
|
/* 0400140C 001154 4A17B1D1 */ vsub $v7, $v22, $v23
|
|
/* 04001410 001158 4B602C45 */ vmudm $v17, $v5, $v0[3]
|
|
/* 04001414 00115C 4B40294F */ vmadh $v5, $v5, $v0[2]
|
|
/* 04001418 001160 4A040911 */ vsub $v4, $v1, $v4
|
|
/* 0400141C 001164 4BA03C45 */ vmudm $v17, $v7, $v0[5]
|
|
/* 04001420 001168 E9640840 */ ssv $v4[0], -0x80(t3)
|
|
/* 04001424 00116C 4B8039CF */ vmadh $v7, $v7, $v0[4]
|
|
/* 04001428 001170 4A042951 */ vsub $v5, $v5, $v4
|
|
/* 0400142C 001174 4A040911 */ vsub $v4, $v1, $v4
|
|
/* 04001430 001178 4A063190 */ vadd $v6, $v6, $v6
|
|
/* 04001434 00117C 4A0539D1 */ vsub $v7, $v7, $v5
|
|
/* 04001438 001180 4A062111 */ vsub $v4, $v4, $v6
|
|
/* 0400143C 001184 4A062951 */ vsub $v5, $v5, $v6
|
|
/* 04001440 001188 E9270840 */ ssv $v7[0], -0x80(t1)
|
|
/* 04001444 00118C E9440840 */ ssv $v4[0], -0x80(t2)
|
|
/* 04001448 001190 E9050840 */ ssv $v5[0], -0x80(t0)
|
|
/* 0400144C 001194 4A19C251 */ vsub $v9, $v24, $v25
|
|
/* 04001450 001198 4A19C210 */ vadd $v8, $v24, $v25
|
|
/* 04001454 00119C 4B604C45 */ vmudm $v17, $v9, $v0[3]
|
|
/* 04001458 0011A0 4B404A4F */ vmadh $v9, $v9, $v0[2]
|
|
/* 0400145C 0011A4 4A1BD2D1 */ vsub $v11, $v26, $v27
|
|
/* 04001460 0011A8 4A1BD290 */ vadd $v10, $v26, $v27
|
|
/* 04001464 0011AC 4A1DE351 */ vsub $v13, $v28, $v29
|
|
/* 04001468 0011B0 4A094090 */ vadd $v2, $v8, $v9
|
|
/* 0400146C 0011B4 4BA05C45 */ vmudm $v17, $v11, $v0[5]
|
|
/* 04001470 0011B8 4B805ACF */ vmadh $v11, $v11, $v0[4]
|
|
/* 04001474 0011BC 4BA06C45 */ vmudm $v17, $v13, $v0[5]
|
|
/* 04001478 0011C0 4B806B4F */ vmadh $v13, $v13, $v0[4]
|
|
/* 0400147C 0011C4 4A1DE310 */ vadd $v12, $v28, $v29
|
|
/* 04001480 0011C8 4A025AD0 */ vadd $v11, $v11, $v2
|
|
/* 04001484 0011CC 4A0A5290 */ vadd $v10, $v10, $v10
|
|
/* 04001488 0011D0 4A026B51 */ vsub $v13, $v13, $v2
|
|
/* 0400148C 0011D4 4A0C6310 */ vadd $v12, $v12, $v12
|
|
/* 04001490 0011D8 4A1FF390 */ vadd $v14, $v30, $v31
|
|
/* 04001494 0011DC 4A1FF3D1 */ vsub $v15, $v30, $v31
|
|
/* 04001498 0011E0 4A0A40D0 */ vadd $v3, $v8, $v10
|
|
/* 0400149C 0011E4 4A0E7390 */ vadd $v14, $v14, $v14
|
|
/* 040014A0 0011E8 4A0C6B50 */ vadd $v13, $v13, $v12
|
|
/* 040014A4 0011EC 4BE07C45 */ vmudm $v17, $v15, $v0[7]
|
|
/* 040014A8 0011F0 4BC07BCF */ vmadh $v15, $v15, $v0[6]
|
|
/* 040014AC 0011F4 4A0E7390 */ vadd $v14, $v14, $v14
|
|
/* 040014B0 0011F8 4A0B7BD1 */ vsub $v15, $v15, $v11
|
|
/* 040014B4 0011FC 4A037391 */ vsub $v14, $v14, $v3
|
|
/* 040014B8 001200 4A0E0B91 */ vsub $v14, $v1, $v14
|
|
/* 040014BC 001204 4A0A6C51 */ vsub $v17, $v13, $v10
|
|
/* 040014C0 001208 4A0E4A50 */ vadd $v9, $v9, $v14
|
|
/* 040014C4 00120C 4A025AD1 */ vsub $v11, $v11, $v2
|
|
/* 040014C8 001210 E9C90820 */ ssv $v9[0], 0x40(t6)
|
|
/* 040014CC 001214 4A0D5AD1 */ vsub $v11, $v11, $v13
|
|
/* 040014D0 001218 E9110860 */ ssv $v17[0], -0x40(t0)
|
|
/* 040014D4 00121C 4A0C4311 */ vsub $v12, $v8, $v12
|
|
/* 040014D8 001220 E90B0820 */ ssv $v11[0], 0x40(t0)
|
|
/* 040014DC 001224 4A080A11 */ vsub $v8, $v1, $v8
|
|
/* 040014E0 001228 E92F0860 */ ssv $v15[0], -0x40(t1)
|
|
/* 040014E4 00122C 4A0A0A91 */ vsub $v10, $v1, $v10
|
|
/* 040014E8 001230 E94C0820 */ ssv $v12[0], 0x40(t2)
|
|
/* 040014EC 001234 E9680860 */ ssv $v8[0], -0x40(t3)
|
|
/* 040014F0 001238 4A0C5291 */ vsub $v10, $v10, $v12
|
|
/* 040014F4 00123C E9AE0820 */ ssv $v14[0], 0x40(t5)
|
|
/* 040014F8 001240 E94A0860 */ ssv $v10[0], -0x40(t2)
|
|
/* 040014FC 001244 CAE00800 */ lsv $v0[0], 0x0(s7)
|
|
/* 04001500 001248 CAFF081F */ lsv $v31[0], 0x3e(s7)
|
|
/* 04001504 00124C CAE10801 */ lsv $v1[0], 0x2(s7)
|
|
/* 04001508 001250 CAFE081E */ lsv $v30[0], 0x3c(s7)
|
|
/* 0400150C 001254 CAE20803 */ lsv $v2[0], 0x6(s7)
|
|
/* 04001510 001258 CAFC081C */ lsv $v28[0], 0x38(s7)
|
|
/* 04001514 00125C CAE30802 */ lsv $v3[0], 0x4(s7)
|
|
/* 04001518 001260 CAFD081D */ lsv $v29[0], 0x3a(s7)
|
|
/* 0400151C 001264 4A1F0011 */ vsub $v0, $v0, $v31
|
|
/* 04001520 001268 C81F2003 */ lqv $v31[0], (data_0_0030)(zero)
|
|
/* 04001524 00126C 4A1E0851 */ vsub $v1, $v1, $v30
|
|
/* 04001528 001270 4A1C1091 */ vsub $v2, $v2, $v28
|
|
/* 0400152C 001274 CAE40807 */ lsv $v4[0], 0xe(s7)
|
|
/* 04001530 001278 4A1D18D1 */ vsub $v3, $v3, $v29
|
|
/* 04001534 00127C CAF80818 */ lsv $v24[0], 0x30(s7)
|
|
/* 04001538 001280 4B1F0005 */ vmudm $v0, $v0, $v31[0]
|
|
/* 0400153C 001284 CAE50806 */ lsv $v5[0], 0xc(s7)
|
|
/* 04001540 001288 4B3F0845 */ vmudm $v1, $v1, $v31[1]
|
|
/* 04001544 00128C CAF90819 */ lsv $v25[0], 0x32(s7)
|
|
/* 04001548 001290 4B7F1085 */ vmudm $v2, $v2, $v31[3]
|
|
/* 0400154C 001294 CAE60804 */ lsv $v6[0], 0x8(s7)
|
|
/* 04001550 001298 4B5F18C5 */ vmudm $v3, $v3, $v31[2]
|
|
/* 04001554 00129C CAFB081B */ lsv $v27[0], 0x36(s7)
|
|
/* 04001558 0012A0 4A000010 */ vadd $v0, $v0, $v0
|
|
/* 0400155C 0012A4 CAE70805 */ lsv $v7[0], 0xa(s7)
|
|
/* 04001560 0012A8 4A010850 */ vadd $v1, $v1, $v1
|
|
/* 04001564 0012AC CAFA081A */ lsv $v26[0], 0x34(s7)
|
|
/* 04001568 0012B0 4A021090 */ vadd $v2, $v2, $v2
|
|
/* 0400156C 0012B4 C81E2004 */ lqv $v30[0], (data_1_0040)(zero)
|
|
/* 04001570 0012B8 4A0318D0 */ vadd $v3, $v3, $v3
|
|
/* 04001574 0012BC CAE8080F */ lsv $v8[0], 0x1e(s7)
|
|
/* 04001578 0012C0 4A182111 */ vsub $v4, $v4, $v24
|
|
/* 0400157C 0012C4 CAF00810 */ lsv $v16[0], 0x20(s7)
|
|
/* 04001580 0012C8 4A192951 */ vsub $v5, $v5, $v25
|
|
/* 04001584 0012CC CAE9080E */ lsv $v9[0], 0x1c(s7)
|
|
/* 04001588 0012D0 4A1B3191 */ vsub $v6, $v6, $v27
|
|
/* 0400158C 0012D4 CAF10811 */ lsv $v17[0], 0x22(s7)
|
|
/* 04001590 0012D8 4A1A39D1 */ vsub $v7, $v7, $v26
|
|
/* 04001594 0012DC CAEA080C */ lsv $v10[0], 0x18(s7)
|
|
/* 04001598 0012E0 4BFF2105 */ vmudm $v4, $v4, $v31[7]
|
|
/* 0400159C 0012E4 CAF30813 */ lsv $v19[0], 0x26(s7)
|
|
/* 040015A0 0012E8 4BDF2945 */ vmudm $v5, $v5, $v31[6]
|
|
/* 040015A4 0012EC CAEB080D */ lsv $v11[0], 0x1a(s7)
|
|
/* 040015A8 0012F0 4B9F3185 */ vmudm $v6, $v6, $v31[4]
|
|
/* 040015AC 0012F4 CAF20812 */ lsv $v18[0], 0x24(s7)
|
|
/* 040015B0 0012F8 4BBF39C5 */ vmudm $v7, $v7, $v31[5]
|
|
/* 040015B4 0012FC 4A042110 */ vadd $v4, $v4, $v4
|
|
/* 040015B8 001300 4A052950 */ vadd $v5, $v5, $v5
|
|
/* 040015BC 001304 4A063190 */ vadd $v6, $v6, $v6
|
|
/* 040015C0 001308 4A0739D0 */ vadd $v7, $v7, $v7
|
|
/* 040015C4 00130C CAEC0808 */ lsv $v12[0], 0x10(s7)
|
|
/* 040015C8 001310 4A104211 */ vsub $v8, $v8, $v16
|
|
/* 040015CC 001314 CAF70817 */ lsv $v23[0], 0x2e(s7)
|
|
/* 040015D0 001318 4A114A51 */ vsub $v9, $v9, $v17
|
|
/* 040015D4 00131C CAED0809 */ lsv $v13[0], 0x12(s7)
|
|
/* 040015D8 001320 4A135291 */ vsub $v10, $v10, $v19
|
|
/* 040015DC 001324 CAF60816 */ lsv $v22[0], 0x2c(s7)
|
|
/* 040015E0 001328 4A125AD1 */ vsub $v11, $v11, $v18
|
|
/* 040015E4 00132C CAEE080B */ lsv $v14[0], 0x16(s7)
|
|
/* 040015E8 001330 4BFE4205 */ vmudm $v8, $v8, $v30[7]
|
|
/* 040015EC 001334 CAF40814 */ lsv $v20[0], 0x28(s7)
|
|
/* 040015F0 001338 4BDE4A45 */ vmudm $v9, $v9, $v30[6]
|
|
/* 040015F4 00133C CAEF080A */ lsv $v15[0], 0x14(s7)
|
|
/* 040015F8 001340 4B9E5285 */ vmudm $v10, $v10, $v30[4]
|
|
/* 040015FC 001344 CAF50815 */ lsv $v21[0], 0x2a(s7)
|
|
/* 04001600 001348 4BBE5AC5 */ vmudm $v11, $v11, $v30[5]
|
|
/* 04001604 00134C 4A176311 */ vsub $v12, $v12, $v23
|
|
/* 04001608 001350 4A166B51 */ vsub $v13, $v13, $v22
|
|
/* 0400160C 001354 4A147391 */ vsub $v14, $v14, $v20
|
|
/* 04001610 001358 4A157BD1 */ vsub $v15, $v15, $v21
|
|
/* 04001614 00135C 4B1E6305 */ vmudm $v12, $v12, $v30[0]
|
|
/* 04001618 001360 4B3E6B45 */ vmudm $v13, $v13, $v30[1]
|
|
/* 0400161C 001364 4B7E7385 */ vmudm $v14, $v14, $v30[3]
|
|
/* 04001620 001368 4B5E7BC5 */ vmudm $v15, $v15, $v30[2]
|
|
/* 04001624 00136C 4A0C6310 */ vadd $v12, $v12, $v12
|
|
/* 04001628 001370 4A0D6B50 */ vadd $v13, $v13, $v13
|
|
/* 0400162C 001374 4A0F7BD0 */ vadd $v15, $v15, $v15
|
|
/* 04001630 001378 0D0006AC */ jal func_04001AB0
|
|
/* 04001634 00137C 00000000 */ nop
|
|
/* 04001638 001380 4A139090 */ vadd $v2, $v18, $v19
|
|
/* 0400163C 001384 4A1390D1 */ vsub $v3, $v18, $v19
|
|
/* 04001640 001388 C8132005 */ lqv $v19[0], (data_1_0050)(zero)
|
|
/* 04001644 00138C 4B138005 */ vmudm $v0, $v16, $v19[0]
|
|
/* 04001648 001390 C8122002 */ lqv $v18[0], (data_1_0020)(zero)
|
|
/* 0400164C 001394 4B338848 */ vmacf $v1, $v17, $v19[1]
|
|
/* 04001650 001398 4BD28005 */ vmudm $v0, $v16, $v18[6]
|
|
/* 04001654 00139C 4BD2880D */ vmadm $v0, $v17, $v18[6]
|
|
/* 04001658 0013A0 4A10842C */ vxor $v16, $v16, $v16
|
|
/* 0400165C 0013A4 4A028091 */ vsub $v2, $v16, $v2
|
|
/* 04001660 0013A8 4B731C45 */ vmudm $v17, $v3, $v19[3]
|
|
/* 04001664 0013AC 4B5318CF */ vmadh $v3, $v3, $v19[2]
|
|
/* 04001668 0013B0 4A15A110 */ vadd $v4, $v20, $v21
|
|
/* 0400166C 0013B4 4A002110 */ vadd $v4, $v4, $v0
|
|
/* 04001670 0013B8 4A15A151 */ vsub $v5, $v20, $v21
|
|
/* 04001674 0013BC 4B732C45 */ vmudm $v17, $v5, $v19[3]
|
|
/* 04001678 0013C0 4B53294F */ vmadh $v5, $v5, $v19[2]
|
|
/* 0400167C 0013C4 4A012950 */ vadd $v5, $v5, $v1
|
|
/* 04001680 0013C8 4A17B190 */ vadd $v6, $v22, $v23
|
|
/* 04001684 0013CC 4A063190 */ vadd $v6, $v6, $v6
|
|
/* 04001688 0013D0 4A003190 */ vadd $v6, $v6, $v0
|
|
/* 0400168C 0013D4 4A023191 */ vsub $v6, $v6, $v2
|
|
/* 04001690 0013D8 4A17B1D1 */ vsub $v7, $v22, $v23
|
|
/* 04001694 0013DC 4BB33C45 */ vmudm $v17, $v7, $v19[5]
|
|
/* 04001698 0013E0 4B9339CF */ vmadh $v7, $v7, $v19[4]
|
|
/* 0400169C 0013E4 4A0039D0 */ vadd $v7, $v7, $v0
|
|
/* 040016A0 0013E8 4A008011 */ vsub $v0, $v16, $v0
|
|
/* 040016A4 0013EC 4A0139D0 */ vadd $v7, $v7, $v1
|
|
/* 040016A8 0013F0 E9600870 */ ssv $v0[0], -0x20(t3)
|
|
/* 040016AC 0013F4 4A0339D0 */ vadd $v7, $v7, $v3
|
|
/* 040016B0 0013F8 4A008011 */ vsub $v0, $v16, $v0
|
|
/* 040016B4 0013FC 4A19C210 */ vadd $v8, $v24, $v25
|
|
/* 040016B8 001400 4A19C251 */ vsub $v9, $v24, $v25
|
|
/* 040016BC 001404 4B734C45 */ vmudm $v17, $v9, $v19[3]
|
|
/* 040016C0 001408 4B534A4F */ vmadh $v9, $v9, $v19[2]
|
|
/* 040016C4 00140C 4A1BD290 */ vadd $v10, $v26, $v27
|
|
/* 040016C8 001410 4A0A5290 */ vadd $v10, $v10, $v10
|
|
/* 040016CC 001414 4A085290 */ vadd $v10, $v10, $v8
|
|
/* 040016D0 001418 4A1BD2D1 */ vsub $v11, $v26, $v27
|
|
/* 040016D4 00141C 4BB35C45 */ vmudm $v17, $v11, $v19[5]
|
|
/* 040016D8 001420 4B935ACF */ vmadh $v11, $v11, $v19[4]
|
|
/* 040016DC 001424 4A085AD0 */ vadd $v11, $v11, $v8
|
|
/* 040016E0 001428 4A095AD0 */ vadd $v11, $v11, $v9
|
|
/* 040016E4 00142C 4A1DE310 */ vadd $v12, $v28, $v29
|
|
/* 040016E8 001430 4A0C6310 */ vadd $v12, $v12, $v12
|
|
/* 040016EC 001434 4A0C2311 */ vsub $v12, $v4, $v12
|
|
/* 040016F0 001438 4A1DE351 */ vsub $v13, $v28, $v29
|
|
/* 040016F4 00143C 4BB36C45 */ vmudm $v17, $v13, $v19[5]
|
|
/* 040016F8 001440 E94C0810 */ ssv $v12[0], 0x20(t2)
|
|
/* 040016FC 001444 4B936B4F */ vmadh $v13, $v13, $v19[4]
|
|
/* 04001700 001448 4A0C6B51 */ vsub $v13, $v13, $v12
|
|
/* 04001704 00144C 4A056B51 */ vsub $v13, $v13, $v5
|
|
/* 04001708 001450 4A1FF390 */ vadd $v14, $v30, $v31
|
|
/* 0400170C 001454 4A0E7390 */ vadd $v14, $v14, $v14
|
|
/* 04001710 001458 4A0E7390 */ vadd $v14, $v14, $v14
|
|
/* 04001714 00145C 4A0E3391 */ vsub $v14, $v6, $v14
|
|
/* 04001718 001460 4A1FF3D1 */ vsub $v15, $v30, $v31
|
|
/* 0400171C 001464 4BF37C45 */ vmudm $v17, $v15, $v19[7]
|
|
/* 04001720 001468 E9AE0810 */ ssv $v14[0], 0x20(t5)
|
|
/* 04001724 00146C 4BD37BCF */ vmadh $v15, $v15, $v19[6]
|
|
/* 04001728 001470 4A077BD1 */ vsub $v15, $v15, $v7
|
|
/* 0400172C 001474 4A017390 */ vadd $v14, $v14, $v1
|
|
/* 04001730 001478 E9CE0810 */ ssv $v14[0], 0x20(t6)
|
|
/* 04001734 00147C E92F0870 */ ssv $v15[0], -0x20(t1)
|
|
/* 04001738 001480 4A0A4A50 */ vadd $v9, $v9, $v10
|
|
/* 0400173C 001484 4A060850 */ vadd $v1, $v1, $v6
|
|
/* 04001740 001488 4A065191 */ vsub $v6, $v10, $v6
|
|
/* 04001744 00148C 4A014851 */ vsub $v1, $v9, $v1
|
|
/* 04001748 001490 E9A60830 */ ssv $v6[0], 0x60(t5)
|
|
/* 0400174C 001494 4A025290 */ vadd $v10, $v10, $v2
|
|
/* 04001750 001498 4A0A2291 */ vsub $v10, $v4, $v10
|
|
/* 04001754 00149C E94A0850 */ ssv $v10[0], -0x60(t2)
|
|
/* 04001758 0014A0 4A0C1311 */ vsub $v12, $v2, $v12
|
|
/* 0400175C 0014A4 E94C0870 */ ssv $v12[0], -0x20(t2)
|
|
/* 04001760 0014A8 4A052150 */ vadd $v5, $v4, $v5
|
|
/* 04001764 0014AC 4A044111 */ vsub $v4, $v8, $v4
|
|
/* 04001768 0014B0 E9440830 */ ssv $v4[0], 0x60(t2)
|
|
/* 0400176C 0014B4 4A080011 */ vsub $v0, $v0, $v8
|
|
/* 04001770 0014B8 E9600850 */ ssv $v0[0], -0x60(t3)
|
|
/* 04001774 0014BC 4A0B39D1 */ vsub $v7, $v7, $v11
|
|
/* 04001778 0014C0 E9270850 */ ssv $v7[0], -0x60(t1)
|
|
/* 0400177C 0014C4 4A035AD1 */ vsub $v11, $v11, $v3
|
|
/* 04001780 0014C8 E9C10830 */ ssv $v1[0], 0x60(t6)
|
|
/* 04001784 0014CC 4A055AD1 */ vsub $v11, $v11, $v5
|
|
/* 04001788 0014D0 E90B0830 */ ssv $v11[0], 0x60(t0)
|
|
/* 0400178C 0014D4 4A0D18D1 */ vsub $v3, $v3, $v13
|
|
/* 04001790 0014D8 E9030810 */ ssv $v3[0], 0x20(t0)
|
|
/* 04001794 0014DC 4A026B50 */ vadd $v13, $v13, $v2
|
|
/* 04001798 0014E0 E90D0870 */ ssv $v13[0], -0x20(t0)
|
|
/* 0400179C 0014E4 4A022891 */ vsub $v2, $v5, $v2
|
|
/* 040017A0 0014E8 4A091091 */ vsub $v2, $v2, $v9
|
|
/* 040017A4 0014EC E9020850 */ ssv $v2[0], -0x60(t0)
|
|
/* 040017A8 0014F0 31C9FFE0 */ andi t1, t6, 0xffe0
|
|
/* 040017AC 0014F4 200A0080 */ addi t2, zero, DeWindowLUT
|
|
/* 040017B0 0014F8 014C5022 */ sub t2, t2, t4
|
|
/* 040017B4 0014FC C9222000 */ lqv $v2[0], 0x0(t1)
|
|
/* 040017B8 001500 C9412000 */ lqv $v1[0], 0x0(t2)
|
|
/* 040017BC 001504 C9412801 */ lrv $v1[0], 0x10(t2)
|
|
/* 040017C0 001508 C9242001 */ lqv $v4[0], 0x10(t1)
|
|
/* 040017C4 00150C C9432001 */ lqv $v3[0], 0x10(t2)
|
|
/* 040017C8 001510 C9432802 */ lrv $v3[0], 0x20(t2)
|
|
/* 040017CC 001514 C9262002 */ lqv $v6[0], 0x20(t1)
|
|
/* 040017D0 001518 C9452004 */ lqv $v5[0], 0x40(t2)
|
|
/* 040017D4 00151C C9452805 */ lrv $v5[0], 0x50(t2)
|
|
/* 040017D8 001520 C9282003 */ lqv $v8[0], 0x30(t1)
|
|
/* 040017DC 001524 C9472005 */ lqv $v7[0], 0x50(t2)
|
|
/* 040017E0 001528 C9472806 */ lrv $v7[0], 0x60(t2)
|
|
/* 040017E4 00152C 4A011080 */ vmulf $v2, $v2, $v1
|
|
/* 040017E8 001530 200B0CE8 */ addi t3, zero, data_1_0CE8
|
|
/* 040017EC 001534 4A032100 */ vmulf $v4, $v4, $v3
|
|
/* 040017F0 001538 C9741800 */ ldv $v20[0], 0x0(t3)
|
|
/* 040017F4 00153C 4A053180 */ vmulf $v6, $v6, $v5
|
|
/* 040017F8 001540 200B0008 */ addi t3, zero, 8
|
|
/* 040017FC 001544 4A074200 */ vmulf $v8, $v8, $v7
|
|
.L04001800:
|
|
/* 04001800 001548 214A0080 */ addi t2, t2, 0x80
|
|
/* 04001804 00154C 4AC21250 */ vadd $v9, $v2, $v2[2h]
|
|
/* 04001808 001550 21290040 */ addi t1, t1, 0x40
|
|
/* 0400180C 001554 4AC42290 */ vadd $v10, $v4, $v4[2h]
|
|
/* 04001810 001558 C9412000 */ lqv $v1[0], 0x0(t2)
|
|
/* 04001814 00155C 4AC632D0 */ vadd $v11, $v6, $v6[2h]
|
|
/* 04001818 001560 C9412801 */ lrv $v1[0], 0x10(t2)
|
|
/* 0400181C 001564 4AC84310 */ vadd $v12, $v8, $v8[2h]
|
|
/* 04001820 001568 C9432001 */ lqv $v3[0], 0x10(t2)
|
|
/* 04001824 00156C 4AE21350 */ vadd $v13, $v2, $v2[3h]
|
|
/* 04001828 001570 C9432802 */ lrv $v3[0], 0x20(t2)
|
|
/* 0400182C 001574 4AE42390 */ vadd $v14, $v4, $v4[3h]
|
|
/* 04001830 001578 C9452004 */ lqv $v5[0], 0x40(t2)
|
|
/* 04001834 00157C 4AE633D0 */ vadd $v15, $v6, $v6[3h]
|
|
/* 04001838 001580 C9452805 */ lrv $v5[0], 0x50(t2)
|
|
/* 0400183C 001584 4AE84410 */ vadd $v16, $v8, $v8[3h]
|
|
/* 04001840 001588 C9472005 */ lqv $v7[0], 0x50(t2)
|
|
/* 04001844 00158C 4AAD4810 */ vadd $v0, $v9, $v13[1h]
|
|
/* 04001848 001590 C9472806 */ lrv $v7[0], 0x60(t2)
|
|
/* 0400184C 001594 4AAE5450 */ vadd $v17, $v10, $v14[1h]
|
|
/* 04001850 001598 C9222000 */ lqv $v2[0], 0x0(t1)
|
|
/* 04001854 00159C 4AAF5C90 */ vadd $v18, $v11, $v15[1h]
|
|
/* 04001858 0015A0 C9242001 */ lqv $v4[0], 0x10(t1)
|
|
/* 0400185C 0015A4 4AB064D0 */ vadd $v19, $v12, $v16[1h]
|
|
/* 04001860 0015A8 C9262002 */ lqv $v6[0], 0x20(t1)
|
|
/* 04001864 0015AC 4A110010 */ vadd $v0, $v0, $v17
|
|
/* 04001868 0015B0 C9282003 */ lqv $v8[0], 0x30(t1)
|
|
/* 0400186C 0015B4 4A139490 */ vadd $v18, $v18, $v19
|
|
/* 04001870 0015B8 4A011080 */ vmulf $v2, $v2, $v1
|
|
/* 04001874 0015BC 4B800010 */ vadd $v0, $v0, $v0[4]
|
|
/* 04001878 0015C0 4A032100 */ vmulf $v4, $v4, $v3
|
|
/* 0400187C 0015C4 4B929490 */ vadd $v18, $v18, $v18[4]
|
|
/* 04001880 0015C8 4A053180 */ vmulf $v6, $v6, $v5
|
|
/* 04001884 0015CC EA600800 */ ssv $v0[0], 0x0(s3)
|
|
/* 04001888 0015D0 4A074200 */ vmulf $v8, $v8, $v7
|
|
/* 0400188C 0015D4 216BFFFF */ addi t3, t3, -1
|
|
/* 04001890 0015D8 EA720801 */ ssv $v18[0], 0x2(s3)
|
|
/* 04001894 0015DC 1D60FFDA */ bgtz t3, .L04001800
|
|
/* 04001898 0015E0 22730004 */ addi s3, s3, 4
|
|
/* 0400189C 0015E4 4AC21250 */ vadd $v9, $v2, $v2[2h]
|
|
/* 040018A0 0015E8 31880002 */ andi t0, t4, 2
|
|
/* 040018A4 0015EC 4AC42290 */ vadd $v10, $v4, $v4[2h]
|
|
/* 040018A8 0015F0 4AE21350 */ vadd $v13, $v2, $v2[3h]
|
|
/* 040018AC 0015F4 4AE42390 */ vadd $v14, $v4, $v4[3h]
|
|
/* 040018B0 0015F8 4A0A4810 */ vadd $v0, $v9, $v10
|
|
/* 040018B4 0015FC 4B800010 */ vadd $v0, $v0, $v0[4]
|
|
/* 040018B8 001600 4A0E6C50 */ vadd $v17, $v13, $v14
|
|
/* 040018BC 001604 2129FFC0 */ addi t1, t1, -0x40
|
|
/* 040018C0 001608 4BB18C50 */ vadd $v17, $v17, $v17[5]
|
|
/* 040018C4 00160C 4B340085 */ vmudm $v2, $v0, $v20[1]
|
|
/* 040018C8 001610 4B14000F */ vmadh $v0, $v0, $v20[0]
|
|
/* 040018CC 001614 4B348905 */ vmudm $v4, $v17, $v20[1]
|
|
/* 040018D0 001618 200B0CE8 */ addi t3, zero, data_1_0CE8
|
|
/* 040018D4 00161C 4B148C4F */ vmadh $v17, $v17, $v20[0]
|
|
/* 040018D8 001620 15000003 */ bnez t0, .L040018E8
|
|
/* 040018DC 001624 EA600800 */ ssv $v0[0], 0x0(s3)
|
|
/* 040018E0 001628 C9741200 */ llv $v20[4], 0x0(t3)
|
|
/* 040018E4 00162C EA710900 */ ssv $v17[2], 0x0(s3)
|
|
.L040018E8:
|
|
/* 040018E8 001630 200A04BE */ addi t2, zero, DeWindowLUT + 0x43e
|
|
/* 040018EC 001634 014C5022 */ sub t2, t2, t4
|
|
/* 040018F0 001638 C9222002 */ lqv $v2[0], 0x20(t1)
|
|
/* 040018F4 00163C C9412000 */ lqv $v1[0], 0x0(t2)
|
|
/* 040018F8 001640 C9412801 */ lrv $v1[0], 0x10(t2)
|
|
/* 040018FC 001644 C9242003 */ lqv $v4[0], 0x30(t1)
|
|
/* 04001900 001648 C9432001 */ lqv $v3[0], 0x10(t2)
|
|
/* 04001904 00164C C9432802 */ lrv $v3[0], 0x20(t2)
|
|
/* 04001908 001650 C9262000 */ lqv $v6[0], 0x0(t1)
|
|
/* 0400190C 001654 C9452004 */ lqv $v5[0], 0x40(t2)
|
|
/* 04001910 001658 C9452805 */ lrv $v5[0], 0x50(t2)
|
|
/* 04001914 00165C C9282001 */ lqv $v8[0], 0x10(t1)
|
|
/* 04001918 001660 C9472005 */ lqv $v7[0], 0x50(t2)
|
|
/* 0400191C 001664 C9472806 */ lrv $v7[0], 0x60(t2)
|
|
/* 04001920 001668 4A011080 */ vmulf $v2, $v2, $v1
|
|
/* 04001924 00166C 200B0008 */ addi t3, zero, 8
|
|
/* 04001928 001670 4A032100 */ vmulf $v4, $v4, $v3
|
|
/* 0400192C 001674 4A053180 */ vmulf $v6, $v6, $v5
|
|
/* 04001930 001678 4A074200 */ vmulf $v8, $v8, $v7
|
|
.L04001934:
|
|
/* 04001934 00167C 214A0080 */ addi t2, t2, 0x80
|
|
/* 04001938 001680 4AC21250 */ vadd $v9, $v2, $v2[2h]
|
|
/* 0400193C 001684 2129FFC0 */ addi t1, t1, -0x40
|
|
/* 04001940 001688 4AC42290 */ vadd $v10, $v4, $v4[2h]
|
|
/* 04001944 00168C C9412000 */ lqv $v1[0], 0x0(t2)
|
|
/* 04001948 001690 4AC632D0 */ vadd $v11, $v6, $v6[2h]
|
|
/* 0400194C 001694 C9412801 */ lrv $v1[0], 0x10(t2)
|
|
/* 04001950 001698 4AC84310 */ vadd $v12, $v8, $v8[2h]
|
|
/* 04001954 00169C C9432001 */ lqv $v3[0], 0x10(t2)
|
|
/* 04001958 0016A0 4AE21350 */ vadd $v13, $v2, $v2[3h]
|
|
/* 0400195C 0016A4 C9432802 */ lrv $v3[0], 0x20(t2)
|
|
/* 04001960 0016A8 4AE42390 */ vadd $v14, $v4, $v4[3h]
|
|
/* 04001964 0016AC C9452004 */ lqv $v5[0], 0x40(t2)
|
|
/* 04001968 0016B0 4AE633D0 */ vadd $v15, $v6, $v6[3h]
|
|
/* 0400196C 0016B4 C9452805 */ lrv $v5[0], 0x50(t2)
|
|
/* 04001970 0016B8 4AE84410 */ vadd $v16, $v8, $v8[3h]
|
|
/* 04001974 0016BC C9472005 */ lqv $v7[0], 0x50(t2)
|
|
/* 04001978 0016C0 4AAD4811 */ vsub $v0, $v9, $v13[1h]
|
|
/* 0400197C 0016C4 C9472806 */ lrv $v7[0], 0x60(t2)
|
|
/* 04001980 0016C8 4AAE5451 */ vsub $v17, $v10, $v14[1h]
|
|
/* 04001984 0016CC C9222002 */ lqv $v2[0], 0x20(t1)
|
|
/* 04001988 0016D0 4AAF5C91 */ vsub $v18, $v11, $v15[1h]
|
|
/* 0400198C 0016D4 C9242003 */ lqv $v4[0], 0x30(t1)
|
|
/* 04001990 0016D8 4AB064D1 */ vsub $v19, $v12, $v16[1h]
|
|
/* 04001994 0016DC C9262000 */ lqv $v6[0], 0x0(t1)
|
|
/* 04001998 0016E0 4A110010 */ vadd $v0, $v0, $v17
|
|
/* 0400199C 0016E4 C9282001 */ lqv $v8[0], 0x10(t1)
|
|
/* 040019A0 0016E8 4A139490 */ vadd $v18, $v18, $v19
|
|
/* 040019A4 0016EC 4A011080 */ vmulf $v2, $v2, $v1
|
|
/* 040019A8 0016F0 4B800010 */ vadd $v0, $v0, $v0[4]
|
|
/* 040019AC 0016F4 4A032100 */ vmulf $v4, $v4, $v3
|
|
/* 040019B0 0016F8 4B929490 */ vadd $v18, $v18, $v18[4]
|
|
/* 040019B4 0016FC 216BFFFF */ addi t3, t3, -1
|
|
/* 040019B8 001700 4A053180 */ vmulf $v6, $v6, $v5
|
|
/* 040019BC 001704 EA600801 */ ssv $v0[0], 0x2(s3)
|
|
/* 040019C0 001708 4A074200 */ vmulf $v8, $v8, $v7
|
|
/* 040019C4 00170C EA720802 */ ssv $v18[0], 0x4(s3)
|
|
/* 040019C8 001710 1D60FFDA */ bgtz t3, .L04001934
|
|
/* 040019CC 001714 22730004 */ addi s3, s3, 4
|
|
/* 040019D0 001718 22680002 */ addi t0, s3, 2
|
|
/* 040019D4 00171C CA60207C */ lqv $v0[0], -0x40(s3)
|
|
/* 040019D8 001720 CA71207D */ lqv $v17[0], -0x30(s3)
|
|
/* 040019DC 001724 C902207E */ lqv $v2[0], -0x20(t0)
|
|
/* 040019E0 001728 C902287F */ lrv $v2[0], -0x10(t0)
|
|
/* 040019E4 00172C C904207F */ lqv $v4[0], -0x10(t0)
|
|
/* 040019E8 001730 4B340185 */ vmudm $v6, $v0, $v20[1]
|
|
/* 040019EC 001734 C9042800 */ lrv $v4[0], 0x0(t0)
|
|
/* 040019F0 001738 4B14000F */ vmadh $v0, $v0, $v20[0]
|
|
/* 040019F4 00173C 4B741185 */ vmudm $v6, $v2, $v20[3]
|
|
/* 040019F8 001740 EA60207C */ sqv $v0[0], -0x40(s3)
|
|
/* 040019FC 001744 4B54108F */ vmadh $v2, $v2, $v20[2]
|
|
/* 04001A00 001748 4B348985 */ vmudm $v6, $v17, $v20[1]
|
|
/* 04001A04 00174C E902207E */ sqv $v2[0], -0x20(t0)
|
|
/* 04001A08 001750 E902287F */ srv $v2[0], -0x10(t0)
|
|
/* 04001A0C 001754 4B148C4F */ vmadh $v17, $v17, $v20[0]
|
|
/* 04001A10 001758 4B742185 */ vmudm $v6, $v4, $v20[3]
|
|
/* 04001A14 00175C EA71207D */ sqv $v17[0], -0x30(s3)
|
|
/* 04001A18 001760 4B54210F */ vmadh $v4, $v4, $v20[2]
|
|
/* 04001A1C 001764 E904207F */ sqv $v4[0], -0x10(t0)
|
|
/* 04001A20 001768 E9042800 */ srv $v4[0], 0x0(t0)
|
|
/* 04001A24 00176C 000E5820 */ add t3, zero, t6
|
|
/* 04001A28 001770 000D7020 */ add t6, zero, t5
|
|
/* 04001A2C 001774 000B6820 */ add t5, zero, t3
|
|
/* 04001A30 001778 218CFFFE */ addi t4, t4, -2
|
|
/* 04001A34 00177C 318C001E */ andi t4, t4, 0x1e
|
|
/* 04001A38 001780 2252FFC0 */ addi s2, s2, -0x40
|
|
/* 04001A3C 001784 1E40FE24 */ bgtz s2, mp3_decode_innerloop
|
|
/* 04001A40 001788 22F70040 */ addi s7, s7, 0x40
|
|
/* 04001A44 00178C 20010E70 */ addi at, zero, data_1_0E70
|
|
/* 04001A48 001790 00161020 */ add v0, zero, s6 // write out decoded
|
|
/* 04001A4C 001794 0D000466 */ jal dma_write
|
|
/* 04001A50 001798 2063FFFF */ addi v1, v1, -1
|
|
/* 04001A54 00179C 20630001 */ addi v1, v1, 1
|
|
/* 04001A58 0017A0 22D60180 */ addi s6, s6, 0x180
|
|
/* 04001A5C 0017A4 22B50180 */ addi s5, s5, 0x180
|
|
/* 04001A60 0017A8 0D00046D */ jal dma_wait
|
|
/* 04001A64 0017AC 00151020 */ add v0, zero, s5
|
|
/* 04001A68 0017B0 1E80FE11 */ bgtz s4, mp3_decode_loop // loop until done decoding all
|
|
/* 04001A6C 0017B4 20010CF0 */ addi at, zero, data_1_0CF0
|
|
/* 04001A70 0017B8 02201020 */ add v0, s1, zero
|
|
/* 04001A74 0017BC 200102C0 */ addi at, zero, nextTaskEntry
|
|
/* 04001A78 0017C0 0D00045F */ jal dma_read // read back the saved dmem
|
|
/* 04001A7C 0017C4 2003013F */ addi v1, zero, nextTaskEntry_len-1
|
|
/* 04001A80 0017C8 200108A0 */ addi at, zero, data_1_08A0
|
|
/* 04001A84 0017CC 0D000466 */ jal dma_write // write back the mp3 data that was pasted over by dmem contents
|
|
/* 04001A88 0017D0 2003043F */ addi v1, zero, 0x440-1
|
|
/* 04001A8C 0017D4 8C0B0CE8 */ lw t3, (data_1_0CE8)(zero)
|
|
/* 04001A90 0017D8 0D00046D */ jal dma_wait // wait for dmas to complete
|
|
/* 04001A94 0017DC 00000000 */ nop
|
|
/* 04001A98 0017E0 AC110FF4 */ sw s1, (audioStruct + 0x4)(zero)
|
|
/* 04001A9C 0017E4 AC100FF8 */ sw s0, (audioStruct + 0x8)(zero) // ucode_data dram addr
|
|
/* 04001AA0 0017E8 AC0F0FFC */ sw t7, (audioStruct + 0xc)(zero)
|
|
/* 04001AA4 0017EC AC0B0FF0 */ sw t3, (audioStruct + 0x0)(zero)
|
|
/* 04001AA8 0017F0 09000472 */ j reload_overlay_0
|
|
/* 04001AAC 0017F4 00000000 */ nop
|
|
|
|
func_04001AB0:
|
|
/* 04001AB0 0017F8 4A080410 */ vadd $v16, $v0, $v8
|
|
/* 04001AB4 0017FC 4A090C50 */ vadd $v17, $v1, $v9
|
|
/* 04001AB8 001800 4A0A1490 */ vadd $v18, $v2, $v10
|
|
/* 04001ABC 001804 4A0B1CD0 */ vadd $v19, $v3, $v11
|
|
/* 04001AC0 001808 4A0C2510 */ vadd $v20, $v4, $v12
|
|
/* 04001AC4 00180C 4A0D2D50 */ vadd $v21, $v5, $v13
|
|
/* 04001AC8 001810 4A0E3590 */ vadd $v22, $v6, $v14
|
|
/* 04001ACC 001814 4A0F3DD0 */ vadd $v23, $v7, $v15
|
|
/* 04001AD0 001818 4A080611 */ vsub $v24, $v0, $v8
|
|
/* 04001AD4 00181C C8082001 */ lqv $v8[0], (data_1_0010)(zero)
|
|
/* 04001AD8 001820 4A090E51 */ vsub $v25, $v1, $v9
|
|
/* 04001ADC 001824 C8092002 */ lqv $v9[0], (data_1_0020)(zero)
|
|
/* 04001AE0 001828 4A0A1691 */ vsub $v26, $v2, $v10
|
|
/* 04001AE4 00182C 4A0B1ED1 */ vsub $v27, $v3, $v11
|
|
/* 04001AE8 001830 4B08C605 */ vmudm $v24, $v24, $v8[0]
|
|
/* 04001AEC 001834 4B48CE45 */ vmudm $v25, $v25, $v8[2]
|
|
/* 04001AF0 001838 4A0C2711 */ vsub $v28, $v4, $v12
|
|
/* 04001AF4 00183C 4A0D2F51 */ vsub $v29, $v5, $v13
|
|
/* 04001AF8 001840 4BC8D685 */ vmudm $v26, $v26, $v8[6]
|
|
/* 04001AFC 001844 4B88DEC5 */ vmudm $v27, $v27, $v8[4]
|
|
/* 04001B00 001848 4A0E3791 */ vsub $v30, $v6, $v14
|
|
/* 04001B04 00184C 4A0F3FD1 */ vsub $v31, $v7, $v15
|
|
/* 04001B08 001850 4BA9E705 */ vmudm $v28, $v28, $v9[5]
|
|
/* 04001B0C 001854 4B69EF45 */ vmudm $v29, $v29, $v9[3]
|
|
/* 04001B10 001858 4BE8F785 */ vmudm $v30, $v30, $v8[7]
|
|
/* 04001B14 00185C 4B29FFC5 */ vmudm $v31, $v31, $v9[1]
|
|
/* 04001B18 001860 4A148111 */ vsub $v4, $v16, $v20
|
|
/* 04001B1C 001864 4A158951 */ vsub $v5, $v17, $v21
|
|
/* 04001B20 001868 4A148010 */ vadd $v0, $v16, $v20
|
|
/* 04001B24 00186C 4A158850 */ vadd $v1, $v17, $v21
|
|
/* 04001B28 001870 4B282105 */ vmudm $v4, $v4, $v8[1]
|
|
/* 04001B2C 001874 4BA82945 */ vmudm $v5, $v5, $v8[5]
|
|
/* 04001B30 001878 4A169191 */ vsub $v6, $v18, $v22
|
|
/* 04001B34 00187C 4A1799D1 */ vsub $v7, $v19, $v23
|
|
/* 04001B38 001880 4A169090 */ vadd $v2, $v18, $v22
|
|
/* 04001B3C 001884 4A1798D0 */ vadd $v3, $v19, $v23
|
|
/* 04001B40 001888 4B893185 */ vmudm $v6, $v6, $v9[4]
|
|
/* 04001B44 00188C 4B0939C5 */ vmudm $v7, $v7, $v9[0]
|
|
/* 04001B48 001890 4A1CC311 */ vsub $v12, $v24, $v28
|
|
/* 04001B4C 001894 4A1DCB51 */ vsub $v13, $v25, $v29
|
|
/* 04001B50 001898 4A1ED290 */ vadd $v10, $v26, $v30
|
|
/* 04001B54 00189C 4A1FDAD0 */ vadd $v11, $v27, $v31
|
|
/* 04001B58 0018A0 4A1ED391 */ vsub $v14, $v26, $v30
|
|
/* 04001B5C 0018A4 4A1FDBD1 */ vsub $v15, $v27, $v31
|
|
/* 04001B60 0018A8 4B286305 */ vmudm $v12, $v12, $v8[1]
|
|
/* 04001B64 0018AC 4BA86B45 */ vmudm $v13, $v13, $v8[5]
|
|
/* 04001B68 0018B0 4B897385 */ vmudm $v14, $v14, $v9[4]
|
|
/* 04001B6C 0018B4 4B097BC5 */ vmudm $v15, $v15, $v9[0]
|
|
/* 04001B70 0018B8 4A1CC210 */ vadd $v8, $v24, $v28
|
|
/* 04001B74 0018BC 4A1DCA50 */ vadd $v9, $v25, $v29
|
|
/* 04001B78 0018C0 4A020410 */ vadd $v16, $v0, $v2
|
|
/* 04001B7C 0018C4 4A030C50 */ vadd $v17, $v1, $v3
|
|
/* 04001B80 0018C8 4A020491 */ vsub $v18, $v0, $v2
|
|
/* 04001B84 0018CC C8002001 */ lqv $v0[0], (data_1_0010)(zero)
|
|
/* 04001B88 0018D0 4A030CD1 */ vsub $v19, $v1, $v3
|
|
/* 04001B8C 0018D4 C8022002 */ lqv $v2[0], (data_1_0020)(zero)
|
|
/* 04001B90 0018D8 4A062510 */ vadd $v20, $v4, $v6
|
|
/* 04001B94 0018DC 4A072D50 */ vadd $v21, $v5, $v7
|
|
/* 04001B98 0018E0 4A062591 */ vsub $v22, $v4, $v6
|
|
/* 04001B9C 0018E4 4A072DD1 */ vsub $v23, $v5, $v7
|
|
/* 04001BA0 0018E8 4B609485 */ vmudm $v18, $v18, $v0[3]
|
|
/* 04001BA4 0018EC 4B429CC5 */ vmudm $v19, $v19, $v2[2]
|
|
/* 04001BA8 0018F0 4B60B585 */ vmudm $v22, $v22, $v0[3]
|
|
/* 04001BAC 0018F4 4B42BDC5 */ vmudm $v23, $v23, $v2[2]
|
|
/* 04001BB0 0018F8 4A0A4691 */ vsub $v26, $v8, $v10
|
|
/* 04001BB4 0018FC 4A0B4ED1 */ vsub $v27, $v9, $v11
|
|
/* 04001BB8 001900 4A0A4610 */ vadd $v24, $v8, $v10
|
|
/* 04001BBC 001904 4A0B4E50 */ vadd $v25, $v9, $v11
|
|
/* 04001BC0 001908 4B60D685 */ vmudm $v26, $v26, $v0[3]
|
|
/* 04001BC4 00190C 4B42DEC5 */ vmudm $v27, $v27, $v2[2]
|
|
/* 04001BC8 001910 4A0E6791 */ vsub $v30, $v12, $v14
|
|
/* 04001BCC 001914 4A0F6FD1 */ vsub $v31, $v13, $v15
|
|
/* 04001BD0 001918 4A0E6710 */ vadd $v28, $v12, $v14
|
|
/* 04001BD4 00191C 4A0F6F50 */ vadd $v29, $v13, $v15
|
|
/* 04001BD8 001920 4B60F785 */ vmudm $v30, $v30, $v0[3]
|
|
/* 04001BDC 001924 4B42FFC5 */ vmudm $v31, $v31, $v2[2]
|
|
/* 04001BE0 001928 03E00008 */ jr $ra
|
|
/* 04001BE4 00192C 00000000 */ nop
|
|
|
|
.align 8
|
|
Overlay1End:
|
|
|
|
.if Overlay1End > 0x04002000
|
|
.error "Not enough room in IMEM for Overlay 1"
|
|
.endif
|
|
|
|
.close
|