DSPHLE AXwii work

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4559 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Marko Pusljar 2009-11-13 20:27:38 +00:00
parent ba42d9aa58
commit 4d3620ace3
2 changed files with 81 additions and 40 deletions

View file

@ -48,7 +48,6 @@ CUCode_AXWii::CUCode_AXWii(CMailHandler& _rMailHandler, u32 l_CRC)
{
// we got loaded
m_rMailHandler.PushMail(0xDCD10000);
m_rMailHandler.PushMail(0x80000000); // handshake ??? only (crc == 0xe2136399) needs it ...
templbuffer = new int[1024 * 1024];
temprbuffer = new int[1024 * 1024];
@ -70,9 +69,12 @@ void CUCode_AXWii::HandleMail(u32 _uMail)
{
// a new List
}
else if ((_uMail & 0xFFFF0000) == 0xCDD10000)
else if (_uMail == 0xCDD10000) // Action 0 - restart
{
m_rMailHandler.PushMail(0xDCD10001);
}
else if ((_uMail & 0xFFFF0000) == 0xCDD10000) // Action 1/2/3
{
//NOTICE_LOG(DSPHLE, "action mail %08X", _uMail);
}
else
{
@ -371,11 +373,13 @@ bool CUCode_AXWii::AXTask(u32& _uMail)
case 0x000b:
uAddress += 2; // one 0x8000 in rabbids
uAddress += 4 * 2; // then two RAM addressses
m_rMailHandler.PushMail(0xDCD10004);
break;
case 0x000c:
uAddress += 2; // one 0x8000 in rabbids
uAddress += 4 * 2; // then two RAM addressses
m_rMailHandler.PushMail(0xDCD10004);
break;
case 0x000d:
@ -385,7 +389,7 @@ bool CUCode_AXWii::AXTask(u32& _uMail)
case 0x000e:
// This is the end.
bExecuteList = false;
SaveLog("%08x : AXLIST end, wii stylee.", uAddress);
m_rMailHandler.PushMail(0xDCD10002);
break;
default:
@ -428,7 +432,6 @@ bool CUCode_AXWii::AXTask(u32& _uMail)
SaveLog("=====================================================================");
SaveLog("End");
m_rMailHandler.PushMail(0xDCD10002);
return true;
}

View file

@ -117,7 +117,7 @@ void 0084_WaitForDMACompletion() {
0089 02df ret
}
void 0082_JumpTable_0() {
void 008a_Cmd_0() {
008a 8100 clr $ACC0
008b 8970 clr'l $ACC1 : $AC0.M, @$AR0
008c 8e78 set16'l : $AC1.M, @$AR0
@ -438,7 +438,7 @@ void 0082_JumpTable_0() {
0220 029f 006f jmp 006f_MailHandler()
}
void 0x222_JumpTable1() {
void 0222_Cmd_1() {
0222 8100 clr $ACC0
0223 8970 clr'l $ACC1 : $AC0.M, @$AR0
0224 8e60 set16'l : $AC0.L, @$AR0
@ -476,7 +476,7 @@ void 0x222_JumpTable1() {
024d 029f 006f jmp 006f_MailHandler()
}
0x24f_JumpTable2() {
void 024f_Cmd_2() {
024f 8100 clr $ACC0
0250 8970 clr'l $ACC1 : $AC0.M, @$AR0
0251 8e60 set16'l : $AC0.L, @$AR0
@ -519,7 +519,7 @@ void 0x222_JumpTable1() {
// Command 0x4 - set PBs address
// Parameters: AR0 -> 0x0C01
// AXList data: command (2), PBs address (4)
void 027e_Cmd4_SetPBsAddress() {
void 027e_Cmd_4_SetPBsAddress() {
027e 8100 clr $ACC0
027f 8970 clr'l $ACC1 : $AC0.M, @$AR0
0280 8e60 set16'l : $AC0.L, @$AR0
@ -887,7 +887,7 @@ void 027e_Cmd4_SetPBsAddress() {
0499 029f 006f jmp 006f_MailHandler()
}
void 049b_JumpTable4() {
void 049b_Cmd_5() {
049b 8e00 set16
049c 00c4 0ce6 lr $IX0, @0x0ce6
049e 1905 lrri $IX1, @$AR0
@ -907,7 +907,7 @@ void 049b_JumpTable4() {
04b2 029f 006f jmp 006f_MailHandler()
}
void 04b4_JumpTable5() {
void 04b4_Cmd_6() {
04b4 8e00 set16
04b5 00c4 0ce7 lr $IX0, @0x0ce7
04b7 1905 lrri $IX1, @$AR0
@ -928,7 +928,7 @@ void 04b4_JumpTable5() {
}
// set out buffer
void 04cd_JumpTable6() {
void 04cd_Cmd_7() {
04cd 8e00 set16
04ce 00c4 0ce8 lr $IX0, @0x0ce8
04d0 1905 lrri $IX1, @$AR0
@ -948,7 +948,7 @@ void 04cd_JumpTable6() {
04e4 029f 006f jmp 006f_MailHandler()
}
void 04e6_JumpTable7() {
void 04e6_Unk() {
04e6 8b00 m0
04e7 8100 clr $ACC0
04e8 1fc4 mrr $AC0.M, $IX0
@ -1082,6 +1082,9 @@ void 04e6_JumpTable7() {
0577 1b5d srri @$AR2, $AC1.L
0578 00c0 0cd2 lr $AR0, @0x0cd2
057a 02df ret
}
void 057b_Cmd_A() {
057b 8d00 set15
057c 8f00 set40
057d 8a00 m2
@ -1113,9 +1116,6 @@ void 04e6_JumpTable7() {
059e 191c lrri $AC0.L, @$AR0
059f 191c lrri $AC0.L, @$AR0
05a0 029f 006f jmp 006f_MailHandler()
}
void 05a2_JumpTable8() {
05a2 8b00 m0
05a3 7a00 dec $ACC0
05a4 00fe 0ce4 sr @0x0ce4, $AC0.M
@ -1196,7 +1196,7 @@ void 05a2_JumpTable8() {
0609 029f 006f jmp 006f_MailHandler()
}
void 060b_JumpTable9() {
void 060b_Cmd_B() {
060b 8e48 set16'l : $AX1.L, @$AR0
060c 8b70 m0'l : $AC0.M, @$AR0
060d 8960 clr'l $ACC1 : $AC0.L, @$AR0
@ -1266,9 +1266,9 @@ void 060b_JumpTable9() {
065f 16c9 0001 si @DSCR, #0x0001
0661 16cb 0180 si @DSBL, #0x0180
0663 02bf 0084 call 0084_WaitForDMACompletion()
0665 16fc dcd1 si @DMBH, #0xdcd1
0667 16fd 0004 si @DMBL, #0x0004
0669 16fb 0001 si @DIRQ, #0x0001
0665 16fc dcd1 si @DMBH, #0xdcd1 <--------------!!!
0667 16fd 0004 si @DMBL, #0x0004 <--------------!!!
0669 16fb 0001 si @DIRQ, #0x0001 <--------------!!!
066b 26fc lrs $AC0.M, @DMBH
066c 02a0 8000 andf $AC0.M, #0x8000
066e 029c 066b jlnz 0x066b
@ -1276,13 +1276,15 @@ void 060b_JumpTable9() {
}
// Command 0xE - AXList end
void 0672_Cmd_E() {
0672 16fc dcd1 si @DMBH, #0xdcd1
0674 16fd 0002 si @DMBL, #0x0002
0676 16fb 0001 si @DIRQ, #0x0001 // send a 0xDCD10002 and trigger an IRQ
0678 029f 0f9b jmp 0x0f9b
067a 029f 004c jmp 0x004c
}
void 067c_JumpTable10() {
void 067c_Cmd_D() {
067c 8c00 clr15
067d 8a00 m2
067e 8f00 set40
@ -1655,6 +1657,7 @@ void 06c3_Unknown() {
081d 2edc srs @yn2, $AC0.M
081e 02df ret
081f 02df ret
0820 00c0 0ce2 lr $AR0, @0x0ce2
0822 0081 02da lri $AR1, #0x02da
0824 0082 0000 lri $AR2, #0x0000
@ -1662,6 +1665,7 @@ void 06c3_Unknown() {
0827 02bf 0bd1 call 0bd1_Unknown()
0829 00f8 02f9 sr @0x02f9, $AX0.L
082b 02df ret
082c 00c0 0ce3 lr $AR0, @0x0ce3
082e 0081 02dc lri $AR1, #0x02dc
0830 0082 00c0 lri $AR2, #0x00c0
@ -1669,6 +1673,7 @@ void 06c3_Unknown() {
0833 02bf 0bd1 call 0bd1_Unknown()
0835 00f8 02fd sr @0x02fd, $AX0.L
0837 02df ret
0838 00c0 0ce2 lr $AR0, @0x0ce2
083a 0081 02da lri $AR1, #0x02da
083c 0082 0000 lri $AR2, #0x0000
@ -1679,6 +1684,7 @@ void 06c3_Unknown() {
0845 00f8 02f9 sr @0x02f9, $AX0.L
0847 00fb 02fd sr @0x02fd, $AX1.H
0849 02df ret
084a 00c0 0ce2 lr $AR0, @0x0ce2
084c 0081 02da lri $AR1, #0x02da
084e 0082 0000 lri $AR2, #0x0000
@ -1689,6 +1695,7 @@ void 06c3_Unknown() {
0858 00f8 02f9 sr @0x02f9, $AX0.L
085a 00fb 02fd sr @0x02fd, $AX1.H
085c 02df ret
085d 00c0 0ce1 lr $AR0, @0x0ce1
085f 0081 02ea lri $AR1, #0x02ea
0861 0082 0180 lri $AR2, #0x0180
@ -1696,6 +1703,7 @@ void 06c3_Unknown() {
0864 02bf 0bd1 call 0bd1_Unknown()
0866 00f8 0301 sr @0x0301, $AX0.L
0868 02df ret
0869 00c0 0ce1 lr $AR0, @0x0ce1
086b 0081 02ea lri $AR1, #0x02ea
086d 0082 0180 lri $AR2, #0x0180
@ -1731,6 +1739,7 @@ void 06c3_Unknown() {
08a5 02bf 0c21 call 0c21_Unknown()
08a7 00f8 0301 sr @0x0301, $AX0.L
08a9 02df ret
08aa 00c0 0ce1 lr $AR0, @0x0ce1
08ac 0081 02ea lri $AR1, #0x02ea
08ae 0082 0180 lri $AR2, #0x0180
@ -1766,6 +1775,7 @@ void 06c3_Unknown() {
08e9 02bf 0bd1 call 0bd1_Unknown()
08eb 00f8 02fa sr @0x02fa, $AX0.L
08ed 02df ret
08ee 00c0 0ce3 lr $AR0, @0x0ce3
08f0 0081 02e0 lri $AR1, #0x02e0
08f2 0082 04c0 lri $AR2, #0x04c0
@ -1773,6 +1783,7 @@ void 06c3_Unknown() {
08f5 02bf 0bd1 call 0bd1_Unknown()
08f7 00f8 02fe sr @0x02fe, $AX0.L
08f9 02df ret
08fa 00c0 0ce2 lr $AR0, @0x0ce2
08fc 0081 02de lri $AR1, #0x02de
08fe 0082 0400 lri $AR2, #0x0400
@ -1783,6 +1794,7 @@ void 06c3_Unknown() {
0907 00f8 02fa sr @0x02fa, $AX0.L
0909 00fb 02fe sr @0x02fe, $AX1.H
090b 02df ret
090c 00c0 0ce2 lr $AR0, @0x0ce2
090e 0081 02de lri $AR1, #0x02de
0910 0082 0400 lri $AR2, #0x0400
@ -1793,6 +1805,7 @@ void 06c3_Unknown() {
091a 00f8 02fa sr @0x02fa, $AX0.L
091c 00fb 02fe sr @0x02fe, $AX1.H
091e 02df ret
091f 00c0 0ce1 lr $AR0, @0x0ce1
0921 0081 02ec lri $AR1, #0x02ec
0923 0082 0580 lri $AR2, #0x0580
@ -1800,6 +1813,7 @@ void 06c3_Unknown() {
0926 02bf 0bd1 call 0bd1_Unknown()
0928 00f8 0302 sr @0x0302, $AX0.L
092a 02df ret
092b 00c0 0ce1 lr $AR0, @0x0ce1
092d 0081 02ec lri $AR1, #0x02ec
092f 0082 0580 lri $AR2, #0x0580
@ -1835,6 +1849,7 @@ void 06c3_Unknown() {
0967 02bf 0c21 call 0c21_Unknown()
0969 00f8 0302 sr @0x0302, $AX0.L
096b 02df ret
096c 00c0 0ce1 lr $AR0, @0x0ce1
096e 0081 02ec lri $AR1, #0x02ec
0970 0082 0580 lri $AR2, #0x0580
@ -1870,6 +1885,7 @@ void 06c3_Unknown() {
09ab 02bf 0bd1 call 0bd1_Unknown()
09ad 00f8 02fb sr @0x02fb, $AX0.L
09af 02df ret
09b0 00c0 0ce3 lr $AR0, @0x0ce3
09b2 0081 02e4 lri $AR1, #0x02e4
09b4 0082 0700 lri $AR2, #0x0700
@ -1877,6 +1893,7 @@ void 06c3_Unknown() {
09b7 02bf 0bd1 call 0bd1_Unknown()
09b9 00f8 02ff sr @0x02ff, $AX0.L
09bb 02df ret
09bc 00c0 0ce2 lr $AR0, @0x0ce2
09be 0081 02e2 lri $AR1, #0x02e2
09c0 0082 0640 lri $AR2, #0x0640
@ -1887,6 +1904,7 @@ void 06c3_Unknown() {
09c9 00f8 02fb sr @0x02fb, $AX0.L
09cb 00fb 02ff sr @0x02ff, $AX1.H
09cd 02df ret
09ce 00c0 0ce2 lr $AR0, @0x0ce2
09d0 0081 02e2 lri $AR1, #0x02e2
09d2 0082 0640 lri $AR2, #0x0640
@ -1897,6 +1915,7 @@ void 06c3_Unknown() {
09dc 00f8 02fb sr @0x02fb, $AX0.L
09de 00fb 02ff sr @0x02ff, $AX1.H
09e0 02df ret
09e1 00c0 0ce1 lr $AR0, @0x0ce1
09e3 0081 02ee lri $AR1, #0x02ee
09e5 0082 07c0 lri $AR2, #0x07c0
@ -1904,6 +1923,7 @@ void 06c3_Unknown() {
09e8 02bf 0bd1 call 0bd1_Unknown()
09ea 00f8 0303 sr @0x0303, $AX0.L
09ec 02df ret
09ed 00c0 0ce1 lr $AR0, @0x0ce1
09ef 0081 02ee lri $AR1, #0x02ee
09f1 0082 07c0 lri $AR2, #0x07c0
@ -1939,6 +1959,7 @@ void 06c3_Unknown() {
0a29 02bf 0c21 call 0c21_Unknown()
0a2b 00f8 0303 sr @0x0303, $AX0.L
0a2d 02df ret
0a2e 00c0 0ce1 lr $AR0, @0x0ce1
0a30 0081 02ee lri $AR1, #0x02ee
0a32 0082 07c0 lri $AR2, #0x07c0
@ -2011,6 +2032,7 @@ void 06c3_Unknown() {
0aaa 02bf 0bd1 call 0bd1_Unknown()
0aac 00f8 0304 sr @0x0304, $AX0.L
0aae 02df ret
0aaf 00c0 0ce1 lr $AR0, @0x0ce1
0ab1 0081 02f0 lri $AR1, #0x02f0
0ab3 0082 0a00 lri $AR2, #0x0a00
@ -2046,6 +2068,7 @@ void 06c3_Unknown() {
0aeb 02bf 0c21 call 0c21_Unknown()
0aed 00f8 0304 sr @0x0304, $AX0.L
0aef 02df ret
0af0 00c0 0ce1 lr $AR0, @0x0ce1
0af2 0081 02f0 lri $AR1, #0x02f0
0af4 0082 0a00 lri $AR2, #0x0a00
@ -2081,6 +2104,7 @@ void 06c3_Unknown() {
0b2f 02bf 0bd1 call 0bd1_Unknown()
0b31 00f8 02fc sr @0x02fc, $AX0.L
0b33 02df ret
0b34 00c0 0ce1 lr $AR0, @0x0ce1
0b36 0081 02e8 lri $AR1, #0x02e8
0b38 0082 0940 lri $AR2, #0x0940
@ -2657,6 +2681,8 @@ void 0c21_Unknown() {
0dba 1000 loopi #0x00
0dbb 1200 sbclr #0x00
0dbc 1400 lsl $ACC0, #0
void 0dbd_Cmd_8() {
0dbd 8e00 set16
0dbe 00c4 0ce6 lr $IX0, @0x0ce6
0dc0 1905 lrri $IX1, @$AR0
@ -2678,7 +2704,10 @@ void 0c21_Unknown() {
0dd7 16c9 0001 si @DSCR, #0x0001
0dd9 16cb 0180 si @DSBL, #0x0180
0ddb 02bf 0084 call 0084_WaitForDMACompletion()
0ddd 029f 0e01 jmp 0x0e01
0ddd 029f 0e01 jmp 0e01_Unk()
}
void 0ddf_Cmd_9() {
0ddf 8e00 set16
0de0 00c4 0ce7 lr $IX0, @0x0ce7
0de2 1905 lrri $IX1, @$AR0
@ -2700,7 +2729,10 @@ void 0c21_Unknown() {
0df9 16c9 0001 si @DSCR, #0x0001
0dfb 16cb 0180 si @DSBL, #0x0180
0dfd 02bf 0084 call 0084_WaitForDMACompletion()
0dff 029f 0e01 jmp 0x0e01
0dff 029f 0e01 jmp 0e01_Unk()
}
void 0e01_Unk() {
0e01 8b00 m0
0e02 8100 clr $ACC0
0e03 8900 clr $ACC1
@ -2760,6 +2792,7 @@ void 0c21_Unknown() {
0e51 02bf 0084 call 0084_WaitForDMACompletion()
0e53 02bf 0e57 call 0x0e57
0e55 029f 006f jmp 006f_MailHandler()
}
0e57 8f00 set40
0e58 8d00 set15
@ -2802,6 +2835,7 @@ void 0c21_Unknown() {
0e81 8e00 set16
0e82 02df ret
void 0e83_Cmd_3() {
0e83 8e00 set16
0e84 191f lrri $AC1.M, @$AR0
0e85 191d lrri $AC1.L, @$AR0
@ -2860,7 +2894,9 @@ void 0c21_Unknown() {
0ec2 1b5d srri @$AR2, $AC1.L
0ec3 1c04 mrr $AR0, $IX0
0ec4 029f 006f jmp 006f_MailHandler()
}
void 0ec6_Cmd_C() {
0ec6 8e48 set16'l : $AX1.L, @$AR0
0ec7 8b78 m0'l : $AC1.M, @$AR0
0ec8 8168 clr'l $ACC0 : $AC1.L, @$AR0
@ -2940,13 +2976,14 @@ void 0c21_Unknown() {
0f29 16c9 0001 si @DSCR, #0x0001
0f2b 16cb 0180 si @DSBL, #0x0180
0f2d 02bf 0084 call 0084_WaitForDMACompletion()
0f2f 16fc dcd1 si @DMBH, #0xdcd1
0f31 16fd 0004 si @DMBL, #0x0004
0f33 16fb 0001 si @DIRQ, #0x0001
0f2f 16fc dcd1 si @DMBH, #0xdcd1 <-------------- !!!
0f31 16fd 0004 si @DMBL, #0x0004 <-------------- !!!
0f33 16fb 0001 si @DIRQ, #0x0001 <-------------- !!!
0f35 26fc lrs $AC0.M, @DMBH
0f36 02a0 8000 andf $AC0.M, #0x8000
0f38 029c 0f35 jlnz 0x0f35
0f3a 029f 006f jmp 006f_MailHandler()
}
void 0f3c_Int1_Handler() {
0f3c 8e00 set16
@ -3056,6 +3093,7 @@ void 0f92_Int7_Handler() {
// called at AXList end; wait for a last mail and take an action
// Note: the same thing can be found in Zelda ucode. It's called after DsyncFrame.
// Probably debugging stuff.
0f9b 8e00 set16
0f9c 8100 clr $ACC0
0f9d 8900 clr $ACC1
@ -3068,8 +3106,10 @@ void 0f92_Int7_Handler() {
0fa6 1c7f mrr $AR3, $AC1.M
0fa7 176f jmpr $AR3 // take the action!
0fa8 0021 halt
0fa9 029f 0037 jmp 0x0037
0fa9 029f 0037 jmp 0037_Unk_Restart()
0fab 0021 halt
0fac 8100 clr $ACC0
0fad 8900 clr $ACC1
0fae 02bf 0fea call 0x0fea
@ -3110,7 +3150,6 @@ void 0f92_Int7_Handler() {
0fdc 26c9 lrs $AC0.M, @DSCR
0fdd 02a0 0004 andf $AC0.M, #0x0004
0fdf 029c 0fdc jlnz 0x0fdc
0fe1 029f 80b5 jmp 0x80b5
0fe3 0021 halt
0fe4 029f 8000 jmp 0x8000
@ -3128,7 +3167,6 @@ void 0f92_Int7_Handler() {
0ff3 029c 0ff0 jlnz 0x0ff0
0ff5 02df ret
0ff6 0000 nop
0ff7 0000 nop
0ff8 0000 nop