From 02fe6189f1fc14391a2f955becb25bf3768f3e6d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 22 Nov 2021 20:32:28 +1000 Subject: [PATCH] Disassemble asp microcode --- src/rsp/asp.s | 2165 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/extract | 2 - 2 files changed, 2165 insertions(+), 2 deletions(-) create mode 100644 src/rsp/asp.s diff --git a/src/rsp/asp.s b/src/rsp/asp.s new file mode 100644 index 000000000..dbff8df20 --- /dev/null +++ b/src/rsp/asp.s @@ -0,0 +1,2165 @@ +.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 diff --git a/tools/extract b/tools/extract index c812cec73..e0a7d5385 100755 --- a/tools/extract +++ b/tools/extract @@ -253,9 +253,7 @@ class Extractor: def extract_rsp(self): self.extract_rsp_segment('gsp.text.bin', 0xd0, 0x1420) - self.extract_rsp_segment('asp.text.bin', 0x14f0, 0x1930) self.extract_rsp_segment('gsp.data.bin', -0x1350, 0x800) - self.extract_rsp_segment('asp.data.bin', -0xb50, 0xb50) def extract_textures(self): base = self.val('textures')