DRIVER_INIT_MEMBER(deco156_state,wcvol95) { deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */ deco156_decrypt(machine()); descramble_sound("ymz"); }
ROM_END /* Cannon Dancer / Osman are odd, they don't init their own Eeprom... Roms on boths games are identical, and the Eeprom contains several settings the user isn't permitted to change, including region and button config.. the first 2 bytes must match the last first 2 bytes in the last block of 8 bytes, and the at 0x20 there must be 0088 or the game won't boot The second byte of Eeprom contains the following (Switch 0 in test mode) -bss llfr (byte 0x01 / 0x79 of eeprom) *- = unknown / unused (no observed effect) *b = button config (2 buttons, or 3 buttons) s = number of special weapons (bombs) l = lives f = flip (screen rotation) *r = region other settings Switch 1 (byte 0x00 / 0x78 of eeprom) ppdd -ecs p = number of players (health bar?) d = difficulty *- = unknown / unused (no observed effect) e = extend score c = continue s = demo sound Switch 2 (byte 0x7d of eeprom) cccC CCxb ccc = coin1 CCC = coin 2 *x = breaks attract mode / game.. b = blood items marked * the user can't configure in test mode I don't know if any of the other bytes in the eeprom are tested / used. 1 in eeprom is 0 in test mode Both games are currently configured to 3 buttons, its possible the game was never released with a 2 button configuration. NOTE: an actual read of the eeprom appears to be byteswapped vs. this data / the file MAME outputs */ DRIVER_INIT_MEMBER(simpl156_state,simpl156) { UINT8 *rom = memregion("okimusic")->base(); int length = memregion("okimusic")->bytes(); dynamic_buffer buf1(length); UINT32 x; /* hmm low address line goes to banking chip instead? */ for (x = 0; x < length; x++) { UINT32 addr; addr = BITSWAP24 (x,23,22,21,0, 20, 19,18,17,16, 15,14,13,12, 11,10,9, 8, 7, 6, 5, 4, 3, 2, 1 ); buf1[addr] = rom[x]; } memcpy(rom, &buf1[0], length); deco56_decrypt_gfx(machine(), "gfx1"); deco156_decrypt(machine()); }
DRIVER_INIT_MEMBER(deco156_state,hvysmsh) { deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */ deco156_decrypt(machine()); descramble_sound("oki2"); }
static DRIVER_INIT( wcvol95 ) { deco56_decrypt_gfx(machine, "gfx1"); /* 141 */ deco156_decrypt(machine); descramble_sound(machine, "ymz"); }
static DRIVER_INIT( hvysmsh ) { deco56_decrypt_gfx(machine, "gfx1"); /* 141 */ deco156_decrypt(machine); descramble_sound(machine, "oki2"); }
void deco156_state::init_wcvol95() { deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */ deco156_decrypt(machine()); descramble_sound("ymz"); }
void deco156_state::init_hvysmsh() { deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */ deco156_decrypt(machine()); descramble_sound("oki2"); }