XCodes Jamtable Opcodes - JayFoxRox/xqemu-jfr GitHub Wiki
There are a couple of different XCodes interpreters.
- MCPX X2 runs the interpreter from flash, so nearly everything is possible there, but we don't have to care
- MCPX X3 runs the interpreter from MCPX ROM, and there is at least 1 jamtable.
MCPX X2, D1 = Chihiro (http://mamedev.org/source/src/mame/drivers/chihiro.c.html):
0x01 POKEPCI PCICONF[OP2] := OP1
0x02 OUTB PORT[OP2] := OP1
0x03 POKE MEM[OP2] := OP1
0x04 BNE IF ACC <OP2 THEN PC := PC + OP1
0x05 PEEKPCI ACC := PCICONF[OP2]
0x06 AND/OR ACC := (ACC & OP2) | OP1
0x07 BRA PC := PC + OP1
0x08 INB ACC := PORT[OP2]
0x09 PEEK ACC := MEM[OP2]
0xE1 (prefix) execute the instruction code in OP2 with OP2 := OP1, OP1 := ACC
0xEE END
MCPX X2, Unknown Revision = Xbox Devkit
>FIXME<
MCPX X3, Unknown Revision = Xbox Retail (http://bezadis.ics.upjs.sk/old/CryptoSymposium/files/paper2.pdf)
0x02 PEEK ACC := MEM[OP1]
0x03 POKE MEM[OP1] := OP2
0x04 POKEPCI PCICONF[OP1] := OP2
0x05 PEEKPCI ACC := PCICONF[OP1]
0x06 AND/OR ACC := (ACC & OP1) | OP2
0x07 (prefix) execute the instruction code in OP1 with OP1 := OP2, OP2 := ACC
0x08 BNE IF ACC = OP1 THEN PC := PC + OP2
0x09 BRA PC := PC + OP2
0x10 AND/OR ACC2 (unused/defunct) ACC2 := (ACC2 & OP1) | OP2
0x11 OUTB PORT[OP1] := OP2
0x12 INB ACC := PORT(OP1)
0xEE END