From 26173c00e58e6802bb9e03f668117acbeccdbf32 Mon Sep 17 00:00:00 2001 From: dinkc64 <12570148+dinkc64@users.noreply.github.com> Date: Tue, 20 Jan 2015 20:43:38 +0000 Subject: [PATCH] d_zaxxon: coin oops + dips oops (oops!) --- src/burn/drv/sega/d_zaxxon.cpp | 142 ++++++++++++++++++++++++++------- 1 file changed, 114 insertions(+), 28 deletions(-) diff --git a/src/burn/drv/sega/d_zaxxon.cpp b/src/burn/drv/sega/d_zaxxon.cpp index dfe96f892..ed6eefbee 100644 --- a/src/burn/drv/sega/d_zaxxon.cpp +++ b/src/burn/drv/sega/d_zaxxon.cpp @@ -1,10 +1,10 @@ /* Games supported: - * Zaxxon yes + * Zaxxon yes * Super Zaxxon yes * Future Spy yes - * Razmatazz no sound+bad controls sega_universal_sound_board_rom ? - * Ixion no + * Razmatazz no sound+bad controls sega_universal_sound_board_rom ? + * Ixion no * Congo Bongo yes To do: @@ -184,13 +184,41 @@ static struct BurnDIPInfo CongoBongoDIPList[]= {0x10, 0x01, 0x0c, 0x08, "Hard" }, {0x10, 0x01, 0x0c, 0x00, "Hardest" }, - {0 , 0xfe, 0 , 2, "Coin B" }, - {0x11, 0x01, 0x0f, 0x03, "1 Coin 1 Credit" }, - {0x11, 0x01, 0x0f, 0x0d, "1 Coin 2 Credits" }, + {0 , 0xfe, 0 , 16, "Coin B" }, + {0x11, 0x01, 0x0f, 0x0f, "4 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x07, "3 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x0b, "2 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x06, "2 Coins / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x0a, "2 Coins / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0x0f, 0x03, "1 Coin / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x02, "1 Coin / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x0c, "1 Coin / 1 Credit + Bonus each 4" }, + {0x11, 0x01, 0x0f, 0x04, "1 Coin / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0x0f, 0x0d, "1 Coin / 2 Credits" }, + {0x11, 0x01, 0x0f, 0x08, "1 Coin / 2 Credits + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x00, "1 Coin / 2 Credits + Bonus each 4" }, + {0x11, 0x01, 0x0f, 0x05, "1 Coin / 3 Credits" }, + {0x11, 0x01, 0x0f, 0x09, "1 Coin / 4 Credits" }, + {0x11, 0x01, 0x0f, 0x01, "1 Coin / 5 Credits" }, + {0x11, 0x01, 0x0f, 0x0e, "1 Coin / 6 Credits" }, - {0 , 0xfe, 0 , 2, "Coin A" }, - {0x11, 0x01, 0xf0, 0x30, "1 Coin 1 Credit" }, - {0x11, 0x01, 0xf0, 0xd0, "1 Coin 2 Credits" }, + {0 , 0xfe, 0 , 16, "Coin A" }, + {0x11, 0x01, 0xf0, 0xf0, "4 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x70, "3 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0xb0, "2 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x60, "2 Coins / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0xa0, "2 Coins / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0xf0, 0x30, "1 Coin / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x20, "1 Coin / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0xc0, "1 Coin / 1 Credit + Bonus each 4" }, + {0x11, 0x01, 0xf0, 0x40, "1 Coin / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0xf0, 0xd0, "1 Coin / 2 Credits" }, + {0x11, 0x01, 0xf0, 0x80, "1 Coin / 2 Credits + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0x00, "1 Coin / 2 Credits + Bonus each 4" }, + {0x11, 0x01, 0xf0, 0x50, "1 Coin / 3 Credits" }, + {0x11, 0x01, 0xf0, 0x90, "1 Coin / 4 Credits" }, + {0x11, 0x01, 0xf0, 0x10, "1 Coin / 5 Credits" }, + {0x11, 0x01, 0xf0, 0xe0, "1 Coin / 6 Credits" }, }; STDDIPINFO(CongoBongo) @@ -231,13 +259,41 @@ static struct BurnDIPInfo ZaxxonDIPList[]= {0x10, 0x01, 0x80, 0x00, "Upright" }, {0x10, 0x01, 0x80, 0x80, "Cocktail" }, - {0 , 0xfe, 0 , 2, "Coin B" }, - {0x11, 0x01, 0x0f, 0x03, "1 Coin 1 Credit" }, - {0x11, 0x01, 0x0f, 0x0d, "1 Coin 2 Credits" }, + {0 , 0xfe, 0 , 16, "Coin B" }, + {0x11, 0x01, 0x0f, 0x0f, "4 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x07, "3 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x0b, "2 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x06, "2 Coins / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x0a, "2 Coins / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0x0f, 0x03, "1 Coin / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x02, "1 Coin / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x0c, "1 Coin / 1 Credit + Bonus each 4" }, + {0x11, 0x01, 0x0f, 0x04, "1 Coin / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0x0f, 0x0d, "1 Coin / 2 Credits" }, + {0x11, 0x01, 0x0f, 0x08, "1 Coin / 2 Credits + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x00, "1 Coin / 2 Credits + Bonus each 4" }, + {0x11, 0x01, 0x0f, 0x05, "1 Coin / 3 Credits" }, + {0x11, 0x01, 0x0f, 0x09, "1 Coin / 4 Credits" }, + {0x11, 0x01, 0x0f, 0x01, "1 Coin / 5 Credits" }, + {0x11, 0x01, 0x0f, 0x0e, "1 Coin / 6 Credits" }, - {0 , 0xfe, 0 , 2, "Coin A" }, - {0x11, 0x01, 0xf0, 0x30, "1 Coin 1 Credit" }, - {0x11, 0x01, 0xf0, 0xd0, "1 Coin 2 Credits" }, + {0 , 0xfe, 0 , 16, "Coin A" }, + {0x11, 0x01, 0xf0, 0xf0, "4 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x70, "3 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0xb0, "2 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x60, "2 Coins / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0xa0, "2 Coins / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0xf0, 0x30, "1 Coin / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x20, "1 Coin / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0xc0, "1 Coin / 1 Credit + Bonus each 4" }, + {0x11, 0x01, 0xf0, 0x40, "1 Coin / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0xf0, 0xd0, "1 Coin / 2 Credits" }, + {0x11, 0x01, 0xf0, 0x80, "1 Coin / 2 Credits + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0x00, "1 Coin / 2 Credits + Bonus each 4" }, + {0x11, 0x01, 0xf0, 0x50, "1 Coin / 3 Credits" }, + {0x11, 0x01, 0xf0, 0x90, "1 Coin / 4 Credits" }, + {0x11, 0x01, 0xf0, 0x10, "1 Coin / 5 Credits" }, + {0x11, 0x01, 0xf0, 0xe0, "1 Coin / 6 Credits" }, }; STDDIPINFO(Zaxxon) @@ -282,13 +338,41 @@ static struct BurnDIPInfo SzaxxonDIPList[]= {0x10, 0x01, 0x04, 0x04, "Normal" }, {0x10, 0x01, 0x04, 0x00, "Hard" }, - {0 , 0xfe, 0 , 2, "Coin B" }, - {0x11, 0x01, 0x0f, 0x03, "1 Coin 1 Credit" }, - {0x11, 0x01, 0x0f, 0x0d, "1 Coin 2 Credits" }, + {0 , 0xfe, 0 , 16, "Coin B" }, + {0x11, 0x01, 0x0f, 0x0f, "4 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x07, "3 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x0b, "2 Coins / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x06, "2 Coins / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x0a, "2 Coins / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0x0f, 0x03, "1 Coin / 1 Credit" }, + {0x11, 0x01, 0x0f, 0x02, "1 Coin / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x0c, "1 Coin / 1 Credit + Bonus each 4" }, + {0x11, 0x01, 0x0f, 0x04, "1 Coin / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0x0f, 0x0d, "1 Coin / 2 Credits" }, + {0x11, 0x01, 0x0f, 0x08, "1 Coin / 2 Credits + Bonus each 5" }, + {0x11, 0x01, 0x0f, 0x00, "1 Coin / 2 Credits + Bonus each 4" }, + {0x11, 0x01, 0x0f, 0x05, "1 Coin / 3 Credits" }, + {0x11, 0x01, 0x0f, 0x09, "1 Coin / 4 Credits" }, + {0x11, 0x01, 0x0f, 0x01, "1 Coin / 5 Credits" }, + {0x11, 0x01, 0x0f, 0x0e, "1 Coin / 6 Credits" }, - {0 , 0xfe, 0 , 2, "Coin A" }, - {0x11, 0x01, 0xf0, 0x30, "1 Coin 1 Credit" }, - {0x11, 0x01, 0xf0, 0xd0, "1 Coin 2 Credits" }, + {0 , 0xfe, 0 , 16, "Coin A" }, + {0x11, 0x01, 0xf0, 0xf0, "4 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x70, "3 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0xb0, "2 Coins / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x60, "2 Coins / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0xa0, "2 Coins / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0xf0, 0x30, "1 Coin / 1 Credit" }, + {0x11, 0x01, 0xf0, 0x20, "1 Coin / 1 Credit + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0xc0, "1 Coin / 1 Credit + Bonus each 4" }, + {0x11, 0x01, 0xf0, 0x40, "1 Coin / 1 Credit + Bonus each 2" }, + {0x11, 0x01, 0xf0, 0xd0, "1 Coin / 2 Credits" }, + {0x11, 0x01, 0xf0, 0x80, "1 Coin / 2 Credits + Bonus each 5" }, + {0x11, 0x01, 0xf0, 0x00, "1 Coin / 2 Credits + Bonus each 4" }, + {0x11, 0x01, 0xf0, 0x50, "1 Coin / 3 Credits" }, + {0x11, 0x01, 0xf0, 0x90, "1 Coin / 4 Credits" }, + {0x11, 0x01, 0xf0, 0x10, "1 Coin / 5 Credits" }, + {0x11, 0x01, 0xf0, 0xe0, "1 Coin / 6 Credits" }, }; STDDIPINFO(Szaxxon) @@ -436,6 +520,7 @@ static void CongoPPIWriteC(UINT8 data) static UINT8 __fastcall zaxxon_read(UINT16 address) { + UINT16 oa = address; // address mirroring if ((address & 0xe700) == 0xc000) address &= ~0x18f8; if ((address & 0xe700) == 0xc100) address &= ~0x18ff; @@ -470,7 +555,7 @@ static UINT8 __fastcall zaxxon_read(UINT16 address) static void zaxxon_coin_inserted(UINT8 param) { - if (zaxxon_coin_last[param] != (param == 0) ? DrvJoy4[2] : DrvJoy4[param-1]) + if (zaxxon_coin_last[param] != DrvJoy4[param]) { zaxxon_coin_status[param] = zaxxon_coin_enable[param]; } @@ -549,6 +634,7 @@ static void __fastcall zaxxon_write(UINT16 address, UINT8 data) static UINT8 __fastcall congo_read(UINT16 address) { + UINT16 oa = address; // address mirroring if ((address & 0xe008) == 0xc000) address &= ~0x1fc4; if ((address & 0xe008) == 0xc008) address &= ~0x1fc7; @@ -1261,18 +1347,18 @@ static INT32 DrvDraw() static void zaxxon_coin_lockout() { // soft-coin lockout - prevents 30 coins per 1 insert-coin keypress. - if (DrvJoy4[2]) // service pressed + if (DrvJoy4[0]) // a coin inserted zaxxon_coin_inserted(0); - if (DrvJoy4[0]) // coin pressed + if (DrvJoy4[1]) // b coin inserted zaxxon_coin_inserted(1); - if (DrvJoy4[1]) // coin pressed + if (DrvJoy4[2]) // service pressed zaxxon_coin_inserted(2); DrvInputs[2] += (zaxxon_coin_r(0)) ? 0x20 : 0; DrvInputs[2] += (zaxxon_coin_r(1)) ? 0x40 : 0; DrvInputs[2] += (zaxxon_coin_r(2)) ? 0x80 : 0; - zaxxon_coin_last[0] = DrvJoy4[2]; - zaxxon_coin_last[1] = DrvJoy4[0]; - zaxxon_coin_last[2] = DrvJoy4[1]; + zaxxon_coin_last[0] = DrvJoy4[0]; + zaxxon_coin_last[1] = DrvJoy4[1]; + zaxxon_coin_last[2] = DrvJoy4[2]; // end soft-coin lockout }