From 4f8fd4a0d98267ff134a19b5ee7501e3fbc7e6e1 Mon Sep 17 00:00:00 2001 From: iq_132 <1191709+iq132@users.noreply.github.com> Date: Mon, 30 Apr 2012 16:55:54 +0000 Subject: [PATCH] Small Epos update -- Dealer sound, implement watchdog. --- src/burn/drv/pre90s/d_epos.cpp | 52 +++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/src/burn/drv/pre90s/d_epos.cpp b/src/burn/drv/pre90s/d_epos.cpp index cd22c457f..d3c6ca0d1 100644 --- a/src/burn/drv/pre90s/d_epos.cpp +++ b/src/burn/drv/pre90s/d_epos.cpp @@ -35,6 +35,8 @@ static UINT8 *DrvPaletteBank; static UINT8 *DealerZ80Bank; static UINT8 *DealerZ80Bank2; +static int watchdog; + static struct BurnInputInfo MegadonInputList[] = { {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 0, "p1 coin" }, {"P1 Start", BIT_DIGITAL, DrvJoy1 + 2, "p1 start" }, @@ -276,19 +278,20 @@ void __fastcall epos_write_port(UINT16 port, UINT8 data) switch (port & 0xff) { case 0x00: - break; + watchdog = 0; + return; case 0x01: *DrvPaletteBank = (data << 1) & 0x10; - break; + return; case 0x02: AY8910Write(0, 1, data); - break; + return; case 0x06: AY8910Write(0, 0, data); - break; + return; } } @@ -348,7 +351,7 @@ void __fastcall dealer_write_port(UINT16 port, UINT8 data) case 0x12: case 0x13: ppi8255_w(0, port & 3, data); - break; + return; case 0x20: case 0x21: @@ -356,7 +359,19 @@ void __fastcall dealer_write_port(UINT16 port, UINT8 data) case 0x23: case 0x24: dealer_bankswitch(port & 7); - break; + return; + + case 0x34: + AY8910Write(0, 1, data); + return; + + case 0x3c: + AY8910Write(0, 0, data); + return; + + case 0x40: + watchdog = 0; + return; } } @@ -370,11 +385,11 @@ void DealerPPIWriteC(UINT8 data) dealer_bankswitch2(data); } -static INT32 DrvDoReset() +static INT32 DrvDoReset(INT32 full_reset) { - DrvReset = 0; - - memset (AllRam, 0, RamEnd - AllRam); + if (full_reset) { + memset (AllRam, 0, RamEnd - AllRam); + } ZetOpen(0); ZetReset(); @@ -384,6 +399,8 @@ static INT32 DrvDoReset() AY8910Reset(0); + watchdog = 0; + return 0; } @@ -492,7 +509,7 @@ static INT32 DrvInit() GenericTilesInit(); - DrvDoReset(); + DrvDoReset(1); return 0; } @@ -539,7 +556,7 @@ static INT32 DealerInit() GenericTilesInit(); - DrvDoReset(); + DrvDoReset(1); return 0; } @@ -572,6 +589,8 @@ static INT32 DrvDraw() DrvPalette[i] = BurnHighCol(r, g, b, 0); } + + DrvRecalc = 0; } for (INT32 i = 0; i < 0x8000; i++) @@ -591,8 +610,13 @@ static INT32 DrvDraw() static INT32 DrvFrame() { + watchdog++; + if (watchdog > 180) { + DrvDoReset(0); + } + if (DrvReset) { - DrvDoReset(); + DrvDoReset(1); } { @@ -886,7 +910,7 @@ STD_ROM_FN(dealer) struct BurnDriver BurnDrvDealer = { "dealer", NULL, NULL, NULL, "198?", - "The Dealer\0", "No Sound / Incorrect Colors", "Epos Corporation", "EPOS Tristar", + "The Dealer\0", "Incorrect Colors", "Epos Corporation", "EPOS Tristar", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 1, HARDWARE_MISC_PRE90S, GBF_CASINO, 0, NULL, dealerRomInfo, dealerRomName, NULL, NULL, DealerInputInfo, DealerDIPInfo,