summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2017-06-26 08:40:55 +0200
committer angelosa <salese_corp_ltd@email.it>2017-06-26 08:40:55 +0200
commit7cd2929525c6ee15aef844926269ff4d8bbf19fd (patch)
treee8b8f760538c115afa8363eb389f065075fc3a62
parent589198d87ef4b503d2e71983f5819583627b8256 (diff)
m14.cpp: cleanups (nw)
-rw-r--r--src/mame/drivers/m14.cpp48
1 files changed, 16 insertions, 32 deletions
diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp
index b63ee4c283f..14ee7a6bc3c 100644
--- a/src/mame/drivers/m14.cpp
+++ b/src/mame/drivers/m14.cpp
@@ -7,19 +7,18 @@ M14 Hardware (c) 1979 Irem
driver by Angelo Salese
TODO:
-- Sound (very likely to be discrete);
+- Actual discrete sound emulation;
- Colors might be not 100% accurate (needs screenshots from the real thing);
- What are the high 4 bits in the colorram for? They are used on the mahjong tiles only,
left-over or something more important?
-- I'm not sure about the hopper hook-up, it could also be that the player should press
- start + button 1 + ron buttons (= 0x43) instead of being "automatic";
-- Inputs are grossly mapped;
+- I/Os are grossly mapped;
- ball and paddle drawing are a guesswork;
Notes:
- Unlike most Arcade games, if you call a ron but you don't have a legit hand you'll automatically
lose the match. This is commonly named chombo in rii'chi mahjong rules;
-
+- After getting a completed hand, press start 1 + ron + discard at the same time to go back
+ into attract mode (!);
==============================================================================================
x (Mystery Rom)
@@ -82,8 +81,7 @@ public:
DECLARE_WRITE8_MEMBER(m14_vram_w);
DECLARE_WRITE8_MEMBER(m14_cram_w);
DECLARE_READ8_MEMBER(m14_rng_r);
- DECLARE_READ8_MEMBER(input_buttons_r);
- DECLARE_WRITE8_MEMBER(hopper_w);
+ DECLARE_WRITE8_MEMBER(output_w);
DECLARE_WRITE8_MEMBER(ball_x_w);
DECLARE_WRITE8_MEMBER(ball_y_w);
DECLARE_WRITE8_MEMBER(paddle_x_w);
@@ -106,7 +104,7 @@ private:
tilemap_t *m_m14_tilemap;
/* input-related */
- uint8_t m_hop_mux;
+ //uint8_t m_hop_mux;
uint8_t m_ballx,m_bally;
uint8_t m_paddlex;
};
@@ -225,24 +223,12 @@ READ8_MEMBER(m14_state::m14_rng_r)
return (m_screen->frame_number() & 0x7f) | (ioport("IN1")->read() & 0x80);
}
-/* Here routes the hopper & the inputs */
-READ8_MEMBER(m14_state::input_buttons_r)
-{
- if (m_hop_mux)
- {
- m_hop_mux = 0;
- return 0; //0x43 status bits
- }
- else
- return ioport("IN0")->read();
-}
-
-WRITE8_MEMBER(m14_state::hopper_w)
+WRITE8_MEMBER(m14_state::output_w)
{
- /* ---- x--- coin out */
- /* ---- --x- hopper/input mux? */
+ /* ---- x--- active after calling a winning hand */
+ /* ---- --x- lamp? */
/* ---- ---x flip screen */
- m_hop_mux = data & 2;
+ //m_hop_mux = data & 2;
flip_screen_set(data & 1);
//popmessage("%02x",data);
}
@@ -321,9 +307,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( m14_io_map, AS_IO, 8, m14_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0xf8, 0xf8) AM_READ_PORT("AN_PADDLE") AM_WRITE(ball_x_w)
- AM_RANGE(0xf9, 0xf9) AM_READ(input_buttons_r) AM_WRITE(ball_y_w)
+ AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN0") AM_WRITE(ball_y_w)
AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r) AM_WRITE(paddle_x_w)
- AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE(hopper_w)
+ AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE(output_w)
AM_RANGE(0xfc, 0xfc) AM_WRITE(sound_w)
ADDRESS_MAP_END
@@ -349,7 +335,7 @@ INPUT_CHANGED_MEMBER(m14_state::right_coin_inserted)
static INPUT_PORTS_START( m14 )
PORT_START("AN_PADDLE")
- PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,0xff) PORT_SENSITIVITY(5) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_REVERSE
+ PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,0xff) PORT_SENSITIVITY(10) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_REVERSE
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Fire / Discard")
@@ -363,9 +349,7 @@ static INPUT_PORTS_START( m14 )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "Freeze" )
- PORT_DIPSETTING( 0x20, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
@@ -428,7 +412,7 @@ INTERRUPT_GEN_MEMBER(m14_state::m14_irq)
void m14_state::machine_start()
{
- save_item(NAME(m_hop_mux));
+ //save_item(NAME(m_hop_mux));
save_item(NAME(m_ballx));
save_item(NAME(m_bally));
save_item(NAME(m_paddlex));
@@ -436,7 +420,7 @@ void m14_state::machine_start()
void m14_state::machine_reset()
{
- m_hop_mux = 0;
+ //m_hop_mux = 0;
}