I got all bored and stumbled into looking at IGS'
Tarzan.
I went ahead and decrypted 0228-u21.bin. Currently marked as graphics, but once you're decrypted the data, it seems to be program data.
int i;
int size = 0x80000;
UINT8 *src = ...;
for (i = 0; i < size; i++) {
UINT8 x = 0;
if ((i & 0x00011) == 0x00011) x ^= 0x01;
if ((i & 0x02180) == 0x00000) x ^= 0x01;
if ((i & 0x001a0) != 0x00020) x ^= 0x20;
if ((i & 0x00260) != 0x00200) x ^= 0x40;
if ((i & 0x00060) != 0x00000 && (i & 0x00260) != 0x00240) {
x ^= 0x80;
}
src[i] ^= x;
}
Next, I was looking around and found a partial dump for "Super Tarzan," which is not in MAME atm. The PCB has a custom IGS cpu (IGS025?) and a Z180. I'm betting that Tarzan uses the same setup. ^^ I went ahead and decrypted the program rom for this as well, "v100i.u9."
int i;
int size = 0x40000;
UINT8 *src = ...;
for (i = 0; i < size; i++) {
UINT8 x = 0;
if ((i & 0x00011) == 0x00011) x ^= 0x01;
if ((i & 0x02180) == 0x00000) x ^= 0x01;
if ((i & 0x000a0) != 0x00000) x ^= 0x20;
if ((i & 0x001a0) == 0x00000) x ^= 0x20;
if ((i & 0x00060) != 0x00020) x ^= 0x40;
if ((i & 0x00260) == 0x00220) x ^= 0x40;
if ((i & 0x00020) == 0x00020) x ^= 0x80;
if ((i & 0x001a0) == 0x00080) x ^= 0x80;
src[i] ^= x;
}
I probably won't be submitting a diff to the MAMEDevs as I'm lazy, busy, and indifferent [also the reason the decrypt code isn't completely simplified], so anyone that wants to, please do
.