mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
freeway: Separate from amusco.cpp into its own skeleton driver (nw)
pit8253, pic8259: Default input clocks to zero (nw)
This commit is contained in:
parent
dc3a9f87ab
commit
d09ca5ca30
@ -4651,6 +4651,7 @@ files {
|
|||||||
MAME_DIR .. "src/mame/drivers/freekick.cpp",
|
MAME_DIR .. "src/mame/drivers/freekick.cpp",
|
||||||
MAME_DIR .. "src/mame/includes/freekick.h",
|
MAME_DIR .. "src/mame/includes/freekick.h",
|
||||||
MAME_DIR .. "src/mame/video/freekick.cpp",
|
MAME_DIR .. "src/mame/video/freekick.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/freeway.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/fungames.cpp",
|
MAME_DIR .. "src/mame/drivers/fungames.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/funkball.cpp",
|
MAME_DIR .. "src/mame/drivers/funkball.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/gambl186.cpp",
|
MAME_DIR .. "src/mame/drivers/gambl186.cpp",
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
class pic8259_device : public device_t
|
class pic8259_device : public device_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
|
||||||
auto out_int_callback() { return m_out_int_func.bind(); } // Interrupt request output to CPU or master 8259 (active high)
|
auto out_int_callback() { return m_out_int_func.bind(); } // Interrupt request output to CPU or master 8259 (active high)
|
||||||
auto in_sp_callback() { return m_in_sp_func.bind(); } // Slave program select (VCC = master; GND = slave; pin becomes EN output in buffered mode)
|
auto in_sp_callback() { return m_in_sp_func.bind(); } // Slave program select (VCC = master; GND = slave; pin becomes EN output in buffered mode)
|
||||||
@ -118,7 +118,7 @@ private:
|
|||||||
class v5x_icu_device : public pic8259_device
|
class v5x_icu_device : public pic8259_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
v5x_icu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
v5x_icu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool is_x86() const override { return true; }
|
virtual bool is_x86() const override { return true; }
|
||||||
|
@ -104,7 +104,7 @@ class pit8253_device : public device_t
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
pit8253_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
pit8253_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
|
||||||
// configuration helpers
|
// configuration helpers
|
||||||
template <unsigned N> void set_clk(double clk) { m_clk[N] = clk; }
|
template <unsigned N> void set_clk(double clk) { m_clk[N] = clk; }
|
||||||
@ -157,7 +157,7 @@ DECLARE_DEVICE_TYPE(PIT8253, pit8253_device)
|
|||||||
class pit8254_device : public pit8253_device
|
class pit8254_device : public pit8253_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
pit8254_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
pit8254_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void readback_command(uint8_t data) override;
|
virtual void readback_command(uint8_t data) override;
|
||||||
@ -168,7 +168,7 @@ DECLARE_DEVICE_TYPE(PIT8254, pit8254_device)
|
|||||||
class fe2010_pit_device : public pit8253_device
|
class fe2010_pit_device : public pit8253_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
fe2010_pit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
fe2010_pit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_DEVICE_TYPE(FE2010_PIT, fe2010_pit_device)
|
DECLARE_DEVICE_TYPE(FE2010_PIT, fe2010_pit_device)
|
||||||
|
@ -399,6 +399,7 @@ foodf.cpp
|
|||||||
forte2.cpp
|
forte2.cpp
|
||||||
fortecar.cpp
|
fortecar.cpp
|
||||||
freekick.cpp
|
freekick.cpp
|
||||||
|
freeway.cpp
|
||||||
fresh.cpp
|
fresh.cpp
|
||||||
fromanc2.cpp
|
fromanc2.cpp
|
||||||
fromance.cpp
|
fromance.cpp
|
||||||
|
@ -117,7 +117,6 @@ public:
|
|||||||
|
|
||||||
void amusco(machine_config &config);
|
void amusco(machine_config &config);
|
||||||
void draw88pkr(machine_config &config);
|
void draw88pkr(machine_config &config);
|
||||||
void freeway(machine_config &config);
|
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(coin_irq);
|
DECLARE_WRITE_LINE_MEMBER(coin_irq);
|
||||||
|
|
||||||
@ -140,9 +139,8 @@ private:
|
|||||||
MC6845_UPDATE_ROW(update_row);
|
MC6845_UPDATE_ROW(update_row);
|
||||||
void amusco_palette(palette_device &palette) const;
|
void amusco_palette(palette_device &palette) const;
|
||||||
|
|
||||||
void amusco_mem_map(address_map &map);
|
void mem_map(address_map &map);
|
||||||
void amusco_io_map(address_map &map);
|
void io_map(address_map &map);
|
||||||
void freeway_mem_map(address_map &map);
|
|
||||||
|
|
||||||
std::unique_ptr<uint8_t []> m_videoram;
|
std::unique_ptr<uint8_t []> m_videoram;
|
||||||
tilemap_t *m_bg_tilemap;
|
tilemap_t *m_bg_tilemap;
|
||||||
@ -211,18 +209,12 @@ void amusco_state::machine_start()
|
|||||||
* Memory Map Information *
|
* Memory Map Information *
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
void amusco_state::amusco_mem_map(address_map &map)
|
void amusco_state::mem_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00000, 0x0ffff).ram();
|
map(0x00000, 0x0ffff).ram();
|
||||||
map(0xf8000, 0xfffff).rom().region("maincpu", 0);
|
map(0xf8000, 0xfffff).rom().region("maincpu", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void amusco_state::freeway_mem_map(address_map &map)
|
|
||||||
{
|
|
||||||
map(0x00000, 0x0ffff).ram();
|
|
||||||
map(0xf0000, 0xfffff).rom().region("maincpu", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
READ8_MEMBER( amusco_state::mc6845_r)
|
READ8_MEMBER( amusco_state::mc6845_r)
|
||||||
{
|
{
|
||||||
if(offset & 1)
|
if(offset & 1)
|
||||||
@ -373,7 +365,7 @@ WRITE8_MEMBER(amusco_state::rtc_control_w)
|
|||||||
m_rtc->read_w(BIT(data, 4));
|
m_rtc->read_w(BIT(data, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
void amusco_state::amusco_io_map(address_map &map)
|
void amusco_state::io_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0000, 0x0001).rw(FUNC(amusco_state::mc6845_r), FUNC(amusco_state::mc6845_w));
|
map(0x0000, 0x0001).rw(FUNC(amusco_state::mc6845_r), FUNC(amusco_state::mc6845_w));
|
||||||
map(0x0010, 0x0011).w(m_pic, FUNC(pic8259_device::write));
|
map(0x0010, 0x0011).w(m_pic, FUNC(pic8259_device::write));
|
||||||
@ -544,8 +536,8 @@ MACHINE_CONFIG_START(amusco_state::amusco)
|
|||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
I8088(config, m_maincpu, CPU_CLOCK); // 5 MHz ?
|
I8088(config, m_maincpu, CPU_CLOCK); // 5 MHz ?
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &amusco_state::amusco_mem_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &amusco_state::mem_map);
|
||||||
m_maincpu->set_addrmap(AS_IO, &amusco_state::amusco_io_map);
|
m_maincpu->set_addrmap(AS_IO, &amusco_state::io_map);
|
||||||
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
|
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
|
||||||
|
|
||||||
PIC8259(config, m_pic, 0);
|
PIC8259(config, m_pic, 0);
|
||||||
@ -613,14 +605,6 @@ void amusco_state::draw88pkr(machine_config &config)
|
|||||||
//MCFG_DEVICE_MODIFY("ppi_outputs") // Some bits are definitely different
|
//MCFG_DEVICE_MODIFY("ppi_outputs") // Some bits are definitely different
|
||||||
}
|
}
|
||||||
|
|
||||||
void amusco_state::freeway(machine_config &config)
|
|
||||||
{
|
|
||||||
amusco(config);
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &amusco_state::freeway_mem_map);
|
|
||||||
|
|
||||||
//TODO: everything
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
* Rom Load *
|
* Rom Load *
|
||||||
*************************/
|
*************************/
|
||||||
@ -663,27 +647,6 @@ ROM_START( draw88pkr )
|
|||||||
ROM_LOAD( "u37.bin", 0x8000, 0x4000, CRC(6e23b9f2) SHA1(6916828d84d1ecb44dc454e6786f97801a8550c7) )
|
ROM_LOAD( "u37.bin", 0x8000, 0x4000, CRC(6e23b9f2) SHA1(6916828d84d1ecb44dc454e6786f97801a8550c7) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
// this might better fit another driver
|
|
||||||
// 8088 CPU
|
|
||||||
// Intel 8254 Programmable Interval Timer
|
|
||||||
// Intel 8259
|
|
||||||
// 2x 8k SRAM
|
|
||||||
// 1x 32k SRAM
|
|
||||||
// 6845 video chip
|
|
||||||
// 5 roms
|
|
||||||
// Oscillator 10 MHz
|
|
||||||
|
|
||||||
ROM_START( freeway )
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD( "vip88.bin", 0x00000, 0x10000, CRC(aeba6d5e) SHA1(bb84f7040bf1b6976cb2c50b1ffdc59ae88df223) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "gfx1", 0 ) // loading might be wrong
|
|
||||||
ROM_LOAD( "sb_51.bin", 0x00000, 0x8000, CRC(d25bd328) SHA1(b8c692298f6dc5fd5ae2f9e7701e14b0436a95bb) ) // xxx0xxxxxxxxxxx = 0xFF
|
|
||||||
ROM_LOAD( "sb_52.bin", 0x08000, 0x8000, CRC(f2b33acd) SHA1(e4786b4f00871d771aadacd9d6ec767691f4d939) )
|
|
||||||
ROM_LOAD( "sb_53.bin", 0x10000, 0x8000, CRC(50407ae6) SHA1(2c6c4803905bed5f27c6783f99a24f8dee62c19b) )
|
|
||||||
ROM_LOAD( "sb_cor.bin", 0x18000, 0x8000, CRC(5f86a160) SHA1(f21b7e0e6a407371c252d6fde6fcb32a2682824c) ) // 00000xxxxxxxxxx = 0xFF
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
* Game Drivers *
|
* Game Drivers *
|
||||||
*************************/
|
*************************/
|
||||||
@ -691,4 +654,3 @@ ROM_END
|
|||||||
/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
|
/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
|
||||||
GAMEL( 1987, amusco, 0, amusco, amusco, amusco_state, empty_init, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
|
GAMEL( 1987, amusco, 0, amusco, amusco, amusco_state, empty_init, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
|
||||||
GAMEL( 1988, draw88pkr, 0, draw88pkr, draw88pkr, amusco_state, empty_init, ROT0, "BTE, Inc.", "Draw 88 Poker (V2.0)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
|
GAMEL( 1988, draw88pkr, 0, draw88pkr, draw88pkr, amusco_state, empty_init, ROT0, "BTE, Inc.", "Draw 88 Poker (V2.0)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
|
||||||
GAMEL( 1999, freeway, 0, draw88pkr, draw88pkr, amusco_state, empty_init, ROT0, "NVC Electronica", "FreeWay (V5.12)", MACHINE_IS_SKELETON | MACHINE_NODEVICE_PRINTER, layout_amusco ) // might need an own driver
|
|
||||||
|
107
src/mame/drivers/freeway.cpp
Normal file
107
src/mame/drivers/freeway.cpp
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:AJR
|
||||||
|
/*********************************************************************
|
||||||
|
|
||||||
|
FreeWay (c) 1999 NVC Electronica Ltd.
|
||||||
|
|
||||||
|
Skeleton driver.
|
||||||
|
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/i86/i86.h"
|
||||||
|
#include "machine/pit8253.h"
|
||||||
|
#include "machine/pic8259.h"
|
||||||
|
#include "video/mc6845.h"
|
||||||
|
#include "screen.h"
|
||||||
|
|
||||||
|
class freeway_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
freeway_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag)
|
||||||
|
, m_maincpu(*this, "maincpu")
|
||||||
|
, m_pic(*this, "pic")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeway(machine_config &config);
|
||||||
|
|
||||||
|
private:
|
||||||
|
MC6845_UPDATE_ROW(update_row);
|
||||||
|
|
||||||
|
void mem_map(address_map &map);
|
||||||
|
void io_map(address_map &map);
|
||||||
|
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<pic8259_device> m_pic;
|
||||||
|
};
|
||||||
|
|
||||||
|
MC6845_UPDATE_ROW(freeway_state::update_row)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeway_state::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x00000, 0x07fff).ram();
|
||||||
|
map(0xa0000, 0xa0fff).ram(); // video RAM?
|
||||||
|
map(0xa4000, 0xa4fff).ram(); // video RAM?
|
||||||
|
map(0xf0000, 0xfffff).rom().region("program", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeway_state::io_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x0020, 0x0021).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
|
||||||
|
map(0x0030, 0x0033).w("pit", FUNC(pit8254_device::write));
|
||||||
|
map(0x03d0, 0x03d0).w("crtc", FUNC(mc6845_device::address_w));
|
||||||
|
map(0x03d1, 0x03d1).w("crtc", FUNC(mc6845_device::register_w));
|
||||||
|
}
|
||||||
|
|
||||||
|
static INPUT_PORTS_START(freeway)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
void freeway_state::freeway(machine_config &config)
|
||||||
|
{
|
||||||
|
I8088(config, m_maincpu, 10_MHz_XTAL / 2); // divider unknown
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &freeway_state::mem_map);
|
||||||
|
m_maincpu->set_addrmap(AS_IO, &freeway_state::io_map);
|
||||||
|
m_maincpu->set_irq_acknowledge_callback("pic", FUNC(pic8259_device::inta_cb));
|
||||||
|
|
||||||
|
PIC8259(config, m_pic);
|
||||||
|
m_pic->out_int_callback().set_inputline(m_maincpu, 0);
|
||||||
|
|
||||||
|
PIT8254(config, "pit");
|
||||||
|
|
||||||
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
|
screen.set_raw(10_MHz_XTAL / 2, 320, 0, 256, 312, 0, 256);
|
||||||
|
screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
|
||||||
|
|
||||||
|
mc6845_device &crtc(MC6845(config, "crtc", 10_MHz_XTAL / 16));
|
||||||
|
crtc.set_char_width(8);
|
||||||
|
crtc.set_show_border_area(false);
|
||||||
|
crtc.set_screen("screen");
|
||||||
|
crtc.set_update_row_callback(FUNC(freeway_state::update_row), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 8088 CPU
|
||||||
|
// Intel 8254 Programmable Interval Timer
|
||||||
|
// Intel 8259
|
||||||
|
// 2x 8k SRAM
|
||||||
|
// 1x 32k SRAM
|
||||||
|
// 6845 video chip
|
||||||
|
// 5 roms
|
||||||
|
// Oscillator 10 MHz
|
||||||
|
|
||||||
|
ROM_START(freeway)
|
||||||
|
ROM_REGION(0x10000, "program", 0)
|
||||||
|
ROM_LOAD("vip88.bin", 0x00000, 0x10000, CRC(aeba6d5e) SHA1(bb84f7040bf1b6976cb2c50b1ffdc59ae88df223))
|
||||||
|
|
||||||
|
ROM_REGION(0x20000, "gfx", 0) // loading might be wrong
|
||||||
|
ROM_LOAD("sb_51.bin", 0x00000, 0x8000, CRC(d25bd328) SHA1(b8c692298f6dc5fd5ae2f9e7701e14b0436a95bb)) // xxx0xxxxxxxxxxx = 0xFF
|
||||||
|
ROM_LOAD("sb_52.bin", 0x08000, 0x8000, CRC(f2b33acd) SHA1(e4786b4f00871d771aadacd9d6ec767691f4d939))
|
||||||
|
ROM_LOAD("sb_53.bin", 0x10000, 0x8000, CRC(50407ae6) SHA1(2c6c4803905bed5f27c6783f99a24f8dee62c19b))
|
||||||
|
ROM_LOAD("sb_cor.bin", 0x18000, 0x8000, CRC(5f86a160) SHA1(f21b7e0e6a407371c252d6fde6fcb32a2682824c)) // 00000xxxxxxxxxx = 0xFF
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
GAME(1999, freeway, 0, freeway, freeway, freeway_state, empty_init, ROT0, "NVC Electronica", "FreeWay (V5.12)", MACHINE_IS_SKELETON)
|
@ -1268,7 +1268,6 @@ kccomp // VEB KC compact
|
|||||||
@source:amusco.cpp
|
@source:amusco.cpp
|
||||||
amusco // 1987, Amusco.
|
amusco // 1987, Amusco.
|
||||||
draw88pkr // 1988, BTE, Inc.
|
draw88pkr // 1988, BTE, Inc.
|
||||||
freeway
|
|
||||||
|
|
||||||
@source:amust.cpp
|
@source:amust.cpp
|
||||||
amust //
|
amust //
|
||||||
@ -13063,6 +13062,9 @@ pbillrd // (c) 1987 Nihon System
|
|||||||
pbillrds // (c) 1987 Nihon System (Sega license?)
|
pbillrds // (c) 1987 Nihon System (Sega license?)
|
||||||
pbillrdsa // (c) 1987 Nihon System (Sega license?)
|
pbillrdsa // (c) 1987 Nihon System (Sega license?)
|
||||||
|
|
||||||
|
@source:freeway.cpp
|
||||||
|
freeway
|
||||||
|
|
||||||
@source:fresh.cpp
|
@source:fresh.cpp
|
||||||
fresh // (c) Chain Leisure
|
fresh // (c) Chain Leisure
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user