d_zaxxon: coin oops + dips oops (oops!)

This commit is contained in:
dinkc64 2015-01-20 20:43:38 +00:00
parent 18700c1b7a
commit 26173c00e5
1 changed files with 114 additions and 28 deletions

View File

@ -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
}