mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
coolpool: add vram mirror, merge driver files
This commit is contained in:
parent
f10b8ebf0c
commit
a8e009eee6
@ -870,12 +870,8 @@ void tms3201x_base_device<HighBits>::device_start()
|
||||
save_item(NAME(m_ALU.d));
|
||||
save_item(NAME(m_Preg.d));
|
||||
save_item(NAME(m_Treg));
|
||||
save_item(NAME(m_AR[0]));
|
||||
save_item(NAME(m_AR[1]));
|
||||
save_item(NAME(m_STACK[0]));
|
||||
save_item(NAME(m_STACK[1]));
|
||||
save_item(NAME(m_STACK[2]));
|
||||
save_item(NAME(m_STACK[3]));
|
||||
save_item(NAME(m_AR));
|
||||
save_item(NAME(m_STACK));
|
||||
save_item(NAME(m_INTF));
|
||||
save_item(NAME(m_opcode.d));
|
||||
save_item(NAME(m_oldacc.d));
|
||||
@ -987,7 +983,7 @@ int tms3201x_base_device<HighBits>::Ext_IRQ()
|
||||
{
|
||||
if (INTM == 0)
|
||||
{
|
||||
logerror("TMS32010: EXT INTERRUPT\n");
|
||||
standard_irq_callback(0, m_PC);
|
||||
m_INTF = TMS32010_INT_NONE;
|
||||
SET_FLAG(INTM_FLAG);
|
||||
PUSH_STACK(m_PC);
|
||||
@ -1008,7 +1004,7 @@ void tms3201x_base_device<HighBits>::execute_run()
|
||||
do
|
||||
{
|
||||
if (m_INTF) {
|
||||
/* Dont service INT if previous instruction was MPY, MPYK or EINT */
|
||||
/* Don't service INT if previous instruction was MPY, MPYK or EINT */
|
||||
if ((m_opcode.b.h != 0x6d) && ((m_opcode.b.h & 0xe0) != 0x80) && (m_opcode.w.l != 0x7f82))
|
||||
m_icount -= Ext_IRQ();
|
||||
}
|
||||
|
@ -28,12 +28,17 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "coolpool.h"
|
||||
|
||||
#include "cpu/tms32010/tms32010.h"
|
||||
#include "cpu/tms32025/tms32025.h"
|
||||
#include "cpu/tms34010/tms34010.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/dac.h"
|
||||
#include "video/tlc34076.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -50,14 +55,168 @@
|
||||
#define LOGPORT(...) LOGMASKED(LOG_PORT, __VA_ARGS__)
|
||||
#define LOGINPUT(...) LOGMASKED(LOG_INPUT, __VA_ARGS__)
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class coolpool_base_state : public driver_device
|
||||
{
|
||||
protected:
|
||||
coolpool_base_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_dsp(*this, "dsp")
|
||||
, m_main2dsp(*this, "main2dsp")
|
||||
, m_dsp2main(*this, "dsp2main")
|
||||
, m_nvram_timer(*this, "nvram_timer")
|
||||
, m_vram_base(*this, "vram_base")
|
||||
, m_nvram(*this, "nvram")
|
||||
, m_dsp_rom(*this, "dspdata")
|
||||
{ }
|
||||
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
|
||||
static constexpr unsigned NVRAM_UNLOCK_SEQ_LEN = 10;
|
||||
|
||||
required_device<tms34010_device> m_maincpu;
|
||||
required_device<cpu_device> m_dsp;
|
||||
|
||||
required_device<generic_latch_16_device> m_main2dsp;
|
||||
required_device<generic_latch_16_device> m_dsp2main;
|
||||
|
||||
required_device<timer_device> m_nvram_timer;
|
||||
|
||||
required_shared_ptr<uint16_t> m_vram_base;
|
||||
required_shared_ptr<uint16_t> m_nvram;
|
||||
required_region_ptr<uint8_t> m_dsp_rom;
|
||||
|
||||
uint32_t m_iop_romaddr = 0;
|
||||
|
||||
uint8_t m_newx[3]{};
|
||||
uint8_t m_newy[3]{};
|
||||
uint8_t m_oldx[3]{};
|
||||
uint8_t m_oldy[3]{};
|
||||
int m_dx[3]{};
|
||||
int m_dy[3]{};
|
||||
|
||||
uint16_t m_result = 0U;
|
||||
uint16_t m_lastresult = 0U;
|
||||
|
||||
uint16_t m_nvram_write_seq[NVRAM_UNLOCK_SEQ_LEN]{};
|
||||
uint8_t m_nvram_write_enable = 0U;
|
||||
uint8_t m_same_cmd_count = 0U;
|
||||
|
||||
void nvram_thrash_w(offs_t offset, uint16_t data);
|
||||
void nvram_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
void nvram_thrash_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
|
||||
uint16_t dsp_rom_r();
|
||||
void dsp_romaddr_w(offs_t offset, uint16_t data);
|
||||
|
||||
TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg);
|
||||
TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(nvram_write_timeout);
|
||||
};
|
||||
|
||||
class amerdart_state : public coolpool_base_state
|
||||
{
|
||||
public:
|
||||
amerdart_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: coolpool_base_state(mconfig, type, tag)
|
||||
, m_palette(*this, "palette")
|
||||
, m_in_xaxis(*this, "XAXIS%u", 1U)
|
||||
, m_in_yaxis(*this, "YAXIS%u", 1U)
|
||||
{ }
|
||||
|
||||
void amerdart(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_ioport_array<2> m_in_xaxis;
|
||||
required_ioport_array<2> m_in_yaxis;
|
||||
|
||||
bool m_old_cmd = false;
|
||||
|
||||
void misc_w(uint16_t data);
|
||||
int dsp_bio_line_r();
|
||||
uint16_t amerdart_trackball_r(offs_t offset);
|
||||
|
||||
TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(amerdart_audio_int_gen);
|
||||
|
||||
int amerdart_trackball_direction(int num, int data);
|
||||
|
||||
void dsp_io_map(address_map &map) ATTR_COLD;
|
||||
void dsp_pgm_map(address_map &map) ATTR_COLD;
|
||||
void main_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
class _9ballsht_state : public coolpool_base_state
|
||||
{
|
||||
public:
|
||||
_9ballsht_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: coolpool_base_state(mconfig, type, tag)
|
||||
, m_tlc34076(*this, "tlc34076")
|
||||
{ }
|
||||
|
||||
void _9ballsht(machine_config &config);
|
||||
|
||||
void init_9ballsht();
|
||||
|
||||
protected:
|
||||
required_device<tlc34076_device> m_tlc34076;
|
||||
|
||||
void misc_w(uint16_t data);
|
||||
uint16_t dsp_bio_line_r();
|
||||
uint16_t dsp_hold_line_r();
|
||||
|
||||
TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline);
|
||||
|
||||
void dsp_io_base_map(address_map &map) ATTR_COLD;
|
||||
void dsp_pgm_map(address_map &map) ATTR_COLD;
|
||||
|
||||
private:
|
||||
void nballsht_dsp_io_map(address_map &map) ATTR_COLD;
|
||||
void nballsht_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
class coolpool_state : public _9ballsht_state
|
||||
{
|
||||
public:
|
||||
coolpool_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: _9ballsht_state(mconfig, type, tag)
|
||||
, m_in1(*this, "IN1")
|
||||
, m_xaxis(*this, "XAXIS")
|
||||
, m_yaxis(*this, "YAXIS")
|
||||
{ }
|
||||
|
||||
void coolpool(machine_config &config);
|
||||
|
||||
private:
|
||||
required_ioport m_in1;
|
||||
required_ioport m_xaxis;
|
||||
required_ioport m_yaxis;
|
||||
|
||||
uint16_t coolpool_input_r(offs_t offset);
|
||||
|
||||
void coolpool_dsp_io_map(address_map &map) ATTR_COLD;
|
||||
void coolpool_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Local variables
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
||||
|
||||
static const uint16_t nvram_unlock_seq[] =
|
||||
{
|
||||
0x3fb, 0x3fb, 0x3f8, 0x3fc, 0x3fa, 0x3fe, 0x3f9, 0x3fd, 0x3fb, 0x3ff
|
||||
@ -267,6 +426,7 @@ int amerdart_state::dsp_bio_line_r()
|
||||
return m_main2dsp->pending_r() ? CLEAR_LINE : ASSERT_LINE;
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Ameri Darts trackball inputs
|
||||
@ -429,9 +589,8 @@ uint16_t amerdart_state::amerdart_trackball_r(offs_t offset)
|
||||
// Determine Trackball 2 direction state
|
||||
m_result = (m_result & 0x0fff) | (amerdart_trackball_direction(2, ((m_result >> 12) & 0xf)) << 12);
|
||||
|
||||
|
||||
// LOGINPUT("%08X:read port 6 (X=%02X Y=%02X oldX=%02X oldY=%02X oldRes=%04X Res=%04X)\n", m_dsp->pc(), m_newx, m_newy, m_oldx, m_oldy, m_lastresult, m_result);
|
||||
|
||||
LOGINPUT("%08X:read port 6 (X=%02X Y=%02X oldX=%02X oldY=%02X oldRes=%04X Res=%04X)\n", m_dsp->pc(),
|
||||
m_newx, m_newy, m_oldx, m_oldy, m_lastresult, m_result);
|
||||
m_lastresult = m_result;
|
||||
}
|
||||
|
||||
@ -565,8 +724,8 @@ uint16_t coolpool_state::coolpool_input_r(offs_t offset)
|
||||
}
|
||||
}
|
||||
|
||||
// LOGINPUT("%08X:read port 7 (X=%02X Y=%02X oldX=%02X oldY=%02X res=%04X)\n", m_dsp->pc(),
|
||||
// m_newx[1], m_newy[1], m_oldx[1], m_oldy[1], m_result);
|
||||
LOGINPUT("%08X:read port 7 (X=%02X Y=%02X oldX=%02X oldY=%02X res=%04X)\n", m_dsp->pc(),
|
||||
m_newx[1], m_newy[1], m_oldx[1], m_oldy[1], m_result);
|
||||
m_lastresult = m_result;
|
||||
}
|
||||
return m_result;
|
||||
@ -582,7 +741,7 @@ uint16_t coolpool_state::coolpool_input_r(offs_t offset)
|
||||
|
||||
void amerdart_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x000fffff).ram().share(m_vram_base);
|
||||
map(0x00000000, 0x000fffff).mirror(0x00300000).ram().share(m_vram_base);
|
||||
map(0x04000000, 0x0400000f).w(FUNC(amerdart_state::misc_w));
|
||||
map(0x05000000, 0x0500000f).r(m_dsp2main, FUNC(generic_latch_16_device::read)).w(m_main2dsp, FUNC(generic_latch_16_device::write));
|
||||
map(0x06000000, 0x06007fff).ram().w(FUNC(amerdart_state::nvram_thrash_data_w)).share("nvram");
|
||||
@ -592,8 +751,8 @@ void amerdart_state::main_map(address_map &map)
|
||||
|
||||
void coolpool_state::coolpool_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x001fffff).ram().share(m_vram_base);
|
||||
map(0x01000000, 0x010000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40
|
||||
map(0x00000000, 0x001fffff).mirror(0x00200000).ram().share(m_vram_base);
|
||||
map(0x01000000, 0x010000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40
|
||||
map(0x02000000, 0x020000ff).r(m_dsp2main, FUNC(generic_latch_16_device::read)).w(m_main2dsp, FUNC(generic_latch_16_device::write));
|
||||
map(0x03000000, 0x0300000f).w(FUNC(coolpool_state::misc_w));
|
||||
map(0x03000000, 0x03ffffff).rom().region("maingfx", 0);
|
||||
@ -604,10 +763,10 @@ void coolpool_state::coolpool_map(address_map &map)
|
||||
|
||||
void _9ballsht_state::nballsht_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x001fffff).ram().share(m_vram_base);
|
||||
map(0x00000000, 0x001fffff).mirror(0x00200000).ram().share(m_vram_base);
|
||||
map(0x02000000, 0x020000ff).r(m_dsp2main, FUNC(generic_latch_16_device::read)).w(m_main2dsp, FUNC(generic_latch_16_device::write));
|
||||
map(0x03000000, 0x0300000f).w(FUNC(_9ballsht_state::misc_w));
|
||||
map(0x04000000, 0x040000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40
|
||||
map(0x04000000, 0x040000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40
|
||||
map(0x06000000, 0x0601ffff).mirror(0x00020000).ram().w(FUNC(_9ballsht_state::nvram_thrash_data_w)).share("nvram");
|
||||
map(0xff000000, 0xff7fffff).rom().region("maingfx", 0);
|
||||
map(0xffc00000, 0xffffffff).rom().region("maincpu", 0);
|
||||
@ -659,6 +818,7 @@ void _9ballsht_state::dsp_io_base_map(address_map &map)
|
||||
void coolpool_state::coolpool_dsp_io_map(address_map &map)
|
||||
{
|
||||
dsp_io_base_map(map);
|
||||
map(0x06, 0x06).unmapr();
|
||||
map(0x07, 0x07).r(FUNC(coolpool_state::coolpool_input_r));
|
||||
}
|
||||
|
||||
@ -829,9 +989,9 @@ void _9ballsht_state::_9ballsht(machine_config &config)
|
||||
// dsp.hold_ack_out_cb().set(FUNC(_9ballsht_state::dsp_HOLDA_signal_w));
|
||||
|
||||
GENERIC_LATCH_16(config, m_main2dsp);
|
||||
m_main2dsp->data_pending_callback().set_inputline(m_dsp, 0); // ??? I have no idea who should generate this!
|
||||
// the DSP polls the status bit so it isn't strictly
|
||||
// necessary to also have an IRQ
|
||||
// ??? I have no idea who should generate this!
|
||||
// The DSP polls the status bit so it isn't strictly necessary to also have an IRQ
|
||||
m_main2dsp->data_pending_callback().set_inputline(m_dsp, 0);
|
||||
|
||||
GENERIC_LATCH_16(config, m_dsp2main);
|
||||
m_dsp2main->data_pending_callback().set_inputline(m_maincpu, 1);
|
||||
@ -1093,7 +1253,6 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Driver init
|
||||
@ -1134,6 +1293,8 @@ void _9ballsht_state::init_9ballsht()
|
||||
}
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
@ -1145,8 +1306,10 @@ void _9ballsht_state::init_9ballsht()
|
||||
GAME( 1989, amerdart, 0, amerdart, amerdart, amerdart_state, empty_init, ROT0, "Ameri", "AmeriDarts (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, amerdart2, amerdart, amerdart, amerdart, amerdart_state, empty_init, ROT0, "Ameri", "AmeriDarts (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, amerdart3, amerdart, amerdart, amerdart, amerdart_state, empty_init, ROT0, "Ameri", "AmeriDarts (set 3)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, coolpool, 0, coolpool, coolpool, coolpool_state, empty_init, ROT0, "Catalina", "Cool Pool", 0 )
|
||||
GAME( 1993, 9ballsht, 0, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 1)", 0 )
|
||||
GAME( 1993, 9ballsht2, 9ballsht, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 2)", 0 )
|
||||
GAME( 1993, 9ballsht3, 9ballsht, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 3)", 0 )
|
||||
GAME( 1993, 9ballshtc, 9ballsht, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout Championship", 0 )
|
||||
|
||||
GAME( 1992, coolpool, 0, coolpool, coolpool, coolpool_state, empty_init, ROT0, "Catalina", "Cool Pool", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1993, 9ballsht, 0, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, 9ballsht2, 9ballsht, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, 9ballsht3, 9ballsht, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 3)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, 9ballshtc, 9ballsht, _9ballsht, 9ballsht, _9ballsht_state, init_9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout Championship", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -1,166 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Aaron Giles,Nicola Salmoria
|
||||
#ifndef MAME_MISC_COOLPOOL_H
|
||||
#define MAME_MISC_COOLPOOL_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cpu/tms34010/tms34010.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "machine/timer.h"
|
||||
#include "video/tlc34076.h"
|
||||
|
||||
#include "emupal.h"
|
||||
|
||||
class coolpool_base_state : public driver_device
|
||||
{
|
||||
protected:
|
||||
coolpool_base_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_dsp(*this, "dsp")
|
||||
, m_main2dsp(*this, "main2dsp")
|
||||
, m_dsp2main(*this, "dsp2main")
|
||||
, m_nvram_timer(*this, "nvram_timer")
|
||||
, m_vram_base(*this, "vram_base")
|
||||
, m_nvram(*this, "nvram")
|
||||
, m_dsp_rom(*this, "dspdata")
|
||||
{ }
|
||||
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
|
||||
static constexpr unsigned NVRAM_UNLOCK_SEQ_LEN = 10;
|
||||
|
||||
required_device<tms34010_device> m_maincpu;
|
||||
required_device<cpu_device> m_dsp;
|
||||
|
||||
required_device<generic_latch_16_device> m_main2dsp;
|
||||
required_device<generic_latch_16_device> m_dsp2main;
|
||||
|
||||
required_device<timer_device> m_nvram_timer;
|
||||
|
||||
required_shared_ptr<uint16_t> m_vram_base;
|
||||
required_shared_ptr<uint16_t> m_nvram;
|
||||
required_region_ptr<uint8_t> m_dsp_rom;
|
||||
|
||||
int m_iop_romaddr = 0;
|
||||
|
||||
uint8_t m_newx[3]{};
|
||||
uint8_t m_newy[3]{};
|
||||
uint8_t m_oldx[3]{};
|
||||
uint8_t m_oldy[3]{};
|
||||
int m_dx[3]{};
|
||||
int m_dy[3]{};
|
||||
|
||||
uint16_t m_result = 0U;
|
||||
uint16_t m_lastresult = 0U;
|
||||
|
||||
uint16_t m_nvram_write_seq[NVRAM_UNLOCK_SEQ_LEN]{};
|
||||
uint8_t m_nvram_write_enable = 0U;
|
||||
uint8_t m_same_cmd_count = 0U;
|
||||
|
||||
void nvram_thrash_w(offs_t offset, uint16_t data);
|
||||
void nvram_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
void nvram_thrash_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
|
||||
uint16_t dsp_rom_r();
|
||||
void dsp_romaddr_w(offs_t offset, uint16_t data);
|
||||
|
||||
TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg);
|
||||
TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(nvram_write_timeout);
|
||||
};
|
||||
|
||||
class amerdart_state : public coolpool_base_state
|
||||
{
|
||||
public:
|
||||
amerdart_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: coolpool_base_state(mconfig, type, tag)
|
||||
, m_palette(*this, "palette")
|
||||
, m_in_xaxis(*this, "XAXIS%u", 1U)
|
||||
, m_in_yaxis(*this, "YAXIS%u", 1U)
|
||||
{ }
|
||||
|
||||
void amerdart(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_ioport_array<2> m_in_xaxis;
|
||||
required_ioport_array<2> m_in_yaxis;
|
||||
|
||||
bool m_old_cmd = false;
|
||||
|
||||
void misc_w(uint16_t data);
|
||||
int dsp_bio_line_r();
|
||||
uint16_t amerdart_trackball_r(offs_t offset);
|
||||
|
||||
TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(amerdart_audio_int_gen);
|
||||
|
||||
int amerdart_trackball_direction(int num, int data);
|
||||
|
||||
void dsp_io_map(address_map &map) ATTR_COLD;
|
||||
void dsp_pgm_map(address_map &map) ATTR_COLD;
|
||||
void main_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
class _9ballsht_state : public coolpool_base_state
|
||||
{
|
||||
public:
|
||||
_9ballsht_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: coolpool_base_state(mconfig, type, tag)
|
||||
, m_tlc34076(*this, "tlc34076")
|
||||
{ }
|
||||
|
||||
void _9ballsht(machine_config &config);
|
||||
|
||||
void init_9ballsht();
|
||||
|
||||
protected:
|
||||
required_device<tlc34076_device> m_tlc34076;
|
||||
|
||||
void misc_w(uint16_t data);
|
||||
uint16_t dsp_bio_line_r();
|
||||
uint16_t dsp_hold_line_r();
|
||||
|
||||
TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline);
|
||||
|
||||
void dsp_io_base_map(address_map &map) ATTR_COLD;
|
||||
void dsp_pgm_map(address_map &map) ATTR_COLD;
|
||||
|
||||
private:
|
||||
void nballsht_dsp_io_map(address_map &map) ATTR_COLD;
|
||||
void nballsht_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
class coolpool_state : public _9ballsht_state
|
||||
{
|
||||
public:
|
||||
coolpool_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: _9ballsht_state(mconfig, type, tag)
|
||||
, m_in1(*this, "IN1")
|
||||
, m_xaxis(*this, "XAXIS")
|
||||
, m_yaxis(*this, "YAXIS")
|
||||
{ }
|
||||
|
||||
void coolpool(machine_config &config);
|
||||
|
||||
private:
|
||||
required_ioport m_in1;
|
||||
required_ioport m_xaxis;
|
||||
required_ioport m_yaxis;
|
||||
|
||||
uint16_t coolpool_input_r(offs_t offset);
|
||||
|
||||
void coolpool_dsp_io_map(address_map &map) ATTR_COLD;
|
||||
void coolpool_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
#endif // MAME_MISC_COOLPOOL_H
|
Loading…
Reference in New Issue
Block a user