summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2025-10-30 21:32:27 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2025-10-30 21:32:27 +0100
commiteefb402fbc4b5458c36768323cfef2f0e9dfc5b6 (patch)
treeea60b6b51a6ff344fd26af607cdeeac0920b1aeb
parent73fda89bdd1bc0c7fa74ea416f20df013038759f (diff)
New clones marked not working
----------------------------- Cherry Master '97 (v1.6, bootleg) [Ioannis Bampoulas] Cherry Master '97 (v1.8, bootleg) [Ioannis Bampoulas] New Cherry '96 (1996/06/01, bootleg of New Fruit Bonus?) [Ioannis Bampoulas]
-rw-r--r--src/mame/igs/goldstar.cpp379
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/misc/cointek.cpp4
3 files changed, 215 insertions, 171 deletions
diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp
index 4eaa6358423..e5755ffe72e 100644
--- a/src/mame/igs/goldstar.cpp
+++ b/src/mame/igs/goldstar.cpp
@@ -1325,7 +1325,7 @@ VIDEO_START_MEMBER(unkch_state, bonusch)
m_enable_reg = 0x1b;
// 1 for regular reels; 2 for d-up reel numbers.
-// m_reelbank = 2;
+// m_reelbank = 2;
}
@@ -2192,19 +2192,19 @@ void cmaster_state::outport0_w(uint8_t data)
xxxx ---- unused?
*/
-// popmessage("outport %02x",data);
+// popmessage("outport %02x",data);
m_enable_reg = data;
}
void cmaster_state::chyangb_outport0_w(uint8_t data)
{
-// popmessage("outport %02x",data);
+// popmessage("outport %02x",data);
m_enable_reg = data & 0xef; // mask bg register flag
}
void cmaster_state::wcat3a_outport0_w(uint8_t data)
{
-// popmessage("outport %02x",data);
+// popmessage("outport %02x",data);
m_enable_reg = data & 0x0b; // mask bg register flag
}
@@ -2358,7 +2358,7 @@ void wingco_state::mcu_portc_w(uint8_t data)
void wingco_state::draw8_sn_w(uint8_t data)
{
// SN76489A commands have a inversed bit order.
-// Maybe this design was meant for protection.
+// Maybe this design was meant for protection.
data = bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
m_draw8sn->write(data);
@@ -2572,21 +2572,21 @@ void cb3_state::misc_out_w(uint8_t data)
void wingco_state::magodds_outb850_w(uint8_t data)
{
uint8_t pal_index[8] = { 0, 1, 6, 3, 4, 5, 2, 7 }; // fix reels BG color
- m_bgreels = pal_index[data & 0x07]; // set BG reels color index
+ m_bgreels = pal_index[data & 0x07]; // set BG reels color index
if (data&0x20)
m_tile_bank = 2;
else
m_tile_bank = 0;
-// popmessage("magodds_outb850_w %02x", data);
+// popmessage("magodds_outb850_w %02x", data);
m_fg_tilemap->mark_all_dirty();
}
void wingco_state::magodds_outb860_w(uint8_t data)
{
-// popmessage("magodds_outb860_w %02x\n", data);
+// popmessage("magodds_outb860_w %02x\n", data);
}
void wingco_state::fl7w4_outc802_w(uint8_t data)
@@ -2621,7 +2621,7 @@ void unkch_state::coincount_w(uint8_t data)
machine().bookkeeping().coin_counter_w(1, data & 0x08); // Key In counter
machine().bookkeeping().coin_counter_w(2, data & 0x02); // payout counter
-// popmessage("coin counters: %02x", data);
+// popmessage("coin counters: %02x", data);
}
void unkch_state::unkcm_0x02_w(uint8_t data)
@@ -2642,7 +2642,7 @@ void unkch_state::unkcm_0x02_w(uint8_t data)
*/
-// popmessage("unkcm_0x02_w %02x", data);
+// popmessage("unkcm_0x02_w %02x", data);
m_vblank_irq_enable = data & 0x80;
if (!m_vblank_irq_enable)
@@ -2663,7 +2663,7 @@ void unkch_state::unkcm_0x03_w(uint8_t data)
m_vidreg = data;
-// popmessage("unkcm_0x03_w %02x", data);
+// popmessage("unkcm_0x03_w %02x", data);
}
#if 0
@@ -2680,7 +2680,7 @@ void goldstar_state::ladylinr_outport_w(uint8_t data)
.x.. ....
x... ....
*/
-// popmessage("Output: %02X", data);
+// popmessage("Output: %02X", data);
}
#endif
@@ -2855,7 +2855,7 @@ uint8_t cd3poker_state::armaly_prot_r()
void unkch_state::bonch_0x10_w(uint8_t data) // prot. system
{
-// popmessage("bonch_0x10_w %02x", data);
+// popmessage("bonch_0x10_w %02x", data);
logerror("bonch_0x10_w %02x\n", data);
}
@@ -2868,8 +2868,8 @@ void unkch_state::bonch_0x20_w(uint8_t data) // meters
machine().bookkeeping().coin_counter_w(4, data & 0x10); // Coin D
machine().bookkeeping().coin_counter_w(5, data & 0x40); // Key Out
-// popmessage("bonch_0x20_w %02x", data);
-// logerror("bonch_0x20_w %02x\n", data);
+// popmessage("bonch_0x20_w %02x", data);
+// logerror("bonch_0x20_w %02x\n", data);
}
void unkch_state::bonch_0x30_w(uint8_t data) // lamps
@@ -2883,14 +2883,14 @@ void unkch_state::bonch_0x30_w(uint8_t data) // lamps
m_lamps[6] = BIT(data, 6); // D-Up/Take
m_lamps[7] = BIT(data, 7); // Stop All
-// popmessage("bonch_0x30_w %02x", data);
-// logerror("bonch_0x30_w %02x\n", data);
+// popmessage("bonch_0x30_w %02x", data);
+// logerror("bonch_0x30_w %02x\n", data);
}
void unkch_state::bonch_0x40_w(uint8_t data) // player 2 ??? wdog ??? video_reg ???
{
-// popmessage("bonch_0x40_w %02x", data);
-// if((data & 0x6f) != 0) // skip bits 4 and 7 (bit 7 wd or vid_reg enable/disable global) - (bit 4 fixed 1) - (values 90-10-90-10-etc...)
+// popmessage("bonch_0x40_w %02x", data);
+// if((data & 0x6f) != 0) // skip bits 4 and 7 (bit 7 wd or vid_reg enable/disable global) - (bit 4 fixed 1) - (values 90-10-90-10-etc...)
logerror("bonch_0x40_w %02x\n", data);
// bit 5 - Hopper Motor
@@ -2993,7 +2993,7 @@ void wingco_state::sm7831_write(offs_t offset, uint8_t data)
sm7831_Y_reg[i] = 0;
logerror("SM7831: Clear X register - Offset:%02x - Data:%02x\n", offset, data);
break;
- case 0x01: // Move Register X to Y
+ case 0x01: // Move Register X to Y
for(int i = 0; i < 8 ; i++)
sm7831_Y_reg[i] = sm7831_X_reg[i];
logerror("SM7831: Move Register X to Y - Offset:%02x - Data:%02x\n", offset, data);
@@ -3021,14 +3021,14 @@ void wingco_state::sm7831_write(offs_t offset, uint8_t data)
}
logerror("SM7831: Exchange Register X with Z - Offset:%02x - Data:%02x\n", offset, data);
break;
- case 0x03: logerror("SM7831: Zero sense Register X - Offset:%02x - Data:%02x\n", offset, data); break; // Zero sense Register X - Set Zero Flag if ...
- case 0x23: logerror("SM7831: Zero sense Register Y - Offset:%02x - Data:%02x\n", offset, data); break; // Zero sense Register y - Set Zero Flag if ...
- case 0x04: logerror("SM7831: Register X normalization - Offset:%02x - Data:%02x\n", offset, data); break; // Register X normalization
- case 0x24: logerror("SM7831: Register Y normalization - Offset:%02x - Data:%02x\n", offset, data); break; // Register Y normalization
+ case 0x03: logerror("SM7831: Zero sense Register X - Offset:%02x - Data:%02x\n", offset, data); break; // Zero sense Register X - Set Zero Flag if ...
+ case 0x23: logerror("SM7831: Zero sense Register Y - Offset:%02x - Data:%02x\n", offset, data); break; // Zero sense Register y - Set Zero Flag if ...
+ case 0x04: logerror("SM7831: Register X normalization - Offset:%02x - Data:%02x\n", offset, data); break; // Register X normalization
+ case 0x24: logerror("SM7831: Register Y normalization - Offset:%02x - Data:%02x\n", offset, data); break; // Register Y normalization
// Arithmetic Commands
- case 0x08: // Add X + Y -> X
+ case 0x08: // Add X + Y -> X
{
uint8_t carry = 0;
@@ -3074,7 +3074,7 @@ void wingco_state::sm7831_write(offs_t offset, uint8_t data)
}
break;
- case 0x09: // Sub X - Y -> X
+ case 0x09: // Sub X - Y -> X
{
uint8_t borrow = 0;
@@ -3113,23 +3113,23 @@ void wingco_state::sm7831_write(offs_t offset, uint8_t data)
logerror("SM7831: Sub X - Y -> X - Offset:%02x - Data:%02x - borrow:%02x\n", offset, data, borrow);
}
break;
- case 0x0a: logerror("SM7831: Mul X * Y -> X - Offset:%02x - Data:%02x\n", offset, data); break; // Mul X * Y -> X
- case 0x0c: logerror("SM7831: Div X / Y -> X - Offset:%02x - Data:%02x\n", offset, data); break; // Div X / Y -> X
- case 0x0e: logerror("SM7831: SQRTodd X sqrt -> X - Offset:%02x - Data:%02x\n", offset, data); break; // SQRTodd X sqrt -> X
- case 0x1e: logerror("SM7831: SQRTeven X sqrt -> X - Offset:%02x - Data:%02x\n", offset, data); break; // SQRTeven X sqrt -> X
+ case 0x0a: logerror("SM7831: Mul X * Y -> X - Offset:%02x - Data:%02x\n", offset, data); break; // Mul X * Y -> X
+ case 0x0c: logerror("SM7831: Div X / Y -> X - Offset:%02x - Data:%02x\n", offset, data); break; // Div X / Y -> X
+ case 0x0e: logerror("SM7831: SQRTodd X sqrt -> X - Offset:%02x - Data:%02x\n", offset, data); break; // SQRTodd X sqrt -> X
+ case 0x1e: logerror("SM7831: SQRTeven X sqrt -> X - Offset:%02x - Data:%02x\n", offset, data); break; // SQRTeven X sqrt -> X
default: logerror("SM7831: Default - Offset:%02x - Data:%02x\n", offset, data); break;
}
else
switch((data & 0xc0) >> 4)
{
case 0x04:
- case 0x05: logerror("SM7831: SL Register X - Offset:%02x - Data:%02x\n", offset, data); break; // SR Register X
+ case 0x05: logerror("SM7831: SL Register X - Offset:%02x - Data:%02x\n", offset, data); break; // SR Register X
case 0x06:
- case 0x07: logerror("SM7831: SL Register Y - Offset:%02x - Data:%02x\n", offset, data); break; // SL Register Y
+ case 0x07: logerror("SM7831: SL Register Y - Offset:%02x - Data:%02x\n", offset, data); break; // SL Register Y
case 0x08:
- case 0x09: logerror("SM7831: SR Register X - Offset:%02x - Data:%02x\n", offset, data); break; // SR Register X
+ case 0x09: logerror("SM7831: SR Register X - Offset:%02x - Data:%02x\n", offset, data); break; // SR Register X
case 0x0a:
- case 0x0b: logerror("SM7831: SR Register Y - Offset:%02x - Data:%02x\n", offset, data); break; // SR Register Y
+ case 0x0b: logerror("SM7831: SR Register Y - Offset:%02x - Data:%02x\n", offset, data); break; // SR Register Y
default: logerror("SM7831: Default - Offset:%02x - Data:%02x\n", offset, data); break;
}
@@ -7027,10 +7027,10 @@ static INPUT_PORTS_START( tonypok )
PORT_DIPSETTING( 0x00, "300" )
PORT_DIPSETTING( 0x08, "1000" )
PORT_DIPNAME( 0x30, 0x00, "Credit Limit" ) PORT_DIPLOCATION("DSW2:!5,!6") // OK
- PORT_DIPSETTING( 0x00, "10.000" )
- PORT_DIPSETTING( 0x10, "50.000" )
- PORT_DIPSETTING( 0x20, "100.000" )
- PORT_DIPSETTING( 0x30, "Unlimited" )
+ PORT_DIPSETTING( 0x00, "10.000" )
+ PORT_DIPSETTING( 0x10, "50.000" )
+ PORT_DIPSETTING( 0x20, "100.000" )
+ PORT_DIPSETTING( 0x30, "Unlimited" )
PORT_DIPNAME( 0x40, 0x40, "Key In Type" ) PORT_DIPLOCATION("DSW2:!7") // OK
PORT_DIPSETTING( 0x40, "A-Type" )
PORT_DIPSETTING( 0x00, "B-Type" )
@@ -7073,10 +7073,10 @@ static INPUT_PORTS_START( tonypok )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x06, 0x06, "Coin In Limit" ) PORT_DIPLOCATION("DSW4:2,3") // OK
- PORT_DIPSETTING( 0x06, "1,000" )
- PORT_DIPSETTING( 0x04, "5,000" )
- PORT_DIPSETTING( 0x02, "10,000" )
- PORT_DIPSETTING( 0x00, "20,000" )
+ PORT_DIPSETTING( 0x06, "1,000" )
+ PORT_DIPSETTING( 0x04, "5,000" )
+ PORT_DIPSETTING( 0x02, "10,000" )
+ PORT_DIPSETTING( 0x00, "20,000" )
PORT_DIPNAME( 0x08, 0x08, "Instant W-Up Game" ) PORT_DIPLOCATION("DSW4:4") // OK
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // play W-up game right away from bet screen!
@@ -8547,37 +8547,37 @@ INPUT_PORTS_END
static INPUT_PORTS_START( f16s8l )
/*
============================================================================
- Findings Summary (current build)
+ Findings Summary (current build)
----------------------------------------------------------------------------
- • Maximum / Minimum Bet functions identified and operational
- • Key-In value table verified
- • Double-Up mode and percentage settings confirmed
- • Bet-Type switching functional
- • Coin A ratio verified — also applies to Coin D and determines
- hopper payout rate (tokens per unit)
- • Payout percentage and Odds Table behavior confirmed
-
- • Coin B input not present
- • Coin C produces sound only — no credit increment (likely disabled channel)
- • "Hold a Pair after Losing a Spin" feature not located in current code
-
- • Double-Up always active
- • Reel speed is stable
- • No limits detected on credit-in, hopper-out, or gameplay credits
+ • Maximum / Minimum Bet functions identified and operational
+ • Key-In value table verified
+ • Double-Up mode and percentage settings confirmed
+ • Bet-Type switching functional
+ • Coin A ratio verified — also applies to Coin D and determines
+ hopper payout rate (tokens per unit)
+ • Payout percentage and Odds Table behavior confirmed
+
+ • Coin B input not present
+ • Coin C produces sound only — no credit increment (likely disabled channel)
+ • "Hold a Pair after Losing a Spin" feature not located in current code
+
+ • Double-Up always active
+ • Reel speed is stable
+ • No limits detected on credit-in, hopper-out, or gameplay credits
----------------------------------------------------------------------------
- Gameplay characteristics and special features:
- • Mario JOK symbol acts as WILD for all symbols and triggers
- the on-screen message "GOLD JOKER"
- • Girl JP symbol: does not form combinations, but whenever it appears
- anywhere on the reels during a winning spin, the total win is DOUBLED
- • Random "LUCKY YOU" event grants 3 free spins at any time
- • "GOOD FEVER" event may activate randomly, doubling all wins
- on the fever payline
+ Gameplay characteristics and special features:
+ • Mario JOK symbol acts as WILD for all symbols and triggers
+ the on-screen message "GOLD JOKER"
+ • Girl JP symbol: does not form combinations, but whenever it appears
+ anywhere on the reels during a winning spin, the total win is DOUBLED
+ • Random "LUCKY YOU" event grants 3 free spins at any time
+ • "GOOD FEVER" event may activate randomly, doubling all wins
+ on the fever payline
============================================================================
- End of findings
+ End of findings
============================================================================
*/
PORT_INCLUDE( lucky8b )
@@ -8596,10 +8596,10 @@ static INPUT_PORTS_START( f16s8l )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Double Up %" ) PORT_DIPLOCATION("DSW1:4,5")
- PORT_DIPSETTING( 0x18, "50%" )
- PORT_DIPSETTING( 0x10, "60%" )
- PORT_DIPSETTING( 0x08, "70%" )
- PORT_DIPSETTING( 0x00, "80%" )
+ PORT_DIPSETTING( 0x18, "50%" )
+ PORT_DIPSETTING( 0x10, "60%" )
+ PORT_DIPSETTING( 0x08, "70%" )
+ PORT_DIPSETTING( 0x00, "80%" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -8612,10 +8612,10 @@ static INPUT_PORTS_START( f16s8l )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Main Game Pay Rate" ) PORT_DIPLOCATION("DSW2:1,2")
- PORT_DIPSETTING( 0x03, "50%" )
- PORT_DIPSETTING( 0x02, "60%" )
- PORT_DIPSETTING( 0x01, "70%" )
- PORT_DIPSETTING( 0x00, "80%" )
+ PORT_DIPSETTING( 0x03, "50%" )
+ PORT_DIPSETTING( 0x02, "60%" )
+ PORT_DIPSETTING( 0x01, "70%" )
+ PORT_DIPSETTING( 0x00, "80%" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -8632,15 +8632,15 @@ static INPUT_PORTS_START( f16s8l )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Odds Table" ) PORT_DIPLOCATION("DSW2:8")
- PORT_DIPSETTING( 0x80, "Low" )
- PORT_DIPSETTING( 0x00, "High" )
+ PORT_DIPSETTING( 0x80, "Low" )
+ PORT_DIPSETTING( 0x00, "High" )
PORT_MODIFY("DSW3")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW3:1,2")
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_10C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_10C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW3:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -8662,28 +8662,28 @@ static INPUT_PORTS_START( f16s8l )
PORT_MODIFY("DSW4")
PORT_DIPNAME( 0x07, 0x06, "Key In Rate" ) PORT_DIPLOCATION("DSW4:1,2,3")
- PORT_DIPSETTING( 0x00, "1 Pulse / 5 Credits" )
- PORT_DIPSETTING( 0x04, "1 Pulse / 10 Credits" )
- PORT_DIPSETTING( 0x02, "1 Pulse / 20 Credits" )
- PORT_DIPSETTING( 0x06, "1 Pulse / 100 Credits" )
- PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
- PORT_DIPSETTING( 0x05, "1 Pulse / 120 Credits" )
- PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
- PORT_DIPSETTING( 0x07, "1 Pulse / 140 Credits" )
+ PORT_DIPSETTING( 0x00, "1 Pulse / 5 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Pulse / 10 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Pulse / 20 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Pulse / 100 Credits" )
+ PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Pulse / 120 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Pulse / 140 Credits" )
PORT_DIPNAME( 0x08, 0x08, "Double Up Type" ) PORT_DIPLOCATION("DSW4:4") // both are hi-lo with witches
- PORT_DIPSETTING( 0x00, "Type 1" )
- PORT_DIPSETTING( 0x08, "Type 2" )
+ PORT_DIPSETTING( 0x00, "Type 1" )
+ PORT_DIPSETTING( 0x08, "Type 2" )
PORT_DIPNAME( 0x10, 0x10, "Bet Type" ) PORT_DIPLOCATION("DSW4:5")
- PORT_DIPSETTING( 0x10, "Type 1" )
- PORT_DIPSETTING( 0x00, "Type 2" )
+ PORT_DIPSETTING( 0x10, "Type 1" )
+ PORT_DIPSETTING( 0x00, "Type 2" )
PORT_DIPNAME( 0x60, 0x00, "Maximum Bet" ) PORT_DIPLOCATION("DSW4:6,7")
- PORT_DIPSETTING( 0x60, "32" )
- PORT_DIPSETTING( 0x20, "64" )
- PORT_DIPSETTING( 0x40, "78" )
- PORT_DIPSETTING( 0x00, "80" )
+ PORT_DIPSETTING( 0x60, "32" )
+ PORT_DIPSETTING( 0x20, "64" )
+ PORT_DIPSETTING( 0x40, "78" )
+ PORT_DIPSETTING( 0x00, "80" )
PORT_DIPNAME( 0x80, 0x80, "Minimum Bet" ) PORT_DIPLOCATION("DSW4:8")
- PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x80, "8" )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x80, "8" )
INPUT_PORTS_END
@@ -8822,63 +8822,63 @@ static INPUT_PORTS_START( wcat3 )
/*
The following info is from japanese manual
- //---------------- DSW5 is present in the daughterboard ----------------
- PORT_MODIFY("DSW5")
- PORT_DIPNAME( 0x03, 0x02, "Coin Limit" ) PORT_DIPLOCATION("DSW5:1,2")
- PORT_DIPSETTING( 0x03, "1,000" ) // off,off
- PORT_DIPSETTING( 0x02, "5,000" ) // on,off
- PORT_DIPSETTING( 0x01, "10,000" ) // off,on
- PORT_DIPSETTING( 0x00, "20,000" ) // on,on
- PORT_DIPNAME( 0x1c, 0x14, "Credit Limit" ) PORT_DIPLOCATION("DSW5:3,4,5")
- PORT_DIPSETTING( 0x1c, "5,000" ) // off,off,off
- PORT_DIPSETTING( 0x18, "10,000" ) // on,off,off
- PORT_DIPSETTING( 0x14, "20,000" ) // off,on,off
- PORT_DIPSETTING( 0x10, "30,000" ) // on,on,off
- PORT_DIPSETTING( 0x0c, "40,000" ) // off,off,on
- PORT_DIPSETTING( 0x08, "50,000" ) // on,off,on
- PORT_DIPSETTING( 0x04, "100,000" ) // off,on,on
- PORT_DIPSETTING( 0x00, "None" ) // on,on,on
- PORT_DIPNAME( 0x20, 0x00, "Reel Speed" ) PORT_DIPLOCATION("DSW5:6")
- PORT_DIPSETTING( 0x20, "Normal" ) // off
- PORT_DIPSETTING( 0x00, "High" ) // on
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" ) PORT_DIPLOCATION("DSW5:7,8")
- PORT_DIPSETTING( 0xc0, "8 Bet" ) // off,off
- PORT_DIPSETTING( 0x80, "16 Bet" ) // on,off
- PORT_DIPSETTING( 0x40, "32 Bet" ) // off,on
- PORT_DIPSETTING( 0x00, "64 Bet" ) // on,on
-
- //---------------- DSW6 is present in the daughterboard ----------------
- PORT_MODIFY("DSW6")
- PORT_DIPNAME( 0x03, 0x03, "Bell Fever Line Count" ) PORT_DIPLOCATION("DSW6:1,2")
- PORT_DIPSETTING( 0x03, "3" ) // off,off
- PORT_DIPSETTING( 0x02, "5" ) // on,off
- PORT_DIPSETTING( 0x01, "7" ) // off,on
- PORT_DIPSETTING( 0x00, "9" ) // on,on
- PORT_DIPNAME( 0x04, 0x04, "Cat Bonus Count" ) PORT_DIPLOCATION("DSW6:3")
- PORT_DIPSETTING( 0x04, "7" ) // off
- PORT_DIPSETTING( 0x00, "9" ) // on
- PORT_DIPNAME( 0x10, 0x10, "Cat Bonus Multiplier" ) PORT_DIPLOCATION("DSW6:5")
- PORT_DIPSETTING( 0x00, "x2" ) // on
- PORT_DIPSETTING( 0x10, "x3" ) // off
- PORT_DIPNAME( 0x60, 0x60, "Bar Bonus Count (1/2/3 BAR)" ) PORT_DIPLOCATION("DSW6:6,7")
- PORT_DIPSETTING( 0x60, "3 / 6 / 8" ) // off,off
- PORT_DIPSETTING( 0x40, "4 / 8 / 12" ) // on,off
- PORT_DIPSETTING( 0x20, "5 / 10 / 14" ) // off,on
- PORT_DIPSETTING( 0x00, "6 / 12 / 16" ) // on,on
-
- //------------- Rotary Switch is present in the daughterboard -------------
- PORT_MODIFY("Rotary SW")
- PORT_DIPNAME( 0x0f, 0x05, "Wave Level" ) PORT_DIPLOCATION("SW7:1,2,3,4")
- PORT_DIPSETTING( 0x00, "0 (None)" ) // all off -> 0
- PORT_DIPSETTING( 0x01, "1" )
- PORT_DIPSETTING( 0x02, "2" )
- PORT_DIPSETTING( 0x03, "3" )
- PORT_DIPSETTING( 0x04, "4" )
- PORT_DIPSETTING( 0x05, "5" )
- PORT_DIPSETTING( 0x06, "6" )
- PORT_DIPSETTING( 0x07, "7" )
- PORT_DIPSETTING( 0x08, "8" )
- PORT_DIPSETTING( 0x09, "9 (Large)" )
+ //---------------- DSW5 is present in the daughterboard ----------------
+ PORT_MODIFY("DSW5")
+ PORT_DIPNAME( 0x03, 0x02, "Coin Limit" ) PORT_DIPLOCATION("DSW5:1,2")
+ PORT_DIPSETTING( 0x03, "1,000" ) // off,off
+ PORT_DIPSETTING( 0x02, "5,000" ) // on,off
+ PORT_DIPSETTING( 0x01, "10,000" ) // off,on
+ PORT_DIPSETTING( 0x00, "20,000" ) // on,on
+ PORT_DIPNAME( 0x1c, 0x14, "Credit Limit" ) PORT_DIPLOCATION("DSW5:3,4,5")
+ PORT_DIPSETTING( 0x1c, "5,000" ) // off,off,off
+ PORT_DIPSETTING( 0x18, "10,000" ) // on,off,off
+ PORT_DIPSETTING( 0x14, "20,000" ) // off,on,off
+ PORT_DIPSETTING( 0x10, "30,000" ) // on,on,off
+ PORT_DIPSETTING( 0x0c, "40,000" ) // off,off,on
+ PORT_DIPSETTING( 0x08, "50,000" ) // on,off,on
+ PORT_DIPSETTING( 0x04, "100,000" ) // off,on,on
+ PORT_DIPSETTING( 0x00, "None" ) // on,on,on
+ PORT_DIPNAME( 0x20, 0x00, "Reel Speed" ) PORT_DIPLOCATION("DSW5:6")
+ PORT_DIPSETTING( 0x20, "Normal" ) // off
+ PORT_DIPSETTING( 0x00, "High" ) // on
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" ) PORT_DIPLOCATION("DSW5:7,8")
+ PORT_DIPSETTING( 0xc0, "8 Bet" ) // off,off
+ PORT_DIPSETTING( 0x80, "16 Bet" ) // on,off
+ PORT_DIPSETTING( 0x40, "32 Bet" ) // off,on
+ PORT_DIPSETTING( 0x00, "64 Bet" ) // on,on
+
+ //---------------- DSW6 is present in the daughterboard ----------------
+ PORT_MODIFY("DSW6")
+ PORT_DIPNAME( 0x03, 0x03, "Bell Fever Line Count" ) PORT_DIPLOCATION("DSW6:1,2")
+ PORT_DIPSETTING( 0x03, "3" ) // off,off
+ PORT_DIPSETTING( 0x02, "5" ) // on,off
+ PORT_DIPSETTING( 0x01, "7" ) // off,on
+ PORT_DIPSETTING( 0x00, "9" ) // on,on
+ PORT_DIPNAME( 0x04, 0x04, "Cat Bonus Count" ) PORT_DIPLOCATION("DSW6:3")
+ PORT_DIPSETTING( 0x04, "7" ) // off
+ PORT_DIPSETTING( 0x00, "9" ) // on
+ PORT_DIPNAME( 0x10, 0x10, "Cat Bonus Multiplier" ) PORT_DIPLOCATION("DSW6:5")
+ PORT_DIPSETTING( 0x00, "x2" ) // on
+ PORT_DIPSETTING( 0x10, "x3" ) // off
+ PORT_DIPNAME( 0x60, 0x60, "Bar Bonus Count (1/2/3 BAR)" ) PORT_DIPLOCATION("DSW6:6,7")
+ PORT_DIPSETTING( 0x60, "3 / 6 / 8" ) // off,off
+ PORT_DIPSETTING( 0x40, "4 / 8 / 12" ) // on,off
+ PORT_DIPSETTING( 0x20, "5 / 10 / 14" ) // off,on
+ PORT_DIPSETTING( 0x00, "6 / 12 / 16" ) // on,on
+
+ //------------- Rotary Switch is present in the daughterboard -------------
+ PORT_MODIFY("Rotary SW")
+ PORT_DIPNAME( 0x0f, 0x05, "Wave Level" ) PORT_DIPLOCATION("SW7:1,2,3,4")
+ PORT_DIPSETTING( 0x00, "0 (None)" ) // all off -> 0
+ PORT_DIPSETTING( 0x01, "1" )
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x05, "5" )
+ PORT_DIPSETTING( 0x06, "6" )
+ PORT_DIPSETTING( 0x07, "7" )
+ PORT_DIPSETTING( 0x08, "8" )
+ PORT_DIPSETTING( 0x09, "9 (Large)" )
*/
INPUT_PORTS_END
@@ -12097,7 +12097,7 @@ static INPUT_PORTS_START( bonusch )
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, "Double-Up Type" )
PORT_DIPSETTING( 0x03, "1" ) // Hi-Lo Card Style
- PORT_DIPSETTING( 0x02, "2" ) // Hi-Lo With Reel Bonus
+ PORT_DIPSETTING( 0x02, "2" ) // Hi-Lo With Reel Bonus
PORT_DIPSETTING( 0x01, "3" ) // Hi-Lo With Poker Combo
PORT_DIPSETTING( 0x00, "None" )
PORT_DIPNAME( 0x04, 0x04, "Hopper SW" )
@@ -12174,7 +12174,7 @@ static INPUT_PORTS_START( bonusch )
PORT_DIPSETTING( 0x30, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x00, "1 Coin / 200 Credit" ) // add this to the core -> 1 Coin 200 Credits
+ PORT_DIPSETTING( 0x00, "1 Coin / 200 Credit" ) // add this to the core -> 1 Coin 200 Credits
PORT_DIPNAME( 0x80, 0x80, "Reel" )
PORT_DIPSETTING( 0x80, "Auto Stop" )
PORT_DIPSETTING( 0x00, "Manual Stop" )
@@ -24474,6 +24474,43 @@ ROM_START( cherry96 ) // all roms unique
ROM_LOAD( "new_96-16-1.u41", 0x00000, 0x20000, CRC(9ab19bdc) SHA1(2f34789729b5d12f6fa098a29253d5a80aef5b39) )
ROM_END
+ROM_START( cherry96a )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "nc96.u6", 0x00000, 0x10000, CRC(9a620a03) SHA1(c9b83aaf5a8bfffe3bb2538c2533fe5f10c329ac) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "nc96.u29", 0x00000, 0x20000, CRC(dd8f7450) SHA1(c897e5151809d4e0a0b1e46609f07bb0156b489a) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "nc96.u41", 0x00000, 0x20000, CRC(9ab19bdc) SHA1(2f34789729b5d12f6fa098a29253d5a80aef5b39) )
+ROM_END
+
+
+// a Cherry Master 97 bootleg running on Super Cherry Master hardware
+ROM_START( cmast97bl18 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "u6", 0x00000, 0x20000, CRC(9510ddb9) SHA1(788def1e00d986b8d40b5ebc755d79a1c16acb86) )
+
+ ROM_REGION( 0x40000, "gfx1", 0 )
+ ROM_LOAD( "u29", 0x00000, 0x40000, CRC(ca053bf9) SHA1(2f0699b3dfc5b640fd10272a081865cc558571e7) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "u41", 0x00000, 0x40000, CRC(63e809c7) SHA1(f1afef79f27bd538d5f33e2aeec21b11d6fcfab9) )
+ROM_END
+
+
+// a Cherry Master 97 bootleg running on Super Cherry Master hardware
+ROM_START( cmast97bl16 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "rom3.u6", 0x00000, 0x20000, CRC(e046b8c4) SHA1(76b257664d8c91ac98ef36ad4fd0b78e67b1db3d) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "rom1.u29", 0x00000, 0x20000, CRC(6e5dec50) SHA1(99ca4d6f5d92fbf1871f1246adb9313b821e8dbb) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "rom2.u41", 0x00000, 0x20000, CRC(ddc5b6fa) SHA1(362421e1d2346e4bf2836fbe6daa1bddc3579199) )
+ROM_END
+
/*
Cherry Master '97
@@ -25444,10 +25481,10 @@ ROM_START( bonusch )
ROM_CONTINUE( 0x10000, 0x08000 )
ROM_REGION( 0x20000, "gfx2", 0 )
-// ROM_LOAD( "4.1p", 0x08000, 0x08000, CRC(530bdec2) SHA1(2ce0993386fe6b165363a053b54fc66d8bf385d7) )
-// ROM_CONTINUE( 0x00000, 0x08000 )
-// ROM_LOAD( "3.1m", 0x18000, 0x08000, CRC(2acac012) SHA1(59d879214c4e473fa6fedb4a08dcd9b3c6a881a3) )
-// ROM_CONTINUE( 0x10000, 0x08000 )
+// ROM_LOAD( "4.1p", 0x08000, 0x08000, CRC(530bdec2) SHA1(2ce0993386fe6b165363a053b54fc66d8bf385d7) )
+// ROM_CONTINUE( 0x00000, 0x08000 )
+// ROM_LOAD( "3.1m", 0x18000, 0x08000, CRC(2acac012) SHA1(59d879214c4e473fa6fedb4a08dcd9b3c6a881a3) )
+// ROM_CONTINUE( 0x10000, 0x08000 )
ROM_LOAD( "4.1p", 0x08000, 0x04000, CRC(530bdec2) SHA1(2ce0993386fe6b165363a053b54fc66d8bf385d7) )
ROM_CONTINUE( 0x0e000, 0x02000 ) // 3rd and 4th querters swapped
@@ -25488,10 +25525,10 @@ ROM_START( bonuscha )
ROM_CONTINUE( 0x10000, 0x08000 )
ROM_REGION( 0x20000, "gfx2", 0 )
-// ROM_LOAD( "4.1p", 0x08000, 0x08000, CRC(530bdec2) SHA1(2ce0993386fe6b165363a053b54fc66d8bf385d7) )
-// ROM_CONTINUE( 0x00000, 0x08000 )
-// ROM_LOAD( "3.1m", 0x18000, 0x08000, CRC(2acac012) SHA1(59d879214c4e473fa6fedb4a08dcd9b3c6a881a3) )
-// ROM_CONTINUE( 0x10000, 0x08000 )
+// ROM_LOAD( "4.1p", 0x08000, 0x08000, CRC(530bdec2) SHA1(2ce0993386fe6b165363a053b54fc66d8bf385d7) )
+// ROM_CONTINUE( 0x00000, 0x08000 )
+// ROM_LOAD( "3.1m", 0x18000, 0x08000, CRC(2acac012) SHA1(59d879214c4e473fa6fedb4a08dcd9b3c6a881a3) )
+// ROM_CONTINUE( 0x10000, 0x08000 )
ROM_LOAD( "4.1p", 0x08000, 0x04000, CRC(530bdec2) SHA1(2ce0993386fe6b165363a053b54fc66d8bf385d7) )
ROM_CONTINUE( 0x0e000, 0x02000 ) // 3rd and 4th querters swapped
@@ -29564,10 +29601,10 @@ void cmaster_state::init_cutya()
uint8_t *rom = memregion("maincpu")->base();
rom[0x02e6] = 0x83; // jp 0301h -> jp 8301h start
- rom[0x2a6e] = 0x83; // ld hl, 0301h -> 8301h start
+ rom[0x2a6e] = 0x83; // ld hl, 0301h -> 8301h start
rom[0x8f51] = 0x84; // jp 4423h -> jp 8423h loop attract
rom[0x0821] = 0x93; // 81fh jp 53CBh -> jp 93cbh
- rom[0x0927] = 0x5a; // 0926h call 0722h -> call 465ah - keep original program flow (as cutyline)
+ rom[0x0927] = 0x5a; // 0926h call 0722h -> call 465ah - keep original program flow (as cutyline)
rom[0x0928] = 0x46;
rom[0x9415] = 0xcd; // 9415h jp 8646h -> call 4d09h - keep original program flow (as cutyline)
rom[0x9416] = 0x09;
@@ -29966,10 +30003,14 @@ GAMEL(1999, unkch2, scmaster, unkch, unkch, unkch_state, init_un
GAMEL(1999, unkch3, scmaster, unkch, unkch3, unkch_state, init_unkch3, ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 2)", 0, layout_unkch ) // cards have been hacked to look like barrels, girl removed?
GAMEL(1999, unkch4, scmaster, unkch, unkch4, unkch_state, init_unkch4, ROT0, "bootleg", "Grand Cherry Master (bootleg of Super Cherry Master)", 0, layout_unkch ) // by 'Toy System' Hungary
-GAME( 1996, cherry96, scmaster, unkch, unkch4, unkch_state, init_unkch4, ROT0, "bootleg", "New Cherry '96 (bootleg of New Fruit Bonus?)", MACHINE_NOT_WORKING ) // need to be moved to another machine...
+GAME( 1996, cherry96, scmaster, unkch, unkch4, unkch_state, init_unkch4, ROT0, "bootleg", "New Cherry '96 (1997/01/04, bootleg of New Fruit Bonus?)", MACHINE_NOT_WORKING ) // need to be moved to another machine...
+GAME( 1996, cherry96a, scmaster, unkch, unkch4, unkch_state, init_unkch4, ROT0, "bootleg", "New Cherry '96 (1996/06/01, bootleg of New Fruit Bonus?)", MACHINE_NOT_WORKING ) // need to be moved to another machine...
GAME( 1998, rolling, scmaster, rolling, unkch4, unkch_state, empty_init, ROT0, "bootleg", "Rolling", MACHINE_NOT_WORKING ) // inputs, outputs
+GAME( 199?, cmast97bl16, cmast97, unkch, unkch4, unkch_state, empty_init, ROT0, "bootleg", "Cherry Master '97 (v1.6, bootleg)", MACHINE_NOT_WORKING ) // goes to reels screen then hangs
+GAME( 199?, cmast97bl18, cmast97, unkch, unkch4, unkch_state, empty_init, ROT0, "bootleg", "Cherry Master '97 (v1.8, bootleg)", MACHINE_NOT_WORKING ) // keeps resetting after passing ROM check
+
// ******************* Stealth sets *******************
// These have hidden games inside that can be switched
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 777e8287759..65895095152 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -20592,6 +20592,7 @@ cb3s51
cbaai
cbonus
cherry96
+cherry96a
chry10
chryangl
chryangla
@@ -20609,6 +20610,8 @@ cmast92
cmast92a
cmast97
cmast97a
+cmast97bl16
+cmast97bl18
cmast97i
cmast99
cmast99b
diff --git a/src/mame/misc/cointek.cpp b/src/mame/misc/cointek.cpp
index 0cd84b74161..d5ebbcae249 100644
--- a/src/mame/misc/cointek.cpp
+++ b/src/mame/misc/cointek.cpp
@@ -32,7 +32,7 @@ TODO:
- Audio CPU is currently disabled. It seems to read inputs, too.
- Reel colors may be correct, tilemap ones probably not.
- Reel priority / transparent pen.
-- Reel 3 attribute RAM doesn't seem to update correctly? For now reel 3 is disabled, but it's definitely needed (draws the GAME OVER test).
+- Reel 3 attribute RAM doesn't seem to update correctly? For now reel 3 is disabled, but it's definitely needed (draws the GAME OVER text).
*/
#include "emu.h"
@@ -417,7 +417,7 @@ void cointek_state::init_goldline()
{
uint8_t *rom = memregion("maincpu")->base();
- for (int i = 0; i < 0x10000; i++) // TODO: seems good but needs verifying
+ for (int i = 0; i < 0x10000; i++)
if (!(i & 0x1000))
rom[i] = bitswap<8>(rom[i], 7, 6, 3, 4, 5, 2, 1, 0);