summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/miniboy7.cpp
diff options
context:
space:
mode:
author Roberto Fresca <robbie@robertofresca.com>2019-04-24 20:49:32 +0200
committer Roberto Fresca <robbie@robertofresca.com>2019-04-24 20:49:32 +0200
commitd2ebfc2d7fde886516f239773ddc108241e73ee2 (patch)
tree3ac2c4169d9fa976b7cb30dfffb329c3475ebb3c /src/mame/drivers/miniboy7.cpp
parenta73650ea2ae21e894b137cf9ae8355af3b4c5e52 (diff)
miniboy7.cpp improvements... [Roberto Fresca]
- Added support for Super Mini-Boy that runs in different HW revision. - Added technical and game notes. - Some clean-up. New machines marked as NOT_WORKING ---------------------------------- Super Mini-Boy [Roberto Fresca, Team Europe]
Diffstat (limited to 'src/mame/drivers/miniboy7.cpp')
-rw-r--r--src/mame/drivers/miniboy7.cpp231
1 files changed, 189 insertions, 42 deletions
diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp
index 4320d15620b..e4a488c6e22 100644
--- a/src/mame/drivers/miniboy7.cpp
+++ b/src/mame/drivers/miniboy7.cpp
@@ -2,20 +2,25 @@
// copyright-holders:Roberto Fresca
/******************************************************************************
- MINI-BOY 7
+ MINI-BOY 7 / SUPER MINI-BOY.
+ Bonanza Enterprises, Ltd.
Driver by Roberto Fresca.
+
Games running on this hardware:
- * Mini-Boy 7 - 1983, Bonanza Enterprises, Ltd.
+ * Mini-Boy 7, 1983, Bonanza Enterprises, Ltd.
+ * Super Mini-Boy, 1984, Bonanza Enterprises, Ltd.
*******************************************************************************
Game Notes:
- Mini-Boy 7. Seven games in one, plus Ad message support.
+ * Mini-Boy 7.
+
+ Seven games in one, plus Ad message support.
http://www.arcadeflyers.com/?page=thumbs&db=videodb&id=4275
- Draw Poker.
@@ -29,11 +34,25 @@
During attract mode display, pressing the service menu will allow you to
add a custom ad to scroll during attract mode display. Up to 120 characters
+
+ * Super Mini-Boy
+
+ Five games in one.
+
+ - Poker.
+ - Black Jack.
+ - Hi-Lo.
+ - Golden Fruits.
+ - Baccarat.
+
+
*******************************************************************************
Hardware Notes:
--------------
+ * Mini-Boy 7:
+
Board silkscreened on top:
be MVX-001-01 ('be' is a Bonanza Enterprises logo).
@@ -60,6 +79,35 @@
- 2x pots to handle the B-G background color/intensity.
+ * Super Mini-Boy:
+
+ Board silkscreened on top:
+ be MVX-001-02 ('be' is a Bonanza Enterprises logo).
+
+ - CPU: 1x R6502P.
+ - Sound: 1x AY-3-8910.
+ - Video: 1x HD46505SP HD6845SP.
+ - RAM: 4x MSM2128-15
+ - I/O 1x MC6821P PIA.
+ - PRG ROMs: 5x 2764 (8Kb).
+ - GFX ROMs: 1x 2764 (8Kb) for text layer.
+ 3x 2764 (8Kb) for gfx tiles.
+
+ - Clock: 1x 12.4725 MHz. Crystal.
+
+ - Battery backup: (unknown)
+
+ - 1x normal switch (SW1)
+ - 1x 8 DIP switches bank (SW2)
+ - 1x 4 DIP switches bank (SW3)
+
+ - 1x 2x28 pins edge connector.
+ - 1x 2x20 pins female connector.
+
+ - 6x variable resistor to handle B-G background color/intensity
+ and other things.
+
+
*******************************************************************************
--------------------
@@ -75,11 +123,11 @@
$1800 - $1FFF Video RAM B
$2000 - $27FF Color RAM B
- $2800 - $2801 MC6845 ; MC6845 use $2800 for register addressing and $2801 for register values.
+ $2800 - $2801 MC6845 ; $2800 for register addressing & $2801 for register values.
- $3000 - $3001 ????? ; R/W. AY8910?
- $3080 - $3083 MC6821 ; R/W. PIA
- $3800 - $3800 ????? ; R.
+ $3000 - $3001 AY-3-8910 ; R/W.
+ $3080 - $3083 MC6821 PIA ; R/W.
+ $3800 - $3800 ????? ; R.
$4000 - $FFFF ROM ; ROM space.
@@ -91,7 +139,6 @@
*******************************************************************************
-
DRIVER UPDATES:
@@ -123,13 +170,24 @@
- Added debug and technical notes.
- TODO:
+ [2011... 2019]
+
+ - Wired PIA and AY8910 properly.
+ - Implemented and documented the PIA port B multiplexion.
+ - Lot of fixes, getting Mini-Boy 7 working.
+ - Added support for Super Mini-Boy.
+ - Added technical and games notes.
+ - Some clean-up.
- - Find the way to clean the lamps writes.
- (there are alternate writes that mess the lamps)
+ TODO:
+
+ - Find the Super Mini-Boy missing input(s): HOLD 1 and SMALL.
+ maybe these are the same line/button.
+ - Lamps support for Super Mini-Boy.
- Implement fake pots for B-G background color
+
*******************************************************************************/
#include "emu.h"
@@ -270,7 +328,7 @@ void miniboy7_state::miniboy7_palette(palette_device &palette) const
xxxx ---- unused.
*/
- /* 0000IBGR */
+ // 0000IBGR
if (!m_proms)
return;
@@ -296,6 +354,11 @@ void miniboy7_state::miniboy7_palette(palette_device &palette) const
}
}
+
+/***********************************
+* Machine Start & Reset *
+***********************************/
+
void miniboy7_state::machine_start()
{
m_lamps.resolve();
@@ -312,6 +375,11 @@ void miniboy7_state::machine_reset()
m_gpri = 0;
}
+
+/***********************************
+* R/W Handlers *
+***********************************/
+
void miniboy7_state::ay_pa_w(uint8_t data)
{
/* ---x xxxx lamps
@@ -330,18 +398,18 @@ uint8_t miniboy7_state::lamp_latch_r()
uint8_t data = m_ay_pa ^ 0xff;
- m_lamps[0] = BIT(data, 4); // [----x]
- m_lamps[1] = BIT(data, 3); // [---x-]
- m_lamps[2] = BIT(data, 2); // [--x--]
- m_lamps[3] = BIT(data, 1); // [-x---]
- m_lamps[4] = BIT(data, 0); // [x----]
+ m_lamps[0] = BIT(data, 4); // [----x]
+ m_lamps[1] = BIT(data, 3); // [---x-]
+ m_lamps[2] = BIT(data, 2); // [--x--]
+ m_lamps[3] = BIT(data, 1); // [-x---]
+ m_lamps[4] = BIT(data, 0); // [x----]
machine().bookkeeping().coin_counter_w(0, data & 0x40); // counter
// popmessage("Out Lamps: %02x", data);
// logerror("Out Lamps: %02x\n", data);
- // Value is unused
+ // value is unused
return 0xff;
}
@@ -388,38 +456,28 @@ WRITE_LINE_MEMBER(miniboy7_state::pia_ca2_w)
void miniboy7_state::miniboy7_map(address_map &map)
{
- map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM? */
+ map(0x0000, 0x07ff).ram().share("nvram"); // battery backed RAM?
map(0x0800, 0x0fff).ram().share("videoram_a");
map(0x1000, 0x17ff).ram().share("colorram_a");
map(0x1800, 0x1fff).ram().share("videoram_b");
map(0x2000, 0x27ff).ram().share("colorram_b");
map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w));
map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0x3000, 0x3001).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // FIXME
+ map(0x3000, 0x3001).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
map(0x3080, 0x3083).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x3800, 0x3800).r(FUNC(miniboy7_state::lamp_latch_r));
map(0x4000, 0xffff).rom();
}
/*
-
-'maincpu' (E190): unmapped program memory byte read from 3800
-
... CRTC init (snap) --> $CF2D: JSR $CF76
-'maincpu' (E189): unmapped program memory byte read from 3800
-
-'maincpu' (E1A0): unmapped program memory byte write to 3000 = 0E
-'maincpu' (E1A3): unmapped program memory byte read from 3000
-'maincpu' (E1A8): unmapped program memory byte write to 3001 = 00
-'maincpu' (E1BF): unmapped program memory byte write to 3000 = 0E
-'maincpu' (E1C2): unmapped program memory byte read from 3000
-'maincpu' (E1CA): unmapped program memory byte write to 3001 = 1F
-
-'maincpu' (E189): unmapped program memory byte read from 3800
+ 3800: Lamps latch. ; right after each read, another value is loaded
+ into the ACCU, losing the previous loaded value.
*/
+
/***********************************
* Input Ports *
***********************************/
@@ -467,6 +525,61 @@ static INPUT_PORTS_START( miniboy7 )
INPUT_PORTS_END
+static INPUT_PORTS_START( sminiboy )
+
+// Hold2/Small button is missing.
+// Just tried on PIA PB4-7, both AY8910 ports,
+// but nothing...
+
+ PORT_START("INPUT1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Big") PORT_CODE(KEYCODE_S) // big
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Cancel / D-UP / Hit") PORT_CODE(KEYCODE_N) // cancel / d-up / hit
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 5 / Take / Stand") PORT_CODE(KEYCODE_B) // hold 5 / take / stand
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 4") PORT_CODE(KEYCODE_V) // hold 4
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 3") PORT_CODE(KEYCODE_C) // hold 3
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
+
+ PORT_START("INPUT2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Start / Double") PORT_CODE(KEYCODE_1) // start
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 1 / Play") PORT_CODE(KEYCODE_Z) // hold 1 / play
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Service / Books") PORT_CODE(KEYCODE_0) // service / books
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("08 - changes screen") PORT_CODE(KEYCODE_E) // (changes in screen)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("10") PORT_CODE(KEYCODE_R) //
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("20") PORT_CODE(KEYCODE_T) //
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("40") PORT_CODE(KEYCODE_Y) //
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("80") PORT_CODE(KEYCODE_U) //
+
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "Coin A" ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPSETTING( 0x04, "1 Point" )
+ PORT_DIPSETTING( 0x00, "10.000 Points" )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
/***********************************
* Graphics Layouts *
***********************************/
@@ -499,16 +612,18 @@ static const gfx_layout tilelayout =
****************************************/
static GFXDECODE_START( gfx_miniboy7 )
- GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 128 ) /* text layer */
+ GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 128 ) // text layer
- /* 0x000 cards
- 0x100 joker
- 0x200 dices
- 0x300 bigtxt */
+ /* 0x000 cards
+ 0x100 joker
+ 0x200 dices
+ 0x300 bigtxt
+ */
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 32 )
GFXDECODE_END
+
/***********************************
* Machine Drivers *
***********************************/
@@ -532,8 +647,8 @@ void miniboy7_state::miniboy7(machine_config &config)
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((47+1)*8, (39+1)*8); /* Taken from MC6845, registers 00 & 04. Normally programmed with (value-1) */
- screen.set_visarea(0*8, 37*8-1, 0*8, 37*8-1); /* Taken from MC6845, registers 01 & 06 */
+ screen.set_size((47+1)*8, (39+1)*8); // taken from MC6845, registers 00 & 04 (normally programmed with value - 1).
+ screen.set_visarea(0*8, 37*8-1, 0*8, 37*8-1); // taken from MC6845, registers 01 & 06.
screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_miniboy7);
@@ -561,7 +676,7 @@ void miniboy7_state::miniboy7(machine_config &config)
***********************************/
/*
-
+ Mini-Boy 7.
Board silkscreened on top:
be MVX-001-01 ('be' is a Bonanza Enterprises logo).
@@ -630,11 +745,43 @@ ROM_START( miniboy7a ) /* The term CREDIT has been changed to POINT is this vers
ROM_LOAD( "j.f10", 0x0100, 0x0100, CRC(4b66215e) SHA1(de4a8f1ee7b9bea02f3a5fc962358d19c7a871a0) ) /* N82S129N BPROM simply labeled J */
ROM_END
+/*
+ Bonaza's Super Mini Boy.
+ PCB: MVX-001-02
+
+ 1x 6502
+ 1x 6845
+ 1x 6522
+ 1x AY8910
+
+*/
+ROM_START( sminiboy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "sm5_1-9.7a", 0x6000, 0x2000, CRC(e245e1d4) SHA1(69266bbc0a0d3acb98cecebf931f42d5e8ff29f5) )
+ ROM_LOAD( "sm5_2-9.6a", 0x8000, 0x2000, CRC(0b240c50) SHA1(af53a969d34aaf959b5a8e74f920fe895f6c68a0) )
+ ROM_LOAD( "sm5_3-9.4a", 0xa000, 0x2000, CRC(1e389107) SHA1(085f56a544cfec54ea14619af8ae09d7aaf85083) )
+ ROM_LOAD( "sm5_4-9.3a", 0xc000, 0x2000, CRC(2fee506a) SHA1(ddcf87ccc061338ca4ccf2f434903ec0c53dee46) )
+ ROM_LOAD( "sm5_5-9.1a", 0xe000, 0x2000, CRC(c518b16c) SHA1(3f6249fa40a5e95ad3d565f73cfc45fcad4c5a6e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sm5_0.11d", 0x0000, 0x2000, CRC(295d8146) SHA1(c5b55e10d04d55ba3a5087b588e697a7a89dd02e) ) /* text layer */
+
+ ROM_REGION( 0x6000, "gfx2", 0 )
+ ROM_LOAD( "sm5_1.12d", 0x0000, 0x2000, CRC(1967974e) SHA1(66e06f549d413dcd84d82245cf3bd918bf012209) ) /* bitplane 1 */
+ ROM_LOAD( "sm5_2.13d", 0x2000, 0x2000, CRC(eae3f05a) SHA1(a401fc63f1d9667ceb85c9a8c7cc2bd5d7ab7fcd) ) /* bitplane 2 */
+ ROM_LOAD( "sm5_3.15d", 0x4000, 0x2000, CRC(0f19964f) SHA1(2dba35e3770d8254c65ba82b4d062e4873a6fd8f) ) /* bitplane 3 */
+
+ ROM_REGION( 0x0200, "proms", ROMREGION_INVERT ) /* bipolar PROMs */
+ ROM_LOAD( "j1.7e", 0x0000, 0x0100, CRC(a89e1d80) SHA1(f3f4842729df1fc379a7281edcceb67c4e9558b4) )
+ ROM_LOAD( "j-3.10f", 0x0100, 0x0100, CRC(042ae2c5) SHA1(dad6ace493a2e36c6e8ac1f35e871e1e5071c1ed) )
+ROM_END
+
/***********************************
* Game Drivers *
***********************************/
-// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
+// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
+GAME( 1984, sminiboy, 0, miniboy7, sminiboy, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Super Mini-Boy", MACHINE_NOT_WORKING )
GAMEL( 1983, miniboy7, 0, miniboy7, miniboy7, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 1)", MACHINE_NO_COCKTAIL, layout_miniboy7 )
GAMEL( 1983, miniboy7a, miniboy7, miniboy7, miniboy7, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 2)", MACHINE_NO_COCKTAIL, layout_miniboy7 )