ROM_END #define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7)) #define WRITEDEST( n ) \ dest[idx]=n; \ dest[idx+0x10000]=(n)^0xff; \ idx++; DRIVER_INIT_MEMBER(tcl_state,tcl) { /* only the first part is decrypted (and verified)*/ address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); UINT8 *dest = machine().root_device().memregion("maincpu")->base(); int len = machine().root_device().memregion("maincpu")->bytes(); UINT8 *src = auto_alloc_array(machine(), UINT8, len); int i,idx=0; memcpy(src, dest, len); for(i=0;i<64*1024;i+=4) { if(i&0x8000) { WRITEDEST(ROL(src[idx]^0x44,4)); // abcdefgh -> aFghaBcd WRITEDEST(ROL(src[idx]^0x44,7)); // abcdefgh -> haBcdeFg WRITEDEST(ROL(src[idx]^0x44,2)); // abcdefgh -> cdeFghaB WRITEDEST((src[idx]^0x44)^0xf0); // abcdefgh -> AbCEeFgh } else { WRITEDEST(ROL(src[idx]^0x11,4)); // abcdefgh -> efgHabcD WRITEDEST(ROL(src[idx]^0x11,7)); // abcdefgh -> HabcDefg WRITEDEST(ROL(src[idx]^0x11,2)); // abcdefgh -> cDefgHab WRITEDEST((src[idx]^0x11)^0xf0); // abcdefgh -> ABCdefgH } } auto_free(machine(), src); space.set_decrypted_region(0x0000, 0x7fff, dest+0x10000); }
ROM_END #define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7)) #define WRITEDEST( n ) \ dest[idx]=n; \ dest[idx+0x10000]=(n)^0xff; \ idx++; static DRIVER_INIT(tcl) { /* only the first part is decrypted (and verified)*/ const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); UINT8 *dest = memory_region(machine, "maincpu"); int len = memory_region_length(machine, "maincpu"); UINT8 *src = alloc_array_or_die(UINT8, len); int i,idx=0; memcpy(src, dest, len); for(i=0;i<64*1024;i+=4) { if(i&0x8000) { WRITEDEST(ROL(src[idx]^0x44,4)); // abcdefgh -> aFghaBcd WRITEDEST(ROL(src[idx]^0x44,7)); // abcdefgh -> haBcdeFg WRITEDEST(ROL(src[idx]^0x44,2)); // abcdefgh -> cdeFghaB WRITEDEST((src[idx]^0x44)^0xf0); // abcdefgh -> AbCEeFgh } else { WRITEDEST(ROL(src[idx]^0x11,4)); // abcdefgh -> efgHabcD WRITEDEST(ROL(src[idx]^0x11,7)); // abcdefgh -> HabcDefg WRITEDEST(ROL(src[idx]^0x11,2)); // abcdefgh -> cDefgHab WRITEDEST((src[idx]^0x11)^0xf0); // abcdefgh -> ABCdefgH } } free(src); memory_set_decrypted_region(space, 0x0000, 0x7fff, dest+0x10000); }
ROM_END #define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7)) #define WRITEDEST( n ) \ dest[idx]=n; \ dest[idx+0x10000]=(n)^0xff; \ idx++; DRIVER_INIT(tcl) { /* only the first part is decrypted (and verified)*/ UINT8 *dest = memory_region(REGION_CPU1); UINT8 *src = malloc_or_die(memory_region_length(REGION_CPU1)); int i,idx=0; memcpy(src, dest, memory_region_length(REGION_CPU1)); for(i=0;i<64*1024;i+=4) { if(i&0x8000) { WRITEDEST(ROL(src[idx]^0x44,4)); // abcdefgh -> aFghaBcd WRITEDEST(ROL(src[idx]^0x44,7)); // abcdefgh -> haBcdeFg WRITEDEST(ROL(src[idx]^0x44,2)); // abcdefgh -> cdeFghaB WRITEDEST((src[idx]^0x44)^0xf0); // abcdefgh -> AbCEeFgh } else { WRITEDEST(ROL(src[idx]^0x11,4)); // abcdefgh -> efgHabcD WRITEDEST(ROL(src[idx]^0x11,7)); // abcdefgh -> HabcDefg WRITEDEST(ROL(src[idx]^0x11,2)); // abcdefgh -> cDefgHab WRITEDEST((src[idx]^0x11)^0xf0); // abcdefgh -> ABCdefgH } } free(src); memory_set_decrypted_region(0, 0x0000, 0x7fff, dest+0x10000); }
ROM_END #define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7)) #define WRITEDEST( n ) \ dest[idx]=n; \ dest[idx+0x10000]=(n)^0xff; \ idx++; DRIVER_INIT_MEMBER(tcl_state,tcl) { /* only the first part is decrypted (and verified)*/ UINT8 *dest = memregion("maincpu")->base(); int len = memregion("maincpu")->bytes(); dynamic_buffer src(len); int i,idx=0; memcpy(&src[0], dest, len); for(i=0;i<64*1024;i+=4) { if(i&0x8000) { WRITEDEST(ROL(src[idx]^0x44,4)); // abcdefgh -> aFghaBcd WRITEDEST(ROL(src[idx]^0x44,7)); // abcdefgh -> haBcdeFg WRITEDEST(ROL(src[idx]^0x44,2)); // abcdefgh -> cdeFghaB WRITEDEST((src[idx]^0x44)^0xf0); // abcdefgh -> AbCEeFgh } else { WRITEDEST(ROL(src[idx]^0x11,4)); // abcdefgh -> efgHabcD WRITEDEST(ROL(src[idx]^0x11,7)); // abcdefgh -> HabcDefg WRITEDEST(ROL(src[idx]^0x11,2)); // abcdefgh -> cDefgHab WRITEDEST((src[idx]^0x11)^0xf0); // abcdefgh -> ABCdefgH } } }
ROM_END #define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7)) #define WRITEDEST( n ) \ dest[idx]=n; \ dest[idx+0x10000]=(n)^0xff; \ idx++; DRIVER_INIT(tcl) { /* only the first part is decrypted (and verified)*/ unsigned char *dest = memory_region(REGION_CPU1); unsigned char *src = memory_region(REGION_USER1); int i,idx=0; for(i=0;i<64*1024;i+=4) { if(i&0x8000) { WRITEDEST(ROL(src[idx]^0x44,4)); // abcdefgh -> aFghaBcd WRITEDEST(ROL(src[idx]^0x44,7)); // abcdefgh -> haBcdeFg WRITEDEST(ROL(src[idx]^0x44,2)); // abcdefgh -> cdeFghaB WRITEDEST((src[idx]^0x44)^0xf0); // abcdefgh -> AbCEeFgh } else { WRITEDEST(ROL(src[idx]^0x11,4)); // abcdefgh -> efgHabcD WRITEDEST(ROL(src[idx]^0x11,7)); // abcdefgh -> HabcDefg WRITEDEST(ROL(src[idx]^0x11,2)); // abcdefgh -> cDefgHab WRITEDEST((src[idx]^0x11)^0xf0); // abcdefgh -> ABCdefgH } } memory_set_opcode_base(0,dest+0x10000); }