// documented UCode of Crazy Taxi // // //////////////////////////////////////////////////////////// // MemMap // 0x0000 // RightBuffer 0x0140 // LeftBuffer 0x0280 0x0400 // Opcode_14() interleaves the buffer to this address 0x0540 0x0680 0x07C0 0x0900 0x0A40 0x0B80 to 0x0C40 // CurrentPB // addresses to buffers 0x0E08 // initialized to 0x0000 0x0E09 // initialized to 0x0140 0x0E0A // 0x0E0B 0x0E0C 0x0E0D 0x0E0E 0x0E0F 0x0E10 // callbacks 0x0E15 SrcSelectFunction // perhaps CMD0 setups some kind of jmp table at this addresses 0x0E16 CoefFunction 0x0E14 MixCtrlFunction 0x0e17 TmpBuffer exceptions 0x0e18 TmpBuffer exceptions 0x0e19 TmpBuffer exceptions 0x0e1c TmpBuffer for Opcode3() 0x0e40 pb->PBInitialTimeDelay->offsetLeft 0x0e41 pb->PBInitialTimeDelay->offsetRight 0x0e42 // initialized to 0x0ce0 all the time; something for the Decoder Functions //////////////////////////////////////////////////////////// // Code // 0000 0000 NOP 0001 0000 NOP 0002 029f 0c10 JMP 0x0c10 0004 029f 0c1f JMP 0x0c1f 0006 029f 0c3b JMP 0x0c3b 0008 029f 0c4a JMP 0x0c4a 000a 029f 0c50 JMP 0x0c50 000c 029f 0c82 JMP 0x0c82 000e 029f 0c88 JMP 0x0c88 Init-Code() 0010 1302 SBSET #0x02 0011 1303 SBSET #0x03 0012 1204 SBCLR #0x04 0013 1305 SBSET #0x05 0014 1306 SBSET #0x06 0015 8e00 S40 0016 8c00 CLR15 0017 8b00 M0 0018 0092 00ff LRI $18, #0x00ff 001a 8100 CLR $30 001b 8900 CLR $31 001c 009e 0e80 LRI $30, #0x0e80 001e 00fe 0e1b SR @0x0e1b, $30 0020 8100 CLR $30 0021 00fe 0e31 SR @0x0e31, $30 0023 16fc dcd1 SI @DMBH, #0xdcd1 0025 16fd 0000 SI @DMBL, #0x0000 0027 16fb 0001 SI @DIRQ, #0x0001 // wait for mail 0029 26fc LRS $30, @DMBH 002a 02a0 8000 ANDCF $30, #0x8000 002c 029c 0029 JZR 0x0029 002e 029f 0045 JMP 0x0045 0030 1302 SBSET #0x02 0031 1303 SBSET #0x03 0032 1204 SBCLR #0x04 0033 1305 SBSET #0x05 0034 1306 SBSET #0x06 0035 8e00 S40 0036 8c00 CLR15 0037 8b00 M0 0038 0092 00ff LRI $18, #0x00ff 003a 16fc dcd1 SI @DMBH, #0xdcd1 003c 16fd 0001 SI @DMBL, #0x0001 003e 16fb 0001 SI @DIRQ, #0x0001 0040 26fc LRS $30, @DMBH 0041 02a0 8000 ANDCF $30, #0x8000 0043 029c 0040 JZR 0x0040 ------------------------------------------------------------ Main() 0045 8e00 S40 0046 8100 CLR $30 0047 8900 CLR $31 0048 009f babe LRI $31, #0xbabe 004a 26fe LRS $30, @CMBH 004b 02c0 8000 ANDF $30, #0x8000 004d 029c 004a JZR 0x004a 004f 8200 CMP 0050 0294 004a JNE 0x004a 0052 23ff LRS $27, @CMBL 0053 8100 CLR $30 0054 26fe LRS $30, @CMBH 0055 02c0 8000 ANDF $30, #0x8000 0057 029c 0054 JZR 0x0054 0059 27ff LRS $31, @CMBL 005a 0240 7fff ANDI $32, #0x7fff 005c 2ece SRS @DSMAH, $30 005d 2fcf SRS @DSMAL, $31 005e 16cd 0c00 SI @DSPA, #0x0c00 0060 8100 CLR $30 0061 2ec9 SRS @DSCR, $30 0062 1ffb MRR $31, $27 0063 2fcb SRS @DSBL, $31 0064 02bf 055c CALL 0x055c // Wait for DMA control reg 0066 0080 0c00 LRI $0, #0x0c00 0068 8e00 S40 0069 8100 CLR $30 006a 8970 CLR.L $31 : $30, @$0 006b b100 TST $30 006c 0291 007e JX1 0x007e // check if the code it out of Opcode is > 0x12 if so send a 0xBAAD and HALT 006e 0a12 LRIS $26, #0x12 006f c100 CMPAXH $30, $26 0070 0292 007e JX2 0x007e 0072 009f 0aff LRI $31, #0x0aff // load jump table base address 0074 4c00 ADD $30, $31 0075 1c7e MRR $3, $30 0076 0213 ILRR $30, @$3 0077 1c7e MRR $3, $30 0078 176f JMPR $3 // jump to the opcode // HALT - but this one seems to be unreachable 0079 16fc fbad SI @DMBH, #0xfbad 007b 16fd 8080 SI @DMBL, #0x8080 007d 0021 HALT // we got a wrong opcode - HALT 007e 16fc baad SI @DMBH, #0xbaad 0080 2efd SRS @DMBL, $30 0081 0021 HALT //////// // Opcode_00() 0082 8100 CLR $30 0083 8970 CLR.L $31 : $30, @$0 0084 8e78 S40.L : $31, @$0 0085 2ece SRS @DSMAH, $30 0086 2fcf SRS @DSMAL, $31 0087 009e 0e44 LRI $30, #0x0e44 0089 2ecd SRS @DSPA, $30 008a 0e00 LRIS $30, #0x00 008b 2ec9 SRS @DSCR, $30 008c 009e 0040 LRI $30, #0x0040 008e 2ecb SRS @DSBL, $30 008f 0081 0e44 LRI $1, #0x0e44 0091 0082 0000 LRI $2, #0x0000 0093 009b 009f LRI $27, #0x009f 0095 009a 0140 LRI $26, #0x0140 0097 8100 CLR $30 0098 8900 CLR $31 0099 8f00 S16 009a 02bf 055c CALL 0x055c // Wait for DMA control reg 009c 193e LRRI $30, @$1 009d 193c LRRI $28, @$1 009e b100 TST $30 009f 193f LRRI $31, @$1 00a0 0294 00a6 JNE 0x00a6 00a2 005a LOOP $26 00a3 1b5e SRRI @$2, $30 00a4 029f 00ae JMP 0x00ae 00a6 9900 ASR16 $31 00a7 1b5e SRRI @$2, $30 00a8 1b5c SRRI @$2, $28 00a9 007b 00ad BLOOP $27, 0x00ad 00ab 4c00 ADD $30, $31 00ac 1b5e SRRI @$2, $30 00ad 1b5c SRRI @$2, $28 00ae 193e LRRI $30, @$1 00af 193c LRRI $28, @$1 00b0 b100 TST $30 00b1 193f LRRI $31, @$1 00b2 0294 00b8 JNE 0x00b8 00b4 005a LOOP $26 00b5 1b5e SRRI @$2, $30 00b6 029f 00c0 JMP 0x00c0 00b8 9900 ASR16 $31 00b9 1b5e SRRI @$2, $30 00ba 1b5c SRRI @$2, $28 00bb 007b 00bf BLOOP $27, 0x00bf 00bd 4c00 ADD $30, $31 00be 1b5e SRRI @$2, $30 00bf 1b5c SRRI @$2, $28 00c0 193e LRRI $30, @$1 00c1 193c LRRI $28, @$1 00c2 b100 TST $30 00c3 193f LRRI $31, @$1 00c4 0294 00ca JNE 0x00ca 00c6 005a LOOP $26 00c7 1b5e SRRI @$2, $30 00c8 029f 00d2 JMP 0x00d2 00ca 9900 ASR16 $31 00cb 1b5e SRRI @$2, $30 00cc 1b5c SRRI @$2, $28 00cd 007b 00d1 BLOOP $27, 0x00d1 00cf 4c00 ADD $30, $31 00d0 1b5e SRRI @$2, $30 00d1 1b5c SRRI @$2, $28 00d2 0082 0400 LRI $2, #0x0400 00d4 193e LRRI $30, @$1 00d5 193c LRRI $28, @$1 00d6 b179 TST.L $30 : $31, @$1 00d7 0294 00dd JNE 0x00dd 00d9 005a LOOP $26 00da 1b5e SRRI @$2, $30 00db 029f 00e5 JMP 0x00e5 00dd 9900 ASR16 $31 00de 1b5e SRRI @$2, $30 00df 1b5c SRRI @$2, $28 00e0 007b 00e4 BLOOP $27, 0x00e4 00e2 4c00 ADD $30, $31 00e3 1b5e SRRI @$2, $30 00e4 1b5c SRRI @$2, $28 00e5 193e LRRI $30, @$1 00e6 193c LRRI $28, @$1 00e7 b179 TST.L $30 : $31, @$1 00e8 0294 00ee JNE 0x00ee 00ea 005a LOOP $26 00eb 1b5e SRRI @$2, $30 00ec 029f 00f6 JMP 0x00f6 00ee 9900 ASR16 $31 00ef 1b5e SRRI @$2, $30 00f0 1b5c SRRI @$2, $28 00f1 007b 00f5 BLOOP $27, 0x00f5 00f3 4c00 ADD $30, $31 00f4 1b5e SRRI @$2, $30 00f5 1b5c SRRI @$2, $28 00f6 193e LRRI $30, @$1 00f7 193c LRRI $28, @$1 00f8 b179 TST.L $30 : $31, @$1 00f9 0294 00ff JNE 0x00ff 00fb 005a LOOP $26 00fc 1b5e SRRI @$2, $30 00fd 029f 0107 JMP 0x0107 00ff 9900 ASR16 $31 0100 1b5e SRRI @$2, $30 0101 1b5c SRRI @$2, $28 0102 007b 0106 BLOOP $27, 0x0106 0104 4c00 ADD $30, $31 0105 1b5e SRRI @$2, $30 0106 1b5c SRRI @$2, $28 0107 0082 07c0 LRI $2, #0x07c0 0109 193e LRRI $30, @$1 010a 193c LRRI $28, @$1 010b b179 TST.L $30 : $31, @$1 010c 0294 0112 JNE 0x0112 010e 005a LOOP $26 010f 1b5e SRRI @$2, $30 0110 029f 011a JMP 0x011a 0112 9900 ASR16 $31 0113 1b5e SRRI @$2, $30 0114 1b5c SRRI @$2, $28 0115 007b 0119 BLOOP $27, 0x0119 0117 4c00 ADD $30, $31 0118 1b5e SRRI @$2, $30 0119 1b5c SRRI @$2, $28 011a 193e LRRI $30, @$1 011b 193c LRRI $28, @$1 011c b179 TST.L $30 : $31, @$1 011d 0294 0123 JNE 0x0123 011f 005a LOOP $26 0120 1b5e SRRI @$2, $30 0121 029f 012b JMP 0x012b 0123 9900 ASR16 $31 0124 1b5e SRRI @$2, $30 0125 1b5c SRRI @$2, $28 0126 007b 012a BLOOP $27, 0x012a 0128 4c00 ADD $30, $31 0129 1b5e SRRI @$2, $30 012a 1b5c SRRI @$2, $28 012b 193e LRRI $30, @$1 012c 193c LRRI $28, @$1 012d b179 TST.L $30 : $31, @$1 012e 0294 0134 JNE 0x0134 0130 005a LOOP $26 0131 1b5e SRRI @$2, $30 0132 029f 013c JMP 0x013c 0134 9900 ASR16 $31 0135 1b5e SRRI @$2, $30 0136 1b5c SRRI @$2, $28 0137 007b 013b BLOOP $27, 0x013b 0139 4c00 ADD $30, $31 013a 1b5e SRRI @$2, $30 013b 1b5c SRRI @$2, $28 013c 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_01() 013e 0085 ffff LRI $5, #0xffff 0140 8150 CLR.L $30 : $26, @$0 0141 8940 CLR.L $31 : $24, @$0 0142 8e48 S40.L : $25, @$0 0143 00fa 0e17 SR @0x0e17, $26 0145 00f8 0e18 SR @0x0e18, $24 0147 0081 0000 LRI $1, #0x0000 0149 02bf 04f1 CALL 0x04f1 014b 00da 0e17 LR $26, @0x0e17 014d 00d8 0e18 LR $24, @0x0e18 014f 8948 CLR.L $31 : $25, @$0 0150 0081 0400 LRI $1, #0x0400 0152 02bf 04f1 CALL 0x04f1 0154 00da 0e17 LR $26, @0x0e17 0156 00d8 0e18 LR $24, @0x0e18 0158 8948 CLR.L $31 : $25, @$0 0159 0081 07c0 LRI $1, #0x07c0 015b 02bf 04f1 CALL 0x04f1 015d 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_09() 015f 0086 07c0 LRI $6, #0x07c0 0161 02bf 0484 CALL 0x0484 0163 029f 0068 JMP 0x0068 // Return to message loop. // DMA something back to RAM // Opcode_06() 0165 8100 CLR $30 0166 8e00 S40 0167 191e LRRI $30, @$0 0168 191c LRRI $28, @$0 0169 2ece SRS @DSMAH, $30 016a 2ccf SRS @DSMAL, $28 016b 16cd 0000 SI @DSPA, #0x0000 016d 16c9 0001 SI @DSCR, #0x0001 016f 16cb 0780 SI @DSBL, #0x0780 0171 02bf 055c CALL 0x055c // Wait for DMA control reg 0173 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_17() 0175 8100 CLR $30 0176 8970 CLR.L $31 : $30, @$0 0177 8e60 S40.L : $28, @$0 0178 2ece SRS @DSMAH, $30 0179 2ccf SRS @DSMAL, $28 017a 16cd 0e44 SI @DSPA, #0x0e44 017c 16c9 0000 SI @DSCR, #0x0000 017e 8900 CLR $31 017f 0d20 LRIS $29, #0x20 0180 2dcb SRS @DSBL, $29 0181 4c00 ADD $30, $31 0182 1c80 MRR $4, $0 0183 0080 0280 LRI $0, #0x0280 0185 0081 0000 LRI $1, #0x0000 0187 0082 0140 LRI $2, #0x0140 0189 0083 0e44 LRI $3, #0x0e44 018b 0a00 LRIS $26, #0x00 018c 27c9 LRS $31, @DSCR 018d 03a0 0004 ANDCF $31, #0x0004 018f 029c 018c JZR 0x018c // wait for dma loop 0191 2ece SRS @DSMAH, $30 0192 2ccf SRS @DSMAL, $28 0193 16cd 0e54 SI @DSPA, #0x0e54 0195 16c9 0000 SI @DSCR, #0x0000 0197 16cb 0260 SI @DSBL, #0x0260 0199 009f 00a0 LRI $31, #0x00a0 019b 8f00 S16 019c 007f 01a5 BLOOP $31, 0x01a5 019e 197e LRRI $30, @$3 019f 1b1a SRRI @$0, $26 01a0 197c LRRI $28, @$3 01a1 1b1a SRRI @$0, $26 01a2 1b5e SRRI @$2, $30 01a3 7c22 NEG.S $30 : @$2, $28 01a4 1b3e SRRI @$1, $30 01a5 1b3c SRRI @$1, $28 01a6 1c04 MRR $0, $4 01a7 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_13() 01a9 8e70 S40.L : $30, @$0 01aa 8960 CLR.L $31 : $28, @$0 01ab 191f LRRI $31, @$0 01ac 2ece SRS @DSMAH, $30 01ad 2ccf SRS @DSMAL, $28 01ae 16cd 0c00 SI @DSPA, #0x0c00 01b0 16c9 0000 SI @DSCR, #0x0000 01b2 0503 ADDIS $33, #0x03 01b3 0340 fff0 ANDI $33, #0xfff0 01b5 2fcb SRS @DSBL, $31 01b6 02bf 055c CALL 0x055c // Wait for DMA control reg 01b8 0080 0c00 LRI $0, #0x0c00 01ba 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_02() 01bc 8100 CLR $30 01bd 8970 CLR.L $31 : $30, @$0 01be 8e78 S40.L : $31, @$0 01bf 2ece SRS @DSMAH, $30 01c0 2fcf SRS @DSMAL, $31 01c1 16cd 0b80 SI @DSPA, #0x0b80 01c3 16c9 0000 SI @DSCR, #0x0000 01c5 16cb 00c0 SI @DSBL, #0x00c0 01c7 0082 0e08 LRI $2, #0x0e08 01c9 009f 0000 LRI $31, #0x0000 01cb 1b5f SRRI @$2, $31 01cc 009f 0140 LRI $31, #0x0140 01ce 1b5f SRRI @$2, $31 01cf 009f 0280 LRI $31, #0x0280 01d1 1b5f SRRI @$2, $31 01d2 009f 0400 LRI $31, #0x0400 01d4 1b5f SRRI @$2, $31 01d5 009f 0540 LRI $31, #0x0540 01d7 1b5f SRRI @$2, $31 01d8 009f 0680 LRI $31, #0x0680 01da 1b5f SRRI @$2, $31 01db 009f 07c0 LRI $31, #0x07c0 01dd 1b5f SRRI @$2, $31 01de 009f 0900 LRI $31, #0x0900 01e0 1b5f SRRI @$2, $31 01e1 009f 0a40 LRI $31, #0x0a40 01e3 1b5f SRRI @$2, $31 01e4 02bf 055c CALL 0x055c // Wait for DMA control reg 01e6 00de 0ba7 LR $30, @0x0ba7 // current PB PBInitialTimeDelay[o] 01e8 00df 0ba8 LR $31, @0x0ba8 // current PB PBInitialTimeDelay[1] 01ea 2ece SRS @DSMAH, $30 01eb 2fcf SRS @DSMAL, $31 01ec 16cd 03c0 SI @DSPA, #0x03c0 01ee 16c9 0000 SI @DSCR, #0x0000 01f0 16cb 0080 SI @DSBL, #0x0080 01f2 8100 CLR $30 01f3 8900 CLR $31 01f4 00de 0b84 LR $30, @0x0b84 // current PB src_type 01f6 009f 0b31 LRI $31, #0x0b31 // src type jmp table base addr 01f8 4c00 ADD $30, $31 01f9 1c7e MRR $3, $30 01fa 0213 ILRR $30, @$3 01fb 00fe 0e15 SR @0x0e15, $30 01fd 00de 0b85 LR $30, @0x0b85 // unknown 01ff 009f 0b34 LRI $31, #0x0b34 0201 4c00 ADD $30, $31 0202 1c7e MRR $3, $30 0203 0213 ILRR $30, @$3 0204 00fe 0e16 SR @0x0e16, $30 0206 00de 0b86 LR $30, @0x0b86 // current PB mixer_control 0208 009f 0b11 LRI $31, #0x0b11 // mixer control jmp table base addr 020a 4c00 ADD $30, $31 020b 1c7e MRR $3, $30 020c 0213 ILRR $30, @$3 020d 00fe 0e14 SR @0x0e14, $30 020f 8100 CLR $30 0210 00de 0b9b LR $30, @0x0b9b 0212 b100 TST $30 0213 0295 023a JEQ 0x023a 0215 8900 CLR $31 0216 00df 0b9e LR $31, @0x0b9e // pb->PBInitialTimeDelay->offsetLeft 0218 0300 0cc0 ADDI $33, #0x0cc0 021a 00ff 0e40 SR @0x0e40, $31 021c 00df 0b9f LR $31, @0x0b9f 021e 0300 0cc0 ADDI $33, #0x0cc0 0220 00ff 0e41 SR @0x0e41, $31 0222 009f 0ce0 LRI $31, #0x0ce0 0224 00ff 0e42 SR @0x0e42, $31 0226 00ff 0e43 SR @0x0e43, $31 0228 02bf 055c CALL 0x055c // Wait for DMA control reg 022a 00de 0b9c LR $30, @0x0b9c 022c 2ece SRS @DSMAH, $30 022d 00de 0b9d LR $30, @0x0b9d 022f 2ecf SRS @DSMAL, $30 0230 16cd 0cc0 SI @DSPA, #0x0cc0 0232 16c9 0000 SI @DSCR, #0x0000 0234 16cb 0040 SI @DSBL, #0x0040 0236 02bf 055c CALL 0x055c // Wait for DMA control reg 0238 029f 0068 JMP 0x0068 // Return to message loop. // return out of the function 023a 009f 0ce0 LRI $31, #0x0ce0 023c 00ff 0e42 SR @0x0e42, $31 023e 00ff 0e40 SR @0x0e40, $31 0240 00ff 0e41 SR @0x0e41, $31 0242 00ff 0e43 SR @0x0e43, $31 0244 02bf 055c CALL 0x055c // Wait for DMA control reg 0246 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_03() 0248 8e00 S40 0249 00e0 0e07 SR @0x0e07, $0 024b 0080 0ba2 LRI $0, #0x0ba2 024d 0081 03c0 LRI $1, #0x03c0 024f 0e05 LRIS $30, #0x05 0250 00fe 0e04 SR @0x0e04, $30 0252 8900 CLR $31 0253 8150 CLR.L $30 : $26, @$0 0254 009f 0b80 LRI $31, #0x0b80 0256 007a 025b BLOOP $26, 0x025b 0258 193e LRRI $30, @$1 0259 4c49 ADD.L $30, $31 : $25, @$1 025a 1c5e MRR $2, $30 025b 1a59 SRR @$2, $25 025c 0083 0e05 LRI $3, #0x0e05 025e 1b61 SRRI @$3, $1 025f 1b60 SRRI @$3, $0 0260 00de 0b87 LR $30, @0x0b87 // is pb->running? 0262 0601 CMPIS $32, #0x01 0263 0295 0267 JEQ 0x0267 0265 029f 0332 JMP 0x0332 0267 00de 0e42 LR $30, @0x0e42 // we got here - yes, it's running 0269 00fe 0e1c SR @0x0e1c, $30 026b 00c3 0e15 LR $3, @0x0e15 026d 177f CALLR $3 // Call the Src Decoder // Volume Envelope 026e 8e00 S40 026f 8a00 M2 0270 8100 CLR $30 0271 8900 CLR $31 0272 00de 0bb3 LR $30, @0x0bb3 // PBVolumeEnvelope->cur_volume_delta 0274 00df 0bb2 LR $31, @0x0bb2 // PBVolumeEnvelope->cur_volume 0276 1f1f MRR $24, $31 0277 4d00 ADD $31, $30 0278 1481 ASL $32, #0x01 0279 8d1e SET15.MV : $27, $30 027a 1fd8 MRR $30, $24 027b 0098 8000 LRI $24, #0x8000 027d 0080 0e44 LRI $0, #0x0e44 027f a830 MULX.S $24, $27 : @$0, $30 0280 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0281 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0282 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0283 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0284 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0285 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0286 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0287 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0288 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0289 ad30 MULXAC.S $24, $27, $31 : @$0, $30 028a ac38 MULXAC.S $24, $27, $30 : @$0, $31 028b ad30 MULXAC.S $24, $27, $31 : @$0, $30 028c ac38 MULXAC.S $24, $27, $30 : @$0, $31 028d ad30 MULXAC.S $24, $27, $31 : @$0, $30 028e ac38 MULXAC.S $24, $27, $30 : @$0, $31 028f ad30 MULXAC.S $24, $27, $31 : @$0, $30 0290 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0291 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0292 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0293 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0294 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0295 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0296 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0297 ad30 MULXAC.S $24, $27, $31 : @$0, $30 0298 ac38 MULXAC.S $24, $27, $30 : @$0, $31 0299 ad30 MULXAC.S $24, $27, $31 : @$0, $30 029a ac38 MULXAC.S $24, $27, $30 : @$0, $31 029b ad30 MULXAC.S $24, $27, $31 : @$0, $30 029c ac38 MULXAC.S $24, $27, $30 : @$0, $31 029d ad30 MULXAC.S $24, $27, $31 : @$0, $30 029e ac38 MULXAC.S $24, $27, $30 : @$0, $31 029f 00fe 0bb2 SR @0x0bb2, $30 // write back to PBVolumeEnvelope->cur_volume // Initial Time Delay + (IIR Filter?) 02a1 8f00 S16 02a2 0080 0e44 LRI $0, #0x0e44 02a4 00c1 0e43 LR $1, @0x0e43 02a6 1c61 MRR $3, $1 02a7 193a LRRI $26, @$1 02a8 1918 LRRI $24, @$0 02a9 9059 MUL.L $24, $26 : $27, @$1 02aa 1919 LRRI $25, @$0 02ab 9e51 MULMV.L $25, $27, $30 : $26, @$1 02ac 8080 NX.LS : $24, $30 02ad 9759 MULMV.L $24, $26, $31 : $27, @$1 02ae 8091 NX.LS : $25, $31 02af 9e51 MULMV.L $25, $27, $30 : $26, @$1 02b0 8080 NX.LS : $24, $30 02b1 9759 MULMV.L $24, $26, $31 : $27, @$1 02b2 8091 NX.LS : $25, $31 02b3 9e51 MULMV.L $25, $27, $30 : $26, @$1 02b4 8080 NX.LS : $24, $30 02b5 9759 MULMV.L $24, $26, $31 : $27, @$1 02b6 8091 NX.LS : $25, $31 02b7 9e51 MULMV.L $25, $27, $30 : $26, @$1 02b8 8080 NX.LS : $24, $30 02b9 9759 MULMV.L $24, $26, $31 : $27, @$1 02ba 8091 NX.LS : $25, $31 02bb 9e51 MULMV.L $25, $27, $30 : $26, @$1 02bc 8080 NX.LS : $24, $30 02bd 9759 MULMV.L $24, $26, $31 : $27, @$1 02be 8091 NX.LS : $25, $31 02bf 9e51 MULMV.L $25, $27, $30 : $26, @$1 02c0 8080 NX.LS : $24, $30 02c1 9759 MULMV.L $24, $26, $31 : $27, @$1 02c2 8091 NX.LS : $25, $31 02c3 9e51 MULMV.L $25, $27, $30 : $26, @$1 02c4 8080 NX.LS : $24, $30 02c5 9759 MULMV.L $24, $26, $31 : $27, @$1 02c6 8091 NX.LS : $25, $31 02c7 9e51 MULMV.L $25, $27, $30 : $26, @$1 02c8 8080 NX.LS : $24, $30 02c9 9759 MULMV.L $24, $26, $31 : $27, @$1 02ca 8091 NX.LS : $25, $31 02cb 9e51 MULMV.L $25, $27, $30 : $26, @$1 02cc 8080 NX.LS : $24, $30 02cd 9759 MULMV.L $24, $26, $31 : $27, @$1 02ce 8091 NX.LS : $25, $31 02cf 9e51 MULMV.L $25, $27, $30 : $26, @$1 02d0 8080 NX.LS : $24, $30 02d1 9759 MULMV.L $24, $26, $31 : $27, @$1 02d2 8091 NX.LS : $25, $31 02d3 9e51 MULMV.L $25, $27, $30 : $26, @$1 02d4 8080 NX.LS : $24, $30 02d5 9759 MULMV.L $24, $26, $31 : $27, @$1 02d6 8091 NX.LS : $25, $31 02d7 9e51 MULMV.L $25, $27, $30 : $26, @$1 02d8 8080 NX.LS : $24, $30 02d9 9759 MULMV.L $24, $26, $31 : $27, @$1 02da 8091 NX.LS : $25, $31 02db 9e51 MULMV.L $25, $27, $30 : $26, @$1 02dc 8080 NX.LS : $24, $30 02dd 9759 MULMV.L $24, $26, $31 : $27, @$1 02de 8091 NX.LS : $25, $31 02df 9e51 MULMV.L $25, $27, $30 : $26, @$1 02e0 8080 NX.LS : $24, $30 02e1 9759 MULMV.L $24, $26, $31 : $27, @$1 02e2 8091 NX.LS : $25, $31 02e3 9e51 MULMV.L $25, $27, $30 : $26, @$1 02e4 8080 NX.LS : $24, $30 02e5 9759 MULMV.L $24, $26, $31 : $27, @$1 02e6 8091 NX.LS : $25, $31 02e7 9e00 MULMV $25, $27, $30 02e8 6f33 MOVP.S $31 : @$3, $30 02e9 1b7f SRRI @$3, $31 02ea 00c3 0e14 LR $3, @0x0e14 // call the mixer 02ec 8f00 S16 02ed 8d00 SET15 02ee 8a00 M2 02ef 177f CALLR $3 02f0 8100 CLR $30 02f1 00de 0b9b LR $30, @0x0b9b // check (PBInitialTimeDelay->firstStart == 0) 02f3 b100 TST $30 02f4 0295 032a JEQ 0x032a 02f6 00de 0e42 LR $30, @0x0e42 02f8 00fe 0e43 SR @0x0e43, $30 02fa 8100 CLR $30 02fb 8900 CLR $31 02fc 00de 0b9e LR $30, @0x0b9e 02fe 00df 0ba0 LR $31, @0x0ba0 0300 8200 CMP 0301 0293 0306 JX3 0x0306 0303 7800 DECM $30 0304 029f 0309 JMP 0x0309 0306 0295 0309 JEQ 0x0309 0308 7400 INCM $30 0309 00fe 0b9e SR @0x0b9e, $30 030b 00df 0e43 LR $31, @0x0e43 030d 05e0 ADDIS $33, #0xe0 030e 4c00 ADD $30, $31 030f 00fe 0e40 SR @0x0e40, $30 0311 8100 CLR $30 0312 8900 CLR $31 0313 00de 0b9f LR $30, @0x0b9f 0315 00df 0ba1 LR $31, @0x0ba1 0317 8200 CMP 0318 0293 031d JX3 0x031d 031a 7800 DECM $30 031b 029f 0320 JMP 0x0320 031d 0295 0320 JEQ 0x0320 031f 7400 INCM $30 0320 00fe 0b9f SR @0x0b9f, $30 0322 00df 0e43 LR $31, @0x0e43 0324 05e0 ADDIS $33, #0xe0 0325 4c00 ADD $30, $31 0326 00fe 0e41 SR @0x0e41, $30 0328 029f 0332 JMP 0x0332 032a 00de 0e42 LR $30, @0x0e42 032c 00fe 0e40 SR @0x0e40, $30 032e 00fe 0e41 SR @0x0e41, $30 0330 00fe 0e43 SR @0x0e43, $30 0332 8100 CLR $30 // Jumps here when a PB isn't ->running. 0333 8e00 S40 0334 8400 CLRP 0335 8900 CLR $31 0336 1efe MRR $23, $30 0337 0e40 LRIS $30, #0x40 0338 1ebe MRR $21, $30 0339 0083 0e08 LRI $3, #0x0e08 033b 1c03 MRR $0, $3 033c 1ff5 MRR $31, $21 033d 191a LRRI $26, @$0 033e f858 ADDPAXZ.L $30, $26 : $27, @$0 033f fba0 ADDPAXZ.LS $31, $27 : $26, $30 0340 f8b1 ADDPAXZ.LS $30, $26 : $27, $31 0341 fba0 ADDPAXZ.LS $31, $27 : $26, $30 0342 f8b1 ADDPAXZ.LS $30, $26 : $27, $31 0343 fba0 ADDPAXZ.LS $31, $27 : $26, $30 0344 f8b1 ADDPAXZ.LS $30, $26 : $27, $31 0345 fba0 ADDPAXZ.LS $31, $27 : $26, $30 0346 f83b ADDPAXZ.S $30, $26 : @$3, $31 0347 1b7e SRRI @$3, $30 0348 0083 0e04 LRI $3, #0x0e04 034a 8100 CLR $30 034b 8973 CLR.L $31 : $30, @$3 034c 1961 LRRI $1, @$3 034d 1960 LRRI $0, @$3 034e 7800 DECM $30 034f 00fe 0e04 SR @0x0e04, $30 0351 0294 0253 JNE 0x0253 0353 8e00 S40 0354 8100 CLR $30 0355 00de 0b9b LR $30, @0x0b9b // check (PBInitialTimeDelay->firstStart == 0) or write back to MEM?! 0357 b100 TST $30 0358 0295 036a JEQ 0x036a 035a 00de 0b9c LR $30, @0x0b9c 035c 00dc 0b9d LR $28, @0x0b9d 035e 2ece SRS @DSMAH, $30 035f 2ccf SRS @DSMAL, $28 0360 8100 CLR $30 0361 00de 0e1c LR $30, @0x0e1c 0363 2ecd SRS @DSPA, $30 0364 16c9 0001 SI @DSCR, #0x0001 0366 16cb 0040 SI @DSBL, #0x0040 0368 02bf 055c CALL 0x055c // Wait for DMA control reg // write back the PB 036a 8100 CLR $30 036b 8900 CLR $31 036c 00de 0b82 LR $30, @0x0b82 036e 00df 0b83 LR $31, @0x0b83 0370 2ece SRS @DSMAH, $30 0371 2fcf SRS @DSMAL, $31 0372 16cd 0b80 SI @DSPA, #0x0b80 0374 16c9 0001 SI @DSCR, #0x0001 0376 16cb 00c0 SI @DSBL, #0x00c0 0378 02bf 055c CALL 0x055c // Wait for DMA control reg 037a 8100 CLR $30 // check if there is a another PB linked, if yes copy and setup this one (like Opcode2()) 037b 00de 0b80 LR $30, @0x0b80 037d 00dc 0b81 LR $28, @0x0b81 037f b100 TST $30 0380 0294 0386 JNE 0x0386 0382 00c0 0e07 LR $0, @0x0e07 0384 029f 0068 JMP 0x0068 // Return to message loop. --> return to next opcode // copy the next PB to memory 0386 2ece SRS @DSMAH, $30 0387 2ccf SRS @DSMAL, $28 0388 16cd 0b80 SI @DSPA, #0x0b80 // b80 - paramblock 038a 16c9 0000 SI @DSCR, #0x0000 038c 16cb 00c0 SI @DSBL, #0x00c0 038e 0082 0e08 LRI $2, #0x0e08 0390 009f 0000 LRI $31, #0x0000 0392 1b5f SRRI @$2, $31 0393 009f 0140 LRI $31, #0x0140 0395 1b5f SRRI @$2, $31 0396 009f 0280 LRI $31, #0x0280 0398 1b5f SRRI @$2, $31 0399 009f 0400 LRI $31, #0x0400 039b 1b5f SRRI @$2, $31 039c 009f 0540 LRI $31, #0x0540 039e 1b5f SRRI @$2, $31 039f 009f 0680 LRI $31, #0x0680 03a1 1b5f SRRI @$2, $31 03a2 009f 07c0 LRI $31, #0x07c0 03a4 1b5f SRRI @$2, $31 03a5 009f 0900 LRI $31, #0x0900 03a7 1b5f SRRI @$2, $31 03a8 009f 0a40 LRI $31, #0x0a40 03aa 1b5f SRRI @$2, $31 03ab 02bf 055c CALL 0x055c // Wait for DMA control reg 03ad 00de 0ba7 LR $30, @0x0ba7 03af 00df 0ba8 LR $31, @0x0ba8 03b1 2ece SRS @DSMAH, $30 03b2 2fcf SRS @DSMAL, $31 03b3 16cd 03c0 SI @DSPA, #0x03c0 03b5 16c9 0000 SI @DSCR, #0x0000 03b7 16cb 0080 SI @DSBL, #0x0080 // Don't know w.at this dma xfer is 03b9 8100 CLR $30 03ba 8900 CLR $31 03bb 00de 0b84 LR $30, @0x0b84 03bd 009f 0b31 LRI $31, #0x0b31 03bf 4c00 ADD $30, $31 03c0 1c7e MRR $3, $30 03c1 0213 ILRR $30, @$3 03c2 00fe 0e15 SR @0x0e15, $30 03c4 00de 0b85 LR $30, @0x0b85 03c6 009f 0b34 LRI $31, #0x0b34 03c8 4c00 ADD $30, $31 03c9 1c7e MRR $3, $30 03ca 0213 ILRR $30, @$3 03cb 00fe 0e16 SR @0x0e16, $30 03cd 00de 0b86 LR $30, @0x0b86 03cf 009f 0b11 LRI $31, #0x0b11 // mixer control jmp table base addr 03d1 4c00 ADD $30, $31 03d2 1c7e MRR $3, $30 03d3 0213 ILRR $30, @$3 03d4 00fe 0e14 SR @0x0e14, $30 03d6 8100 CLR $30 03d7 00de 0b9b LR $30, @0x0b9b 03d9 b100 TST $30 03da 0295 0403 JEQ 0x0403 03dc 8900 CLR $31 03dd 00df 0b9e LR $31, @0x0b9e 03df 0300 0cc0 ADDI $33, #0x0cc0 03e1 00ff 0e40 SR @0x0e40, $31 03e3 00df 0b9f LR $31, @0x0b9f 03e5 0300 0cc0 ADDI $33, #0x0cc0 03e7 00ff 0e41 SR @0x0e41, $31 03e9 009f 0ce0 LRI $31, #0x0ce0 03eb 00ff 0e42 SR @0x0e42, $31 03ed 00ff 0e43 SR @0x0e43, $31 03ef 02bf 055c CALL 0x055c // Wait for DMA control reg 03f1 00de 0b9c LR $30, @0x0b9c 03f3 2ece SRS @DSMAH, $30 03f4 00de 0b9d LR $30, @0x0b9d 03f6 2ecf SRS @DSMAL, $30 03f7 16cd 0cc0 SI @DSPA, #0x0cc0 03f9 16c9 0000 SI @DSCR, #0x0000 03fb 16cb 0040 SI @DSBL, #0x0040 03fd 02bf 055c CALL 0x055c // Wait for DMA control reg // wait for DMA 03ff 00c0 0e07 LR $0, @0x0e07 0401 029f 0248 JMP 0x0248 // Opcode3() - "self calling" 0403 009f 0ce0 LRI $31, #0x0ce0 // <<< branch from 03da 0405 00ff 0e42 SR @0x0e42, $31 0407 00ff 0e40 SR @0x0e40, $31 0409 00ff 0e41 SR @0x0e41, $31 040b 00ff 0e43 SR @0x0e43, $31 040d 02bf 055c CALL 0x055c // Wait for DMA control reg 040f 00c0 0e07 LR $0, @0x0e07 0411 029f 0248 JMP 0x0248 // Opcode3() - "self calling" // Opcode_04() - do a DMA transfer 0413 8e00 S40 0414 0086 0400 LRI $6, #0x0400 0416 8100 CLR $30 0417 8970 CLR.L $31 : $30, @$0 0418 191c LRRI $28, @$0 0419 2ece SRS @DSMAH, $30 041a 2ccf SRS @DSMAL, $28 041b 1fc6 MRR $30, $6 041c 2ecd SRS @DSPA, $30 041d 16c9 0001 SI @DSCR, #0x0001 041f 16cb 0780 SI @DSBL, #0x0780 0421 02bf 055c CALL 0x055c // Wait for DMA control reg 0423 02bf 0484 CALL 0x0484 0425 029f 0068 JMP 0x0068 // Return to message loop. // DMA soemthing back to RAM // Opcode_05() - do another DMA transfer 0427 8e00 S40 0428 0086 07c0 LRI $6, #0x07c0 042a 8100 CLR $30 042b 8970 CLR.L $31 : $30, @$0 042c 191c LRRI $28, @$0 042d 2ece SRS @DSMAH, $30 042e 2ccf SRS @DSMAL, $28 042f 1fc6 MRR $30, $6 0430 2ecd SRS @DSPA, $30 0431 16c9 0001 SI @DSCR, #0x0001 0433 16cb 0780 SI @DSBL, #0x0780 0435 02bf 055c CALL 0x055c // Wait for DMA control reg 0437 02bf 0484 CALL 0x0484 0439 029f 0068 JMP 0x0068 // Return to message loop. ///////////////////////////////////// // DMA the sound buffer back to RAM // Opcode_14() // called by CT // 043b 8c00 CLR15 043c 8a00 M2 // send the 0x280 to 0x500 to CPU RAM 043d 8100 CLR $30 043e 8970 CLR.L $31 : $30, @$0 043f 191f LRRI $31, @$0 0440 2ece SRS @DSMAH, $30 0441 2fcf SRS @DSMAL, $31 0442 16cd 0280 SI @DSPA, #0x0280 0444 16c9 0001 SI @DSCR, #0x0001 0446 16cb 0280 SI @DSBL, #0x0280 0448 8f50 S16.L : $26, @$0 0449 8140 CLR.L $30 : $24, @$0 044a 0081 0400 LRI $1, #0x0400 044c 0083 0000 LRI $3, #0x0000 044e 0082 0140 LRI $2, #0x0140 0450 0099 0080 LRI $25, #0x0080 0452 02bf 055c CALL 0x055c // Wait for DMA control reg // interleave loop and DMA the buffer to CPU... call innerloop 5 times (5 * 32Byte) 0454 1105 046c BLOOPI #0x05, 0x046c 0456 1f61 MRR $27, $1 // interleave 32 shorts (from left and right buffer) 0457 1120 045e BLOOPI #0x20, 0x045e 0459 8972 CLR.L $31 : $30, @$2 045a 195c LRRI $28, @$2 045b f07b LSL16.L $30 : $31, @$3 045c 197d LRRI $29, @$3 045d f131 LSL16.S $31 : @$1, $30 045e 8139 CLR.S $30 : @$1, $31 // end: innerloop 045f 8900 CLR $31 0460 6800 MOVAX $30, $24 0461 2ece SRS @DSMAH, $30 0462 2ccf SRS @DSMAL, $28 0463 1ffb MRR $31, $27 0464 2fcd SRS @DSPA, $31 0465 0f01 LRIS $31, #0x01 0466 2fc9 SRS @DSCR, $31 0467 1ff9 MRR $31, $25 // $25 is const 0x80 0468 2fcb SRS @DSBL, $31 0469 7200 ADDAXL $30, $25 046a 1f5e MRR $26, $30 046b 1f1c MRR $24, $28 046c 8100 CLR $30 // end: outerloop (strange because shouldnt we wait to the DMA transfer all the time??) 046d 26c9 LRS $30, @DSCR 046e 02a0 0004 ANDCF $30, #0x0004 0470 029c 046d JZR 0x046d // wait for DMA loop 0472 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_11() - not implemented 0474 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_12() - not implemented 0476 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_10() - not implemented 0478 029f 0068 JMP 0x0068 // Return to message loop. // Opcode_15() // end AX List command (write the 0xDCD10002 that we .ave executed the s.it) 047a 16fc dcd1 SI @DMBH, #0xdcd1 047c 16fd 0002 SI @DMBL, #0x0002 047e 16fb 0001 SI @DIRQ, #0x0001 0480 029f 0c91 JMP 0x0c91 // looks like unused code 0482 029f 0045 JMP 0x0045 // no idea... it usesd for several opcodes // Opcode_04(), Opcode_05() and Opcode_09() calls it // per.aps some kind of filter?? 0484 8e00 S40 0485 191f LRRI $31, @$0 0486 191d LRRI $29, @$0 0487 1f5f MRR $26, $31 0488 1f1d MRR $24, $29 0489 2fce SRS @DSMAH, $31 048a 2dcf SRS @DSMAL, $29 048b 8900 CLR $31 048c 1fa6 MRR $29, $6 048d 2dcd SRS @DSPA, $29 048e 0e00 LRIS $30, #0x00 048f 2ec9 SRS @DSCR, $30 0490 8100 CLR $30 0491 009c 00c0 LRI $28, #0x00c0 0493 2ccb SRS @DSBL, $28 0494 1ca0 MRR $5, $0 0495 0081 0e44 LRI $1, #0x0e44 0497 4800 ADDAX $30, $24 0498 1b3e SRRI @$1, $30 0499 1b3c SRRI @$1, $28 049a 0b00 LRIS $27, #0x00 049b 0099 0060 LRI $25, #0x0060 049d 4b00 ADDAX $31, $25 049e 1b3d SRRI @$1, $29 049f 0081 0e44 LRI $1, #0x0e44 04a1 1c06 MRR $0, $6 04a2 0083 0000 LRI $3, #0x0000 04a4 1c43 MRR $2, $3 04a5 27c9 LRS $31, @DSCR 04a6 03a0 0004 ANDCF $31, #0x0004 04a8 029c 04a5 JZR 0x04a5 // wait for DMA loop 04aa 1109 04da BLOOPI #0x09, 0x04da 04ac 8e00 S40 04ad 193a LRRI $26, @$1 04ae 1938 LRRI $24, @$1 04af 6900 MOVAX $31, $24 04b0 2fce SRS @DSMAH, $31 04b1 2dcf SRS @DSMAL, $29 04b2 8900 CLR $31 04b3 193d LRRI $29, @$1 04b4 2dcd SRS @DSPA, $29 04b5 16c9 0000 SI @DSCR, #0x0000 04b7 8100 CLR $30 04b8 009c 00c0 LRI $28, #0x00c0 04ba 2ccb SRS @DSBL, $28 04bb 0081 0e44 LRI $1, #0x0e44 04bd 4800 ADDAX $30, $24 04be 1b3e SRRI @$1, $30 04bf 1b3c SRRI @$1, $28 04c0 0b00 LRIS $27, #0x00 04c1 0960 LRIS $25, #0x60 04c2 4b00 ADDAX $31, $25 04c3 1b3d SRRI @$1, $29 04c4 0081 0e44 LRI $1, #0x0e44 04c6 8f00 S16 04c7 80f0 NX.LDX : $25, $27, @$1 04c8 80c0 NX.LDX : $24, $26, @$0 04c9 6a00 MOVAX $30, $25 04ca 4800 ADDAX $30, $24 04cb 1117 04d4 BLOOPI #0x17, 0x04d4 04cd 80f0 NX.LDX : $25, $27, @$1 04ce 80c0 NX.LDX : $24, $26, @$0 04cf 6b32 MOVAX.S $31, $25 : @$2, $30 04d0 4922 ADDAX.S $31, $24 : @$2, $28 04d1 80f0 NX.LDX : $25, $27, @$1 04d2 80c0 NX.LDX : $24, $26, @$0 04d3 6a3a MOVAX.S $30, $25 : @$2, $31 04d4 482a ADDAX.S $30, $24 : @$2, $29 04d5 80f0 NX.LDX : $25, $27, @$1 04d6 80c0 NX.LDX : $24, $26, @$0 04d7 6b32 MOVAX.S $31, $25 : @$2, $30 04d8 4922 ADDAX.S $31, $24 : @$2, $28 04d9 1b5f SRRI @$2, $31 04da 1b5d SRRI @$2, $29 04db 80f0 NX.LDX : $25, $27, @$1 04dc 80c0 NX.LDX : $24, $26, @$0 04dd 6a00 MOVAX $30, $25 04de 4800 ADDAX $30, $24 04df 1117 04e8 BLOOPI #0x17, 0x04e8 04e1 80f0 NX.LDX : $25, $27, @$1 04e2 80c0 NX.LDX : $24, $26, @$0 04e3 6b32 MOVAX.S $31, $25 : @$2, $30 04e4 4922 ADDAX.S $31, $24 : @$2, $28 04e5 80f0 NX.LDX : $25, $27, @$1 04e6 80c0 NX.LDX : $24, $26, @$0 04e7 6a3a MOVAX.S $30, $25 : @$2, $31 04e8 482a ADDAX.S $30, $24 : @$2, $29 04e9 80f0 NX.LDX : $25, $27, @$1 04ea 80c0 NX.LDX : $24, $26, @$0 04eb 6b32 MOVAX.S $31, $25 : @$2, $30 04ec 4922 ADDAX.S $31, $24 : @$2, $28 04ed 1b5f SRRI @$2, $31 04ee 1b5d SRRI @$2, $29 04ef 1c05 MRR $0, $5 04f0 02df RET // Called by opcode1 04f1 8e00 S40 04f2 009b 0e44 LRI $27, #0x0e44 04f4 009d 00c0 LRI $29, #0x00c0 04f6 02bf 0541 CALL 0x0541 // Do DMA 04f8 4900 ADDAX $31, $24 04f9 00ff 0e1d SR @0x0e1d, $31 04fb 00fd 0e1e SR @0x0e1e, $29 04fd 8900 CLR $31 04fe 02bf 055c CALL 0x055c // Wait for DMA control reg 0500 1104 052c BLOOPI #0x04, 0x052c 0502 00da 0e1d LR $26, @0x0e1d 0504 00d8 0e1e LR $24, @0x0e1e 0506 009b 0ea4 LRI $27, #0x0ea4 0508 009d 00c0 LRI $29, #0x00c0 050a 02bf 0541 CALL 0x0541 // Do DMA 050c 4900 ADDAX $31, $24 050d 00ff 0e1d SR @0x0e1d, $31 050f 00fd 0e1e SR @0x0e1e, $29 0511 0083 0e44 LRI $3, #0x0e44 0513 02bf 054c CALL 0x054c 0515 8900 CLR $31 0516 00da 0e1d LR $26, @0x0e1d 0518 00d8 0e1e LR $24, @0x0e1e 051a 009b 0e44 LRI $27, #0x0e44 051c 009d 00c0 LRI $29, #0x00c0 051e 02bf 0541 CALL 0x0541 // Do DMA 0520 4900 ADDAX $31, $24 0521 00ff 0e1d SR @0x0e1d, $31 0523 00fd 0e1e SR @0x0e1e, $29 0525 0083 0ea4 LRI $3, #0x0ea4 0527 02bf 054c CALL 0x054c 0529 0000 NOP 052a 0000 NOP 052b 8e00 S40 052c 8900 CLR $31 052d 00da 0e1d LR $26, @0x0e1d 052f 00d8 0e1e LR $24, @0x0e1e 0531 009b 0ea4 LRI $27, #0x0ea4 0533 009d 00c0 LRI $29, #0x00c0 0535 02bf 0541 CALL 0x0541 // Do DMA 0537 4900 ADDAX $31, $24 0538 0083 0e44 LRI $3, #0x0e44 053a 02bf 054c CALL 0x054c 053c 0083 0ea4 LRI $3, #0x0ea4 053e 02bf 054c CALL 0x054c 0540 02df RET // some code to DMA stuff... 0541 8e00 S40 0542 00fa ffce SR @DSMAH, $26 0544 00f8 ffcf SR @DSMAL, $24 0546 00fb ffcd SR @DSPA, $27 0548 16c9 0000 SI @DSCR, #0x0000 054a 2dcb SRS @DSBL, $29 054b 02df RET // function / some kind of loop to modify a sample? 054c 8f00 S16 054d 8d00 SET15 054e 8a00 M2 054f 197a LRRI $26, @$3 0550 1978 LRRI $24, @$3 0551 a000 MULX $24, $25 0552 b600 MULXMV $26, $25, $30 0553 1130 055a BLOOPI #0x30, 0x055a 0555 9179 ASR16.L $30 : $31, @$1 0556 4e6d ADDP.LN $30 : $29, @$1 0557 197a LRRI $26, @$3 0558 4d43 ADD.L $31, $30 : $24, @$3 0559 a039 MULX.S $24, $25 : @$1, $31 055a b629 MULXMV.S $26, $25, $30 : @$1, $29 055b 02df RET // waits for DMA control reg 055c 26c9 LRS $30, @DSCR 055d 02a0 0004 ANDCF $30, #0x0004 055f 029c 055c JZR 0x055c 0561 02df RET // waits for empty CPU mailbox 0562 26fe LRS $30, @CMBH 0563 02c0 8000 ANDF $30, #0x8000 0565 029c 0562 JZR 0x0562 0567 02df RET // waits for empty DSP mailbox 0568 26fc LRS $30, @DMBH 0569 02a0 8000 ANDCF $30, #0x8000 056b 029c 0568 JZR 0x0568 056d 02df RET // same function two times... strange ^^ // waits for empty DSP mailbox 056e 26fc LRS $30, @DMBH 056f 02a0 8000 ANDCF $30, #0x8000 0571 029c 056e JZR 0x056e 0573 02df RET // Opcode_07() 0574 8100 CLR $30 0575 8970 CLR.L $31 : $30, @$0 0576 8e60 S40.L : $28, @$0 0577 2ece SRS @DSMAH, $30 0578 2ccf SRS @DSMAL, $28 0579 16cd 0e44 SI @DSPA, #0x0e44 057b 16c9 0000 SI @DSCR, #0x0000 057d 8900 CLR $31 057e 0d20 LRIS $29, #0x20 057f 2dcb SRS @DSBL, $29 0580 4c00 ADD $30, $31 0581 1c80 MRR $4, $0 0582 0080 0280 LRI $0, #0x0280 0584 0081 0000 LRI $1, #0x0000 0586 0082 0140 LRI $2, #0x0140 0588 0083 0e44 LRI $3, #0x0e44 058a 0a00 LRIS $26, #0x00 058b 27c9 LRS $31, @DSCR 058c 03a0 0004 ANDCF $31, #0x0004 058e 029c 058b JZR 0x058b // wait for DMA loop 0590 2ece SRS @DSMAH, $30 0591 2ccf SRS @DSMAL, $28 0592 16cd 0e54 SI @DSPA, #0x0e54 0594 16c9 0000 SI @DSCR, #0x0000 0596 16cb 0260 SI @DSBL, #0x0260 0598 009f 00a0 LRI $31, #0x00a0 059a 8f00 S16 059b 007f 05a4 BLOOP $31, 0x05a4 059d 197e LRRI $30, @$3 059e 1b1a SRRI @$0, $26 059f 197c LRRI $28, @$3 05a0 1b1a SRRI @$0, $26 05a1 1b5e SRRI @$2, $30 05a2 1b5c SRRI @$2, $28 05a3 1b3e SRRI @$1, $30 05a4 1b3c SRRI @$1, $28 05a5 1c04 MRR $0, $4 05a6 029f 0068 JMP 0x0068 // Return to message loop. // Decoder_ADPCM() 05a8 0082 0bb8 LRI $2, #0x0bb8 05aa 195e LRRI $30, @$2 05ab 2ed1 SRS @SampleFormat, $30 05ac 195e LRRI $30, @$2 05ad 2ed4 SRS @ACSAH, $30 05ae 195e LRRI $30, @$2 05af 2ed5 SRS @ACSAL, $30 05b0 195e LRRI $30, @$2 05b1 2ed6 SRS @ACEAH, $30 05b2 195e LRRI $30, @$2 05b3 2ed7 SRS @ACEAL, $30 05b4 195e LRRI $30, @$2 05b5 2ed8 SRS @ACCAH, $30 05b6 195e LRRI $30, @$2 05b7 2ed9 SRS @ACCAL, $30 05b8 195e LRRI $30, @$2 05b9 2ea0 SRS @COEF_A1_0, $30 05ba 195e LRRI $30, @$2 05bb 2ea1 SRS @COEF_A2_0, $30 05bc 195e LRRI $30, @$2 05bd 2ea2 SRS @COEF_A1_1, $30 05be 195e LRRI $30, @$2 05bf 2ea3 SRS @COEF_A2_1, $30 05c0 195e LRRI $30, @$2 05c1 2ea4 SRS @COEF_A1_2, $30 05c2 195e LRRI $30, @$2 05c3 2ea5 SRS @COEF_A2_2, $30 05c4 195e LRRI $30, @$2 05c5 2ea6 SRS @COEF_A1_3, $30 05c6 195e LRRI $30, @$2 05c7 2ea7 SRS @COEF_A2_3, $30 05c8 195e LRRI $30, @$2 05c9 2ea8 SRS @COEF_A1_4, $30 05ca 195e LRRI $30, @$2 05cb 2ea9 SRS @COEF_A2_4, $30 05cc 195e LRRI $30, @$2 05cd 2eaa SRS @COEF_A1_5, $30 05ce 195e LRRI $30, @$2 05cf 2eab SRS @COEF_A2_5, $30 05d0 195e LRRI $30, @$2 05d1 2eac SRS @COEF_A1_6, $30 05d2 195e LRRI $30, @$2 05d3 2ead SRS @COEF_A2_6, $30 05d4 195e LRRI $30, @$2 05d5 2eae SRS @COEF_A1_7, $30 05d6 195e LRRI $30, @$2 05d7 2eaf SRS @COEF_A2_7, $30 05d8 195e LRRI $30, @$2 05d9 2ede SRS @GAIN, $30 05da 195e LRRI $30, @$2 05db 2eda SRS @pred_scale, $30 05dc 195e LRRI $30, @$2 05dd 2edb SRS @yn1, $30 05de 195e LRRI $30, @$2 05df 2edc SRS @yn2, $30 05e0 8c00 CLR15 05e1 8a00 M2 05e2 8e00 S40 05e3 00d8 0e16 LR $24, @0x0e16 // get COEF Table 05e5 195b LRRI $27, @$2 05e6 1959 LRRI $25, @$2 05e7 8100 CLR $30 05e8 195c LRRI $28, @$2 05e9 0080 0e44 LRI $0, #0x0e44 05eb 195f LRRI $31, @$2 05ec 1b1f SRRI @$0, $31 05ed 195f LRRI $31, @$2 05ee 1b1f SRRI @$0, $31 05ef 195f LRRI $31, @$2 05f0 1b1f SRRI @$0, $31 05f1 185f LRR $31, @$2 05f2 1b1f SRRI @$0, $31 05f3 6b00 MOVAX $31, $25 05f4 1505 LSL $33, #0x05 05f5 4d00 ADD $31, $30 05f6 157e LSR $33, #0x3e 05f7 1c9f MRR $4, $31 05f8 1cbd MRR $5, $29 05f9 05e0 ADDIS $33, #0xe0 05fa 9900 ASR16 $31 05fb 7d00 NEG $31 05fc 1cdd MRR $6, $29 05fd 8900 CLR $31 05fe 1fa5 MRR $29, $5 05ff 1502 LSL $33, #0x02 0600 1cbf MRR $5, $31 0601 009a 01fc LRI $26, #0x01fc 0603 009e 0e44 LRI $30, #0x0e44 0605 0081 ffdd LRI $1, #0xffdd 0607 0083 0d80 LRI $3, #0x0d80 0609 0064 061a BLOOP $4, 0x061a 060b 1827 LRR $7, @$1 060c 1b07 SRRI @$0, $7 060d 4a00 ADDAX $30, $25 060e 1ffc MRR $31, $28 060f 1827 LRR $7, @$1 0610 1b07 SRRI @$0, $7 0611 1579 LSR $33, #0x39 0612 3500 ANDR $31, $26 0613 1827 LRR $7, @$1 0614 1b07 SRRI @$0, $7 0615 4100 ADDR $31, $24 0616 1b7e SRRI @$3, $30 0617 1827 LRR $7, @$1 0618 1b07 SRRI @$0, $7 0619 1b7f SRRI @$3, $31 061a 0000 NOP // bloop 0609 061b 0065 0620 BLOOP $5, 0x0620 061d 1827 LRR $7, @$1 061e 1b07 SRRI @$0, $7 061f 0000 NOP 0620 0000 NOP // bloop 061b 0621 0007 DAR $3 0622 187f LRR $31, @$3 0623 0066 0629 BLOOP $6, 0x0629 0625 4a3b ADDAX.S $30, $25 : @$3, $31 0626 1ffc MRR $31, $28 0627 1579 LSR $33, #0x39 0628 3533 ANDR.S $31, $26 : @$3, $30 0629 4100 ADDR $31, $24 // bloop 0623 062a 1b7f SRRI @$3, $31 062b 0004 DAR $0 062c 189f LRRD $31, @$0 062d 1adf SRRD @$2, $31 062e 189f LRRD $31, @$0 062f 1adf SRRD @$2, $31 0630 189f LRRD $31, @$0 0631 1adf SRRD @$2, $31 0632 189f LRRD $31, @$0 0633 1adf SRRD @$2, $31 0634 1adc SRRD @$2, $28 0635 0082 0bd2 LRI $2, #0x0bd2 0637 27dc LRS $31, @yn2 0638 1adf SRRD @$2, $31 0639 27db LRS $31, @yn1 063a 1adf SRRD @$2, $31 063b 27da LRS $31, @pred_scale 063c 1adf SRRD @$2, $31 063d 0082 0bbe LRI $2, #0x0bbe 063f 27d9 LRS $31, @ACCAL 0640 1adf SRRD @$2, $31 0641 27d8 LRS $31, @ACCAH 0642 1adf SRRD @$2, $31 0643 8f00 S16 0644 00c1 0e42 LR $1, @0x0e42 0646 0082 0d80 LRI $2, #0x0d80 0648 1940 LRRI $0, @$2 0649 1943 LRRI $3, @$2 064a 80f0 NX.LDX : $25, $27, @$1 064b b8c0 MULX.LDX $26, $27 : $24, $26, @$0 064c 111f 0654 BLOOPI #0x1f, 0x0654 064e a6f0 MULXMV.LDX $24, $25, $30 : $25, $27, @$1 064f bcf0 MULXAC.LDX $26, $27, $30 : $25, $27, @$1 0650 1940 LRRI $0, @$2 0651 1943 LRRI $3, @$2 0652 bcf0 MULXAC.LDX $26, $27, $30 : $25, $27, @$1 0653 4ec0 ADDP.LDX $30 : $24, $26, @$0 0654 b831 MULX.S $26, $27 : @$1, $30 0655 a6f0 MULXMV.LDX $24, $25, $30 : $25, $27, @$1 0656 bcf0 MULXAC.LDX $26, $27, $30 : $25, $27, @$1 0657 bc00 MULXAC $26, $27, $30 0658 4e00 ADDP $30 0659 1b3e SRRI @$1, $30 065a 00e1 0e42 SR @0x0e42, $1 065c 02df RET // Decoder_PCM8() 065d 0082 0bb8 LRI $2, #0x0bb8 065f 195e LRRI $30, @$2 0660 2ed1 SRS @SampleFormat, $30 0661 195e LRRI $30, @$2 0662 2ed4 SRS @ACSAH, $30 0663 195e LRRI $30, @$2 0664 2ed5 SRS @ACSAL, $30 0665 195e LRRI $30, @$2 0666 2ed6 SRS @ACEAH, $30 0667 195e LRRI $30, @$2 0668 2ed7 SRS @ACEAL, $30 0669 195e LRRI $30, @$2 066a 2ed8 SRS @ACCAH, $30 066b 195e LRRI $30, @$2 066c 2ed9 SRS @ACCAL, $30 066d 195e LRRI $30, @$2 066e 2ea0 SRS @COEF_A1_0, $30 066f 195e LRRI $30, @$2 0670 2ea1 SRS @COEF_A2_0, $30 0671 195e LRRI $30, @$2 0672 2ea2 SRS @COEF_A1_1, $30 0673 195e LRRI $30, @$2 0674 2ea3 SRS @COEF_A2_1, $30 0675 195e LRRI $30, @$2 0676 2ea4 SRS @COEF_A1_2, $30 0677 195e LRRI $30, @$2 0678 2ea5 SRS @COEF_A2_2, $30 0679 195e LRRI $30, @$2 067a 2ea6 SRS @COEF_A1_3, $30 067b 195e LRRI $30, @$2 067c 2ea7 SRS @COEF_A2_3, $30 067d 195e LRRI $30, @$2 067e 2ea8 SRS @COEF_A1_4, $30 067f 195e LRRI $30, @$2 0680 2ea9 SRS @COEF_A2_4, $30 0681 195e LRRI $30, @$2 0682 2eaa SRS @COEF_A1_5, $30 0683 195e LRRI $30, @$2 0684 2eab SRS @COEF_A2_5, $30 0685 195e LRRI $30, @$2 0686 2eac SRS @COEF_A1_6, $30 0687 195e LRRI $30, @$2 0688 2ead SRS @COEF_A2_6, $30 0689 195e LRRI $30, @$2 068a 2eae SRS @COEF_A1_7, $30 068b 195e LRRI $30, @$2 068c 2eaf SRS @COEF_A2_7, $30 068d 195e LRRI $30, @$2 068e 2ede SRS @GAIN, $30 068f 195e LRRI $30, @$2 0690 2eda SRS @pred_scale, $30 0691 195e LRRI $30, @$2 0692 2edb SRS @yn1, $30 0693 195e LRRI $30, @$2 0694 2edc SRS @yn2, $30 0695 8c00 CLR15 0696 8a00 M2 0697 8e00 S40 0698 195b LRRI $27, @$2 0699 1959 LRRI $25, @$2 069a 8100 CLR $30 069b 195c LRRI $28, @$2 069c 0080 0e44 LRI $0, #0x0e44 069e 195f LRRI $31, @$2 069f 195f LRRI $31, @$2 06a0 195f LRRI $31, @$2 06a1 1b1f SRRI @$0, $31 06a2 185f LRR $31, @$2 06a3 1b1f SRRI @$0, $31 06a4 6b00 MOVAX $31, $25 06a5 1505 LSL $33, #0x05 06a6 4d00 ADD $31, $30 06a7 157e LSR $33, #0x3e 06a8 1c9f MRR $4, $31 06a9 1cbd MRR $5, $29 06aa 05e0 ADDIS $33, #0xe0 06ab 9900 ASR16 $31 06ac 7d00 NEG $31 06ad 1cdd MRR $6, $29 06ae 8900 CLR $31 06af 1fa5 MRR $29, $5 06b0 1502 LSL $33, #0x02 06b1 1cbf MRR $5, $31 06b2 009a 01fc LRI $26, #0x01fc 06b4 009e 0e45 LRI $30, #0x0e45 06b6 0081 ffdd LRI $1, #0xffdd 06b8 0083 0d80 LRI $3, #0x0d80 06ba 0064 06cb BLOOP $4, 0x06cb 06bc 1827 LRR $7, @$1 06bd 1b07 SRRI @$0, $7 06be 4a00 ADDAX $30, $25 06bf 1b7e SRRI @$3, $30 06c0 1827 LRR $7, @$1 06c1 1b07 SRRI @$0, $7 06c2 1b7c SRRI @$3, $28 06c3 0000 NOP 06c4 1827 LRR $7, @$1 06c5 1b07 SRRI @$0, $7 06c6 0000 NOP 06c7 0000 NOP 06c8 1827 LRR $7, @$1 06c9 1b07 SRRI @$0, $7 06ca 0000 NOP 06cb 0000 NOP 06cc 0065 06d1 BLOOP $5, 0x06d1 06ce 1827 LRR $7, @$1 06cf 1b07 SRRI @$0, $7 06d0 0000 NOP 06d1 0000 NOP 06d2 0066 06d6 BLOOP $6, 0x06d6 06d4 4a00 ADDAX $30, $25 06d5 1b7e SRRI @$3, $30 06d6 1b7c SRRI @$3, $28 06d7 0004 DAR $0 06d8 189f LRRD $31, @$0 06d9 1adf SRRD @$2, $31 06da 189f LRRD $31, @$0 06db 1adf SRRD @$2, $31 06dc 189f LRRD $31, @$0 06dd 1adf SRRD @$2, $31 06de 189f LRRD $31, @$0 06df 1adf SRRD @$2, $31 06e0 1adc SRRD @$2, $28 06e1 0082 0bd2 LRI $2, #0x0bd2 06e3 27dc LRS $31, @yn2 06e4 1adf SRRD @$2, $31 06e5 27db LRS $31, @yn1 06e6 1adf SRRD @$2, $31 06e7 27da LRS $31, @pred_scale 06e8 1adf SRRD @$2, $31 06e9 0082 0bbe LRI $2, #0x0bbe 06eb 27d9 LRS $31, @ACCAL 06ec 1adf SRRD @$2, $31 06ed 27d8 LRS $31, @ACCAH 06ee 1adf SRRD @$2, $31 06ef 8d00 SET15 06f0 8b00 M0 06f1 8f00 S16 06f2 00c1 0e42 LR $1, @0x0e42 06f4 0082 0d80 LRI $2, #0x0d80 06f6 8100 CLR $30 06f7 1120 0703 BLOOPI #0x20, 0x0703 06f9 8900 CLR $31 06fa 1940 LRRI $0, @$2 06fb 189e LRRD $30, @$0 06fc 181b LRR $27, @$0 06fd 199a LRRN $26, @$0 06fe 5400 SUBR $30, $26 06ff 1f5e MRR $26, $30 0700 1959 LRRI $25, @$2 0701 b000 MULX $26, $25 0702 fb00 ADDPAXZ $31, $27 0703 8139 CLR.S $30 : @$1, $31 0704 00e1 0e42 SR @0x0e42, $1 0706 02df RET // Decoder_PCM16() 0707 0082 0bb8 LRI $2, #0x0bb8 0709 195e LRRI $30, @$2 070a 2ed1 SRS @SampleFormat, $30 070b 195e LRRI $30, @$2 070c 2ed4 SRS @ACSAH, $30 070d 195e LRRI $30, @$2 070e 2ed5 SRS @ACSAL, $30 070f 195e LRRI $30, @$2 0710 2ed6 SRS @ACEAH, $30 0711 195e LRRI $30, @$2 0712 2ed7 SRS @ACEAL, $30 0713 195e LRRI $30, @$2 0714 2ed8 SRS @ACCAH, $30 0715 195e LRRI $30, @$2 0716 2ed9 SRS @ACCAL, $30 0717 195e LRRI $30, @$2 0718 2ea0 SRS @COEF_A1_0, $30 0719 195e LRRI $30, @$2 071a 2ea1 SRS @COEF_A2_0, $30 071b 195e LRRI $30, @$2 071c 2ea2 SRS @COEF_A1_1, $30 071d 195e LRRI $30, @$2 071e 2ea3 SRS @COEF_A2_1, $30 071f 195e LRRI $30, @$2 0720 2ea4 SRS @COEF_A1_2, $30 0721 195e LRRI $30, @$2 0722 2ea5 SRS @COEF_A2_2, $30 0723 195e LRRI $30, @$2 0724 2ea6 SRS @COEF_A1_3, $30 0725 195e LRRI $30, @$2 0726 2ea7 SRS @COEF_A2_3, $30 0727 195e LRRI $30, @$2 0728 2ea8 SRS @COEF_A1_4, $30 0729 195e LRRI $30, @$2 072a 2ea9 SRS @COEF_A2_4, $30 072b 195e LRRI $30, @$2 072c 2eaa SRS @COEF_A1_5, $30 072d 195e LRRI $30, @$2 072e 2eab SRS @COEF_A2_5, $30 072f 195e LRRI $30, @$2 0730 2eac SRS @COEF_A1_6, $30 0731 195e LRRI $30, @$2 0732 2ead SRS @COEF_A2_6, $30 0733 195e LRRI $30, @$2 0734 2eae SRS @COEF_A1_7, $30 0735 195e LRRI $30, @$2 0736 2eaf SRS @COEF_A2_7, $30 0737 195e LRRI $30, @$2 0738 2ede SRS @GAIN, $30 0739 195e LRRI $30, @$2 073a 2eda SRS @pred_scale, $30 073b 195e LRRI $30, @$2 073c 2edb SRS @yn1, $30 073d 195e LRRI $30, @$2 073e 2edc SRS @yn2, $30 073f 00c0 0e42 LR $0, @0x0e42 0741 0081 ffdd LRI $1, #0xffdd 0743 1120 0748 BLOOPI #0x20, 0x0748 0745 1824 LRR $4, @$1 0746 1b04 SRRI @$0, $4 0747 0000 NOP 0748 0000 NOP 0749 00e0 0e42 SR @0x0e42, $0 074b 0082 0bd9 LRI $2, #0x0bd9 074d 0004 DAR $0 074e 189f LRRD $31, @$0 074f 1adf SRRD @$2, $31 0750 189f LRRD $31, @$0 0751 1adf SRRD @$2, $31 0752 189f LRRD $31, @$0 0753 1adf SRRD @$2, $31 0754 189f LRRD $31, @$0 0755 1adf SRRD @$2, $31 0756 8900 CLR $31 0757 1adc SRRD @$2, $28 0758 27dc LRS $31, @yn2 0759 00ff 0bd2 SR @0x0bd2, $31 075b 27db LRS $31, @yn1 075c 00ff 0bd1 SR @0x0bd1, $31 075e 27da LRS $31, @pred_scale 075f 00ff 0bd0 SR @0x0bd0, $31 0761 27d9 LRS $31, @ACCAL 0762 00ff 0bbe SR @0x0bbe, $31 0764 27d8 LRS $31, @ACCAH 0765 00ff 0bbd SR @0x0bbd, $31 0767 02df RET //////////////////////////////////////////////// // // Mixer functions - calls ROM functions // //////////////////////////////////////////////// // fn0 // this mixer is used by CrazyTaxi (at least at the beginning) // per.aps for mono sample?? 0768 00c0 0e40 LR $0, @0x0e40 // PB->PBInitialTimeDelay->offsetLeft 076a 0081 0b89 LRI $1, #0x0b89 // PB->Mixer... struct offset 076c 00c2 0e08 LR $2, @0x0e08 // Buffer1 (0x0000 all the time) 076e 1c62 MRR $3, $2 // Buffer2 076f 00c4 0e41 LR $4, @0x0e41 // PB->PBInitialTimeDelay->offsetRight 0771 00c5 0e09 LR $5, @0x0e09 // Buffer3 (0x0140 all the time) 0773 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0775 00f8 0ba9 SR @0x0ba9, $24 // mixer return value1 0777 00fb 0bac SR @0x0bac, $27 // mixer return value2 0779 02df RET // fn1 077a 00c0 0e40 LR $0, @0x0e40 077c 0081 0b89 LRI $1, #0x0b89 // PB mixer settings // PB mixer settings 077e 00c2 0e08 LR $2, @0x0e08 0780 1c62 MRR $3, $2 0781 00c4 0e41 LR $4, @0x0e41 0783 00c5 0e09 LR $5, @0x0e09 0785 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0787 00f8 0ba9 SR @0x0ba9, $24 0789 00fb 0bac SR @0x0bac, $27 078b 00c0 0e40 LR $0, @0x0e40 078d 0081 0b8d LRI $1, #0x0b8d 078f 00c2 0e0b LR $2, @0x0e0b 0791 1c62 MRR $3, $2 0792 00c4 0e41 LR $4, @0x0e41 0794 00c5 0e0c LR $5, @0x0e0c 0796 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0798 00f8 0baa SR @0x0baa, $24 079a 00fb 0bad SR @0x0bad, $27 079c 02df RET // fn2 079d 00c0 0e40 LR $0, @0x0e40 079f 0081 0b89 LRI $1, #0x0b89 // PB mixer settings // PB mixer settings 07a1 00c2 0e08 LR $2, @0x0e08 07a3 1c62 MRR $3, $2 07a4 00c4 0e41 LR $4, @0x0e41 07a6 00c5 0e09 LR $5, @0x0e09 07a8 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 07aa 00f8 0ba9 SR @0x0ba9, $24 07ac 00fb 0bac SR @0x0bac, $27 07ae 00c0 0e40 LR $0, @0x0e40 07b0 0081 0b91 LRI $1, #0x0b91 07b2 00c2 0e0e LR $2, @0x0e0e 07b4 1c62 MRR $3, $2 07b5 00c4 0e41 LR $4, @0x0e41 07b7 00c5 0e0f LR $5, @0x0e0f 07b9 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 07bb 00f8 0bab SR @0x0bab, $24 07bd 00fb 0bae SR @0x0bae, $27 07bf 02df RET // fn3 07c0 00c0 0e40 LR $0, @0x0e40 07c2 0081 0b89 LRI $1, #0x0b89 // PB mixer settings // PB mixer settings 07c4 00c2 0e08 LR $2, @0x0e08 07c6 1c62 MRR $3, $2 07c7 00c4 0e41 LR $4, @0x0e41 07c9 00c5 0e09 LR $5, @0x0e09 07cb 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 07cd 00f8 0ba9 SR @0x0ba9, $24 07cf 00fb 0bac SR @0x0bac, $27 07d1 00c0 0e40 LR $0, @0x0e40 07d3 0081 0b8d LRI $1, #0x0b8d 07d5 00c2 0e0b LR $2, @0x0e0b 07d7 1c62 MRR $3, $2 07d8 00c4 0e41 LR $4, @0x0e41 07da 00c5 0e0c LR $5, @0x0e0c 07dc 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 07de 00f8 0baa SR @0x0baa, $24 07e0 00fb 0bad SR @0x0bad, $27 07e2 00c0 0e40 LR $0, @0x0e40 07e4 0081 0b91 LRI $1, #0x0b91 07e6 00c2 0e0e LR $2, @0x0e0e 07e8 1c62 MRR $3, $2 07e9 00c4 0e41 LR $4, @0x0e41 07eb 00c5 0e0f LR $5, @0x0e0f 07ed 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 07ef 00f8 0bab SR @0x0bab, $24 07f1 00fb 0bae SR @0x0bae, $27 07f3 02df RET // fn4 07f4 00c0 0e40 LR $0, @0x0e40 07f6 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 07f8 00c2 0e08 LR $2, @0x0e08 07fa 1c62 MRR $3, $2 07fb 00c4 0e41 LR $4, @0x0e41 07fd 00c5 0e09 LR $5, @0x0e09 07ff 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0801 00f8 0ba9 SR @0x0ba9, $24 0803 00fb 0bac SR @0x0bac, $27 0805 00c0 0e43 LR $0, @0x0e43 0807 0081 0b97 LRI $1, #0x0b97 0809 00c2 0e0a LR $2, @0x0e0a 080b 1c62 MRR $3, $2 080c 02bf 81f9 CALL 0x81f9 // Call second ROM mixer function 080e 00f8 0baf SR @0x0baf, $24 0810 02df RET // xxxx 0811 00c0 0e40 LR $0, @0x0e40 0813 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0815 00c2 0e08 LR $2, @0x0e08 0817 1c62 MRR $3, $2 0818 00c4 0e41 LR $4, @0x0e41 081a 00c5 0e09 LR $5, @0x0e09 081c 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 081e 00f8 0ba9 SR @0x0ba9, $24 0820 00fb 0bac SR @0x0bac, $27 0822 00c0 0e40 LR $0, @0x0e40 0824 0081 0b8d LRI $1, #0x0b8d 0826 00c2 0e0b LR $2, @0x0e0b 0828 1c62 MRR $3, $2 0829 00c4 0e41 LR $4, @0x0e41 082b 00c5 0e0c LR $5, @0x0e0c 082d 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 082f 00f8 0baa SR @0x0baa, $24 0831 00fb 0bad SR @0x0bad, $27 0833 00c0 0e43 LR $0, @0x0e43 0835 0081 0b97 LRI $1, #0x0b97 0837 00c2 0e0a LR $2, @0x0e0a 0839 1c62 MRR $3, $2 083a 1c80 MRR $4, $0 083b 00c5 0e0d LR $5, @0x0e0d 083d 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 083f 00f8 0baf SR @0x0baf, $24 0841 00fb 0bb0 SR @0x0bb0, $27 0843 02df RET 0844 00c0 0e40 LR $0, @0x0e40 0846 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0848 00c2 0e08 LR $2, @0x0e08 084a 1c62 MRR $3, $2 084b 00c4 0e41 LR $4, @0x0e41 084d 00c5 0e09 LR $5, @0x0e09 084f 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0851 00f8 0ba9 SR @0x0ba9, $24 0853 00fb 0bac SR @0x0bac, $27 0855 00c0 0e40 LR $0, @0x0e40 0857 0081 0b91 LRI $1, #0x0b91 0859 00c2 0e0e LR $2, @0x0e0e 085b 1c62 MRR $3, $2 085c 00c4 0e41 LR $4, @0x0e41 085e 00c5 0e0f LR $5, @0x0e0f 0860 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0862 00f8 0bab SR @0x0bab, $24 0864 00fb 0bae SR @0x0bae, $27 0866 00c0 0e43 LR $0, @0x0e43 0868 0081 0b95 LRI $1, #0x0b95 086a 00c2 0e10 LR $2, @0x0e10 086c 1c62 MRR $3, $2 086d 1c80 MRR $4, $0 086e 00c5 0e0a LR $5, @0x0e0a 0870 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0872 00f8 0bb1 SR @0x0bb1, $24 0874 00fb 0baf SR @0x0baf, $27 0876 02df RET 0877 00c0 0e40 LR $0, @0x0e40 0879 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 087b 00c2 0e08 LR $2, @0x0e08 087d 1c62 MRR $3, $2 087e 00c4 0e41 LR $4, @0x0e41 0880 00c5 0e09 LR $5, @0x0e09 0882 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0884 00f8 0ba9 SR @0x0ba9, $24 0886 00fb 0bac SR @0x0bac, $27 0888 00c0 0e40 LR $0, @0x0e40 088a 0081 0b8d LRI $1, #0x0b8d 088c 00c2 0e0b LR $2, @0x0e0b 088e 1c62 MRR $3, $2 088f 00c4 0e41 LR $4, @0x0e41 0891 00c5 0e0c LR $5, @0x0e0c 0893 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0895 00f8 0baa SR @0x0baa, $24 0897 00fb 0bad SR @0x0bad, $27 0899 00c0 0e40 LR $0, @0x0e40 089b 0081 0b91 LRI $1, #0x0b91 089d 00c2 0e0e LR $2, @0x0e0e 089f 1c62 MRR $3, $2 08a0 00c4 0e41 LR $4, @0x0e41 08a2 00c5 0e0f LR $5, @0x0e0f 08a4 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 08a6 00f8 0bab SR @0x0bab, $24 08a8 00fb 0bae SR @0x0bae, $27 08aa 00c0 0e43 LR $0, @0x0e43 08ac 0081 0b97 LRI $1, #0x0b97 08ae 00c2 0e0a LR $2, @0x0e0a 08b0 1c62 MRR $3, $2 08b1 1c80 MRR $4, $0 08b2 00c5 0e0d LR $5, @0x0e0d 08b4 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 08b6 00f8 0baf SR @0x0baf, $24 08b8 00fb 0bb0 SR @0x0bb0, $27 08ba 00c0 0e43 LR $0, @0x0e43 08bc 0081 0b95 LRI $1, #0x0b95 08be 00c2 0e10 LR $2, @0x0e10 08c0 1c62 MRR $3, $2 08c1 02bf 81f9 CALL 0x81f9 // Call second ROM mixer function 08c3 00f8 0bb1 SR @0x0bb1, $24 08c5 02df RET 08c6 00c0 0e40 LR $0, @0x0e40 08c8 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 08ca 00c2 0e08 LR $2, @0x0e08 08cc 0083 0e44 LRI $3, #0x0e44 08ce 00c4 0e41 LR $4, @0x0e41 08d0 00c5 0e09 LR $5, @0x0e09 08d2 02bf 8282 CALL 0x8282 // Call third ROM mixer function 08d4 00f8 0ba9 SR @0x0ba9, $24 08d6 00fb 0bac SR @0x0bac, $27 08d8 02df RET 08d9 00c0 0e40 LR $0, @0x0e40 08db 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 08dd 00c2 0e08 LR $2, @0x0e08 08df 0083 0e44 LRI $3, #0x0e44 08e1 00c4 0e41 LR $4, @0x0e41 08e3 00c5 0e09 LR $5, @0x0e09 08e5 02bf 8282 CALL 0x8282 // Call third ROM mixer function 08e7 00f8 0ba9 SR @0x0ba9, $24 08e9 00fb 0bac SR @0x0bac, $27 08eb 00c0 0e40 LR $0, @0x0e40 08ed 0081 0b8d LRI $1, #0x0b8d // aux stuff 08ef 00c2 0e0b LR $2, @0x0e0b 08f1 0083 0e44 LRI $3, #0x0e44 08f3 00c4 0e41 LR $4, @0x0e41 08f5 00c5 0e0c LR $5, @0x0e0c 08f7 02bf 8282 CALL 0x8282 // Call third ROM mixer function 08f9 00f8 0baa SR @0x0baa, $24 08fb 00fb 0bad SR @0x0bad, $27 08fd 02df RET 08fe 00c0 0e40 LR $0, @0x0e40 0900 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0902 00c2 0e08 LR $2, @0x0e08 0904 0083 0e44 LRI $3, #0x0e44 0906 00c4 0e41 LR $4, @0x0e41 0908 00c5 0e09 LR $5, @0x0e09 090a 02bf 8282 CALL 0x8282 // Call third ROM mixer function 090c 00f8 0ba9 SR @0x0ba9, $24 090e 00fb 0bac SR @0x0bac, $27 0910 00c0 0e40 LR $0, @0x0e40 0912 0081 0b91 LRI $1, #0x0b91 // aux stuff 0914 00c2 0e0e LR $2, @0x0e0e 0916 0083 0e44 LRI $3, #0x0e44 0918 00c4 0e41 LR $4, @0x0e41 091a 00c5 0e0f LR $5, @0x0e0f 091c 02bf 8282 CALL 0x8282 // Call third ROM mixer function 091e 00f8 0bab SR @0x0bab, $24 0920 00fb 0bae SR @0x0bae, $27 0922 02df RET 0923 00c0 0e40 LR $0, @0x0e40 0925 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0927 00c2 0e08 LR $2, @0x0e08 0929 0083 0e44 LRI $3, #0x0e44 092b 00c4 0e41 LR $4, @0x0e41 092d 00c5 0e09 LR $5, @0x0e09 092f 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0931 00f8 0ba9 SR @0x0ba9, $24 0933 00fb 0bac SR @0x0bac, $27 0935 00c0 0e40 LR $0, @0x0e40 0937 0081 0b8d LRI $1, #0x0b8d 0939 00c2 0e0b LR $2, @0x0e0b 093b 0083 0e44 LRI $3, #0x0e44 093d 00c4 0e41 LR $4, @0x0e41 093f 00c5 0e0c LR $5, @0x0e0c 0941 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0943 00f8 0baa SR @0x0baa, $24 0945 00fb 0bad SR @0x0bad, $27 0947 00c0 0e40 LR $0, @0x0e40 0949 0081 0b91 LRI $1, #0x0b91 094b 00c2 0e0e LR $2, @0x0e0e 094d 0083 0e44 LRI $3, #0x0e44 094f 00c4 0e41 LR $4, @0x0e41 0951 00c5 0e0f LR $5, @0x0e0f 0953 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0955 00f8 0bab SR @0x0bab, $24 0957 00fb 0bae SR @0x0bae, $27 0959 02df RET 095a 00c0 0e40 LR $0, @0x0e40 095c 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 095e 00c2 0e08 LR $2, @0x0e08 0960 0083 0e44 LRI $3, #0x0e44 0962 00c4 0e41 LR $4, @0x0e41 0964 00c5 0e09 LR $5, @0x0e09 0966 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0968 00f8 0ba9 SR @0x0ba9, $24 096a 00fb 0bac SR @0x0bac, $27 096c 00c0 0e43 LR $0, @0x0e43 096e 0081 0b97 LRI $1, #0x0b97 0970 00c2 0e0a LR $2, @0x0e0a 0972 0083 0e44 LRI $3, #0x0e44 0974 02bf 845d CALL 0x845d 0976 00f8 0baf SR @0x0baf, $24 0978 02df RET 0979 00c0 0e40 LR $0, @0x0e40 097b 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 097d 00c2 0e08 LR $2, @0x0e08 097f 0083 0e44 LRI $3, #0x0e44 0981 00c4 0e41 LR $4, @0x0e41 0983 00c5 0e09 LR $5, @0x0e09 0985 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0987 00f8 0ba9 SR @0x0ba9, $24 0989 00fb 0bac SR @0x0bac, $27 098b 00c0 0e40 LR $0, @0x0e40 098d 0081 0b8d LRI $1, #0x0b8d 098f 00c2 0e0b LR $2, @0x0e0b 0991 0083 0e44 LRI $3, #0x0e44 0993 00c4 0e41 LR $4, @0x0e41 0995 00c5 0e0c LR $5, @0x0e0c 0997 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0999 00f8 0baa SR @0x0baa, $24 099b 00fb 0bad SR @0x0bad, $27 099d 00c0 0e43 LR $0, @0x0e43 099f 0081 0b97 LRI $1, #0x0b97 09a1 00c2 0e0a LR $2, @0x0e0a 09a3 0083 0e44 LRI $3, #0x0e44 09a5 1c80 MRR $4, $0 09a6 00c5 0e0d LR $5, @0x0e0d 09a8 02bf 8282 CALL 0x8282 // Call third ROM mixer function 09aa 00f8 0baf SR @0x0baf, $24 09ac 00fb 0bb0 SR @0x0bb0, $27 09ae 02df RET 09af 00c0 0e40 LR $0, @0x0e40 09b1 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 09b3 00c2 0e08 LR $2, @0x0e08 09b5 0083 0e44 LRI $3, #0x0e44 09b7 00c4 0e41 LR $4, @0x0e41 09b9 00c5 0e09 LR $5, @0x0e09 09bb 02bf 8282 CALL 0x8282 // Call third ROM mixer function 09bd 00f8 0ba9 SR @0x0ba9, $24 09bf 00fb 0bac SR @0x0bac, $27 09c1 00c0 0e40 LR $0, @0x0e40 09c3 0081 0b91 LRI $1, #0x0b91 09c5 00c2 0e0e LR $2, @0x0e0e 09c7 0083 0e44 LRI $3, #0x0e44 09c9 00c4 0e41 LR $4, @0x0e41 09cb 00c5 0e0f LR $5, @0x0e0f 09cd 02bf 8282 CALL 0x8282 // Call third ROM mixer function 09cf 00f8 0bab SR @0x0bab, $24 09d1 00fb 0bae SR @0x0bae, $27 09d3 00c0 0e43 LR $0, @0x0e43 09d5 0081 0b95 LRI $1, #0x0b95 09d7 00c2 0e10 LR $2, @0x0e10 09d9 0083 0e44 LRI $3, #0x0e44 09db 1c80 MRR $4, $0 09dc 00c5 0e0a LR $5, @0x0e0a 09de 02bf 8282 CALL 0x8282 // Call third ROM mixer function 09e0 00f8 0bb1 SR @0x0bb1, $24 09e2 00fb 0baf SR @0x0baf, $27 09e4 02df RET 09e5 00c0 0e40 LR $0, @0x0e40 09e7 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 09e9 00c2 0e08 LR $2, @0x0e08 09eb 0083 0e44 LRI $3, #0x0e44 09ed 00c4 0e41 LR $4, @0x0e41 09ef 00c5 0e09 LR $5, @0x0e09 09f1 02bf 8282 CALL 0x8282 // Call third ROM mixer function 09f3 00f8 0ba9 SR @0x0ba9, $24 09f5 00fb 0bac SR @0x0bac, $27 09f7 00c0 0e40 LR $0, @0x0e40 09f9 0081 0b8d LRI $1, #0x0b8d 09fb 00c2 0e0b LR $2, @0x0e0b 09fd 0083 0e44 LRI $3, #0x0e44 09ff 00c0 0e41 LR $0, @0x0e41 0a01 00c5 0e0c LR $5, @0x0e0c 0a03 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0a05 00f8 0baa SR @0x0baa, $24 0a07 00fb 0bad SR @0x0bad, $27 0a09 00c0 0e40 LR $0, @0x0e40 0a0b 0081 0b91 LRI $1, #0x0b91 0a0d 00c2 0e0e LR $2, @0x0e0e 0a0f 0083 0e44 LRI $3, #0x0e44 0a11 00c4 0e41 LR $4, @0x0e41 0a13 00c5 0e0f LR $5, @0x0e0f 0a15 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0a17 00f8 0bab SR @0x0bab, $24 0a19 00fb 0bae SR @0x0bae, $27 0a1b 00c0 0e43 LR $0, @0x0e43 0a1d 0081 0b97 LRI $1, #0x0b97 0a1f 00c2 0e0a LR $2, @0x0e0a 0a21 0083 0e44 LRI $3, #0x0e44 0a23 1c80 MRR $4, $0 0a24 00c5 0e0d LR $5, @0x0e0d 0a26 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0a28 00f8 0baf SR @0x0baf, $24 0a2a 00fb 0bb0 SR @0x0bb0, $27 0a2c 00c0 0e43 LR $0, @0x0e43 0a2e 0081 0b95 LRI $1, #0x0b95 0a30 00c2 0e10 LR $2, @0x0e10 0a32 0083 0e44 LRI $3, #0x0e44 0a34 02bf 845d CALL 0x845d 0a36 00f8 0bb1 SR @0x0bb1, $24 0a38 02df RET 0a39 00c0 0e40 LR $0, @0x0e40 0a3b 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0a3d 00c2 0e08 LR $2, @0x0e08 0a3f 1c62 MRR $3, $2 0a40 00c4 0e41 LR $4, @0x0e41 0a42 00c5 0e09 LR $5, @0x0e09 0a44 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0a46 00f8 0ba9 SR @0x0ba9, $24 0a48 00fb 0bac SR @0x0bac, $27 0a4a 00c0 0e43 LR $0, @0x0e43 0a4c 0081 0b91 LRI $1, #0x0b91 0a4e 00c2 0e0e LR $2, @0x0e0e 0a50 1c62 MRR $3, $2 0a51 1c80 MRR $4, $0 0a52 00c5 0e0f LR $5, @0x0e0f 0a54 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0a56 00f8 0bab SR @0x0bab, $24 0a58 00fb 0bae SR @0x0bae, $27 0a5a 02df RET 0a5b 00c0 0e40 LR $0, @0x0e40 0a5d 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0a5f 00c2 0e08 LR $2, @0x0e08 0a61 1c62 MRR $3, $2 0a62 00c4 0e41 LR $4, @0x0e41 0a64 00c5 0e09 LR $5, @0x0e09 0a66 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0a68 00f8 0ba9 SR @0x0ba9, $24 0a6a 00fb 0bac SR @0x0bac, $27 0a6c 00c0 0e43 LR $0, @0x0e43 0a6e 0081 0b91 LRI $1, #0x0b91 0a70 00c2 0e0e LR $2, @0x0e0e 0a72 1c62 MRR $3, $2 0a73 1c80 MRR $4, $0 0a74 00c5 0e0f LR $5, @0x0e0f 0a76 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0a78 00f8 0bab SR @0x0bab, $24 0a7a 00fb 0bae SR @0x0bae, $27 0a7c 00c0 0e40 LR $0, @0x0e40 0a7e 0081 0b8d LRI $1, #0x0b8d 0a80 00c2 0e0b LR $2, @0x0e0b 0a82 1c62 MRR $3, $2 0a83 00c4 0e41 LR $4, @0x0e41 0a85 00c5 0e0c LR $5, @0x0e0c 0a87 02bf 80e7 CALL 0x80e7 // Call ROM mixer function 0a89 00f8 0baa SR @0x0baa, $24 0a8b 00fb 0bad SR @0x0bad, $27 0a8d 00c0 0e43 LR $0, @0x0e43 0a8f 0081 0b99 LRI $1, #0x0b99 0a91 00c2 0e0d LR $2, @0x0e0d 0a93 1c62 MRR $3, $2 0a94 02bf 81f9 CALL 0x81f9 // Call second ROM mixer function 0a96 00f8 0bb0 SR @0x0bb0, $24 0a98 02df RET 0a99 00c0 0e40 LR $0, @0x0e40 0a9b 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0a9d 00c2 0e08 LR $2, @0x0e08 0a9f 0083 0e44 LRI $3, #0x0e44 0aa1 00c4 0e41 LR $4, @0x0e41 0aa3 00c5 0e09 LR $5, @0x0e09 0aa5 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0aa7 00f8 0ba9 SR @0x0ba9, $24 0aa9 00fb 0bac SR @0x0bac, $27 0aab 00c0 0e43 LR $0, @0x0e43 0aad 0081 0b91 LRI $1, #0x0b91 0aaf 00c2 0e0e LR $2, @0x0e0e 0ab1 0083 0e44 LRI $3, #0x0e44 0ab3 1c80 MRR $4, $0 0ab4 00c5 0e0f LR $5, @0x0e0f 0ab6 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0ab8 00f8 0bab SR @0x0bab, $24 0aba 00fb 0bae SR @0x0bae, $27 0abc 02df RET 0abd 00c0 0e40 LR $0, @0x0e40 0abf 0081 0b89 LRI $1, #0x0b89 // PB mixer settings 0ac1 00c2 0e08 LR $2, @0x0e08 0ac3 0083 0e44 LRI $3, #0x0e44 0ac5 00c4 0e41 LR $4, @0x0e41 0ac7 00c5 0e09 LR $5, @0x0e09 0ac9 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0acb 00f8 0ba9 SR @0x0ba9, $24 0acd 00fb 0bac SR @0x0bac, $27 0acf 00c0 0e43 LR $0, @0x0e43 0ad1 0081 0b91 LRI $1, #0x0b91 0ad3 00c2 0e0e LR $2, @0x0e0e 0ad5 0083 0e44 LRI $3, #0x0e44 0ad7 1c80 MRR $4, $0 0ad8 00c5 0e0f LR $5, @0x0e0f 0ada 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0adc 00f8 0bab SR @0x0bab, $24 0ade 00fb 0bae SR @0x0bae, $27 0ae0 00c0 0e40 LR $0, @0x0e40 0ae2 0081 0b8d LRI $1, #0x0b8d 0ae4 00c2 0e0b LR $2, @0x0e0b 0ae6 0083 0e44 LRI $3, #0x0e44 0ae8 00c4 0e41 LR $4, @0x0e41 0aea 00c5 0e0c LR $5, @0x0e0c 0aec 02bf 8282 CALL 0x8282 // Call third ROM mixer function 0aee 00f8 0baa SR @0x0baa, $24 0af0 00fb 0bad SR @0x0bad, $27 0af2 00c0 0e43 LR $0, @0x0e43 0af4 0081 0b99 LRI $1, #0x0b99 0af6 00c2 0e0d LR $2, @0x0e0d 0af8 0083 0e44 LRI $3, #0x0e44 0afa 02bf 845d CALL 0x845d 0afc 00f8 0bb0 SR @0x0bb0, $24 0afe 02df RET // JMP Table for commands 0aff 0082 0b00 013e 0b01 01bc 0b02 0248 0b03 0413 0b04 0427 0b05 0165 0b06 0574 0b07 0b37 0b08 015f 0b09 0478 0b0a 0474 0b0b 0476 0b0c 01a9 0b0d 043b 0b0e 047a 0b0f 0bb1 0b10 0175 // JMP Table for mixerCtrl 0b11 0768 0b12 077a 0b13 079d 0b14 07c0 0b15 07f4 0b16 0811 0b17 0844 0b18 0877 0b19 08c6 0b1a 08d9 0b1b 08fe 0b1c 0923 0b1d 095a 0b1e 0979 0b1f 09af 0b20 09e5 0b21 0a39 0b22 0a5b 0b23 0768 0b24 0768 0b25 0768 0b26 0768 0b27 0768 0b28 0768 0b29 0a99 0b2a 0abd 0b2b 0768 0b2c 0768 0b2d 0768 0b2e 0768 0b2f 0768 0b30 0768 // JMP Table for srcSelect 0b31 05a8 0b32 065d 0b33 0707 // the COEF Table addresses.. i think there are t.ree tables eac. wit. ~200 bytes // we could check if it is setup by the GAME too 0b34 1000 0b35 1200 0b36 1400 // // Opcode_08() - Dolphin HLE Plugin doesn't support this command on HLE so prolly no game has ever called it 0b37 8e00 S40 0b38 8100 CLR $30 0b39 8970 CLR.L $31 : $30, @$0 0b3a 191c LRRI $28, @$0 0b3b 2ece SRS @DSMAH, $30 0b3c 2ccf SRS @DSMAL, $28 0b3d 16cd 0e80 SI @DSPA, #0x0e80 0b3f 16c9 0000 SI @DSCR, #0x0000 0b41 16cb 0100 SI @DSBL, #0x0100 0b43 1f7e MRR $27, $30 0b44 1f3c MRR $25, $28 0b45 8100 CLR $30 0b46 26c9 LRS $30, @DSCR 0b47 02a0 0004 ANDCF $30, #0x0004 0b49 029c 0b46 JZR 0x0b46 // wait for DMA loop 0b4b 191e LRRI $30, @$0 0b4c 191c LRRI $28, @$0 0b4d 2ece SRS @DSMAH, $30 0b4e 2ccf SRS @DSMAL, $28 0b4f 16cd 0280 SI @DSPA, #0x0280 0b51 16c9 0000 SI @DSCR, #0x0000 0b53 16cb 0280 SI @DSBL, #0x0280 0b55 1c80 MRR $4, $0 0b56 0080 0280 LRI $0, #0x0280 0b58 00c1 0e1b LR $1, @0x0e1b 0b5a 0085 0000 LRI $5, #0x0000 0b5c 0089 007f LRI $9, #0x007f 0b5e 0082 0f00 LRI $2, #0x0f00 0b60 0083 16b4 LRI $3, #0x16b4 0b62 1ce3 MRR $7, $3 0b63 8100 CLR $30 0b64 26c9 LRS $30, @DSCR 0b65 02a0 0004 ANDCF $30, #0x0004 0b67 029c 0b64 JZR 0x0b64 // wait for DMA loop 0b69 8f00 S16 0b6a 8a78 M2.L : $31, @$0 0b6b 8c68 CLR15.L : $29, @$0 0b6c f100 LSL16 $31 0b6d 1a3f SRR @$1, $31 0b6e 84e3 CLRP.LD : $26, $25, @$3 0b6f 107e LOOPI #0x7e 0b70 f2e3 MADD.LD $24, $26 : $26, $25, @$3 0b71 f2e7 MADD.LDN $24, $26 : $26, $25, @$3 0b72 f278 MADD.L $24, $26 : $31, @$0 0b73 6e68 MOVP.L $30 : $29, @$0 0b74 f132 LSL16.S $31 : @$2, $30 0b75 1a3f SRR @$1, $31 0b76 119e 0b80 BLOOPI #0x9e, 0x0b80 0b78 1c67 MRR $3, $7 0b79 84e3 CLRP.LD : $26, $25, @$3 0b7a 107e LOOPI #0x7e 0b7b f2e3 MADD.LD $24, $26 : $26, $25, @$3 0b7c f2e7 MADD.LDN $24, $26 : $26, $25, @$3 0b7d f278 MADD.L $24, $26 : $31, @$0 0b7e 6e68 MOVP.L $30 : $29, @$0 0b7f f132 LSL16.S $31 : @$2, $30 0b80 1a3f SRR @$1, $31 0b81 1c67 MRR $3, $7 0b82 84e3 CLRP.LD : $26, $25, @$3 0b83 107e LOOPI #0x7e 0b84 f2e3 MADD.LD $24, $26 : $26, $25, @$3 0b85 f2e7 MADD.LDN $24, $26 : $26, $25, @$3 0b86 f200 MADD $24, $26 0b87 6e00 MOVP $30 0b88 1b5e SRRI @$2, $30 0b89 00e1 0e1b SR @0x0e1b, $1 0b8b 0080 0280 LRI $0, #0x0280 0b8d 0083 0f00 LRI $3, #0x0f00 0b8f 0081 0000 LRI $1, #0x0000 0b91 0082 0140 LRI $2, #0x0140 0b93 0089 ffff LRI $9, #0xffff 0b95 8900 CLR $31 0b96 8100 CLR $30 0b97 8f00 S16 0b98 11a0 0ba0 BLOOPI #0xa0, 0x0ba0 0b9a 197f LRRI $31, @$3 0b9b 9930 ASR16.S $31 : @$0, $30 0b9c 1b1e SRRI @$0, $30 0b9d 1b3f SRRI @$1, $31 0b9e 7d29 NEG.S $31 : @$1, $29 0b9f 1b5f SRRI @$2, $31 0ba0 1b5d SRRI @$2, $29 0ba1 8e00 S40 0ba2 1fdb MRR $30, $27 0ba3 1f99 MRR $28, $25 0ba4 2ece SRS @DSMAH, $30 0ba5 2ccf SRS @DSMAL, $28 0ba6 16cd 0e80 SI @DSPA, #0x0e80 0ba8 16c9 0001 SI @DSCR, #0x0001 0baa 16cb 0100 SI @DSBL, #0x0100 0bac 02bf 055c CALL 0x055c // Wait for DMA control reg 0bae 1c04 MRR $0, $4 0baf 029f 0068 JMP 0x0068 // Return to message loop. // Looks like some "new command" that have been appended // i think i have seen it in monkey ball only... dunno // Opcode_16() 0bb1 8e00 S40 0bb2 8100 CLR $30 0bb3 8970 CLR.L $31 : $30, @$0 0bb4 191c LRRI $28, @$0 0bb5 2ece SRS @DSMAH, $30 0bb6 2ccf SRS @DSMAL, $28 0bb7 16cd 07c0 SI @DSPA, #0x07c0 0bb9 16c9 0001 SI @DSCR, #0x0001 0bbb 16cb 0500 SI @DSBL, #0x0500 0bbd 02bf 055c CALL 0x055c // Wait for DMA control reg 0bbf 8100 CLR $30 0bc0 8970 CLR.L $31 : $30, @$0 0bc1 191c LRRI $28, @$0 0bc2 2ece SRS @DSMAH, $30 0bc3 2ccf SRS @DSMAL, $28 0bc4 16cd 07c0 SI @DSPA, #0x07c0 0bc6 16c9 0000 SI @DSCR, #0x0000 0bc8 8900 CLR $31 0bc9 0d20 LRIS $29, #0x20 0bca 2dcb SRS @DSBL, $29 0bcb 4c00 ADD $30, $31 0bcc 1c80 MRR $4, $0 0bcd 0080 07c0 LRI $0, #0x07c0 0bcf 0083 0000 LRI $3, #0x0000 0bd1 1c43 MRR $2, $3 0bd2 0a00 LRIS $26, #0x00 0bd3 27c9 LRS $31, @DSCR 0bd4 03a0 0004 ANDCF $31, #0x0004 0bd6 029c 0bd3 JZR 0x0bd3 // wait for DMA loop 0bd8 2ece SRS @DSMAH, $30 0bd9 2ccf SRS @DSMAL, $28 0bda 16cd 07d0 SI @DSPA, #0x07d0 0bdc 16c9 0000 SI @DSCR, #0x0000 0bde 16cb 04e0 SI @DSBL, #0x04e0 0be0 8f00 S16 0be1 80f0 NX.LDX : $25, $27, @$1 0be2 80c0 NX.LDX : $24, $26, @$0 0be3 6a00 MOVAX $30, $25 0be4 4800 ADDAX $30, $24 0be5 114f 0bee BLOOPI #0x4f, 0x0bee 0be7 80f0 NX.LDX : $25, $27, @$1 0be8 80c0 NX.LDX : $24, $26, @$0 0be9 6b32 MOVAX.S $31, $25 : @$2, $30 0bea 4922 ADDAX.S $31, $24 : @$2, $28 0beb 80f0 NX.LDX : $25, $27, @$1 0bec 80c0 NX.LDX : $24, $26, @$0 0bed 6a3a MOVAX.S $30, $25 : @$2, $31 0bee 482a ADDAX.S $30, $24 : @$2, $29 0bef 80f0 NX.LDX : $25, $27, @$1 0bf0 80c0 NX.LDX : $24, $26, @$0 0bf1 6b32 MOVAX.S $31, $25 : @$2, $30 0bf2 4922 ADDAX.S $31, $24 : @$2, $28 0bf3 1b5f SRRI @$2, $31 0bf4 1b5d SRRI @$2, $29 0bf5 80f0 NX.LDX : $25, $27, @$1 0bf6 80c0 NX.LDX : $24, $26, @$0 0bf7 6800 MOVAX $30, $24 0bf8 7c00 NEG $30 0bf9 4a00 ADDAX $30, $25 0bfa 114f 0c05 BLOOPI #0x4f, 0x0c05 0bfc 80f0 NX.LDX : $25, $27, @$1 0bfd 80c0 NX.LDX : $24, $26, @$0 0bfe 6932 MOVAX.S $31, $24 : @$2, $30 0bff 7d00 NEG $31 0c00 4b22 ADDAX.S $31, $25 : @$2, $28 0c01 80f0 NX.LDX : $25, $27, @$1 0c02 80c0 NX.LDX : $24, $26, @$0 0c03 683a MOVAX.S $30, $24 : @$2, $31 0c04 7c00 NEG $30 0c05 4a2a ADDAX.S $30, $25 : @$2, $29 0c06 80f0 NX.LDX : $25, $27, @$1 0c07 80c0 NX.LDX : $24, $26, @$0 0c08 6932 MOVAX.S $31, $24 : @$2, $30 0c09 7d00 NEG $31 0c0a 4b22 ADDAX.S $31, $25 : @$2, $28 0c0b 1b5f SRRI @$2, $31 0c0c 1b5d SRRI @$2, $29 0c0d 1c04 MRR $0, $4 0c0e 029f 0068 JMP 0x0068 // Return to message loop. ////////////////////////////////////////////////////////////////////////////// // // Exception Functions() // ////////////////////////////////////////////////////////////////////////////// // exception vector 0002 0c10 8e00 S40 0c11 16fc ecc0 SI @DMBH, #0xecc0 0c13 1fcc MRR $30, $12 0c14 1d9e MRR $12, $30 0c15 2efd SRS @DMBL, $30 0c16 26fc LRS $30, @DMBH 0c17 02a0 8000 ANDCF $30, #0x8000 0c19 029c 0c16 JZR 0x0c16 // wait for dsp mailbox 0c1b 0000 NOP 0c1c 0000 NOP 0c1d 0000 NOP 0c1e 02ff RTI // exception vector 0004 0c1f 8e00 S40 0c20 00f0 0e17 SR @0x0e17, $16 0c22 00fe 0e18 SR @0x0e18, $30 0c24 00fc 0e19 SR @0x0e19, $28 0c26 1fcc MRR $30, $12 0c27 1d9e MRR $12, $30 0c28 16fc feed SI @DMBH, #0xfeed 0c2a 2efd SRS @DMBL, $30 0c2b 26fc LRS $30, @DMBH 0c2c 02a0 8000 ANDCF $30, #0x8000 0c2e 029c 0c2b JZR 0x0c2b // wait for dsp mailbox 0c30 00d0 0e17 LR $16, @0x0e17 0c32 00de 0e18 LR $30, @0x0e18 0c34 00dc 0e19 LR $28, @0x0e19 0c36 0000 NOP 0c37 0000 NOP 0c38 0000 NOP 0c39 0000 NOP 0c3a 02ff RTI // exception vector 0006 // somd kind of "stop this PB" // pseudo c: { if (!pCurrPC->PBAudioAddr->looping) { PB->running = 0; } RTI } 0c3b 8e00 S40 0c3c 1dbc MRR $13, $28 0c3d 1dbe MRR $13, $30 0c3e 8100 CLR $30 0c3f 00de 0bb7 LR $30, @0x0bb7 // PB->PBAudioAddr->looping 0c41 0601 CMPIS $32, #0x01 0c42 0295 0c47 JEQ 0x0c47 0c44 0e00 LRIS $30, #0x00 0c45 00fe 0b87 SR @0x0b87, $30 // PB->running 0c47 1fcd MRR $30, $13 0c48 1f8d MRR $28, $13 0c49 02ff RTI // exception vector 0008 - do nothing 0c4a 0000 NOP 0c4b 0000 NOP 0c4c 0000 NOP 0c4d 0000 NOP 0c4e 0000 NOP 0c4f 02ff RTI // exception vector 000a // this is what loads loop_yn1 etc. // An level 5 exception should be caused when the hw ADPCM Decoder reaches the end and loops. 0c50 8e00 S40 0c51 1dbc MRR $13, $28 0c52 1dbe MRR $13, $30 0c53 8100 CLR $30 0c54 00de 0bb7 LR $30, @0x0bb7 // PB->PBAudioAddr->looping 0c56 0601 CMPIS $32, #0x01 0c57 0295 0c5f JEQ 0x0c5f 0c59 0e00 LRIS $30, #0x00 0c5a 00fe 0b87 SR @0x0b87, $30 // PB->running 0c5c 1fcd MRR $30, $13 0c5d 1f8d MRR $28, $13 0c5e 02ff RTI 0c5f 8100 CLR $30 0c60 00de 0b88 LR $30, @0x0b88 // PB->is_stream 0c62 0601 CMPIS $32, #0x01 0c63 0295 0c71 JEQ 0x0c71 0c65 00de 0bda LR $30, @0x0bda // PB->PBADPCMInfo->pred_scale 0c67 2eda SRS @pred_scale, $30 0c68 00de 0bdb LR $30, @0x0bdb // PB->PBADPCMInfo->yn1 0c6a 2edb SRS @yn1, $30 0c6b 00de 0bdc LR $30, @0x0bdc // PB->PBADPCMInfo->yn2 0c6d 2edc SRS @yn2, $30 0c6e 1fcd MRR $30, $13 0c6f 1f8d MRR $28, $13 0c70 02ff RTI // this is done for streaming 0c71 00de 0bda LR $30, @0x0bda // PB->PBADPCMInfo->pred_scale 0c73 2eda SRS @pred_scale, $30 0c74 26db LRS $30, @yn1 0c75 2edb SRS @yn1, $30 0c76 26dc LRS $30, @yn2 0c77 2edc SRS @yn2, $30 0c78 8100 CLR $30 0c79 00dc 0bdd LR $28, @0x0bdd // reads from the first PB->padding byte :) 0c7b 7600 INC $30 0c7c 00fc 0bdd SR @0x0bdd, $28 0c7e 8100 CLR $30 0c7f 1fcd MRR $30, $13 0c80 1f8d MRR $28, $13 0c81 02ff RTI // exception vector 000c 0c82 0000 NOP 0c83 0000 NOP 0c84 0000 NOP 0c85 0000 NOP 0c86 0000 NOP 0c87 02ff RTI // exception vector 000e 0c88 0000 NOP 0c89 0000 NOP 0c8a 0000 NOP 0c8b 0000 NOP 0c8c 02ff RTI ////////////////////////////////////////////////////////////////////////////// // // End of exception functions // ////////////////////////////////////////////////////////////////////////////// // Jmp table for function below // i think case 0x03 is the standard case 0c8d 0c9f LRIS $28, #0x9f // some kind of soft-reset for the UCode 0c8e 0ca2 LRIS $28, #0xa2 // looks like code to dump the UCode memory for debugging 0c8f 0cda LRIS $28, #0xda // rest the UCode and jump to ROM 0c90 0cdd LRIS $28, #0xdd // normal case to return to the main-loop // Mix and write back to RAM??? It is called by AXLIST_END command only 0c91 8e00 S40 0c92 8100 CLR $30 0c93 8900 CLR $31 0c94 02bf 0ce0 CALL 0x0ce0 // wait for CMBH 0c96 27ff LRS $31, @CMBL 0c97 009e 0c8d LRI $30, #0x0c8d 0c99 4c00 ADD $30, $31 0c9a 1c7e MRR $3, $30 0c9b 0313 ILRR $31, @$3 0c9c 1c7f MRR $3, $31 0c9d 176f JMPR $3 0c9e 0021 HALT // case 0x00: 0c9f 029f 0030 JMP 0x0030 0ca1 0021 HALT // case 0x01: 0ca2 8100 CLR $30 0ca3 8900 CLR $31 0ca4 02bf 0ce0 CALL 0x0ce0 // wait for CMBH 0ca6 24ff LRS $28, @CMBL 0ca7 02bf 0ce6 CALL 0x0ce6 // wait for CMBH, R31 0ca9 25ff LRS $29, @CMBL 0caa 02bf 0ce6 CALL 0x0ce6 // wait for CMBH, R31 0cac 27ff LRS $31, @CMBL 0cad 2ece SRS @DSMAH, $30 0cae 2ccf SRS @DSMAL, $28 0caf 16c9 0001 SI @DSCR, #0x0001 0cb1 2fcd SRS @DSPA, $31 0cb2 2dcb SRS @DSBL, $29 0cb3 8100 CLR $30 0cb4 8900 CLR $31 0cb5 02bf 0ce0 CALL 0x0ce0 // wait for CMBH 0cb7 24ff LRS $28, @CMBL 0cb8 1c9e MRR $4, $30 0cb9 1cbc MRR $5, $28 0cba 02bf 0ce6 CALL 0x0ce6 // wait for CMBH, R31 0cbc 25ff LRS $29, @CMBL 0cbd 02bf 0ce6 CALL 0x0ce6 // wait for CMBH, R31 0cbf 27ff LRS $31, @CMBL 0cc0 1cdf MRR $6, $31 0cc1 1cfd MRR $7, $29 0cc2 8100 CLR $30 0cc3 02bf 0ce0 CALL 0x0ce0 // wait for CMBH 0cc5 26ff LRS $30, @CMBL 0cc6 1c1e MRR $0, $30 0cc7 8900 CLR $31 0cc8 02bf 0ce6 CALL 0x0ce6 // wait for CMBH, R31 0cca 20ff LRS $24, @CMBL 0ccb 1f5f MRR $26, $31 0ccc 02bf 0ce0 CALL 0x0ce0 // wait for CMBH 0cce 21ff LRS $25, @CMBL 0ccf 02bf 0ce0 CALL 0x0ce0 // wait for CMBH 0cd1 23ff LRS $27, @CMBL 0cd2 26c9 LRS $30, @DSCR 0cd3 02a0 0004 ANDCF $30, #0x0004 0cd5 029c 0cd2 JZR 0x0cd2 0cd7 029f 80b5 JMP 0x80b5 0cd9 0021 HALT // case 0x03: 0cda 029f 8000 JMP 0x8000 0cdc 0021 HALT // case 0x04: 0cdd 029f 0045 JMP 0x0045 0cdf 0021 HALT // wait for cpu mail 0ce0 26fe LRS $30, @CMBH 0ce1 02c0 8000 ANDF $30, #0x8000 0ce3 029c 0ce0 JZR 0x0ce0 0ce5 02df RET // wait for cpu mail 0ce6 27fe LRS $31, @CMBH 0ce7 03c0 8000 ANDF $31, #0x8000 0ce9 029c 0ce6 JZR 0x0ce6 0ceb 02df RET