summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vlc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vlc.cpp')
-rw-r--r--src/mame/drivers/vlc.cpp681
1 files changed, 0 insertions, 681 deletions
diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp
deleted file mode 100644
index 67b58ccfe2f..00000000000
--- a/src/mame/drivers/vlc.cpp
+++ /dev/null
@@ -1,681 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Yves
-/* vlc.cpp
-Multi-games from VLC Nevada 1995
-CGA monitor 15Khz 60hz
-// CPU CLOCK use Crystal 16.000MHZ
-// VIDEO CLOCK use Crystal 33.000MHZ
-
- - 1x MC68000 (CPU) 8mhz
- - 1x MC68B45P (CRTC)
- - 1x AY3-8912 (sound)
- - 1x M4262B oki (RTC CLOCK)
- - 3x MC68681 (2 x UART)
- - 4x 27C512
- - 2x 62256 NVRAM + batt (connect in 16bits)
- - 2x 6264 BACKUP + batt (connect in 8bits)
- - 1x MODEM XE1214 from XECOM (300/1200 Baud)
-
-
-
-on MAME 0.145u4
-Yves
-Todo :
-Video Section
-Security PAL U35 decoding
-In/Out interface Board communication (included mechanical METER + some switch Door open ,etc..)
-JCM Bill acceptor communication (probably ID-003 protocol)
-PRINTER communication (Star Printer )
-
-******************************************************
-******************************************************
-SECURITY SYSTEM
-
-ADDRESS A40000..A40001
-U35 PAL16R8 SECURITY
-PAL is connect on the BUS D15..D8
-Write Clock 8 bits in D15..D8
-Read OE 8 bit on D15..D8
-
-U50 4Bit D Flop Register is connect on D3..D0
-this one seem to have 2 use.
-1. keep track of the PAL16R8 state
-2. DOOR SWITCH is connect on U50 Clear pin (D3..D0 LOW = Door Open)
-Write Clock 4 bits in D-Flop Register
-Read OE 4 bits on D3..D0
-
-
-Boot Section is locate in NVRAM. Interrupts Pointers are changed on the fly.
-seem to check hardware WDT ,Power Failure , interrupt system,etc.. before game start.
-
-INT7 seem to control POWER FAILURE ,WDT.
-INT7 initialization is needed to boot the game.
-
-******************************************************
-******************************************************
-VIDEO REGISTER of 6845
-
-BOOT:FE1A82 00A5 0000 CRTC_TYPE1: dc.l unk_A50000
-BOOT:FE1A86 0000 dc.b 0
-BOOT:FE1A87 0000 dc.b 0
-BOOT:FE1A88 0000 dc.b 0
-BOOT:FE1A89 0000 dc.b 0
-BOOT:FE1A8A 0000 dc.b 0
-BOOT:FE1A8B 0007 dc.b 7
-BOOT:FE1A8C 0000 dc.b 0
-BOOT:FE1A8D 001F dc.b $1F
-BOOT:FE1A8E 001F dc.b $1F
-BOOT:FE1A8F 0002 dc.b 2
-BOOT:FE1A90 0020 dc.b $20
-BOOT:FE1A91 0003 dc.b 3
-BOOT:FE1A92 0023 dc.b $23 * #
-BOOT:FE1A93 001F dc.b $1F
-BOOT:FE1A94 002A dc.b $2A * *
-BOOT:FE1A95 0000 dc.b 0
-BOOT:FE1A96 00A5 8000 CRTC_TYPE2: dc.l unk_A58000
-BOOT:FE1A9A 00FF dc.b $FF
-BOOT:FE1A9B 0000 dc.b 0
-BOOT:FE1A9C 0000 dc.b 0
-BOOT:FE1A9D 0000 dc.b 0
-BOOT:FE1A9E 0000 dc.b 0
-BOOT:FE1A9F 0007 dc.b 7
-BOOT:FE1AA0 0000 dc.b 0
-BOOT:FE1AA1 001F dc.b $1F
-BOOT:FE1AA2 001F dc.b $1F
-BOOT:FE1AA3 0002 dc.b 2
-BOOT:FE1AA4 0020 dc.b $20
-BOOT:FE1AA5 0006 dc.b 6
-BOOT:FE1AA6 0033 dc.b $33 * 3
-BOOT:FE1AA7 002D dc.b $2D * -
-BOOT:FE1AA8 0040 dc.b $40 * @
-BOOT:FE1AA9 0000 dc.b 0
-
-
-BOOT:FE19F0 INI_CRTC6845:
-BOOT:FE19F0 48E7 8140 movem.l d0/d7/a1,-(sp)
-BOOT:FE19F4 2258 movea.l (a0)+,a1 * type1 = 0xA50000, type2 = 0xA80000
-BOOT:FE19F6 50D1 st (a1)
-BOOT:FE19F8 11D8 0435 move.b (a0)+,(ScreenMode)
-BOOT:FE19FC 4278 0412 clr.w (word_412)
-BOOT:FE1A00 2248 movea.l a0,a1
-BOOT:FE1A02 3E3C 0FFF move.w #$FFF,d7
-BOOT:FE1A06 307C 0000 movea.w #0,a0
-BOOT:FE1A0A 6100 0108 bsr set_vid_D0_A0 * D0 = 0x800020
-BOOT:FE1A0A * A0 = 0xB00000
-BOOT:FE1A0E 7E0D moveq #$D,d7
-BOOT:FE1A10
-BOOT:FE1A10 LOOP:
-BOOT:FE1A10 13C7 0090 0001 move.b d7,(CRTC_ADR)
-BOOT:FE1A16 13D9 0090 8001 move.b (a1)+,(CRTC_DAT)
-BOOT:FE1A1C 51CF FFF2 dbf d7,LOOP
-BOOT:FE1A20 4CDF 0281 movem.l (sp)+,d0/d7/a1
-BOOT:FE1A24 4E75 rts
-
-
- *** MC6845 Initialization ***
- Htotal Hdisp HsyncPos HsyncW Vtotal VtotalAdj Vdisp VsyncPos InterMode MaxScanAdr CurStart CurEnd StartAdrH StartAdrL CurH CurL LightPenH LightPenL
- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- register: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17
- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-nevada TYPE1 : 42 31 35 03 32 02 31 31 00 07 00 00 00 00 00 00 00 00
-nevada TYPE2 : 64 45 51 06 32 02 31 31 00 07 00 00 00 00 00 00 00 00
-
-*/
-
-
-#include "emu.h"
-#include "cpu/m68000/m68000.h"
-#include "machine/mc68681.h"
-#include "machine/microtch.h"
-#include "machine/msm6242.h"
-#include "machine/nvram.h"
-#include "machine/watchdog.h"
-#include "sound/ay8910.h"
-#include "video/mc6845.h"
-#include "emupal.h"
-#include "screen.h"
-#include "speaker.h"
-#include "tilemap.h"
-
-
-#define MASTER_CLOCK XTAL(16'000'000)
-#define MASTER_CPU ((MASTER_CLOCK)/2) // 8mhz
-#define SOUND_CLOCK ((MASTER_CLOCK) /8) // 2mhz
-
-#define VIDEO_CLOCK XTAL(33'000'000)
-#define MC6845_CLOCK ((VIDEO_CLOCK)/4/16) // 0.515625 MHZ
-
-
-/***************************************************************************
-
- General
-
-***************************************************************************/
-
-
-class nevada_state : public driver_device
-{
-public:
- nevada_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_duart(*this, {"duart18", "duart40", "duart39"}),
- m_rtc(*this, "rtc"),
- m_maincpu(*this, "maincpu"),
- m_microtouch(*this, "microtouch"),
- m_nvram(*this, "nvram"),
- m_ram62256(*this, "ram62256"),
- m_backup(*this, "backup"),
- m_vram(*this, "vram"),
- m_gfxdecode(*this, "gfxdecode")
- { }
-
- void nevada(machine_config &config);
-
- void init_nevada();
-
-protected:
- virtual void video_start() override;
-
-private:
- required_device_array<mc68681_device, 3> m_duart;
- required_device<msm6242_device> m_rtc;
-
- required_device<cpu_device> m_maincpu;
- optional_device<microtouch_device> m_microtouch;
- required_device<nvram_device> m_nvram;
-
- required_shared_ptr<uint16_t> m_ram62256;
- required_shared_ptr<uint16_t> m_backup;
- required_shared_ptr<uint16_t> m_vram;
- required_device<gfxdecode_device> m_gfxdecode;
-
-
- //uint8_t* m_videoram;
- //uint8_t* m_colorram;
-
- tilemap_t *m_tilemap;
- uint16_t m_datA40000;
-
- void nvram_init(nvram_device &nvram, void *data, size_t size);
- uint32_t screen_update_nevada(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- void nevada_palette(palette_device &palette) const;
-
- template<int N> uint8_t duart_r(offs_t offset);
- template<int N> void duart_w(offs_t offset, uint8_t data);
- uint8_t rtc_r(offs_t offset);
- void rtc_w(offs_t offset, uint8_t data);
- uint16_t io_board_r();
- void io_board_w(uint16_t data);
- void io_board_x(uint16_t data);
- uint16_t nevada_sec_r();
- void nevada_sec_w(uint16_t data);
- void vram_w(offs_t offset, uint16_t data);
-
- DECLARE_MACHINE_START(nevada);
-
- TILE_GET_INFO_MEMBER(get_bg_tile_info);
-
- void nevada_map(address_map &map);
-};
-
-/*
-need further test on PAL16R8 (FlipFlop Trick with other bits ?)
-this DUMP is done writing 0 to 255 and reading output (probably not the good way.)
-
-PAL is connected on the UPPER byte D15..D8
-Address A40000..A40001
-2 Type of PAL (one for game, the other is to set game to fabric default)
-
-there is a 74LS173 on the LOWER byte that used bit D3..D0
-funny thing , the DOOR ACCESS Switch is connected on the CLEAR PIN of this 4bits register
-so when D3..D0 are LOW , DOOR is OPEN
-*/
-static const uint8_t pal35[256] = {
- 0x11, 0x42, 0x5b, 0xca, 0x19, 0x42, 0x5b, 0xca, 0x38, 0x63, 0x3a, 0x63, 0x3a, 0x63, 0x3a, 0x63,
- 0xd3, 0x08, 0x5b, 0xca, 0x19, 0xca, 0x19, 0xca, 0x18, 0xeb, 0x18, 0xeb, 0x18, 0xeb, 0x18, 0xeb,
- 0xd3, 0xca, 0x5b, 0xcc, 0x5b, 0xcc, 0x5b, 0xcc, 0xba, 0x63, 0x38, 0x65, 0x38, 0x65, 0x38, 0x65,
- 0xd1, 0xca, 0x5b, 0xc8, 0x5b, 0xc8, 0x5b, 0xc8, 0x9a, 0xeb, 0x1a, 0xed, 0x1a, 0xed, 0x1a, 0xed,
- 0x0c, 0x65, 0xf0, 0x00, 0x64, 0xf5, 0x04, 0x65, 0xb8, 0x25, 0x20, 0x20, 0x24, 0x24, 0x24, 0x24,
- 0xf0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xb8, 0x3d, 0xfc, 0x19, 0xfc, 0x19, 0xfc, 0x19,
- 0x44, 0xf9, 0xc4, 0xf9, 0xc4, 0xfd, 0xc4, 0xfd, 0xfc, 0xfd, 0xfc, 0xfd, 0xfc, 0xfd, 0xfc, 0xfd,
- 0xc0, 0xd9, 0xc8, 0xd9, 0xc8, 0xd9, 0xc8, 0xd9, 0xd8, 0xd9, 0xd8, 0xd9, 0xd8, 0xd9, 0xd8, 0xd9,
- 0x0c, 0x44, 0xfb, 0x04, 0x67, 0xd4, 0x0c, 0x44, 0xba, 0x24, 0x22, 0x02, 0x26, 0x06, 0x26, 0x06,
- 0xfb, 0x00, 0xfb, 0x00, 0xef, 0x10, 0xce, 0x18, 0xef, 0x18, 0xef, 0x18, 0xff, 0x18, 0xff, 0x18,
- 0x44, 0xf8, 0xc6, 0xd8, 0xce, 0xdc, 0xce, 0xdc, 0xef, 0x9e, 0x67, 0xb8, 0x67, 0xbc, 0x67, 0xbc,
- 0xc6, 0xd8, 0xca, 0xd8, 0xca, 0xd8, 0xca, 0xd8, 0xcb, 0x9a, 0xef, 0x9a, 0xff, 0xd8, 0xdb, 0xd8,
- 0x66, 0xf4, 0x00, 0x64, 0xba, 0x25, 0x22, 0x22, 0x26, 0x26, 0x26, 0x26, 0xf2, 0x00, 0xfa, 0x00,
- 0xfa, 0x00, 0xfa, 0x00, 0xba, 0x3d, 0xfa, 0x19, 0xfa, 0x19, 0xfa, 0x19, 0x44, 0xf9, 0xc2, 0xf0,
- 0xc2, 0xf4, 0xc2, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, 0xc2, 0xd0, 0xca, 0xd0,
- 0xca, 0xd0, 0xca, 0xd0, 0xda, 0xd0, 0xda, 0xd0, 0xda, 0xd0, 0xda, 0xd0, 0x08, 0x63, 0xd3, 0x08 };
-
-
-/***************************************************************************/
-/******************** VIDEO SECTION ************************************/
-/***************************************************************************/
-
-static const gfx_layout charlayout =
-{
- /* Todo , just for sample */
-
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 5*4, 4*4, 7*4, 6*4, 1*4, 0*4, 3*4, 2*4 },
- { 0*8*4, 1*8*4, 2*8*4, 3*8*4, 4*8*4, 5*8*4, 6*8*4, 7*8*4 },
- 8*8*4
-};
-
-/***************************************************************************/
-
-void nevada_state::vram_w(offs_t offset, uint16_t data)
-{
-// Todo, Just for sample
-
- m_vram[offset] = data;
- m_tilemap->mark_tile_dirty(offset / 2);
-
-}
-
-/***************************************************************************/
-static GFXDECODE_START( gfx_nevada )
- /* Todo , just for sample */
- GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 8 )
-GFXDECODE_END
-
-/***************************************************************************/
-
-TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info )
-{
- //int attr = m_colorram[tile_index];
- int code = m_vram[tile_index*2+1];
- //int bank = (attr & 0x02) >> 1;
- //int color = (attr & 0x3c) >> 2;
-
- tileinfo.set(0, code, 0, 0);
-
-}
-
-
-/***************************************************************************/
-void nevada_state::video_start()
-{
- m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nevada_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 31,31);
-}
-
-/***************************************************************************/
-uint32_t nevada_state::screen_update_nevada(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- return 0;
-}
-
-/***************************************************************************/
-void nevada_state::nevada_palette(palette_device &palette) const
-{
- // Palette init
-}
-
-/***************************************************************************/
-/******************** NVRAM SECTION ************************************/
-/***************************************************************************/
-
-void nevada_state::nvram_init(nvram_device &nvram, void *data, size_t size)
-{
- memset(data, 0x00, size);
- if (memregion("defaults")->base())
- memcpy(data, memregion("defaults")->base(), memregion("defaults")->bytes());
-}
-
-
-/***************************************************************************
-
- U18 MC68681 RS232 UART SIDEA = MODEM 1200 Baud
- U18 MC68681 RS232 UART SIDEB = not used
- Interrupt 4 (autovectored)
-
- U39 MC68681 RS232 UART SIDEA = Printer J3 (rs232)
- U39 MC68681 RS232 UART SIDEB = Player Tracking Interface J2 (not used)
- Interrupt 3 (autovectored)
-
- 68681 DUART <-> Microtouch touch screen controller communication
- U40 MC68681 RS232 UART SIDEA = TouchScreen J1 (RS232)
- U40 MC68681 RS232 UART SIDEB = JCM Bill Acceptor (RS422)
- Interrupt 5 (autovectored)
-***************************************************************************/
-
-template<int N>
-uint8_t nevada_state::duart_r(offs_t offset)
-{
- return m_duart[N]->read(offset >> 3);
-}
-
-template<int N>
-void nevada_state::duart_w(offs_t offset, uint8_t data)
-{
- m_duart[N]->write(offset >> 3, data);
-}
-
-/***************************************************************************/
-/********************* RTC SECTION ********************************/
-/***************************************************************************/
-
-uint8_t nevada_state::rtc_r(offs_t offset)
-{
- return m_rtc->read(offset >> 3);
-}
-
-void nevada_state::rtc_w(offs_t offset, uint8_t data)
-{
- m_rtc->write(offset >> 3, data);
-}
-
-
-/***************************************************************************/
-uint16_t nevada_state::io_board_r()
-{
- // IO board Serial communication 0xA00000
- return 1;
-}
-/***************************************************************************/
-void nevada_state::io_board_w(uint16_t data)
-{
- // IO board Serial communication 0xA00000 on bit0
-}
-/***************************************************************************/
-void nevada_state::io_board_x(uint16_t data)
-{
- // IO board Serial communication 0xA80000 on bit15
-}
-
-/***************************************************************************/
-uint16_t nevada_state::nevada_sec_r()
-{
-// D3..D0 = DOOR OPEN or Track STATE of PAL35
- uint16_t res;
- /* UPPER byte is use for input in PAL35 */
- // 74LS173 $bits Register used LOWER bits D3..D0 for PAL35 state and DOOR LOGIC SWITCH
- res = pal35[m_datA40000 >> 8];
- res = res << 8;
- res = res | (m_datA40000 & 0x00FF);
-
- return res;
-}
-/***************************************************************************/
-void nevada_state::nevada_sec_w(uint16_t data)
-{
- // 74LS173 $bits Register used LOWER bits D3..D0 for DOOR LOGIC SWITCH
- m_datA40000 = data | 0x00f0; // since D7..D4 are not used and are connected to PULLUP
-// popmessage("WRITE %04x %04x ",datA40000,data);
-}
-
-/***************************************************************************/
-
-/*
-DOOR Switch desc
-1 x FRONT DOOR SW
-1 x REAR DOOR SW
-1 x COIN DOOR SW
-1 x TOP DOOR SW
-1 x COMPUTER DOOR SW
-
-Interrupt Vector
-INT1 RTC MSM6242
-INT2 nc
-INT3 UART U39
-INT4 UART U18
-INT5 UART U40
-INT6 nc
-INT7 Seem to be used for confirmation of Ds1232 WDT work (need futher check)
-
-U40 MC68681 RS232 UART SIDEA = TouchScreen J1 (RS232)
-U40 MC68681 RS232 UART SIDEB = JCM Bill Acceptor (RS422)
-
-U39 MC68681 RS232 UART SIDEA = Printer J3 (rs232)
-U39 MC68681 RS232 UART SIDEB = Player Tracking Interface J2 (not used)
-
-U18 MC68681 RS232 UART SIDEA = MODEM LOW SPEED 1200 BAUD from XECOM
-
-U18 MC68681 PIN4 IP1 from U16 (75HC189 pin6) from PIN2 J90 UNKNOWN !
-U18 MC68681 PIN36 IP2 ACCESS DOOR SWITCH
-U18 MC68681 PIN2 IP3 LOW Battery Detector for ACCESS DOOR SWITCH
-U18 MC68681 PIN39 IP4 from U12 75174 UNKNOWN !
-U18 MC68681 PIN38 IP5 from U8 smart Battery (not used)
-
-U39 MC68681 PIN7 IP0 Printer Data Terminal Ready
-U39 MC68681 PIN4 IP1 COIN INPUT
-U39 MC68681 PIN2 IP3 COIN INPUT
-U39 MC68681 Pin38 IP5 JCM Bill Acceptor (J4-1,J4-2)
-U39 MC68681 PIN29 OP0 Printer Clear To Send
-
-U40 MC68681 PIN4 IP1 COIN INPUT
-U40 MC68681 PIN2 IP3 COIN INPUT
-U40 MC68681 PIN38 IP5 from U51 DS1260 smart Battery POWER FAIL FLAG
-
-U40 MC68681 Pin12 OP1 JCM Bill Acceptor (Enable Comm. U34)
-U40 MC68681 Pin27 OP4 JCM Bill Acceptor (J4-6, J4-7 Control)
-
-// missing address for :
-// external I/O board communication via PAL23
-
- A23 A22 A21 A20 | A19 A18 A17 A16 | A15 A14 A13 A12 | A11 A10 A9 A8 | A7 A6 A5 A4 | A3 A2 A1 xx
- Memory Map (generic)
- --------------------
- 00000000 0000FFFF NVRAM (only 0..FFFF vector and jump) 16bits
- 00010000 00011FFF BACKUP1 8bits
- 00020000 00021FFF BACKUP2 8bits
- 00B00000 00B01FFF VIDEO RAM 8bits
- 00FA0000 00FBFFFF Not used (Expension board SRAM)
- 00FC0000 00FDFFFF PROGRAM 16bits
- 00FE0000 00FFFFFF BOOTLOADER 16bits
-
- 00010001
- 00014001
- 00020001
- 00024001
- 00900001 6845 CS CRTC U8 RS=LOW ADDRESS REGISTER (A15 ON RS) Data bus on D7..D0
- 00980001 6845 CS CRTC U8 RS=HIGH DATA REGISTER (A15 ON RS)
- 00A00001 I/O Board Communication
- 00A08001 I/O Board Communication
- 00A10000 WDT STROBE DS1232 WatchDog Controller (this address reset Strobe of Ds1232)
- 00A20001 AY8912 BDIR AUDIO Data bus on D7..D0
- 00A28001 AY8912 BC1 AUDIO
- 00A300x1 6242 CS RTC U41 A0..A3 (A4..A7 ON A0..A3) Data bus on D3..D0
- 00A4000x PAL CS READ U35 SECURITY PAL16R8 Data bus on D15..D8
- 00A4000x PAL CLK WRITE U35 SECURITY PAL16R8
- 00A4000x CLK WRITE U50 74LS173 for DOOR LOGIC SW on D3..D0
- 00A70000 ???
- 00B100x0 68681 CS UART U40 RS1..RS4 REGISTER (A4..A7 ON RS1..RS4) Data bus on D7..D0
- 00B200x0 68681 CS UART U39 RS1..RS4 REGISTER (A4..A7 ON RS1..RS4) Data bus on D7..D0
- 00E000x0 68681 CS UART U18 RS1..RS4 REGISTER (A4..A7 ON RS1..RS4) Data bus on D15..D8
-*/
-/***************************************************************************/
-void nevada_state::nevada_map(address_map &map)
-{
- map(0x00000000, 0x0000ffff).ram().share("ram62256");
- map(0x00010000, 0x00021fff).ram().share("backup");
- map(0x00900001, 0x00900001).w("crtc", FUNC(mc6845_device::address_w));
- map(0x00908001, 0x00908001).w("crtc", FUNC(mc6845_device::register_w));
- map(0x00a00000, 0x00a00001).rw(FUNC(nevada_state::io_board_r), FUNC(nevada_state::io_board_w));
- map(0x00a08000, 0x00a08001).w(FUNC(nevada_state::io_board_x));
- map(0x00a10000, 0x00a10001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
- map(0x00a20001, 0x00a20001).w("aysnd", FUNC(ay8910_device::address_w));
- map(0x00a28001, 0x00a28001).w("aysnd", FUNC(ay8910_device::data_w));
- map(0x00a30000, 0x00a30001).select(0xf0).rw(FUNC(nevada_state::rtc_r), FUNC(nevada_state::rtc_w)).umask16(0x00ff);
- map(0x00a40000, 0x00a40001).rw(FUNC(nevada_state::nevada_sec_r), FUNC(nevada_state::nevada_sec_w));
- map(0x00b00000, 0x00b03fff).ram().w(FUNC(nevada_state::vram_w)).share("vram");
- map(0x00b10000, 0x00b10001).select(0xf0).rw(FUNC(nevada_state::duart_r<1>), FUNC(nevada_state::duart_w<1>)).umask16(0x00ff); // Lower byte
- map(0x00b20000, 0x00b20001).select(0xf0).rw(FUNC(nevada_state::duart_r<2>), FUNC(nevada_state::duart_w<2>)).umask16(0x00ff); // Lower byte
- map(0x00e00000, 0x00e00001).select(0xf0).rw(FUNC(nevada_state::duart_r<0>), FUNC(nevada_state::duart_w<0>)).umask16(0xff00); // Upper byte
- map(0x00fa0000, 0x00fbffff).ram(); // not used
- map(0x00fc0000, 0x00ffffff).rom(); // ROM ext + ROM boot
-}
-
-
-/***************************************************************************/
-
-/*
-U18 MC68681 PIN4 IP1 from U16 (75HC189 pin6) from PIN2 J90 UNKNOWN !
-U18 MC68681 PIN36 IP2 ACCESS DOOR SWITCH
-U18 MC68681 PIN2 IP3 LOW Battery Detector for ACCESS DOOR SWITCH
-U18 MC68681 PIN39 IP4 from U12 75174 UNKNOWN !
-U18 MC68681 PIN38 IP5 from U8 smart Battery (not used)
-
-U39 MC68681 PIN7 IP0 Printer Data Terminal Ready
-U39 MC68681 PIN4 IP1 COIN INPUT
-U39 MC68681 PIN2 IP3 COIN INPUT
-U39 MC68681 Pin38 IP5 JCM Bill Acceptor (J4-1,J4-2)
-U39 MC68681 PIN29 OP0 Printer Clear To Send
-U39 MC68681 PIN27 OP4 ROM CHAR A14
-
-U40 MC68681 PIN4 IP1 COIN INPUT
-U40 MC68681 PIN2 IP3 COIN INPUT
-U40 MC68681 PIN38 IP5 from U51 DS1260 smart Battery POWER FAIL FLAG
-
-U40 MC68681 Pin12 OP1 JCM Bill Acceptor (Enable Comm. U34)
-U40 MC68681 Pin27 OP4 JCM Bill Acceptor (J4-6, J4-7 Control)
-
-*/
-/***************************************************************************/
-static INPUT_PORTS_START( nevada )
- PORT_START("DSW1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("U16 pin6")
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("DOOR SW1")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("LOW BATT on DOOR ACCESS")
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("U12 ??")
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("LOW BATT U8")
- PORT_START("DSW2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("PRINTER READY")
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_START("DSW3")
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN4 )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("LOW BATT U51")
-INPUT_PORTS_END
-
-/***************************************************************************/
-/*************************
-* Machine start *
-*************************/
-
-MACHINE_START_MEMBER(nevada_state, nevada)
-{
- m_nvram->set_base(m_ram62256, 0x1000);
-}
-
-/***************************************************************************/
-
-/*************************
-* Machine Driver *
-*************************/
-
-void nevada_state::nevada(machine_config &config)
-{
- // basic machine hardware
- M68000(config, m_maincpu, MASTER_CPU);
- m_maincpu->set_addrmap(AS_PROGRAM, &nevada_state::nevada_map);
-
- WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_msec(150)); /* 150ms Ds1232 TD to Ground */
-
- MCFG_MACHINE_START_OVERRIDE(nevada_state, nevada)
-
- NVRAM(config, "nvram").set_custom_handler(FUNC(nevada_state::nvram_init));
-
- // video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((42+1)*8, (32+1)*8); /* From MC6845 init, registers 00 & 04 (programmed with value-1). */
- screen.set_visarea(0*8, 31*8-1, 0*8, 31*8-1); /* From MC6845 init, registers 01 & 06. */
- screen.set_screen_update(FUNC(nevada_state::screen_update_nevada));
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_nevada);
- PALETTE(config, "palette", FUNC(nevada_state::nevada_palette), 256);
-
- mc6845_device &crtc(MC6845(config, "crtc", MC6845_CLOCK));
- crtc.set_screen("screen");
- crtc.set_show_border_area(false);
- crtc.set_char_width(8);
-
- // sound hardware
- SPEAKER(config, "mono").front_center();
-
- AY8912(config, "aysnd", SOUND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.75);
-
- MC68681(config, m_duart[0], XTAL(3'686'400)); // UARTA = Modem 1200Baud
- m_duart[0]->irq_cb().set_inputline(m_maincpu, M68K_IRQ_4);
- m_duart[0]->inport_cb().set_ioport("DSW1");
-
- MC68681(config, m_duart[1], XTAL(3'686'400)); // UARTA = Printer
- m_duart[1]->irq_cb().set_inputline(m_maincpu, M68K_IRQ_3);
- m_duart[1]->inport_cb().set_ioport("DSW2");
-
- MC68681(config, m_duart[2], XTAL(3'686'400)); // UARTA = Touch , UARTB = Bill Acceptor
- m_duart[2]->irq_cb().set_inputline(m_maincpu, M68K_IRQ_5);
- m_duart[2]->a_tx_cb().set(m_microtouch, FUNC(microtouch_device::rx));
- m_duart[2]->inport_cb().set_ioport("DSW3");
-
- MICROTOUCH(config, m_microtouch, 9600).stx().set(m_duart[1], FUNC(mc68681_device::rx_a_w));
-
- /* devices */
- MSM6242(config, m_rtc, XTAL(32'768));
- m_rtc->out_int_handler().set_inputline(m_maincpu, M68K_IRQ_1); // rtc interrupt on INT1
-}
-
-/***************************************************************************/
-ROM_START( nevada )
- ROM_REGION( 0x1000000, "maincpu", 0 ) /* 2 x 27C512 */
- ROM_LOAD16_BYTE( "u9even.bin" , 0xfc0000, 0x010000, CRC(adb207bd) SHA1(3e3509b78fdf32785f92cb21272694673d25c563) ) // program fc0000..fdffff
- ROM_LOAD16_BYTE( "u10odd.bin" , 0xfc0001, 0x010000, CRC(a79778d7) SHA1(6ff969f09d9781479360bca3403b927099ad6481) )
-
- ROM_LOAD16_BYTE( "u31even.bin", 0xfe0000, 0x010000, CRC(c9779f30) SHA1(5310b3d8b5e887313ce8059bd72d0730a295074f) ) // Boot fe0000..ffffff
- ROM_LOAD16_BYTE( "u32odd.bin" , 0xfe0001, 0x010000, CRC(51035ed1) SHA1(66cbf582cdf34cf3dde30cf8a99bbced4af1ce6f) )
-
- ROM_REGION16_BE( 0x0010000, "defaults", 0 ) /* 2 x 62256 NVRAM */
- ROM_LOAD16_BYTE( "u30nv_even.bin", 0x000000, 0x008000, CRC(11f5c663) SHA1(f447fd59010bc7fbbda321c5aaf13e23c2aebd40) ) // NVRAM even (RESET + Vector table in NVRAM)
- ROM_LOAD16_BYTE( "u33nv_odd.bin" , 0x000001, 0x008000, CRC(20623da2) SHA1(2dd31a96f0a3454855cd975e8ee95e43316344e0) ) // NVRAM odd
-
- ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "u34char.bin", 0x00000 , 0x08000, CRC(6f1c6953) SHA1(e8db3b1d3fc3ec1c3dca155517553bd0000a2249) ) /* Characters */
-
- /*
- BACKUP RAM
- PAL DUMP
- */
-ROM_END
-
-/***************************************************************************/
-/*************************
-* Driver Init *
-*************************/
-void nevada_state::init_nevada()
-{
- uint16_t *ROM = (uint16_t *)memregion("maincpu")->base();
-
- memset(m_backup,0x00,m_backup.bytes()); // temp
-
- /* Patch for WDT test with int Level7 */
- /* PATCH FE0086 4278 0414 Clrf $0414 */
- /* this skip the test for the WDT */
-// ROM[0xFE0086/2] = 0x4278;
-// ROM[0xFE0088/2] = 0x0414;
-
- // Skip PAL SECURITY
- ROM[0xFE0248/2] = 0x4E71; // nop
- ROM[0xFE05D0/2] = 0x4E71; // nop
- ROM[0xFE05D8/2] = 0x6014; // bra
- ROM[0xFE0606/2] = 0x600A; // bra
-// ROM[0xFE18B4/2] = 0x4E71; // nop
-
-
-}
-/***************************************************************************/
-
-/*************************
-* Game Drivers *
-*************************/
-
-// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS
-GAME( 1995, nevada, 0, nevada, nevada, nevada_state, init_nevada, ROT0, "VLC Inc.", "VLC Nevada", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )