mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
marinedt.cpp: inputs & misc outputs (nw)
This commit is contained in:
parent
8191fd96fe
commit
117ffdb4ae
@ -115,16 +115,19 @@ public:
|
|||||||
, m_screen(*this, "screen")
|
, m_screen(*this, "screen")
|
||||||
, m_vram(*this, "vram")
|
, m_vram(*this, "vram")
|
||||||
, m_gfxdecode(*this, "gfxdecode")
|
, m_gfxdecode(*this, "gfxdecode")
|
||||||
|
, m_in_track(*this, {"P1_TRACKX", "P2_TRACKX", "P1_TRACKY", "P2_TRACKY"})
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// screen updates
|
// screen updates
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
DECLARE_PALETTE_INIT(marinedt);
|
DECLARE_PALETTE_INIT(marinedt);
|
||||||
|
DECLARE_READ8_MEMBER(trackball_r);
|
||||||
DECLARE_WRITE8_MEMBER(vram_w);
|
DECLARE_WRITE8_MEMBER(vram_w);
|
||||||
DECLARE_WRITE8_MEMBER(obj_0_w);
|
DECLARE_WRITE8_MEMBER(obj_0_w);
|
||||||
DECLARE_WRITE8_MEMBER(obj_1_w);
|
DECLARE_WRITE8_MEMBER(obj_1_w);
|
||||||
DECLARE_WRITE8_MEMBER(layer_enable_w);
|
DECLARE_WRITE8_MEMBER(layer_enable_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(output_w);
|
||||||
TILE_GET_INFO_MEMBER(get_tile_info);
|
TILE_GET_INFO_MEMBER(get_tile_info);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -140,6 +143,7 @@ private:
|
|||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_shared_ptr<uint8_t> m_vram;
|
required_shared_ptr<uint8_t> m_vram;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
|
required_ioport_array<4> m_in_track;
|
||||||
|
|
||||||
tilemap_t *m_tilemap;
|
tilemap_t *m_tilemap;
|
||||||
std::unique_ptr<bitmap_ind16> m_seabitmap;
|
std::unique_ptr<bitmap_ind16> m_seabitmap;
|
||||||
@ -151,6 +155,8 @@ private:
|
|||||||
bitmap_ind16 bitmap;
|
bitmap_ind16 bitmap;
|
||||||
}m_obj[2];
|
}m_obj[2];
|
||||||
uint8_t m_layer_en;
|
uint8_t m_layer_en;
|
||||||
|
uint8_t m_in_select;
|
||||||
|
bool m_screen_flip;
|
||||||
|
|
||||||
void init_seabitmap();
|
void init_seabitmap();
|
||||||
void obj_reg_w(uint8_t which,uint8_t reg, uint8_t data);
|
void obj_reg_w(uint8_t which,uint8_t reg, uint8_t data);
|
||||||
@ -249,7 +255,7 @@ inline void marinedt_state::obj_reg_w(uint8_t which, uint8_t reg,uint8_t data)
|
|||||||
|
|
||||||
const uint8_t tilenum = ((m_obj[which].offs & 4) << 1) | ( (m_obj[which].offs & 0x38) >> 3);
|
const uint8_t tilenum = ((m_obj[which].offs & 4) << 1) | ( (m_obj[which].offs & 0x38) >> 3);
|
||||||
const uint8_t color = (m_obj[which].offs & 3);
|
const uint8_t color = (m_obj[which].offs & 3);
|
||||||
const bool fx = true;
|
const bool fx = m_screen_flip;
|
||||||
const bool fy = BIT(m_obj[which].offs,7);
|
const bool fy = BIT(m_obj[which].offs,7);
|
||||||
|
|
||||||
//base_pen = (which == 0 ? 0x30 : 0x20) + color*4;
|
//base_pen = (which == 0 ? 0x30 : 0x20) + color*4;
|
||||||
@ -262,6 +268,11 @@ inline void marinedt_state::obj_reg_w(uint8_t which, uint8_t reg,uint8_t data)
|
|||||||
WRITE8_MEMBER(marinedt_state::obj_0_w) { obj_reg_w(0,offset,data); }
|
WRITE8_MEMBER(marinedt_state::obj_0_w) { obj_reg_w(0,offset,data); }
|
||||||
WRITE8_MEMBER(marinedt_state::obj_1_w) { obj_reg_w(1,offset,data); }
|
WRITE8_MEMBER(marinedt_state::obj_1_w) { obj_reg_w(1,offset,data); }
|
||||||
|
|
||||||
|
READ8_MEMBER(marinedt_state::trackball_r)
|
||||||
|
{
|
||||||
|
return (m_in_track[m_in_select & 3])->read();
|
||||||
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(marinedt_state::layer_enable_w)
|
WRITE8_MEMBER(marinedt_state::layer_enable_w)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -272,6 +283,21 @@ WRITE8_MEMBER(marinedt_state::layer_enable_w)
|
|||||||
m_layer_en = data;
|
m_layer_en = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER(marinedt_state::output_w)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
---- x--- trackball input select (x/y)
|
||||||
|
---- -x-- trackball player select
|
||||||
|
---- --x- flipscreen
|
||||||
|
---- ---x global coin lockout (disabled in service mode)
|
||||||
|
*/
|
||||||
|
|
||||||
|
m_in_select = (data & 0xc) >> 2;
|
||||||
|
m_screen_flip = BIT(data,1);
|
||||||
|
flip_screen_set(!m_screen_flip);
|
||||||
|
machine().bookkeeping().coin_lockout_global_w(!(data & 1));
|
||||||
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( marinedt_map, AS_PROGRAM, 8, marinedt_state )
|
static ADDRESS_MAP_START( marinedt_map, AS_PROGRAM, 8, marinedt_state )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 is not decoded */
|
ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 is not decoded */
|
||||||
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("ipl",0)
|
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("ipl",0)
|
||||||
@ -282,12 +308,14 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START( marinedt_io, AS_IO, 8, marinedt_state )
|
static ADDRESS_MAP_START( marinedt_io, AS_IO, 8, marinedt_state )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0x0f)
|
ADDRESS_MAP_GLOBAL_MASK(0x0f)
|
||||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
|
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
|
||||||
|
AM_RANGE(0x01, 0x01) AM_READ(trackball_r)
|
||||||
AM_RANGE(0x02, 0x04) AM_WRITE(obj_0_w)
|
AM_RANGE(0x02, 0x04) AM_WRITE(obj_0_w)
|
||||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("SYSTEM")
|
AM_RANGE(0x03, 0x03) AM_READ_PORT("SYSTEM")
|
||||||
AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
|
AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
|
||||||
AM_RANGE(0x08, 0x0b) AM_WRITE(obj_1_w)
|
AM_RANGE(0x08, 0x0b) AM_WRITE(obj_1_w)
|
||||||
AM_RANGE(0x0d, 0x0d) AM_WRITE(layer_enable_w)
|
AM_RANGE(0x0d, 0x0d) AM_WRITE(layer_enable_w)
|
||||||
AM_RANGE(0x0e, 0x0e) AM_WRITENOP // watchdog
|
AM_RANGE(0x0e, 0x0e) AM_WRITENOP // watchdog
|
||||||
|
AM_RANGE(0x0f, 0x0f) AM_WRITE(output_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( marinedt )
|
static INPUT_PORTS_START( marinedt )
|
||||||
@ -388,6 +416,18 @@ static INPUT_PORTS_START( marinedt )
|
|||||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:8")
|
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:8")
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_START("P1_TRACKX")
|
||||||
|
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_PLAYER(1)
|
||||||
|
|
||||||
|
PORT_START("P1_TRACKY")
|
||||||
|
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(1)
|
||||||
|
|
||||||
|
PORT_START("P2_TRACKX")
|
||||||
|
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_PLAYER(2)
|
||||||
|
|
||||||
|
PORT_START("P2_TRACKY")
|
||||||
|
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(2)
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static const gfx_layout charlayout =
|
static const gfx_layout charlayout =
|
||||||
|
Loading…
Reference in New Issue
Block a user